@picked/client 0.0.12-next.11 → 0.0.12-next.13
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/plugins/shopify/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/plugins/shopify/index.js +46 -38
- package/dist/esm/server/index.js +1 -1
- package/dist/experience-instance-B2l_MG7I.cjs +1 -0
- package/dist/{experience-instance-7IUp4MTc.js → experience-instance-QtGs0N3g.js} +164 -164
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/plugins/shopify/shopify.d.ts +19 -5
- package/dist/types/plugins/shopify/shopify.d.ts.map +1 -1
- package/dist/types/plugins/shopify/utils.d.ts +56 -0
- package/dist/types/plugins/shopify/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/experience-instance-BLph5qCo.cjs +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var U=Object.defineProperty;var V=(t,e,r)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var y=(t,e,r)=>V(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),h=require("@withease/factories"),F=require("../experience-instance-BLph5qCo.cjs"),I=require("../logger-BsmHUUw1.cjs"),w=require("../storage-DuRlyFaY.cjs"),N=require("../id-BKIWbSTy.cjs"),z=require("../object-BbFTsGh3.cjs"),k=require("../supports-YvpQZxbh.cjs"),L=f.createDomain("experience"),_=h.createFactory(({client:t,experience:e})=>{const r=L.store(e),n=f.createApi(r,{merge(l,S){return{...l,...S.experience}}}),c=r.map(l=>({name:l.name,decisionLogic:l.decide,targetSelectors:l.targets,initializeOpenLogic:e.initializeOpen})),u=t.components.listStore.map(l=>l.find(S=>S.name===`experience:${e.id}`)||l.find(S=>S.name==="experience"),{skipVoid:!1}),s=r.map(l=>({steps:l.steps,nodes:l.nodes,edges:l.edges,conditionals:l.conditionals})),o=e.actions??[];return{id:e.id,configStore:c,treeStore:s,componentStore:u,actions:o,merge:n.merge}});function q(t){return h.invoke(_,t)}const K=h.createFactory(({client:t})=>{const e=L.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.id]:o}}});function n(s){const o=e.getState()[s.id];if(o){o.merge({experience:s,strategy:"override"});return}const l=q({client:t,experience:s});r.register(l)}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getById:u,listStore:c}});function H(t){return h.invoke(K,t)}const W=(t,e)=>{e.register(t)},M=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=F.getTargetElements(r,e.id);n.forEach(({elements:u})=>u.forEach(s=>F.tagTargetElement(s,e.id))),F.createAppHosts(n,e.id).forEach(u=>{t.experienceInstances.spawn(e,u)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await G(t,e)&&M(t,e)}))},G=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return F.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&F.isRulesLogic(r)?await F.evaluateRuleLogic(t,r)===!0:!0},Y=(t,e,r)=>{const n=e.name,c=e.setup(t);if(c){const u=r[n]??{};r[n]=Object.freeze({...u,...c})}},J=f.createDomain("component"),Q=h.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function X(t){return h.invoke(Q,t)}const Z=h.createFactory(({client:t})=>{const e=J.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:o}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Component '${s}' already registered. Registering again will override the previous registration.`);const S=X({client:t,name:s,component:o});r.register(S)}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function ee(t){return h.invoke(Z,t)}const $=(t,e,r)=>{r.register(t,e)},te=f.createDomain("framework"),re=h.createFactory(({client:t})=>{const e=te.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:o.framework}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Framework '${s}' already registered. Registering again will override the previous registration.`),r.register({name:s,framework:o})}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function se(t){return h.invoke(re,t)}const ne=(t,e)=>{e.register(t.name,t)},oe=6e3,j=w.createStorageKey("last_ping","global"),ie=t=>`${t}/api/v1/ping`,ae=async t=>{try{const e=Date.now(),r=localStorage.getItem(j);if(r&&e-parseInt(r)<oe)return!0;const n=ie(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},u=JSON.stringify(c),s={"Content-Type":"application/json"},o=document.getElementById("picked_script"),l=o==null?void 0:o.dataset.verceltoken;l&&(s["x-vercel-protection-bypass"]=l);const b=(await fetch(n,{method:"POST",headers:s,body:u})).ok;return b&&localStorage.setItem(j,e.toString()),b}catch(e){return I.logger("error",e),!1}};function ce(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 ue=f.createDomain("predicate"),le=h.createFactory(({client:t})=>{const e=ue.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:{name:o.name,predicate:o.predicate}}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:o}))}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function pe(t){return h.invoke(le,t)}const ge=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),de=h.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(p,a){return{...p,[a.id]:a.feature}}});function c(p,a){e.getState()[p]&&I.logger("warn",`Feature '${p}' already registered. Registering again will override the previous registration.`);const d={id:p,feature:{...a,id:p}};n.register(Object.freeze({id:p,feature:d}))}const u=f.createEffect(async({id:p,key:a,storage:i="local"})=>{const d=w.createStorageKey(`feature:${p}:${a}`,"global"),g=(i==="session"?w.sessionStore:w.localStore).get(d).boolean();return g===null?null:{id:p,key:a,bucket:g}}),s=f.createEffect(p=>{if(!p)return null;const a=w.createStorageKey(`feature:${p.id}:${p.key}`,"global");(p.storage==="session"?w.sessionStore:w.localStore).set(a,p.bucket)}),o=new Map,l=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:p,resolvedFeaturesStore:a},{id:i,decide:d,key:m})=>{const g=a.find(A=>A.id===i);if(g)return g;const v=p[i];if(!v)throw new Error(`Feature with id '${i}' not found`);const x=o.get(`${i}:${m}`);if(x!==void 0){const A=await x;return{id:v.id,bucket:A,key:m,storage:v.feature.storage}}const P=d();o.set(`${i}:${m}`,P);const E=await P;return{id:v.id,bucket:E,key:m,storage:v.feature.storage}}});f.sample({clock:n.register,fn:p=>{const{id:a,feature:i}=p;return{id:a,key:i.feature.key,storage:i.feature.storage}},target:u}),f.sample({source:e,clock:l.doneData,fn:(p,a)=>{var v;const{id:i,bucket:d,storage:m}=a,g=(v=p[i])==null?void 0:v.feature.key;return g?{key:g,id:i,bucket:d,storage:m}:null},target:s});const S=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:p,resolvedFeaturesStore:a})=>Object.values(p).map(i=>{const d=a.find(m=>m.id===i.id);return d?{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:()=>({id:i.id,bucket:d.bucket}),isResolved:!0}:{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:async()=>await l(i.feature),isResolved:!1}}));f.sample({clock:l.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:p},{id:a})=>!p.some(i=>i.id===a),fn:(p,a)=>a,target:t.eventBus.prepend(p=>({type:"feature_decide",feature:p}))}),f.sample({clock:[u.doneData,l.doneData],source:r,fn:(p,a)=>!a||p.some(i=>i.id===a.id)?p:[...p,a],target:r});function b(p){return e.map(a=>a[p],{skipVoid:!1})}return{register:c,getByName:b,listStore:S}});function fe(t){return h.invoke(de,t)}const me=(t,e,r)=>{r.register(t,e)},R=f.createDomain("history");function O(t,e){return{id:N.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const ye=h.createFactory(()=>{const t=R.store({entries:[]}),e=R.event(),r=R.event(),n=R.event(),c=R.event();t.on(e,(s,o)=>({entries:[...s.entries,O(o.experienceId,o.node)]})),t.on(r,(s,o)=>({entries:[...s.entries.slice(0,-1),O(o.experienceId,o.node)]})),t.on(c,(s,o)=>o);function u(s,o){const l={lastStepIndex:-1,secondLastStepIndex:-1};for(let S=s.length-1;S>=0;S--){const b=s[S],p=b==null?void 0:b.node;if(!(!p||!F.isStepNode(p))&&!(o&&(b==null?void 0:b.experienceId)!==o))if(l.lastStepIndex===-1)l.lastStepIndex=S;else{l.secondLastStepIndex=S;break}}return l}return t.on(n,(s,o)=>{const{secondLastStepIndex:l}=u(s.entries,o.experienceId),S=l!==-1?s.entries.slice(0,l+1):s.entries;return{...s,entries:S}}),{push:e,replace:r,back:n,restore:c,entriesStore:t.map(s=>s.entries)}});function he(){return h.invoke(ye)}const Se=()=>f.createEvent(),ve=f.createDomain("field"),ke=h.createFactory(()=>{const t=ve.store({}),e=f.createApi(t,{register(s,o){return{...s,[o.field.id]:o.field}}});function r(s){e.register({field:s})}const n=t.map(s=>Object.values(s));function c(s){return t.map(o=>o[s]||null)}function u(s){return t.map(o=>Object.values(o).find(l=>l.name===s)||null)}return{register:r,getById:c,listStore:n,getByName:u}});function we(){return h.invoke(ke)}const Fe=(t,e)=>{e.register(t)},be=f.createDomain("action"),Ie=h.createFactory(()=>{const t=be.store({}),e=f.createApi(t,{register(u,s){return{...u,[s.name]:{name:s.name,action:s.action}}}});function r(u,s){e.register({name:u,action:s})}const n=t.map(u=>Object.values(u));function c(u){return t.map(s=>s[u],{skipVoid:!1})}return{register:r,getByName:c,listStore:n}});function xe(){return h.invoke(Ie)}const Ee=(t,e,r)=>{r.register(t,e)},Re=f.createDomain("response"),Pe=h.createFactory(({client:t})=>{const e=Re.store({}),r=f.createEvent(),n=f.createEvent(),c=f.createApi(e,{register(a,i){return{...a,[i.fieldId]:i.response}},registerBatch(a,i){return{...a,...i}},clear(a,i){const{[i]:d,...m}=a;return m},clearAll(){return{}}});function u(a,i){c.register({fieldId:a,response:i})}async function s(a){const i=[];return await Promise.allSettled(Object.entries(a).map(async([d,m])=>{let g=m;const v=t.fields.getById(d).getState();if(!v){i.push({fieldId:d,userMessage:`Field '${d}' not found`,systemMessage:`No field with ID '${d}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:g});return}if(v.multiple&&(typeof g=="string"||typeof g=="number"||typeof g=="boolean")&&(g=[g]),v.validation&&!z.isEmpty(v.validation)){const x=await F.evaluateRuleLogic(t,v.validation,{$input:g});if(typeof x=="string"){i.push({fieldId:d,userMessage:x,systemMessage:`Field validation resulted in an error: ${x}.`,value:g});return}if(x===!1){i.push({fieldId:d,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:g});return}}if(v.required&&(typeof g>"u"||g===null||g===""||Array.isArray(g)&&!g.length)){i.push({fieldId:d,userMessage:"This field is required",systemMessage:"Field is required.",value:g});return}if(!v.multiple&&Array.isArray(g)&&g.length>1){i.push({fieldId:d,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:g});return}if(v.options){const x=v.options.map(E=>E.value),P=Array.isArray(g)?g:[g];Array.isArray(g)&&(P.every(E=>x.includes(E))||i.push({fieldId:d,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${x.join(", ")}`,value:g}))}})),{responsesToCommit:a,validationErrors:i}}async function o(a){const{responsesToCommit:i,validationErrors:d}=await s(a);return d.length?{errors:d}:(c.registerBatch(i),{errors:[]})}const l=e.map(a=>a),S=e.map(a=>Object.keys(a).map(d=>({fieldId:d,value:a[d]})));function b(a){const i=t.fields.getById(a),d=e.map(m=>m[a]||null);return f.combine({f:i,r:d},({f:m,r:g})=>g||(m!=null&&m.defaultValue?m.defaultValue:null))}function p(a){const i=t.fields.getByName(a);return f.combine({f:i,s:e},({f:d,s:m})=>{const g=d&&m[d.id]||null;return g||(d!=null&&d.defaultValue?d.defaultValue:null)})}return f.sample({clock:r,target:c.clearAll}),f.sample({clock:n,target:c.clear}),{register:u,clearAll:r,clear:n,commit:o,getResponsesToCommit:s,listStore:S,getAllStore:l,getByFieldId:b,getByFieldName:p}});function Ae(t){return h.invoke(Pe,t)}const De=()=>"0.0.12-next.11";function Be(){if(k.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e!=null&&e.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[c]of t.entries())c.startsWith("picked-")&&r.add(c);for(const c of r){const u=c.replace("picked-","");e[u]=t.getAll(c)}const n=w.createStorageKey("s");if(r.size>0)w.sessionStore.set(n,e);else{const c=w.sessionStore.get(n);if(c)return c.json()||{}}return e}function je(){if(k.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const Ce=()=>({id:je()}),Oe=w.createStorageKey("session","global"),Le=()=>{if(!k.supportsLocalStorage())return null;const t=w.localStore.get(Oe);let e=t.isSet()?t.json():null;return e||(e=Ce(),t.set(e)),e},Me=()=>Le();class D{constructor(e){y(this,"options");y(this,"isReady",!1);y(this,"project");y(this,"plugins",{});y(this,"eventBus",Se());y(this,"organizationId");y(this,"projectId");y(this,"apiUrl");y(this,"session");y(this,"searchParams",$e());y(this,"history",he());y(this,"components",ee({client:this}));y(this,"experienceInstances",F.createExperienceInstanceIndex({client:this}));y(this,"experiences",H({client:this}));y(this,"frameworks",se({client:this}));y(this,"predicates",pe({client:this}));y(this,"features",fe({client:this}));y(this,"responses",Ae({client:this}));y(this,"fields",we());y(this,"actions",xe());I.logger("info","Picked client initializing."),this.organizationId=e.organizationId,this.projectId=e.projectId,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Be(),this.session=Me(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.eventBus({type:"initialized",version:De()}),I.logger("info","Picked client initialized.")}start(){ae(this),(async()=>{k.supportsDocument()&&(document.body&&B(this),await F.domInteractive(),await B(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session}))})()}registerFramework(e){ne(e,this.frameworks)}registerComponent(e,r){$(e,r,this.components)}registerPlugin(e){Y(this,e,this.plugins)}registerFeature(e,r){me(e,r,this.features)}registerPredicate(e,r){ge(e,r,this.predicates)}registerField(e){Fe(e,this.fields)}registerAction(e,r){Ee(e,r,this.actions)}registerExperience(e){e.component&&$(`experience:${e.id}`,e.component,this.components),W(e,this.experiences)}getStateSnapshot(){return ce(this)}async launchExperienceById(e){const r=this.experiences.getById(e).getState();if(!r){I.logger("warn",`Experience with id '${e}' not found.`);return}M(this,r)}setupPlugins(){var e;(e=this.options.plugins)==null||e.forEach(r=>{if(Array.isArray(r)){r.forEach(c=>{this.registerPlugin(c)});return}const n=typeof r=="function"?r():r;if(Array.isArray(n)){n.forEach(c=>this.registerPlugin(c));return}this.registerPlugin(n)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,n])=>{const c=typeof n=="function"?n():n;this.registerFeature(r,c)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[n,c]=r.split(":");if(!n||!c)return;let u=c;u==="true"&&(u=!0),u==="false"&&(u=!1),this.registerFeature(n,{key:`${u}`,name:n,decide:()=>u,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){I.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"){I.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,n)})}getPluginConfig(e){return this.plugins[e]??{}}}y(D,"logger",I.logger);function T(t){var e;return((e=t.options)==null?void 0:e.some(r=>"condition"in r))??!1}function Te(t){return t.some(e=>e.condition||T(e))}async function Ue(t,e){return e.length===0||!Te(e)?e:(await Promise.all(e.map(async n=>{if(!(n.condition?await F.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!T(n))return n;const s=(await Promise.all(n.options.map(async l=>l.condition?await F.evaluateRuleLogic(t,l.condition)?l:null:l))).filter(l=>l!==null);return s.length===n.options.length?n:s.length===0?null:{...n,options:s}}))).filter(n=>n!==null)}const Ve=t=>{const e=new D(t);return k.bindClient(e),e};exports.evaluateRuleLogic=F.evaluateRuleLogic;exports.isPickedRoot=F.isPickedRoot;exports.createStorageKey=w.createStorageKey;exports.localStore=w.localStore;exports.sessionStore=w.sessionStore;exports.subscribe=w.subscribe;exports.supportsCookies=k.supportsCookies;exports.supportsCryptoRandomUUID=k.supportsCryptoRandomUUID;exports.supportsDocument=k.supportsDocument;exports.supportsHistory=k.supportsHistory;exports.supportsIntersectionObserver=k.supportsIntersectionObserver;exports.supportsLocalStorage=k.supportsLocalStorage;exports.supportsLocation=k.supportsLocation;exports.supportsSessionStorage=k.supportsSessionStorage;exports.supportsShadowRoot=k.supportsShadowRoot;exports.supportsWebComponents=k.supportsWebComponents;exports.supportsWindow=k.supportsWindow;exports.Picked=D;exports.createClient=Ve;exports.getStepFields=Ue;
|
|
1
|
+
"use strict";var U=Object.defineProperty;var V=(t,e,r)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var y=(t,e,r)=>V(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),h=require("@withease/factories"),F=require("../experience-instance-B2l_MG7I.cjs"),I=require("../logger-BsmHUUw1.cjs"),w=require("../storage-DuRlyFaY.cjs"),N=require("../id-BKIWbSTy.cjs"),z=require("../object-BbFTsGh3.cjs"),k=require("../supports-YvpQZxbh.cjs"),L=f.createDomain("experience"),_=h.createFactory(({client:t,experience:e})=>{const r=L.store(e),n=f.createApi(r,{merge(l,S){return{...l,...S.experience}}}),c=r.map(l=>({name:l.name,decisionLogic:l.decide,targetSelectors:l.targets,initializeOpenLogic:e.initializeOpen})),u=t.components.listStore.map(l=>l.find(S=>S.name===`experience:${e.id}`)||l.find(S=>S.name==="experience"),{skipVoid:!1}),s=r.map(l=>({steps:l.steps,nodes:l.nodes,edges:l.edges,conditionals:l.conditionals})),o=e.actions??[];return{id:e.id,configStore:c,treeStore:s,componentStore:u,actions:o,merge:n.merge}});function q(t){return h.invoke(_,t)}const K=h.createFactory(({client:t})=>{const e=L.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.id]:o}}});function n(s){const o=e.getState()[s.id];if(o){o.merge({experience:s,strategy:"override"});return}const l=q({client:t,experience:s});r.register(l)}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getById:u,listStore:c}});function H(t){return h.invoke(K,t)}const W=(t,e)=>{e.register(t)},M=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=F.getTargetElements(r,e.id);n.forEach(({elements:u})=>u.forEach(s=>F.tagTargetElement(s,e.id))),F.createAppHosts(n,e.id).forEach(u=>{t.experienceInstances.spawn(e,u)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await G(t,e)&&M(t,e)}))},G=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return F.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&F.isRulesLogic(r)?await F.evaluateRuleLogic(t,r)===!0:!0},Y=(t,e,r)=>{const n=e.name,c=e.setup(t);if(c){const u=r[n]??{};r[n]=Object.freeze({...u,...c})}},J=f.createDomain("component"),Q=h.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function X(t){return h.invoke(Q,t)}const Z=h.createFactory(({client:t})=>{const e=J.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:o}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Component '${s}' already registered. Registering again will override the previous registration.`);const S=X({client:t,name:s,component:o});r.register(S)}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function ee(t){return h.invoke(Z,t)}const $=(t,e,r)=>{r.register(t,e)},te=f.createDomain("framework"),re=h.createFactory(({client:t})=>{const e=te.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:o.framework}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Framework '${s}' already registered. Registering again will override the previous registration.`),r.register({name:s,framework:o})}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function se(t){return h.invoke(re,t)}const ne=(t,e)=>{e.register(t.name,t)},oe=6e3,j=w.createStorageKey("last_ping","global"),ie=t=>`${t}/api/v1/ping`,ae=async t=>{try{const e=Date.now(),r=localStorage.getItem(j);if(r&&e-parseInt(r)<oe)return!0;const n=ie(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},u=JSON.stringify(c),s={"Content-Type":"application/json"},o=document.getElementById("picked_script"),l=o==null?void 0:o.dataset.verceltoken;l&&(s["x-vercel-protection-bypass"]=l);const b=(await fetch(n,{method:"POST",headers:s,body:u})).ok;return b&&localStorage.setItem(j,e.toString()),b}catch(e){return I.logger("error",e),!1}};function ce(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 ue=f.createDomain("predicate"),le=h.createFactory(({client:t})=>{const e=ue.store({}),r=f.createApi(e,{register(s,o){return{...s,[o.name]:{name:o.name,predicate:o.predicate}}}});function n(s,o){e.getState()[s]&&I.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:o}))}const c=e.map(s=>Object.values(s));function u(s){return e.map(o=>o[s],{skipVoid:!1})}return{register:n,getByName:u,listStore:c}});function pe(t){return h.invoke(le,t)}const ge=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),de=h.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(p,a){return{...p,[a.id]:a.feature}}});function c(p,a){e.getState()[p]&&I.logger("warn",`Feature '${p}' already registered. Registering again will override the previous registration.`);const d={id:p,feature:{...a,id:p}};n.register(Object.freeze({id:p,feature:d}))}const u=f.createEffect(async({id:p,key:a,storage:i="local"})=>{const d=w.createStorageKey(`feature:${p}:${a}`,"global"),g=(i==="session"?w.sessionStore:w.localStore).get(d).boolean();return g===null?null:{id:p,key:a,bucket:g}}),s=f.createEffect(p=>{if(!p)return null;const a=w.createStorageKey(`feature:${p.id}:${p.key}`,"global");(p.storage==="session"?w.sessionStore:w.localStore).set(a,p.bucket)}),o=new Map,l=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:p,resolvedFeaturesStore:a},{id:i,decide:d,key:m})=>{const g=a.find(A=>A.id===i);if(g)return g;const v=p[i];if(!v)throw new Error(`Feature with id '${i}' not found`);const x=o.get(`${i}:${m}`);if(x!==void 0){const A=await x;return{id:v.id,bucket:A,key:m,storage:v.feature.storage}}const P=d();o.set(`${i}:${m}`,P);const E=await P;return{id:v.id,bucket:E,key:m,storage:v.feature.storage}}});f.sample({clock:n.register,fn:p=>{const{id:a,feature:i}=p;return{id:a,key:i.feature.key,storage:i.feature.storage}},target:u}),f.sample({source:e,clock:l.doneData,fn:(p,a)=>{var v;const{id:i,bucket:d,storage:m}=a,g=(v=p[i])==null?void 0:v.feature.key;return g?{key:g,id:i,bucket:d,storage:m}:null},target:s});const S=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:p,resolvedFeaturesStore:a})=>Object.values(p).map(i=>{const d=a.find(m=>m.id===i.id);return d?{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:()=>({id:i.id,bucket:d.bucket}),isResolved:!0}:{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:async()=>await l(i.feature),isResolved:!1}}));f.sample({clock:l.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:p},{id:a})=>!p.some(i=>i.id===a),fn:(p,a)=>a,target:t.eventBus.prepend(p=>({type:"feature_decide",feature:p}))}),f.sample({clock:[u.doneData,l.doneData],source:r,fn:(p,a)=>!a||p.some(i=>i.id===a.id)?p:[...p,a],target:r});function b(p){return e.map(a=>a[p],{skipVoid:!1})}return{register:c,getByName:b,listStore:S}});function fe(t){return h.invoke(de,t)}const me=(t,e,r)=>{r.register(t,e)},R=f.createDomain("history");function O(t,e){return{id:N.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const ye=h.createFactory(()=>{const t=R.store({entries:[]}),e=R.event(),r=R.event(),n=R.event(),c=R.event();t.on(e,(s,o)=>({entries:[...s.entries,O(o.experienceId,o.node)]})),t.on(r,(s,o)=>({entries:[...s.entries.slice(0,-1),O(o.experienceId,o.node)]})),t.on(c,(s,o)=>o);function u(s,o){const l={lastStepIndex:-1,secondLastStepIndex:-1};for(let S=s.length-1;S>=0;S--){const b=s[S],p=b==null?void 0:b.node;if(!(!p||!F.isStepNode(p))&&!(o&&(b==null?void 0:b.experienceId)!==o))if(l.lastStepIndex===-1)l.lastStepIndex=S;else{l.secondLastStepIndex=S;break}}return l}return t.on(n,(s,o)=>{const{secondLastStepIndex:l}=u(s.entries,o.experienceId),S=l!==-1?s.entries.slice(0,l+1):s.entries;return{...s,entries:S}}),{push:e,replace:r,back:n,restore:c,entriesStore:t.map(s=>s.entries)}});function he(){return h.invoke(ye)}const Se=()=>f.createEvent(),ve=f.createDomain("field"),ke=h.createFactory(()=>{const t=ve.store({}),e=f.createApi(t,{register(s,o){return{...s,[o.field.id]:o.field}}});function r(s){e.register({field:s})}const n=t.map(s=>Object.values(s));function c(s){return t.map(o=>o[s]||null)}function u(s){return t.map(o=>Object.values(o).find(l=>l.name===s)||null)}return{register:r,getById:c,listStore:n,getByName:u}});function we(){return h.invoke(ke)}const Fe=(t,e)=>{e.register(t)},be=f.createDomain("action"),Ie=h.createFactory(()=>{const t=be.store({}),e=f.createApi(t,{register(u,s){return{...u,[s.name]:{name:s.name,action:s.action}}}});function r(u,s){e.register({name:u,action:s})}const n=t.map(u=>Object.values(u));function c(u){return t.map(s=>s[u],{skipVoid:!1})}return{register:r,getByName:c,listStore:n}});function xe(){return h.invoke(Ie)}const Ee=(t,e,r)=>{r.register(t,e)},Re=f.createDomain("response"),Pe=h.createFactory(({client:t})=>{const e=Re.store({}),r=f.createEvent(),n=f.createEvent(),c=f.createApi(e,{register(a,i){return{...a,[i.fieldId]:i.response}},registerBatch(a,i){return{...a,...i}},clear(a,i){const{[i]:d,...m}=a;return m},clearAll(){return{}}});function u(a,i){c.register({fieldId:a,response:i})}async function s(a){const i=[];return await Promise.allSettled(Object.entries(a).map(async([d,m])=>{let g=m;const v=t.fields.getById(d).getState();if(!v){i.push({fieldId:d,userMessage:`Field '${d}' not found`,systemMessage:`No field with ID '${d}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:g});return}if(v.multiple&&(typeof g=="string"||typeof g=="number"||typeof g=="boolean")&&(g=[g]),v.validation&&!z.isEmpty(v.validation)){const x=await F.evaluateRuleLogic(t,v.validation,{$input:g});if(typeof x=="string"){i.push({fieldId:d,userMessage:x,systemMessage:`Field validation resulted in an error: ${x}.`,value:g});return}if(x===!1){i.push({fieldId:d,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:g});return}}if(v.required&&(typeof g>"u"||g===null||g===""||Array.isArray(g)&&!g.length)){i.push({fieldId:d,userMessage:"This field is required",systemMessage:"Field is required.",value:g});return}if(!v.multiple&&Array.isArray(g)&&g.length>1){i.push({fieldId:d,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:g});return}if(v.options){const x=v.options.map(E=>E.value),P=Array.isArray(g)?g:[g];Array.isArray(g)&&(P.every(E=>x.includes(E))||i.push({fieldId:d,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${x.join(", ")}`,value:g}))}})),{responsesToCommit:a,validationErrors:i}}async function o(a){const{responsesToCommit:i,validationErrors:d}=await s(a);return d.length?{errors:d}:(c.registerBatch(i),{errors:[]})}const l=e.map(a=>a),S=e.map(a=>Object.keys(a).map(d=>({fieldId:d,value:a[d]})));function b(a){const i=t.fields.getById(a),d=e.map(m=>m[a]||null);return f.combine({f:i,r:d},({f:m,r:g})=>g||(m!=null&&m.defaultValue?m.defaultValue:null))}function p(a){const i=t.fields.getByName(a);return f.combine({f:i,s:e},({f:d,s:m})=>{const g=d&&m[d.id]||null;return g||(d!=null&&d.defaultValue?d.defaultValue:null)})}return f.sample({clock:r,target:c.clearAll}),f.sample({clock:n,target:c.clear}),{register:u,clearAll:r,clear:n,commit:o,getResponsesToCommit:s,listStore:S,getAllStore:l,getByFieldId:b,getByFieldName:p}});function Ae(t){return h.invoke(Pe,t)}const De=()=>"0.0.12-next.13";function Be(){if(k.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e!=null&&e.dataset.api)return e.dataset.api}return"https://api.picked.app"}function $e(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[c]of t.entries())c.startsWith("picked-")&&r.add(c);for(const c of r){const u=c.replace("picked-","");e[u]=t.getAll(c)}const n=w.createStorageKey("s");if(r.size>0)w.sessionStore.set(n,e);else{const c=w.sessionStore.get(n);if(c)return c.json()||{}}return e}function je(){if(k.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const Ce=()=>({id:je()}),Oe=w.createStorageKey("session","global"),Le=()=>{if(!k.supportsLocalStorage())return null;const t=w.localStore.get(Oe);let e=t.isSet()?t.json():null;return e||(e=Ce(),t.set(e)),e},Me=()=>Le();class D{constructor(e){y(this,"options");y(this,"isReady",!1);y(this,"project");y(this,"plugins",{});y(this,"eventBus",Se());y(this,"organizationId");y(this,"projectId");y(this,"apiUrl");y(this,"session");y(this,"searchParams",$e());y(this,"history",he());y(this,"components",ee({client:this}));y(this,"experienceInstances",F.createExperienceInstanceIndex({client:this}));y(this,"experiences",H({client:this}));y(this,"frameworks",se({client:this}));y(this,"predicates",pe({client:this}));y(this,"features",fe({client:this}));y(this,"responses",Ae({client:this}));y(this,"fields",we());y(this,"actions",xe());I.logger("info","Picked client initializing."),this.organizationId=e.organizationId,this.projectId=e.projectId,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Be(),this.session=Me(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.eventBus({type:"initialized",version:De()}),I.logger("info","Picked client initialized.")}start(){ae(this),(async()=>{k.supportsDocument()&&(document.body&&B(this),await F.domInteractive(),await B(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session}))})()}registerFramework(e){ne(e,this.frameworks)}registerComponent(e,r){$(e,r,this.components)}registerPlugin(e){Y(this,e,this.plugins)}registerFeature(e,r){me(e,r,this.features)}registerPredicate(e,r){ge(e,r,this.predicates)}registerField(e){Fe(e,this.fields)}registerAction(e,r){Ee(e,r,this.actions)}registerExperience(e){e.component&&$(`experience:${e.id}`,e.component,this.components),W(e,this.experiences)}getStateSnapshot(){return ce(this)}async launchExperienceById(e){const r=this.experiences.getById(e).getState();if(!r){I.logger("warn",`Experience with id '${e}' not found.`);return}M(this,r)}setupPlugins(){var e;(e=this.options.plugins)==null||e.forEach(r=>{if(Array.isArray(r)){r.forEach(c=>{this.registerPlugin(c)});return}const n=typeof r=="function"?r():r;if(Array.isArray(n)){n.forEach(c=>this.registerPlugin(c));return}this.registerPlugin(n)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,n])=>{const c=typeof n=="function"?n():n;this.registerFeature(r,c)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[n,c]=r.split(":");if(!n||!c)return;let u=c;u==="true"&&(u=!0),u==="false"&&(u=!1),this.registerFeature(n,{key:`${u}`,name:n,decide:()=>u,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){I.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"){I.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,n)})}getPluginConfig(e){return this.plugins[e]??{}}}y(D,"logger",I.logger);function T(t){var e;return((e=t.options)==null?void 0:e.some(r=>"condition"in r))??!1}function Te(t){return t.some(e=>e.condition||T(e))}async function Ue(t,e){return e.length===0||!Te(e)?e:(await Promise.all(e.map(async n=>{if(!(n.condition?await F.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!T(n))return n;const s=(await Promise.all(n.options.map(async l=>l.condition?await F.evaluateRuleLogic(t,l.condition)?l:null:l))).filter(l=>l!==null);return s.length===n.options.length?n:s.length===0?null:{...n,options:s}}))).filter(n=>n!==null)}const Ve=t=>{const e=new D(t);return k.bindClient(e),e};exports.evaluateRuleLogic=F.evaluateRuleLogic;exports.isPickedRoot=F.isPickedRoot;exports.createStorageKey=w.createStorageKey;exports.localStore=w.localStore;exports.sessionStore=w.sessionStore;exports.subscribe=w.subscribe;exports.supportsCookies=k.supportsCookies;exports.supportsCryptoRandomUUID=k.supportsCryptoRandomUUID;exports.supportsDocument=k.supportsDocument;exports.supportsHistory=k.supportsHistory;exports.supportsIntersectionObserver=k.supportsIntersectionObserver;exports.supportsLocalStorage=k.supportsLocalStorage;exports.supportsLocation=k.supportsLocation;exports.supportsSessionStorage=k.supportsSessionStorage;exports.supportsShadowRoot=k.supportsShadowRoot;exports.supportsWebComponents=k.supportsWebComponents;exports.supportsWindow=k.supportsWindow;exports.Picked=D;exports.createClient=Ve;exports.getStepFields=Ue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../../../supports-YvpQZxbh.cjs"),o={homepage:/^\/$/,page:/(?:^|\/)pages\/[^/]+$/,blog:/(?:^|\/)blogs\/(?<blogHandle>[^/]+)\/?$/,article:/^\/blogs\/[^/]+\/(?<article>[^/]+)\/?$/,cart:/(?:^|\/)cart\/[^/]+$/,checkout:/^\/checkout\/.+/,appProxy:/^\/(?:a|apps|community|tools)\/(?<proxyTarget>[^/]+)/,accountWildcard:/^\/account\/.+/,accountLogin:/^\/account\/login(?:\/|$)/,accountRegister:/^\/account\/register(?:\/|$)/},c=(e,a)=>a?!!e.exec(a.pathname):!1,i=(e,a)=>{if(a){const t=e.exec(a.pathname);if(t)return t[1]}},n=e=>{var a,t,s,p;switch(e){case"product":return((t=(a=globalThis.window.pickedConfig)==null?void 0:a.product)==null?void 0:t.handle)??!1;case"collection":return((p=(s=globalThis.window.pickedConfig)==null?void 0:s.collection)==null?void 0:p.handle)??!1;default:return!1}},r={"is-page":({location:e})=>c(o.page,e),"get-page-handle":({location:e})=>i(o.page,e),"is-product-page":()=>!!n("product"),"get-product-handle":()=>n("product"),"is-collection-page":()=>!!n("collection"),"get-collection-handle":()=>n("collection"),"is-blog-page":({location:e})=>c(o.blog,e),"get-blog-handle":({location:e})=>i(o.blog,e),"is-article-page":({location:e})=>c(o.article,e),"get-article-handle":({location:e})=>i(o.article,e),"is-app-proxy-page":({location:e})=>c(o.appProxy,e),"get-app-proxy-handle":({location:e})=>i(o.appProxy,e),"is-account-page":({location:e})=>c(o.accountWildcard,e),"is-login-page":({location:e})=>c(o.accountLogin,e),"is-register-page":({location:e})=>c(o.accountRegister,e),"is-cart-page":({location:e})=>c(o.cart,e),"is-checkout-page":({location:e})=>c(o.checkout,e),"is-homepage":({location:e})=>c(o.homepage,e)};function g(e){var a,t;return typeof((t=(a=e.Shopify)==null?void 0:a.analytics)==null?void 0:t.publish)=="function"}const u=()=>({name:"shopify",setup:e=>{Object.entries(r).forEach(([a,t])=>{e.registerPredicate(`shopify-${a}`,t)}),l.supportsWindow()&&e.eventBus.watch(a=>{g(window)&&a.type==="session"&&window.Shopify.analytics.publish("picked:session",{id:a.id})})}});exports.shopifyPlugin=u;
|
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-B2l_MG7I.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:f,resolve:t}=S(),o=r.createEvent(),s=r.createEvent(),l=r.createEvent(),u=r.createEvent(),p=r.createEvent(),g=c.experiences.listStore.map(e=>e.map(n=>k.createExperienceInstance({client:c,experience:n}))),a=r.createStore({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=r.createEffect(async({experience:e,availableRenderers:n,startRendererIndex:v=0})=>{if(!e)return null;for(let d=v;d<n.length;d++){const x=n[d],E=e.componentStore.getState();if(E&&(x!=null&&x.isValidComponent(E.component)))return{rendered:await x.render(E.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(u,e=>({...e,isComplete:!0})).reset(o),r.sample({clock:o,target:s}),r.sample({clock:s,source:{experiences:g,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:m}),r.sample({clock:m.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),r.sample({clock:l,target:s}),r.sample({clock:m.doneData,filter:e=>e===null,target:p}),r.sample({clock:p,target:s}),r.sample({clock:[s,p,l],source:{experiences:g,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex>=e.length,target:u});const I=r.attach({source:a,effect:e=>{e.isComplete&&t(e.renderedExperiences)}});return r.sample({clock:u,target:I}),o(),f}exports.render=C;
|
package/dist/esm/index.js
CHANGED
|
@@ -3,8 +3,8 @@ var Y = (t, e, r) => e in t ? W(t, e, { enumerable: !0, configurable: !0, writab
|
|
|
3
3
|
var m = (t, e, r) => Y(t, typeof e != "symbol" ? e + "" : e, r);
|
|
4
4
|
import { createDomain as I, createApi as x, createEffect as M, attach as J, sample as F, combine as O, createEvent as C } from "effector";
|
|
5
5
|
import { createFactory as w, invoke as k } from "@withease/factories";
|
|
6
|
-
import { g as U, t as Q, c as X, i as Z, e as A, a as ee, b as te, d as re } from "../experience-instance-
|
|
7
|
-
import { f as St } from "../experience-instance-
|
|
6
|
+
import { g as U, t as Q, c as X, i as Z, e as A, a as ee, b as te, d as re } from "../experience-instance-QtGs0N3g.js";
|
|
7
|
+
import { f as St } from "../experience-instance-QtGs0N3g.js";
|
|
8
8
|
import { l as v } from "../logger-C9a75KZn.js";
|
|
9
9
|
import { c as B, s as $, l as D } from "../storage-Cb_71y48.js";
|
|
10
10
|
import { a as wt } from "../storage-Cb_71y48.js";
|
|
@@ -619,7 +619,7 @@ const qe = (t, e, r) => {
|
|
|
619
619
|
function Ye(t) {
|
|
620
620
|
return k(We, t);
|
|
621
621
|
}
|
|
622
|
-
const Je = () => "0.0.12-next.
|
|
622
|
+
const Je = () => "0.0.12-next.13";
|
|
623
623
|
function Qe() {
|
|
624
624
|
if (_()) {
|
|
625
625
|
const t = [
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
const
|
|
1
|
+
import { a as l } from "../../../supports-BjhuLJ8z.js";
|
|
2
|
+
const o = {
|
|
3
3
|
homepage: /^\/$/,
|
|
4
|
-
productPage: /(?:^|\/)products\/(?<productHandle>[^/]+)\/?$/,
|
|
5
|
-
collection: /^\/collections\/[^/]+\/?$/,
|
|
6
4
|
page: /(?:^|\/)pages\/[^/]+$/,
|
|
7
5
|
blog: /(?:^|\/)blogs\/(?<blogHandle>[^/]+)\/?$/,
|
|
8
6
|
article: /^\/blogs\/[^/]+\/(?<article>[^/]+)\/?$/,
|
|
@@ -12,58 +10,68 @@ const a = {
|
|
|
12
10
|
accountWildcard: /^\/account\/.+/,
|
|
13
11
|
accountLogin: /^\/account\/login(?:\/|$)/,
|
|
14
12
|
accountRegister: /^\/account\/register(?:\/|$)/
|
|
15
|
-
},
|
|
16
|
-
if (
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
return
|
|
13
|
+
}, c = (e, a) => a ? !!e.exec(a.pathname) : !1, i = (e, a) => {
|
|
14
|
+
if (a) {
|
|
15
|
+
const t = e.exec(a.pathname);
|
|
16
|
+
if (t)
|
|
17
|
+
return t[1];
|
|
20
18
|
}
|
|
21
|
-
},
|
|
19
|
+
}, n = (e) => {
|
|
20
|
+
var a, t, p, s;
|
|
21
|
+
switch (e) {
|
|
22
|
+
case "product":
|
|
23
|
+
return ((t = (a = globalThis.window.pickedConfig) == null ? void 0 : a.product) == null ? void 0 : t.handle) ?? !1;
|
|
24
|
+
case "collection":
|
|
25
|
+
return ((s = (p = globalThis.window.pickedConfig) == null ? void 0 : p.collection) == null ? void 0 : s.handle) ?? !1;
|
|
26
|
+
default:
|
|
27
|
+
return !1;
|
|
28
|
+
}
|
|
29
|
+
}, r = {
|
|
22
30
|
// Pages
|
|
23
|
-
"is-page": ({ location: e }) =>
|
|
24
|
-
"get-page-handle": ({ location: e }) => i(
|
|
31
|
+
"is-page": ({ location: e }) => c(o.page, e),
|
|
32
|
+
"get-page-handle": ({ location: e }) => i(o.page, e),
|
|
25
33
|
// Products
|
|
26
|
-
"is-product-page": (
|
|
27
|
-
"get-product-handle": (
|
|
34
|
+
"is-product-page": () => !!n("product"),
|
|
35
|
+
"get-product-handle": () => n("product"),
|
|
28
36
|
// Collections
|
|
29
|
-
"is-collection-page": (
|
|
30
|
-
"get-collection-handle": (
|
|
37
|
+
"is-collection-page": () => !!n("collection"),
|
|
38
|
+
"get-collection-handle": () => n("collection"),
|
|
31
39
|
// Blogs
|
|
32
|
-
"is-blog-page": ({ location: e }) =>
|
|
33
|
-
"get-blog-handle": ({ location: e }) => i(
|
|
40
|
+
"is-blog-page": ({ location: e }) => c(o.blog, e),
|
|
41
|
+
"get-blog-handle": ({ location: e }) => i(o.blog, e),
|
|
34
42
|
// Blog Articles
|
|
35
|
-
"is-article-page": ({ location: e }) =>
|
|
36
|
-
"get-article-handle": ({ location: e }) => i(
|
|
43
|
+
"is-article-page": ({ location: e }) => c(o.article, e),
|
|
44
|
+
"get-article-handle": ({ location: e }) => i(o.article, e),
|
|
37
45
|
// Apps
|
|
38
|
-
"is-app-proxy-page": ({ location: e }) =>
|
|
39
|
-
"get-app-proxy-handle": ({ location: e }) => i(
|
|
46
|
+
"is-app-proxy-page": ({ location: e }) => c(o.appProxy, e),
|
|
47
|
+
"get-app-proxy-handle": ({ location: e }) => i(o.appProxy, e),
|
|
40
48
|
// Account
|
|
41
|
-
"is-account-page": ({ location: e }) =>
|
|
42
|
-
"is-login-page": ({ location: e }) =>
|
|
43
|
-
"is-register-page": ({ location: e }) =>
|
|
49
|
+
"is-account-page": ({ location: e }) => c(o.accountWildcard, e),
|
|
50
|
+
"is-login-page": ({ location: e }) => c(o.accountLogin, e),
|
|
51
|
+
"is-register-page": ({ location: e }) => c(o.accountRegister, e),
|
|
44
52
|
// Cart
|
|
45
|
-
"is-cart-page": ({ location: e }) =>
|
|
53
|
+
"is-cart-page": ({ location: e }) => c(o.cart, e),
|
|
46
54
|
// Checkout
|
|
47
|
-
"is-checkout-page": ({ location: e }) =>
|
|
55
|
+
"is-checkout-page": ({ location: e }) => c(o.checkout, e),
|
|
48
56
|
// Homepage
|
|
49
|
-
"is-homepage": ({ location: e }) =>
|
|
57
|
+
"is-homepage": ({ location: e }) => c(o.homepage, e)
|
|
50
58
|
};
|
|
51
|
-
function
|
|
52
|
-
var
|
|
53
|
-
return typeof ((
|
|
59
|
+
function g(e) {
|
|
60
|
+
var a, t;
|
|
61
|
+
return typeof ((t = (a = e.Shopify) == null ? void 0 : a.analytics) == null ? void 0 : t.publish) == "function";
|
|
54
62
|
}
|
|
55
|
-
const
|
|
63
|
+
const d = () => ({
|
|
56
64
|
name: "shopify",
|
|
57
65
|
setup: (e) => {
|
|
58
|
-
Object.entries(
|
|
59
|
-
e.registerPredicate(`shopify-${
|
|
60
|
-
}),
|
|
61
|
-
|
|
62
|
-
id:
|
|
66
|
+
Object.entries(r).forEach(([a, t]) => {
|
|
67
|
+
e.registerPredicate(`shopify-${a}`, t);
|
|
68
|
+
}), l() && e.eventBus.watch((a) => {
|
|
69
|
+
g(window) && a.type === "session" && window.Shopify.analytics.publish("picked:session", {
|
|
70
|
+
id: a.id
|
|
63
71
|
});
|
|
64
72
|
});
|
|
65
73
|
}
|
|
66
74
|
});
|
|
67
75
|
export {
|
|
68
|
-
|
|
76
|
+
d as shopifyPlugin
|
|
69
77
|
};
|
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-QtGs0N3g.js";
|
|
3
3
|
function R() {
|
|
4
4
|
let c, p;
|
|
5
5
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const i=require("effector"),q=require("@withease/factories"),C=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),ge=require("./object-BbFTsGh3.cjs");function me(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ne(e){return e instanceof Promise}function Z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(me(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function T(e){return`${e}`}const he={"==":(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(T(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(T).join(""),substr:(e,t,r)=>{const n=T(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>E(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=T(e);if(n===""||n===".")return this;const a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(e){return typeof e!="function"?null:e()},regexp_matches(e,t){let r=e,n="";if(E(e)){const[c,o]=e;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(t))},throw(e){throw new Error(T(e))}};async function g(e,t){if(!e)return e;if(ne(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!Z(e))return e;const r=Se(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 y=await B(await g(n[1],p));return{item:p,shouldInclude:y}}))).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 y=n.length>2?await g(n[2],t):null;for(const k of o)y=await g(u,{current:k,accumulator:y});return y}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 Z(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?he[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function B(e){return ne(e)?B(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Se(e){return Object.keys(e)[0]}function re(e){return!ge.isEmpty(e)}async function W(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:()=>p.predicate(n)}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:y}=await p.getBucket();return y}}),{}),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 ye(e){return!C.supportsWindow()||!C.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}function we(e){if(!C.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:"closed"})}function Ee(){return new Promise((e,t)=>{if(!C.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function Ne(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const H="picked-root",j="picked-target",Ie="picked-root";function xe(e,t){return[...e,{selector:`${Ie}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=ye(n.selector).filter(c=>!be(c,t)&&!oe(c,t));return{...n,elements:a}})}function ke(e,t){return e.flatMap(r=>r.elements.map(n=>Be(n,r.placement,t)))}function ve(e,t){e.classList.add(j),e.classList.add(`${j}-${t}`)}function be(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(`${j}`)}function oe(e,t){return t?e.classList.contains(`${H}-${t}`):e.classList.contains(H)}function Ae(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(H),t.classList.add(`${H}-${e}`),t}function Be(e,t,r){let n;const a=Ae(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 Fe(e){return e.type==="conditional"}function M(e){return e.type==="step"}function $e(e){return e.type==="experience"}function ee(e){return e.type==="origin"}function te(e){return e.type==="action"}const se=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),M(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?se(e,t,u,!1,a):[]})),Oe=(e,t,r)=>se(e,t,r,!0,new Set),ie=(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 y=e.find(L=>L.id===p.destinationNodeId);if(!y)continue;const[k,F]=ie(e,t,y,!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]},_e=(e,t,r)=>ie(e,t,r,!0,new Set),ae=(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[y,k]=ae(e,t,p,new Set(n));y!==-1&&(c=Math.min(c,y+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},Te=(e,t,r)=>ae(e,t,r,new Set),ce=e=>e.find(r=>r.type==="origin")||null,V=(e,t,r)=>{if(!e)return ce(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 Me(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==null?void 0:c.destinationNodeId))}const X=i.createDomain("experience-instance"),Le=q.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),y=t.componentStore,k=X.store("transitioning"),F=e.history.entriesStore.map(s=>s.filter(l=>l.experienceId===t.id)),L=F.map(s=>s.filter(l=>M(l.node))),I=F.map(s=>{var l;return((l=s[s.length-1])==null?void 0:l.node)||null}),f=i.combine(t.treeStore,I,({steps:s},l)=>s.find(d=>l&&M(l)&&d.id===l.stepId)||null),h=i.combine(t.treeStore,I,({nodes:s,edges:l},d)=>d?Oe(s,l,d):[]),A=i.combine(t.treeStore,I,({nodes:s,edges:l},d)=>d?Te(s,l,d):[-1,-1]),O=i.combine(t.treeStore,I,({nodes:s,edges:l},d)=>d?_e(s,l,d):[-1,-1]),v=X.store(!1),$=i.createApi(v,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,l)=>l}),fe=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),le=i.attach({source:t.treeStore,effect:async(s,l)=>{const d=s.nodes.find(w=>M(w)&&w.stepId===l);d&&e.history.push({experienceId:t.id,node:d})}}),z=i.attach({source:I,effect:s=>{}}),G=i.attach({source:t.treeStore,effect:async({nodes:s})=>ce(s)}),K=i.attach({source:t.treeStore,effect:async({nodes:s,edges:l},d)=>V(d,s,l)}),U=i.attach({source:t.treeStore,effect:async({nodes:s,edges:l,conditionals:d},w)=>{if(!w)return;const _=d.find(b=>b.id===w.conditionalId);if(!_)return;const x=w.id,S=await W(e,_.condition);return Me(!!S,x,s,l)}}),J=i.attach({source:t.treeStore,effect:async({nodes:s,edges:l},d)=>{if(!d||!te(d))return;const w=d.action;if(!w){N.logger("warn",`Action node ${d.id} has no action name`);return}const _=e.actions.getByName(w).getState();if(!_){N.logger("warn",`Action '${w}' not registered on client`);const x=l.find(S=>S.sourceNodeId===d.id&&S.sourceNodeHandle==="false");return x?s.find(S=>S.id===x.destinationNodeId):null}if(typeof _.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const x=l.find(S=>S.sourceNodeId===d.id&&S.sourceNodeHandle==="false");return x?s.find(S=>S.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await _.action();const x=l.find(b=>b.sourceNodeId===d.id&&b.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${d.id}`),null;const S=s.find(b=>b.id===x.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${S==null?void 0:S.id}`),S||null}catch(x){N.logger("warn",`Action '${w}' failed:`,x);const S=l.find(P=>P.sourceNodeId===d.id&&P.sourceNodeHandle==="false");if(!S)return N.logger("warn",`No 'false' edge found for action node ${d.id}`),null;const b=s.find(P=>P.id===S.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${b==null?void 0:b.id}`),b||null}}}),de=i.createEffect(s=>{if(s)return e.launchExperienceById(s.experienceId)}),Q=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:l,edges:d}])=>V(s,l,d)}),D=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:l,edges:d}])=>V(s,l,d)}),pe=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),Y=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>re(s)?!!await W(e,s):s??!1});return i.split({source:I,match:s=>s?Fe(s)?"condition":M(s)?"step":$e(s)?"launchExperience":ee(s)?"origin":te(s)?"action":"other":"none",cases:{none:G,origin:K,condition:U,step:z,launchExperience:de,action:J,__:i.createEvent()}}),i.sample({clock:[U.doneData,K.doneData,G.doneData,D.doneData,Q.doneData,J.doneData],filter:Boolean,target:pe}),i.sample({clock:a,target:D}),i.sample({clock:a,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:fe}),i.sample({clock:o,target:le}),i.sample({source:i.combine([U.pending,K.pending,G.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:z.doneData,source:f,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:Y}),i.sample({source:Y.doneData,fn:Boolean,target:v}),i.sample({source:I,clock:n,filter:s=>s?ee(s):!0,target:Q}),i.sample({source:v,filter:Boolean,target:n}),i.sample({source:v,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:v,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:y,stateStore:k,isOpenStore:v,open:$.open,close:$.close,toggleOpen:$.toggle,setOpen:$.set,treeStore:t.treeStore,currentNodeStore:I,currentStepStore:f,nextReachableStepNodesStore:h,stepsToOriginStore:A,stepsToLeafStore:O,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:L}});function ue(e){return q.invoke(Le,e)}const De=q.createFactory(({client:e})=>{const t=X.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(f,h){const A=[...f[h.experienceId]??[]];return A.push(h),{...f,[h.experienceId]:A}},unregister(f,h){var v;const A=h.experienceId,O=(v=f[A])==null?void 0:v.filter($=>$!==h);return{...f,[A]:O??[]}}}),o=i.createEffect(({experience:f,target:h})=>ue({client:e,experience:f,target:h})),u=i.createEffect(f=>{c.register(f)}),p=i.createEffect(f=>{f.target&&Ne(f.target,()=>{a(f)})}),y=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 A=h.frameworkStore.getState();if(!A){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const O=f.target;if(!O){N.logger("error",`No target element registered for experience '${f.experienceId}'. Skipping rendering.`);return}const v=we(O);try{A.render(v,h.component,e,f)}catch($){N.logger("error",$)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:y}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(f=>({type:"experience_initialized",experienceInstance:f}))}),i.sample({clock:n,target:k});function F(f,h){r({experience:f,target:h})}const L=t.map(f=>Object.values(f).flat());function I(f){return t.map(h=>h[f]||[],{skipVoid:!1})}return{spawn:F,getByExperienceId:I,listStore:L}});function Re(e){return q.invoke(De,e)}exports.createAppHosts=ke;exports.createExperienceInstance=ue;exports.createExperienceInstanceIndex=Re;exports.domInteractive=Ee;exports.evaluateRuleLogic=W;exports.getTargetElements=xe;exports.isPickedRoot=oe;exports.isRulesLogic=re;exports.isStepNode=M;exports.tagTargetElement=ve;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { createDomain as
|
|
2
|
-
import { createFactory as
|
|
3
|
-
import { i as
|
|
1
|
+
import { createDomain as ht, createEvent as B, combine as C, createApi as ot, createEffect as M, attach as F, split as yt, sample as m } from "effector";
|
|
2
|
+
import { createFactory as it, invoke as st } from "@withease/factories";
|
|
3
|
+
import { i as wt, s as at, a as Nt } from "./supports-BjhuLJ8z.js";
|
|
4
4
|
import { l as I } from "./logger-C9a75KZn.js";
|
|
5
|
-
import { i as
|
|
6
|
-
function
|
|
5
|
+
import { i as It } from "./object-JwZ58NOH.js";
|
|
6
|
+
function xt(t) {
|
|
7
7
|
return typeof t == "number" && !isNaN(t);
|
|
8
8
|
}
|
|
9
9
|
function H(t) {
|
|
@@ -12,21 +12,21 @@ function H(t) {
|
|
|
12
12
|
function N(t) {
|
|
13
13
|
return Array.isArray(t);
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function ct(t) {
|
|
16
16
|
return t instanceof Promise;
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function tt(t) {
|
|
19
19
|
return typeof t == "object" && t !== null && !Array.isArray(t) && Object.keys(t).length === 1;
|
|
20
20
|
}
|
|
21
21
|
function g(t) {
|
|
22
|
-
if (
|
|
22
|
+
if (xt(t)) return t;
|
|
23
23
|
const e = parseFloat(`${t}`);
|
|
24
24
|
return isNaN(e) ? 0 : e;
|
|
25
25
|
}
|
|
26
26
|
function D(t) {
|
|
27
27
|
return `${t}`;
|
|
28
28
|
}
|
|
29
|
-
const
|
|
29
|
+
const Et = {
|
|
30
30
|
// eslint-disable-next-line eqeqeq
|
|
31
31
|
"==": (t, e) => t == e,
|
|
32
32
|
"===": (t, e) => t === e,
|
|
@@ -47,8 +47,8 @@ const kt = {
|
|
|
47
47
|
const a = g(r);
|
|
48
48
|
return n <= s && s <= a;
|
|
49
49
|
},
|
|
50
|
-
"!!": async (t) => await
|
|
51
|
-
"!": async (t) => !await
|
|
50
|
+
"!!": async (t) => await $(t),
|
|
51
|
+
"!": async (t) => !await $(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),
|
|
@@ -130,31 +130,31 @@ const kt = {
|
|
|
130
130
|
};
|
|
131
131
|
async function p(t, e) {
|
|
132
132
|
if (!t) return t;
|
|
133
|
-
if (
|
|
133
|
+
if (ct(t))
|
|
134
134
|
return p(await t, e);
|
|
135
135
|
if (N(t))
|
|
136
136
|
return Promise.all(t.map((o) => p(o, e)));
|
|
137
|
-
if (!
|
|
138
|
-
const r =
|
|
137
|
+
if (!tt(t)) return t;
|
|
138
|
+
const r = kt(t);
|
|
139
139
|
let n = r ? t[r] ?? [] : [];
|
|
140
140
|
switch (N(n) || (n = [n]), r) {
|
|
141
141
|
case "if":
|
|
142
142
|
case "?:":
|
|
143
143
|
for (let o = 0; o < n.length - 1; o += 2)
|
|
144
|
-
if (await
|
|
144
|
+
if (await $(await p(n[o], e)))
|
|
145
145
|
return p(n[o + 1], e);
|
|
146
146
|
return n.length % 2 === 1 ? p(n[n.length - 1], e) : null;
|
|
147
147
|
case "and": {
|
|
148
148
|
let o = null;
|
|
149
149
|
for (const c of n)
|
|
150
|
-
if (o = await p(c, e), !await
|
|
150
|
+
if (o = await p(c, e), !await $(o))
|
|
151
151
|
return o;
|
|
152
152
|
return o;
|
|
153
153
|
}
|
|
154
154
|
case "or": {
|
|
155
155
|
let o = null;
|
|
156
156
|
for (const c of n)
|
|
157
|
-
if (o = await p(c, e), await
|
|
157
|
+
if (o = await p(c, e), await $(o)) return o;
|
|
158
158
|
return o;
|
|
159
159
|
}
|
|
160
160
|
case "map": {
|
|
@@ -165,7 +165,7 @@ async function p(t, e) {
|
|
|
165
165
|
const o = await p(n[0], e);
|
|
166
166
|
return N(o) ? (await Promise.all(
|
|
167
167
|
o.map(async (d) => {
|
|
168
|
-
const y = await
|
|
168
|
+
const y = await $(await p(n[1], d));
|
|
169
169
|
return { item: d, shouldInclude: y };
|
|
170
170
|
})
|
|
171
171
|
)).filter(({ shouldInclude: d }) => d).map(({ item: d }) => d) : [];
|
|
@@ -184,44 +184,44 @@ async function p(t, e) {
|
|
|
184
184
|
const o = await p(n[0], e);
|
|
185
185
|
if (!N(o) || o.length === 0) return !1;
|
|
186
186
|
for (const c of o)
|
|
187
|
-
if (!await
|
|
187
|
+
if (!await $(await p(n[1], c))) return !1;
|
|
188
188
|
return !0;
|
|
189
189
|
}
|
|
190
190
|
case "some": {
|
|
191
191
|
const o = await p(n[0], e);
|
|
192
192
|
if (!N(o)) return !1;
|
|
193
193
|
for (const c of o)
|
|
194
|
-
if (await
|
|
194
|
+
if (await $(await p(n[1], c))) return !0;
|
|
195
195
|
return !1;
|
|
196
196
|
}
|
|
197
197
|
case "none": {
|
|
198
198
|
const o = await p(n[0], e);
|
|
199
199
|
if (!N(o)) return !0;
|
|
200
200
|
for (const c of o)
|
|
201
|
-
if (await
|
|
201
|
+
if (await $(await p(n[1], c))) return !1;
|
|
202
202
|
return !0;
|
|
203
203
|
}
|
|
204
204
|
case "catch":
|
|
205
205
|
try {
|
|
206
206
|
return await p(n[0], e);
|
|
207
207
|
} catch (o) {
|
|
208
|
-
return
|
|
208
|
+
return tt(o) ? await p(o, e) : n[1] ? await p(n[1], o) : o instanceof Error ? o.message : o;
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
const s = await Promise.all(n.map((o) => p(o, e))), a = r ?
|
|
211
|
+
const s = await Promise.all(n.map((o) => p(o, e))), a = r ? Et[r] : void 0;
|
|
212
212
|
if (!a) throw new Error(`Unrecognized operation ${r}`);
|
|
213
213
|
return a.apply(e, s);
|
|
214
214
|
}
|
|
215
|
-
async function
|
|
216
|
-
return
|
|
215
|
+
async function $(t) {
|
|
216
|
+
return ct(t) ? $(await t) : !(Array.isArray(t) && t.length === 0) && !!t;
|
|
217
217
|
}
|
|
218
|
-
function
|
|
218
|
+
function kt(t) {
|
|
219
219
|
return Object.keys(t)[0];
|
|
220
220
|
}
|
|
221
|
-
function
|
|
222
|
-
return !
|
|
221
|
+
function At(t) {
|
|
222
|
+
return !It(t);
|
|
223
223
|
}
|
|
224
|
-
async function
|
|
224
|
+
async function et(t, e, r) {
|
|
225
225
|
const n = t.getStateSnapshot(), s = t.predicates.listStore.getState().reduce((c, d) => ({
|
|
226
226
|
...c,
|
|
227
227
|
[d.name]: () => d.predicate(n)
|
|
@@ -250,33 +250,33 @@ async function nt(t, e, r) {
|
|
|
250
250
|
};
|
|
251
251
|
return await p(e, o);
|
|
252
252
|
}
|
|
253
|
-
function
|
|
254
|
-
return !
|
|
253
|
+
function bt(t) {
|
|
254
|
+
return !Nt() || !at() ? [] : Array.from(window.document.querySelectorAll(t)).filter(
|
|
255
255
|
(e) => e instanceof HTMLElement
|
|
256
256
|
);
|
|
257
257
|
}
|
|
258
|
-
function
|
|
259
|
-
if (!
|
|
258
|
+
function vt(t) {
|
|
259
|
+
if (!wt())
|
|
260
260
|
throw new Error("Shadow DOM is not supported in this environment");
|
|
261
261
|
return t.attachShadow({ mode: "closed" });
|
|
262
262
|
}
|
|
263
263
|
function Xt() {
|
|
264
264
|
return new Promise((t, e) => {
|
|
265
|
-
if (!
|
|
265
|
+
if (!at()) {
|
|
266
266
|
e();
|
|
267
267
|
return;
|
|
268
268
|
}
|
|
269
269
|
document.readyState !== "loading" ? t() : document.addEventListener("readystatechange", () => t(), { once: !0 });
|
|
270
270
|
});
|
|
271
271
|
}
|
|
272
|
-
function
|
|
272
|
+
function Bt(t, e) {
|
|
273
273
|
const r = new MutationObserver((n) => {
|
|
274
274
|
document.contains(t) || (r.disconnect(), e());
|
|
275
275
|
});
|
|
276
276
|
r.observe(document.body, { childList: !0, subtree: !0 });
|
|
277
277
|
}
|
|
278
|
-
const
|
|
279
|
-
function
|
|
278
|
+
const K = "picked-root", U = "picked-target", $t = "picked-root";
|
|
279
|
+
function zt(t, e) {
|
|
280
280
|
return [
|
|
281
281
|
...t,
|
|
282
282
|
// Target and replace picked-root web components
|
|
@@ -285,8 +285,8 @@ function Jt(t, e) {
|
|
|
285
285
|
placement: "replace"
|
|
286
286
|
}
|
|
287
287
|
].flatMap((n) => {
|
|
288
|
-
const s =
|
|
289
|
-
(a) => !Ft(a, e) && !
|
|
288
|
+
const s = bt(n.selector).filter(
|
|
289
|
+
(a) => !Ft(a, e) && !Ot(a, e)
|
|
290
290
|
);
|
|
291
291
|
return {
|
|
292
292
|
...n,
|
|
@@ -294,25 +294,25 @@ function Jt(t, e) {
|
|
|
294
294
|
};
|
|
295
295
|
});
|
|
296
296
|
}
|
|
297
|
-
function
|
|
298
|
-
return t.flatMap((r) => r.elements.map((n) =>
|
|
297
|
+
function Jt(t, e) {
|
|
298
|
+
return t.flatMap((r) => r.elements.map((n) => Mt(n, r.placement, e)));
|
|
299
299
|
}
|
|
300
|
-
function
|
|
301
|
-
t.classList.add(
|
|
300
|
+
function Qt(t, e) {
|
|
301
|
+
t.classList.add(U), t.classList.add(`${U}-${e}`);
|
|
302
302
|
}
|
|
303
303
|
function Ft(t, e) {
|
|
304
|
-
return e ? t.classList.contains(`${
|
|
304
|
+
return e ? t.classList.contains(`${U}-${e}`) : t.classList.contains(`${U}`);
|
|
305
305
|
}
|
|
306
|
-
function
|
|
307
|
-
return e ? t.classList.contains(`${
|
|
306
|
+
function Ot(t, e) {
|
|
307
|
+
return e ? t.classList.contains(`${K}-${e}`) : t.classList.contains(K);
|
|
308
308
|
}
|
|
309
|
-
function
|
|
309
|
+
function _t(t) {
|
|
310
310
|
const e = document.createElement("div");
|
|
311
|
-
return e.style.display = "block", e.classList.add(
|
|
311
|
+
return e.style.display = "block", e.classList.add(K), e.classList.add(`${K}-${t}`), e;
|
|
312
312
|
}
|
|
313
|
-
function
|
|
313
|
+
function Mt(t, e, r) {
|
|
314
314
|
let n;
|
|
315
|
-
const s =
|
|
315
|
+
const s = _t(r);
|
|
316
316
|
if (t instanceof Document)
|
|
317
317
|
n = t.body.appendChild(s);
|
|
318
318
|
else {
|
|
@@ -337,25 +337,25 @@ function Tt(t, e, r) {
|
|
|
337
337
|
}
|
|
338
338
|
return n;
|
|
339
339
|
}
|
|
340
|
-
function
|
|
340
|
+
function Tt(t) {
|
|
341
341
|
return t.type === "conditional";
|
|
342
342
|
}
|
|
343
343
|
function j(t) {
|
|
344
344
|
return t.type === "step";
|
|
345
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function Lt(t) {
|
|
347
347
|
return t.type === "experience";
|
|
348
348
|
}
|
|
349
|
-
function
|
|
349
|
+
function nt(t) {
|
|
350
350
|
return t.type === "origin";
|
|
351
351
|
}
|
|
352
|
-
function
|
|
352
|
+
function rt(t) {
|
|
353
353
|
return t.type === "action";
|
|
354
354
|
}
|
|
355
|
-
const
|
|
355
|
+
const ut = (t, e, r, n, s = /* @__PURE__ */ new Set()) => s.has(r.id) ? [] : (s.add(r.id), j(r) && !n ? [r] : e.filter((o) => o.sourceNodeId === r.id).flatMap((o) => {
|
|
356
356
|
const c = t.find((d) => d.id === o.destinationNodeId);
|
|
357
|
-
return c ?
|
|
358
|
-
})),
|
|
357
|
+
return c ? ut(t, e, c, !1, s) : [];
|
|
358
|
+
})), Dt = (t, e, r) => ut(t, e, r, !0, /* @__PURE__ */ new Set()), ft = (t, e, r, n, s = /* @__PURE__ */ new Set()) => {
|
|
359
359
|
if (s.has(r.id)) return [-1, -1];
|
|
360
360
|
s.add(r.id);
|
|
361
361
|
const a = e.filter((d) => d.sourceNodeId === r.id);
|
|
@@ -364,26 +364,26 @@ const ft = (t, e, r, n, s = /* @__PURE__ */ new Set()) => s.has(r.id) ? [] : (s.
|
|
|
364
364
|
for (const d of a) {
|
|
365
365
|
const y = t.find((P) => P.id === d.destinationNodeId);
|
|
366
366
|
if (!y) continue;
|
|
367
|
-
const [k,
|
|
367
|
+
const [k, O] = ft(
|
|
368
368
|
t,
|
|
369
369
|
e,
|
|
370
370
|
y,
|
|
371
371
|
!1,
|
|
372
372
|
new Set(s)
|
|
373
373
|
);
|
|
374
|
-
k !== -1 && (o = Math.min(o, k + 1), c = Math.max(c,
|
|
374
|
+
k !== -1 && (o = Math.min(o, k + 1), c = Math.max(c, O + 1));
|
|
375
375
|
}
|
|
376
376
|
return o === 1 / 0 ? [-1, -1] : [o, c];
|
|
377
|
-
},
|
|
377
|
+
}, Pt = (t, e, r) => ft(t, e, r, !0, /* @__PURE__ */ new Set()), lt = (t, e, r, n = /* @__PURE__ */ new Set()) => {
|
|
378
378
|
if (n.has(r.id)) return [-1, -1];
|
|
379
379
|
if (n.add(r.id), r.type === "origin") return [0, 0];
|
|
380
380
|
const s = e.filter((c) => c.destinationNodeId === r.id);
|
|
381
381
|
if (s.length === 0) return [-1, -1];
|
|
382
382
|
let a = 1 / 0, o = -1 / 0;
|
|
383
383
|
for (const c of s) {
|
|
384
|
-
const d = t.find((
|
|
384
|
+
const d = t.find((O) => O.id === c.sourceNodeId);
|
|
385
385
|
if (!d) continue;
|
|
386
|
-
const [y, k] =
|
|
386
|
+
const [y, k] = lt(
|
|
387
387
|
t,
|
|
388
388
|
e,
|
|
389
389
|
d,
|
|
@@ -392,28 +392,28 @@ const ft = (t, e, r, n, s = /* @__PURE__ */ new Set()) => s.has(r.id) ? [] : (s.
|
|
|
392
392
|
y !== -1 && (a = Math.min(a, y + 1), o = Math.max(o, k + 1));
|
|
393
393
|
}
|
|
394
394
|
return a === 1 / 0 ? [-1, -1] : [a, o];
|
|
395
|
-
},
|
|
395
|
+
}, Rt = (t, e, r) => lt(t, e, r, /* @__PURE__ */ new Set()), dt = (t) => t.find((r) => r.type === "origin") || null, X = (t, e, r) => {
|
|
396
396
|
if (!t)
|
|
397
|
-
return
|
|
397
|
+
return dt(e);
|
|
398
398
|
const n = r.find((a) => a.sourceNodeId === t.id);
|
|
399
399
|
if (!n)
|
|
400
400
|
return null;
|
|
401
401
|
const s = e.find((a) => a.id === n.destinationNodeId);
|
|
402
402
|
return s || null;
|
|
403
403
|
};
|
|
404
|
-
async function
|
|
404
|
+
async function Ct(t, e, r, n) {
|
|
405
405
|
const s = t ? "true" : "false", a = n.find(
|
|
406
406
|
(o) => o.sourceNodeHandle === s && o.sourceNodeId === e
|
|
407
407
|
);
|
|
408
408
|
return r.find((o) => o.id === (a == null ? void 0 : a.destinationNodeId));
|
|
409
409
|
}
|
|
410
|
-
const
|
|
410
|
+
const z = ht("experience-instance"), Ht = it(
|
|
411
411
|
({
|
|
412
412
|
client: t,
|
|
413
413
|
experience: e,
|
|
414
414
|
target: r
|
|
415
415
|
}) => {
|
|
416
|
-
const n = B(), s = B(), a = B(), o = B(), c = B(), d = B(), y = e.componentStore, k =
|
|
416
|
+
const n = B(), s = B(), a = B(), o = B(), c = B(), d = B(), y = e.componentStore, k = z.store("transitioning"), O = t.history.entriesStore.map((i) => i.filter((f) => f.experienceId === e.id)), P = O.map((i) => i.filter((f) => j(f.node))), x = O.map((i) => {
|
|
417
417
|
var f;
|
|
418
418
|
return ((f = i[i.length - 1]) == null ? void 0 : f.node) || null;
|
|
419
419
|
}), u = C(
|
|
@@ -423,53 +423,53 @@ const J = yt("experience-instance"), jt = st(
|
|
|
423
423
|
), S = C(
|
|
424
424
|
e.treeStore,
|
|
425
425
|
x,
|
|
426
|
-
({ nodes: i, edges: f }, l) => l ?
|
|
427
|
-
),
|
|
426
|
+
({ nodes: i, edges: f }, l) => l ? Dt(i, f, l) : []
|
|
427
|
+
), v = C(
|
|
428
428
|
e.treeStore,
|
|
429
429
|
x,
|
|
430
|
-
({ nodes: i, edges: f }, l) => l ?
|
|
430
|
+
({ nodes: i, edges: f }, l) => l ? Rt(i, f, l) : [-1, -1]
|
|
431
431
|
), T = C(
|
|
432
432
|
e.treeStore,
|
|
433
433
|
x,
|
|
434
|
-
({ nodes: i, edges: f }, l) => l ?
|
|
435
|
-
),
|
|
434
|
+
({ nodes: i, edges: f }, l) => l ? Pt(i, f, l) : [-1, -1]
|
|
435
|
+
), A = z.store(!1), _ = ot(A, {
|
|
436
436
|
open: () => !0,
|
|
437
437
|
close: () => !1,
|
|
438
438
|
toggle: (i) => !i,
|
|
439
439
|
set: (i, f) => f
|
|
440
|
-
}),
|
|
440
|
+
}), pt = M(async () => {
|
|
441
441
|
t.history.back({ experienceId: e.id });
|
|
442
|
-
}),
|
|
442
|
+
}), gt = F({
|
|
443
443
|
source: e.treeStore,
|
|
444
444
|
effect: async (i, f) => {
|
|
445
445
|
const l = i.nodes.find((w) => j(w) && w.stepId === f);
|
|
446
446
|
l && t.history.push({ experienceId: e.id, node: l });
|
|
447
447
|
}
|
|
448
|
-
}),
|
|
448
|
+
}), J = F({
|
|
449
449
|
source: x,
|
|
450
450
|
effect: (i) => {
|
|
451
451
|
}
|
|
452
|
-
}),
|
|
452
|
+
}), V = F({
|
|
453
453
|
source: e.treeStore,
|
|
454
|
-
effect: async ({ nodes: i }) =>
|
|
455
|
-
}),
|
|
454
|
+
effect: async ({ nodes: i }) => dt(i)
|
|
455
|
+
}), W = F({
|
|
456
456
|
source: e.treeStore,
|
|
457
457
|
effect: async ({ nodes: i, edges: f }, l) => X(l, i, f)
|
|
458
|
-
}),
|
|
458
|
+
}), q = F({
|
|
459
459
|
source: e.treeStore,
|
|
460
460
|
effect: async ({ nodes: i, edges: f, conditionals: l }, w) => {
|
|
461
461
|
if (!w)
|
|
462
462
|
return;
|
|
463
|
-
const L = l.find((
|
|
463
|
+
const L = l.find((b) => b.id === w.conditionalId);
|
|
464
464
|
if (!L)
|
|
465
465
|
return;
|
|
466
|
-
const E = w.id, h = await
|
|
467
|
-
return
|
|
466
|
+
const E = w.id, h = await et(t, L.condition);
|
|
467
|
+
return Ct(!!h, E, i, f);
|
|
468
468
|
}
|
|
469
|
-
}),
|
|
469
|
+
}), Q = F({
|
|
470
470
|
source: e.treeStore,
|
|
471
471
|
effect: async ({ nodes: i, edges: f }, l) => {
|
|
472
|
-
if (!l || !
|
|
472
|
+
if (!l || !rt(l))
|
|
473
473
|
return;
|
|
474
474
|
const w = l.action;
|
|
475
475
|
if (!w) {
|
|
@@ -494,61 +494,61 @@ const J = yt("experience-instance"), jt = st(
|
|
|
494
494
|
try {
|
|
495
495
|
I("info", `Executing action: ${w}`), await L.action();
|
|
496
496
|
const E = f.find(
|
|
497
|
-
(
|
|
497
|
+
(b) => b.sourceNodeId === l.id && b.sourceNodeHandle === "true"
|
|
498
498
|
);
|
|
499
499
|
if (!E)
|
|
500
500
|
return I("warn", `No 'true' edge found for action node ${l.id}`), null;
|
|
501
|
-
const h = i.find((
|
|
501
|
+
const h = i.find((b) => b.id === E.destinationNodeId);
|
|
502
502
|
return I("info", `Action '${w}' succeeded, moving to node ${h == null ? void 0 : h.id}`), h || null;
|
|
503
503
|
} catch (E) {
|
|
504
504
|
I("warn", `Action '${w}' failed:`, E);
|
|
505
505
|
const h = f.find(
|
|
506
|
-
(
|
|
506
|
+
(G) => G.sourceNodeId === l.id && G.sourceNodeHandle === "false"
|
|
507
507
|
);
|
|
508
508
|
if (!h)
|
|
509
509
|
return I("warn", `No 'false' edge found for action node ${l.id}`), null;
|
|
510
|
-
const
|
|
511
|
-
return I("info", `Action '${w}' failed, moving to node ${
|
|
510
|
+
const b = i.find((G) => G.id === h.destinationNodeId);
|
|
511
|
+
return I("info", `Action '${w}' failed, moving to node ${b == null ? void 0 : b.id}`), b || null;
|
|
512
512
|
}
|
|
513
513
|
}
|
|
514
|
-
}),
|
|
514
|
+
}), mt = M((i) => {
|
|
515
515
|
if (i)
|
|
516
516
|
return t.launchExperienceById(i.experienceId);
|
|
517
|
-
}),
|
|
517
|
+
}), Y = F({
|
|
518
518
|
source: [x, e.treeStore],
|
|
519
519
|
effect: async ([i, { nodes: f, edges: l }]) => X(i, f, l)
|
|
520
|
-
}), R =
|
|
520
|
+
}), R = F({
|
|
521
521
|
source: [x, e.treeStore],
|
|
522
522
|
effect: async ([i, { nodes: f, edges: l }]) => X(i, f, l)
|
|
523
|
-
}),
|
|
523
|
+
}), St = M((i) => {
|
|
524
524
|
t.history.push({ experienceId: e.id, node: i });
|
|
525
|
-
}),
|
|
525
|
+
}), Z = F({
|
|
526
526
|
source: e.configStore,
|
|
527
|
-
effect: async ({ initializeOpenLogic: i }) =>
|
|
527
|
+
effect: async ({ initializeOpenLogic: i }) => At(i) ? !!await et(t, i) : i ?? !1
|
|
528
528
|
});
|
|
529
|
-
return
|
|
529
|
+
return yt({
|
|
530
530
|
source: x,
|
|
531
|
-
match: (i) => i ?
|
|
531
|
+
match: (i) => i ? Tt(i) ? "condition" : j(i) ? "step" : Lt(i) ? "launchExperience" : nt(i) ? "origin" : rt(i) ? "action" : "other" : "none",
|
|
532
532
|
cases: {
|
|
533
|
-
none:
|
|
534
|
-
origin:
|
|
535
|
-
condition:
|
|
536
|
-
step:
|
|
537
|
-
launchExperience:
|
|
538
|
-
action:
|
|
533
|
+
none: V,
|
|
534
|
+
origin: W,
|
|
535
|
+
condition: q,
|
|
536
|
+
step: J,
|
|
537
|
+
launchExperience: mt,
|
|
538
|
+
action: Q,
|
|
539
539
|
__: B()
|
|
540
540
|
}
|
|
541
541
|
}), m({
|
|
542
542
|
clock: [
|
|
543
|
-
z.doneData,
|
|
544
543
|
q.doneData,
|
|
545
544
|
W.doneData,
|
|
545
|
+
V.doneData,
|
|
546
546
|
R.doneData,
|
|
547
|
-
|
|
548
|
-
|
|
547
|
+
Y.doneData,
|
|
548
|
+
Q.doneData
|
|
549
549
|
],
|
|
550
550
|
filter: Boolean,
|
|
551
|
-
target:
|
|
551
|
+
target: St
|
|
552
552
|
}), m({
|
|
553
553
|
clock: s,
|
|
554
554
|
target: R
|
|
@@ -581,18 +581,18 @@ const J = yt("experience-instance"), jt = st(
|
|
|
581
581
|
}))
|
|
582
582
|
}), m({
|
|
583
583
|
clock: a,
|
|
584
|
-
target:
|
|
585
|
-
}), m({ clock: o, target:
|
|
584
|
+
target: pt
|
|
585
|
+
}), m({ clock: o, target: gt }), m({
|
|
586
586
|
source: C([
|
|
587
|
-
z.pending,
|
|
588
587
|
q.pending,
|
|
589
588
|
W.pending,
|
|
589
|
+
V.pending,
|
|
590
590
|
R.pending
|
|
591
591
|
]),
|
|
592
592
|
fn: (i) => i.some(Boolean) ? "transitioning" : "ready",
|
|
593
593
|
target: k
|
|
594
594
|
}), m({
|
|
595
|
-
clock:
|
|
595
|
+
clock: J.doneData,
|
|
596
596
|
source: u,
|
|
597
597
|
filter: Boolean,
|
|
598
598
|
target: t.eventBus.prepend((i) => ({
|
|
@@ -602,29 +602,29 @@ const J = yt("experience-instance"), jt = st(
|
|
|
602
602
|
}))
|
|
603
603
|
}), m({
|
|
604
604
|
clock: d,
|
|
605
|
-
target:
|
|
605
|
+
target: Z
|
|
606
606
|
}), m({
|
|
607
|
-
source:
|
|
608
|
-
fn:
|
|
609
|
-
target:
|
|
607
|
+
source: Z.doneData,
|
|
608
|
+
fn: Boolean,
|
|
609
|
+
target: A
|
|
610
610
|
}), m({
|
|
611
611
|
source: x,
|
|
612
612
|
clock: n,
|
|
613
|
-
filter: (i) => i ?
|
|
614
|
-
target:
|
|
615
|
-
}),
|
|
616
|
-
source:
|
|
617
|
-
filter:
|
|
613
|
+
filter: (i) => i ? nt(i) : !0,
|
|
614
|
+
target: Y
|
|
615
|
+
}), m({
|
|
616
|
+
source: A,
|
|
617
|
+
filter: Boolean,
|
|
618
618
|
target: n
|
|
619
619
|
}), m({
|
|
620
|
-
source:
|
|
620
|
+
source: A,
|
|
621
621
|
filter: Boolean,
|
|
622
622
|
target: t.eventBus.prepend(() => ({
|
|
623
623
|
type: "experience_open",
|
|
624
624
|
experience: e
|
|
625
625
|
}))
|
|
626
626
|
}), m({
|
|
627
|
-
source:
|
|
627
|
+
source: A,
|
|
628
628
|
filter: (i) => !i,
|
|
629
629
|
target: t.eventBus.prepend(() => ({
|
|
630
630
|
type: "experience_close",
|
|
@@ -643,17 +643,17 @@ const J = yt("experience-instance"), jt = st(
|
|
|
643
643
|
// state
|
|
644
644
|
stateStore: k,
|
|
645
645
|
// open close
|
|
646
|
-
isOpenStore:
|
|
647
|
-
open:
|
|
648
|
-
close:
|
|
649
|
-
toggleOpen:
|
|
650
|
-
setOpen:
|
|
646
|
+
isOpenStore: A,
|
|
647
|
+
open: _.open,
|
|
648
|
+
close: _.close,
|
|
649
|
+
toggleOpen: _.toggle,
|
|
650
|
+
setOpen: _.set,
|
|
651
651
|
// nodes
|
|
652
652
|
treeStore: e.treeStore,
|
|
653
653
|
currentNodeStore: x,
|
|
654
654
|
currentStepStore: u,
|
|
655
655
|
nextReachableStepNodesStore: S,
|
|
656
|
-
stepsToOriginStore:
|
|
656
|
+
stepsToOriginStore: v,
|
|
657
657
|
stepsToLeafStore: T,
|
|
658
658
|
// history
|
|
659
659
|
goToNextStep: s,
|
|
@@ -663,50 +663,50 @@ const J = yt("experience-instance"), jt = st(
|
|
|
663
663
|
};
|
|
664
664
|
}
|
|
665
665
|
);
|
|
666
|
-
function
|
|
667
|
-
return
|
|
666
|
+
function jt(t) {
|
|
667
|
+
return st(Ht, t);
|
|
668
668
|
}
|
|
669
|
-
const
|
|
670
|
-
const e =
|
|
669
|
+
const Gt = it(({ client: t }) => {
|
|
670
|
+
const e = z.store({}), r = B(), n = B(), s = B(), a = ot(e, {
|
|
671
671
|
register(u, S) {
|
|
672
|
-
const
|
|
672
|
+
const v = [
|
|
673
673
|
...u[S.experienceId] ?? []
|
|
674
674
|
];
|
|
675
|
-
return
|
|
675
|
+
return v.push(S), {
|
|
676
676
|
...u,
|
|
677
|
-
[S.experienceId]:
|
|
677
|
+
[S.experienceId]: v
|
|
678
678
|
};
|
|
679
679
|
},
|
|
680
680
|
unregister(u, S) {
|
|
681
|
-
var
|
|
682
|
-
const
|
|
683
|
-
(
|
|
681
|
+
var A;
|
|
682
|
+
const v = S.experienceId, T = (A = u[v]) == null ? void 0 : A.filter(
|
|
683
|
+
(_) => _ !== S
|
|
684
684
|
);
|
|
685
685
|
return {
|
|
686
686
|
...u,
|
|
687
|
-
[
|
|
687
|
+
[v]: T ?? []
|
|
688
688
|
};
|
|
689
689
|
}
|
|
690
|
-
}), o =
|
|
691
|
-
({ experience: u, target: S }) =>
|
|
692
|
-
), c =
|
|
690
|
+
}), o = M(
|
|
691
|
+
({ experience: u, target: S }) => jt({ client: t, experience: u, target: S })
|
|
692
|
+
), c = M((u) => {
|
|
693
693
|
a.register(u);
|
|
694
|
-
}), d =
|
|
694
|
+
}), d = M(
|
|
695
695
|
(u) => {
|
|
696
|
-
u.target &&
|
|
696
|
+
u.target && Bt(u.target, () => {
|
|
697
697
|
s(u);
|
|
698
698
|
});
|
|
699
699
|
}
|
|
700
|
-
), y =
|
|
700
|
+
), y = M((u) => {
|
|
701
701
|
a.unregister(u);
|
|
702
|
-
}), k =
|
|
702
|
+
}), k = M((u) => {
|
|
703
703
|
const S = u.componentStore.getState();
|
|
704
704
|
if (!S) {
|
|
705
705
|
I("warn", "No app component registered. Skipping init.");
|
|
706
706
|
return;
|
|
707
707
|
}
|
|
708
|
-
const
|
|
709
|
-
if (!
|
|
708
|
+
const v = S.frameworkStore.getState();
|
|
709
|
+
if (!v) {
|
|
710
710
|
I(
|
|
711
711
|
"error",
|
|
712
712
|
`No framework registered for component '${S.name}'. Skipping rendering.`
|
|
@@ -721,11 +721,11 @@ const Kt = st(({ client: t }) => {
|
|
|
721
721
|
);
|
|
722
722
|
return;
|
|
723
723
|
}
|
|
724
|
-
const
|
|
724
|
+
const A = vt(T);
|
|
725
725
|
try {
|
|
726
|
-
|
|
727
|
-
} catch (
|
|
728
|
-
I("error",
|
|
726
|
+
v.render(A, S.component, t, u);
|
|
727
|
+
} catch (_) {
|
|
728
|
+
I("error", _);
|
|
729
729
|
}
|
|
730
730
|
});
|
|
731
731
|
m({
|
|
@@ -751,7 +751,7 @@ const Kt = st(({ client: t }) => {
|
|
|
751
751
|
clock: n,
|
|
752
752
|
target: k
|
|
753
753
|
});
|
|
754
|
-
function
|
|
754
|
+
function O(u, S) {
|
|
755
755
|
r({ experience: u, target: S });
|
|
756
756
|
}
|
|
757
757
|
const P = e.map((u) => Object.values(u).flat());
|
|
@@ -759,23 +759,23 @@ const Kt = st(({ client: t }) => {
|
|
|
759
759
|
return e.map((S) => S[u] || [], { skipVoid: !1 });
|
|
760
760
|
}
|
|
761
761
|
return {
|
|
762
|
-
spawn:
|
|
762
|
+
spawn: O,
|
|
763
763
|
getByExperienceId: x,
|
|
764
764
|
listStore: P
|
|
765
765
|
};
|
|
766
766
|
});
|
|
767
|
-
function
|
|
768
|
-
return
|
|
767
|
+
function Yt(t) {
|
|
768
|
+
return st(Gt, t);
|
|
769
769
|
}
|
|
770
770
|
export {
|
|
771
771
|
j as a,
|
|
772
|
-
|
|
773
|
-
|
|
772
|
+
Yt as b,
|
|
773
|
+
Jt as c,
|
|
774
774
|
Xt as d,
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
775
|
+
et as e,
|
|
776
|
+
Ot as f,
|
|
777
|
+
zt as g,
|
|
778
|
+
jt as h,
|
|
779
|
+
At as i,
|
|
780
|
+
Qt as t
|
|
781
781
|
};
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ZF,CAAA;AAED,wBAAgB,wBAAwB,CACtC,CAAC,SAAS,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAE/D;AAED,QAAA,MAAM,oCAAoC,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;wBAqI7D,eAAe,UAAU,WAAW;4BAQhC,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS/C,CAAA;AAEF,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,oCAAoC,CAAC,CAEpE"}
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import { StateSnapshot } from '../../utils/state-snaphot';
|
|
2
2
|
export declare const evaluatePathname: (regexPattern: RegExp, location?: StateSnapshot["location"]) => boolean;
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Evaluate handle from path using regex pattern
|
|
5
|
+
*
|
|
6
|
+
* @param regexPattern Regex pattern to extract handle
|
|
7
|
+
* @param location Location object containing pathname
|
|
8
|
+
* @returns handle string or undefined
|
|
9
|
+
*/
|
|
10
|
+
export declare const evaluateHandleByPath: (regexPattern: RegExp, location?: StateSnapshot["location"]) => string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Evaluate handle from pickedConfig based on type
|
|
13
|
+
*
|
|
14
|
+
* @param type page type: 'product' | 'collection'
|
|
15
|
+
* @returns handle string or undefined
|
|
16
|
+
*/
|
|
17
|
+
export declare const evaluateHandleByType: (type: "product" | "collection") => string | false;
|
|
4
18
|
interface PredicateArgs {
|
|
5
19
|
location?: StateSnapshot['location'];
|
|
6
20
|
}
|
|
7
21
|
export declare const shopifyPredicates: {
|
|
8
22
|
'is-page': ({ location }: PredicateArgs) => boolean;
|
|
9
23
|
'get-page-handle': ({ location }: PredicateArgs) => string | undefined;
|
|
10
|
-
'is-product-page': (
|
|
11
|
-
'get-product-handle': (
|
|
12
|
-
'is-collection-page': (
|
|
13
|
-
'get-collection-handle': (
|
|
24
|
+
'is-product-page': () => boolean;
|
|
25
|
+
'get-product-handle': () => string | false;
|
|
26
|
+
'is-collection-page': () => boolean;
|
|
27
|
+
'get-collection-handle': () => string | false;
|
|
14
28
|
'is-blog-page': ({ location }: PredicateArgs) => boolean;
|
|
15
29
|
'get-blog-handle': ({ location }: PredicateArgs) => string | undefined;
|
|
16
30
|
'is-article-page': ({ location }: PredicateArgs) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../../../../src/plugins/shopify/shopify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../../../../src/plugins/shopify/shopify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAkB9D,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,WAAW,aAAa,CAAC,UAAU,CAAC,KACnC,OAMF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,MAAM,EACpB,WAAW,aAAa,CAAC,UAAU,CAAC,uBAQrC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,SAAS,GAAG,YAAY,mBASlE,CAAA;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,iBAAiB;8BAEF,aAAa;sCACL,aAAa;;;;;mCAQhB,aAAa;sCACV,aAAa;sCAEb,aAAa;yCACV,aAAa;wCAGd,aAAa;2CACV,aAAa;sCAGlB,aAAa;oCAEf,aAAa;uCACV,aAAa;mCAGjB,aAAa;uCAET,aAAa;kCAElB,aAAa;CAC5C,CAAA"}
|
|
@@ -1,6 +1,61 @@
|
|
|
1
|
+
import { CreateClientOptions } from '../../index';
|
|
1
2
|
interface EventPayload {
|
|
2
3
|
[key: string]: string | number | boolean | null | undefined | EventPayload | Array<string | number | boolean | null | undefined | EventPayload>;
|
|
3
4
|
}
|
|
5
|
+
export interface PickedConfigExperiment {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
version: number;
|
|
10
|
+
weight: number;
|
|
11
|
+
}
|
|
12
|
+
export type PickedConfigCollection = Partial<{
|
|
13
|
+
title: string;
|
|
14
|
+
id: number;
|
|
15
|
+
handle: string;
|
|
16
|
+
}>;
|
|
17
|
+
export type PickedConfigProductVariant = Partial<{
|
|
18
|
+
available: boolean;
|
|
19
|
+
title: string;
|
|
20
|
+
id: number;
|
|
21
|
+
price: number;
|
|
22
|
+
inventory_quantity: number;
|
|
23
|
+
option1: string;
|
|
24
|
+
}>;
|
|
25
|
+
export type PickedConfigProductCollection = Partial<{
|
|
26
|
+
id: number;
|
|
27
|
+
}>;
|
|
28
|
+
export type PickedConfigProduct = Partial<{
|
|
29
|
+
available: boolean;
|
|
30
|
+
collections: PickedConfigProductCollection[];
|
|
31
|
+
title: string;
|
|
32
|
+
id: number;
|
|
33
|
+
handle: string;
|
|
34
|
+
featured_image: string;
|
|
35
|
+
vendor: string;
|
|
36
|
+
url: string;
|
|
37
|
+
price: number;
|
|
38
|
+
tags: string[];
|
|
39
|
+
variants: PickedConfigProductVariant[];
|
|
40
|
+
metafields: Record<string, unknown>;
|
|
41
|
+
}>;
|
|
42
|
+
export type PickedConfigCustomer = Partial<{
|
|
43
|
+
accepts_marketing: boolean;
|
|
44
|
+
email: string;
|
|
45
|
+
first_name: string | null;
|
|
46
|
+
has_account: boolean;
|
|
47
|
+
id: number;
|
|
48
|
+
last_name: string | null;
|
|
49
|
+
orders_count: number;
|
|
50
|
+
phone: string | null;
|
|
51
|
+
tax_exempt: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
export interface ShopifyPickedConfig {
|
|
54
|
+
customer?: PickedConfigCustomer;
|
|
55
|
+
product?: PickedConfigProduct;
|
|
56
|
+
collection?: PickedConfigCollection;
|
|
57
|
+
experiments: PickedConfigExperiment[];
|
|
58
|
+
}
|
|
4
59
|
declare global {
|
|
5
60
|
interface Window {
|
|
6
61
|
Shopify?: {
|
|
@@ -8,6 +63,7 @@ declare global {
|
|
|
8
63
|
publish?: (event: string, payload: EventPayload) => void;
|
|
9
64
|
};
|
|
10
65
|
};
|
|
66
|
+
pickedConfig?: Readonly<Partial<CreateClientOptions> & ShopifyPickedConfig>;
|
|
11
67
|
}
|
|
12
68
|
}
|
|
13
69
|
export declare function supportsShopifyAnalytics(w: Window): w is Window & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/plugins/shopify/utils.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,CAAC,GAAG,EAAE,MAAM,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,YAAY,GACZ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;CACvE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE;gBACV,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;aACzD,CAAA;SACF,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/plugins/shopify/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEtD,UAAU,YAAY;IACpB,CAAC,GAAG,EAAE,MAAM,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,YAAY,GACZ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,sBAAsB;IAErC,OAAO,EAAE,OAAO,CAAA;IAGhB,EAAE,EAAE,MAAM,CAAA;IAGV,IAAI,EAAE,MAAM,CAAA;IAGZ,OAAO,EAAE,MAAM,CAAA;IAGf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAAA;AAEF,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAAC;IAClD,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,6BAA6B,EAAE,CAAA;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,0BAA0B,EAAE,CAAA;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAC,CAAA;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACtC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE;gBACV,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;aACzD,CAAA;SACF,CAAA;QACD,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAA;KAC5E;CACF;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG;IACjE,OAAO,EAAE;QAAE,SAAS,EAAE;YAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;SAAE,CAAA;KAAE,CAAA;CACpF,CAEA"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const s=require("effector"),G=require("@withease/factories"),H=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),mt=require("./object-BbFTsGh3.cjs");function ht(t){return typeof t=="number"&&!isNaN(t)}function R(t){return typeof t=="string"}function E(t){return Array.isArray(t)}function rt(t){return t instanceof Promise}function tt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===1}function m(t){if(ht(t))return t;const e=parseFloat(`${t}`);return isNaN(e)?0:e}function T(t){return`${t}`}const St={"==":(t,e)=>t==e,"===":(t,e)=>t===e,"!=":(t,e)=>t!=e,"!==":(t,e)=>t!==e,">":(t,e)=>m(t)>m(e),">=":(t,e)=>m(t)>=m(e),"<":(t,e,r)=>{const n=m(t),a=m(e);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(t,e,r)=>{const n=m(t),a=m(e);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async t=>await B(t),"!":async t=>!await B(t),"%":(t,e)=>m(t)%m(e),log:t=>(console.log(t),t),in:(t,e)=>e?R(e)?e.indexOf(T(t))!==-1:E(e)?e.includes(t):!1:!1,cat:(...t)=>t.map(T).join(""),substr:(t,e,r)=>{const n=T(t),a=m(e);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)},"+":(...t)=>t.reduce((e,r)=>m(e)+m(r),0),"*":(...t)=>t.reduce((e,r)=>m(e)*m(r),1),"-":(t,e)=>{const r=m(t);return e===void 0?-r:r-m(e)},"/":(t,e)=>m(t)/m(e),min:(...t)=>Math.min(...t.map(m)),max:(...t)=>Math.max(...t.map(m)),merge:(...t)=>t.reduce((e,r)=>E(r)?e.concat(r):e.concat([r]),[]),var(t,e){const r=arguments.length>1?e:null;if(t===""||t==="."||t===null||t===void 0)return this;if(typeof t=="number"&&Array.isArray(this))return t>=0&&t<this.length?this[t]:r;const n=T(t);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(...t){const e=E(t[0])?t[0]:t,r=[];for(const n of e){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(t,e){const r=await g({missing:e},this);if(!E(r)||!E(e))return[];const n=r.filter(R);return e.filter(R).length-n.length>=m(t)?[]:n},invoke(t){return typeof t!="function"?null:t()},regexp_matches(t,e){let r=t,n="";if(E(t)){const[c,o]=t;r=c,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(T(e))},throw(t){throw new Error(T(t))}};async function g(t,e){if(!t)return t;if(rt(t))return g(await t,e);if(E(t))return Promise.all(t.map(o=>g(o,e)));if(!tt(t))return t;const r=yt(t);let n=r?t[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],e)))return g(n[o+1],e);return n.length%2===1?g(n[n.length-1],e):null;case"and":{let o=null;for(const u of n)if(o=await g(u,e),!await B(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,e),await B(o))return o;return o}case"map":{const o=await g(n[0],e);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],e);return E(o)?(await Promise.all(o.map(async p=>{const y=await B(await g(n[1],p));return{item:p,shouldInclude:y}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],e);if(!E(o))return n.length>2?await g(n[2],e):null;const u=n[1];let y=n.length>2?await g(n[2],e):null;for(const k of o)y=await g(u,{current:k,accumulator:y});return y}case"all":{const o=await g(n[0],e);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],e);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],e);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],e)}catch(o){return tt(o)?await g(o,e):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,e))),c=r?St[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(e,a)}async function B(t){return rt(t)?B(await t):!(Array.isArray(t)&&t.length===0)&&!!t}function yt(t){return Object.keys(t)[0]}function ot(t){return!mt.isEmpty(t)}async function z(t,e,r){const n=t.getStateSnapshot(),a=t.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:()=>p.predicate(n)}),{}),c=t.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:y}=await p.getBucket();return y}}),{}),o={...r,responses:t.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(e,o)}function wt(t){return!H.supportsWindow()||!H.supportsDocument()?[]:Array.from(window.document.querySelectorAll(t)).filter(e=>e instanceof HTMLElement)}function Et(t){if(!H.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return t.attachShadow({mode:"closed"})}function Nt(){return new Promise((t,e)=>{if(!H.supportsDocument()){e();return}document.readyState!=="loading"?t():document.addEventListener("readystatechange",()=>t(),{once:!0})})}function It(t,e){const r=new MutationObserver(n=>{document.contains(t)||(r.disconnect(),e())});r.observe(document.body,{childList:!0,subtree:!0})}const j="picked-root",q="picked-target",xt="picked-root";function kt(t,e){return[...t,{selector:`${xt}[experience-id="${e}"]`,placement:"replace"}].flatMap(n=>{const a=wt(n.selector).filter(c=>!At(c,e)&&!it(c,e));return{...n,elements:a}})}function vt(t,e){return t.flatMap(r=>r.elements.map(n=>Ot(n,r.placement,e)))}function bt(t,e){t.classList.add(q),t.classList.add(`${q}-${e}`)}function At(t,e){return e?t.classList.contains(`${q}-${e}`):t.classList.contains(`${q}`)}function it(t,e){return e?t.classList.contains(`${j}-${e}`):t.classList.contains(j)}function Bt(t){const e=document.createElement("div");return e.style.display="block",e.classList.add(j),e.classList.add(`${j}-${t}`),e}function Ot(t,e,r){let n;const a=Bt(r);if(t instanceof Document)n=t.body.appendChild(a);else{switch(e){case"replace":t.replaceWith(a);break;case"before":t.before(a);break;case"after":t.after(a);break;case"prepend":t.prepend(a);break;default:t.append(a);break}n=a}return n}function Ft(t){return t.type==="conditional"}function L(t){return t.type==="step"}function $t(t){return t.type==="experience"}function et(t){return t.type==="origin"}function nt(t){return t.type==="action"}const st=(t,e,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),L(r)&&!n?[r]:e.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=t.find(p=>p.id===o.destinationNodeId);return u?st(t,e,u,!1,a):[]})),_t=(t,e,r)=>st(t,e,r,!0,new Set),at=(t,e,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=e.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 y=t.find(M=>M.id===p.destinationNodeId);if(!y)continue;const[k,O]=at(t,e,y,!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]},Tt=(t,e,r)=>at(t,e,r,!0,new Set),ct=(t,e,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=e.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=t.find(O=>O.id===u.sourceNodeId);if(!p)continue;const[y,k]=ct(t,e,p,new Set(n));y!==-1&&(c=Math.min(c,y+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},Lt=(t,e,r)=>ct(t,e,r,new Set),ut=t=>t.find(r=>r.type==="origin")||null,W=(t,e,r)=>{if(!t)return ut(e);const n=r.find(c=>c.sourceNodeId===t.id);if(!n)return null;const a=e.find(c=>c.id===n.destinationNodeId);return a||null};async function Mt(t,e,r,n){const a=t?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===e);return r.find(o=>o.id===(c==null?void 0:c.destinationNodeId))}const X=s.createDomain("experience-instance"),Dt=G.createFactory(({client:t,experience:e,target:r})=>{const n=s.createEvent(),a=s.createEvent(),c=s.createEvent(),o=s.createEvent(),u=s.createEvent(),p=s.createEvent(),y=e.componentStore,k=X.store("transitioning"),O=t.history.entriesStore.map(i=>i.filter(l=>l.experienceId===e.id)),M=O.map(i=>i.filter(l=>L(l.node))),I=O.map(i=>{var l;return((l=i[i.length-1])==null?void 0:l.node)||null}),f=s.combine(e.treeStore,I,({steps:i},l)=>i.find(d=>l&&L(l)&&d.id===l.stepId)||null),h=s.combine(e.treeStore,I,({nodes:i,edges:l},d)=>d?_t(i,l,d):[]),b=s.combine(e.treeStore,I,({nodes:i,edges:l},d)=>d?Lt(i,l,d):[-1,-1]),$=s.combine(e.treeStore,I,({nodes:i,edges:l},d)=>d?Tt(i,l,d):[-1,-1]),F=e.configStore.getState().initializeOpenLogic,A=X.store(F===!0),P=s.createApi(A,{open:()=>!0,close:()=>!1,toggle:i=>!i,set:(i,l)=>l}),lt=s.createEffect(async()=>{t.history.back({experienceId:e.id})}),dt=s.attach({source:e.treeStore,effect:async(i,l)=>{const d=i.nodes.find(w=>L(w)&&w.stepId===l);d&&t.history.push({experienceId:e.id,node:d})}}),J=s.attach({source:I,effect:i=>{}}),K=s.attach({source:e.treeStore,effect:async({nodes:i})=>ut(i)}),U=s.attach({source:e.treeStore,effect:async({nodes:i,edges:l},d)=>W(d,i,l)}),V=s.attach({source:e.treeStore,effect:async({nodes:i,edges:l,conditionals:d},w)=>{if(!w)return;const _=d.find(v=>v.id===w.conditionalId);if(!_)return;const x=w.id,S=await z(t,_.condition);return Mt(!!S,x,i,l)}}),Q=s.attach({source:e.treeStore,effect:async({nodes:i,edges:l},d)=>{if(!d||!nt(d))return;const w=d.action;if(!w){N.logger("warn",`Action node ${d.id} has no action name`);return}const _=t.actions.getByName(w).getState();if(!_){N.logger("warn",`Action '${w}' not registered on client`);const x=l.find(S=>S.sourceNodeId===d.id&&S.sourceNodeHandle==="false");return x?i.find(S=>S.id===x.destinationNodeId):null}if(typeof _.action!="function"){N.logger("warn",`Action '${w}' is not a function`);const x=l.find(S=>S.sourceNodeId===d.id&&S.sourceNodeHandle==="false");return x?i.find(S=>S.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${w}`),await _.action();const x=l.find(v=>v.sourceNodeId===d.id&&v.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${d.id}`),null;const S=i.find(v=>v.id===x.destinationNodeId);return N.logger("info",`Action '${w}' succeeded, moving to node ${S==null?void 0:S.id}`),S||null}catch(x){N.logger("warn",`Action '${w}' failed:`,x);const S=l.find(C=>C.sourceNodeId===d.id&&C.sourceNodeHandle==="false");if(!S)return N.logger("warn",`No 'false' edge found for action node ${d.id}`),null;const v=i.find(C=>C.id===S.destinationNodeId);return N.logger("info",`Action '${w}' failed, moving to node ${v==null?void 0:v.id}`),v||null}}}),pt=s.createEffect(i=>{if(i)return t.launchExperienceById(i.experienceId)}),Y=s.attach({source:[I,e.treeStore],effect:async([i,{nodes:l,edges:d}])=>W(i,l,d)}),D=s.attach({source:[I,e.treeStore],effect:async([i,{nodes:l,edges:d}])=>W(i,l,d)}),gt=s.createEffect(i=>{t.history.push({experienceId:e.id,node:i})}),Z=s.attach({source:e.configStore,effect:async({initializeOpenLogic:i})=>ot(i)?!!await z(t,i):i??!1});return s.split({source:I,match:i=>i?Ft(i)?"condition":L(i)?"step":$t(i)?"launchExperience":et(i)?"origin":nt(i)?"action":"other":"none",cases:{none:K,origin:U,condition:V,step:J,launchExperience:pt,action:Q,__:s.createEvent()}}),s.sample({clock:[V.doneData,U.doneData,K.doneData,D.doneData,Y.doneData,Q.doneData],filter:Boolean,target:gt}),s.sample({clock:a,target:D}),s.sample({clock:a,source:f,filter:Boolean,target:t.eventBus.prepend(i=>({type:"step_submit",step:i,experience:e}))}),s.sample({clock:D.done,source:f,filter:Boolean,target:t.eventBus.prepend(i=>({type:"step_submit_success",step:i,experience:e}))}),s.sample({clock:D.fail,source:f,filter:Boolean,target:t.eventBus.prepend(i=>({type:"step_submit_error",step:i,experience:e}))}),s.sample({clock:c,target:lt}),s.sample({clock:o,target:dt}),s.sample({source:s.combine([V.pending,U.pending,K.pending,D.pending]),fn:i=>i.some(Boolean)?"transitioning":"ready",target:k}),s.sample({clock:J.doneData,source:f,filter:Boolean,target:t.eventBus.prepend(i=>({type:"step_enter",step:i,experience:e}))}),s.sample({clock:p,target:Z}),s.sample({source:Z.doneData,fn:i=>!!i,target:A}),s.sample({source:I,clock:n,filter:i=>i?et(i):!0,target:Y}),F===!0&&n(),s.sample({source:A,filter:i=>!!i,target:n}),s.sample({source:A,filter:Boolean,target:t.eventBus.prepend(()=>({type:"experience_open",experience:e}))}),s.sample({source:A,filter:i=>!i,target:t.eventBus.prepend(()=>({type:"experience_close",experience:e}))}),s.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:e.id,configStore:e.configStore,target:r,componentStore:y,stateStore:k,isOpenStore:A,open:P.open,close:P.close,toggleOpen:P.toggle,setOpen:P.set,treeStore:e.treeStore,currentNodeStore:I,currentStepStore:f,nextReachableStepNodesStore:h,stepsToOriginStore:b,stepsToLeafStore:$,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:M}});function ft(t){return G.invoke(Dt,t)}const Rt=G.createFactory(({client:t})=>{const e=X.store({}),r=s.createEvent(),n=s.createEvent(),a=s.createEvent(),c=s.createApi(e,{register(f,h){const b=[...f[h.experienceId]??[]];return b.push(h),{...f,[h.experienceId]:b}},unregister(f,h){var F;const b=h.experienceId,$=(F=f[b])==null?void 0:F.filter(A=>A!==h);return{...f,[b]:$??[]}}}),o=s.createEffect(({experience:f,target:h})=>ft({client:t,experience:f,target:h})),u=s.createEffect(f=>{c.register(f)}),p=s.createEffect(f=>{f.target&&It(f.target,()=>{a(f)})}),y=s.createEffect(f=>{c.unregister(f)}),k=s.createEffect(f=>{const h=f.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const b=h.frameworkStore.getState();if(!b){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 F=Et($);try{b.render(F,h.component,t,f)}catch(A){N.logger("error",A)}});s.sample({clock:r,target:o}),s.sample({clock:a,target:y}),s.sample({clock:o.doneData,target:[u,p,n]}),s.sample({clock:o.doneData,target:t.eventBus.prepend(f=>({type:"experience_initialized",experienceInstance:f}))}),s.sample({clock:n,target:k});function O(f,h){r({experience:f,target:h})}const M=e.map(f=>Object.values(f).flat());function I(f){return e.map(h=>h[f]||[],{skipVoid:!1})}return{spawn:O,getByExperienceId:I,listStore:M}});function Pt(t){return G.invoke(Rt,t)}exports.createAppHosts=vt;exports.createExperienceInstance=ft;exports.createExperienceInstanceIndex=Pt;exports.domInteractive=Nt;exports.evaluateRuleLogic=z;exports.getTargetElements=kt;exports.isPickedRoot=it;exports.isRulesLogic=ot;exports.isStepNode=L;exports.tagTargetElement=bt;
|