@picked/client 0.0.0-main.250829070939-3cfd3f3 → 0.0.1-dev.1756875690387

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.
Files changed (67) hide show
  1. package/dist/cjs/index.js +1 -2
  2. package/dist/cjs/plugins/create-experience/index.js +0 -1
  3. package/dist/cjs/plugins/experience-browserstorage-plugin/index.js +0 -1
  4. package/dist/cjs/plugins/history-browserstorage-plugin/index.js +0 -1
  5. package/dist/cjs/plugins/responses-browserstorage-plugin/index.js +0 -1
  6. package/dist/cjs/plugins/responses-indexeddb-plugin/index.js +0 -1
  7. package/dist/cjs/plugins/shopify/index.js +1 -2
  8. package/dist/cjs/plugins/single-page-app/index.js +0 -1
  9. package/dist/cjs/plugins/window-object/index.js +0 -1
  10. package/dist/cjs/server/index.js +0 -1
  11. package/dist/esm/index.js +1 -2
  12. package/dist/esm/plugins/create-experience/index.js +0 -1
  13. package/dist/esm/plugins/experience-browserstorage-plugin/index.js +0 -1
  14. package/dist/esm/plugins/history-browserstorage-plugin/index.js +0 -1
  15. package/dist/esm/plugins/responses-browserstorage-plugin/index.js +0 -1
  16. package/dist/esm/plugins/responses-indexeddb-plugin/index.js +0 -1
  17. package/dist/esm/plugins/shopify/index.js +27 -28
  18. package/dist/esm/plugins/single-page-app/index.js +0 -1
  19. package/dist/esm/plugins/window-object/index.js +0 -1
  20. package/dist/esm/server/index.js +0 -1
  21. package/dist/experience-instance-6ZKZS7dF.cjs +0 -1
  22. package/dist/experience-instance-BA0EXYg5.js +0 -1
  23. package/dist/id-BKIWbSTy.cjs +0 -1
  24. package/dist/id-BW-g3y32.js +0 -1
  25. package/dist/logger-BsmHUUw1.cjs +0 -1
  26. package/dist/logger-C9a75KZn.js +0 -1
  27. package/dist/object-BbFTsGh3.cjs +0 -1
  28. package/dist/object-JwZ58NOH.js +0 -1
  29. package/dist/storage-BPJwmlva.cjs +0 -1
  30. package/dist/storage-D87xFySf.js +0 -1
  31. package/dist/supports-BvrzQAVk.js +0 -1
  32. package/dist/supports-C0y3-V5V.cjs +0 -1
  33. package/dist/types/plugins/shopify/shopify.d.ts +18 -18
  34. package/dist/types/plugins/shopify/shopify.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/dist/cjs/index.js.map +0 -1
  37. package/dist/cjs/plugins/create-experience/index.js.map +0 -1
  38. package/dist/cjs/plugins/experience-browserstorage-plugin/index.js.map +0 -1
  39. package/dist/cjs/plugins/history-browserstorage-plugin/index.js.map +0 -1
  40. package/dist/cjs/plugins/responses-browserstorage-plugin/index.js.map +0 -1
  41. package/dist/cjs/plugins/responses-indexeddb-plugin/index.js.map +0 -1
  42. package/dist/cjs/plugins/shopify/index.js.map +0 -1
  43. package/dist/cjs/plugins/single-page-app/index.js.map +0 -1
  44. package/dist/cjs/plugins/window-object/index.js.map +0 -1
  45. package/dist/cjs/server/index.js.map +0 -1
  46. package/dist/esm/index.js.map +0 -1
  47. package/dist/esm/plugins/create-experience/index.js.map +0 -1
  48. package/dist/esm/plugins/experience-browserstorage-plugin/index.js.map +0 -1
  49. package/dist/esm/plugins/history-browserstorage-plugin/index.js.map +0 -1
  50. package/dist/esm/plugins/responses-browserstorage-plugin/index.js.map +0 -1
  51. package/dist/esm/plugins/responses-indexeddb-plugin/index.js.map +0 -1
  52. package/dist/esm/plugins/shopify/index.js.map +0 -1
  53. package/dist/esm/plugins/single-page-app/index.js.map +0 -1
  54. package/dist/esm/plugins/window-object/index.js.map +0 -1
  55. package/dist/esm/server/index.js.map +0 -1
  56. package/dist/experience-instance-6ZKZS7dF.cjs.map +0 -1
  57. package/dist/experience-instance-BA0EXYg5.js.map +0 -1
  58. package/dist/id-BKIWbSTy.cjs.map +0 -1
  59. package/dist/id-BW-g3y32.js.map +0 -1
  60. package/dist/logger-BsmHUUw1.cjs.map +0 -1
  61. package/dist/logger-C9a75KZn.js.map +0 -1
  62. package/dist/object-BbFTsGh3.cjs.map +0 -1
  63. package/dist/object-JwZ58NOH.js.map +0 -1
  64. package/dist/storage-BPJwmlva.cjs.map +0 -1
  65. package/dist/storage-D87xFySf.js.map +0 -1
  66. package/dist/supports-BvrzQAVk.js.map +0 -1
  67. package/dist/supports-C0y3-V5V.cjs.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,2 +1 @@
