@picked/client 0.0.1-dev.1770162676770 → 0.0.1-dev.1770178792114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/server/index.js +1 -1
- package/dist/experience-instance-DXLWzNXG.cjs +1 -0
- package/dist/{experience-instance-CEwLzO0a.js → experience-instance-eADy3oIy.js} +265 -270
- package/dist/types/entities/experience-instance/experience-instance.d.ts +0 -3
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/picked.d.ts +0 -2
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/utils/events.d.ts +8 -0
- package/dist/types/utils/events.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/experience-instance-yl7BWjFA.cjs +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-yl7BWjFA.cjs"),F=require("../logger-BsmHUUw1.cjs"),k=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),v=require("../supports-YvpQZxbh.cjs"),z=f.createDomain("experience"),K=S.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=f.createApi(r,{merge(p,h){return{...p,...h.experience}}}),i=r.map(p=>({name:p.name,decisionLogic:p.condition??p.decide,targetSelectors:p.targets,initializeOpenLogic:e.initializeOpen})),c=t.components.listStore.map(p=>p.find(h=>h.name===`experience:${e.id}`)||p.find(h=>h.name==="experience"),{skipVoid:!1}),o=r.map(p=>({steps:p.steps,nodes:p.nodes,edges:p.edges,conditionals:p.conditionals})),s=r.map(p=>p.fields),d=e.actions??[];return{id:e.id,configStore:i,treeStore:o,fieldsStore:s,componentStore:c,actions:d,merge:n.merge}});function W(t){return S.invoke(K,t)}const H=S.createFactory(({client:t})=>{const e=z.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.id]:s}}});function n(o){const s=e.getState()[o.id];if(s){s.merge({experience:o,strategy:"override"});return}const d=W({client:t,experience:o});r.register(d)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:c,listStore:i}});function G(t){return S.invoke(H,t)}const Y=(t,e)=>{e.register(t)},U=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=I.getTargetElements(r,e.id);n.forEach(({elements:c})=>c.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(c=>{t.experienceInstances.spawn(e,c)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await J(t,e)&&U(t,e)}))},J=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return I.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Q=(t,e,r)=>{const n=e.name,i=e.setup(t);if(i){const c=r[n]??{};r[n]=Object.freeze({...c,...i})}},X=f.createDomain("component"),Z=S.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function ee(t){return S.invoke(Z,t)}const te=S.createFactory(({client:t})=>{const e=X.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Component '${o}' already registered. Registering again will override the previous registration.`);const p=ee({client:t,name:o,component:s});r.register(p)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function re(t){return S.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=f.createDomain("framework"),se=S.createFactory(({client:t})=>{const e=ne.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s.framework}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Framework '${o}' already registered. Registering again will override the previous registration.`),r.register({name:o,framework:s})}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function ie(t){return S.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=k.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=k.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(c),s={"Content-Type":"application/json"},p=document.getElementById("picked_script")?.dataset.verceltoken;p&&(s["x-vercel-protection-bypass"]=p);const b=(await fetch(i,{method:"POST",headers:s,body:o})).ok;return b&&r.set(e),b}catch(e){return F.logger("error",e),!1}};function L(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const le=f.createDomain("predicate"),pe=S.createFactory(({client:t})=>{const e=le.store({}),r=f.createApi(e,{register(s,d){return{...s,[d.name]:{name:d.name,predicate:d.predicate}}}});function n(s,d){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:d}))}const i=e.map(s=>Object.values(s));function c(s){return e.map(d=>d[s]?.predicate,{skipVoid:!1})}function o(s){const d=f.createStore(()=>{},{skipVoid:!1}),p=f.createEffect(async()=>{const h=c(s).getState();if(!h)return;const b=L(t);return(...m)=>h({...b,args:m})});return f.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:p}),f.sample({clock:p.doneData,filter:h=>h!==void 0,target:d}),p(),d}return{register:n,getByName:c,listStore:i,getEvokablePredicate:o}});function ge(t){return S.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),me=S.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(a,u){return{...a,[u.id]:u.feature}}});function i(a,u){e.getState()[a]&&F.logger("warn",`Feature '${a}' already registered. Registering again will override the previous registration.`);const l={id:a,feature:{...u,id:a}};n.register(Object.freeze({id:a,feature:l}))}const c=f.createEffect(async({id:a,key:u,storage:g="local"})=>{const l=k.createStorageKey(`feature:${a}:${u}`,"global"),w=(g==="session"?k.sessionStore:k.localStore).get(l).boolean();return w===null?null:{id:a,key:u,bucket:w,storage:g}}),o=f.createEffect(a=>{if(!a)return null;const u=k.createStorageKey(`feature:${a.id}:${a.key}`,"global");(a.storage==="session"?k.sessionStore:k.localStore).set(u,a.bucket)}),s=new Map,d=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:a,resolvedFeaturesStore:u},{id:g,decide:l,key:y})=>{const w=u.find(R=>R.id===g&&R.key===y);if(w)return w;const E=a[g];if(!E)throw new Error(`Feature with id '${g}' not found`);const j=s.get(`${g}:${y}`);if(j!==void 0){const R=await j;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${g}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});f.sample({clock:n.register,fn:a=>{const{id:u,feature:g}=a;return{id:u,key:g.feature.key,storage:g.feature.storage}},target:c}),f.sample({source:e,clock:d.doneData,fn:(a,u)=>{const{id:g,bucket:l,storage:y}=u,w=a[g]?.feature.key;return w?{key:w,id:g,bucket:l,storage:y}:null},target:o});const p=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:a,resolvedFeaturesStore:u})=>Object.values(a).map(g=>{const l=u.find(y=>y.id===g.id&&y.key===g.feature.key);return l?{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:()=>({id:g.id,bucket:l.bucket}),isResolved:!0}:{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:async()=>await d(g.feature),isResolved:!1}}));f.sample({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:a},{id:u,key:g})=>!a.some(y=>y.id===u&&y.key===g),fn:(a,u)=>u,target:t.eventBus.prepend(a=>({type:"feature_decide",feature:a}))}),f.sample({clock:[c.doneData,d.doneData],source:r,fn:(a,u)=>!u||a.some(l=>l.id===u.id&&l.key===u.key)?a:[...a,u],target:r});function h(a){return p.map(u=>u.find(g=>g.id===a))}function b(a){return e.map(u=>u[a],{skipVoid:!1})}function m(a){const u=f.createStore(async()=>{},{skipVoid:!1}),g=f.createEffect(async()=>{const l=h(a).getState();if(l)return async()=>(await l.getBucket()).bucket});return f.sample({source:r,filter:l=>l.some(y=>y.id===a),target:g}),f.sample({clock:g.doneData,filter:l=>l!==void 0,target:u}),g(),u}return{register:i,getById:h,getByName:b,listStore:p,getEvokableFeature:m}});function ye(t){return S.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},x=f.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),r=x.event(),n=x.event(),i=x.event();t.on(e,(o,s)=>({entries:[...o.entries,$(s.experienceId,s.node)]})),t.on(r,(o,s)=>({entries:[...o.entries.slice(0,-1),$(s.experienceId,s.node)]})),t.on(i,(o,s)=>s);function c(o,s){const d={lastStepIndex:-1,secondLastStepIndex:-1};for(let p=o.length-1;p>=0;p--){const h=o[p],b=h?.node;if(!(!b||!I.isStepNode(b))&&!(s&&h?.experienceId!==s))if(d.lastStepIndex===-1)d.lastStepIndex=p;else{d.secondLastStepIndex=p;break}}return d}return t.on(n,(o,s)=>{const{secondLastStepIndex:d}=c(o.entries,s.experienceId),p=d!==-1?o.entries.slice(0,d+1):o.entries;return{...o,entries:p}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ve(){return S.invoke(Se)}const ke=()=>f.createEvent(),we=f.createDomain("field"),Ie=S.createFactory(()=>{const t=we.store({}),e=f.createApi(t,{register(s,d){return{...s,[d.field.id]:d.field}}});function r(s){e.register({field:s})}function n(s,d){const p=c(s).getState();if(!p)return;const h=Object.assign({},p,{...d});e.register({field:{...h}})}const i=t.map(s=>Object.values(s));function c(s){return t.map(d=>d[s]||null)}function o(s){return t.map(d=>Object.values(d).find(p=>p.name===s)||null)}return{register:r,update:n,getById:c,listStore:i,getByName:o}});function be(){return S.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=f.createDomain("action"),je=S.createFactory(()=>{const t=Ee.store({}),e=f.createApi(t,{register(o,s){return{...o,[s.name]:{name:s.name,action:s.action}}}});function r(o,s){e.register({name:o,action:s})}const n=t.map(o=>Object.values(o));function i(o){return t.map(s=>s[o],{skipVoid:!1})}function c(o){return t.map(s=>{const d=s[o];return d?d.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:c}});function xe(){return S.invoke(je)}const Re=(t,e,r)=>{r.register(t,e)};function O(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}const Ae=f.createDomain("response"),Pe=S.createFactory(({client:t})=>{const e=Ae.store({}),r=f.createEvent(),n=f.createEvent(),i=f.createApi(e,{register(m,a){return{...m,[a.fieldId]:a.response}},registerBatch(m,a){return{...m,...a}},clear(m,a){const{[a]:u,...g}=m;return g},clearAll(){return{}}});function c(m,a){if(typeof m=="string"){if(a===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:a})}else i.registerBatch(m)}async function o(m){const a=[];return await Promise.allSettled(Object.entries(m).map(async([u,g])=>{let l=g;const y=t.fields.getById(u).getState();if(!y){a.push({fieldId:u,userMessage:`Field '${u}' not found`,systemMessage:`No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:l});return}if(y.multiple&&(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(l=[l]),y.validation&&!q.isEmpty(y.validation)&&!O(l)){const w=await I.evaluateRuleLogic(t,y.validation,{$input:l});if(typeof w=="string"){a.push({fieldId:u,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){a.push({fieldId:u,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){a.push({fieldId:u,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){a.push({fieldId:u,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(j=>j.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(j=>w.includes(j))||a.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:a}}async function s(m){const{responsesToCommit:a,validationErrors:u}=await o(m);return u.length?{errors:u}:(i.registerBatch(a),{errors:[]})}const d=e.map(m=>m),p=e.map(m=>Object.keys(m).map(u=>({fieldId:u,value:m[u]})));function h(m){const a=t.fields.getById(m),u=e.map(g=>g[m]||null);return f.combine({f:a,r:u},({f:g,r:l})=>l||(g?.defaultValue?g.defaultValue:null))}function b(m){const a=t.fields.getByName(m);return f.combine({f:a,s:e},({f:u,s:g})=>{const l=u&&g[u.id]||null;return l||(u?.defaultValue?u.defaultValue:null)})}return f.sample({clock:r,target:i.clearAll}),f.sample({clock:n,target:i.clear}),{register:c,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:p,getAllStore:d,getByFieldId:h,getByFieldName:b}});function Be(t){return S.invoke(Pe,t)}const De=()=>"0.0.1-dev.1770162676770";function Ce(){if(v.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!v.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&r.add(i);for(const i of r){const c=i.replace("picked-","");e[c]=t.getAll(i)}const n=k.createStorageKey("s");if(r.size>0)k.sessionStore.set(n,e);else{const i=k.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){if(v.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=k.createStorageKey("session","global"),Ue=()=>{const t=k.localStore.get(ze);let e;t.isSet()&&(e=t.json());const r=i=>t.set({id:i.id,isUser:i.isUser,identifiers:i.identifiers}),n={id:e?.id??Oe(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(i){this.isUser=i,r(this)},setIdentifier(i,c){this.identifiers={...this.identifiers,[i]:c},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([c])=>c!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>v.supportsLocalStorage()?Ue():null;function V(){if(v.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!v.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){if(!v.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function Ne(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const n=Ve();if(n)return n;const i=Me();if(i)return i;throw new Error(`organizationId and projectId are required. You can provide them via one of:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-DXLWzNXG.cjs"),F=require("../logger-BsmHUUw1.cjs"),k=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),v=require("../supports-YvpQZxbh.cjs"),z=f.createDomain("experience"),K=S.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=f.createApi(r,{merge(p,h){return{...p,...h.experience}}}),i=r.map(p=>({name:p.name,decisionLogic:p.condition??p.decide,targetSelectors:p.targets,initializeOpenLogic:e.initializeOpen})),c=t.components.listStore.map(p=>p.find(h=>h.name===`experience:${e.id}`)||p.find(h=>h.name==="experience"),{skipVoid:!1}),o=r.map(p=>({steps:p.steps,nodes:p.nodes,edges:p.edges,conditionals:p.conditionals})),s=r.map(p=>p.fields),d=e.actions??[];return{id:e.id,configStore:i,treeStore:o,fieldsStore:s,componentStore:c,actions:d,merge:n.merge}});function W(t){return S.invoke(K,t)}const H=S.createFactory(({client:t})=>{const e=z.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.id]:s}}});function n(o){const s=e.getState()[o.id];if(s){s.merge({experience:o,strategy:"override"});return}const d=W({client:t,experience:o});r.register(d)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:c,listStore:i}});function G(t){return S.invoke(H,t)}const Y=(t,e)=>{e.register(t)},U=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=I.getTargetElements(r,e.id);n.forEach(({elements:c})=>c.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(c=>{t.experienceInstances.spawn(e,c)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await J(t,e)&&U(t,e)}))},J=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return I.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Q=(t,e,r)=>{const n=e.name,i=e.setup(t);if(i){const c=r[n]??{};r[n]=Object.freeze({...c,...i})}},X=f.createDomain("component"),Z=S.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function ee(t){return S.invoke(Z,t)}const te=S.createFactory(({client:t})=>{const e=X.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Component '${o}' already registered. Registering again will override the previous registration.`);const p=ee({client:t,name:o,component:s});r.register(p)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function re(t){return S.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=f.createDomain("framework"),se=S.createFactory(({client:t})=>{const e=ne.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s.framework}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Framework '${o}' already registered. Registering again will override the previous registration.`),r.register({name:o,framework:s})}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function ie(t){return S.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=k.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=k.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(c),s={"Content-Type":"application/json"},p=document.getElementById("picked_script")?.dataset.verceltoken;p&&(s["x-vercel-protection-bypass"]=p);const b=(await fetch(i,{method:"POST",headers:s,body:o})).ok;return b&&r.set(e),b}catch(e){return F.logger("error",e),!1}};function L(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const le=f.createDomain("predicate"),pe=S.createFactory(({client:t})=>{const e=le.store({}),r=f.createApi(e,{register(s,d){return{...s,[d.name]:{name:d.name,predicate:d.predicate}}}});function n(s,d){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:d}))}const i=e.map(s=>Object.values(s));function c(s){return e.map(d=>d[s]?.predicate,{skipVoid:!1})}function o(s){const d=f.createStore(()=>{},{skipVoid:!1}),p=f.createEffect(async()=>{const h=c(s).getState();if(!h)return;const b=L(t);return(...m)=>h({...b,args:m})});return f.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:p}),f.sample({clock:p.doneData,filter:h=>h!==void 0,target:d}),p(),d}return{register:n,getByName:c,listStore:i,getEvokablePredicate:o}});function ge(t){return S.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),me=S.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(a,u){return{...a,[u.id]:u.feature}}});function i(a,u){e.getState()[a]&&F.logger("warn",`Feature '${a}' already registered. Registering again will override the previous registration.`);const l={id:a,feature:{...u,id:a}};n.register(Object.freeze({id:a,feature:l}))}const c=f.createEffect(async({id:a,key:u,storage:g="local"})=>{const l=k.createStorageKey(`feature:${a}:${u}`,"global"),w=(g==="session"?k.sessionStore:k.localStore).get(l).boolean();return w===null?null:{id:a,key:u,bucket:w,storage:g}}),o=f.createEffect(a=>{if(!a)return null;const u=k.createStorageKey(`feature:${a.id}:${a.key}`,"global");(a.storage==="session"?k.sessionStore:k.localStore).set(u,a.bucket)}),s=new Map,d=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:a,resolvedFeaturesStore:u},{id:g,decide:l,key:y})=>{const w=u.find(R=>R.id===g&&R.key===y);if(w)return w;const E=a[g];if(!E)throw new Error(`Feature with id '${g}' not found`);const j=s.get(`${g}:${y}`);if(j!==void 0){const R=await j;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${g}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});f.sample({clock:n.register,fn:a=>{const{id:u,feature:g}=a;return{id:u,key:g.feature.key,storage:g.feature.storage}},target:c}),f.sample({source:e,clock:d.doneData,fn:(a,u)=>{const{id:g,bucket:l,storage:y}=u,w=a[g]?.feature.key;return w?{key:w,id:g,bucket:l,storage:y}:null},target:o});const p=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:a,resolvedFeaturesStore:u})=>Object.values(a).map(g=>{const l=u.find(y=>y.id===g.id&&y.key===g.feature.key);return l?{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:()=>({id:g.id,bucket:l.bucket}),isResolved:!0}:{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:async()=>await d(g.feature),isResolved:!1}}));f.sample({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:a},{id:u,key:g})=>!a.some(y=>y.id===u&&y.key===g),fn:(a,u)=>u,target:t.eventBus.prepend(a=>({type:"feature_decide",feature:a}))}),f.sample({clock:[c.doneData,d.doneData],source:r,fn:(a,u)=>!u||a.some(l=>l.id===u.id&&l.key===u.key)?a:[...a,u],target:r});function h(a){return p.map(u=>u.find(g=>g.id===a))}function b(a){return e.map(u=>u[a],{skipVoid:!1})}function m(a){const u=f.createStore(async()=>{},{skipVoid:!1}),g=f.createEffect(async()=>{const l=h(a).getState();if(l)return async()=>(await l.getBucket()).bucket});return f.sample({source:r,filter:l=>l.some(y=>y.id===a),target:g}),f.sample({clock:g.doneData,filter:l=>l!==void 0,target:u}),g(),u}return{register:i,getById:h,getByName:b,listStore:p,getEvokableFeature:m}});function ye(t){return S.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},x=f.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),r=x.event(),n=x.event(),i=x.event();t.on(e,(o,s)=>({entries:[...o.entries,$(s.experienceId,s.node)]})),t.on(r,(o,s)=>({entries:[...o.entries.slice(0,-1),$(s.experienceId,s.node)]})),t.on(i,(o,s)=>s);function c(o,s){const d={lastStepIndex:-1,secondLastStepIndex:-1};for(let p=o.length-1;p>=0;p--){const h=o[p],b=h?.node;if(!(!b||!I.isStepNode(b))&&!(s&&h?.experienceId!==s))if(d.lastStepIndex===-1)d.lastStepIndex=p;else{d.secondLastStepIndex=p;break}}return d}return t.on(n,(o,s)=>{const{secondLastStepIndex:d}=c(o.entries,s.experienceId),p=d!==-1?o.entries.slice(0,d+1):o.entries;return{...o,entries:p}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ve(){return S.invoke(Se)}const ke=()=>f.createEvent(),we=f.createDomain("field"),Ie=S.createFactory(()=>{const t=we.store({}),e=f.createApi(t,{register(s,d){return{...s,[d.field.id]:d.field}}});function r(s){e.register({field:s})}function n(s,d){const p=c(s).getState();if(!p)return;const h=Object.assign({},p,{...d});e.register({field:{...h}})}const i=t.map(s=>Object.values(s));function c(s){return t.map(d=>d[s]||null)}function o(s){return t.map(d=>Object.values(d).find(p=>p.name===s)||null)}return{register:r,update:n,getById:c,listStore:i,getByName:o}});function be(){return S.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=f.createDomain("action"),je=S.createFactory(()=>{const t=Ee.store({}),e=f.createApi(t,{register(o,s){return{...o,[s.name]:{name:s.name,action:s.action}}}});function r(o,s){e.register({name:o,action:s})}const n=t.map(o=>Object.values(o));function i(o){return t.map(s=>s[o],{skipVoid:!1})}function c(o){return t.map(s=>{const d=s[o];return d?d.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:c}});function xe(){return S.invoke(je)}const Re=(t,e,r)=>{r.register(t,e)};function O(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}const Ae=f.createDomain("response"),Pe=S.createFactory(({client:t})=>{const e=Ae.store({}),r=f.createEvent(),n=f.createEvent(),i=f.createApi(e,{register(m,a){return{...m,[a.fieldId]:a.response}},registerBatch(m,a){return{...m,...a}},clear(m,a){const{[a]:u,...g}=m;return g},clearAll(){return{}}});function c(m,a){if(typeof m=="string"){if(a===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:a})}else i.registerBatch(m)}async function o(m){const a=[];return await Promise.allSettled(Object.entries(m).map(async([u,g])=>{let l=g;const y=t.fields.getById(u).getState();if(!y){a.push({fieldId:u,userMessage:`Field '${u}' not found`,systemMessage:`No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:l});return}if(y.multiple&&(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(l=[l]),y.validation&&!q.isEmpty(y.validation)&&!O(l)){const w=await I.evaluateRuleLogic(t,y.validation,{$input:l});if(typeof w=="string"){a.push({fieldId:u,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){a.push({fieldId:u,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){a.push({fieldId:u,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){a.push({fieldId:u,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(j=>j.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(j=>w.includes(j))||a.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:a}}async function s(m){const{responsesToCommit:a,validationErrors:u}=await o(m);return u.length?{errors:u}:(i.registerBatch(a),{errors:[]})}const d=e.map(m=>m),p=e.map(m=>Object.keys(m).map(u=>({fieldId:u,value:m[u]})));function h(m){const a=t.fields.getById(m),u=e.map(g=>g[m]||null);return f.combine({f:a,r:u},({f:g,r:l})=>l||(g?.defaultValue?g.defaultValue:null))}function b(m){const a=t.fields.getByName(m);return f.combine({f:a,s:e},({f:u,s:g})=>{const l=u&&g[u.id]||null;return l||(u?.defaultValue?u.defaultValue:null)})}return f.sample({clock:r,target:i.clearAll}),f.sample({clock:n,target:i.clear}),{register:c,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:p,getAllStore:d,getByFieldId:h,getByFieldName:b}});function Be(t){return S.invoke(Pe,t)}const De=()=>"0.0.1-dev.1770178792114";function Ce(){if(v.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!v.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&r.add(i);for(const i of r){const c=i.replace("picked-","");e[c]=t.getAll(i)}const n=k.createStorageKey("s");if(r.size>0)k.sessionStore.set(n,e);else{const i=k.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){if(v.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=k.createStorageKey("session","global"),Ue=()=>{const t=k.localStore.get(ze);let e;t.isSet()&&(e=t.json());const r=i=>t.set({id:i.id,isUser:i.isUser,identifiers:i.identifiers}),n={id:e?.id??Oe(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(i){this.isUser=i,r(this)},setIdentifier(i,c){this.identifiers={...this.identifiers,[i]:c},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([c])=>c!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>v.supportsLocalStorage()?Ue():null;function V(){if(v.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!v.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){if(!v.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function Ne(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const n=Ve();if(n)return n;const i=Me();if(i)return i;throw new Error(`organizationId and projectId are required. You can provide them via one of:
|
|
2
2
|
(1) createClient({ organizationId, projectId }) options;
|
|
3
3
|
(2) window.pickedConfig = { organizationId, projectId };
|
|
4
4
|
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`)}function A(t){return t==null||t===""||Number.isNaN(t)}const Te={default:(t,e)=>A(t)?String(e??""):String(t),append:(t,e)=>e&&!A(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!A(t)?`${e} ${t}`:t,upper:t=>typeof t=="string"?t.toUpperCase():t,lower:t=>typeof t=="string"?t.toLowerCase():t,capitalize:t=>typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):t,list:t=>{if(!t||typeof t!="object")return t;const e=new Intl.ListFormat("en",{style:"long",type:"conjunction"});if(Array.isArray(t))return e.format(t.map(String));if(t instanceof Map){const r=Array.from(t.entries()).map(([n,i])=>`${n}: ${i}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function _e(t){return typeof t=="object"&&t!==null}function qe(t,e){let r=e;for(const n of t.split("."))if(_e(r)&&n in r)r=r[n];else return;return typeof r=="function"?r():r}function Ke(t,e){const r=t.split("|").map(c=>c.trim()),n=r.shift()??"";let i=qe(n,e);for(const c of r){const[o,...s]=c.split(":"),d=o?.trim()??"",p=s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),h=Te[d];h&&(i=h(i,p))}return A(i)?"":typeof i=="object"?JSON.stringify(i):String(i)}function We(t,e){let r="",n=0;for(;n<t.length;)if(t[n]==="{"&&t[n+1]==="{"){n+=2;let i="";for(;n<t.length;){if(t[n]==="}"&&t[n+1]==="}"){n+=2;break}i+=t[n++]}r+=Ke(i.trim(),e)}else r+=t[n++];return r}class M{static logger=F.logger;options;isReady=!1;project;plugins={};eventBus=ke();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=$e();history=ve();components=re({client:this});experienceInstances=I.createExperienceInstanceIndex({client:this});experiences=G({client:this});frameworks=ie({client:this});predicates=ge({client:this});features=ye({client:this});responses=Be({client:this});fields=be();actions=xe();constructor(e){F.logger("info","Picked client initializing.");const{organizationId:r,projectId:n}=Ne(e);this.organizationId=r,this.projectId=n,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ce(),this.session=Le(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:De()}),F.logger("info","Picked client initialized.")}start(){de(this),(async()=>{if(!v.supportsDocument())return;let r;typeof this.precondition>"u"?r=!0:typeof this.precondition=="boolean"?r=this.precondition:r=await I.evaluateRuleLogic(this,this.precondition)===!0;let n;r&&(this.condition===void 0?n=!0:typeof this.condition=="boolean"?n=this.condition:n=await I.evaluateRuleLogic(this,this.condition)===!0);const i=r&&n===!0;if(typeof n=="boolean"&&this.session){const c=n;this.session.setIsUser(c),this.eventBus({type:"user_decide",value:c})}this.eventBus({type:"initialize"}),document.body&&i&&B(this),await I.domInteractive(),i&&B(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session})})()}registerFramework(e){oe(e,this.frameworks)}registerComponent(e,r){D(e,r,this.components)}registerPlugin(e){Q(this,e,this.plugins)}registerFeature(e,r){he(e,r,this.features)}registerPredicate(e,r){fe(e,r,this.predicates)}registerField(e){Fe(e,this.fields)}registerAction(e,r){Re(e,r,this.actions)}registerExperience(e){e.component&&D(`experience:${e.id}`,e.component,this.components),Y(e,this.experiences)}getStateSnapshot(){return L(this)}async launchExperienceById(e){const r=this.experiences.getById(e).getState();if(!r){F.logger("warn",`Experience with id '${e}' not found.`);return}U(this,r)}setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(n=>{this.registerPlugin(n)});return}const r=typeof e=="function"?e():e;if(Array.isArray(r)){r.forEach(n=>this.registerPlugin(n));return}this.registerPlugin(r)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,n])=>{const i=typeof n=="function"?n():n;this.registerFeature(r,i)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[n,i]=r.split(":");if(!n||!i)return;let c=i;c==="true"&&(c=!0),c==="false"&&(c=!1),this.registerFeature(n,{key:`${c}`,name:n,decide:()=>c,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Predicate "${r}" is not a function.`);return}this.registerPredicate(r,n)})}setupActions(){const e=this.options.actions;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,n)})}getPluginConfig(e){return this.plugins[e]??{}}renderString=(e,r)=>{const n=this.responses.listStore.getState().reduce((i,c)=>(i[c.fieldId]=c.value,i),{});return We(e,{...r,responses:n})}}function N(t){return t.options?.some(e=>"condition"in e)??!1}function He(t){return t.some(e=>e.condition||N(e))}async function Ge(t,e){return e.length===0||!He(e)?e:(await Promise.all(e.map(async n=>{if(!(n.condition?await I.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!N(n))return n;const o=(await Promise.all(n.options.map(async d=>d.condition?await I.evaluateRuleLogic(t,d.condition)?d:null:d))).filter(d=>d!==null);return o.length===n.options.length?n:o.length===0?null:{...n,options:o}}))).filter(n=>n!==null)}const Ye=t=>{const e=new M(t);return v.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=k.createStorageKey;exports.localStore=k.localStore;exports.sessionStore=k.sessionStore;exports.subscribe=k.subscribe;exports.supportsCookies=v.supportsCookies;exports.supportsCryptoRandomUUID=v.supportsCryptoRandomUUID;exports.supportsDocument=v.supportsDocument;exports.supportsHistory=v.supportsHistory;exports.supportsIntersectionObserver=v.supportsIntersectionObserver;exports.supportsLocalStorage=v.supportsLocalStorage;exports.supportsLocation=v.supportsLocation;exports.supportsSessionStorage=v.supportsSessionStorage;exports.supportsShadowRoot=v.supportsShadowRoot;exports.supportsWebComponents=v.supportsWebComponents;exports.supportsWindow=v.supportsWindow;exports.Picked=M;exports.createClient=Ye;exports.getPickedConfig=V;exports.getStepFields=Ge;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-DXLWzNXG.cjs");function S(){let c,i;return{promise:new Promise((t,o)=>{c=t,i=o}),resolve:t=>c(t),reject:t=>i(t)}}function C(c,i){const{promise:E,resolve:t}=S(),o=r.createEvent(),s=r.createEvent(),l=r.createEvent(),x=r.createEvent(),p=r.createEvent(),f=c.experiences.listStore.map(e=>e.map(n=>k.createExperienceInstance({client:c,experience:n}))),a=r.createStore({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),u=r.createEffect(async({experience:e,availableRenderers:n,startRendererIndex:v=0})=>{if(!e)return null;for(let d=v;d<n.length;d++){const g=n[d],m=e.componentStore.getState();if(m&&g?.isValidComponent(m.component))return{rendered:await g.render(m.component,c,e),rendererIndex:d}}return null});a.on(l,(e,n)=>({...e,renderedExperiences:[...e.renderedExperiences,n],currentExperienceIndex:e.currentExperienceIndex+1})).on(p,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(x,e=>({...e,isComplete:!0})).reset(o),r.sample({clock:o,target:s}),r.sample({clock:s,source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex<e.length&&!n.isComplete,fn:({experiences:e,state:n})=>({experience:e[n.currentExperienceIndex],availableRenderers:i,startRendererIndex:0}),target:u}),r.sample({clock:u.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),r.sample({clock:l,target:s}),r.sample({clock:u.doneData,filter:e=>e===null,target:p}),r.sample({clock:p,target:s}),r.sample({clock:[s,p,l],source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex>=e.length,target:x});const I=r.attach({source:a,effect:e=>{e.isComplete&&t(e.renderedExperiences)}});return r.sample({clock:x,target:I}),o(),E}exports.render=C;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createDomain as b, createApi as F, createStore as H, createEffect as R, sample as I, attach as X, combine as O, createEvent as D } from "effector";
|
|
2
2
|
import { createFactory as w, invoke as v } from "@withease/factories";
|
|
3
|
-
import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-
|
|
4
|
-
import { f as jt } from "../experience-instance-
|
|
3
|
+
import { g as q, t as Z, c as ee, i as te, e as j, a as re, b as ne, d as se } from "../experience-instance-eADy3oIy.js";
|
|
4
|
+
import { f as jt } from "../experience-instance-eADy3oIy.js";
|
|
5
5
|
import { l as k } from "../logger-C9a75KZn.js";
|
|
6
6
|
import { c as A, l as C, s as z } from "../storage-Co_LbKr_.js";
|
|
7
7
|
import { a as At } from "../storage-Co_LbKr_.js";
|
|
@@ -700,7 +700,7 @@ const We = b("response"), Ye = w(({ client: t }) => {
|
|
|
700
700
|
function Je(t) {
|
|
701
701
|
return v(Ye, t);
|
|
702
702
|
}
|
|
703
|
-
const Qe = () => "0.0.1-dev.
|
|
703
|
+
const Qe = () => "0.0.1-dev.1770178792114";
|
|
704
704
|
function Xe() {
|
|
705
705
|
if (U()) {
|
|
706
706
|
const t = [
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createEvent as i, createStore as v, createEffect as C, sample as n, attach as S } from "effector";
|
|
2
|
-
import { h as F } from "../../experience-instance-
|
|
2
|
+
import { h as F } from "../../experience-instance-eADy3oIy.js";
|
|
3
3
|
function R() {
|
|
4
4
|
let c, p;
|
|
5
5
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const i=require("effector"),U=require("@withease/factories"),C=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),we=require("./object-BbFTsGh3.cjs");function Ee(e){return typeof e=="number"&&!isNaN(e)}function P(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ae(e){return e instanceof Promise}function re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(Ee(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function M(e){return`${e}`}const Ne={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await A(e),"!":async e=>!await A(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?P(t)?t.indexOf(M(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(M).join(""),substr:(e,t,r)=>{const n=M(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=M(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(P);return t.filter(P).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!P(r)||!P(n)?!1:new RegExp(r,n).test(M(t))},throw(e){throw new Error(M(e))}};async function g(e,t){if(!e)return e;if(ae(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!re(e))return e;const r=Ie(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await A(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await A(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await A(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const S=await A(await g(n[1],p));return{item:p,shouldInclude:S}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let S=n.length>2?await g(n[2],t):null;for(const k of o)S=await g(u,{current:k,accumulator:S});return S}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await A(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await A(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await A(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return re(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ne[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function A(e){return ae(e)?A(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ie(e){return Object.keys(e)[0]}function ce(e){return!we.isEmpty(e)}async function J(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...S)=>p.predicate({...n,args:S})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:S}=await p.getBucket();return S}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function xe(e){return!C.supportsWindow()||!C.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const ke="open";function ve(e){if(!C.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:ke})}function be(){return new Promise((e,t)=>{if(!C.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function Ae(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const j="picked-root",q="picked-target",Oe="picked-root";function Fe(e,t){return[...e,{selector:`${Oe}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=xe(n.selector).filter(c=>!$e(c,t)&&!ue(c,t));return{...n,elements:a}})}function Be(e,t){return e.flatMap(r=>r.elements.map(n=>Me(n,r.placement,t)))}function _e(e,t){e.classList.add(q),e.classList.add(`${q}-${t}`)}function $e(e,t){return t?e.classList.contains(`${q}-${t}`):e.classList.contains(`${q}`)}function ue(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(j)}function Te(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(j),t.classList.add(`${j}-${e}`),t}function Me(e,t,r){let n;const a=Te(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function oe(e){return e.type==="conditional"}function L(e){return e.type==="step"}function se(e){return e.type==="experience"}function X(e){return e.type==="origin"}function ie(e){return e.type==="action"}const fe=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),L(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?fe(e,t,u,!1,a):[]})),Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const S=e.find(D=>D.id===p.destinationNodeId);if(!S)continue;const[k,F]=le(e,t,S,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,F+1))}return o===1/0?[-1,-1]:[o,u]},De=(e,t,r)=>le(e,t,r,!0,new Set),de=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(F=>F.id===u.sourceNodeId);if(!p)continue;const[S,k]=de(e,t,p,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},Re=(e,t,r)=>de(e,t,r,new Set),pe=e=>e.find(r=>r.type==="origin")||null,z=(e,t,r)=>{if(!e)return pe(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Pe(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const Q=i.createDomain("experience-instance"),He=U.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),S=t.componentStore,k=Q.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),D=F.map(s=>s.filter(d=>L(d.node))),I=F.map(s=>s[s.length-1]?.node||null),f=i.combine(t.treeStore,I,({steps:s},d)=>s.find(l=>d&&L(d)&&l.id===d.stepId)||null),h=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Le(s,d,l):[]),v=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?Re(s,d,l):[-1,-1]),_=i.combine(t.treeStore,I,({nodes:s,edges:d},l)=>l?De(s,d,l):[-1,-1]),b=Q.store(!1),$=i.createApi(b,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),me=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),Se=i.attach({source:t.treeStore,effect:async(s,d)=>{const l=s.nodes.find(w=>L(w)&&w.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),Y=i.attach({source:I,effect:s=>{}}),W=i.attach({source:t.treeStore,effect:async({nodes:s})=>pe(s)}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(X(l))return z(l,s,d)}}),K=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:l},w)=>{if(!oe(w))return;const T=l.find(O=>O.id===w.conditionalId);if(!T)return;const x=w.id,y=await J(e,T.condition);return Pe(!!y,x,s,d)}}),Z=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},l)=>{if(!ie(l))return;const w=l.action;if(!w){N.logger("warn",`Action node ${l.id} has no action name`);return}const T=e.actions.getByName(w).getState();if(!T){N.logger("warn",`Action '${w}' not registered on client`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}if(typeof T.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const x=d.find(y=>y.sourceNodeId===l.id&&y.sourceNodeHandle==="false");return x?s.find(y=>y.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await T.action(w);const x=d.find(O=>O.sourceNodeId===l.id&&O.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const y=s.find(O=>O.id===x.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${y?.id}`),y||null}catch(x){N.logger("warn",`Action '${w}' failed:`,x);const y=d.find(H=>H.sourceNodeId===l.id&&H.sourceNodeHandle==="false");if(!y)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const O=s.find(H=>H.id===y.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${O?.id}`),O||null}}}),he=i.createEffect(s=>{if(se(s))return e.launchExperienceById(s.experienceId)}),ee=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>z(s,d,l)}),R=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:l}])=>z(s,d,l)}),ye=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),te=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ce(s)?!!await J(e,s):s??!1}),B={id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:S,stateStore:k,isOpenStore:b,open:$.open,close:$.close,toggleOpen:$.toggle,setOpen:$.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:I,currentStepStore:f,nextReachableStepNodesStore:h,stepsToOriginStore:v,stepsToLeafStore:_,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:D},V=i.createEvent(),ne=i.createEvent();return i.sample({source:I,target:V}),i.sample({clock:V,filter:s=>s===null,target:W}),i.sample({clock:V,filter:s=>s!==null,target:ne}),i.split({source:ne,match:s=>oe(s)?"condition":L(s)?"step":se(s)?"launchExperience":X(s)?"origin":ie(s)?"action":"other",cases:{origin:G,condition:K,step:Y,launchExperience:he,action:Z,__:i.createEvent()}}),i.sample({clock:[K.doneData,G.doneData,W.doneData,R.doneData,ee.doneData,Z.doneData],filter:Boolean,target:ye}),i.sample({clock:a,target:R}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t,experienceInstance:B}))}),i.sample({clock:R.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t,experienceInstance:B}))}),i.sample({clock:R.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t,experienceInstance:B}))}),i.sample({clock:c,target:me}),i.sample({clock:o,target:Se}),i.sample({source:i.combine([K.pending,G.pending,W.pending,R.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Y.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t,experienceInstance:B}))}),i.sample({clock:p,target:te}),i.sample({source:te.doneData,fn:Boolean,target:b}),i.sample({source:I,clock:n,filter:s=>s?X(s):!0,target:ee}),i.sample({source:b,filter:Boolean,target:n}),i.sample({source:b,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t,experienceInstance:B}))}),i.sample({source:b,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t,experienceInstance:B}))}),i.sample({clock:u,target:[p]}),u(),B});function ge(e){return U.invoke(He,e)}const Ce=U.createFactory(({client:e})=>{const t=Q.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,h){const v=[...f[h.experienceId]??[]];return v.push(h),{...f,[h.experienceId]:v}},unregister(f,h){const v=h.experienceId,_=f[v]?.filter(b=>b!==h);return{...f,[v]:_??[]}}}),o=i.createEffect(({experience:f,target:h})=>ge({client:e,experience:f,target:h})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&Ae(f.target,()=>{a(f)})}),S=i.createEffect(f=>{c.unregister(f)}),k=i.createEffect(f=>{const h=f.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const v=h.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const _=f.target;if(!_){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const b=ve(_);try{v.render(b,h.component,e,f)}catch($){N.logger("error",$)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialize",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,h){r({experience:f,target:h})}const D=t.map(f=>Object.values(f).flat());function I(f){return t.map(h=>h[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:I,listStore:D}});function je(e){return U.invoke(Ce,e)}exports.createAppHosts=Be;exports.createExperienceInstance=ge;exports.createExperienceInstanceIndex=je;exports.domInteractive=be;exports.evaluateRuleLogic=J;exports.getTargetElements=Fe;exports.isPickedRoot=ue;exports.isRulesLogic=ce;exports.isStepNode=L;exports.tagTargetElement=_e;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createDomain as
|
|
1
|
+
import { createDomain as It, createEvent as k, combine as H, createApi as ut, createEffect as $, attach as F, sample as m, split as Et } from "effector";
|
|
2
2
|
import { createFactory as ft, invoke as lt } from "@withease/factories";
|
|
3
3
|
import { i as kt, s as dt, a as At } from "./supports-COb-sl36.js";
|
|
4
|
-
import { l as
|
|
4
|
+
import { l as x } from "./logger-C9a75KZn.js";
|
|
5
5
|
import { i as bt } from "./object-JwZ58NOH.js";
|
|
6
6
|
function vt(t) {
|
|
7
7
|
return typeof t == "number" && !isNaN(t);
|
|
@@ -36,19 +36,19 @@ const Ot = {
|
|
|
36
36
|
">": (t, e) => g(t) > g(e),
|
|
37
37
|
">=": (t, e) => g(t) >= g(e),
|
|
38
38
|
"<": (t, e, r) => {
|
|
39
|
-
const n = g(t),
|
|
40
|
-
if (r === void 0) return n <
|
|
39
|
+
const n = g(t), s = g(e);
|
|
40
|
+
if (r === void 0) return n < s;
|
|
41
41
|
const a = g(r);
|
|
42
|
-
return n <
|
|
42
|
+
return n < s && s < a;
|
|
43
43
|
},
|
|
44
44
|
"<=": (t, e, r) => {
|
|
45
|
-
const n = g(t),
|
|
46
|
-
if (r === void 0) return n <=
|
|
45
|
+
const n = g(t), s = g(e);
|
|
46
|
+
if (r === void 0) return n <= s;
|
|
47
47
|
const a = g(r);
|
|
48
|
-
return n <=
|
|
48
|
+
return n <= s && s <= a;
|
|
49
49
|
},
|
|
50
|
-
"!!": async (t) => await
|
|
51
|
-
"!": async (t) => !await
|
|
50
|
+
"!!": async (t) => await O(t),
|
|
51
|
+
"!": async (t) => !await O(t),
|
|
52
52
|
"%": (t, e) => g(t) % g(e),
|
|
53
53
|
// eslint-disable-next-line sonarjs/function-return-type
|
|
54
54
|
log: (t) => (console.log(t), t),
|
|
@@ -56,14 +56,14 @@ const Ot = {
|
|
|
56
56
|
cat: (...t) => t.map(R).join(""),
|
|
57
57
|
/* eslint-disable sonarjs/deprecation */
|
|
58
58
|
substr: (t, e, r) => {
|
|
59
|
-
const n = R(t),
|
|
60
|
-
if (r === void 0) return n.substr(
|
|
59
|
+
const n = R(t), s = g(e);
|
|
60
|
+
if (r === void 0) return n.substr(s);
|
|
61
61
|
const a = g(r);
|
|
62
62
|
if (a < 0) {
|
|
63
|
-
const o = n.substr(
|
|
63
|
+
const o = n.substr(s);
|
|
64
64
|
return o.substr(0, o.length + a);
|
|
65
65
|
}
|
|
66
|
-
return n.substr(
|
|
66
|
+
return n.substr(s, a);
|
|
67
67
|
},
|
|
68
68
|
/* eslint-enable sonarjs/deprecation */
|
|
69
69
|
"+": (...t) => t.reduce((e, r) => g(e) + g(r), 0),
|
|
@@ -85,9 +85,9 @@ const Ot = {
|
|
|
85
85
|
const n = R(t);
|
|
86
86
|
if (n === "" || n === ".")
|
|
87
87
|
return this;
|
|
88
|
-
const
|
|
88
|
+
const s = n.split(".");
|
|
89
89
|
let a = this;
|
|
90
|
-
for (const o of
|
|
90
|
+
for (const o of s) {
|
|
91
91
|
if (a == null)
|
|
92
92
|
return r;
|
|
93
93
|
if (Array.isArray(a)) {
|
|
@@ -101,8 +101,8 @@ const Ot = {
|
|
|
101
101
|
async missing(...t) {
|
|
102
102
|
const e = N(t[0]) ? t[0] : t, r = [];
|
|
103
103
|
for (const n of e) {
|
|
104
|
-
const
|
|
105
|
-
(
|
|
104
|
+
const s = await p({ var: n }, this);
|
|
105
|
+
(s === null || s === "") && r.push(`${n}`);
|
|
106
106
|
}
|
|
107
107
|
return r;
|
|
108
108
|
},
|
|
@@ -153,20 +153,20 @@ async function p(t, e) {
|
|
|
153
153
|
case "if":
|
|
154
154
|
case "?:":
|
|
155
155
|
for (let o = 0; o < n.length - 1; o += 2)
|
|
156
|
-
if (await
|
|
156
|
+
if (await O(await p(n[o], e)))
|
|
157
157
|
return p(n[o + 1], e);
|
|
158
158
|
return n.length % 2 === 1 ? p(n[n.length - 1], e) : null;
|
|
159
159
|
case "and": {
|
|
160
160
|
let o = null;
|
|
161
161
|
for (const c of n)
|
|
162
|
-
if (o = await p(c, e), !await
|
|
162
|
+
if (o = await p(c, e), !await O(o))
|
|
163
163
|
return o;
|
|
164
164
|
return o;
|
|
165
165
|
}
|
|
166
166
|
case "or": {
|
|
167
167
|
let o = null;
|
|
168
168
|
for (const c of n)
|
|
169
|
-
if (o = await p(c, e), await
|
|
169
|
+
if (o = await p(c, e), await O(o)) return o;
|
|
170
170
|
return o;
|
|
171
171
|
}
|
|
172
172
|
case "map": {
|
|
@@ -177,7 +177,7 @@ async function p(t, e) {
|
|
|
177
177
|
const o = await p(n[0], e);
|
|
178
178
|
return N(o) ? (await Promise.all(
|
|
179
179
|
o.map(async (d) => {
|
|
180
|
-
const S = await
|
|
180
|
+
const S = await O(await p(n[1], d));
|
|
181
181
|
return { item: d, shouldInclude: S };
|
|
182
182
|
})
|
|
183
183
|
)).filter(({ shouldInclude: d }) => d).map(({ item: d }) => d) : [];
|
|
@@ -196,21 +196,21 @@ async function p(t, e) {
|
|
|
196
196
|
const o = await p(n[0], e);
|
|
197
197
|
if (!N(o) || o.length === 0) return !1;
|
|
198
198
|
for (const c of o)
|
|
199
|
-
if (!await
|
|
199
|
+
if (!await O(await p(n[1], c))) return !1;
|
|
200
200
|
return !0;
|
|
201
201
|
}
|
|
202
202
|
case "some": {
|
|
203
203
|
const o = await p(n[0], e);
|
|
204
204
|
if (!N(o)) return !1;
|
|
205
205
|
for (const c of o)
|
|
206
|
-
if (await
|
|
206
|
+
if (await O(await p(n[1], c))) return !0;
|
|
207
207
|
return !1;
|
|
208
208
|
}
|
|
209
209
|
case "none": {
|
|
210
210
|
const o = await p(n[0], e);
|
|
211
211
|
if (!N(o)) return !0;
|
|
212
212
|
for (const c of o)
|
|
213
|
-
if (await
|
|
213
|
+
if (await O(await p(n[1], c))) return !1;
|
|
214
214
|
return !0;
|
|
215
215
|
}
|
|
216
216
|
case "catch":
|
|
@@ -220,12 +220,12 @@ async function p(t, e) {
|
|
|
220
220
|
return ot(o) ? await p(o, e) : n[1] ? await p(n[1], o) : o instanceof Error ? o.message : o;
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
-
const
|
|
223
|
+
const s = await Promise.all(n.map((o) => p(o, e))), a = r ? Ot[r] : void 0;
|
|
224
224
|
if (!a) throw new Error(`Unrecognized operation ${r}`);
|
|
225
|
-
return a.apply(e,
|
|
225
|
+
return a.apply(e, s);
|
|
226
226
|
}
|
|
227
|
-
async function
|
|
228
|
-
return pt(t) ?
|
|
227
|
+
async function O(t) {
|
|
228
|
+
return pt(t) ? O(await t) : !(Array.isArray(t) && t.length === 0) && !!t;
|
|
229
229
|
}
|
|
230
230
|
function Bt(t) {
|
|
231
231
|
return Object.keys(t)[0];
|
|
@@ -233,8 +233,8 @@ function Bt(t) {
|
|
|
233
233
|
function Ft(t) {
|
|
234
234
|
return !bt(t);
|
|
235
235
|
}
|
|
236
|
-
async function
|
|
237
|
-
const n = t.getStateSnapshot(),
|
|
236
|
+
async function it(t, e, r) {
|
|
237
|
+
const n = t.getStateSnapshot(), s = t.predicates.listStore.getState().reduce((c, d) => ({
|
|
238
238
|
...c,
|
|
239
239
|
[d.name]: (...S) => d.predicate({ ...n, args: S })
|
|
240
240
|
}), {}), a = t.features.listStore.getState().reduce((c, d) => ({
|
|
@@ -257,7 +257,7 @@ async function st(t, e, r) {
|
|
|
257
257
|
protocol: n.location.protocol,
|
|
258
258
|
search: n.location.search
|
|
259
259
|
} : void 0,
|
|
260
|
-
predicates:
|
|
260
|
+
predicates: s,
|
|
261
261
|
features: a
|
|
262
262
|
};
|
|
263
263
|
return await p(e, o);
|
|
@@ -298,12 +298,12 @@ function Zt(t, e) {
|
|
|
298
298
|
placement: "replace"
|
|
299
299
|
}
|
|
300
300
|
].flatMap((n) => {
|
|
301
|
-
const
|
|
301
|
+
const s = _t(n.selector).filter(
|
|
302
302
|
(a) => !Dt(a, e) && !Rt(a, e)
|
|
303
303
|
);
|
|
304
304
|
return {
|
|
305
305
|
...n,
|
|
306
|
-
elements:
|
|
306
|
+
elements: s
|
|
307
307
|
};
|
|
308
308
|
});
|
|
309
309
|
}
|
|
@@ -325,35 +325,35 @@ function Pt(t) {
|
|
|
325
325
|
}
|
|
326
326
|
function Ct(t, e, r) {
|
|
327
327
|
let n;
|
|
328
|
-
const
|
|
328
|
+
const s = Pt(r);
|
|
329
329
|
if (t instanceof Document)
|
|
330
|
-
n = t.body.appendChild(
|
|
330
|
+
n = t.body.appendChild(s);
|
|
331
331
|
else {
|
|
332
332
|
switch (e) {
|
|
333
333
|
case "replace":
|
|
334
|
-
t.replaceWith(
|
|
334
|
+
t.replaceWith(s);
|
|
335
335
|
break;
|
|
336
336
|
case "before":
|
|
337
|
-
t.before(
|
|
337
|
+
t.before(s);
|
|
338
338
|
break;
|
|
339
339
|
case "after":
|
|
340
|
-
t.after(
|
|
340
|
+
t.after(s);
|
|
341
341
|
break;
|
|
342
342
|
case "prepend":
|
|
343
|
-
t.prepend(
|
|
343
|
+
t.prepend(s);
|
|
344
344
|
break;
|
|
345
345
|
default:
|
|
346
|
-
t.append(
|
|
346
|
+
t.append(s);
|
|
347
347
|
break;
|
|
348
348
|
}
|
|
349
|
-
n =
|
|
349
|
+
n = s;
|
|
350
350
|
}
|
|
351
351
|
return n;
|
|
352
352
|
}
|
|
353
|
-
function
|
|
353
|
+
function st(t) {
|
|
354
354
|
return t.type === "conditional";
|
|
355
355
|
}
|
|
356
|
-
function
|
|
356
|
+
function U(t) {
|
|
357
357
|
return t.type === "step";
|
|
358
358
|
}
|
|
359
359
|
function at(t) {
|
|
@@ -365,36 +365,36 @@ function J(t) {
|
|
|
365
365
|
function ct(t) {
|
|
366
366
|
return t.type === "action";
|
|
367
367
|
}
|
|
368
|
-
const gt = (t, e, r, n,
|
|
368
|
+
const gt = (t, e, r, n, s = /* @__PURE__ */ new Set()) => s.has(r.id) ? [] : (s.add(r.id), U(r) && !n ? [r] : e.filter((o) => o.sourceNodeId === r.id).flatMap((o) => {
|
|
369
369
|
const c = t.find((d) => d.id === o.destinationNodeId);
|
|
370
|
-
return c ? gt(t, e, c, !1,
|
|
371
|
-
})), Ht = (t, e, r) => gt(t, e, r, !0, /* @__PURE__ */ new Set()), mt = (t, e, r, n,
|
|
372
|
-
if (
|
|
373
|
-
|
|
370
|
+
return c ? gt(t, e, c, !1, s) : [];
|
|
371
|
+
})), Ht = (t, e, r) => gt(t, e, r, !0, /* @__PURE__ */ new Set()), mt = (t, e, r, n, s = /* @__PURE__ */ new Set()) => {
|
|
372
|
+
if (s.has(r.id)) return [-1, -1];
|
|
373
|
+
s.add(r.id);
|
|
374
374
|
const a = e.filter((d) => d.sourceNodeId === r.id);
|
|
375
375
|
if (a.length === 0) return [0, 0];
|
|
376
376
|
let o = 1 / 0, c = -1 / 0;
|
|
377
377
|
for (const d of a) {
|
|
378
|
-
const S = t.find((
|
|
378
|
+
const S = t.find((P) => P.id === d.destinationNodeId);
|
|
379
379
|
if (!S) continue;
|
|
380
|
-
const [A,
|
|
380
|
+
const [A, _] = mt(
|
|
381
381
|
t,
|
|
382
382
|
e,
|
|
383
383
|
S,
|
|
384
384
|
!1,
|
|
385
|
-
new Set(
|
|
385
|
+
new Set(s)
|
|
386
386
|
);
|
|
387
|
-
A !== -1 && (o = Math.min(o, A + 1), c = Math.max(c,
|
|
387
|
+
A !== -1 && (o = Math.min(o, A + 1), c = Math.max(c, _ + 1));
|
|
388
388
|
}
|
|
389
389
|
return o === 1 / 0 ? [-1, -1] : [o, c];
|
|
390
390
|
}, jt = (t, e, r) => mt(t, e, r, !0, /* @__PURE__ */ new Set()), St = (t, e, r, n = /* @__PURE__ */ new Set()) => {
|
|
391
391
|
if (n.has(r.id)) return [-1, -1];
|
|
392
392
|
if (n.add(r.id), r.type === "origin") return [0, 0];
|
|
393
|
-
const
|
|
394
|
-
if (
|
|
393
|
+
const s = e.filter((c) => c.destinationNodeId === r.id);
|
|
394
|
+
if (s.length === 0) return [-1, -1];
|
|
395
395
|
let a = 1 / 0, o = -1 / 0;
|
|
396
|
-
for (const c of
|
|
397
|
-
const d = t.find((
|
|
396
|
+
for (const c of s) {
|
|
397
|
+
const d = t.find((_) => _.id === c.sourceNodeId);
|
|
398
398
|
if (!d) continue;
|
|
399
399
|
const [S, A] = St(
|
|
400
400
|
t,
|
|
@@ -405,164 +405,182 @@ const gt = (t, e, r, n, i = /* @__PURE__ */ new Set()) => i.has(r.id) ? [] : (i.
|
|
|
405
405
|
S !== -1 && (a = Math.min(a, S + 1), o = Math.max(o, A + 1));
|
|
406
406
|
}
|
|
407
407
|
return a === 1 / 0 ? [-1, -1] : [a, o];
|
|
408
|
-
}, Ut = (t, e, r) => St(t, e, r, /* @__PURE__ */ new Set()),
|
|
408
|
+
}, Ut = (t, e, r) => St(t, e, r, /* @__PURE__ */ new Set()), ht = (t) => t.find((r) => r.type === "origin") || null, Q = (t, e, r) => {
|
|
409
409
|
if (!t)
|
|
410
|
-
return
|
|
410
|
+
return ht(e);
|
|
411
411
|
const n = r.find((a) => a.sourceNodeId === t.id);
|
|
412
412
|
if (!n)
|
|
413
413
|
return null;
|
|
414
|
-
const
|
|
415
|
-
return
|
|
414
|
+
const s = e.find((a) => a.id === n.destinationNodeId);
|
|
415
|
+
return s || null;
|
|
416
416
|
};
|
|
417
417
|
async function Wt(t, e, r, n) {
|
|
418
|
-
const
|
|
419
|
-
(o) => o.sourceNodeHandle ===
|
|
418
|
+
const s = t ? "true" : "false", a = n.find(
|
|
419
|
+
(o) => o.sourceNodeHandle === s && o.sourceNodeId === e
|
|
420
420
|
);
|
|
421
421
|
return r.find((o) => o.id === a?.destinationNodeId);
|
|
422
422
|
}
|
|
423
|
-
const Y =
|
|
423
|
+
const Y = It("experience-instance"), Gt = ft(
|
|
424
424
|
({
|
|
425
425
|
client: t,
|
|
426
426
|
experience: e,
|
|
427
427
|
target: r
|
|
428
428
|
}) => {
|
|
429
|
-
const n = k(),
|
|
429
|
+
const n = k(), s = k(), a = k(), o = k(), c = k(), d = k(), S = e.componentStore, A = Y.store("transitioning"), _ = t.history.entriesStore.map((i) => i.filter((l) => l.experienceId === e.id)), P = _.map((i) => i.filter((l) => U(l.node))), I = _.map((i) => i[i.length - 1]?.node || null), u = H(
|
|
430
430
|
e.treeStore,
|
|
431
|
-
|
|
432
|
-
({ steps:
|
|
433
|
-
),
|
|
431
|
+
I,
|
|
432
|
+
({ steps: i }, l) => i.find((f) => l && U(l) && f.id === l.stepId) || null
|
|
433
|
+
), h = H(
|
|
434
434
|
e.treeStore,
|
|
435
|
-
|
|
436
|
-
({
|
|
437
|
-
|
|
438
|
-
if (!u || !P(u.node))
|
|
439
|
-
return null;
|
|
440
|
-
const h = u.node;
|
|
441
|
-
return s.find(($) => $.id === h.stepId) || null;
|
|
442
|
-
}
|
|
443
|
-
), b = D(
|
|
444
|
-
e.treeStore,
|
|
445
|
-
x,
|
|
446
|
-
({ nodes: s, edges: l }, u) => u ? Ht(s, l, u) : []
|
|
447
|
-
), L = D(
|
|
435
|
+
I,
|
|
436
|
+
({ nodes: i, edges: l }, f) => f ? Ht(i, l, f) : []
|
|
437
|
+
), b = H(
|
|
448
438
|
e.treeStore,
|
|
449
|
-
|
|
450
|
-
({ nodes:
|
|
451
|
-
),
|
|
439
|
+
I,
|
|
440
|
+
({ nodes: i, edges: l }, f) => f ? Ut(i, l, f) : [-1, -1]
|
|
441
|
+
), T = H(
|
|
452
442
|
e.treeStore,
|
|
453
|
-
|
|
454
|
-
({ nodes:
|
|
455
|
-
),
|
|
443
|
+
I,
|
|
444
|
+
({ nodes: i, edges: l }, f) => f ? jt(i, l, f) : [-1, -1]
|
|
445
|
+
), v = Y.store(!1), L = ut(v, {
|
|
456
446
|
open: () => !0,
|
|
457
447
|
close: () => !1,
|
|
458
|
-
toggle: (
|
|
459
|
-
set: (
|
|
460
|
-
}),
|
|
448
|
+
toggle: (i) => !i,
|
|
449
|
+
set: (i, l) => l
|
|
450
|
+
}), yt = $(async () => {
|
|
461
451
|
t.history.back({ experienceId: e.id });
|
|
462
|
-
}), wt =
|
|
452
|
+
}), wt = F({
|
|
463
453
|
source: e.treeStore,
|
|
464
|
-
effect: async (
|
|
465
|
-
const
|
|
466
|
-
|
|
454
|
+
effect: async (i, l) => {
|
|
455
|
+
const f = i.nodes.find((w) => U(w) && w.stepId === l);
|
|
456
|
+
f && t.history.push({ experienceId: e.id, node: f });
|
|
467
457
|
}
|
|
468
|
-
}), Z =
|
|
469
|
-
source:
|
|
470
|
-
effect: (
|
|
458
|
+
}), Z = F({
|
|
459
|
+
source: I,
|
|
460
|
+
effect: (i) => {
|
|
471
461
|
}
|
|
472
|
-
}), V =
|
|
462
|
+
}), V = F({
|
|
473
463
|
source: e.treeStore,
|
|
474
|
-
effect: async ({ nodes:
|
|
475
|
-
}), q =
|
|
464
|
+
effect: async ({ nodes: i }) => ht(i)
|
|
465
|
+
}), q = F({
|
|
476
466
|
source: e.treeStore,
|
|
477
|
-
effect: async ({ nodes:
|
|
478
|
-
if (J(
|
|
479
|
-
return Q(
|
|
467
|
+
effect: async ({ nodes: i, edges: l }, f) => {
|
|
468
|
+
if (J(f))
|
|
469
|
+
return Q(f, i, l);
|
|
480
470
|
}
|
|
481
|
-
}), X =
|
|
471
|
+
}), X = F({
|
|
482
472
|
source: e.treeStore,
|
|
483
|
-
effect: async ({ nodes:
|
|
484
|
-
if (!
|
|
473
|
+
effect: async ({ nodes: i, edges: l, conditionals: f }, w) => {
|
|
474
|
+
if (!st(w))
|
|
485
475
|
return;
|
|
486
|
-
const
|
|
487
|
-
if (
|
|
476
|
+
const D = f.find((B) => B.id === w.conditionalId);
|
|
477
|
+
if (!D)
|
|
488
478
|
return;
|
|
489
|
-
const E =
|
|
490
|
-
return Wt(!!
|
|
479
|
+
const E = w.id, y = await it(t, D.condition);
|
|
480
|
+
return Wt(!!y, E, i, l);
|
|
491
481
|
}
|
|
492
|
-
}), tt =
|
|
482
|
+
}), tt = F({
|
|
493
483
|
source: e.treeStore,
|
|
494
|
-
effect: async ({ nodes:
|
|
495
|
-
if (!ct(
|
|
484
|
+
effect: async ({ nodes: i, edges: l }, f) => {
|
|
485
|
+
if (!ct(f))
|
|
496
486
|
return;
|
|
497
|
-
const
|
|
498
|
-
if (!
|
|
499
|
-
|
|
487
|
+
const w = f.action;
|
|
488
|
+
if (!w) {
|
|
489
|
+
x("warn", `Action node ${f.id} has no action name`);
|
|
500
490
|
return;
|
|
501
491
|
}
|
|
502
|
-
const
|
|
503
|
-
if (
|
|
504
|
-
|
|
492
|
+
const D = t.actions.getByName(w).getState();
|
|
493
|
+
if (!D) {
|
|
494
|
+
x("warn", `Action '${w}' not registered on client`);
|
|
505
495
|
const E = l.find(
|
|
506
|
-
(
|
|
496
|
+
(y) => y.sourceNodeId === f.id && y.sourceNodeHandle === "false"
|
|
507
497
|
);
|
|
508
|
-
return E ?
|
|
498
|
+
return E ? i.find((y) => y.id === E.destinationNodeId) : null;
|
|
509
499
|
}
|
|
510
|
-
if (typeof
|
|
511
|
-
|
|
500
|
+
if (typeof D.action != "function") {
|
|
501
|
+
x("warn", `Action '${w}' is not a function`);
|
|
512
502
|
const E = l.find(
|
|
513
|
-
(
|
|
503
|
+
(y) => y.sourceNodeId === f.id && y.sourceNodeHandle === "false"
|
|
514
504
|
);
|
|
515
|
-
return E ?
|
|
505
|
+
return E ? i.find((y) => y.id === E.destinationNodeId) : null;
|
|
516
506
|
}
|
|
517
507
|
try {
|
|
518
|
-
|
|
508
|
+
x("info", `Executing action: ${w}`), await D.action(w);
|
|
519
509
|
const E = l.find(
|
|
520
|
-
(
|
|
510
|
+
(B) => B.sourceNodeId === f.id && B.sourceNodeHandle === "true"
|
|
521
511
|
);
|
|
522
512
|
if (!E)
|
|
523
|
-
return
|
|
524
|
-
const
|
|
525
|
-
return
|
|
513
|
+
return x("warn", `No 'true' edge found for action node ${f.id}`), null;
|
|
514
|
+
const y = i.find((B) => B.id === E.destinationNodeId);
|
|
515
|
+
return x("info", `Action '${w}' succeeded, moving to node ${y?.id}`), y || null;
|
|
526
516
|
} catch (E) {
|
|
527
|
-
|
|
528
|
-
const
|
|
529
|
-
(W) => W.sourceNodeId ===
|
|
517
|
+
x("warn", `Action '${w}' failed:`, E);
|
|
518
|
+
const y = l.find(
|
|
519
|
+
(W) => W.sourceNodeId === f.id && W.sourceNodeHandle === "false"
|
|
530
520
|
);
|
|
531
|
-
if (!
|
|
532
|
-
return
|
|
533
|
-
const
|
|
534
|
-
return
|
|
521
|
+
if (!y)
|
|
522
|
+
return x("warn", `No 'false' edge found for action node ${f.id}`), null;
|
|
523
|
+
const B = i.find((W) => W.id === y.destinationNodeId);
|
|
524
|
+
return x("info", `Action '${w}' failed, moving to node ${B?.id}`), B || null;
|
|
535
525
|
}
|
|
536
526
|
}
|
|
537
|
-
}), Nt =
|
|
538
|
-
if (at(
|
|
539
|
-
return t.launchExperienceById(
|
|
540
|
-
}), et =
|
|
541
|
-
source: [
|
|
542
|
-
effect: async ([
|
|
543
|
-
}),
|
|
544
|
-
source: [
|
|
545
|
-
effect: async ([
|
|
546
|
-
}),
|
|
547
|
-
t.history.push({ experienceId: e.id, node:
|
|
548
|
-
}), nt =
|
|
527
|
+
}), Nt = $((i) => {
|
|
528
|
+
if (at(i))
|
|
529
|
+
return t.launchExperienceById(i.experienceId);
|
|
530
|
+
}), et = F({
|
|
531
|
+
source: [I, e.treeStore],
|
|
532
|
+
effect: async ([i, { nodes: l, edges: f }]) => Q(i, l, f)
|
|
533
|
+
}), C = F({
|
|
534
|
+
source: [I, e.treeStore],
|
|
535
|
+
effect: async ([i, { nodes: l, edges: f }]) => Q(i, l, f)
|
|
536
|
+
}), xt = $((i) => {
|
|
537
|
+
t.history.push({ experienceId: e.id, node: i });
|
|
538
|
+
}), nt = F({
|
|
549
539
|
source: e.configStore,
|
|
550
|
-
effect: async ({ initializeOpenLogic:
|
|
551
|
-
}),
|
|
540
|
+
effect: async ({ initializeOpenLogic: i }) => Ft(i) ? !!await it(t, i) : i ?? !1
|
|
541
|
+
}), M = {
|
|
542
|
+
id: Math.random().toString(36).substring(7),
|
|
543
|
+
// config
|
|
544
|
+
experienceId: e.id,
|
|
545
|
+
configStore: e.configStore,
|
|
546
|
+
target: r,
|
|
547
|
+
componentStore: S,
|
|
548
|
+
// state
|
|
549
|
+
stateStore: A,
|
|
550
|
+
// open close
|
|
551
|
+
isOpenStore: v,
|
|
552
|
+
open: L.open,
|
|
553
|
+
close: L.close,
|
|
554
|
+
toggleOpen: L.toggle,
|
|
555
|
+
setOpen: L.set,
|
|
556
|
+
// nodes
|
|
557
|
+
treeStore: e.treeStore,
|
|
558
|
+
fieldsStore: e.fieldsStore,
|
|
559
|
+
currentNodeStore: I,
|
|
560
|
+
currentStepStore: u,
|
|
561
|
+
nextReachableStepNodesStore: h,
|
|
562
|
+
stepsToOriginStore: b,
|
|
563
|
+
stepsToLeafStore: T,
|
|
564
|
+
// history
|
|
565
|
+
goToNextStep: s,
|
|
566
|
+
goToPreviousStep: a,
|
|
567
|
+
goToStepById: o,
|
|
568
|
+
stepsHistoryStore: P
|
|
569
|
+
}, z = k(), rt = k();
|
|
552
570
|
return m({
|
|
553
|
-
source:
|
|
571
|
+
source: I,
|
|
554
572
|
target: z
|
|
555
573
|
}), m({
|
|
556
574
|
clock: z,
|
|
557
|
-
filter: (
|
|
575
|
+
filter: (i) => i === null,
|
|
558
576
|
target: V
|
|
559
577
|
}), m({
|
|
560
578
|
clock: z,
|
|
561
|
-
filter: (
|
|
579
|
+
filter: (i) => i !== null,
|
|
562
580
|
target: rt
|
|
563
581
|
}), Et({
|
|
564
582
|
source: rt,
|
|
565
|
-
match: (
|
|
583
|
+
match: (i) => st(i) ? "condition" : U(i) ? "step" : at(i) ? "launchExperience" : J(i) ? "origin" : ct(i) ? "action" : "other",
|
|
566
584
|
cases: {
|
|
567
585
|
origin: q,
|
|
568
586
|
condition: X,
|
|
@@ -576,62 +594,66 @@ const Y = xt("experience-instance"), Gt = ft(
|
|
|
576
594
|
X.doneData,
|
|
577
595
|
q.doneData,
|
|
578
596
|
V.doneData,
|
|
579
|
-
|
|
597
|
+
C.doneData,
|
|
580
598
|
et.doneData,
|
|
581
599
|
tt.doneData
|
|
582
600
|
],
|
|
583
601
|
filter: Boolean,
|
|
584
|
-
target:
|
|
602
|
+
target: xt
|
|
585
603
|
}), m({
|
|
586
|
-
clock:
|
|
587
|
-
target:
|
|
604
|
+
clock: s,
|
|
605
|
+
target: C
|
|
588
606
|
}), m({
|
|
589
|
-
clock:
|
|
590
|
-
source:
|
|
607
|
+
clock: s,
|
|
608
|
+
source: u,
|
|
591
609
|
filter: Boolean,
|
|
592
|
-
target: t.eventBus.prepend((
|
|
610
|
+
target: t.eventBus.prepend((i) => ({
|
|
593
611
|
type: "step_submit",
|
|
594
|
-
step:
|
|
595
|
-
experience: e
|
|
612
|
+
step: i,
|
|
613
|
+
experience: e,
|
|
614
|
+
experienceInstance: M
|
|
596
615
|
}))
|
|
597
616
|
}), m({
|
|
598
|
-
clock:
|
|
599
|
-
source:
|
|
617
|
+
clock: C.done,
|
|
618
|
+
source: u,
|
|
600
619
|
filter: Boolean,
|
|
601
|
-
target: t.eventBus.prepend((
|
|
620
|
+
target: t.eventBus.prepend((i) => ({
|
|
602
621
|
type: "step_submit_success",
|
|
603
|
-
step:
|
|
604
|
-
experience: e
|
|
622
|
+
step: i,
|
|
623
|
+
experience: e,
|
|
624
|
+
experienceInstance: M
|
|
605
625
|
}))
|
|
606
626
|
}), m({
|
|
607
|
-
clock:
|
|
608
|
-
source:
|
|
627
|
+
clock: C.fail,
|
|
628
|
+
source: u,
|
|
609
629
|
filter: Boolean,
|
|
610
|
-
target: t.eventBus.prepend((
|
|
630
|
+
target: t.eventBus.prepend((i) => ({
|
|
611
631
|
type: "step_submit_error",
|
|
612
|
-
step:
|
|
613
|
-
experience: e
|
|
632
|
+
step: i,
|
|
633
|
+
experience: e,
|
|
634
|
+
experienceInstance: M
|
|
614
635
|
}))
|
|
615
636
|
}), m({
|
|
616
637
|
clock: a,
|
|
617
|
-
target:
|
|
638
|
+
target: yt
|
|
618
639
|
}), m({ clock: o, target: wt }), m({
|
|
619
|
-
source:
|
|
640
|
+
source: H([
|
|
620
641
|
X.pending,
|
|
621
642
|
q.pending,
|
|
622
643
|
V.pending,
|
|
623
|
-
|
|
644
|
+
C.pending
|
|
624
645
|
]),
|
|
625
|
-
fn: (
|
|
646
|
+
fn: (i) => i.some(Boolean) ? "transitioning" : "ready",
|
|
626
647
|
target: A
|
|
627
648
|
}), m({
|
|
628
649
|
clock: Z.doneData,
|
|
629
|
-
source:
|
|
650
|
+
source: u,
|
|
630
651
|
filter: Boolean,
|
|
631
|
-
target: t.eventBus.prepend((
|
|
652
|
+
target: t.eventBus.prepend((i) => ({
|
|
632
653
|
type: "step_enter",
|
|
633
|
-
step:
|
|
634
|
-
experience: e
|
|
654
|
+
step: i,
|
|
655
|
+
experience: e,
|
|
656
|
+
experienceInstance: M
|
|
635
657
|
}))
|
|
636
658
|
}), m({
|
|
637
659
|
clock: d,
|
|
@@ -639,134 +661,107 @@ const Y = xt("experience-instance"), Gt = ft(
|
|
|
639
661
|
}), m({
|
|
640
662
|
source: nt.doneData,
|
|
641
663
|
fn: Boolean,
|
|
642
|
-
target:
|
|
664
|
+
target: v
|
|
643
665
|
}), m({
|
|
644
|
-
source:
|
|
666
|
+
source: I,
|
|
645
667
|
clock: n,
|
|
646
|
-
filter: (
|
|
668
|
+
filter: (i) => i ? J(i) : !0,
|
|
647
669
|
target: et
|
|
648
670
|
}), m({
|
|
649
|
-
source:
|
|
671
|
+
source: v,
|
|
650
672
|
filter: Boolean,
|
|
651
673
|
target: n
|
|
652
674
|
}), m({
|
|
653
|
-
source:
|
|
675
|
+
source: v,
|
|
654
676
|
filter: Boolean,
|
|
655
677
|
target: t.eventBus.prepend(() => ({
|
|
656
678
|
type: "experience_open",
|
|
657
|
-
experience: e
|
|
679
|
+
experience: e,
|
|
680
|
+
experienceInstance: M
|
|
658
681
|
}))
|
|
659
682
|
}), m({
|
|
660
|
-
source:
|
|
661
|
-
filter: (
|
|
683
|
+
source: v,
|
|
684
|
+
filter: (i) => !i,
|
|
662
685
|
target: t.eventBus.prepend(() => ({
|
|
663
686
|
type: "experience_close",
|
|
664
|
-
experience: e
|
|
687
|
+
experience: e,
|
|
688
|
+
experienceInstance: M
|
|
665
689
|
}))
|
|
666
690
|
}), m({
|
|
667
691
|
clock: c,
|
|
668
692
|
target: [d]
|
|
669
|
-
}), c(),
|
|
670
|
-
id: Math.random().toString(36).substring(7),
|
|
671
|
-
// config
|
|
672
|
-
experienceId: e.id,
|
|
673
|
-
configStore: e.configStore,
|
|
674
|
-
target: r,
|
|
675
|
-
componentStore: S,
|
|
676
|
-
// state
|
|
677
|
-
stateStore: A,
|
|
678
|
-
// open close
|
|
679
|
-
isOpenStore: _,
|
|
680
|
-
open: U.open,
|
|
681
|
-
close: U.close,
|
|
682
|
-
toggleOpen: U.toggle,
|
|
683
|
-
setOpen: U.set,
|
|
684
|
-
// nodes
|
|
685
|
-
treeStore: e.treeStore,
|
|
686
|
-
fieldsStore: e.fieldsStore,
|
|
687
|
-
currentNodeStore: x,
|
|
688
|
-
currentStepStore: f,
|
|
689
|
-
previousStepStore: y,
|
|
690
|
-
nextReachableStepNodesStore: b,
|
|
691
|
-
stepsToOriginStore: L,
|
|
692
|
-
stepsToLeafStore: C,
|
|
693
|
-
// history
|
|
694
|
-
goToNextStep: i,
|
|
695
|
-
goToPreviousStep: a,
|
|
696
|
-
goToStepById: o,
|
|
697
|
-
stepsHistoryStore: T
|
|
698
|
-
};
|
|
693
|
+
}), c(), M;
|
|
699
694
|
}
|
|
700
695
|
);
|
|
701
696
|
function Kt(t) {
|
|
702
697
|
return lt(Gt, t);
|
|
703
698
|
}
|
|
704
699
|
const Vt = ft(({ client: t }) => {
|
|
705
|
-
const e = Y.store({}), r = k(), n = k(),
|
|
706
|
-
register(
|
|
700
|
+
const e = Y.store({}), r = k(), n = k(), s = k(), a = ut(e, {
|
|
701
|
+
register(u, h) {
|
|
707
702
|
const b = [
|
|
708
|
-
...
|
|
703
|
+
...u[h.experienceId] ?? []
|
|
709
704
|
];
|
|
710
|
-
return b.push(
|
|
711
|
-
...
|
|
712
|
-
[
|
|
705
|
+
return b.push(h), {
|
|
706
|
+
...u,
|
|
707
|
+
[h.experienceId]: b
|
|
713
708
|
};
|
|
714
709
|
},
|
|
715
|
-
unregister(
|
|
716
|
-
const b =
|
|
717
|
-
(
|
|
710
|
+
unregister(u, h) {
|
|
711
|
+
const b = h.experienceId, T = u[b]?.filter(
|
|
712
|
+
(v) => v !== h
|
|
718
713
|
);
|
|
719
714
|
return {
|
|
720
|
-
...
|
|
721
|
-
[b]:
|
|
715
|
+
...u,
|
|
716
|
+
[b]: T ?? []
|
|
722
717
|
};
|
|
723
718
|
}
|
|
724
|
-
}), o =
|
|
725
|
-
({ experience:
|
|
726
|
-
), c =
|
|
727
|
-
a.register(
|
|
728
|
-
}), d =
|
|
729
|
-
(
|
|
730
|
-
|
|
731
|
-
|
|
719
|
+
}), o = $(
|
|
720
|
+
({ experience: u, target: h }) => Kt({ client: t, experience: u, target: h })
|
|
721
|
+
), c = $((u) => {
|
|
722
|
+
a.register(u);
|
|
723
|
+
}), d = $(
|
|
724
|
+
(u) => {
|
|
725
|
+
u.target && Tt(u.target, () => {
|
|
726
|
+
s(u);
|
|
732
727
|
});
|
|
733
728
|
}
|
|
734
|
-
), S =
|
|
735
|
-
a.unregister(
|
|
736
|
-
}), A =
|
|
737
|
-
const
|
|
738
|
-
if (!
|
|
739
|
-
|
|
729
|
+
), S = $((u) => {
|
|
730
|
+
a.unregister(u);
|
|
731
|
+
}), A = $((u) => {
|
|
732
|
+
const h = u.componentStore.getState();
|
|
733
|
+
if (!h) {
|
|
734
|
+
x("warn", "No app component registered. Skipping init.");
|
|
740
735
|
return;
|
|
741
736
|
}
|
|
742
|
-
const b =
|
|
737
|
+
const b = h.frameworkStore.getState();
|
|
743
738
|
if (!b) {
|
|
744
|
-
|
|
739
|
+
x(
|
|
745
740
|
"error",
|
|
746
|
-
`No framework registered for component '${
|
|
741
|
+
`No framework registered for component '${h.name}'. Skipping rendering.`
|
|
747
742
|
);
|
|
748
743
|
return;
|
|
749
744
|
}
|
|
750
|
-
const
|
|
751
|
-
if (!
|
|
752
|
-
|
|
745
|
+
const T = u.target;
|
|
746
|
+
if (!T) {
|
|
747
|
+
x(
|
|
753
748
|
"error",
|
|
754
|
-
`No target element registered for experience '${
|
|
749
|
+
`No target element registered for experience '${u.experienceId}'. Skipping rendering.`
|
|
755
750
|
);
|
|
756
751
|
return;
|
|
757
752
|
}
|
|
758
|
-
const
|
|
753
|
+
const v = Mt(T);
|
|
759
754
|
try {
|
|
760
|
-
b.render(
|
|
761
|
-
} catch (
|
|
762
|
-
|
|
755
|
+
b.render(v, h.component, t, u);
|
|
756
|
+
} catch (L) {
|
|
757
|
+
x("error", L);
|
|
763
758
|
}
|
|
764
759
|
});
|
|
765
760
|
m({
|
|
766
761
|
clock: r,
|
|
767
762
|
target: o
|
|
768
763
|
}), m({
|
|
769
|
-
clock:
|
|
764
|
+
clock: s,
|
|
770
765
|
target: S
|
|
771
766
|
}), m({
|
|
772
767
|
clock: o.doneData,
|
|
@@ -777,36 +772,36 @@ const Vt = ft(({ client: t }) => {
|
|
|
777
772
|
]
|
|
778
773
|
}), m({
|
|
779
774
|
clock: o.doneData,
|
|
780
|
-
target: t.eventBus.prepend((
|
|
775
|
+
target: t.eventBus.prepend((u) => ({
|
|
781
776
|
type: "experience_initialize",
|
|
782
|
-
experienceInstance:
|
|
777
|
+
experienceInstance: u
|
|
783
778
|
}))
|
|
784
779
|
}), m({
|
|
785
780
|
clock: n,
|
|
786
781
|
target: A
|
|
787
782
|
});
|
|
788
|
-
function
|
|
789
|
-
r({ experience:
|
|
783
|
+
function _(u, h) {
|
|
784
|
+
r({ experience: u, target: h });
|
|
790
785
|
}
|
|
791
|
-
const
|
|
792
|
-
function
|
|
793
|
-
return e.map((
|
|
786
|
+
const P = e.map((u) => Object.values(u).flat());
|
|
787
|
+
function I(u) {
|
|
788
|
+
return e.map((h) => h[u] || [], { skipVoid: !1 });
|
|
794
789
|
}
|
|
795
790
|
return {
|
|
796
|
-
spawn:
|
|
797
|
-
getByExperienceId:
|
|
798
|
-
listStore:
|
|
791
|
+
spawn: _,
|
|
792
|
+
getByExperienceId: I,
|
|
793
|
+
listStore: P
|
|
799
794
|
};
|
|
800
795
|
});
|
|
801
796
|
function ne(t) {
|
|
802
797
|
return lt(Vt, t);
|
|
803
798
|
}
|
|
804
799
|
export {
|
|
805
|
-
|
|
800
|
+
U as a,
|
|
806
801
|
ne as b,
|
|
807
802
|
te as c,
|
|
808
803
|
Yt as d,
|
|
809
|
-
|
|
804
|
+
it as e,
|
|
810
805
|
Rt as f,
|
|
811
806
|
Zt as g,
|
|
812
807
|
Kt as h,
|
|
@@ -40,7 +40,6 @@ declare const createExperienceInstanceFactory: ({ client, experience, target, }:
|
|
|
40
40
|
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
41
41
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
42
42
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
43
|
-
previousStepStore: import('effector').Store<ExperienceStep | null>;
|
|
44
43
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
45
44
|
stepsToOriginStore: import('effector').Store<number[]>;
|
|
46
45
|
stepsToLeafStore: import('effector').Store<number[]>;
|
|
@@ -84,7 +83,6 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
|
|
|
84
83
|
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
85
84
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
86
85
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
87
|
-
previousStepStore: import('effector').Store<ExperienceStep | null>;
|
|
88
86
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
89
87
|
stepsToOriginStore: import('effector').Store<number[]>;
|
|
90
88
|
stepsToLeafStore: import('effector').Store<number[]>;
|
|
@@ -123,7 +121,6 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
|
|
|
123
121
|
fieldsStore: import('effector').Store<import('../..').Field[]>;
|
|
124
122
|
currentNodeStore: import('effector').Store<ExperienceNode | null>;
|
|
125
123
|
currentStepStore: import('effector').Store<ExperienceStep | null>;
|
|
126
|
-
previousStepStore: import('effector').Store<ExperienceStep | null>;
|
|
127
124
|
nextReachableStepNodesStore: import('effector').Store<ExperienceNode[]>;
|
|
128
125
|
stepsToOriginStore: import('effector').Store<number[]>;
|
|
129
126
|
stepsToLeafStore: import('effector').Store<number[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB
|
|
1
|
+
{"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAoB1C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;CACzC;AAED,QAAA,MAAM,+BAA+B,oCAKhC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgcF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
|
package/dist/types/picked.d.ts
CHANGED
|
@@ -85,7 +85,6 @@ export declare class Picked {
|
|
|
85
85
|
fieldsStore: import('effector').Store<Field[]>;
|
|
86
86
|
currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
|
|
87
87
|
currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
88
|
-
previousStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
89
88
|
nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
|
|
90
89
|
stepsToOriginStore: import('effector').Store<number[]>;
|
|
91
90
|
stepsToLeafStore: import('effector').Store<number[]>;
|
|
@@ -124,7 +123,6 @@ export declare class Picked {
|
|
|
124
123
|
fieldsStore: import('effector').Store<Field[]>;
|
|
125
124
|
currentNodeStore: import('effector').Store<import('.').ExperienceNode | null>;
|
|
126
125
|
currentStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
127
|
-
previousStepStore: import('effector').Store<import('.').ExperienceStep | null>;
|
|
128
126
|
nextReachableStepNodesStore: import('effector').Store<import('.').ExperienceNode[]>;
|
|
129
127
|
stepsToOriginStore: import('effector').Store<number[]>;
|
|
130
128
|
stepsToLeafStore: import('effector').Store<number[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,EAIhB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAe,MAAM,0BAA0B,CAAA;AAC3F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAGtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAMzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAOtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAM,0FAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,OAAO,UAAQ;IAEf,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,SAAgB,QAAQ,gEAAmB;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAExC,QAAQ,CAAC,YAAY,qDAAoB;IAEzC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;MAAkB;IAElC,QAAQ,CAAC,UAAU;;;;;;;;;;;MAAyC;IAC5D,QAAQ,CAAC,mBAAmB
|
|
1
|
+
{"version":3,"file":"picked.d.ts","sourceRoot":"","sources":["../../src/picked.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,32 +26,40 @@ export interface PayloadMap {
|
|
|
26
26
|
};
|
|
27
27
|
experience_open: {
|
|
28
28
|
experience: ExperienceStore;
|
|
29
|
+
experienceInstance: ExperienceInstance;
|
|
29
30
|
};
|
|
30
31
|
experience_close: {
|
|
31
32
|
experience: ExperienceStore;
|
|
33
|
+
experienceInstance: ExperienceInstance;
|
|
32
34
|
};
|
|
33
35
|
experience_complete: {
|
|
34
36
|
experience: ExperienceStore;
|
|
37
|
+
experienceInstance: ExperienceInstance;
|
|
35
38
|
};
|
|
36
39
|
step_enter: {
|
|
37
40
|
step: ExperienceStep;
|
|
38
41
|
experience: ExperienceStore;
|
|
42
|
+
experienceInstance: ExperienceInstance;
|
|
39
43
|
};
|
|
40
44
|
step_submit: {
|
|
41
45
|
step: ExperienceStep;
|
|
42
46
|
experience: ExperienceStore;
|
|
47
|
+
experienceInstance: ExperienceInstance;
|
|
43
48
|
};
|
|
44
49
|
step_submit_success: {
|
|
45
50
|
step: ExperienceStep;
|
|
46
51
|
experience: ExperienceStore;
|
|
52
|
+
experienceInstance: ExperienceInstance;
|
|
47
53
|
};
|
|
48
54
|
step_submit_error: {
|
|
49
55
|
step: ExperienceStep;
|
|
50
56
|
experience: ExperienceStore;
|
|
57
|
+
experienceInstance: ExperienceInstance;
|
|
51
58
|
};
|
|
52
59
|
step_complete: {
|
|
53
60
|
step: ExperienceStep;
|
|
54
61
|
experience: ExperienceStore;
|
|
62
|
+
experienceInstance: ExperienceInstance;
|
|
55
63
|
};
|
|
56
64
|
form_submit: {
|
|
57
65
|
form: FormPayload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,UAAU,EAAE,KAAK,CAAA;IACjB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,WAAW,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/B,cAAc,EAAE;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAA;IAC5C,qBAAqB,EAAE;QAAE,kBAAkB,EAAE,kBAAkB,CAAA;KAAE,CAAA;IACjE,eAAe,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const i=require("effector"),U=require("@withease/factories"),C=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),we=require("./object-BbFTsGh3.cjs");function Ee(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ae(e){return e instanceof Promise}function re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(Ee(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function M(e){return`${e}`}const Ne={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await b(e),"!":async e=>!await b(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(M(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(M).join(""),substr:(e,t,r)=>{const n=M(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=M(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(M(t))},throw(e){throw new Error(M(e))}};async function g(e,t){if(!e)return e;if(ae(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!re(e))return e;const r=Ie(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await b(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await g(u,t),!await b(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await b(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const S=await b(await g(n[1],p));return{item:p,shouldInclude:S}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let S=n.length>2?await g(n[2],t):null;for(const k of o)S=await g(u,{current:k,accumulator:S});return S}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await b(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await b(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await b(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return re(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ne[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function b(e){return ae(e)?b(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ie(e){return Object.keys(e)[0]}function ce(e){return!we.isEmpty(e)}async function J(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...S)=>p.predicate({...n,args:S})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:S}=await p.getBucket();return S}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await g(t,o)}function xe(e){return!C.supportsWindow()||!C.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const ke="open";function ve(e){if(!C.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:ke})}function be(){return new Promise((e,t)=>{if(!C.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function Ae(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const j="picked-root",q="picked-target",Oe="picked-root";function Fe(e,t){return[...e,{selector:`${Oe}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=xe(n.selector).filter(c=>!$e(c,t)&&!ue(c,t));return{...n,elements:a}})}function Be(e,t){return e.flatMap(r=>r.elements.map(n=>Me(n,r.placement,t)))}function _e(e,t){e.classList.add(q),e.classList.add(`${q}-${t}`)}function $e(e,t){return t?e.classList.contains(`${q}-${t}`):e.classList.contains(`${q}`)}function ue(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(j)}function Te(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(j),t.classList.add(`${j}-${e}`),t}function Me(e,t,r){let n;const a=Te(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function oe(e){return e.type==="conditional"}function _(e){return e.type==="step"}function se(e){return e.type==="experience"}function X(e){return e.type==="origin"}function ie(e){return e.type==="action"}const fe=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),_(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?fe(e,t,u,!1,a):[]})),Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const S=e.find($=>$.id===p.destinationNodeId);if(!S)continue;const[k,O]=le(e,t,S,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,O+1))}return o===1/0?[-1,-1]:[o,u]},De=(e,t,r)=>le(e,t,r,!0,new Set),de=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(O=>O.id===u.sourceNodeId);if(!p)continue;const[S,k]=de(e,t,p,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},Re=(e,t,r)=>de(e,t,r,new Set),pe=e=>e.find(r=>r.type==="origin")||null,z=(e,t,r)=>{if(!e)return pe(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Pe(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const Q=i.createDomain("experience-instance"),He=U.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),S=t.componentStore,k=Q.store("transitioning"),O=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),$=O.map(s=>s.filter(d=>_(d.node))),I=O.map(s=>s.at(-1)?.node||null),l=i.combine(t.treeStore,I,({steps:s},d)=>s.find(f=>d&&_(d)&&f.id===d.stepId)||null),h=i.combine(t.treeStore,$,({steps:s},d)=>{const f=d.at(-2);if(!f||!_(f.node))return null;const y=f.node;return s.find(B=>B.id===y.stepId)||null}),v=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?Le(s,d,f):[]),T=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?Re(s,d,f):[-1,-1]),L=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?De(s,d,f):[-1,-1]),F=Q.store(!1),P=i.createApi(F,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),me=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),Se=i.attach({source:t.treeStore,effect:async(s,d)=>{const f=s.nodes.find(y=>_(y)&&y.stepId===d);f&&e.history.push({experienceId:t.id,node:f})}}),Y=i.attach({source:I,effect:s=>{}}),W=i.attach({source:t.treeStore,effect:async({nodes:s})=>pe(s)}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},f)=>{if(X(f))return z(f,s,d)}}),K=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:f},y)=>{if(!oe(y))return;const B=f.find(A=>A.id===y.conditionalId);if(!B)return;const x=y.id,w=await J(e,B.condition);return Pe(!!w,x,s,d)}}),Z=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},f)=>{if(!ie(f))return;const y=f.action;if(!y){N.logger("warn",`Action node ${f.id} has no action name`);return}const B=e.actions.getByName(y).getState();if(!B){N.logger("warn",`Action '${y}' not registered on client`);const x=d.find(w=>w.sourceNodeId===f.id&&w.sourceNodeHandle==="false");return x?s.find(w=>w.id===x.destinationNodeId):null}if(typeof B.action!="function"){N.logger("warn",`Action '${y}' is not a function`);const x=d.find(w=>w.sourceNodeId===f.id&&w.sourceNodeHandle==="false");return x?s.find(w=>w.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${y}`),await B.action(y);const x=d.find(A=>A.sourceNodeId===f.id&&A.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${f.id}`),null;const w=s.find(A=>A.id===x.destinationNodeId);return N.logger("info",`Action '${y}' succeeded, moving to node ${w?.id}`),w||null}catch(x){N.logger("warn",`Action '${y}' failed:`,x);const w=d.find(H=>H.sourceNodeId===f.id&&H.sourceNodeHandle==="false");if(!w)return N.logger("warn",`No 'false' edge found for action node ${f.id}`),null;const A=s.find(H=>H.id===w.destinationNodeId);return N.logger("info",`Action '${y}' failed, moving to node ${A?.id}`),A||null}}}),he=i.createEffect(s=>{if(se(s))return e.launchExperienceById(s.experienceId)}),ee=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:f}])=>z(s,d,f)}),D=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:f}])=>z(s,d,f)}),ye=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),te=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ce(s)?!!await J(e,s):s??!1}),V=i.createEvent(),ne=i.createEvent();return i.sample({source:I,target:V}),i.sample({clock:V,filter:s=>s===null,target:W}),i.sample({clock:V,filter:s=>s!==null,target:ne}),i.split({source:ne,match:s=>oe(s)?"condition":_(s)?"step":se(s)?"launchExperience":X(s)?"origin":ie(s)?"action":"other",cases:{origin:G,condition:K,step:Y,launchExperience:he,action:Z,__:i.createEvent()}}),i.sample({clock:[K.doneData,G.doneData,W.doneData,D.doneData,ee.doneData,Z.doneData],filter:Boolean,target:ye}),i.sample({clock:a,target:D}),i.sample({clock:a,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:me}),i.sample({clock:o,target:Se}),i.sample({source:i.combine([K.pending,G.pending,W.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Y.doneData,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:te}),i.sample({source:te.doneData,fn:Boolean,target:F}),i.sample({source:I,clock:n,filter:s=>s?X(s):!0,target:ee}),i.sample({source:F,filter:Boolean,target:n}),i.sample({source:F,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:F,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:S,stateStore:k,isOpenStore:F,open:P.open,close:P.close,toggleOpen:P.toggle,setOpen:P.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:I,currentStepStore:l,previousStepStore:h,nextReachableStepNodesStore:v,stepsToOriginStore:T,stepsToLeafStore:L,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:$}});function ge(e){return U.invoke(He,e)}const Ce=U.createFactory(({client:e})=>{const t=Q.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(l,h){const v=[...l[h.experienceId]??[]];return v.push(h),{...l,[h.experienceId]:v}},unregister(l,h){const v=h.experienceId,T=l[v]?.filter(L=>L!==h);return{...l,[v]:T??[]}}}),o=i.createEffect(({experience:l,target:h})=>ge({client:e,experience:l,target:h})),u=i.createEffect(l=>{c.register(l)}),p=i.createEffect(l=>{l.target&&Ae(l.target,()=>{a(l)})}),S=i.createEffect(l=>{c.unregister(l)}),k=i.createEffect(l=>{const h=l.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const v=h.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const T=l.target;if(!T){N.logger("error",`No target element registered for experience '${l.experienceId}'. Skipping rendering.`);return}const L=ve(T);try{v.render(L,h.component,e,l)}catch(F){N.logger("error",F)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(l=>({type:"experience_initialize",experienceInstance:l}))}),i.sample({clock:n,target:k});function O(l,h){r({experience:l,target:h})}const $=t.map(l=>Object.values(l).flat());function I(l){return t.map(h=>h[l]||[],{skipVoid:!1})}return{spawn:O,getByExperienceId:I,listStore:$}});function je(e){return U.invoke(Ce,e)}exports.createAppHosts=Be;exports.createExperienceInstance=ge;exports.createExperienceInstanceIndex=je;exports.domInteractive=be;exports.evaluateRuleLogic=J;exports.getTargetElements=Fe;exports.isPickedRoot=ue;exports.isRulesLogic=ce;exports.isStepNode=_;exports.tagTargetElement=_e;
|