@picked/client 0.0.1-dev.1784001148032 → 0.0.1-dev.1784003142683
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{api-BJ8EHkg5.js → api-CsddE4DI.js} +1 -1
- package/dist/{api-B1wdTDNv.cjs → api-U2LgcKqF.cjs} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/actions.mdx +16 -2
- package/dist/docs/sdk/actions.md +33 -3
- package/dist/esm/index.js +32 -28
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +2 -2
- package/dist/experience-instance-BWL-yghq.cjs +1 -0
- package/dist/{experience-instance-M2kR3nTp.js → experience-instance-QSrdjfn6.js} +196 -168
- package/dist/{plugin-D3z3IXOb.cjs → plugin-CWvFEvt5.cjs} +1 -1
- package/dist/{plugin-B04iPuj_.js → plugin-CnCP2N-8.js} +1 -1
- package/dist/types/entities/action/action.d.ts +7 -1
- package/dist/types/entities/action/action.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +10 -0
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/entities/history/history.d.ts +20 -3
- package/dist/types/entities/history/history.d.ts.map +1 -1
- package/dist/types/lifecycle/condition-selection.d.ts.map +1 -1
- package/dist/types/picked.d.ts +9 -1
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/utils/node-tree/get-next-node-from-action.d.ts +24 -0
- package/dist/types/utils/node-tree/get-next-node-from-action.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/experience-instance-BbSXoRrr.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.
|
|
1
|
+
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.1784003142683`,i=`v1`;function a(e,t){return new URL(`/api/${i}/${t}`,e).toString()}function o(e){return{...n(`sdk`,r()),...e}}async function s(e,t,n,r){let i=a(e,t);return fetch(i,{headers:o(n),signal:r})}async function c(e,t,n,r){let i=a(e,t);return fetch(i,{method:`POST`,headers:{"Content-Type":`application/json`,...o(r)},body:JSON.stringify(n)})}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-CGZIYgAI.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-CdxDV3e-.cjs"),a=require("../experience-instance-BbSXoRrr.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-B1wdTDNv.cjs"),c=require("../id-Js-62re-.cjs");let l=require("effector"),u=require("@withease/factories");var d=(0,l.createDomain)(`experience`);function f(e,t,n){let r=new Set(t.filter(e=>e.elements.length>0).map(e=>e.selector));for(let t of e){if(t.placement!==`replace`||r.has(t.selector))continue;let e=i.i(t.selector);!e||e===n||`${t.selector}${e}${n}`}}var p=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.u).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.l).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),p=n.actions??[],m,h=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.a(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.c(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(m,t,r):e.experienceInstances.spawn(m,t)}),f(t.targetSelectors,a,n.id)}}),g=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.a(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),_=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),v=(0,l.createEvent)(),y=(0,l.createEvent)(),b=d.createStore(void 0,{skipVoid:!1}).on(v,(e,t)=>t).on(y,(e,t)=>t);return(0,l.sample)({clock:v,target:g}),(0,l.sample)({clock:g.doneData,source:b,filter:(e,t)=>t,fn:e=>e,target:h}),(0,l.sample)({clock:g.doneData,filter:Boolean,target:_}),(0,l.sample)({clock:y,source:b,fn:e=>e,target:h}),(0,l.sample)({clock:y,target:_}),m={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:p,merge:o.merge,initialiseFx:h,shouldInitialiseFx:g,initialiseRequested:v,initialiseDirectly:y,prepareExperienceContentFx:_},m});function m(e){return(0,u.invoke)(p,e)}var h=5e3;function g(e,t){return new Promise(n=>{let r=setTimeout(n,t);e.then(()=>{clearTimeout(r),n()})})}function _(e){return e.configStore.getState().targetSelectors.filter(e=>e.placement===`replace`).map(e=>e.selector)}function v(e){let t=new Map;for(let n of e)for(let e of _(n))t.set(e,(t.get(e)??0)+1);let n=[],r=[];for(let i of e)_(i).some(e=>(t.get(e)??0)>1)?n.push(i):r.push(i);return{serialised:n,parallel:r}}async function y(e){let t;try{let n=new Promise(n=>{t=e.initialiseFx.finally.watch(()=>n())});await e.shouldInitialiseFx()&&await g(n,h)}catch{`${e.id}`}finally{t?.()}}async function b(e){for(let t of e)await y(t)}var x=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(m({client:e,experience:t}))});(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,l.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:async e=>{let{serialised:t,parallel:n}=v(e);await Promise.all([b(t),...n.map(e=>y(e))])}})}});function S(e){return(0,u.invoke)(x,e)}var ee=async e=>{await e.experiences.initialiseExperiencesFx()};function C(e){return(0,l.createEffect)(async()=>{await e()})}var w=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},T=(0,l.createDomain)(`component`),E=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function D(e){return(0,u.invoke)(E,e)}var O=(0,u.createFactory)(({client:e})=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:t,component:n})=>D({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function k(e){return(0,u.invoke)(O,e)}var A=(e,t,n)=>{n.register({name:e,component:t})},te=(0,l.createDomain)(`framework`),ne=(0,u.createFactory)(e=>{let t=te.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function re(e){return(0,u.invoke)(ne,e)}var ie=(e,t)=>{t.register({name:e.name,framework:e})},ae=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function oe(e){return(0,u.invoke)(ae,e)}function se(e){return typeof e==`number`&&!isNaN(e)}function j(e){return typeof e==`string`}function M(e){return Array.isArray(e)}function N(e){return e instanceof Promise}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function F(e){if(se(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var ce={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>F(e)>F(t),">=":(e,t)=>F(e)>=F(t),"<":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<i;let a=F(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<=i;let a=F(n);return r<=i&&i<=a},"!!":async e=>await R(e),"!":async e=>!await R(e),"%":(e,t)=>F(e)%F(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(I(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(I).join(``),substr:(e,t,n)=>{let r=I(e),i=F(t);if(n===void 0)return r.substr(i);let a=F(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>F(e)+F(t),0),"*":(...e)=>e.reduce((e,t)=>F(e)*F(t),1),"-":(e,t)=>{let n=F(e);return t===void 0?-n:n-F(t)},"/":(e,t)=>F(e)/F(t),min:(...e)=>Math.min(...e.map(F)),max:(...e)=>Math.max(...e.map(F)),merge:(...e)=>e.reduce((e,t)=>M(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=I(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=M(e[0])?e[0]:e,n=[];for(let e of t){let t=await L({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await L({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=F(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>j(e)&&j(t)&&e.startsWith(t),endsWith:(e,t)=>j(e)&&j(t)&&e.endsWith(t),regexp_matches(e,t){let n=e,r=``;if(M(e)){let[t,i]=e;n=t,r=i}return!j(n)||!j(r)?!1:new RegExp(n,r).test(I(t))},throw(e){throw Error(I(e))}};async function L(e,t){if(!e)return e;if(N(e))return L(await e,t);if(M(e))return Promise.all(e.map(e=>L(e,t)));if(!P(e))return e;let n=le(e),r=n?e[n]??[]:[];switch(M(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await R(await L(r[e],t)))return L(r[e+1],t);return r.length%2==1?L(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await L(n,t),!await R(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await L(n,t),await R(e))return e;return e}case`map`:{let e=await L(r[0],t);return M(e)?await Promise.all(e.map(e=>L(r[1],e))):[]}case`filter`:{let e=await L(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await R(await L(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await L(r[0],t);if(!M(e))return r.length>2?await L(r[2],t):null;let n=r[1],i=r.length>2?await L(r[2],t):null;for(let t of e)i=await L(n,{current:t,accumulator:i});return i}case`all`:{let e=await L(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await R(await L(r[1],t)))return!1;return!0}case`some`:{let e=await L(r[0],t);if(!M(e))return!1;for(let t of e)if(await R(await L(r[1],t)))return!0;return!1}case`none`:{let e=await L(r[0],t);if(!M(e))return!0;for(let t of e)if(await R(await L(r[1],t)))return!1;return!0}case`catch`:try{return await L(r[0],t)}catch(e){return P(e)?await L(e,t):r[1]?await L(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>L(e,t))),a=n?ce[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function R(e){return N(e)?R(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function le(e){return Object.keys(e)[0]}function z(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>n.has(i)?!1:await L(a.logic,{...t,conditions:z(e,t,new Set(n).add(i))})===!0}})}var ue=(0,u.createFactory)(({client:e})=>(0,l.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:o,context:s})=>{let c=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),l=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),u=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),d={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:c,actions:l,features:u,...s};return await L(o,{...d,conditions:z(a,d,new Set)})}}));function de(e){return(0,u.invoke)(ue,e)}var fe=6e3,B=o.t(`last_ping`,`global`),V=async e=>{try{let t=Date.now(),n=o.n.get(B),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<fe)return!0;let i={projectId:e.projectId,path:window.location.pathname},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},H=(0,l.createDomain)(`lifecycle`),pe=(0,u.createFactory)(({client:e})=>{let n=H.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),s=H.store(`idle`),c=H.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),g=(0,l.createEvent)(),_=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(g,(e,t)=>t),d.on(_,(e,t)=>t),n.on(p,()=>!0);let v=(0,l.createEffect)(()=>{V(e)}),y=(0,l.createEffect)(async()=>{await i.r()}),b=(0,l.createEffect)(async()=>{await ee(e)}),x=(0,l.attach)({effect:b}),S=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),C=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),w=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:T,fn:()=>`starting`,target:s}),(0,l.sample)({clock:T,target:v}),(0,l.sample)({clock:T,target:S}),(0,l.sample)({clock:T,target:y}),(0,l.sample)({clock:S.done,target:C}),(0,l.sample)({clock:C.doneData,target:a}),(0,l.sample)({clock:w.doneData,target:o}),(0,l.sample)({clock:C.doneData,filter:e=>e,target:w}),(0,l.sample)({clock:w.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:w.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:C.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:w.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let E=(0,l.createStore)(!1).on(y.done,()=>!0),D=(0,l.createStore)(!1).on(m,()=>!0),O=(0,l.createStore)(!1).on(x.done,()=>!0),k=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:b}),(0,l.sample)({clock:(0,l.combine)(E,D,k,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(E,D,k,O,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,l.sample)({clock:[S.fail,C.fail,w.fail,b.fail,x.fail,y.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:g,setCondition:_}});function me(e){return(0,u.invoke)(pe,e)}var he=(0,l.createDomain)(`predicate`),ge=(0,u.createFactory)(({client:e})=>{let t=he.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function _e(e){return(0,u.invoke)(ge,e)}var ve=(e,t,n)=>{n.register({name:e,predicate:t})},U=(0,l.createDomain)(`feature`),ye=(0,u.createFactory)(({client:e})=>{let t=U.store({}),r=U.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,source:t,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:r},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=u.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();u.set(`${n}:${i}`,c);let l=await c;return{id:o.id,bucket:l,key:i,storage:o.feature.storage}}});(0,l.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:s}),(0,l.sample)({source:t,clock:d.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:c});let f=(0,l.combine)({allFeaturesStore:t,resolvedFeaturesStore:r}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,l.sample)({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,l.sample)({clock:[s.doneData,d.doneData],source:r,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}function m(e){return t.map(t=>t[e],{skipVoid:!1})}function h(e){let t=(0,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function be(e){return(0,u.invoke)(ye,e)}var xe=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,l.createDomain)(`history`);function G(e,t,n){return{id:c.t(`history-entry`),node:n,at:Date.now(),instanceId:e,experienceId:t}}function Se(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n&&a.u(n.node))return e.slice(0,t+1)}return[]}var Ce=(0,u.createFactory)(()=>{let e=W.store([]),t=W.event(),n=W.event(),r=W.event(),i=W.event(),o=W.event(),s=W.event(),u=W.event();e.on(t,(e,t)=>[...e,G(t.instanceId,t.experienceId,t.node)]),e.on(n,(e,t)=>{let n=G(t.instanceId,t.experienceId,t.node),r=-1;for(let n=e.length-1;n>=0;n--)if(e[n]?.instanceId===t.instanceId){r=n;break}return r===-1?[...e,n]:[...e.slice(0,r),n,...e.slice(r+1)]}),e.on(r,(e,{instanceId:t})=>{let n=0,r=-1;for(let i=e.length-1;i>=0;i--){let o=e[i];if(!(o?.instanceId!==t||!a.u(o.node))&&++n===2){r=i;break}}return r===-1?e:e.filter((e,n)=>e.instanceId!==t||n<=r)}),e.on(i,(e,{snapshots:t})=>{let n=new Set(e.map(e=>e.experienceId)),r=[];for(let e of Object.keys(t)){if(n.has(e))continue;let i=t[e];i&&r.push(...i)}return r.length===0?e:[...e,...r]}),e.on(u,(e,t)=>[...e,...t]),e.on(s,(e,{instanceId:t})=>{let n=e.filter(e=>e.instanceId!==t);return n.length===e.length?e:n});let d=e.map(e=>{let t=new Map;for(let n of e)t.set(n.experienceId,n.instanceId);let n={};for(let r of e){if(t.get(r.experienceId)!==r.instanceId)continue;let e=n[r.experienceId]??[];e.push(r),n[r.experienceId]=e}return n});return(0,l.sample)({clock:o,source:d,fn:(e,{instanceId:t,experienceId:n})=>Se(e[n]??[]).map(e=>({...e,id:c.t(`history-entry`),instanceId:t})),target:u}),{push:t,replace:n,back:r,restoreSnapshots:i,seedInstanceFromSnapshot:o,clearForInstance:s,entriesStore:e,snapshotStore:d}});function we(){return(0,u.invoke)(Ce)}var Te=0,Ee=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:Te++,at:new Date,payload:t}]),t},De=(0,l.createDomain)(`field`),Oe=(0,u.createFactory)(()=>{let e=De.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function ke(){return(0,u.invoke)(Oe)}var Ae=(0,l.createDomain)(`step`),je=(0,u.createFactory)(()=>{let e=Ae.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Me(){return(0,u.invoke)(je)}function Ne(e,t){t.register(e)}var Pe=(0,l.createDomain)(`content`),Fe=(0,u.createFactory)(()=>{let e=Pe.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function Ie(){return(0,u.invoke)(Fe)}function Le(e,t){t.register(e)}var Re=(0,l.createDomain)(`action`),ze=(0,u.createFactory)(({client:e})=>{let t=Re.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{key:t})=>e[t]!==void 0,fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({key:e,action:t})=>Object.freeze({key:e,action:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function s(t,n){let r=(0,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Be(e){return(0,u.invoke)(ze,e)}var Ve=(e,t,n)=>{n.register({key:e,action:t})};function K(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function q(e){return e===null||e===``||Array.isArray(e)&&!e.length}function He(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function J(e){try{return JSON.stringify(e),!0}catch{return!1}}function Ue(e,t){return t.find(t=>t.key===e)??null}function We(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Ge(e,t){if(e.type!==`object`||q(t))return null;if(e.multiple){if(!Array.isArray(t))return K(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return K(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!J(n))return K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?K(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?K(e,t,`This field expects an object value`,`Field expects an object value.`):J(t)?null:K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Ke(e,t){if(q(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!He(e)||e===null?!1:r.includes(e))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function qe(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!q(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return K(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return K(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&q(r)?K(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?K(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Je=(0,l.createDomain)(`response`),Ye=(0,u.createFactory)(({client:e})=>{let n=Je.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,l.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Ue(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=We(o,n),l=await qe(s,o,c,a);if(l){r.push(l);return}let u=Ge(o,c);if(u){r.push(u);return}let d=Ke(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,l.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}(0,l.sample)({clock:r,target:a.clearAll}),(0,l.sample)({clock:i,target:a.clear});let y=(0,l.attach)({source:e.experiences.listStore,effect:(e,t)=>{let n=e.find(e=>e.id===t);if(!n)return;let{steps:r}=n.treeStore.getState(),a=r.flatMap(e=>e.fieldKeys);for(let e of a)i(e)}});function b(e){y(e)}return{register:o,clearAll:r,clear:i,clearByExperience:b,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Xe(e){return(0,u.invoke)(Ye,e)}var Ze=(0,l.createDomain)(`condition`),Qe=(0,u.createFactory)(()=>{let e=Ze.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function $e(){return(0,u.invoke)(Qe)}function et(){if(r.i()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}function tt(){if(!r.f())return{};let e=new URLSearchParams(window.location.search),t={},n=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&n.add(t);for(let r of n){let n=r.replace(`picked-`,``);t[n]=e.getAll(r)}let i=o.t(`s`);if(n.size>0)o.r.set(i,t);else{let e=o.r.get(i);if(e)return e.json()||{}}return t}var Y=o.t(`session`,`global`);function nt(){return r.r()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function rt(){if(!r.s())return null;let e=o.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var it=(0,u.createFactory)(()=>{let e=rt(),t={id:e?.id??nt()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}});return(0,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function at(){return(0,u.invoke)(it,void 0)}function X(){if(r.f())return globalThis.window.pickedConfig}function ot(){if(r.f())return X()?.projectId}function Z(){if(!r.i())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function st(e){if(e.projectId)return e.projectId;let t=ot();if(t)return t;let n=Z();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-CGZIYgAI.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-CdxDV3e-.cjs"),a=require("../experience-instance-BWL-yghq.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-U2LgcKqF.cjs"),c=require("../id-Js-62re-.cjs");let l=require("effector"),u=require("@withease/factories");var d=(0,l.createDomain)(`experience`);function f(e,t,n){let r=new Set(t.filter(e=>e.elements.length>0).map(e=>e.selector));for(let t of e){if(t.placement!==`replace`||r.has(t.selector))continue;let e=i.i(t.selector);!e||e===n||`${t.selector}${e}${n}`}}var p=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.u).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.l).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),p=n.actions??[],m,h=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.a(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.c(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(m,t,r):e.experienceInstances.spawn(m,t)}),f(t.targetSelectors,a,n.id)}}),g=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.a(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),_=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),v=(0,l.createEvent)(),y=(0,l.createEvent)(),b=d.createStore(void 0,{skipVoid:!1}).on(v,(e,t)=>t).on(y,(e,t)=>t);return(0,l.sample)({clock:v,target:g}),(0,l.sample)({clock:g.doneData,source:b,filter:(e,t)=>t,fn:e=>e,target:h}),(0,l.sample)({clock:g.doneData,filter:Boolean,target:_}),(0,l.sample)({clock:y,source:b,fn:e=>e,target:h}),(0,l.sample)({clock:y,target:_}),m={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:p,merge:o.merge,initialiseFx:h,shouldInitialiseFx:g,initialiseRequested:v,initialiseDirectly:y,prepareExperienceContentFx:_},m});function m(e){return(0,u.invoke)(p,e)}var h=5e3;function g(e,t){return new Promise(n=>{let r=setTimeout(n,t);e.then(()=>{clearTimeout(r),n()})})}function _(e){return e.configStore.getState().targetSelectors.filter(e=>e.placement===`replace`).map(e=>e.selector)}function v(e){let t=new Map;for(let n of e)for(let e of _(n))t.set(e,(t.get(e)??0)+1);let n=[],r=[];for(let i of e)_(i).some(e=>(t.get(e)??0)>1)?n.push(i):r.push(i);return{serialised:n,parallel:r}}async function y(e){let t;try{let n=new Promise(n=>{t=e.initialiseFx.finally.watch(()=>n())});await e.shouldInitialiseFx()&&await g(n,h)}catch{`${e.id}`}finally{t?.()}}async function b(e){for(let t of e)await y(t)}var x=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(m({client:e,experience:t}))});(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,l.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:async e=>{let{serialised:t,parallel:n}=v(e);await Promise.all([b(t),...n.map(e=>y(e))])}})}});function S(e){return(0,u.invoke)(x,e)}var ee=async e=>{await e.experiences.initialiseExperiencesFx()};function C(e){return(0,l.createEffect)(async()=>{await e()})}var w=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},T=(0,l.createDomain)(`component`),E=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function D(e){return(0,u.invoke)(E,e)}var O=(0,u.createFactory)(({client:e})=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:t,component:n})=>D({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function k(e){return(0,u.invoke)(O,e)}var A=(e,t,n)=>{n.register({name:e,component:t})},te=(0,l.createDomain)(`framework`),ne=(0,u.createFactory)(e=>{let t=te.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function re(e){return(0,u.invoke)(ne,e)}var ie=(e,t)=>{t.register({name:e.name,framework:e})},ae=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function oe(e){return(0,u.invoke)(ae,e)}function se(e){return typeof e==`number`&&!isNaN(e)}function j(e){return typeof e==`string`}function M(e){return Array.isArray(e)}function N(e){return e instanceof Promise}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function F(e){if(se(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var ce={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>F(e)>F(t),">=":(e,t)=>F(e)>=F(t),"<":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<i;let a=F(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<=i;let a=F(n);return r<=i&&i<=a},"!!":async e=>await R(e),"!":async e=>!await R(e),"%":(e,t)=>F(e)%F(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(I(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(I).join(``),substr:(e,t,n)=>{let r=I(e),i=F(t);if(n===void 0)return r.substr(i);let a=F(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>F(e)+F(t),0),"*":(...e)=>e.reduce((e,t)=>F(e)*F(t),1),"-":(e,t)=>{let n=F(e);return t===void 0?-n:n-F(t)},"/":(e,t)=>F(e)/F(t),min:(...e)=>Math.min(...e.map(F)),max:(...e)=>Math.max(...e.map(F)),merge:(...e)=>e.reduce((e,t)=>M(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=I(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=M(e[0])?e[0]:e,n=[];for(let e of t){let t=await L({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await L({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=F(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>j(e)&&j(t)&&e.startsWith(t),endsWith:(e,t)=>j(e)&&j(t)&&e.endsWith(t),regexp_matches(e,t){let n=e,r=``;if(M(e)){let[t,i]=e;n=t,r=i}return!j(n)||!j(r)?!1:new RegExp(n,r).test(I(t))},throw(e){throw Error(I(e))}};async function L(e,t){if(!e)return e;if(N(e))return L(await e,t);if(M(e))return Promise.all(e.map(e=>L(e,t)));if(!P(e))return e;let n=le(e),r=n?e[n]??[]:[];switch(M(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await R(await L(r[e],t)))return L(r[e+1],t);return r.length%2==1?L(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await L(n,t),!await R(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await L(n,t),await R(e))return e;return e}case`map`:{let e=await L(r[0],t);return M(e)?await Promise.all(e.map(e=>L(r[1],e))):[]}case`filter`:{let e=await L(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await R(await L(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await L(r[0],t);if(!M(e))return r.length>2?await L(r[2],t):null;let n=r[1],i=r.length>2?await L(r[2],t):null;for(let t of e)i=await L(n,{current:t,accumulator:i});return i}case`all`:{let e=await L(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await R(await L(r[1],t)))return!1;return!0}case`some`:{let e=await L(r[0],t);if(!M(e))return!1;for(let t of e)if(await R(await L(r[1],t)))return!0;return!1}case`none`:{let e=await L(r[0],t);if(!M(e))return!0;for(let t of e)if(await R(await L(r[1],t)))return!1;return!0}case`catch`:try{return await L(r[0],t)}catch(e){return P(e)?await L(e,t):r[1]?await L(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>L(e,t))),a=n?ce[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function R(e){return N(e)?R(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function le(e){return Object.keys(e)[0]}function z(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>n.has(i)?!1:await L(a.logic,{...t,conditions:z(e,t,new Set(n).add(i))})===!0}})}var ue=(0,u.createFactory)(({client:e})=>(0,l.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:o,context:s})=>{let c=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),l=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),u=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),d={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:c,actions:l,features:u,...s};return await L(o,{...d,conditions:z(a,d,new Set)})}}));function de(e){return(0,u.invoke)(ue,e)}var fe=6e3,B=o.t(`last_ping`,`global`),V=async e=>{try{let t=Date.now(),n=o.n.get(B),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<fe)return!0;let i={projectId:e.projectId,path:window.location.pathname},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},H=(0,l.createDomain)(`lifecycle`),pe=(0,u.createFactory)(({client:e})=>{let n=H.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),s=H.store(`idle`),c=H.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:H}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),g=(0,l.createEvent)(),_=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(g,(e,t)=>t),d.on(_,(e,t)=>t),n.on(p,()=>!0);let v=(0,l.createEffect)(()=>{V(e)}),y=(0,l.createEffect)(async()=>{await i.r()}),b=(0,l.createEffect)(async()=>{await ee(e)}),x=(0,l.attach)({effect:b}),S=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),C=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),w=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:T,fn:()=>`starting`,target:s}),(0,l.sample)({clock:T,target:v}),(0,l.sample)({clock:T,target:S}),(0,l.sample)({clock:T,target:y}),(0,l.sample)({clock:S.done,target:C}),(0,l.sample)({clock:C.doneData,target:a}),(0,l.sample)({clock:w.doneData,target:o}),(0,l.sample)({clock:C.doneData,filter:e=>e,target:w}),(0,l.sample)({clock:w.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:w.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:C.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:w.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let E=(0,l.createStore)(!1).on(y.done,()=>!0),D=(0,l.createStore)(!1).on(m,()=>!0),O=(0,l.createStore)(!1).on(x.done,()=>!0),k=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:b}),(0,l.sample)({clock:(0,l.combine)(E,D,k,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(E,D,k,O,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,l.sample)({clock:[S.fail,C.fail,w.fail,b.fail,x.fail,y.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:g,setCondition:_}});function me(e){return(0,u.invoke)(pe,e)}var he=(0,l.createDomain)(`predicate`),ge=(0,u.createFactory)(({client:e})=>{let t=he.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function _e(e){return(0,u.invoke)(ge,e)}var ve=(e,t,n)=>{n.register({name:e,predicate:t})},U=(0,l.createDomain)(`feature`),ye=(0,u.createFactory)(({client:e})=>{let t=U.store({}),r=U.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,source:t,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:r},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=u.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();u.set(`${n}:${i}`,c);let l=await c;return{id:o.id,bucket:l,key:i,storage:o.feature.storage}}});(0,l.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:s}),(0,l.sample)({source:t,clock:d.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:c});let f=(0,l.combine)({allFeaturesStore:t,resolvedFeaturesStore:r}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,l.sample)({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,l.sample)({clock:[s.doneData,d.doneData],source:r,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}function m(e){return t.map(t=>t[e],{skipVoid:!1})}function h(e){let t=(0,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function be(e){return(0,u.invoke)(ye,e)}var xe=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,l.createDomain)(`history`);function G(e,t,n){return{id:c.t(`history-entry`),node:n,at:Date.now(),instanceId:e,experienceId:t}}function Se(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n&&a.u(n.node))return e.slice(0,t+1)}return[]}var Ce=(0,u.createFactory)(()=>{let e=W.store([]),t=W.event(),n=W.event(),r=W.event(),i=W.event(),o=W.event(),s=W.event(),u=W.event(),d=W.event();e.on(t,(e,t)=>[...e,G(t.instanceId??t.experienceId,t.experienceId,t.node)]),e.on(n,(e,t)=>{let n=t.instanceId??t.experienceId,r=G(n,t.experienceId,t.node),i=-1;for(let t=e.length-1;t>=0;t--)if(e[t]?.instanceId===n){i=t;break}return i===-1?[...e,r]:[...e.slice(0,i),r,...e.slice(i+1)]}),e.on(r,(e,t)=>{let n=e=>(t.instanceId===void 0||e.instanceId===t.instanceId)&&(t.experienceId===void 0||e.experienceId===t.experienceId),r=0,i=-1;for(let t=e.length-1;t>=0;t--){let o=e[t];if(!(!o||!n(o)||!a.u(o.node))&&++r===2){i=t;break}}return i===-1?e:e.filter((e,t)=>!n(e)||t<=i)}),e.on(i,(e,{entries:t})=>t.map(e=>({...e,instanceId:e.instanceId??e.experienceId}))),e.on(o,(e,{snapshots:t})=>{let n=new Set(e.map(e=>e.experienceId)),r=[];for(let e of Object.keys(t)){if(n.has(e))continue;let i=t[e];i&&r.push(...i)}return r.length===0?e:[...e,...r]}),e.on(d,(e,t)=>[...e,...t]),e.on(u,(e,{instanceId:t})=>{let n=e.filter(e=>e.instanceId!==t);return n.length===e.length?e:n});let f=e.map(e=>{let t=new Map;for(let n of e)t.set(n.experienceId,n.instanceId);let n={};for(let r of e){if(t.get(r.experienceId)!==r.instanceId)continue;let e=n[r.experienceId]??[];e.push(r),n[r.experienceId]=e}return n});return(0,l.sample)({clock:s,source:f,fn:(e,{instanceId:t,experienceId:n})=>Se(e[n]??[]).map(e=>({...e,id:c.t(`history-entry`),instanceId:t})),target:d}),{push:t,replace:n,back:r,restore:i,restoreSnapshots:o,seedInstanceFromSnapshot:s,clearForInstance:u,entriesStore:e,snapshotStore:f}});function we(){return(0,u.invoke)(Ce)}var Te=0,Ee=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:Te++,at:new Date,payload:t}]),t},De=(0,l.createDomain)(`field`),Oe=(0,u.createFactory)(()=>{let e=De.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function ke(){return(0,u.invoke)(Oe)}var Ae=(0,l.createDomain)(`step`),je=(0,u.createFactory)(()=>{let e=Ae.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Me(){return(0,u.invoke)(je)}function Ne(e,t){t.register(e)}var Pe=(0,l.createDomain)(`content`),Fe=(0,u.createFactory)(()=>{let e=Pe.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function Ie(){return(0,u.invoke)(Fe)}function Le(e,t){t.register(e)}var Re=(0,l.createDomain)(`action`),ze=(0,u.createFactory)(({client:e})=>{let t=Re.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{key:t})=>e[t]!==void 0,fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({key:e,action:t})=>Object.freeze({key:e,action:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function s(t,n){let r=(0,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Be(e){return(0,u.invoke)(ze,e)}var Ve=(e,t,n)=>{n.register({key:e,action:t})};function K(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function q(e){return e===null||e===``||Array.isArray(e)&&!e.length}function He(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function J(e){try{return JSON.stringify(e),!0}catch{return!1}}function Ue(e,t){return t.find(t=>t.key===e)??null}function We(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Ge(e,t){if(e.type!==`object`||q(t))return null;if(e.multiple){if(!Array.isArray(t))return K(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return K(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!J(n))return K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?K(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?K(e,t,`This field expects an object value`,`Field expects an object value.`):J(t)?null:K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Ke(e,t){if(q(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!He(e)||e===null?!1:r.includes(e))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function qe(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!q(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return K(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return K(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&q(r)?K(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?K(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Je=(0,l.createDomain)(`response`),Ye=(0,u.createFactory)(({client:e})=>{let n=Je.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,l.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Ue(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=We(o,n),l=await qe(s,o,c,a);if(l){r.push(l);return}let u=Ge(o,c);if(u){r.push(u);return}let d=Ke(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,l.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}(0,l.sample)({clock:r,target:a.clearAll}),(0,l.sample)({clock:i,target:a.clear});let y=(0,l.attach)({source:e.experiences.listStore,effect:(e,t)=>{let n=e.find(e=>e.id===t);if(!n)return;let{steps:r}=n.treeStore.getState(),a=r.flatMap(e=>e.fieldKeys);for(let e of a)i(e)}});function b(e){y(e)}return{register:o,clearAll:r,clear:i,clearByExperience:b,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Xe(e){return(0,u.invoke)(Ye,e)}var Ze=(0,l.createDomain)(`condition`),Qe=(0,u.createFactory)(()=>{let e=Ze.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function $e(){return(0,u.invoke)(Qe)}function et(){if(r.i()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}function tt(){if(!r.f())return{};let e=new URLSearchParams(window.location.search),t={},n=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&n.add(t);for(let r of n){let n=r.replace(`picked-`,``);t[n]=e.getAll(r)}let i=o.t(`s`);if(n.size>0)o.r.set(i,t);else{let e=o.r.get(i);if(e)return e.json()||{}}return t}var Y=o.t(`session`,`global`);function nt(){return r.r()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function rt(){if(!r.s())return null;let e=o.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var it=(0,u.createFactory)(()=>{let e=rt(),t={id:e?.id??nt()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}});return(0,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function at(){return(0,u.invoke)(it,void 0)}function X(){if(r.f())return globalThis.window.pickedConfig}function ot(){if(r.f())return X()?.projectId}function Z(){if(!r.i())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function st(e){if(e.projectId)return e.projectId;let t=ot();if(t)return t;let n=Z();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
2
2
|
(1) createClient({ projectId }) options;
|
|
3
3
|
(2) window.pickedConfig = { projectId };
|
|
4
4
|
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function Q(e){return e==null||e===``||Number.isNaN(e)}var ct={default:(e,t)=>Q(e)?String(t??``):String(e),append:(e,t)=>t&&!Q(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!Q(e)?`${t} ${e}`:e,upper:e=>typeof e==`string`?e.toUpperCase():e,lower:e=>typeof e==`string`?e.toLowerCase():e,capitalize:e=>typeof e==`string`?e.charAt(0).toUpperCase()+e.slice(1):e,list:e=>{if(!e||typeof e!=`object`)return e;let t=new Intl.ListFormat(`en`,{style:`long`,type:`conjunction`});if(Array.isArray(e))return t.format(e.map(String));if(e instanceof Map){let n=Array.from(e.entries()).map(([e,t])=>`${e}: ${t}`);return t.format(n)}return e instanceof Set?t.format(Array.from(e).map(String)):e}};function lt(e){return typeof e==`object`&&!!e}function ut(e,t){let n=t;for(let t of e.split(`.`))if(lt(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function dt(e,t){let n=e.split(`|`).map(e=>e.trim()),r=ut(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=ct[i];o&&(r=o(r,a))}return Q(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function ft(e,t){let n=``,r=0;for(;r<e.length;)if(e[r]===`{`&&e[r+1]===`{`){r+=2;let i=``;for(;r<e.length;){if(e[r]===`}`&&e[r+1]===`}`){r+=2;break}i+=e[r++]}n+=dt(i.trim(),t)}else n+=e[r++];return n}var $=class{static logger=n.t;options;dataSource=null;contentLoader;plugins={};eventBus=(0,l.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=at();searchParams=tt();history=we();components=k({client:this});experienceInstances=a.n({client:this});experiences=S({client:this});frameworks=re({client:this});predicates=_e({client:this});features=be({client:this});conditions=$e();fields=ke();responses=Xe({client:this});steps=Me();contents=Ie();actions=Be({client:this});conditionResults=a.r();stateSnapshotStore=oe({client:this});evaluateRuleLogicFx=de({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=me({client:this});renderStringFx=(0,l.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return ft(t,{...n,responses:r})}});constructor(e){this.events=Ee(this.eventBus),this.projectId=st(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||et(),this.dashboardUrl=e.dashboardUrl??`https://dashboard.picked.app`,this.documentationSiteUrl=e.documentationSiteUrl??`https://docs.picked.app`,this.start=this.lifecycle.start,this.readyStore=this.lifecycle.readyStore,this.preconditionPassedStore=this.lifecycle.preconditionPassedStore,this.conditionPassedStore=this.lifecycle.conditionPassedStore,this.lifecycleStageStore=this.lifecycle.lifecycleStageStore,this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupComponents(),this.lifecycle.setPrecondition(e.precondition),this.lifecycle.setCondition(e.condition),this.eventBus({type:`load`,version:s.r()}),this.maybeStartPreviewBridge()}maybeStartPreviewBridge(){!r.f()||!r.t()||this.searchParams[`preview-token`]?.[0]&&Promise.resolve().then(()=>require("../preview-bridge-CpX1BkSA.cjs")).then(e=>e.initPreviewBridge()).catch(()=>void 0)}registerFramework=e=>{ie(e,this.frameworks)};registerComponent=(e,t)=>{A(e,t,this.components)};registerPlugin=e=>{w(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{xe(e,t,this.features)};registerPredicate=(e,t)=>{ve(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Ne(e,this.steps)};registerContent=e=>{Le(e,this.contents)};registerAction=(e,t)=>{Ve(e,t,this.actions)};registerExperience=e=>{e.component&&A(`experience:${e.id}`,e.component,this.components),this.experiences.register(e)};launchExperienceById=async(e,t)=>{this.experiences.launch({id:e,options:t})};launchExperienceByKey=async(e,t)=>{this.experiences.launch({key:e,options:t})};openExperienceById=async e=>{this.experiences.open({id:e})};openExperienceByKey=async e=>{this.experiences.open({key:e})};setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(e=>{this.registerPlugin(e)});return}let t=typeof e==`function`?e():e;if(Array.isArray(t)){t.forEach(e=>this.registerPlugin(e));return}this.registerPlugin(t)})}setupFeatures(){let e=this.options.features;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerFeature(e,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(e=>{try{let[t,n]=e.split(`:`);if(!t||!n)return;let r=n;r===`true`&&(r=!0),r===`false`&&(r=!1),this.registerFeature(t,{key:`${r}`,name:t,decide:()=>r,storage:`session`})}catch{}})}setupPredicates(){let e=this.options.predicates;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerPredicate(e,t)})}setupActions(){let e=this.options.actions;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerAction(e,t)})}setupComponents(){let e=this.options.components;e&&Object.entries(e).forEach(([e,t])=>{this.registerComponent(e,t)})}getPluginConfig=e=>this.plugins[e]??{}};function pt(e){return{$$type:`lazy-component`,load:e}}function mt(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}var ht=e=>{let t=new $(e);return r.m(t),t};exports.Picked=$,exports.createClient=ht,exports.createPluginEffect=C,exports.createStorageKey=o.t,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=X,exports.isInsideIframe=r.t,exports.isLazyLoader=mt,exports.isPickedRoot=i.o,exports.lazyComponent=pt,exports.localStore=o.n,exports.sessionStore=o.r,exports.subscribe=o.i,exports.supportsCookies=r.n,exports.supportsCryptoRandomUUID=r.r,exports.supportsDocument=r.i,exports.supportsHistory=r.a,exports.supportsIntersectionObserver=r.o,exports.supportsLocalStorage=r.s,exports.supportsLocation=r.c,exports.supportsSessionStorage=r.l,exports.supportsShadowRoot=r.u,exports.supportsWebComponents=r.d,exports.supportsWindow=r.f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../api-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../api-U2LgcKqF.cjs"),t=require("../../../plugin-CWvFEvt5.cjs");exports.createClientHeaders=e.i,exports.dynamicExperiencesPlugin=t.t,exports.fetchExperienceContent=t.n,exports.fetchProject=t.r;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-BWL-yghq.cjs"),t=require("../../plugin-CWvFEvt5.cjs");let n=require("effector");var r=1e4;function i(e){if(e?.location!==void 0)return{location:e.location}}function a(t,n){return t.nodes.filter(e.u).some(e=>n.get(e.stepId)===!0)}async function o(n,o){let{projectConfig:s}=o,c=n.session.store.getState().id;n.conditionResults.reset(),t.i(n,s,{isPreview:!1,sessionId:c});let l=i(o.attributes),u=o.timeoutMs??r,d=new Map(s.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),f=[];for(let t of s.experiences)await e.o(n,{condition:t.condition},{context:l})&&f.push(t);let p=new Map;for(let e of f){if(!a(e,d))continue;let r=o.getContent?await o.getContent({id:e.id,key:e.key},{previewToken:o.previewToken}):await t.n(n.apiUrl,n.projectId,e.id,{previewToken:o.previewToken,signal:AbortSignal.timeout(u)});if(r)for(let e of r.content)p.set(e.id,e)}return{versionId:s.versionId,projectConfig:s,content:Array.from(p.values()),conditionResults:n.conditionResults.store.getState()}}function s(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:t=>e(t),reject:e=>t(e)}}function c(t,r){let{promise:i,resolve:a}=s(),o=(0,n.createEvent)(),c=(0,n.createEvent)(),l=(0,n.createEvent)(),u=(0,n.createEvent)(),d=(0,n.createEvent)(),f=t.experiences.listStore.map(n=>n.map(n=>e.t({client:t,experience:n}))),p=(0,n.createStore)({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=(0,n.createEffect)(async e=>{let r=(0,n.attach)({source:e.experience.componentStore,effect:async(n,r)=>{let i=e.availableRenderers[r];return n&&i?.isValidComponent(n.component)?{rendered:await i.render(n.component,t,e.experience),rendererIndex:r}:null}}),i=e.startRendererIndex??0;for(let t=i;t<e.availableRenderers.length;t++){let e=await r(t);if(e)return e}return null}),h=(0,n.createEffect)(async({experience:e,availableRenderers:t,startRendererIndex:n=0})=>e?m({experience:e,availableRenderers:t,startRendererIndex:n}):null);return p.on(l,(e,t)=>({...e,renderedExperiences:[...e.renderedExperiences,t],currentExperienceIndex:e.currentExperienceIndex+1})).on(d,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(u,e=>({...e,isComplete:!0})).reset(o),(0,n.sample)({clock:o,target:c}),(0,n.sample)({clock:c,source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex<e.length&&!t.isComplete,fn:({experiences:e,state:t})=>({experience:e[t.currentExperienceIndex],availableRenderers:r,startRendererIndex:0}),target:h}),(0,n.sample)({clock:h.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),(0,n.sample)({clock:l,target:c}),(0,n.sample)({clock:h.doneData,filter:e=>e===null,target:d}),(0,n.sample)({clock:d,target:c}),(0,n.sample)({clock:[c,d,l],source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex>=e.length,target:u}),(0,n.sample)({clock:u,target:(0,n.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}})}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=t.i,exports.render=c,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=o;
|
package/dist/docs/actions.mdx
CHANGED
|
@@ -45,11 +45,16 @@ const picked = createClient({
|
|
|
45
45
|
'notify': (params) => {
|
|
46
46
|
sendNotification(params)
|
|
47
47
|
},
|
|
48
|
+
'check-eligibility': async () => {
|
|
49
|
+
const response = await fetch('/api/eligibility')
|
|
50
|
+
// Throw only when the request itself fails — that takes the failure branch.
|
|
51
|
+
if (!response.ok) throw new Error('Eligibility request failed')
|
|
52
|
+
},
|
|
48
53
|
},
|
|
49
54
|
})
|
|
50
55
|
```
|
|
51
56
|
|
|
52
|
-
Each action is a function that receives optional parameters and
|
|
57
|
+
Each action is a function that receives optional parameters and usually runs a side effect. When the flow reaches an action node, the SDK calls the matching function and branches on whether it succeeds or throws — see [Success and failure branching](#success-and-failure-branching).
|
|
53
58
|
|
|
54
59
|
See [SDK Actions](/sdk/actions) for more details.
|
|
55
60
|
|
|
@@ -57,7 +62,16 @@ See [SDK Actions](/sdk/actions) for more details.
|
|
|
57
62
|
|
|
58
63
|
In the flow builder, drag an action from the entity browser onto the canvas. Connect it to the point in the flow where you want it to trigger.
|
|
59
64
|
|
|
60
|
-
Actions execute when the flow reaches their node. They don't interrupt the visitor's experience — the flow continues to the next connected node.
|
|
65
|
+
Actions execute when the flow reaches their node. They don't interrupt the visitor's experience — by default the flow continues to the next connected node.
|
|
66
|
+
|
|
67
|
+
### Success and failure branching
|
|
68
|
+
|
|
69
|
+
An action node can have two outgoing branches: **success** and **failure**. The SDK chooses the branch from the action's outcome:
|
|
70
|
+
|
|
71
|
+
- **Failure** — the action throws (or its promise rejects). The flow follows the failure branch.
|
|
72
|
+
- **Success** — the action resolves to any value: nothing, `true`, `false`, or a string. A returned `false` is a valid response, not a failure. The flow follows the success branch.
|
|
73
|
+
|
|
74
|
+
Reserve the failure branch for genuine errors — throw on the failure case, for example `if (!response.ok) throw new Error(...)`. A valid negative result is _not_ a failure: an API that returns `200` with, say, `{ serviced: false }` should record that value as a response and branch on it with a condition rather than throw. If an action node has only a single plain connection (no explicit success or failure branch), the flow continues through it on either outcome.
|
|
61
75
|
|
|
62
76
|
## Reuse actions
|
|
63
77
|
|
package/dist/docs/sdk/actions.md
CHANGED
|
@@ -26,11 +26,41 @@ const picked = createClient({
|
|
|
26
26
|
})
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Each action is a function that receives optional parameters and
|
|
29
|
+
Each action is a function that receives optional parameters and usually runs a side effect. When the flow reaches an action node, the SDK calls the matching function and branches on whether it succeeds or throws (see [Success and failure branching](#success-and-failure-branching)).
|
|
30
30
|
|
|
31
31
|
## How actions work
|
|
32
32
|
|
|
33
33
|
1. **Registration**: Actions are registered to the Picked client during initialization
|
|
34
34
|
2. **Flow traversal**: When the SDK traverses the experience flow and reaches an action node, it looks up the action by its key
|
|
35
|
-
3. **Execution**: The matching function is called
|
|
36
|
-
4. **Non-blocking**: Actions don't interrupt the visitor's experience. The
|
|
35
|
+
3. **Execution**: The matching function is called and awaited. The SDK then continues to the next node based on the action's outcome
|
|
36
|
+
4. **Non-blocking**: Actions don't interrupt the visitor's experience. The current step stays on screen while an async action runs
|
|
37
|
+
|
|
38
|
+
## Success and failure branching
|
|
39
|
+
|
|
40
|
+
An action node can have separate **success** and **failure** branches. The SDK selects the branch from the action's outcome:
|
|
41
|
+
|
|
42
|
+
- **Failure** — the action throws (or its promise rejects). The flow follows the failure (`onFail`) branch.
|
|
43
|
+
- **Success** — the action resolves to any value (`void`, `true`, `false`, or a string). A resolved `false` is a valid response, not a failure. The flow follows the success (`onSuccess`) branch.
|
|
44
|
+
|
|
45
|
+
Reserve the failure branch for genuine errors — throw on the failure case, since a returned value never routes to `onFail`:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
'check-eligibility': async () => {
|
|
49
|
+
const response = await fetch('/api/eligibility')
|
|
50
|
+
// Throw only when the request itself fails — that takes the failure branch.
|
|
51
|
+
if (!response.ok) throw new Error('Eligibility request failed')
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
A valid negative result is not a failure. An API that returns `200` with a "no" (for example `{ serviced: false }`) should record that value as a response and branch on it with a condition, rather than throw:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
'check-serviced-area': async ({ client, responses }) => {
|
|
59
|
+
const postcode = responses.find((r) => r.fieldKey === 'postcode')?.value
|
|
60
|
+
const { serviced } = await fetch(`/api/serviced?postcode=${postcode}`).then((r) => r.json())
|
|
61
|
+
// Commit the outcome as a response; a downstream condition routes the flow.
|
|
62
|
+
client.responses.register('is-serviced', serviced)
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If an action node has only a single plain connection (no explicit success or failure branch), the flow continues through it on either outcome.
|
package/dist/esm/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import { n as t, t as n } from "../rules-logic-HesIUCu6.js";
|
|
|
3
3
|
import { t as r } from "../logger-DMN6TxJJ.js";
|
|
4
4
|
import { a as i, c as a, d as o, f as s, i as c, l, m as u, n as d, o as f, r as p, s as m, t as h, u as g } from "../supports-CO9bJGNl.js";
|
|
5
5
|
import { a as _, c as v, i as y, o as b, r as ee, t as x } from "../dom-CZyRgp2P.js";
|
|
6
|
-
import { l as S, n as C, r as w, u as T } from "../experience-instance-
|
|
6
|
+
import { l as S, n as C, r as w, u as T } from "../experience-instance-QSrdjfn6.js";
|
|
7
7
|
import { i as E, n as D, r as O, t as k } from "../storage-1MW3-_As.js";
|
|
8
|
-
import { n as te, r as ne } from "../api-
|
|
8
|
+
import { n as te, r as ne } from "../api-CsddE4DI.js";
|
|
9
9
|
import { t as re } from "../id-Bo4RBeOs.js";
|
|
10
10
|
import { attach as A, combine as j, createApi as M, createDomain as N, createEffect as P, createEvent as F, createStore as I, sample as L } from "effector";
|
|
11
11
|
import { createFactory as R, invoke as z } from "@withease/factories";
|
|
@@ -1033,29 +1033,32 @@ function Xe(e) {
|
|
|
1033
1033
|
return [];
|
|
1034
1034
|
}
|
|
1035
1035
|
var Ze = R(() => {
|
|
1036
|
-
let e = Y.store([]), t = Y.event(), n = Y.event(), r = Y.event(), i = Y.event(), a = Y.event(), o = Y.event(), s = Y.event();
|
|
1037
|
-
e.on(t, (e, t) => [...e, X(t.instanceId, t.experienceId, t.node)]), e.on(n, (e, t) => {
|
|
1038
|
-
let n =
|
|
1039
|
-
for (let
|
|
1040
|
-
|
|
1036
|
+
let e = Y.store([]), t = Y.event(), n = Y.event(), r = Y.event(), i = Y.event(), a = Y.event(), o = Y.event(), s = Y.event(), c = Y.event();
|
|
1037
|
+
e.on(t, (e, t) => [...e, X(t.instanceId ?? t.experienceId, t.experienceId, t.node)]), e.on(n, (e, t) => {
|
|
1038
|
+
let n = t.instanceId ?? t.experienceId, r = X(n, t.experienceId, t.node), i = -1;
|
|
1039
|
+
for (let t = e.length - 1; t >= 0; t--) if (e[t]?.instanceId === n) {
|
|
1040
|
+
i = t;
|
|
1041
1041
|
break;
|
|
1042
1042
|
}
|
|
1043
|
-
return
|
|
1044
|
-
...e.slice(0,
|
|
1045
|
-
|
|
1046
|
-
...e.slice(
|
|
1043
|
+
return i === -1 ? [...e, r] : [
|
|
1044
|
+
...e.slice(0, i),
|
|
1045
|
+
r,
|
|
1046
|
+
...e.slice(i + 1)
|
|
1047
1047
|
];
|
|
1048
|
-
}), e.on(r, (e,
|
|
1049
|
-
let n = 0, r = -1;
|
|
1050
|
-
for (let
|
|
1051
|
-
let a = e[
|
|
1052
|
-
if (!(a
|
|
1053
|
-
|
|
1048
|
+
}), e.on(r, (e, t) => {
|
|
1049
|
+
let n = (e) => (t.instanceId === void 0 || e.instanceId === t.instanceId) && (t.experienceId === void 0 || e.experienceId === t.experienceId), r = 0, i = -1;
|
|
1050
|
+
for (let t = e.length - 1; t >= 0; t--) {
|
|
1051
|
+
let a = e[t];
|
|
1052
|
+
if (!(!a || !n(a) || !T(a.node)) && ++r === 2) {
|
|
1053
|
+
i = t;
|
|
1054
1054
|
break;
|
|
1055
1055
|
}
|
|
1056
1056
|
}
|
|
1057
|
-
return
|
|
1058
|
-
}), e.on(i, (e, {
|
|
1057
|
+
return i === -1 ? e : e.filter((e, t) => !n(e) || t <= i);
|
|
1058
|
+
}), e.on(i, (e, { entries: t }) => t.map((e) => ({
|
|
1059
|
+
...e,
|
|
1060
|
+
instanceId: e.instanceId ?? e.experienceId
|
|
1061
|
+
}))), e.on(a, (e, { snapshots: t }) => {
|
|
1059
1062
|
let n = new Set(e.map((e) => e.experienceId)), r = [];
|
|
1060
1063
|
for (let e of Object.keys(t)) {
|
|
1061
1064
|
if (n.has(e)) continue;
|
|
@@ -1063,11 +1066,11 @@ var Ze = R(() => {
|
|
|
1063
1066
|
i && r.push(...i);
|
|
1064
1067
|
}
|
|
1065
1068
|
return r.length === 0 ? e : [...e, ...r];
|
|
1066
|
-
}), e.on(
|
|
1069
|
+
}), e.on(c, (e, t) => [...e, ...t]), e.on(s, (e, { instanceId: t }) => {
|
|
1067
1070
|
let n = e.filter((e) => e.instanceId !== t);
|
|
1068
1071
|
return n.length === e.length ? e : n;
|
|
1069
1072
|
});
|
|
1070
|
-
let
|
|
1073
|
+
let l = e.map((e) => {
|
|
1071
1074
|
let t = /* @__PURE__ */ new Map();
|
|
1072
1075
|
for (let n of e) t.set(n.experienceId, n.instanceId);
|
|
1073
1076
|
let n = {};
|
|
@@ -1079,23 +1082,24 @@ var Ze = R(() => {
|
|
|
1079
1082
|
return n;
|
|
1080
1083
|
});
|
|
1081
1084
|
return L({
|
|
1082
|
-
clock:
|
|
1083
|
-
source:
|
|
1085
|
+
clock: o,
|
|
1086
|
+
source: l,
|
|
1084
1087
|
fn: (e, { instanceId: t, experienceId: n }) => Xe(e[n] ?? []).map((e) => ({
|
|
1085
1088
|
...e,
|
|
1086
1089
|
id: re("history-entry"),
|
|
1087
1090
|
instanceId: t
|
|
1088
1091
|
})),
|
|
1089
|
-
target:
|
|
1092
|
+
target: c
|
|
1090
1093
|
}), {
|
|
1091
1094
|
push: t,
|
|
1092
1095
|
replace: n,
|
|
1093
1096
|
back: r,
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
+
restore: i,
|
|
1098
|
+
restoreSnapshots: a,
|
|
1099
|
+
seedInstanceFromSnapshot: o,
|
|
1100
|
+
clearForInstance: s,
|
|
1097
1101
|
entriesStore: e,
|
|
1098
|
-
snapshotStore:
|
|
1102
|
+
snapshotStore: l
|
|
1099
1103
|
};
|
|
1100
1104
|
});
|
|
1101
1105
|
function Qe() {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as e } from "../../../api-
|
|
2
|
-
import { n as t, r as n, t as r } from "../../../plugin-
|
|
1
|
+
import { i as e } from "../../../api-CsddE4DI.js";
|
|
2
|
+
import { n as t, r as n, t as r } from "../../../plugin-CnCP2N-8.js";
|
|
3
3
|
export { e as createClientHeaders, r as dynamicExperiencesPlugin, t as fetchExperienceContent, n as fetchProject };
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, o as r, s as i, t as a, u as o } from "../../experience-instance-
|
|
2
|
-
import { i as s, n as c } from "../../plugin-
|
|
1
|
+
import { a as e, c as t, i as n, o as r, s as i, t as a, u as o } from "../../experience-instance-QSrdjfn6.js";
|
|
2
|
+
import { i as s, n as c } from "../../plugin-CnCP2N-8.js";
|
|
3
3
|
import { attach as l, createEffect as u, createEvent as d, createStore as f, sample as p } from "effector";
|
|
4
4
|
//#region src/server/serialize.ts
|
|
5
5
|
var m = 1e4;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rules-logic-CGZIYgAI.cjs");require("./logger-CSTvAyyB.cjs");const t=require("./dom-CdxDV3e-.cjs"),n=require("./id-Js-62re-.cjs");let r=require("effector"),i=require("@withease/factories");function a(e){return e.type===`condition`}function o(e){return e.type===`step`}function s(e){return e.type===`experience`}function c(e){return e.type===`origin`}function l(e){return e.type===`action`}var u=`conditions.`,d=(0,r.createDomain)(`condition-results`);function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(e=>p(e));if(f(e)){let t=Object.keys(e).sort((e,t)=>e.localeCompare(t)),n={};for(let r of t)n[r]=p(e[r]);return n}return e}function m(e){return JSON.stringify(p(e))}var h=(0,i.createFactory)(()=>{let e=d.store({}),t=(0,r.createApi)(e,{set(e,t){return e[t.hash]===t.result?e:{...e,[t.hash]:t.result}},seed(e,t){return Object.keys(t).every(n=>e[n]===t[n])?e:{...e,...t}},clear(){return{}}});function n(e){t.set(e)}function i(e){t.seed(e)}function a(){t.clear()}function o(t){return e.getState()[t]}return{store:e,set:n,seed:i,peek:o,reset:a}});function g(){return(0,i.invoke)(h)}async function _(t,n,r){return n==null?!0:typeof n==`boolean`?n:e.n(n)?await e.t(t,n,r)===!0:!0}function v(e){if(typeof e==`string`)return e;if(Array.isArray(e)&&typeof e[0]==`string`)return e[0]}function y(e){if(Array.isArray(e))return e.some(y);if(f(e)){let t=v(e.var);return t!==void 0&&(t===`actions`||t.startsWith(`actions.`))?!0:Object.values(e).some(y)}return!1}function b(e){if(Array.isArray(e))return e.flatMap(b);if(f(e)){let t=v(e.var);return[...t!==void 0&&t.startsWith(u)?[t.slice(11)]:[],...Object.values(e).flatMap(b)]}return[]}function x(e,t,n=new Set){if(y(e))return!0;for(let r of b(e)){if(n.has(r))continue;n.add(r);let e=t[r];if(e!==void 0&&x(e.logic,t,n))return!0}return!1}async function S(e,t,n){let r={};for(let t of e.conditions.listStore.getState())r[t.key]=t;let i=x(t,r),a=m(t);if(!i){let t=e.conditionResults.peek(a);if(t!==void 0)return t}let o=await _(e,t,n?.context);return i||e.conditionResults.set({hash:a,result:o}),o}async function C(e,t,n){let r=n?.context,i=[n?.precondition,n?.condition,t.condition];for(let t of i)if(!await S(e,t,{context:r}))return!1;return!0}var w=(e,t,n,r,i=new Set)=>i.has(n.id)?[]:(i.add(n.id),o(n)&&!r?[n]:t.filter(e=>e.sourceNodeId===n.id).flatMap(n=>{let r=e.find(e=>e.id===n.destinationNodeId);return r?w(e,t,r,!1,i):[]})),T=(e,t,n)=>w(e,t,n,!0,new Set),E=(e,t,n,r,i=new Set)=>{if(i.has(n.id))return[-1,-1];i.add(n.id);let a=t.filter(e=>e.sourceNodeId===n.id);if(a.length===0)return[0,0];let o=1/0,s=-1/0;for(let n of a){let r=e.find(e=>e.id===n.destinationNodeId);if(!r)continue;let[a,c]=E(e,t,r,!1,new Set(i));a!==-1&&(o=Math.min(o,a+1),s=Math.max(s,c+1))}return o===1/0?[-1,-1]:[o,s]},ee=(e,t,n)=>E(e,t,n,!0,new Set),D=(e,t,n,r=new Set)=>{if(r.has(n.id))return[-1,-1];if(r.add(n.id),n.type===`origin`)return[0,0];let i=t.filter(e=>e.destinationNodeId===n.id);if(i.length===0)return[-1,-1];let a=1/0,o=-1/0;for(let n of i){let i=e.find(e=>e.id===n.sourceNodeId);if(!i)continue;let[s,c]=D(e,t,i,new Set(r));s!==-1&&(a=Math.min(a,s+1),o=Math.max(o,c+1))}return a===1/0?[-1,-1]:[a,o]},te=(e,t,n)=>D(e,t,n,new Set),O=e=>e.find(e=>e.type===`origin`)||null,k=(e,t,n)=>{if(!e)return O(t);let r=n.find(t=>t.sourceNodeId===e.id);return r&&t.find(e=>e.id===r.destinationNodeId)||null};async function ne(e,t,n,r){let i=e?`true`:`false`,a=r.find(e=>e.sourceHandle===i&&e.sourceNodeId===t);return n.find(e=>e.id===a?.destinationNodeId)}function A(e,t,n,r){let i=r.filter(e=>e.sourceNodeId===t),a=e?`true`:`false`,o=i.find(e=>e.sourceHandle===a)??i.find(e=>e.sourceHandle==null);return n.find(e=>e.id===o?.destinationNodeId)}var j=(0,r.createDomain)(`experience-instance`),M=(0,i.createFactory)(({client:i,experience:u,target:d,options:f})=>{let p=n.t(`exp-instance`);i.history.seedInstanceFromSnapshot({instanceId:p,experienceId:u.id});let m=(0,r.createEvent)(),h=(0,r.createEvent)(),g=(0,r.createEvent)(),_=(0,r.createEvent)(),v=(0,r.createEvent)(),y=(0,r.createEvent)(),b=(0,r.createEvent)(),x=(0,r.createEvent)(),S=(0,r.createEvent)(),C=u.componentStore,w=j.store(`transitioning`),E=i.history.entriesStore.map(e=>e.filter(e=>e.instanceId===p)),D=E.map(e=>e.filter(e=>o(e.node))),M=D.map(e=>e.length>=2),N=E.map(e=>e.at(-1)?.node||null),P=j.store(null);(0,r.sample)({clock:[N,i.steps.listStore],source:{steps:i.steps.listStore,node:N},filter:({node:e})=>e!==null&&o(e),fn:({steps:e,node:t})=>t&&o(t)?e.find(e=>e.id===t.stepId)??null:null,target:P});let F=(0,r.combine)(i.steps.listStore,D,(e,t)=>{let n=t.at(-2);if(!n||!o(n.node))return null;let r=n.node;return e.find(e=>e.id===r.stepId)||null}),re=(0,r.combine)(u.treeStore,N,({nodes:e,edges:t},n)=>n?T(e,t,n):[]),I=(0,r.combine)(u.treeStore,N,({nodes:e,edges:t},n)=>n?te(e,t,n):[-1,-1]),L=(0,r.combine)(u.treeStore,N,({nodes:e,edges:t},n)=>n?ee(e,t,n):[-1,-1]),R=j.store(!1),z=(0,r.createApi)(R,{open:()=>!0,close:()=>!1,toggle:e=>!e,set:(e,t)=>t}),ie=(0,r.createEffect)(()=>{i.history.back({instanceId:p})}),ae=(0,r.attach)({source:u.treeStore,effect:(e,t)=>{let n=e.nodes.find(e=>o(e)&&e.stepId===t);n&&i.history.push({instanceId:p,experienceId:u.id,node:n})}}),oe=(0,r.attach)({source:u.treeStore,effect:(e,t)=>{let n=e.steps.find(e=>e.key===t);if(!n)return;let r=e.nodes.find(e=>o(e)&&e.stepId===n.id);r&&i.history.push({instanceId:p,experienceId:u.id,node:r})}}),B=(0,r.attach)({source:N,effect:e=>{}}),V=(0,r.attach)({source:u.treeStore,effect:async({nodes:e})=>O(e)}),H=(0,r.attach)({source:u.treeStore,effect:async({nodes:e,edges:t},n)=>{if(c(n))return k(n,e,t)}}),U=(0,r.attach)({source:u.treeStore,effect:async({nodes:t,edges:n,conditions:r},o)=>{if(!a(o))return;let s=r.find(e=>e.id===o.conditionId)?.logic;return s?ne(!!await e.t(i,s),o.id,t,n):void 0}}),W=(0,r.attach)({source:{tree:u.treeStore,actions:i.actions.listStore,snapshot:i.stateSnapshotStore},effect:async({tree:e,actions:t,snapshot:n},r)=>{let{nodes:i,edges:a}=e;if(!l(r))return;let o=r.actionKey;if(!o){`${r.id}`;return}let s=t.find(e=>e.key===o)?.action;if(typeof s!=`function`)return`${o}`,A(!1,r.id,i,a)??null;let c=!0;try{`${o}`,await s({...n,args:[]},{experience:Z})}catch{`${o}`,c=!1}let u=A(c,r.id,i,a);if(!u){let e=a.some(e=>e.sourceNodeId===r.id)?`no edge for its outcome`:`no outgoing edge`;return`${r.id}${e}`,null}return`${o}${u.id}`,u}}),G=(0,r.createEffect)(e=>{s(e)&&i.experiences.launch({key:e.experienceKey})}),K=(0,r.attach)({source:[N,u.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),q=(0,r.attach)({source:[N,u.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),J=(0,r.createEffect)(e=>{i.history.push({instanceId:p,experienceId:u.id,node:e})}),Y=(0,r.attach)({source:u.configStore,effect:async({initializeOpenLogic:t})=>f?.initialiseOpen===void 0?e.n(t)?!!await e.t(i,t):t??!1:f.initialiseOpen}),X=(0,r.combine)(C,i.frameworks.listStore,(e,t)=>{if(!e)return null;let n=t.find(t=>t.name===e.component.frameworkName);return n?{component:e,framework:n}:null},{skipVoid:!1}),Z,se=(0,r.attach)({source:X,effect:e=>{if(!e)return;if(!d){`${u.id}`;return}let n=t.n(d);try{e.framework.render(n,e.component.component,i,Z)}catch{}}});Z=Object.freeze({id:p,experienceKey:u.key,experienceId:u.id,experienceName:u.name,configStore:u.configStore,target:d,componentStore:C,componentAndFrameworkStore:X,stateStore:w,isOpenStore:R,open:z.open,close:z.close,toggleOpen:z.toggle,setOpen:z.set,treeStore:u.treeStore,currentNodeStore:N,currentStepStore:P,previousStepStore:F,nextReachableStepNodesStore:re,stepsToOriginStore:I,stepsToLeafStore:L,goToNextStep:h,goToPreviousStep:g,goToStepById:_,goToStepByKey:v,reset:y,stepsHistoryStore:D,isResumableStore:M,restart:b,mountFx:se});let Q=(0,r.createEvent)(),$=(0,r.createEvent)();return(0,r.sample)({clock:N,target:Q}),(0,r.sample)({clock:Q,filter:e=>e===null,target:V}),(0,r.sample)({clock:Q,filter:e=>e!==null,target:$}),(0,r.split)({source:$,match:e=>a(e)?`condition`:o(e)?`step`:s(e)?`launchExperience`:c(e)?`origin`:l(e)?`action`:`other`,cases:{origin:H,condition:U,step:B,launchExperience:G,action:W,__:(0,r.createEvent)()}}),(0,r.sample)({clock:[U.doneData,H.doneData,V.doneData,q.doneData,K.doneData,W.doneData],filter:Boolean,target:J}),(0,r.sample)({clock:h,target:q}),(0,r.sample)({clock:h,source:P,filter:Boolean,target:i.eventBus.prepend(e=>({type:`step_submit`,step:e,experience:Z}))}),(0,r.sample)({clock:q.done,source:P,filter:Boolean,target:i.eventBus.prepend(e=>({type:`step_submit_success`,step:e,experience:Z}))}),(0,r.sample)({clock:q.fail,source:P,filter:Boolean,target:i.eventBus.prepend(e=>({type:`step_submit_error`,step:e,experience:Z}))}),(0,r.sample)({clock:g,target:ie}),(0,r.sample)({clock:_,target:ae}),(0,r.sample)({clock:v,target:oe}),(0,r.sample)({clock:[y,b],fn:()=>({instanceId:p}),target:i.history.clearForInstance}),(0,r.sample)({clock:b,target:(0,r.createEffect)(()=>{i.responses.clearByExperience(u.id)})}),(0,r.sample)({source:(0,r.combine)([U.pending,H.pending,V.pending,q.pending,K.pending,W.pending]),fn:e=>e.some(Boolean)?`transitioning`:`ready`,target:w}),(0,r.sample)({clock:B.doneData,source:P,filter:Boolean,target:i.eventBus.prepend(e=>({type:`step_enter`,step:e,experience:Z}))}),(0,r.sample)({clock:S,target:Y}),(0,r.sample)({source:Y.doneData,fn:Boolean,target:R}),(0,r.sample)({source:N,clock:m,filter:e=>e?c(e):!0,target:K}),(0,r.sample)({source:R,filter:Boolean,target:m}),(0,r.sample)({source:R,filter:Boolean,target:i.eventBus.prepend(()=>({type:`experience_open`,experience:Z}))}),(0,r.sample)({source:R,filter:e=>!e,target:i.eventBus.prepend(()=>({type:`experience_close`,experience:Z}))}),(0,r.sample)({clock:x,target:[S]}),x(),Z});function N(e){return(0,i.invoke)(M,e)}var P=(0,i.createFactory)(({client:e})=>{let n=j.store({}),i=(0,r.createEvent)(),a=(0,r.createEvent)(),o=(0,r.createEvent)(),s=(0,r.createApi)(n,{register(e,t){let n=[...e[t.experienceId]??[]];return n.push(t),{...e,[t.experienceId]:n}},unregister(e,t){let n=t.experienceId,r=e[n]?.filter(e=>e!==t);return{...e,[n]:r??[]}}}),c=(0,r.createEffect)(({experience:t,target:n,options:r})=>N({client:e,experience:t,target:n,options:r})),l=(0,r.createEffect)(e=>{s.register(e)}),u=(0,r.createEffect)(e=>{e.target&&t.s(e.target,()=>{o(e)})}),d=(0,r.createEffect)(e=>{s.unregister(e)}),f=(0,r.createEffect)(async e=>{await e.mountFx()});(0,r.sample)({clock:i,target:c}),(0,r.sample)({clock:o,target:d}),(0,r.sample)({clock:c.doneData,target:[l,u,a]}),(0,r.sample)({clock:c.doneData,target:e.eventBus.prepend(e=>({type:`experience_initialize`,experience:e}))}),(0,r.sample)({clock:a,target:f});function p(e,t,n){i({experience:e,target:t,options:n})}let m=n.map(e=>Object.values(e).flat());function h(e){return m.map(t=>t.filter(t=>t.experienceKey===e),{skipVoid:!1})}function g(e){return n.map(t=>t[e]||[],{skipVoid:!1})}return{spawn:p,getByExperienceKey:h,getByExperienceId:g,listStore:m}});function F(e){return(0,i.invoke)(P,e)}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return o}});
|