1
- "use strict";var L=Object.defineProperty;var V=(t,e,s)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var h=(t,e,s)=>V(t,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),w=require("../experience-instance-6ZKZS7dF.cjs"),b=require("../logger-BsmHUUw1.cjs"),v=require("../storage-BPJwmlva.cjs"),T=require("../id-BKIWbSTy.cjs"),M=require("../object-BbFTsGh3.cjs"),k=require("../supports-C0y3-V5V.cjs"),$=f.createDomain("experience"),N=S.createFactory(({client:t,experience:e})=>{const s=$.store(e),o=f.createApi(s,{merge(n,m){return{...n,...m.experience}}}),i=s.map(n=>({type:n.type,name:n.name,decisionLogic:n.decide,targetSelectors:n.targets})),u=t.components.listStore.map(n=>n.find(m=>m.name===`experience:${e.id}`)||n.find(m=>m.name==="experience"),{skipVoid:!1}),r=s.map(n=>({steps:n.steps,nodes:n.nodes,edges:n.edges,conditionals:n.conditionals}));return{id:e.id,configStore:i,treeStore:r,componentStore:u,merge:o.merge}});function z(t){return S.invoke(N,t)}const K=S.createFactory(({client:t})=>{const e=$.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.id]:n}}});function o(r){const n=e.getState()[r.id];if(n){n.merge({experience:r,strategy:"override"});return}const m=z({client:t,experience:r});s.register(m)}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getById:u,listStore:i}});function q(t){return S.invoke(K,t)}const _=(t,e)=>{e.register(t)},O=(t,e)=>{const{targetSelectors:s}=e.configStore.getState(),o=w.getTargetElements(s,e.id);o.forEach(({elements:u})=>u.forEach(r=>w.tagTargetElement(r,e.id))),w.createAppHosts(o).forEach(u=>{t.experienceInstances.spawn(e,u)})},j=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await H(t,e)&&O(t,e)}))},H=async(t,e)=>{const{type:s,decisionLogic:o,targetSelectors:i}=e.configStore.getState();return w.getTargetElements(i,e.id).length<1?!1:s==="funnel"?o?await w.evaluateRuleLogic(t,o)===!0:!1:i.length===0?!1:w.isRulesLogic(o)?await w.evaluateRuleLogic(t,o)===!0:!0},U=(t,e,s)=>{const o=e.name,i=e.setup(t);if(i){const u=s[o]??{};s[o]=Object.freeze({...u,...i})}},W=f.createDomain("component"),G=S.createFactory(({client:t,component:e,name:s})=>{const o=t.frameworks.getByName(e.frameworkName);return{name:s,component:e,frameworkStore:o}});function J(t){return S.invoke(G,t)}const Y=S.createFactory(({client:t})=>{const e=W.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:n}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Component '${r}' already registered. Registering again will override the previous registration.`);const c=J({client:t,name:r,component:n});s.register(c)}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function Q(t){return S.invoke(Y,t)}const A=(t,e,s)=>{s.register(t,e)},X=f.createDomain("framework"),Z=S.createFactory(({client:t})=>{const e=X.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:n.framework}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Framework '${r}' already registered. Registering again will override the previous registration.`),s.register({name:r,framework:n})}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function ee(t){return S.invoke(Z,t)}const te=(t,e)=>{e.register(t.name,t)},re=6e3,B=v.createStorageKey("last_ping","global"),se=t=>`${t}/api/v1/ping`,ne=async t=>{try{const e=Date.now(),s=localStorage.getItem(B);if(s&&e-parseInt(s)<re)return!0;const o=se(t.apiUrl),i={projectId:t.projectId,path:window.location.pathname},u=JSON.stringify(i),r={"Content-Type":"application/json"},n=document.getElementById("picked_script"),m=n==null?void 0:n.dataset.verceltoken;m&&(r["x-vercel-protection-bypass"]=m);const l=(await fetch(o,{method:"POST",headers:r,body:u})).ok;return l&&localStorage.setItem(B,e.toString()),l}catch(e){return b.logger("error",e),!1}};function oe(t){const e=typeof window<"u",s={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(s)}const ie=f.createDomain("predicate"),ae=S.createFactory(({client:t})=>{const e=ie.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:{name:n.name,predicate:n.predicate}}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Predicate '${r}' already registered. Registering again will override the previous registration.`),s.register(Object.freeze({name:r,predicate:n}))}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function ce(t){return S.invoke(ae,t)}const ue=(t,e,s)=>{s.register(t,e)},D=f.createDomain("feature"),le=S.createFactory(()=>{const t=D.store({}),e=D.store([]),s=f.createApi(t,{register(c,l){return{...c,[l.id]:l.feature}}});function o(c,l){t.getState()[c]&&b.logger("warn",`Feature '${c}' already registered. Registering again will override the previous registration.`);const d={id:c,feature:{...l,id:c}};s.register(Object.freeze({id:c,feature:d}))}const i=f.createEffect(async({id:c,key:l,storage:a="local"})=>{const d=v.createStorageKey(`feature:${c}:${l}`,"global"),y=(a==="session"?v.sessionStore:v.localStore).get(d).boolean();if(y!==null)return{id:c,bucket:y}}),u=f.createEffect(c=>{if(!c)return null;const l=v.createStorageKey(`feature:${c.id}:${c.key}`,"global");(c.storage==="session"?v.sessionStore:v.localStore).set(l,c.bucket)}),r=f.attach({source:{allFeaturesStore:t,resolvedFeaturesStore:e},effect:async({allFeaturesStore:c,resolvedFeaturesStore:l},{id:a,decide:d})=>{const g=l.find(F=>F.id===a);if(g)return g;const y=c[a];if(!y)throw new Error(`Feature with id '${a}' not found`);const p=await d();return{id:y.id,bucket:p,storage:y.feature.storage}}});f.sample({clock:s.register,fn:c=>{const{id:l,feature:a}=c;return{id:l,key:a.feature.key,storage:a.feature.storage}},target:i}),f.sample({source:e,clock:[i.doneData,r.doneData],fn:(c,l)=>!l||c.some(a=>a.id===l.id)?c:[...c,l],target:e}),f.sample({source:t,clock:r.doneData,fn:(c,l)=>{var p;const{id:a,bucket:d,storage:g}=l,y=(p=c[a])==null?void 0:p.feature.key;return y?{key:y,id:a,bucket:d,storage:g}:null},target:u});const n=f.combine({allFeaturesStore:t,resolvedFeaturesStore:e}).map(({allFeaturesStore:c,resolvedFeaturesStore:l})=>Object.values(c).map(a=>{const d=l.find(g=>g.id===a.id);return d?{id:a.id,name:a.feature.name,key:a.feature.key,getBucket:()=>({id:a.id,bucket:d.bucket}),isResolved:!0}:{id:a.id,name:a.feature.name,key:a.feature.key,getBucket:async()=>await r(a.feature),isResolved:!1}}));function m(c){return t.map(l=>l[c],{skipVoid:!1})}return{register:o,getByName:m,listStore:n}});function pe(){return S.invoke(le)}const ge=(t,e,s)=>{s.register(t,e)},x=f.createDomain("history");function R(t,e){return{id:T.generateId("history-entry"),node:e,at:Date.now(),experienceId:t}}const de=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),s=x.event(),o=x.event(),i=x.event();t.on(e,(r,n)=>({entries:[...r.entries,R(n.experienceId,n.node)]})),t.on(s,(r,n)=>({entries:[...r.entries.slice(0,-1),R(n.experienceId,n.node)]})),t.on(i,(r,n)=>n);function u(r,n){const m={lastStepIndex:-1,secondLastStepIndex:-1};for(let c=r.length-1;c>=0;c--){const l=r[c],a=l==null?void 0:l.node;if(!(!a||!w.isStepNode(a))&&!(n&&(l==null?void 0:l.experienceId)!==n))if(m.lastStepIndex===-1)m.lastStepIndex=c;else{m.secondLastStepIndex=c;break}}return m}return t.on(o,(r,n)=>{const{secondLastStepIndex:m}=u(r.entries,n.experienceId),c=m!==-1?r.entries.slice(0,m+1):r.entries;return{...r,entries:c}}),{push:e,replace:s,back:o,restore:i,entriesStore:t.map(r=>r.entries)}});function fe(){return S.invoke(de)}const me=()=>f.createEvent(),ye=f.createDomain("field"),he=S.createFactory(()=>{const t=ye.store({}),e=f.createApi(t,{register(r,n){return{...r,[n.field.id]:n.field}}});function s(r){e.register({field:r})}const o=t.map(r=>Object.values(r));function i(r){return t.map(n=>n[r]||null)}function u(r){return t.map(n=>Object.values(n).find(m=>m.name===r)||null)}return{register:s,getById:i,listStore:o,getByName:u}});function Se(){return S.invoke(he)}const ve=(t,e)=>{e.register(t)},ke=f.createDomain("response"),we=S.createFactory(({client:t})=>{const e=ke.store({}),s=f.createEvent(),o=f.createEvent(),i=f.createApi(e,{register(a,d){return{...a,[d.fieldId]:d.response}},clear(a,d){const{[d]:g,...y}=a;return y},clearAll(){return{}}});function u(a,d){i.register({fieldId:a,response:d})}async function r(a){const d=[];return await Promise.allSettled(Object.entries(a).map(async([g,y])=>{let p=y;const F=t.fields.getById(g).getState();if(!F){d.push({fieldId:g,userMessage:`Field '${g}' not found`,systemMessage:`No field with ID '${g}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:p});return}if(F.multiple&&(typeof p=="string"||typeof p=="number"||typeof p=="boolean")&&(p=[p]),!M.isEmpty(F.validation)){const I=await w.evaluateRuleLogic(t,F.validation,{$input:p});if(typeof I=="string"){d.push({fieldId:g,userMessage:I,systemMessage:`Field validation resulted in an error: ${I}.`,value:p});return}if(I===!1){d.push({fieldId:g,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:p});return}}if(F.required&&(typeof p>"u"||p===null||p===""||Array.isArray(p)&&!p.length)){d.push({fieldId:g,userMessage:"This field is required",systemMessage:"Field is required.",value:p});return}if(!F.multiple&&Array.isArray(p)&&p.length>1){d.push({fieldId:g,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:p});return}if(F.options){const I=F.options.map(E=>E.value),C=Array.isArray(p)?p:[p];Array.isArray(p)&&(C.every(E=>I.includes(E))||d.push({fieldId:g,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${I.join(", ")}`,value:p}))}})),d.length?{errors:d}:(Object.entries(a).forEach(([g,y])=>{u(g,y)}),{errors:[]})}const n=e.map(a=>a),m=e.map(a=>Object.keys(a).map(g=>({fieldId:g,value:a[g]})));function c(a){const d=t.fields.getById(a),g=e.map(y=>y[a]||null);return f.combine({f:d,r:g},({f:y,r:p})=>p||(y!=null&&y.defaultValue?y.defaultValue:null))}function l(a){const d=t.fields.getByName(a);return f.combine({f:d,s:e},({f:g,s:y})=>{const p=g&&y[g.id]||null;return p||(g!=null&&g.defaultValue?g.defaultValue:null)})}return f.sample({clock:s,target:i.clearAll}),f.sample({clock:o,target:i.clear}),{register:u,clearAll:s,clear:o,commit:r,listStore:m,getAllStore:n,getByFieldId:c,getByFieldName:l}});function Fe(t){return S.invoke(we,t)}const be=()=>"0.0.0-main.250829070939-3cfd3f3";function Ie(){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 xe(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},s=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&s.add(i);for(const i of s){const u=i.replace("picked-","");e[u]=t.getAll(i)}const o=v.createStorageKey("s");if(s.size>0)v.sessionStore.set(o,e);else{const i=v.sessionStore.get(o);if(i)return i.json()||{}}return e}class P{constructor(e){h(this,"options");h(this,"isReady",!1);h(this,"project");h(this,"plugins",{});h(this,"eventBus",me());h(this,"organizationId");h(this,"projectId");h(this,"apiUrl");h(this,"searchParams",xe());h(this,"history",fe());h(this,"components",Q({client:this}));h(this,"experienceInstances",w.createExperienceInstanceIndex({client:this}));h(this,"experiences",q({client:this}));h(this,"frameworks",ee({client:this}));h(this,"predicates",ce({client:this}));h(this,"features",pe());h(this,"fields",Se());h(this,"responses",Fe({client:this}));b.logger("info","Picked client initializing."),this.organizationId=e.organizationId,this.projectId=e.projectId,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ie(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.eventBus({type:"initialized",version:be()}),b.logger("info","Picked client initialized.")}start(){ne(this),(async()=>{k.supportsDocument()&&(document.body&&await j(this),await w.domInteractive(),await j(this),this.eventBus({type:"ready"}),this.isReady=!0)})()}registerFramework(e){te(e,this.frameworks)}registerComponent(e,s){A(e,s,this.components)}registerPlugin(e){U(this,e,this.plugins)}registerFeature(e,s){ge(e,s,this.features)}registerPredicate(e,s){ue(e,s,this.predicates)}registerField(e){ve(e,this.fields)}registerExperience(e){e.component&&A(`experience:${e.id}`,e.component,this.components),_(e,this.experiences)}getStateSnapshot(){return oe(this)}async launchExperienceById(e){const s=this.experiences.getById(e).getState();if(!s){b.logger("warn",`Experience with id '${e}' not found.`);return}O(this,s)}setupPlugins(){var e;(e=this.options.plugins)==null||e.forEach(s=>{if(Array.isArray(s)){s.forEach(i=>{this.registerPlugin(i)});return}const o=typeof s=="function"?s():s;if(Array.isArray(o)){o.forEach(i=>this.registerPlugin(i));return}this.registerPlugin(o)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([s,o])=>{const i=typeof o=="function"?o():o;this.registerFeature(s,i)}),this.searchParams.feature&&this.searchParams.feature.forEach(s=>{try{const[o,i]=s.split(":");if(!o||!i)return;let u=i;(u==="true"||u==="false")&&(u=!!u),this.registerFeature(o,{key:"*",name:o,decide:()=>u,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([s,o])=>{if(typeof o!="function"){b.logger("warn",`Predicate "${s}" is not a function.`);return}this.registerPredicate(s,o)})}getPluginConfig(e){return this.plugins[e]??{}}}h(P,"logger",b.logger);const Ee=t=>{const e=new P(t);return k.bindClient(e),e};exports.isPickedRoot=w.isPickedRoot;exports.createStorageKey=v.createStorageKey;exports.localStore=v.localStore;exports.sessionStore=v.sessionStore;exports.subscribe=v.subscribe;exports.supportsCookies=k.supportsCookies;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.supportsWindow=k.supportsWindow;exports.Picked=P;exports.createClient=Ee;
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";var L=Object.defineProperty;var V=(t,e,s)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var h=(t,e,s)=>V(t,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),w=require("../experience-instance-6ZKZS7dF.cjs"),b=require("../logger-BsmHUUw1.cjs"),v=require("../storage-BPJwmlva.cjs"),T=require("../id-BKIWbSTy.cjs"),M=require("../object-BbFTsGh3.cjs"),k=require("../supports-C0y3-V5V.cjs"),$=f.createDomain("experience"),N=S.createFactory(({client:t,experience:e})=>{const s=$.store(e),o=f.createApi(s,{merge(n,m){return{...n,...m.experience}}}),i=s.map(n=>({type:n.type,name:n.name,decisionLogic:n.decide,targetSelectors:n.targets})),u=t.components.listStore.map(n=>n.find(m=>m.name===`experience:${e.id}`)||n.find(m=>m.name==="experience"),{skipVoid:!1}),r=s.map(n=>({steps:n.steps,nodes:n.nodes,edges:n.edges,conditionals:n.conditionals}));return{id:e.id,configStore:i,treeStore:r,componentStore:u,merge:o.merge}});function z(t){return S.invoke(N,t)}const K=S.createFactory(({client:t})=>{const e=$.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.id]:n}}});function o(r){const n=e.getState()[r.id];if(n){n.merge({experience:r,strategy:"override"});return}const m=z({client:t,experience:r});s.register(m)}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getById:u,listStore:i}});function q(t){return S.invoke(K,t)}const _=(t,e)=>{e.register(t)},O=(t,e)=>{const{targetSelectors:s}=e.configStore.getState(),o=w.getTargetElements(s,e.id);o.forEach(({elements:u})=>u.forEach(r=>w.tagTargetElement(r,e.id))),w.createAppHosts(o).forEach(u=>{t.experienceInstances.spawn(e,u)})},j=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await H(t,e)&&O(t,e)}))},H=async(t,e)=>{const{type:s,decisionLogic:o,targetSelectors:i}=e.configStore.getState();return w.getTargetElements(i,e.id).length<1?!1:s==="funnel"?o?await w.evaluateRuleLogic(t,o)===!0:!1:i.length===0?!1:w.isRulesLogic(o)?await w.evaluateRuleLogic(t,o)===!0:!0},U=(t,e,s)=>{const o=e.name,i=e.setup(t);if(i){const u=s[o]??{};s[o]=Object.freeze({...u,...i})}},W=f.createDomain("component"),G=S.createFactory(({client:t,component:e,name:s})=>{const o=t.frameworks.getByName(e.frameworkName);return{name:s,component:e,frameworkStore:o}});function J(t){return S.invoke(G,t)}const Y=S.createFactory(({client:t})=>{const e=W.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:n}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Component '${r}' already registered. Registering again will override the previous registration.`);const c=J({client:t,name:r,component:n});s.register(c)}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function Q(t){return S.invoke(Y,t)}const A=(t,e,s)=>{s.register(t,e)},X=f.createDomain("framework"),Z=S.createFactory(({client:t})=>{const e=X.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:n.framework}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Framework '${r}' already registered. Registering again will override the previous registration.`),s.register({name:r,framework:n})}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function ee(t){return S.invoke(Z,t)}const te=(t,e)=>{e.register(t.name,t)},re=6e3,B=v.createStorageKey("last_ping","global"),se=t=>`${t}/api/v1/ping`,ne=async t=>{try{const e=Date.now(),s=localStorage.getItem(B);if(s&&e-parseInt(s)<re)return!0;const o=se(t.apiUrl),i={projectId:t.projectId,path:window.location.pathname},u=JSON.stringify(i),r={"Content-Type":"application/json"},n=document.getElementById("picked_script"),m=n==null?void 0:n.dataset.verceltoken;m&&(r["x-vercel-protection-bypass"]=m);const l=(await fetch(o,{method:"POST",headers:r,body:u})).ok;return l&&localStorage.setItem(B,e.toString()),l}catch(e){return b.logger("error",e),!1}};function oe(t){const e=typeof window<"u",s={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(s)}const ie=f.createDomain("predicate"),ae=S.createFactory(({client:t})=>{const e=ie.store({}),s=f.createApi(e,{register(r,n){return{...r,[n.name]:{name:n.name,predicate:n.predicate}}}});function o(r,n){e.getState()[r]&&b.logger("warn",`Predicate '${r}' already registered. Registering again will override the previous registration.`),s.register(Object.freeze({name:r,predicate:n}))}const i=e.map(r=>Object.values(r));function u(r){return e.map(n=>n[r],{skipVoid:!1})}return{register:o,getByName:u,listStore:i}});function ce(t){return S.invoke(ae,t)}const ue=(t,e,s)=>{s.register(t,e)},D=f.createDomain("feature"),le=S.createFactory(()=>{const t=D.store({}),e=D.store([]),s=f.createApi(t,{register(c,l){return{...c,[l.id]:l.feature}}});function o(c,l){t.getState()[c]&&b.logger("warn",`Feature '${c}' already registered. Registering again will override the previous registration.`);const d={id:c,feature:{...l,id:c}};s.register(Object.freeze({id:c,feature:d}))}const i=f.createEffect(async({id:c,key:l,storage:a="local"})=>{const d=v.createStorageKey(`feature:${c}:${l}`,"global"),y=(a==="session"?v.sessionStore:v.localStore).get(d).boolean();if(y!==null)return{id:c,bucket:y}}),u=f.createEffect(c=>{if(!c)return null;const l=v.createStorageKey(`feature:${c.id}:${c.key}`,"global");(c.storage==="session"?v.sessionStore:v.localStore).set(l,c.bucket)}),r=f.attach({source:{allFeaturesStore:t,resolvedFeaturesStore:e},effect:async({allFeaturesStore:c,resolvedFeaturesStore:l},{id:a,decide:d})=>{const g=l.find(F=>F.id===a);if(g)return g;const y=c[a];if(!y)throw new Error(`Feature with id '${a}' not found`);const p=await d();return{id:y.id,bucket:p,storage:y.feature.storage}}});f.sample({clock:s.register,fn:c=>{const{id:l,feature:a}=c;return{id:l,key:a.feature.key,storage:a.feature.storage}},target:i}),f.sample({source:e,clock:[i.doneData,r.doneData],fn:(c,l)=>!l||c.some(a=>a.id===l.id)?c:[...c,l],target:e}),f.sample({source:t,clock:r.doneData,fn:(c,l)=>{var p;const{id:a,bucket:d,storage:g}=l,y=(p=c[a])==null?void 0:p.feature.key;return y?{key:y,id:a,bucket:d,storage:g}:null},target:u});const n=f.combine({allFeaturesStore:t,resolvedFeaturesStore:e}).map(({allFeaturesStore:c,resolvedFeaturesStore:l})=>Object.values(c).map(a=>{const d=l.find(g=>g.id===a.id);return d?{id:a.id,name:a.feature.name,key:a.feature.key,getBucket:()=>({id:a.id,bucket:d.bucket}),isResolved:!0}:{id:a.id,name:a.feature.name,key:a.feature.key,getBucket:async()=>await r(a.feature),isResolved:!1}}));function m(c){return t.map(l=>l[c],{skipVoid:!1})}return{register:o,getByName:m,listStore:n}});function pe(){return S.invoke(le)}const ge=(t,e,s)=>{s.register(t,e)},x=f.createDomain("history");function R(t,e){return{id:T.generateId("history-entry"),node:e,at:Date.now(),experienceId:t}}const de=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),s=x.event(),o=x.event(),i=x.event();t.on(e,(r,n)=>({entries:[...r.entries,R(n.experienceId,n.node)]})),t.on(s,(r,n)=>({entries:[...r.entries.slice(0,-1),R(n.experienceId,n.node)]})),t.on(i,(r,n)=>n);function u(r,n){const m={lastStepIndex:-1,secondLastStepIndex:-1};for(let c=r.length-1;c>=0;c--){const l=r[c],a=l==null?void 0:l.node;if(!(!a||!w.isStepNode(a))&&!(n&&(l==null?void 0:l.experienceId)!==n))if(m.lastStepIndex===-1)m.lastStepIndex=c;else{m.secondLastStepIndex=c;break}}return m}return t.on(o,(r,n)=>{const{secondLastStepIndex:m}=u(r.entries,n.experienceId),c=m!==-1?r.entries.slice(0,m+1):r.entries;return{...r,entries:c}}),{push:e,replace:s,back:o,restore:i,entriesStore:t.map(r=>r.entries)}});function fe(){return S.invoke(de)}const me=()=>f.createEvent(),ye=f.createDomain("field"),he=S.createFactory(()=>{const t=ye.store({}),e=f.createApi(t,{register(r,n){return{...r,[n.field.id]:n.field}}});function s(r){e.register({field:r})}const o=t.map(r=>Object.values(r));function i(r){return t.map(n=>n[r]||null)}function u(r){return t.map(n=>Object.values(n).find(m=>m.name===r)||null)}return{register:s,getById:i,listStore:o,getByName:u}});function Se(){return S.invoke(he)}const ve=(t,e)=>{e.register(t)},ke=f.createDomain("response"),we=S.createFactory(({client:t})=>{const e=ke.store({}),s=f.createEvent(),o=f.createEvent(),i=f.createApi(e,{register(a,d){return{...a,[d.fieldId]:d.response}},clear(a,d){const{[d]:g,...y}=a;return y},clearAll(){return{}}});function u(a,d){i.register({fieldId:a,response:d})}async function r(a){const d=[];return await Promise.allSettled(Object.entries(a).map(async([g,y])=>{let p=y;const F=t.fields.getById(g).getState();if(!F){d.push({fieldId:g,userMessage:`Field '${g}' not found`,systemMessage:`No field with ID '${g}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:p});return}if(F.multiple&&(typeof p=="string"||typeof p=="number"||typeof p=="boolean")&&(p=[p]),!M.isEmpty(F.validation)){const I=await w.evaluateRuleLogic(t,F.validation,{$input:p});if(typeof I=="string"){d.push({fieldId:g,userMessage:I,systemMessage:`Field validation resulted in an error: ${I}.`,value:p});return}if(I===!1){d.push({fieldId:g,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:p});return}}if(F.required&&(typeof p>"u"||p===null||p===""||Array.isArray(p)&&!p.length)){d.push({fieldId:g,userMessage:"This field is required",systemMessage:"Field is required.",value:p});return}if(!F.multiple&&Array.isArray(p)&&p.length>1){d.push({fieldId:g,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:p});return}if(F.options){const I=F.options.map(E=>E.value),C=Array.isArray(p)?p:[p];Array.isArray(p)&&(C.every(E=>I.includes(E))||d.push({fieldId:g,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${I.join(", ")}`,value:p}))}})),d.length?{errors:d}:(Object.entries(a).forEach(([g,y])=>{u(g,y)}),{errors:[]})}const n=e.map(a=>a),m=e.map(a=>Object.keys(a).map(g=>({fieldId:g,value:a[g]})));function c(a){const d=t.fields.getById(a),g=e.map(y=>y[a]||null);return f.combine({f:d,r:g},({f:y,r:p})=>p||(y!=null&&y.defaultValue?y.defaultValue:null))}function l(a){const d=t.fields.getByName(a);return f.combine({f:d,s:e},({f:g,s:y})=>{const p=g&&y[g.id]||null;return p||(g!=null&&g.defaultValue?g.defaultValue:null)})}return f.sample({clock:s,target:i.clearAll}),f.sample({clock:o,target:i.clear}),{register:u,clearAll:s,clear:o,commit:r,listStore:m,getAllStore:n,getByFieldId:c,getByFieldName:l}});function Fe(t){return S.invoke(we,t)}const be=()=>"0.0.1-dev.1756875690387";function Ie(){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 xe(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},s=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&s.add(i);for(const i of s){const u=i.replace("picked-","");e[u]=t.getAll(i)}const o=v.createStorageKey("s");if(s.size>0)v.sessionStore.set(o,e);else{const i=v.sessionStore.get(o);if(i)return i.json()||{}}return e}class P{constructor(e){h(this,"options");h(this,"isReady",!1);h(this,"project");h(this,"plugins",{});h(this,"eventBus",me());h(this,"organizationId");h(this,"projectId");h(this,"apiUrl");h(this,"searchParams",xe());h(this,"history",fe());h(this,"components",Q({client:this}));h(this,"experienceInstances",w.createExperienceInstanceIndex({client:this}));h(this,"experiences",q({client:this}));h(this,"frameworks",ee({client:this}));h(this,"predicates",ce({client:this}));h(this,"features",pe());h(this,"fields",Se());h(this,"responses",Fe({client:this}));b.logger("info","Picked client initializing."),this.organizationId=e.organizationId,this.projectId=e.projectId,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ie(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.eventBus({type:"initialized",version:be()}),b.logger("info","Picked client initialized.")}start(){ne(this),(async()=>{k.supportsDocument()&&(document.body&&await j(this),await w.domInteractive(),await j(this),this.eventBus({type:"ready"}),this.isReady=!0)})()}registerFramework(e){te(e,this.frameworks)}registerComponent(e,s){A(e,s,this.components)}registerPlugin(e){U(this,e,this.plugins)}registerFeature(e,s){ge(e,s,this.features)}registerPredicate(e,s){ue(e,s,this.predicates)}registerField(e){ve(e,this.fields)}registerExperience(e){e.component&&A(`experience:${e.id}`,e.component,this.components),_(e,this.experiences)}getStateSnapshot(){return oe(this)}async launchExperienceById(e){const s=this.experiences.getById(e).getState();if(!s){b.logger("warn",`Experience with id '${e}' not found.`);return}O(this,s)}setupPlugins(){var e;(e=this.options.plugins)==null||e.forEach(s=>{if(Array.isArray(s)){s.forEach(i=>{this.registerPlugin(i)});return}const o=typeof s=="function"?s():s;if(Array.isArray(o)){o.forEach(i=>this.registerPlugin(i));return}this.registerPlugin(o)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([s,o])=>{const i=typeof o=="function"?o():o;this.registerFeature(s,i)}),this.searchParams.feature&&this.searchParams.feature.forEach(s=>{try{const[o,i]=s.split(":");if(!o||!i)return;let u=i;(u==="true"||u==="false")&&(u=!!u),this.registerFeature(o,{key:"*",name:o,decide:()=>u,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([s,o])=>{if(typeof o!="function"){b.logger("warn",`Predicate "${s}" is not a function.`);return}this.registerPredicate(s,o)})}getPluginConfig(e){return this.plugins[e]??{}}}h(P,"logger",b.logger);const Ee=t=>{const e=new P(t);return k.bindClient(e),e};exports.isPickedRoot=w.isPickedRoot;exports.createStorageKey=v.createStorageKey;exports.localStore=v.localStore;exports.sessionStore=v.sessionStore;exports.subscribe=v.subscribe;exports.supportsCookies=k.supportsCookies;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.supportsWindow=k.supportsWindow;exports.Picked=P;exports.createClient=Ee;
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../../../id-BKIWbSTy.cjs"),o={serialize(i){return JSON.stringify(i)},deserialize(i){return JSON.parse(i)}},N=i=>({name:"create-experience",setup:a=>{i.experiences.forEach(d=>{const s=d.serialize(),l=o.deserialize(s);l.component=d.component,a.registerExperience(l),l.fields.forEach(p=>{a.registerField(p)})})}}),y=(i,a)=>{const d={id:h.generateId("step"),label:i.label,experience:a,fields:[],node:null,nextStep(s){return this.experience.addStep(s,this)},nextConditional(s){return this.experience.addConditional(s,this)},addNextExperience(s){return this.experience.addExperience(s,this)},addField(s){return this.experience.addField(s,this)},serialize(){return o.serialize({id:this.id,label:this.label,fieldIds:this.fields.map(s=>s.id)})}};return u({step:d,type:"step"},a),d},z=()=>[0,0],u=(i,a)=>{const d={id:h.generateId("node"),position:z(),experience:a};if(i.type==="step"){const l={...d,type:"step",connectedStep:i.step,serialize(){return o.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,position:this.position,label:this.connectedStep.label})}};return l.connectedStep.node=l,l}if(i.type==="conditional"){const l={...d,type:"conditional",connectedConditional:i.conditional,serialize(){return o.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id,position:this.position})}};return l.connectedConditional.node=l,l}return i.type==="experience"?{...d,type:"experience",connectedExperience:i.experience,serialize(){return o.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id,position:this.position})}}:{...d,type:"origin",serialize(){return o.serialize({id:this.id,type:this.type,position:this.position})}}},c=(i,a)=>({id:h.generateId("edge"),sourceNode:i.sourceNode,sourceNodeHandle:i.sourceNodeHandle,destinationNode:i.destinationNode,experience:a,serialize(){return o.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),m=(i,a)=>{const d={id:h.generateId("conditional"),condition:i.condition,node:null,experience:a,addTrue(s){if(!this.node||!s.node)throw new Error("todo no node");const l=c({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(l)},addFalse(s){if(!this.node||!s.node)throw new Error("todo no node");const l=c({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(l)},serialize(){return o.serialize({id:this.id,condition:this.condition})}};return u({conditional:d,type:"conditional"},a),d},g=i=>{var d;return{id:h.generateId("field"),name:i.name,type:i.type,label:i.label,placeholder:i.placeholder,description:i.description,helpText:i.helpText,defaultValue:i.defaultValue,multiple:i.multiple,validation:i.validation,required:i.required,options:((d=i.options)==null?void 0:d.map(s=>({...s,id:h.generateId("option")})))||null,policies:i.policies,serialize(){const s={id:this.id,name:this.name,label:this.label,placeholder:this.placeholder,required:this.required,description:this.description,helpText:this.helpText,validation:this.validation,policies:this.policies},l=typeof this.defaultValue=="string"?this.defaultValue:null,p=typeof this.defaultValue=="number"?this.defaultValue:null,n=typeof this.defaultValue=="boolean"?this.defaultValue:null;switch(this.type){case"text":if(this.multiple){let e=null;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="string"&&e.push(t);e.length===0&&(e=null)}return o.serialize({...s,type:"text",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:`${t.value}`})):null})}return o.serialize({...s,type:"text",multiple:!1,defaultValue:l,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:`${e.value}`})):null});case"number":if(this.multiple){let e=null;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="number"&&e.push(t);e.length===0&&(e=null)}return o.serialize({...s,type:"number",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:Number(t.value)})):null})}return o.serialize({...s,type:"number",multiple:!1,defaultValue:p,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:Number(e.value)})):null});case"boolean":if(this.multiple){let e=null;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="boolean"&&e.push(t);e.length===0&&(e=null)}return o.serialize({...s,type:"boolean",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:!!t.value})):null})}return o.serialize({...s,type:"boolean",multiple:!1,defaultValue:n,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:!!e.value})):null});default:throw new Error("Unsupported field type")}}}},b=i=>{const a=[],d=[],s=[],l=[],p=[];return{id:i.id,component:i.component,type:i.type,name:i.name,decide:i.decide,targets:i.targets,steps:a,nodes:d,edges:s,fields:p,conditionals:l,addStep(n,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=u({type:"origin"},this),this.nodes.push(t));const r="serialize"in n?n:y(n,this);if(t){if(!r.node)throw new Error("todo no node");const f=c({sourceNode:t,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(f)}return this.steps.includes(r)||(this.steps.push(r),r.node&&this.nodes.push(r.node)),r},addConditional(n,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=u({type:"origin"},this),this.nodes.push(t));const r="serialize"in n?n:m(n,this);if(t){if(!r.node)throw new Error("todo no node");const f=c({sourceNode:t,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(f)}return this.conditionals.includes(r)||(this.conditionals.push(r),r.node&&this.nodes.push(r.node)),r},addExperience(n,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=u({type:"origin"},this),this.nodes.push(t));const r=u({type:"experience",experience:n},this);if(this.nodes.push(r),t){const f=c({sourceNode:t,destinationNode:r,sourceNodeHandle:null},this);this.edges.push(f)}return n},addField(n,e){const t="serialize"in n?n:g(n);return e&&e.fields.push(t),this.fields.includes(t)||this.fields.push(t),t},serialize(){return o.serialize({id:this.id,type:this.type,component:this.component,name:this.name,decide:this.decide,targets:this.targets,steps:this.steps.map(n=>o.deserialize(n.serialize())),nodes:this.nodes.map(n=>o.deserialize(n.serialize())),edges:this.edges.map(n=>o.deserialize(n.serialize())),conditionals:this.conditionals.map(n=>o.deserialize(n.serialize())),fields:this.fields.map(n=>o.deserialize(n.serialize()))})}}};exports.createConditional=m;exports.createEdge=c;exports.createExperience=b;exports.createExperiencePlugin=N;exports.createField=g;exports.createNode=u;exports.createStep=y;exports.serialization=o;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),o=require("../../../storage-BPJwmlva.cjs"),g=require("../../../logger-BsmHUUw1.cjs"),S=({storage:i="local"}={})=>({name:"experience-browserstorage-plugin",setup:n=>{const c=i==="local"?o.localStore:o.sessionStore,a=r.createEffect(async e=>{if(!e){g.logger("warn","No experience instance provided to loadExperienceVisiblityFx.");return}const t=o.createStorageKey("open-close","experience",e),s=c.get(t).boolean();e.setOpen(s??e.isOpenStore.getState())});r.sample({source:n.eventBus,filter:e=>e.type==="experience_initialized",fn:e=>e.experienceInstance,target:a});const l=r.createEffect(async e=>{const t=o.createStorageKey("open-close","experience",e),s=e.isOpenStore.getState();c.set(t,s)}),p=e=>r.sample({source:e.isOpenStore,fn:()=>e,target:l});n.experienceInstances.listStore.watch(e=>{e.forEach(t=>p(t))})}});exports.experienceBrowserStoragePlugin=S;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("effector"),o=require("../../../storage-BPJwmlva.cjs"),i=o.createStorageKey("history","global"),l=({storage:a="local"}={})=>({name:"history-browserstorage-plugin",setup:r=>{const s=a==="local"?o.localStore:o.sessionStore,n=t.createEffect(async()=>{const e=s.get(i).json();e&&r.history.restore({entries:e})}),c=t.createEffect(async e=>{s.set(i,e)});t.sample({source:r.eventBus,filter:e=>e.type==="initialized",target:n}),t.sample({source:r.history.entriesStore,target:c})}});exports.historyBrowserStoragePlugin=l;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("effector"),l=require("../../../storage-BPJwmlva.cjs"),c=l.createStorageKey("responses","global"),b=({storage:i="local"}={})=>({name:"responses-browserstorage-plugin",setup:s=>{const r=i==="local"?l.localStore:l.sessionStore,p=o.createEffect(async()=>{const e=r.get(c).json();if(!e)return null;Object.entries(e).forEach(([n,t])=>{s.responses.register(n,t)})}),u=o.createEffect(async e=>{const n=r.get(c).json(),t={};Object.entries(e).forEach(([g,S])=>{const a=s.fields.getById(g).getState();!(a!=null&&a.policies.doNotStoreValue)&&(t[g]=S)});const f={...n,...t};r.set(c,f)});o.sample({source:s.eventBus,filter:e=>e.type==="initialized",target:p}),o.sample({source:s.responses.getAllStore,target:u})}});exports.responsesBrowserStoragePlugin=b;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("effector"),w="picked";async function d(r){const{storeName:o,version:a=1,keyPath:n="id"}=r;return new Promise((i,t)=>{const s=indexedDB.open(w,a);s.onupgradeneeded=()=>{const e=s.result;e.objectStoreNames.contains(o)||e.createObjectStore(o,n?{keyPath:n}:void 0)},s.onsuccess=()=>i(s.result),s.onerror=()=>{var e;return t(new Error((e=s.error)==null?void 0:e.message))}})}async function g(r,o){return new Promise((a,n)=>{const s=r.transaction(o,"readonly").objectStore(o).getAll();s.onsuccess=()=>a(s.result),s.onerror=()=>{var e;return n(new Error((e=s.error)==null?void 0:e.message))}})}async function x(r,o,a){return new Promise((n,i)=>{const e=r.transaction(o,"readwrite").objectStore(o).put(a);e.onsuccess=()=>n(),e.onerror=()=>{var c;return i(new Error((c=e.error)==null?void 0:c.message))}})}async function y(r,o,a){return new Promise((n,i)=>{const e=r.transaction(o,"readwrite").objectStore(o).delete(a);e.onsuccess=()=>n(),e.onerror=()=>{var c;return i(new Error((c=e.error)==null?void 0:c.message))}})}async function b(r,o){return new Promise((a,n)=>{const s=r.transaction(o,"readwrite").objectStore(o).clear();s.onsuccess=()=>a(),s.onerror=()=>{var e;return n(new Error((e=s.error)==null?void 0:e.message))}})}const u="responses",p={storeName:u,keyPath:"fieldId"},E=()=>({name:"responses-indexdb-plugin",setup:r=>{const o=l.createEffect(async()=>{const t=await d(p),e=(await g(t,u)).reduce((c,{fieldId:f,value:m})=>(c[f]=m,c),{});await r.responses.commit(e)}),a=l.createEffect(async t=>{t.forEach(s=>{d(p).then(e=>{x(e,u,s)}).catch(e=>{console.error("Failed to store response in IndexedDB:",e)})})}),n=l.createEffect(async()=>{const t=await d(p);await b(t,u)}),i=l.createEffect(async t=>{const s=await d(p);await y(s,u,t)});l.sample({source:r.eventBus,filter:t=>t.type==="initialized",target:o}),l.sample({clock:r.responses.listStore,source:{responses:r.responses.listStore,fields:r.fields.listStore},fn:({responses:t,fields:s})=>{const e=s.filter(c=>!c.policies.doNotStoreValue);return t.filter(c=>e.some(f=>f.id===c.fieldId))},target:a}),l.sample({clock:r.responses.clearAll,target:n}),l.sample({clock:r.responses.clear,target:i})}});exports.responsesIndexedDBPlugin=E;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t={homepage:/^\/$/,productPage:/(?:^|\/)products\/(?<productHandle>[^/]+)\/?$/,collection:/^\/collections\/[^/]+\/?$/,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(?:\/|$)/},n=/^\/collections\/(?<collectionHandle>[^/]+)(?:\/|$)/,a=(e,o)=>o?!!e.exec(o.pathname):!1,c=(e,o)=>{if(o){const i=e.exec(o.pathname);if(i)return i[1]}},g={isPage:({location:e})=>a(t.page,e),getPageHandle:({location:e})=>c(t.page,e),isProductPage:({location:e})=>a(t.productPage,e),getProductHandle:({location:e})=>c(t.productPage,e),isCollectionPage:({location:e})=>a(t.collection,e),getCollectionHandle:({location:e})=>c(n,e),isBlogPage:({location:e})=>a(t.blog,e),getBlogHandle:({location:e})=>c(t.blog,e),isArticlePage:({location:e})=>a(t.article,e),getArticleHandle:({location:e})=>c(t.article,e),isAppProxyPage:({location:e})=>a(t.appProxy,e),getAppProxyHandle:({location:e})=>c(t.appProxy,e),isAccountPage:({location:e})=>a(t.accountWildcard,e),isLoginPage:({location:e})=>a(t.accountLogin,e),isRegisterPage:({location:e})=>a(t.accountRegister,e),isCartPage:({location:e})=>a(t.cart,e),isCheckoutPage:({location:e})=>a(t.checkout,e),isHomepage:({location:e})=>a(t.homepage,e)},l=()=>({name:"shopify",setup:e=>{Object.entries(g).forEach(([o,i])=>{e.registerPredicate(`shopify_${o}`,i)})}});exports.shopifyPlugin=l;
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a={homepage:/^\/$/,productPage:/(?:^|\/)products\/(?<productHandle>[^/]+)\/?$/,collection:/^\/collections\/[^/]+\/?$/,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(?:\/|$)/},n=/^\/collections\/(?<collectionHandle>[^/]+)(?:\/|$)/,t=(e,c)=>c?!!e.exec(c.pathname):!1,o=(e,c)=>{if(c){const i=e.exec(c.pathname);if(i)return i[1]}},g={"is-page":({location:e})=>t(a.page,e),"get-page-handle":({location:e})=>o(a.page,e),"is-product-page":({location:e})=>t(a.productPage,e),"get-product-handle":({location:e})=>o(a.productPage,e),"is-collection-page":({location:e})=>t(a.collection,e),"get-collection-handle":({location:e})=>o(n,e),"is-blog-page":({location:e})=>t(a.blog,e),"get-blog-handle":({location:e})=>o(a.blog,e),"is-article-page":({location:e})=>t(a.article,e),"get-article-handle":({location:e})=>o(a.article,e),"is-app-proxy-page":({location:e})=>t(a.appProxy,e),"get-app-proxy-handle":({location:e})=>o(a.appProxy,e),"is-account-page":({location:e})=>t(a.accountWildcard,e),"is-login-page":({location:e})=>t(a.accountLogin,e),"is-register-page":({location:e})=>t(a.accountRegister,e),"is-cart-page":({location:e})=>t(a.cart,e),"is-checkout-page":({location:e})=>t(a.checkout,e),"is-homepage":({location:e})=>t(a.homepage,e)},l=()=>({name:"shopify",setup:e=>{Object.entries(g).forEach(([c,i])=>{e.registerPredicate(`shopify-${c}`,i)})}});exports.shopifyPlugin=l;
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../supports-C0y3-V5V.cjs"),c=require("../../../object-BbFTsGh3.cjs"),o=i.GLOBAL_OBJ;let s;const l=n=>({name:"single-page-app",setup:r=>{n.instrumentHistory&&i.supportsWindow()&&f(()=>{requestAnimationFrame(()=>{r.start()})})}});function f(n){if(o.addEventListener("popstate",()=>{const e=o.location.href,t=s;s=e,t!==e&&n()}),!i.supportsHistory())return;function r(e){return function(...t){const p=t.length>2?t[2]:void 0;if(p){const a=s,u=String(p);if(s=u,a===u)return e.apply(this,t);n()}return e.apply(this,t)}}c.patchMethod(o.history,"pushState",r),c.patchMethod(o.history,"replaceState",r)}exports.singlePageAppPlugin=l;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../supports-C0y3-V5V.cjs"),i=()=>({name:"window",setup:e=>{t.supportsWindow()&&(window.Picked=e)}});exports.windowObjectPlugin=i;
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-6ZKZS7dF.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;
2
- //# sourceMappingURL=index.js.map
package/dist/esm/index.js CHANGED
@@ -562,7 +562,7 @@ const Ne = (t, e) => {
562
562
  function Me(t) {
563
563
  return w(Le, t);
564
564
  }
565
- const ze = () => "0.0.0-main.250829070939-3cfd3f3";
565
+ const ze = () => "0.0.1-dev.1756875690387";
566
566
  function _e() {
567
567
  if (M()) {
568
568
  const t = [
@@ -742,4 +742,3 @@ export {
742
742
  pt as supportsShadowRoot,
743
743
  re as supportsWindow
744
744
  };
745
- //# sourceMappingURL=index.js.map
@@ -396,4 +396,3 @@ export {
396
396
  m as createStep,
397
397
  l as serialization
398
398
  };
399
- //# sourceMappingURL=index.js.map
@@ -36,4 +36,3 @@ const y = ({
36
36
  export {
37
37
  y as experienceBrowserStoragePlugin
38
38
  };
39
- //# sourceMappingURL=index.js.map
@@ -24,4 +24,3 @@ const a = l("history", "global"), f = ({
24
24
  export {
25
25
  f as historyBrowserStoragePlugin
26
26
  };
27
- //# sourceMappingURL=index.js.map
@@ -34,4 +34,3 @@ const a = m("responses", "global"), j = ({
34
34
  export {
35
35
  j as responsesBrowserStoragePlugin
36
36
  };
37
- //# sourceMappingURL=index.js.map
@@ -99,4 +99,3 @@ const l = "responses", m = { storeName: l, keyPath: "fieldId" }, I = () => ({
99
99
  export {
100
100
  I as responsesIndexedDBPlugin
101
101
  };
102
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- const t = {
1
+ const a = {
2
2
  homepage: /^\/$/,
3
3
  productPage: /(?:^|\/)products\/(?<productHandle>[^/]+)\/?$/,
4
4
  collection: /^\/collections\/[^/]+\/?$/,
@@ -11,50 +11,49 @@ const t = {
11
11
  accountWildcard: /^\/account\/.+/,
12
12
  accountLogin: /^\/account\/login(?:\/|$)/,
13
13
  accountRegister: /^\/account\/register(?:\/|$)/
14
- }, g = /^\/collections\/(?<collectionHandle>[^/]+)(?:\/|$)/, a = (e, c) => c ? !!e.exec(c.pathname) : !1, o = (e, c) => {
15
- if (c) {
16
- const n = e.exec(c.pathname);
17
- if (n)
18
- return n[1];
14
+ }, n = /^\/collections\/(?<collectionHandle>[^/]+)(?:\/|$)/, c = (e, t) => t ? !!e.exec(t.pathname) : !1, o = (e, t) => {
15
+ if (t) {
16
+ const p = e.exec(t.pathname);
17
+ if (p)
18
+ return p[1];
19
19
  }
20
- }, i = {
20
+ }, g = {
21
21
  // Pages
22
- isPage: ({ location: e }) => a(t.page, e),
23
- getPageHandle: ({ location: e }) => o(t.page, e),
22
+ "is-page": ({ location: e }) => c(a.page, e),
23
+ "get-page-handle": ({ location: e }) => o(a.page, e),
24
24
  // Products
25
- isProductPage: ({ location: e }) => a(t.productPage, e),
26
- getProductHandle: ({ location: e }) => o(t.productPage, e),
25
+ "is-product-page": ({ location: e }) => c(a.productPage, e),
26
+ "get-product-handle": ({ location: e }) => o(a.productPage, e),
27
27
  // Collections
28
- isCollectionPage: ({ location: e }) => a(t.collection, e),
29
- getCollectionHandle: ({ location: e }) => o(g, e),
28
+ "is-collection-page": ({ location: e }) => c(a.collection, e),
29
+ "get-collection-handle": ({ location: e }) => o(n, e),
30
30
  // Blogs
31
- isBlogPage: ({ location: e }) => a(t.blog, e),
32
- getBlogHandle: ({ location: e }) => o(t.blog, e),
31
+ "is-blog-page": ({ location: e }) => c(a.blog, e),
32
+ "get-blog-handle": ({ location: e }) => o(a.blog, e),
33
33
  // Blog Articles
34
- isArticlePage: ({ location: e }) => a(t.article, e),
35
- getArticleHandle: ({ location: e }) => o(t.article, e),
34
+ "is-article-page": ({ location: e }) => c(a.article, e),
35
+ "get-article-handle": ({ location: e }) => o(a.article, e),
36
36
  // Apps
37
- isAppProxyPage: ({ location: e }) => a(t.appProxy, e),
38
- getAppProxyHandle: ({ location: e }) => o(t.appProxy, e),
37
+ "is-app-proxy-page": ({ location: e }) => c(a.appProxy, e),
38
+ "get-app-proxy-handle": ({ location: e }) => o(a.appProxy, e),
39
39
  // Account
40
- isAccountPage: ({ location: e }) => a(t.accountWildcard, e),
41
- isLoginPage: ({ location: e }) => a(t.accountLogin, e),
42
- isRegisterPage: ({ location: e }) => a(t.accountRegister, e),
40
+ "is-account-page": ({ location: e }) => c(a.accountWildcard, e),
41
+ "is-login-page": ({ location: e }) => c(a.accountLogin, e),
42
+ "is-register-page": ({ location: e }) => c(a.accountRegister, e),
43
43
  // Cart
44
- isCartPage: ({ location: e }) => a(t.cart, e),
44
+ "is-cart-page": ({ location: e }) => c(a.cart, e),
45
45
  // Checkout
46
- isCheckoutPage: ({ location: e }) => a(t.checkout, e),
46
+ "is-checkout-page": ({ location: e }) => c(a.checkout, e),
47
47
  // Homepage
48
- isHomepage: ({ location: e }) => a(t.homepage, e)
48
+ "is-homepage": ({ location: e }) => c(a.homepage, e)
49
49
  }, r = () => ({
50
50
  name: "shopify",
51
51
  setup: (e) => {
52
- Object.entries(i).forEach(([c, n]) => {
53
- e.registerPredicate(`shopify_${c}`, n);
52
+ Object.entries(g).forEach(([t, p]) => {
53
+ e.registerPredicate(`shopify-${t}`, p);
54
54
  });
55
55
  }
56
56
  });
57
57
  export {
58
58
  r as shopifyPlugin
59
59
  };
60
- //# sourceMappingURL=index.js.map
@@ -35,4 +35,3 @@ function h(r) {
35
35
  export {
36
36
  y as singlePageAppPlugin
37
37
  };
38
- //# sourceMappingURL=index.js.map
@@ -8,4 +8,3 @@ const t = () => ({
8
8
  export {
9
9
  t as windowObjectPlugin
10
10
  };
11
- //# sourceMappingURL=index.js.map
@@ -89,4 +89,3 @@ function w(c, p) {
89
89
  export {
90
90
  w as render
91
91
  };
92
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  "use strict";const i=require("effector"),O=require("@withease/factories"),T=require("./supports-C0y3-V5V.cjs"),M=require("./logger-BsmHUUw1.cjs"),ie=require("./object-BbFTsGh3.cjs");function ce(e){return typeof e=="number"&&!isNaN(e)}function B(e){return typeof e=="string"}function w(e){return Array.isArray(e)}function K(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(ce(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function A(e){return`${e}`}const ae={"==":(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 k(e),"!":async e=>!await k(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?B(t)?t.indexOf(A(e))!==-1:w(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(A).join(""),substr:(e,t,r)=>{const n=A(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)=>w(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=A(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=w(e[0])?e[0]:e,r=[];for(const n of t){const a=await d({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await d({missing:t},this);if(!w(r)||!w(t))return[];const n=r.filter(B);return t.filter(B).length-n.length>=m(e)?[]:n},invoke(e){return typeof e!="function"?null:e()},regexp_matches(e,t){let r=e,n="";if(w(e)){const[c,o]=e;r=c,n=o}return!B(r)||!B(n)?!1:new RegExp(r,n).test(A(t))},throw(e){throw new Error(A(e))}};async function d(e,t){if(!e)return e;if(K(e))return d(await e,t);if(w(e))return Promise.all(e.map(o=>d(o,t)));if(!z(e))return e;const r=ue(e);let n=r?e[r]??[]:[];switch(w(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await k(await d(n[o],t)))return d(n[o+1],t);return n.length%2===1?d(n[n.length-1],t):null;case"and":{let o=null;for(const u of n)if(o=await d(u,t),!await k(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await d(u,t),await k(o))return o;return o}case"map":{const o=await d(n[0],t);return w(o)?await Promise.all(o.map(u=>d(n[1],u))):[]}case"filter":{const o=await d(n[0],t);return w(o)?(await Promise.all(o.map(async f=>{const S=await k(await d(n[1],f));return{item:f,shouldInclude:S}}))).filter(({shouldInclude:f})=>f).map(({item:f})=>f):[]}case"reduce":{const o=await d(n[0],t);if(!w(o))return n.length>2?await d(n[2],t):null;const u=n[1];let S=n.length>2?await d(n[2],t):null;for(const x of o)S=await d(u,{current:x,accumulator:S});return S}case"all":{const o=await d(n[0],t);if(!w(o)||o.length===0)return!1;for(const u of o)if(!await k(await d(n[1],u)))return!1;return!0}case"some":{const o=await d(n[0],t);if(!w(o))return!1;for(const u of o)if(await k(await d(n[1],u)))return!0;return!1}case"none":{const o=await d(n[0],t);if(!w(o))return!0;for(const u of o)if(await k(await d(n[1],u)))return!1;return!0}case"catch":try{return await d(n[0],t)}catch(o){return z(o)?await d(o,t):n[1]?await d(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>d(o,t))),c=r?ae[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function k(e){return K(e)?k(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ue(e){return Object.keys(e)[0]}function fe(e){return!ie.isEmpty(e)}async function W(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,f)=>({...u,[f.name]:()=>f.predicate(n)}),{}),c=e.features.listStore.getState().reduce((u,f)=>({...u,[f.id]:async()=>{const{bucket:S}=await f.getBucket();return S}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:a,features:c};return await d(t,o)}function pe(e){return!T.supportsWindow()||!T.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}function le(e){if(!T.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:"open"})}function de(){return new Promise((e,t)=>{if(!T.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function me(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const J="picked-root",H="picked-target";function ge(e,t){return e.flatMap(r=>{const n=pe(r.selector).filter(a=>!ye(a,t));return{...r,elements:n}})}function he(e){return e.flatMap(t=>t.elements.map(r=>xe(r,t.placement)))}function Se(e,t){e.classList.add(H),e.classList.add(`${H}-${t}`)}function ye(e,t){return e.classList.contains(`${H}-${t}`)}function we(e){return e.classList.contains(J)}function Ee(){const e=document.createElement("div");return e.style.display="block",e.classList.add(J),e}function xe(e,t){let r;const n=Ee();if(e instanceof Document)r=e.body.appendChild(n);else{switch(t){case"replace":e.replaceWith(n);break;case"before":e.before(n);break;case"after":e.after(n);break;case"prepend":e.prepend(n);break;default:e.append(n);break}r=n}return r}function Ie(e){return e.type==="conditional"}function F(e){return e.type==="step"}function ke(e){return e.type==="experience"}function G(e){return e.type==="origin"}const Q=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),F(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(f=>f.id===o.destinationNodeId);return u?Q(e,t,u,!1,a):[]})),ve=(e,t,r)=>Q(e,t,r,!0,new Set),X=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(f=>f.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const f of c){const S=e.find(I=>I.id===f.destinationNodeId);if(!S)continue;const[x,y]=X(e,t,S,!1,new Set(a));x!==-1&&(o=Math.min(o,x+1),u=Math.max(u,y+1))}return o===1/0?[-1,-1]:[o,u]},Ne=(e,t,r)=>X(e,t,r,!0,new Set),Y=(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 f=e.find(y=>y.id===u.sourceNodeId);if(!f)continue;const[S,x]=Y(e,t,f,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,x+1))}return c===1/0?[-1,-1]:[c,o]},be=(e,t,r)=>Y(e,t,r,new Set),Z=e=>e.find(r=>r.type==="origin")||null,$=(e,t,r)=>{if(!e)return Z(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 Ae(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 j=i.createDomain("experience-instance"),Fe=O.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=t.componentStore,f=j.store("transitioning"),S=e.history.entriesStore.map(s=>s.filter(l=>l.experienceId===t.id)),x=S.map(s=>s.filter(l=>F(l.node))),y=S.map(s=>{var l;return((l=s[s.length-1])==null?void 0:l.node)||null}),I=i.combine(t.treeStore,y,({steps:s},l)=>s.find(g=>l&&F(l)&&g.id===l.stepId)||null),R=i.combine(t.treeStore,y,({nodes:s,edges:l},g)=>g?ve(s,l,g):[]),p=i.combine(t.treeStore,y,({nodes:s,edges:l},g)=>g?be(s,l,g):[-1,-1]),h=i.combine(t.treeStore,y,({nodes:s,edges:l},g)=>g?Ne(s,l,g):[-1,-1]),E=j.store(!0),v=i.createApi(E,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,l)=>l});i.sample({source:E,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:E,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))});const N=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),L=i.attach({source:t.treeStore,effect:async(s,l)=>{const g=s.nodes.find(b=>F(b)&&b.stepId===l);g&&e.history.push({experienceId:t.id,node:g})}}),q=i.attach({source:y,effect:s=>{}}),D=i.attach({source:t.treeStore,effect:async({nodes:s})=>Z(s)}),P=i.attach({source:t.treeStore,effect:async({nodes:s,edges:l},g)=>$(g,s,l)}),C=i.attach({source:t.treeStore,effect:async({nodes:s,edges:l,conditionals:g},b)=>{if(!b)return;const V=g.find(se=>se.id===b.conditionalId);if(!V)return;const re=b.id,oe=await W(e,V.condition);return Ae(!!oe,re,s,l)}}),te=i.createEffect(s=>{if(s)return e.launchExperienceById(s.experienceId)}),U=i.attach({source:[y,t.treeStore],effect:async([s,{nodes:l,edges:g}])=>$(s,l,g)}),_=i.attach({source:[y,t.treeStore],effect:async([s,{nodes:l,edges:g}])=>$(s,l,g)}),ne=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})});return i.split({source:y,match:s=>s?Ie(s)?"condition":F(s)?"step":ke(s)?"launchExperience":G(s)?"origin":"other":"none",cases:{none:D,origin:P,condition:C,step:q,launchExperience:te,__:i.createEvent()}}),i.sample({clock:[C.doneData,P.doneData,D.doneData,_.doneData,U.doneData],filter:Boolean,target:ne}),i.sample({clock:a,target:_}),i.sample({clock:a,source:I,target:e.eventBus.prepend(s=>({type:"step_submit",step:s??void 0,experience:t}))}),i.sample({clock:_.done,source:I,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s??void 0,experience:t}))}),i.sample({clock:_.fail,source:I,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s??void 0,experience:t}))}),i.sample({clock:c,target:N}),i.sample({clock:c,source:I,target:e.eventBus.prepend(s=>({type:"step_submit",step:s??void 0,experience:t}))}),i.sample({clock:o,target:L}),i.sample({source:i.combine([C.pending,P.pending,D.pending,_.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:f}),i.sample({clock:q.doneData,source:I,target:e.eventBus.prepend(s=>({type:"step_enter",step:s??void 0,experience:t}))}),i.sample({source:y,clock:n,filter:s=>s?G(s):!0,target:U}),n(),{experienceId:t.id,configStore:t.configStore,target:r,componentStore:u,stateStore:f,isOpenStore:E,open:v.open,close:v.close,toggleOpen:v.toggle,setOpen:v.set,treeStore:t.treeStore,currentNodeStore:y,currentStepStore:I,nextReachableStepNodesStore:R,stepsToOriginStore:p,stepsToLeafStore:h,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:x}});function ee(e){return O.invoke(Fe,e)}const Le=O.createFactory(({client:e})=>{const t=j.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(p,h){const E=[...p[h.experienceId]??[]];return E.push(h),{...p,[h.experienceId]:E}},unregister(p,h){var N;const E=h.experienceId,v=(N=p[E])==null?void 0:N.filter(L=>L!==h);return{...p,[E]:v??[]}}}),o=i.createEffect(({experience:p,target:h})=>ee({client:e,experience:p,target:h})),u=i.createEffect(p=>{c.register(p)}),f=i.createEffect(p=>{p.target&&me(p.target,()=>{a(p)})}),S=i.createEffect(p=>{c.unregister(p)}),x=i.createEffect(p=>{const h=p.componentStore.getState();if(!h){M.logger("warn","No app component registered. Skipping init.");return}const E=h.frameworkStore.getState();if(!E){M.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const v=p.target;if(!v){M.logger("error",`No target element registered for experience '${p.experienceId}'. Skipping rendering.`);return}const N=le(v);try{E.render(N,h.component,e,p)}catch(L){M.logger("error",L)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,f,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(p=>({type:"experience_initialized",experienceInstance:p}))}),i.sample({clock:n,target:x});function y(p,h){r({experience:p,target:h})}const I=t.map(p=>Object.values(p).flat());function R(p){return t.map(h=>h[p]||[],{skipVoid:!1})}return{spawn:y,getByExperienceId:R,listStore:I}});function _e(e){return O.invoke(Le,e)}exports.createAppHosts=he;exports.createExperienceInstance=ee;exports.createExperienceInstanceIndex=_e;exports.domInteractive=de;exports.evaluateRuleLogic=W;exports.getTargetElements=ge;exports.isPickedRoot=we;exports.isRulesLogic=fe;exports.isStepNode=F;exports.tagTargetElement=Se;
2
- //# sourceMappingURL=experience-instance-6ZKZS7dF.cjs.map
@@ -710,4 +710,3 @@ export {
710
710
  $t as i,
711
711
  Vt as t
712
712
  };
713
- //# sourceMappingURL=experience-instance-BA0EXYg5.js.map
@@ -1,2 +1 @@
1
1
  "use strict";const e={};let n=0;const r=t=>(e[t]||(e[t]=`${(n++).toString(36)}`),`${e[t]}:${(n++).toString(36)}`);exports.generateId=r;
2
- //# sourceMappingURL=id-BKIWbSTy.cjs.map
@@ -4,4 +4,3 @@ const e = (t) => (n[t] || (n[t] = `${(r++).toString(36)}`), `${n[t]}:${(r++).toS
4
4
  export {
5
5
  e as g
6
6
  };
7
- //# sourceMappingURL=id-BW-g3y32.js.map
@@ -1,2 +1 @@
1
1
  "use strict";const e=(r,...g)=>{};exports.logger=e;
2
- //# sourceMappingURL=logger-BsmHUUw1.cjs.map
@@ -3,4 +3,3 @@ const l = (e, ...r) => {
3
3
  export {
4
4
  l
5
5
  };
6
- //# sourceMappingURL=logger-C9a75KZn.js.map
@@ -1,2 +1 @@
1
1
  "use strict";function c(t,e,n){if(!(e in t))return;const o=t[e];if(typeof o!="function")throw new Error(`Expected '${String(e)}' to be a function`);const r=n(o);p(r,o),t[e]=r}function i(t,e,n){Object.defineProperty(t,e,{enumerable:!1,value:n,writable:!0,configurable:!0})}function p(t,e){const n=e.prototype||{};t.prototype=e.prototype=n,i(t,"__picked_original",e)}function u(t){return t===void 0||typeof t=="object"&&t!==null&&t.constructor===Object&&Object.keys(t).length===0}exports.isEmpty=u;exports.patchMethod=c;
2
- //# sourceMappingURL=object-BbFTsGh3.cjs.map
@@ -26,4 +26,3 @@ export {
26
26
  u as i,
27
27
  p
28
28
  };
29
- //# sourceMappingURL=object-JwZ58NOH.js.map
@@ -1,2 +1 @@
1
1
  "use strict";function f(e,t="global",o){let s="picked";if(t==="experience"){if(!o)throw new Error("Experience instance is required to scope storage to an experience");s=`${s}:${o.experienceId}`}return`${s}:${e}`}function l(e,t){const o=t==="local"?localStorage:sessionStorage,s=o.getItem(e),r=o.getItem(`${e}:expires-at`);if(r){const n=new Date,i=new Date(r);if(n>i)return c(e,t),{text:()=>null,json:()=>null,boolean:()=>null}}return{text(){return s},json(){return s?JSON.parse(s):null},boolean(){return s?s==="true":null}}}function u(e,t,o,s){const r=o==="local"?localStorage:sessionStorage,n=typeof t!="string"?JSON.stringify(t):t;if(r.setItem(e,n),typeof s=="number"){const g=new Date(Date.now()+s).toISOString();r.setItem(`${e}:expires-at`,g)}}function c(e,t){const o=t==="local"?localStorage:sessionStorage;o.removeItem(e),o.removeItem(`${e}:expires-at`)}function a(e,t,o,s){const r=t==="local"?localStorage:sessionStorage;function n(i){i.storageArea===r&&i.key===e&&s(o(e))}return window.addEventListener("storage",n),function(){window.removeEventListener("storage",n)}}const S={get(e){return l(e,"session")},set(e,t,o){u(e,t,"session",o)},remove(e){c(e,"session")},subscribe(e,t){return a(e,"session",this.get,t)}},m={get(e){return l(e,"local")},set(e,t,o){u(e,t,"local",o)},remove(e){c(e,"local")},subscribe(e,t){return a(e,"local",this.get,t)}};exports.createStorageKey=f;exports.localStore=m;exports.sessionStore=S;exports.subscribe=a;
2
- //# sourceMappingURL=storage-BPJwmlva.cjs.map
@@ -83,4 +83,3 @@ export {
83
83
  m as l,
84
84
  p as s
85
85
  };
86
- //# sourceMappingURL=storage-D87xFySf.js.map
@@ -77,4 +77,3 @@ export {
77
77
  p as i,
78
78
  f as s
79
79
  };
80
- //# sourceMappingURL=supports-BvrzQAVk.js.map
@@ -1,2 +1 @@
1
1
  "use strict";const r=Symbol("Picked"),t=globalThis,n=o=>{t[r]=o};function e(){try{return"location"in t&&!!t.location}catch{return!1}}function s(){try{return"history"in t&&!!t.history}catch{return!1}}function c(){try{return"localStorage"in t&&!!t.localStorage}catch{return!1}}function u(){try{return"sessionStorage"in t&&!!t.sessionStorage}catch{return!1}}function i(){try{return"document"in t&&"cookie"in t.document}catch{return!1}}function a(){try{return"document"in t&&"createElement"in t.document&&"attachShadow"in t.document.createElement("div")}catch{return!1}}function p(){try{return"window"in t}catch{return!1}}function l(){try{return"document"in t}catch{return!1}}function f(){try{return"IntersectionObserver"in t}catch{return!1}}exports.GLOBAL_OBJ=t;exports.bindClient=n;exports.supportsCookies=i;exports.supportsDocument=l;exports.supportsHistory=s;exports.supportsIntersectionObserver=f;exports.supportsLocalStorage=c;exports.supportsLocation=e;exports.supportsSessionStorage=u;exports.supportsShadowRoot=a;exports.supportsWindow=p;
2
- //# sourceMappingURL=supports-C0y3-V5V.cjs.map
@@ -5,24 +5,24 @@ interface PredicateArgs {
5
5
  location?: StateSnapshot['location'];
6
6
  }
7
7
  export declare const shopifyPredicates: {
8
- isPage: ({ location }: PredicateArgs) => boolean;
9
- getPageHandle: ({ location }: PredicateArgs) => string | undefined;
10
- isProductPage: ({ location }: PredicateArgs) => boolean;
11
- getProductHandle: ({ location }: PredicateArgs) => string | undefined;
12
- isCollectionPage: ({ location }: PredicateArgs) => boolean;
13
- getCollectionHandle: ({ location }: PredicateArgs) => string | undefined;
14
- isBlogPage: ({ location }: PredicateArgs) => boolean;
15
- getBlogHandle: ({ location }: PredicateArgs) => string | undefined;
16
- isArticlePage: ({ location }: PredicateArgs) => boolean;
17
- getArticleHandle: ({ location }: PredicateArgs) => string | undefined;
18
- isAppProxyPage: ({ location }: PredicateArgs) => boolean;
19
- getAppProxyHandle: ({ location }: PredicateArgs) => string | undefined;
20
- isAccountPage: ({ location }: PredicateArgs) => boolean;
21
- isLoginPage: ({ location }: PredicateArgs) => boolean;
22
- isRegisterPage: ({ location }: PredicateArgs) => boolean;
23
- isCartPage: ({ location }: PredicateArgs) => boolean;
24
- isCheckoutPage: ({ location }: PredicateArgs) => boolean;
25
- isHomepage: ({ location }: PredicateArgs) => boolean;
8
+ 'is-page': ({ location }: PredicateArgs) => boolean;
9
+ 'get-page-handle': ({ location }: PredicateArgs) => string | undefined;
10
+ 'is-product-page': ({ location }: PredicateArgs) => boolean;
11
+ 'get-product-handle': ({ location }: PredicateArgs) => string | undefined;
12
+ 'is-collection-page': ({ location }: PredicateArgs) => boolean;
13
+ 'get-collection-handle': ({ location }: PredicateArgs) => string | undefined;
14
+ 'is-blog-page': ({ location }: PredicateArgs) => boolean;
15
+ 'get-blog-handle': ({ location }: PredicateArgs) => string | undefined;
16
+ 'is-article-page': ({ location }: PredicateArgs) => boolean;
17
+ 'get-article-handle': ({ location }: PredicateArgs) => string | undefined;
18
+ 'is-app-proxy-page': ({ location }: PredicateArgs) => boolean;
19
+ 'get-app-proxy-handle': ({ location }: PredicateArgs) => string | undefined;
20
+ 'is-account-page': ({ location }: PredicateArgs) => boolean;
21
+ 'is-login-page': ({ location }: PredicateArgs) => boolean;
22
+ 'is-register-page': ({ location }: PredicateArgs) => boolean;
23
+ 'is-cart-page': ({ location }: PredicateArgs) => boolean;
24
+ 'is-checkout-page': ({ location }: PredicateArgs) => boolean;
25
+ 'is-homepage': ({ location }: PredicateArgs) => boolean;
26
26
  };
27
27
  export {};
28
28
  //# sourceMappingURL=shopify.d.ts.map
@@ -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;AAoB9D,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,WAAW,aAAa,CAAC,UAAU,CAAC,KACnC,OAMF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,cAAc,MAAM,EAAE,WAAW,aAAa,CAAC,UAAU,CAAC,uBAOxF,CAAA;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,iBAAiB;2BAEL,aAAa;kCACN,aAAa;kCAEb,aAAa;qCACV,aAAa;qCAEb,aAAa;wCACV,aAAa;+BAGtB,aAAa;kCACV,aAAa;kCAEb,aAAa;qCACV,aAAa;mCAEf,aAAa;sCACV,aAAa;kCAEjB,aAAa;gCACf,aAAa;mCACV,aAAa;+BAGjB,aAAa;mCAET,aAAa;+BAEjB,aAAa;CACzC,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;AAoB9D,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,WAAW,aAAa,CAAC,UAAU,CAAC,KACnC,OAMF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,cAAc,MAAM,EAAE,WAAW,aAAa,CAAC,UAAU,CAAC,uBAOxF,CAAA;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,iBAAiB;8BAEF,aAAa;sCACL,aAAa;sCAEb,aAAa;yCACV,aAAa;yCAEb,aAAa;4CACV,aAAa;mCAGtB,aAAa;sCACV,aAAa;sCAEb,aAAa;yCACV,aAAa;wCAEd,aAAa;2CACV,aAAa;sCAElB,aAAa;oCACf,aAAa;uCACV,aAAa;mCAGjB,aAAa;uCAET,aAAa;kCAElB,aAAa;CAC5C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/client",
3
- "version": "0.0.0-main.250829070939-3cfd3f3",
3
+ "version": "0.0.1-dev.1756875690387",
4
4
  "dependencies": {
5
5
  "@withease/factories": "^1.0.5"
6
6
  },