@picked/client 0.0.38-next.2 → 0.0.38-next.3

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 g=require("effector"),h=require("@withease/factories"),I=require("../experience-instance-CsMhH0DN.cjs"),F=require("../logger-BsmHUUw1.cjs"),v=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),S=require("../supports-YvpQZxbh.cjs"),z=g.createDomain("experience"),K=h.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=g.createApi(r,{merge(a,f){return{...a,...f.experience}}}),i=r.map(a=>({name:a.name,decisionLogic:a.condition??a.decide,targetSelectors:a.targets,initializeOpenLogic:e.initializeOpen})),u=t.components.listStore.map(a=>a.find(f=>f.name===`experience:${e.id}`)||a.find(f=>f.name==="experience"),{skipVoid:!1}),o=r.map(a=>({steps:a.steps,nodes:a.nodes,edges:a.edges,conditionals:a.conditionals})),s=e.actions??[];return{id:e.id,configStore:i,treeStore:o,componentStore:u,actions:s,merge:n.merge}});function W(t){return h.invoke(K,t)}const H=h.createFactory(({client:t})=>{const e=z.store({}),r=g.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 a=W({client:t,experience:o});r.register(a)}const i=e.map(o=>Object.values(o));function u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:u,listStore:i}});function G(t){return h.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:u})=>u.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(u=>{t.experienceInstances.spawn(e,u)})},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 u=r[n]??{};r[n]=Object.freeze({...u,...i})}},X=g.createDomain("component"),Z=h.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 h.invoke(Z,t)}const te=h.createFactory(({client:t})=>{const e=X.store({}),r=g.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 f=ee({client:t,name:o,component:s});r.register(f)}const i=e.map(o=>Object.values(o));function u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:u,listStore:i}});function re(t){return h.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=g.createDomain("framework"),se=h.createFactory(({client:t})=>{const e=ne.store({}),r=g.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 u(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:u,listStore:i}});function ie(t){return h.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=v.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=v.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),u={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(u),s={"Content-Type":"application/json"},f=document.getElementById("picked_script")?.dataset.verceltoken;f&&(s["x-vercel-protection-bypass"]=f);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=g.createDomain("predicate"),pe=h.createFactory(({client:t})=>{const e=le.store({}),r=g.createApi(e,{register(s,a){return{...s,[a.name]:{name:a.name,predicate:a.predicate}}}});function n(s,a){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:a}))}const i=e.map(s=>Object.values(s));function u(s){return e.map(a=>a[s]?.predicate,{skipVoid:!1})}function o(s){const a=g.createStore(()=>{},{skipVoid:!1}),f=g.createEffect(async()=>{const k=u(s).getState();if(!k)return;const b=L(t);return(...m)=>k({...b,args:m})});return g.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:f}),g.sample({clock:f.doneData,filter:k=>k!==void 0,target:a}),f(),a}return{register:n,getByName:u,listStore:i,getEvokablePredicate:o}});function ge(t){return h.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=g.createDomain("feature"),me=h.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=g.createApi(e,{register(c,d){return{...c,[d.id]:d.feature}}});function i(c,d){e.getState()[c]&&F.logger("warn",`Feature '${c}' already registered. Registering again will override the previous registration.`);const l={id:c,feature:{...d,id:c}};n.register(Object.freeze({id:c,feature:l}))}const u=g.createEffect(async({id:c,key:d,storage:p="local"})=>{const l=v.createStorageKey(`feature:${c}:${d}`,"global"),w=(p==="session"?v.sessionStore:v.localStore).get(l).boolean();return w===null?null:{id:c,key:d,bucket:w,storage:p}}),o=g.createEffect(c=>{if(!c)return null;const d=v.createStorageKey(`feature:${c.id}:${c.key}`,"global");(c.storage==="session"?v.sessionStore:v.localStore).set(d,c.bucket)}),s=new Map,a=g.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:c,resolvedFeaturesStore:d},{id:p,decide:l,key:y})=>{const w=d.find(R=>R.id===p&&R.key===y);if(w)return w;const E=c[p];if(!E)throw new Error(`Feature with id '${p}' not found`);const x=s.get(`${p}:${y}`);if(x!==void 0){const R=await x;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${p}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});g.sample({clock:n.register,fn:c=>{const{id:d,feature:p}=c;return{id:d,key:p.feature.key,storage:p.feature.storage}},target:u}),g.sample({source:e,clock:a.doneData,fn:(c,d)=>{const{id:p,bucket:l,storage:y}=d,w=c[p]?.feature.key;return w?{key:w,id:p,bucket:l,storage:y}:null},target:o});const f=g.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:c,resolvedFeaturesStore:d})=>Object.values(c).map(p=>{const l=d.find(y=>y.id===p.id&&y.key===p.feature.key);return l?{id:p.id,name:p.feature.name,key:p.feature.key,getBucket:()=>({id:p.id,bucket:l.bucket}),isResolved:!0}:{id:p.id,name:p.feature.name,key:p.feature.key,getBucket:async()=>await a(p.feature),isResolved:!1}}));g.sample({clock:a.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:c},{id:d,key:p})=>!c.some(y=>y.id===d&&y.key===p),fn:(c,d)=>d,target:t.eventBus.prepend(c=>({type:"feature_decide",feature:c}))}),g.sample({clock:[u.doneData,a.doneData],source:r,fn:(c,d)=>!d||c.some(l=>l.id===d.id&&l.key===d.key)?c:[...c,d],target:r});function k(c){return f.map(d=>d.find(p=>p.id===c))}function b(c){return e.map(d=>d[c],{skipVoid:!1})}function m(c){const d=g.createStore(async()=>{},{skipVoid:!1}),p=g.createEffect(async()=>{const l=k(c).getState();if(l)return async()=>(await l.getBucket()).bucket});return g.sample({source:r,filter:l=>l.some(y=>y.id===c),target:p}),g.sample({clock:p.doneData,filter:l=>l!==void 0,target:d}),p(),d}return{register:i,getById:k,getByName:b,listStore:f,getEvokableFeature:m}});function ye(t){return h.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},j=g.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=h.createFactory(()=>{const t=j.store({entries:[]}),e=j.event(),r=j.event(),n=j.event(),i=j.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 u(o,s){const a={lastStepIndex:-1,secondLastStepIndex:-1};for(let f=o.length-1;f>=0;f--){const k=o[f],b=k?.node;if(!(!b||!I.isStepNode(b))&&!(s&&k?.experienceId!==s))if(a.lastStepIndex===-1)a.lastStepIndex=f;else{a.secondLastStepIndex=f;break}}return a}return t.on(n,(o,s)=>{const{secondLastStepIndex:a}=u(o.entries,s.experienceId),f=a!==-1?o.entries.slice(0,a+1):o.entries;return{...o,entries:f}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ke(){return h.invoke(Se)}const ve=()=>g.createEvent(),we=g.createDomain("field"),Ie=h.createFactory(()=>{const t=we.store({}),e=g.createApi(t,{register(s,a){return{...s,[a.field.id]:a.field}}});function r(s){e.register({field:s})}function n(s,a){const f=u(s).getState();if(!f)return;const k=Object.assign({},f,{...a});e.register({field:{...k}})}const i=t.map(s=>Object.values(s));function u(s){return t.map(a=>a[s]||null)}function o(s){return t.map(a=>Object.values(a).find(f=>f.name===s)||null)}return{register:r,update:n,getById:u,listStore:i,getByName:o}});function be(){return h.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=g.createDomain("action"),xe=h.createFactory(()=>{const t=Ee.store({}),e=g.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 u(o){return t.map(s=>{const a=s[o];return a?a.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:u}});function je(){return h.invoke(xe)}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=g.createDomain("response"),Pe=h.createFactory(({client:t})=>{const e=Ae.store({}),r=g.createEvent(),n=g.createEvent(),i=g.createApi(e,{register(m,c){return{...m,[c.fieldId]:c.response}},registerBatch(m,c){return{...m,...c}},clear(m,c){const{[c]:d,...p}=m;return p},clearAll(){return{}}});function u(m,c){if(typeof m=="string"){if(c===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:c})}else i.registerBatch(m)}async function o(m){const c=[];return await Promise.allSettled(Object.entries(m).map(async([d,p])=>{let l=p;const y=t.fields.getById(d).getState();if(!y){c.push({fieldId:d,userMessage:`Field '${d}' not found`,systemMessage:`No field with ID '${d}' 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"){c.push({fieldId:d,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){c.push({fieldId:d,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){c.push({fieldId:d,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){c.push({fieldId:d,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(x=>x.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(x=>w.includes(x))||c.push({fieldId:d,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:c}}async function s(m){const{responsesToCommit:c,validationErrors:d}=await o(m);return d.length?{errors:d}:(i.registerBatch(c),{errors:[]})}const a=e.map(m=>m),f=e.map(m=>Object.keys(m).map(d=>({fieldId:d,value:m[d]})));function k(m){const c=t.fields.getById(m),d=e.map(p=>p[m]||null);return g.combine({f:c,r:d},({f:p,r:l})=>l||(p?.defaultValue?p.defaultValue:null))}function b(m){const c=t.fields.getByName(m);return g.combine({f:c,s:e},({f:d,s:p})=>{const l=d&&p[d.id]||null;return l||(d?.defaultValue?d.defaultValue:null)})}return g.sample({clock:r,target:i.clearAll}),g.sample({clock:n,target:i.clear}),{register:u,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:f,getAllStore:a,getByFieldId:k,getByFieldName:b}});function Be(t){return h.invoke(Pe,t)}const De=()=>"0.0.38-next.2";function Ce(){if(S.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(!S.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 u=i.replace("picked-","");e[u]=t.getAll(i)}const n=v.createStorageKey("s");if(r.size>0)v.sessionStore.set(n,e);else{const i=v.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){if(S.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=v.createStorageKey("session","global"),Ue=()=>{const t=v.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,u){this.identifiers={...this.identifiers,[i]:u},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([u])=>u!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>S.supportsLocalStorage()?Ue():null;function V(){if(S.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!S.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){if(!S.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 f=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-CVIXiBiy.cjs"),F=require("../logger-BsmHUUw1.cjs"),v=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),k=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=v.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=v.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=v.createStorageKey(`feature:${a}:${u}`,"global"),w=(g==="session"?v.sessionStore:v.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=v.createStorageKey(`feature:${a.id}:${a.key}`,"global");(a.storage==="session"?v.sessionStore:v.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 x=s.get(`${g}:${y}`);if(x!==void 0){const R=await x;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)},j=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=j.store({entries:[]}),e=j.event(),r=j.event(),n=j.event(),i=j.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 ke(){return S.invoke(Se)}const ve=()=>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"),xe=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 je(){return S.invoke(xe)}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(x=>x.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(x=>w.includes(x))||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.38-next.3";function Ce(){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 $e(){if(!k.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=v.createStorageKey("s");if(r.size>0)v.sessionStore.set(n,e);else{const i=v.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){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),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=v.createStorageKey("session","global"),Ue=()=>{const t=v.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=()=>k.supportsLocalStorage()?Ue():null;function V(){if(k.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!k.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){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 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:
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(u=>u.trim()),n=r.shift()??"";let i=qe(n,e);for(const u of r){const[o,...s]=u.split(":"),a=o?.trim()??"",f=s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),k=Te[a];k&&(i=k(i,f))}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=ve();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=$e();history=ke();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=je();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(!S.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 u=n;this.session.setIsUser(u),this.eventBus({type:"user_decide",value:u})}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 u=i;u==="true"&&(u=!0),u==="false"&&(u=!1),this.registerFeature(n,{key:`${u}`,name:n,decide:()=>u,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,u)=>(i[u.fieldId]=u.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 a=>a.condition?await I.evaluateRuleLogic(t,a.condition)?a:null:a))).filter(a=>a!==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 S.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=v.createStorageKey;exports.localStore=v.localStore;exports.sessionStore=v.sessionStore;exports.subscribe=v.subscribe;exports.supportsCookies=S.supportsCookies;exports.supportsCryptoRandomUUID=S.supportsCryptoRandomUUID;exports.supportsDocument=S.supportsDocument;exports.supportsHistory=S.supportsHistory;exports.supportsIntersectionObserver=S.supportsIntersectionObserver;exports.supportsLocalStorage=S.supportsLocalStorage;exports.supportsLocation=S.supportsLocation;exports.supportsSessionStorage=S.supportsSessionStorage;exports.supportsShadowRoot=S.supportsShadowRoot;exports.supportsWebComponents=S.supportsWebComponents;exports.supportsWindow=S.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 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=ve();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=$e();history=ke();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=je();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(!k.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 k.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=v.createStorageKey;exports.localStore=v.localStore;exports.sessionStore=v.sessionStore;exports.subscribe=v.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=M;exports.createClient=Ye;exports.getPickedConfig=V;exports.getStepFields=Ge;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-CsMhH0DN.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-CVIXiBiy.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;
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createDomain as b, createApi as F, createStore as H, createEffect as R, sample as I, attach as X, combine as O, createEvent as D } from "effector";
2
2
  import { createFactory as w, invoke as v } from "@withease/factories";
3
- import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-CwXYJkRx.js";
4
- import { f as jt } from "../experience-instance-CwXYJkRx.js";
3
+ import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-Dl8KzR7C.js";
4
+ import { f as jt } from "../experience-instance-Dl8KzR7C.js";
5
5
  import { l as k } from "../logger-C9a75KZn.js";
6
6
  import { c as A, l as C, s as z } from "../storage-Co_LbKr_.js";
7
7
  import { a as At } from "../storage-Co_LbKr_.js";
@@ -12,32 +12,33 @@ import { h as Rt, f as $t, j as Ct, e as zt, g as Ot, i as Dt, k as Ut } from ".
12
12
  const K = b("experience"), de = w(
13
13
  ({ client: t, experience: e }) => {
14
14
  const r = K.store(e), n = F(r, {
15
- merge(a, f) {
15
+ merge(p, h) {
16
16
  return {
17
- ...a,
18
- ...f.experience
17
+ ...p,
18
+ ...h.experience
19
19
  };
20
20
  }
21
- }), i = r.map((a) => ({
22
- name: a.name,
23
- decisionLogic: a.condition ?? a.decide,
24
- targetSelectors: a.targets,
21
+ }), i = r.map((p) => ({
22
+ name: p.name,
23
+ decisionLogic: p.condition ?? p.decide,
24
+ targetSelectors: p.targets,
25
25
  initializeOpenLogic: e.initializeOpen
26
- })), u = t.components.listStore.map(
27
- (a) => a.find((f) => f.name === `experience:${e.id}`) || a.find((f) => f.name === "experience"),
26
+ })), c = t.components.listStore.map(
27
+ (p) => p.find((h) => h.name === `experience:${e.id}`) || p.find((h) => h.name === "experience"),
28
28
  { skipVoid: !1 }
29
- ), o = r.map((a) => ({
30
- steps: a.steps,
31
- nodes: a.nodes,
32
- edges: a.edges,
33
- conditionals: a.conditionals
34
- })), s = e.actions ?? [];
29
+ ), o = r.map((p) => ({
30
+ steps: p.steps,
31
+ nodes: p.nodes,
32
+ edges: p.edges,
33
+ conditionals: p.conditionals
34
+ })), s = r.map((p) => p.fields), d = e.actions ?? [];
35
35
  return {
36
36
  id: e.id,
37
37
  configStore: i,
38
38
  treeStore: o,
39
- componentStore: u,
40
- actions: s,
39
+ fieldsStore: s,
40
+ componentStore: c,
41
+ actions: d,
41
42
  merge: n.merge
42
43
  };
43
44
  }
@@ -60,16 +61,16 @@ const pe = w(({ client: t }) => {
60
61
  s.merge({ experience: o, strategy: "override" });
61
62
  return;
62
63
  }
63
- const a = le({ client: t, experience: o });
64
- r.register(a);
64
+ const d = le({ client: t, experience: o });
65
+ r.register(d);
65
66
  }
66
67
  const i = e.map((o) => Object.values(o));
67
- function u(o) {
68
+ function c(o) {
68
69
  return e.map((s) => s[o], { skipVoid: !1 });
69
70
  }
70
71
  return {
71
72
  register: n,
72
- getById: u,
73
+ getById: c,
73
74
  listStore: i
74
75
  };
75
76
  });
@@ -81,9 +82,9 @@ const ge = (t, e) => {
81
82
  }, W = (t, e) => {
82
83
  const { targetSelectors: r } = e.configStore.getState(), n = q(r, e.id);
83
84
  n.forEach(
84
- ({ elements: u }) => u.forEach((o) => Z(o, e.id))
85
- ), ee(n, e.id).forEach((u) => {
86
- t.experienceInstances.spawn(e, u);
85
+ ({ elements: c }) => c.forEach((o) => Z(o, e.id))
86
+ ), ee(n, e.id).forEach((c) => {
87
+ t.experienceInstances.spawn(e, c);
87
88
  });
88
89
  }, M = async (t) => {
89
90
  await Promise.all(
@@ -97,8 +98,8 @@ const ge = (t, e) => {
97
98
  }, he = (t, e, r) => {
98
99
  const n = e.name, i = e.setup(t);
99
100
  if (i) {
100
- const u = r[n] ?? {};
101
- r[n] = Object.freeze({ ...u, ...i });
101
+ const c = r[n] ?? {};
102
+ r[n] = Object.freeze({ ...c, ...i });
102
103
  }
103
104
  }, ye = b("component"), Se = w(
104
105
  ({ client: t, component: e, name: r }) => {
@@ -127,16 +128,16 @@ const we = w(({ client: t }) => {
127
128
  "warn",
128
129
  `Component '${o}' already registered. Registering again will override the previous registration.`
129
130
  );
130
- const f = ke({ client: t, name: o, component: s });
131
- r.register(f);
131
+ const p = ke({ client: t, name: o, component: s });
132
+ r.register(p);
132
133
  }
133
134
  const i = e.map((o) => Object.values(o));
134
- function u(o) {
135
+ function c(o) {
135
136
  return e.map((s) => s[o], { skipVoid: !1 });
136
137
  }
137
138
  return {
138
139
  register: n,
139
- getByName: u,
140
+ getByName: c,
140
141
  listStore: i
141
142
  };
142
143
  });
@@ -161,12 +162,12 @@ const T = (t, e, r) => {
161
162
  ), r.register({ name: o, framework: s });
162
163
  }
163
164
  const i = e.map((o) => Object.values(o));
164
- function u(o) {
165
+ function c(o) {
165
166
  return e.map((s) => s[o], { skipVoid: !1 });
166
167
  }
167
168
  return {
168
169
  register: n,
169
- getByName: u,
170
+ getByName: c,
170
171
  listStore: i
171
172
  };
172
173
  });
@@ -181,13 +182,13 @@ const Ee = (t, e) => {
181
182
  let n = 0;
182
183
  if (r.isSet() && (n = r.json() ?? 0), n && e - n < xe)
183
184
  return !0;
184
- const i = Pe(t.apiUrl), u = {
185
+ const i = Pe(t.apiUrl), c = {
185
186
  projectId: t.projectId,
186
187
  path: window.location.pathname
187
- }, o = JSON.stringify(u), s = {
188
+ }, o = JSON.stringify(c), s = {
188
189
  "Content-Type": "application/json"
189
- }, f = document.getElementById("picked_script")?.dataset.verceltoken;
190
- f && (s["x-vercel-protection-bypass"] = f);
190
+ }, p = document.getElementById("picked_script")?.dataset.verceltoken;
191
+ p && (s["x-vercel-protection-bypass"] = p);
191
192
  const S = (await fetch(i, {
192
193
  method: "POST",
193
194
  headers: s,
@@ -212,32 +213,32 @@ function Y(t) {
212
213
  }
213
214
  const Be = b("predicate"), Re = w(({ client: t }) => {
214
215
  const e = Be.store({}), r = F(e, {
215
- register(s, a) {
216
+ register(s, d) {
216
217
  return {
217
218
  ...s,
218
- [a.name]: {
219
- name: a.name,
220
- predicate: a.predicate
219
+ [d.name]: {
220
+ name: d.name,
221
+ predicate: d.predicate
221
222
  }
222
223
  };
223
224
  }
224
225
  });
225
- function n(s, a) {
226
+ function n(s, d) {
226
227
  e.getState()[s] && k(
227
228
  "warn",
228
229
  `Predicate '${s}' already registered. Registering again will override the previous registration.`
229
- ), r.register(Object.freeze({ name: s, predicate: a }));
230
+ ), r.register(Object.freeze({ name: s, predicate: d }));
230
231
  }
231
232
  const i = e.map((s) => Object.values(s));
232
- function u(s) {
233
- return e.map((a) => a[s]?.predicate, { skipVoid: !1 });
233
+ function c(s) {
234
+ return e.map((d) => d[s]?.predicate, { skipVoid: !1 });
234
235
  }
235
236
  function o(s) {
236
- const a = H(() => {
237
+ const d = H(() => {
237
238
  }, {
238
239
  skipVoid: !1
239
- }), f = R(async () => {
240
- const h = u(s).getState();
240
+ }), p = R(async () => {
241
+ const h = c(s).getState();
241
242
  if (!h)
242
243
  return;
243
244
  const S = Y(t);
@@ -245,16 +246,16 @@ const Be = b("predicate"), Re = w(({ client: t }) => {
245
246
  });
246
247
  return I({
247
248
  source: { responses: t.responses.listStore, fields: t.fields.listStore },
248
- target: f
249
+ target: p
249
250
  }), I({
250
- clock: f.doneData,
251
+ clock: p.doneData,
251
252
  filter: (h) => h !== void 0,
252
- target: a
253
- }), f(), a;
253
+ target: d
254
+ }), p(), d;
254
255
  }
255
256
  return {
256
257
  register: n,
257
- getByName: u,
258
+ getByName: c,
258
259
  listStore: i,
259
260
  getEvokablePredicate: o
260
261
  };
@@ -266,157 +267,157 @@ const Ce = (t, e, r) => {
266
267
  r.register(t, e);
267
268
  }, _ = b("feature"), ze = w(({ client: t }) => {
268
269
  const e = _.store({}), r = _.store([]), n = F(e, {
269
- register(c, d) {
270
+ register(a, u) {
270
271
  return {
271
- ...c,
272
- [d.id]: d.feature
272
+ ...a,
273
+ [u.id]: u.feature
273
274
  };
274
275
  }
275
276
  });
276
- function i(c, d) {
277
- e.getState()[c] && k(
277
+ function i(a, u) {
278
+ e.getState()[a] && k(
278
279
  "warn",
279
- `Feature '${c}' already registered. Registering again will override the previous registration.`
280
+ `Feature '${a}' already registered. Registering again will override the previous registration.`
280
281
  );
281
282
  const l = {
282
- id: c,
283
+ id: a,
283
284
  feature: {
284
- ...d,
285
- id: c
285
+ ...u,
286
+ id: a
286
287
  }
287
288
  };
288
289
  n.register(
289
290
  Object.freeze({
290
- id: c,
291
+ id: a,
291
292
  feature: l
292
293
  })
293
294
  );
294
295
  }
295
- const u = R(
296
+ const c = R(
296
297
  async ({
297
- id: c,
298
- key: d,
299
- storage: p = "local"
298
+ id: a,
299
+ key: u,
300
+ storage: f = "local"
300
301
  }) => {
301
- const l = A(`feature:${c}:${d}`, "global"), y = (p === "session" ? z : C).get(l).boolean();
302
- return y === null ? null : { id: c, key: d, bucket: y, storage: p };
302
+ const l = A(`feature:${a}:${u}`, "global"), y = (f === "session" ? z : C).get(l).boolean();
303
+ return y === null ? null : { id: a, key: u, bucket: y, storage: f };
303
304
  }
304
- ), o = R((c) => {
305
- if (!c)
305
+ ), o = R((a) => {
306
+ if (!a)
306
307
  return null;
307
- const d = A(`feature:${c.id}:${c.key}`, "global");
308
- (c.storage === "session" ? z : C).set(d, c.bucket);
309
- }), s = /* @__PURE__ */ new Map(), a = X({
308
+ const u = A(`feature:${a.id}:${a.key}`, "global");
309
+ (a.storage === "session" ? z : C).set(u, a.bucket);
310
+ }), s = /* @__PURE__ */ new Map(), d = X({
310
311
  source: { allFeaturesStore: e, resolvedFeaturesStore: r },
311
- effect: async ({ allFeaturesStore: c, resolvedFeaturesStore: d }, { id: p, decide: l, key: m }) => {
312
- const y = d.find(
313
- (B) => B.id === p && B.key === m
312
+ effect: async ({ allFeaturesStore: a, resolvedFeaturesStore: u }, { id: f, decide: l, key: m }) => {
313
+ const y = u.find(
314
+ (B) => B.id === f && B.key === m
314
315
  );
315
316
  if (y)
316
317
  return y;
317
- const E = c[p];
318
+ const E = a[f];
318
319
  if (!E)
319
- throw new Error(`Feature with id '${p}' not found`);
320
- const x = s.get(`${p}:${m}`);
320
+ throw new Error(`Feature with id '${f}' not found`);
321
+ const x = s.get(`${f}:${m}`);
321
322
  if (x !== void 0) {
322
323
  const B = await x;
323
324
  return { id: E.id, bucket: B, key: m, storage: E.feature.storage };
324
325
  }
325
326
  const N = l();
326
- s.set(`${p}:${m}`, N);
327
+ s.set(`${f}:${m}`, N);
327
328
  const Q = await N;
328
329
  return { id: E.id, bucket: Q, key: m, storage: E.feature.storage };
329
330
  }
330
331
  });
331
332
  I({
332
333
  clock: n.register,
333
- fn: (c) => {
334
- const { id: d, feature: p } = c;
335
- return { id: d, key: p.feature.key, storage: p.feature.storage };
334
+ fn: (a) => {
335
+ const { id: u, feature: f } = a;
336
+ return { id: u, key: f.feature.key, storage: f.feature.storage };
336
337
  },
337
- target: u
338
+ target: c
338
339
  }), I({
339
340
  source: e,
340
- clock: a.doneData,
341
- fn: (c, d) => {
342
- const { id: p, bucket: l, storage: m } = d, y = c[p]?.feature.key;
343
- return y ? { key: y, id: p, bucket: l, storage: m } : null;
341
+ clock: d.doneData,
342
+ fn: (a, u) => {
343
+ const { id: f, bucket: l, storage: m } = u, y = a[f]?.feature.key;
344
+ return y ? { key: y, id: f, bucket: l, storage: m } : null;
344
345
  },
345
346
  target: o
346
347
  });
347
- const f = O({ allFeaturesStore: e, resolvedFeaturesStore: r }).map(
348
+ const p = O({ allFeaturesStore: e, resolvedFeaturesStore: r }).map(
348
349
  ({
349
- allFeaturesStore: c,
350
- resolvedFeaturesStore: d
351
- }) => Object.values(c).map((p) => {
352
- const l = d.find(
353
- (m) => m.id === p.id && m.key === p.feature.key
350
+ allFeaturesStore: a,
351
+ resolvedFeaturesStore: u
352
+ }) => Object.values(a).map((f) => {
353
+ const l = u.find(
354
+ (m) => m.id === f.id && m.key === f.feature.key
354
355
  );
355
356
  return l ? {
356
- id: p.id,
357
- name: p.feature.name,
358
- key: p.feature.key,
359
- getBucket: () => ({ id: p.id, bucket: l.bucket }),
357
+ id: f.id,
358
+ name: f.feature.name,
359
+ key: f.feature.key,
360
+ getBucket: () => ({ id: f.id, bucket: l.bucket }),
360
361
  isResolved: !0
361
362
  } : {
362
- id: p.id,
363
- name: p.feature.name,
364
- key: p.feature.key,
365
- getBucket: async () => await a(p.feature),
363
+ id: f.id,
364
+ name: f.feature.name,
365
+ key: f.feature.key,
366
+ getBucket: async () => await d(f.feature),
366
367
  isResolved: !1
367
368
  };
368
369
  })
369
370
  );
370
371
  I({
371
- clock: a.doneData,
372
+ clock: d.doneData,
372
373
  source: { resolvedFeatures: r },
373
- filter: ({ resolvedFeatures: c }, { id: d, key: p }) => !c.some(
374
- (m) => m.id === d && m.key === p
374
+ filter: ({ resolvedFeatures: a }, { id: u, key: f }) => !a.some(
375
+ (m) => m.id === u && m.key === f
375
376
  ),
376
- fn: (c, d) => d,
377
- target: t.eventBus.prepend((c) => ({
377
+ fn: (a, u) => u,
378
+ target: t.eventBus.prepend((a) => ({
378
379
  type: "feature_decide",
379
- feature: c
380
+ feature: a
380
381
  }))
381
382
  }), I({
382
- clock: [u.doneData, a.doneData],
383
+ clock: [c.doneData, d.doneData],
383
384
  source: r,
384
- fn: (c, d) => !d || c.some(
385
- (l) => l.id === d.id && l.key === d.key
386
- ) ? c : [...c, d],
385
+ fn: (a, u) => !u || a.some(
386
+ (l) => l.id === u.id && l.key === u.key
387
+ ) ? a : [...a, u],
387
388
  target: r
388
389
  });
389
- function h(c) {
390
- return f.map((d) => d.find((p) => p.id === c));
390
+ function h(a) {
391
+ return p.map((u) => u.find((f) => f.id === a));
391
392
  }
392
- function S(c) {
393
- return e.map((d) => d[c], { skipVoid: !1 });
393
+ function S(a) {
394
+ return e.map((u) => u[a], { skipVoid: !1 });
394
395
  }
395
- function g(c) {
396
- const d = H(
396
+ function g(a) {
397
+ const u = H(
397
398
  async () => {
398
399
  },
399
400
  { skipVoid: !1 }
400
- ), p = R(async () => {
401
- const l = h(c).getState();
401
+ ), f = R(async () => {
402
+ const l = h(a).getState();
402
403
  if (l)
403
404
  return async () => (await l.getBucket()).bucket;
404
405
  });
405
406
  return I({
406
407
  source: r,
407
- filter: (l) => l.some((m) => m.id === c),
408
- target: p
408
+ filter: (l) => l.some((m) => m.id === a),
409
+ target: f
409
410
  }), I({
410
- clock: p.doneData,
411
+ clock: f.doneData,
411
412
  filter: (l) => l !== void 0,
412
- target: d
413
- }), p(), d;
413
+ target: u
414
+ }), f(), u;
414
415
  }
415
416
  return {
416
417
  register: i,
417
418
  getById: h,
418
419
  getByName: S,
419
- listStore: f,
420
+ listStore: p,
420
421
  getEvokableFeature: g
421
422
  };
422
423
  });
@@ -445,25 +446,25 @@ const Ue = w(() => {
445
446
  L(s.experienceId, s.node)
446
447
  ]
447
448
  })), t.on(i, (o, s) => s);
448
- function u(o, s) {
449
- const a = { lastStepIndex: -1, secondLastStepIndex: -1 };
450
- for (let f = o.length - 1; f >= 0; f--) {
451
- const h = o[f], S = h?.node;
449
+ function c(o, s) {
450
+ const d = { lastStepIndex: -1, secondLastStepIndex: -1 };
451
+ for (let p = o.length - 1; p >= 0; p--) {
452
+ const h = o[p], S = h?.node;
452
453
  if (!(!S || !re(S)) && !(s && h?.experienceId !== s))
453
- if (a.lastStepIndex === -1)
454
- a.lastStepIndex = f;
454
+ if (d.lastStepIndex === -1)
455
+ d.lastStepIndex = p;
455
456
  else {
456
- a.secondLastStepIndex = f;
457
+ d.secondLastStepIndex = p;
457
458
  break;
458
459
  }
459
460
  }
460
- return a;
461
+ return d;
461
462
  }
462
463
  return t.on(n, (o, s) => {
463
- const { secondLastStepIndex: a } = u(o.entries, s.experienceId), f = a !== -1 ? o.entries.slice(0, a + 1) : o.entries;
464
+ const { secondLastStepIndex: d } = c(o.entries, s.experienceId), p = d !== -1 ? o.entries.slice(0, d + 1) : o.entries;
464
465
  return {
465
466
  ...o,
466
- entries: f
467
+ entries: p
467
468
  };
468
469
  }), {
469
470
  push: e,
@@ -478,36 +479,36 @@ function Ve() {
478
479
  }
479
480
  const Ne = () => D(), Me = b("field"), Te = w(() => {
480
481
  const t = Me.store({}), e = F(t, {
481
- register(s, a) {
482
+ register(s, d) {
482
483
  return {
483
484
  ...s,
484
- [a.field.id]: a.field
485
+ [d.field.id]: d.field
485
486
  };
486
487
  }
487
488
  });
488
489
  function r(s) {
489
490
  e.register({ field: s });
490
491
  }
491
- function n(s, a) {
492
- const f = u(s).getState();
493
- if (!f)
492
+ function n(s, d) {
493
+ const p = c(s).getState();
494
+ if (!p)
494
495
  return;
495
- const h = Object.assign({}, f, {
496
- ...a
496
+ const h = Object.assign({}, p, {
497
+ ...d
497
498
  });
498
499
  e.register({ field: { ...h } });
499
500
  }
500
501
  const i = t.map((s) => Object.values(s));
501
- function u(s) {
502
- return t.map((a) => a[s] || null);
502
+ function c(s) {
503
+ return t.map((d) => d[s] || null);
503
504
  }
504
505
  function o(s) {
505
- return t.map((a) => Object.values(a).find((f) => f.name === s) || null);
506
+ return t.map((d) => Object.values(d).find((p) => p.name === s) || null);
506
507
  }
507
508
  return {
508
509
  register: r,
509
510
  update: n,
510
- getById: u,
511
+ getById: c,
511
512
  listStore: i,
512
513
  getByName: o
513
514
  };
@@ -536,11 +537,11 @@ const Le = (t, e) => {
536
537
  function i(o) {
537
538
  return t.map((s) => s[o], { skipVoid: !1 });
538
539
  }
539
- function u(o) {
540
+ function c(o) {
540
541
  return t.map(
541
542
  (s) => {
542
- const a = s[o];
543
- return a ? a.action : void 0;
543
+ const d = s[o];
544
+ return d ? d.action : void 0;
544
545
  },
545
546
  { skipVoid: !1 }
546
547
  );
@@ -549,7 +550,7 @@ const Le = (t, e) => {
549
550
  register: r,
550
551
  getByName: i,
551
552
  listStore: n,
552
- getEvokableAction: u
553
+ getEvokableAction: c
553
554
  };
554
555
  });
555
556
  function qe() {
@@ -563,45 +564,45 @@ function G(t) {
563
564
  }
564
565
  const We = b("response"), Ye = w(({ client: t }) => {
565
566
  const e = We.store({}), r = D(), n = D(), i = F(e, {
566
- register(g, c) {
567
+ register(g, a) {
567
568
  return {
568
569
  ...g,
569
- [c.fieldId]: c.response
570
+ [a.fieldId]: a.response
570
571
  };
571
572
  },
572
- registerBatch(g, c) {
573
+ registerBatch(g, a) {
573
574
  return {
574
575
  ...g,
575
- ...c
576
+ ...a
576
577
  };
577
578
  },
578
- clear(g, c) {
579
- const { [c]: d, ...p } = g;
580
- return p;
579
+ clear(g, a) {
580
+ const { [a]: u, ...f } = g;
581
+ return f;
581
582
  },
582
583
  clearAll() {
583
584
  return {};
584
585
  }
585
586
  });
586
- function u(g, c) {
587
+ function c(g, a) {
587
588
  if (typeof g == "string") {
588
- if (c === void 0)
589
+ if (a === void 0)
589
590
  throw new Error("Response is required when registering a single field");
590
- i.register({ fieldId: g, response: c });
591
+ i.register({ fieldId: g, response: a });
591
592
  } else
592
593
  i.registerBatch(g);
593
594
  }
594
595
  async function o(g) {
595
- const c = [];
596
+ const a = [];
596
597
  return await Promise.allSettled(
597
- Object.entries(g).map(async ([d, p]) => {
598
- let l = p;
599
- const m = t.fields.getById(d).getState();
598
+ Object.entries(g).map(async ([u, f]) => {
599
+ let l = f;
600
+ const m = t.fields.getById(u).getState();
600
601
  if (!m) {
601
- c.push({
602
- fieldId: d,
603
- userMessage: `Field '${d}' not found`,
604
- systemMessage: `No field with ID '${d}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
602
+ a.push({
603
+ fieldId: u,
604
+ userMessage: `Field '${u}' not found`,
605
+ systemMessage: `No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
605
606
  value: l
606
607
  });
607
608
  return;
@@ -611,8 +612,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
611
612
  $input: l
612
613
  });
613
614
  if (typeof y == "string") {
614
- c.push({
615
- fieldId: d,
615
+ a.push({
616
+ fieldId: u,
616
617
  userMessage: y,
617
618
  systemMessage: `Field validation resulted in an error: ${y}.`,
618
619
  value: l
@@ -620,8 +621,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
620
621
  return;
621
622
  }
622
623
  if (y === !1) {
623
- c.push({
624
- fieldId: d,
624
+ a.push({
625
+ fieldId: u,
625
626
  userMessage: "This field is invalid",
626
627
  systemMessage: "Field validation resulted in an unspecified error.",
627
628
  value: l
@@ -630,8 +631,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
630
631
  }
631
632
  }
632
633
  if (m.required && G(l)) {
633
- c.push({
634
- fieldId: d,
634
+ a.push({
635
+ fieldId: u,
635
636
  userMessage: "This field is required",
636
637
  systemMessage: "Field is required.",
637
638
  value: l
@@ -639,8 +640,8 @@ const We = b("response"), Ye = w(({ client: t }) => {
639
640
  return;
640
641
  }
641
642
  if (!m.multiple && Array.isArray(l) && l.length > 1) {
642
- c.push({
643
- fieldId: d,
643
+ a.push({
644
+ fieldId: u,
644
645
  userMessage: "This field expects a single response",
645
646
  systemMessage: "Field expects a single response.",
646
647
  value: l
@@ -649,33 +650,33 @@ const We = b("response"), Ye = w(({ client: t }) => {
649
650
  }
650
651
  if (m.options) {
651
652
  const y = m.options.map((x) => x.value), E = Array.isArray(l) ? l : [l];
652
- Array.isArray(l) && (E.every((x) => y.includes(x)) || c.push({
653
- fieldId: d,
653
+ Array.isArray(l) && (E.every((x) => y.includes(x)) || a.push({
654
+ fieldId: u,
654
655
  userMessage: "This field expects a valid option",
655
656
  systemMessage: `Field expects a valid option. Valid options are: ${y.join(", ")}`,
656
657
  value: l
657
658
  }));
658
659
  }
659
660
  })
660
- ), { responsesToCommit: g, validationErrors: c };
661
+ ), { responsesToCommit: g, validationErrors: a };
661
662
  }
662
663
  async function s(g) {
663
- const { responsesToCommit: c, validationErrors: d } = await o(g);
664
- return d.length ? { errors: d } : (i.registerBatch(c), { errors: [] });
664
+ const { responsesToCommit: a, validationErrors: u } = await o(g);
665
+ return u.length ? { errors: u } : (i.registerBatch(a), { errors: [] });
665
666
  }
666
- const a = e.map((g) => g), f = e.map((g) => Object.keys(g).map((d) => ({
667
- fieldId: d,
668
- value: g[d]
667
+ const d = e.map((g) => g), p = e.map((g) => Object.keys(g).map((u) => ({
668
+ fieldId: u,
669
+ value: g[u]
669
670
  })));
670
671
  function h(g) {
671
- const c = t.fields.getById(g), d = e.map((p) => p[g] || null);
672
- return O({ f: c, r: d }, ({ f: p, r: l }) => l || (p?.defaultValue ? p.defaultValue : null));
672
+ const a = t.fields.getById(g), u = e.map((f) => f[g] || null);
673
+ return O({ f: a, r: u }, ({ f, r: l }) => l || (f?.defaultValue ? f.defaultValue : null));
673
674
  }
674
675
  function S(g) {
675
- const c = t.fields.getByName(g);
676
- return O({ f: c, s: e }, ({ f: d, s: p }) => {
677
- const l = d && p[d.id] || null;
678
- return l || (d?.defaultValue ? d.defaultValue : null);
676
+ const a = t.fields.getByName(g);
677
+ return O({ f: a, s: e }, ({ f: u, s: f }) => {
678
+ const l = u && f[u.id] || null;
679
+ return l || (u?.defaultValue ? u.defaultValue : null);
679
680
  });
680
681
  }
681
682
  return I({
@@ -685,13 +686,13 @@ const We = b("response"), Ye = w(({ client: t }) => {
685
686
  clock: n,
686
687
  target: i.clear
687
688
  }), {
688
- register: u,
689
+ register: c,
689
690
  clearAll: r,
690
691
  clear: n,
691
692
  commit: s,
692
693
  getResponsesToCommit: o,
693
- listStore: f,
694
- getAllStore: a,
694
+ listStore: p,
695
+ getAllStore: d,
695
696
  getByFieldId: h,
696
697
  getByFieldName: S
697
698
  };
@@ -699,7 +700,7 @@ const We = b("response"), Ye = w(({ client: t }) => {
699
700
  function Je(t) {
700
701
  return v(Ye, t);
701
702
  }
702
- const Qe = () => "0.0.38-next.2";
703
+ const Qe = () => "0.0.38-next.3";
703
704
  function Xe() {
704
705
  if (U()) {
705
706
  const t = [
@@ -722,8 +723,8 @@ function Ze() {
722
723
  for (const [i] of t.entries())
723
724
  i.startsWith("picked-") && r.add(i);
724
725
  for (const i of r) {
725
- const u = i.replace("picked-", "");
726
- e[u] = t.getAll(i);
726
+ const c = i.replace("picked-", "");
727
+ e[c] = t.getAll(i);
727
728
  }
728
729
  const n = A("s");
729
730
  if (r.size > 0)
@@ -756,12 +757,12 @@ const tt = A("session", "global"), rt = () => {
756
757
  setIsUser(i) {
757
758
  this.isUser = i, r(this);
758
759
  },
759
- setIdentifier(i, u) {
760
- this.identifiers = { ...this.identifiers, [i]: u }, r(this);
760
+ setIdentifier(i, c) {
761
+ this.identifiers = { ...this.identifiers, [i]: c }, r(this);
761
762
  },
762
763
  removeIdentifier(i) {
763
764
  this.identifiers && (this.identifiers = Object.fromEntries(
764
- Object.entries(this.identifiers).filter(([u]) => u !== i)
765
+ Object.entries(this.identifiers).filter(([c]) => c !== i)
765
766
  ), this.identifiers = Object.keys(this.identifiers).length ? this.identifiers : void 0, r(this));
766
767
  }
767
768
  };
@@ -840,11 +841,11 @@ function dt(t, e) {
840
841
  return typeof r == "function" ? r() : r;
841
842
  }
842
843
  function lt(t, e) {
843
- const r = t.split("|").map((u) => u.trim()), n = r.shift() ?? "";
844
+ const r = t.split("|").map((c) => c.trim()), n = r.shift() ?? "";
844
845
  let i = dt(n, e);
845
- for (const u of r) {
846
- const [o, ...s] = u.split(":"), a = o?.trim() ?? "", f = s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g, ""), h = ct[a];
847
- h && (i = h(i, f));
846
+ for (const c of r) {
847
+ const [o, ...s] = c.split(":"), d = o?.trim() ?? "", p = s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g, ""), h = ct[d];
848
+ h && (i = h(i, p));
848
849
  }
849
850
  return $(i) ? "" : typeof i == "object" ? JSON.stringify(i) : String(i);
850
851
  }
@@ -905,8 +906,8 @@ class ft {
905
906
  r && (this.condition === void 0 ? n = !0 : typeof this.condition == "boolean" ? n = this.condition : n = await j(this, this.condition) === !0);
906
907
  const i = r && n === !0;
907
908
  if (typeof n == "boolean" && this.session) {
908
- const u = n;
909
- this.session.setIsUser(u), this.eventBus({ type: "user_decide", value: u });
909
+ const c = n;
910
+ this.session.setIsUser(c), this.eventBus({ type: "user_decide", value: c });
910
911
  }
911
912
  this.eventBus({ type: "initialize" }), document.body && i && M(this), await se(), i && M(this), this.eventBus({ type: "ready" }), this.isReady = !0, this.session && this.eventBus({ type: "session", ...this.session });
912
913
  })();
@@ -981,13 +982,13 @@ class ft {
981
982
  const [n, i] = r.split(":");
982
983
  if (!n || !i)
983
984
  return;
984
- let u = i;
985
- u === "true" && (u = !0), u === "false" && (u = !1), this.registerFeature(n, {
986
- key: `${u}`,
985
+ let c = i;
986
+ c === "true" && (c = !0), c === "false" && (c = !1), this.registerFeature(n, {
987
+ key: `${c}`,
987
988
  // use the assigned bucket value as the key
988
989
  name: n,
989
990
  // eslint-disable-next-line sonarjs/function-return-type
990
- decide: () => u,
991
+ decide: () => c,
991
992
  storage: "session"
992
993
  });
993
994
  } catch {
@@ -1060,7 +1061,7 @@ class ft {
1060
1061
  * // => "Fruits: apple, banana, and cherry"
1061
1062
  */
1062
1063
  renderString = (e, r) => {
1063
- const n = this.responses.listStore.getState().reduce((i, u) => (i[u.fieldId] = u.value, i), {});
1064
+ const n = this.responses.listStore.getState().reduce((i, c) => (i[c.fieldId] = c.value, i), {});
1064
1065
  return pt(e, {
1065
1066
  ...r,
1066
1067
  responses: n
@@ -1081,8 +1082,8 @@ async function bt(t, e) {
1081
1082
  if (!n.options || !J(n))
1082
1083
  return n;
1083
1084
  const o = (await Promise.all(
1084
- n.options.map(async (a) => a.condition ? await j(t, a.condition) ? a : null : a)
1085
- )).filter((a) => a !== null);
1085
+ n.options.map(async (d) => d.condition ? await j(t, d.condition) ? d : null : d)
1086
+ )).filter((d) => d !== null);
1086
1087
  return o.length === n.options.length ? n : o.length === 0 ? null : { ...n, options: o };
1087
1088
  })
1088
1089
  )).filter((n) => n !== null);
@@ -1,5 +1,5 @@
1
1
  import { createEvent as i, createStore as v, createEffect as C, sample as n, attach as S } from "effector";
2
- import { h as F } from "../../experience-instance-CwXYJkRx.js";
2
+ import { h as F } from "../../experience-instance-Dl8KzR7C.js";
3
3
  function R() {
4
4
  let c, p;
5
5
  return {
@@ -1 +1 @@
1
- "use strict";const i=require("effector"),q=require("@withease/factories"),H=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),ye=require("./object-BbFTsGh3.cjs");function we(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ie(e){return e instanceof Promise}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(we(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function T(e){return`${e}`}const Ee={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await A(e),"!":async e=>!await A(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(T(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(T).join(""),substr:(e,t,r)=>{const n=T(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=T(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(t))},throw(e){throw new Error(T(e))}};async function g(e,t){if(!e)return e;if(ie(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!ne(e))return e;const r=Ne(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await A(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await A(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await A(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const h=await A(await g(n[1],p));return{item:p,shouldInclude:h}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let h=n.length>2?await g(n[2],t):null;for(const k of o)h=await g(u,{current:k,accumulator:h});return h}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await A(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await A(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await A(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return ne(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ee[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function A(e){return ie(e)?A(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ne(e){return Object.keys(e)[0]}function ae(e){return!ye.isEmpty(e)}async function z(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...h)=>p.predicate({...n,args:h})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:h}=await p.getBucket();return h}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function xe(e){return!H.supportsWindow()||!H.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const Ie="open";function ke(e){if(!H.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:Ie})}function ve(){return new Promise((e,t)=>{if(!H.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function be(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const C="picked-root",j="picked-target",Ae="picked-root";function Oe(e,t){return[...e,{selector:`${Ae}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=xe(n.selector).filter(c=>!_e(c,t)&&!ce(c,t));return{...n,elements:a}})}function Fe(e,t){return e.flatMap(r=>r.elements.map(n=>Te(n,r.placement,t)))}function Be(e,t){e.classList.add(j),e.classList.add(`${j}-${t}`)}function _e(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(`${j}`)}function ce(e,t){return t?e.classList.contains(`${C}-${t}`):e.classList.contains(C)}function $e(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(C),t.classList.add(`${C}-${e}`),t}function Te(e,t,r){let n;const a=$e(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function re(e){return e.type==="conditional"}function M(e){return e.type==="step"}function oe(e){return e.type==="experience"}function V(e){return e.type==="origin"}function se(e){return e.type==="action"}const ue=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),M(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?ue(e,t,u,!1,a):[]})),Me=(e,t,r)=>ue(e,t,r,!0,new Set),fe=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const h=e.find(L=>L.id===p.destinationNodeId);if(!h)continue;const[k,F]=fe(e,t,h,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,F+1))}return o===1/0?[-1,-1]:[o,u]},Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(F=>F.id===u.sourceNodeId);if(!p)continue;const[h,k]=le(e,t,p,new Set(n));h!==-1&&(c=Math.min(c,h+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},De=(e,t,r)=>le(e,t,r,new Set),de=e=>e.find(r=>r.type==="origin")||null,X=(e,t,r)=>{if(!e)return de(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Re(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const J=i.createDomain("experience-instance"),Pe=q.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),h=t.componentStore,k=J.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),L=F.map(s=>s.filter(d=>M(d.node))),x=F.map(s=>s[s.length-1]?.node||null),f=i.combine(t.treeStore,x,({steps:s},d)=>s.find(l=>d&&M(d)&&l.id===d.stepId)||null),S=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?Me(s,d,l):[]),v=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?De(s,d,l):[-1,-1]),B=i.combine(t.treeStore,x,({nodes:s,edges:d},l)=>l?Le(s,d,l):[-1,-1]),b=J.store(!1),_=i.createApi(b,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),ge=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),me=i.attach({source:t.treeStore,effect:async(s,d)=>{const l=s.nodes.find(w=>M(w)&&w.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),Q=i.attach({source:x,effect:s=>{}}),U=i.attach({source:t.treeStore,effect:async({nodes:s})=>de(s)}),W=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(V(l))return X(l,s,d)}}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:l},w)=>{if(!re(w))return;const $=l.find(O=>O.id===w.conditionalId);if(!$)return;const I=w.id,y=await z(e,$.condition);return Re(!!y,I,s,d)}}),Y=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(!se(l))return;const w=l.action;if(!w){N.logger("warn",`Action node ${l.id} has no action name`);return}const $=e.actions.getByName(w).getState();if(!$){N.logger("warn",`Action '${w}' not registered on client`);const I=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return I?s.find(y=>y.id===I.destinationNodeId):null}if(typeof $.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const I=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return I?s.find(y=>y.id===I.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await $.action(w);const I=d.find(O=>O.sourceNodeId===l.id&&O.sourceNodeHandle==="true");if(!I)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const y=s.find(O=>O.id===I.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${y?.id}`),y||null}catch(I){N.logger("warn",`Action '${w}' failed:`,I);const y=d.find(P=>P.sourceNodeId===l.id&&P.sourceNodeHandle==="false");if(!y)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const O=s.find(P=>P.id===y.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${O?.id}`),O||null}}}),he=i.createEffect(s=>{if(oe(s))return e.launchExperienceById(s.experienceId)}),Z=i.attach({source:[x,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),D=i.attach({source:[x,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),Se=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),ee=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ae(s)?!!await z(e,s):s??!1}),K=i.createEvent(),te=i.createEvent();return i.sample({source:x,target:K}),i.sample({clock:K,filter:s=>s===null,target:U}),i.sample({clock:K,filter:s=>s!==null,target:te}),i.split({source:te,match:s=>re(s)?"condition":M(s)?"step":oe(s)?"launchExperience":V(s)?"origin":se(s)?"action":"other",cases:{origin:W,condition:G,step:Q,launchExperience:he,action:Y,__:i.createEvent()}}),i.sample({clock:[G.doneData,W.doneData,U.doneData,D.doneData,Z.doneData,Y.doneData],filter:Boolean,target:Se}),i.sample({clock:a,target:D}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:ge}),i.sample({clock:o,target:me}),i.sample({source:i.combine([G.pending,W.pending,U.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Q.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:ee}),i.sample({source:ee.doneData,fn:Boolean,target:b}),i.sample({source:x,clock:n,filter:s=>s?V(s):!0,target:Z}),i.sample({source:b,filter:Boolean,target:n}),i.sample({source:b,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:b,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:h,stateStore:k,isOpenStore:b,open:_.open,close:_.close,toggleOpen:_.toggle,setOpen:_.set,treeStore:t.treeStore,currentNodeStore:x,currentStepStore:f,nextReachableStepNodesStore:S,stepsToOriginStore:v,stepsToLeafStore:B,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:L}});function pe(e){return q.invoke(Pe,e)}const He=q.createFactory(({client:e})=>{const t=J.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,S){const v=[...f[S.experienceId]??[]];return v.push(S),{...f,[S.experienceId]:v}},unregister(f,S){const v=S.experienceId,B=f[v]?.filter(b=>b!==S);return{...f,[v]:B??[]}}}),o=i.createEffect(({experience:f,target:S})=>pe({client:e,experience:f,target:S})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&be(f.target,()=>{a(f)})}),h=i.createEffect(f=>{c.unregister(f)}),k=i.createEffect(f=>{const S=f.componentStore.getState();if(!S){N.logger("warn","No app component registered. Skipping init.");return}const v=S.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${S.name}'. Skipping rendering.`);return}const B=f.target;if(!B){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const b=ke(B);try{v.render(b,S.component,e,f)}catch(_){N.logger("error",_)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:h}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialize",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,S){r({experience:f,target:S})}const L=t.map(f=>Object.values(f).flat());function x(f){return t.map(S=>S[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:x,listStore:L}});function Ce(e){return q.invoke(He,e)}exports.createAppHosts=Fe;exports.createExperienceInstance=pe;exports.createExperienceInstanceIndex=Ce;exports.domInteractive=ve;exports.evaluateRuleLogic=z;exports.getTargetElements=Oe;exports.isPickedRoot=ce;exports.isRulesLogic=ae;exports.isStepNode=M;exports.tagTargetElement=Be;
1
+ "use strict";const i=require("effector"),q=require("@withease/factories"),H=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),ye=require("./object-BbFTsGh3.cjs");function we(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ie(e){return e instanceof Promise}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(we(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function T(e){return`${e}`}const Ee={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await A(e),"!":async e=>!await A(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(T(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(T).join(""),substr:(e,t,r)=>{const n=T(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=T(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(t))},throw(e){throw new Error(T(e))}};async function g(e,t){if(!e)return e;if(ie(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!ne(e))return e;const r=Ne(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await A(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await A(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await A(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const S=await A(await g(n[1],p));return{item:p,shouldInclude:S}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let S=n.length>2?await g(n[2],t):null;for(const k of o)S=await g(u,{current:k,accumulator:S});return S}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await A(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await A(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await A(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return ne(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ee[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function A(e){return ie(e)?A(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ne(e){return Object.keys(e)[0]}function ae(e){return!ye.isEmpty(e)}async function z(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...S)=>p.predicate({...n,args:S})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:S}=await p.getBucket();return S}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function Ie(e){return!H.supportsWindow()||!H.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const xe="open";function ke(e){if(!H.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:xe})}function ve(){return new Promise((e,t)=>{if(!H.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function be(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const C="picked-root",j="picked-target",Ae="picked-root";function Oe(e,t){return[...e,{selector:`${Ae}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=Ie(n.selector).filter(c=>!_e(c,t)&&!ce(c,t));return{...n,elements:a}})}function Fe(e,t){return e.flatMap(r=>r.elements.map(n=>Te(n,r.placement,t)))}function Be(e,t){e.classList.add(j),e.classList.add(`${j}-${t}`)}function _e(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(`${j}`)}function ce(e,t){return t?e.classList.contains(`${C}-${t}`):e.classList.contains(C)}function $e(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(C),t.classList.add(`${C}-${e}`),t}function Te(e,t,r){let n;const a=$e(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function re(e){return e.type==="conditional"}function M(e){return e.type==="step"}function oe(e){return e.type==="experience"}function V(e){return e.type==="origin"}function se(e){return e.type==="action"}const ue=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),M(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?ue(e,t,u,!1,a):[]})),Me=(e,t,r)=>ue(e,t,r,!0,new Set),fe=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const S=e.find(L=>L.id===p.destinationNodeId);if(!S)continue;const[k,F]=fe(e,t,S,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,F+1))}return o===1/0?[-1,-1]:[o,u]},Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(F=>F.id===u.sourceNodeId);if(!p)continue;const[S,k]=le(e,t,p,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},De=(e,t,r)=>le(e,t,r,new Set),de=e=>e.find(r=>r.type==="origin")||null,X=(e,t,r)=>{if(!e)return de(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Re(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const J=i.createDomain("experience-instance"),Pe=q.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),S=t.componentStore,k=J.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),L=F.map(s=>s.filter(d=>M(d.node))),I=F.map(s=>s[s.length-1]?.node||null),f=i.combine(t.treeStore,I,({steps:s},d)=>s.find(l=>d&&M(d)&&l.id===d.stepId)||null),h=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Me(s,d,l):[]),v=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?De(s,d,l):[-1,-1]),B=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Le(s,d,l):[-1,-1]),b=J.store(!1),_=i.createApi(b,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),ge=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),me=i.attach({source:t.treeStore,effect:async(s,d)=>{const l=s.nodes.find(w=>M(w)&&w.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),Q=i.attach({source:I,effect:s=>{}}),U=i.attach({source:t.treeStore,effect:async({nodes:s})=>de(s)}),W=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(V(l))return X(l,s,d)}}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:l},w)=>{if(!re(w))return;const $=l.find(O=>O.id===w.conditionalId);if(!$)return;const x=w.id,y=await z(e,$.condition);return Re(!!y,x,s,d)}}),Y=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(!se(l))return;const w=l.action;if(!w){N.logger("warn",`Action node ${l.id} has no action name`);return}const $=e.actions.getByName(w).getState();if(!$){N.logger("warn",`Action '${w}' not registered on client`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}if(typeof $.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await $.action(w);const x=d.find(O=>O.sourceNodeId===l.id&&O.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const y=s.find(O=>O.id===x.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${y?.id}`),y||null}catch(x){N.logger("warn",`Action '${w}' failed:`,x);const y=d.find(P=>P.sourceNodeId===l.id&&P.sourceNodeHandle==="false");if(!y)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const O=s.find(P=>P.id===y.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${O?.id}`),O||null}}}),Se=i.createEffect(s=>{if(oe(s))return e.launchExperienceById(s.experienceId)}),Z=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),D=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>X(s,d,l)}),he=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),ee=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ae(s)?!!await z(e,s):s??!1}),K=i.createEvent(),te=i.createEvent();return i.sample({source:I,target:K}),i.sample({clock:K,filter:s=>s===null,target:U}),i.sample({clock:K,filter:s=>s!==null,target:te}),i.split({source:te,match:s=>re(s)?"condition":M(s)?"step":oe(s)?"launchExperience":V(s)?"origin":se(s)?"action":"other",cases:{origin:W,condition:G,step:Q,launchExperience:Se,action:Y,__:i.createEvent()}}),i.sample({clock:[G.doneData,W.doneData,U.doneData,D.doneData,Z.doneData,Y.doneData],filter:Boolean,target:he}),i.sample({clock:a,target:D}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:ge}),i.sample({clock:o,target:me}),i.sample({source:i.combine([G.pending,W.pending,U.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Q.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:ee}),i.sample({source:ee.doneData,fn:Boolean,target:b}),i.sample({source:I,clock:n,filter:s=>s?V(s):!0,target:Z}),i.sample({source:b,filter:Boolean,target:n}),i.sample({source:b,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:b,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:S,stateStore:k,isOpenStore:b,open:_.open,close:_.close,toggleOpen:_.toggle,setOpen:_.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:I,currentStepStore:f,nextReachableStepNodesStore:h,stepsToOriginStore:v,stepsToLeafStore:B,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:L}});function pe(e){return q.invoke(Pe,e)}const He=q.createFactory(({client:e})=>{const t=J.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,h){const v=[...f[h.experienceId]??[]];return v.push(h),{...f,[h.experienceId]:v}},unregister(f,h){const v=h.experienceId,B=f[v]?.filter(b=>b!==h);return{...f,[v]:B??[]}}}),o=i.createEffect(({experience:f,target:h})=>pe({client:e,experience:f,target:h})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&be(f.target,()=>{a(f)})}),S=i.createEffect(f=>{c.unregister(f)}),k=i.createEffect(f=>{const h=f.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const v=h.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const B=f.target;if(!B){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const b=ke(B);try{v.render(b,h.component,e,f)}catch(_){N.logger("error",_)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialize",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,h){r({experience:f,target:h})}const L=t.map(f=>Object.values(f).flat());function I(f){return t.map(h=>h[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:I,listStore:L}});function Ce(e){return q.invoke(He,e)}exports.createAppHosts=Fe;exports.createExperienceInstance=pe;exports.createExperienceInstanceIndex=Ce;exports.domInteractive=ve;exports.evaluateRuleLogic=z;exports.getTargetElements=Oe;exports.isPickedRoot=ce;exports.isRulesLogic=ae;exports.isStepNode=M;exports.tagTargetElement=Be;
@@ -673,6 +673,7 @@ const Q = xt("experience-instance"), Wt = ut(
673
673
  setOpen: T.set,
674
674
  // nodes
675
675
  treeStore: e.treeStore,
676
+ fieldsStore: e.fieldsStore,
676
677
  currentNodeStore: I,
677
678
  currentStepStore: u,
678
679
  nextReachableStepNodesStore: h,
@@ -21,6 +21,7 @@ declare const createExperienceFactory: ({ client, experience }: {
21
21
  edges: ExperienceEdge[];
22
22
  conditionals: ExperienceConditional[];
23
23
  }>;
24
+ fieldsStore: import('effector').Store<Field[]>;
24
25
  componentStore: import('effector').Store<{
25
26
  name: string;
26
27
  component: AdaptedComponent<string, unknown>;
@@ -51,6 +52,7 @@ declare const createExperienceIndexFactory: ({ client }: {
51
52
  edges: ExperienceEdge[];
52
53
  conditionals: ExperienceConditional[];
53
54
  }>;
55
+ fieldsStore: import('effector').Store<Field[]>;
54
56
  componentStore: import('effector').Store<{
55
57
  name: string;
56
58
  component: AdaptedComponent<string, unknown>;
@@ -76,6 +78,7 @@ declare const createExperienceIndexFactory: ({ client }: {
76
78
  edges: ExperienceEdge[];
77
79
  conditionals: ExperienceConditional[];
78
80
  }>;
81
+ fieldsStore: import('effector').Store<Field[]>;
79
82
  componentStore: import('effector').Store<{
80
83
  name: string;
81
84
  component: AdaptedComponent<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience/experience.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ declare const createExperienceInstanceFactory: ({ client, experience, target, }:
37
37
  edges: import('../..').ExperienceEdge[];
38
38
  conditionals: import('../..').ExperienceConditional[];
39
39
  }>;
40
+ fieldsStore: import('effector').Store<import('../..').Field[]>;
40
41
  currentNodeStore: import('effector').Store<ExperienceNode | null>;
41
42
  currentStepStore: import('effector').Store<ExperienceStep | null>;
42
43
  nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
@@ -79,6 +80,7 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
79
80
  edges: import('../..').ExperienceEdge[];
80
81
  conditionals: import('../..').ExperienceConditional[];
81
82
  }>;
83
+ fieldsStore: import('effector').Store<import('../..').Field[]>;
82
84
  currentNodeStore: import('effector').Store<ExperienceNode | null>;
83
85
  currentStepStore: import('effector').Store<ExperienceStep | null>;
84
86
  nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
@@ -116,6 +118,7 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
116
118
  edges: import('../..').ExperienceEdge[];
117
119
  conditionals: import('../..').ExperienceConditional[];
118
120
  }>;
121
+ fieldsStore: import('effector').Store<import('../..').Field[]>;
119
122
  currentNodeStore: import('effector').Store<ExperienceNode | null>;
120
123
  currentStepStore: import('effector').Store<ExperienceStep | null>;
121
124
  nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsbF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
1
+ {"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAubF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
@@ -82,6 +82,7 @@ export declare class Picked {
82
82
  edges: import('.').ExperienceEdge[];
83
83
  conditionals: import('.').ExperienceConditional[];
84
84
  }>;
85
+ fieldsStore: import('effector').Store<Field[]>;
85
86
  currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
86
87
  currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
87
88
  nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
@@ -119,6 +120,7 @@ export declare class Picked {
119
120
  edges: import('.').ExperienceEdge[];
120
121
  conditionals: import('.').ExperienceConditional[];
121
122
  }>;
123
+ fieldsStore: import('effector').Store<Field[]>;
122
124
  currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
123
125
  currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
124
126
  nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
@@ -146,6 +148,7 @@ export declare class Picked {
146
148
  edges: import('.').ExperienceEdge[];
147
149
  conditionals: import('.').ExperienceConditional[];
148
150
  }>;
151
+ fieldsStore: import('effector').Store<Field[]>;
149
152
  componentStore: import('effector').Store<{
150
153
  name: string;
151
154
  component: AdaptedComponent<string, unknown>;
@@ -171,6 +174,7 @@ export declare class Picked {
171
174
  edges: import('.').ExperienceEdge[];
172
175
  conditionals: import('.').ExperienceConditional[];
173
176
  }>;
177
+ fieldsStore: import('effector').Store<Field[]>;
174
178
  componentStore: import('effector').Store<{
175
179
  name: string;
176
180
  component: AdaptedComponent<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/client",
3
- "version": "0.0.38-next.2",
3
+ "version": "0.0.38-next.3",
4
4
  "dependencies": {
5
5
  "@withease/factories": "^1.0.5"
6
6
  },