@picked/client 0.0.1-dev.1756875690387 → 0.0.1-dev.1762908210565

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 (107) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/plugins/create-experience/index.js +1 -1
  3. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -0
  4. package/dist/cjs/plugins/history-browser-storage/index.js +1 -0
  5. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -0
  6. package/dist/cjs/plugins/{responses-indexeddb-plugin → responses-indexeddb}/index.js +1 -1
  7. package/dist/cjs/plugins/shopify/index.js +1 -1
  8. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  9. package/dist/cjs/plugins/web-components/index.js +1 -0
  10. package/dist/cjs/plugins/window-object/index.js +1 -1
  11. package/dist/cjs/server/index.js +1 -1
  12. package/dist/esm/index.js +555 -443
  13. package/dist/esm/plugins/create-experience/index.js +172 -103
  14. package/dist/esm/plugins/experience-browser-storage/index.js +39 -0
  15. package/dist/esm/plugins/{history-browserstorage-plugin → history-browser-storage}/index.js +2 -2
  16. package/dist/esm/plugins/responses-browser-storage/index.js +41 -0
  17. package/dist/esm/plugins/{responses-indexeddb-plugin → responses-indexeddb}/index.js +24 -21
  18. package/dist/esm/plugins/shopify/index.js +38 -28
  19. package/dist/esm/plugins/single-page-app/index.js +3 -3
  20. package/dist/esm/plugins/web-components/index.js +21 -0
  21. package/dist/esm/plugins/window-object/index.js +1 -1
  22. package/dist/esm/server/index.js +1 -1
  23. package/dist/experience-instance-CF6m7G83.cjs +1 -0
  24. package/dist/experience-instance-CKru5var.js +781 -0
  25. package/dist/storage-Cb_71y48.js +94 -0
  26. package/dist/storage-DuRlyFaY.cjs +1 -0
  27. package/dist/{supports-BvrzQAVk.js → supports-BjhuLJ8z.js} +27 -11
  28. package/dist/supports-YvpQZxbh.cjs +1 -0
  29. package/dist/types/client.d.ts +26 -0
  30. package/dist/types/client.d.ts.map +1 -1
  31. package/dist/types/entities/action/action.d.ts +15 -0
  32. package/dist/types/entities/action/action.d.ts.map +1 -0
  33. package/dist/types/entities/experience/experience.d.ts +19 -6
  34. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  35. package/dist/types/entities/experience-instance/experience-instance.d.ts +13 -10
  36. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  37. package/dist/types/entities/feature/feature.d.ts +5 -2
  38. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  39. package/dist/types/entities/field/field.d.ts +27 -19
  40. package/dist/types/entities/field/field.d.ts.map +1 -1
  41. package/dist/types/entities/history/history.d.ts.map +1 -1
  42. package/dist/types/entities/predicate/predicate.d.ts +1 -1
  43. package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
  44. package/dist/types/entities/response/response.d.ts +8 -0
  45. package/dist/types/entities/response/response.d.ts.map +1 -1
  46. package/dist/types/exports.d.ts +2 -0
  47. package/dist/types/exports.d.ts.map +1 -1
  48. package/dist/types/picked.d.ts +28 -10
  49. package/dist/types/picked.d.ts.map +1 -1
  50. package/dist/types/plugins/create-experience/create-experience.d.ts +48 -13
  51. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  52. package/dist/types/plugins/experience-browser-storage/index.d.ts.map +1 -0
  53. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -0
  54. package/dist/types/plugins/history-browser-storage/index.d.ts.map +1 -0
  55. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -0
  56. package/dist/types/plugins/responses-browser-storage/index.d.ts.map +1 -0
  57. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -0
  58. package/dist/types/plugins/responses-indexeddb/index.d.ts.map +1 -0
  59. package/dist/types/plugins/responses-indexeddb/plugin.d.ts.map +1 -0
  60. package/dist/types/plugins/shopify/plugin.d.ts.map +1 -1
  61. package/dist/types/plugins/shopify/utils.d.ts +21 -0
  62. package/dist/types/plugins/shopify/utils.d.ts.map +1 -0
  63. package/dist/types/plugins/web-components/index.d.ts +2 -0
  64. package/dist/types/plugins/web-components/index.d.ts.map +1 -0
  65. package/dist/types/plugins/web-components/plugin.d.ts +3 -0
  66. package/dist/types/plugins/web-components/plugin.d.ts.map +1 -0
  67. package/dist/types/utils/dom.d.ts +5 -5
  68. package/dist/types/utils/dom.d.ts.map +1 -1
  69. package/dist/types/utils/events.d.ts +29 -24
  70. package/dist/types/utils/events.d.ts.map +1 -1
  71. package/dist/types/utils/get-step-fields.d.ts +4 -0
  72. package/dist/types/utils/get-step-fields.d.ts.map +1 -0
  73. package/dist/types/utils/nodes.d.ts +2 -1
  74. package/dist/types/utils/nodes.d.ts.map +1 -1
  75. package/dist/types/utils/storage.d.ts +3 -0
  76. package/dist/types/utils/storage.d.ts.map +1 -1
  77. package/dist/types/utils/supports.d.ts +2 -0
  78. package/dist/types/utils/supports.d.ts.map +1 -1
  79. package/dist/types/utils/user-session.d.ts +5 -0
  80. package/dist/types/utils/user-session.d.ts.map +1 -0
  81. package/package.json +32 -26
  82. package/dist/cjs/plugins/experience-browserstorage-plugin/index.js +0 -1
  83. package/dist/cjs/plugins/history-browserstorage-plugin/index.js +0 -1
  84. package/dist/cjs/plugins/responses-browserstorage-plugin/index.js +0 -1
  85. package/dist/esm/plugins/experience-browserstorage-plugin/index.js +0 -38
  86. package/dist/esm/plugins/responses-browserstorage-plugin/index.js +0 -36
  87. package/dist/experience-instance-6ZKZS7dF.cjs +0 -1
  88. package/dist/experience-instance-BA0EXYg5.js +0 -712
  89. package/dist/storage-BPJwmlva.cjs +0 -1
  90. package/dist/storage-D87xFySf.js +0 -85
  91. package/dist/supports-C0y3-V5V.cjs +0 -1
  92. package/dist/types/plugins/experience-browserstorage-plugin/index.d.ts.map +0 -1
  93. package/dist/types/plugins/experience-browserstorage-plugin/plugin.d.ts.map +0 -1
  94. package/dist/types/plugins/history-browserstorage-plugin/index.d.ts.map +0 -1
  95. package/dist/types/plugins/history-browserstorage-plugin/plugin.d.ts.map +0 -1
  96. package/dist/types/plugins/responses-browserstorage-plugin/index.d.ts.map +0 -1
  97. package/dist/types/plugins/responses-browserstorage-plugin/plugin.d.ts.map +0 -1
  98. package/dist/types/plugins/responses-indexeddb-plugin/index.d.ts.map +0 -1
  99. package/dist/types/plugins/responses-indexeddb-plugin/plugin.d.ts.map +0 -1
  100. /package/dist/types/plugins/{experience-browserstorage-plugin → experience-browser-storage}/index.d.ts +0 -0
  101. /package/dist/types/plugins/{experience-browserstorage-plugin → experience-browser-storage}/plugin.d.ts +0 -0
  102. /package/dist/types/plugins/{history-browserstorage-plugin → history-browser-storage}/index.d.ts +0 -0
  103. /package/dist/types/plugins/{history-browserstorage-plugin → history-browser-storage}/plugin.d.ts +0 -0
  104. /package/dist/types/plugins/{responses-browserstorage-plugin → responses-browser-storage}/index.d.ts +0 -0
  105. /package/dist/types/plugins/{responses-browserstorage-plugin → responses-browser-storage}/plugin.d.ts +0 -0
  106. /package/dist/types/plugins/{responses-indexeddb-plugin → responses-indexeddb}/index.d.ts +0 -0
  107. /package/dist/types/plugins/{responses-indexeddb-plugin → responses-indexeddb}/plugin.d.ts +0 -0
package/dist/cjs/index.js CHANGED
@@ -1 +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.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
+ "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-CF6m7G83.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.1-dev.1762908210565";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 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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../../../id-BKIWbSTy.cjs"),a={serialize(i){return JSON.stringify(i)},deserialize(i){return JSON.parse(i)}},y=i=>({name:"create-experience",setup:d=>{i.experiences.forEach(l=>{const n=l.serialize(),o=a.deserialize(n);o.component=l.component,d.registerExperience(o),o.fields.forEach(f=>{d.registerField(f)})})}}),m=(i,d)=>({id:p.generateId("node"),position:[0,0],experience:d,type:"action",action:i.action,addNext(n){if(!n.node)throw new Error("Cannot connect to node");const o=u({sourceNode:this,destinationNode:n.node,sourceNodeHandle:null},d);d.edges.push(o)},onSuccess(n){if(!n.node)throw new Error("Cannot connect to node");const o=u({sourceNode:this,destinationNode:n.node,sourceNodeHandle:"true"},d);d.edges.push(o)},onFail(n){if(!n.node)throw new Error("Cannot connect to node");const o=u({sourceNode:this,destinationNode:n.node,sourceNodeHandle:"false"},d);d.edges.push(o)},serialize(){return a.serialize({id:this.id,type:this.type,action:this.action,position:this.position})}}),z=i=>({id:i.id??p.generateId("step"),label:i.label,fields:i.fields??[],addField(d){var n,o;const l="serialize"in d?d:N(d);return(n=this.fields)!=null&&n.includes(l)||(o=this.fields)==null||o.push(l),l}}),b=(i,d)=>{const l={id:i.id??p.generateId("step"),label:i.label,experience:d,fields:i.fields??[],node:null,nextStep(n){return this.experience.addStep(n,this)},nextConditional(n){return this.experience.addConditional(n,this)},addNextExperience(n){return this.experience.addExperience(n,this)},addField(n){return this.experience.addField(n,this)},serialize(){return a.serialize({id:this.id,label:this.label,fieldIds:this.fields.map(n=>n.id)})}};return h({step:l,type:"step"},d),l},x=()=>[0,0],h=(i,d)=>{const l={id:p.generateId("node"),position:x(),experience:d};if(i.type==="step"){const o={...l,type:"step",connectedStep:i.step,serialize(){return a.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,position:this.position,label:this.connectedStep.label})}};return o.connectedStep.node=o,o}if(i.type==="conditional"){const o={...l,type:"conditional",connectedConditional:i.conditional,serialize(){return a.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id,position:this.position})}};return o.connectedConditional.node=o,o}return i.type==="experience"?{...l,type:"experience",connectedExperience:i.experience,serialize(){return a.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id,position:this.position})}}:{...l,type:"origin",serialize(){return a.serialize({id:this.id,type:this.type,position:this.position})}}},u=(i,d)=>({id:p.generateId("edge"),sourceNode:i.sourceNode,sourceNodeHandle:i.sourceNodeHandle,destinationNode:i.destinationNode,experience:d,serialize(){return a.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),g=(i,d)=>{const l={id:p.generateId("conditional"),condition:i.condition,node:null,experience:d,addTrue(n){if(!this.node||!n.node)throw new Error("todo no node");const o=u({sourceNode:this.node,destinationNode:n.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(o)},addFalse(n){if(!this.node||!n.node)throw new Error("todo no node");const o=u({sourceNode:this.node,destinationNode:n.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(o)},serialize(){return a.serialize({id:this.id,condition:this.condition})}};return h({conditional:l,type:"conditional"},d),l},N=i=>{var l;return{id:i.id,name:i.name,type:i.type,label:i.label,placeholder:i.placeholder,description:i.description,helpText:i.helpText,defaultValue:i.defaultValue??null,multiple:i.multiple,validation:i.validation??{},condition:i.condition,required:i.required,options:((l=i.options)==null?void 0:l.map(n=>({...n})))??null,policies:i.policies,serialize(){const n={id:this.id,name:this.name,label:this.label,placeholder:this.placeholder,required:this.required,description:this.description,helpText:this.helpText,validation:this.validation,condition:this.condition,policies:this.policies},o=typeof this.defaultValue=="string"?this.defaultValue:void 0,f=typeof this.defaultValue=="number"?this.defaultValue:void 0,s=typeof this.defaultValue=="boolean"?this.defaultValue:void 0;switch(this.type){case"text":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="string"&&e.push(t);e.length===0&&(e=void 0)}return a.serialize({...n,type:"text",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:`${t.value}`,condition:t.condition})):null})}return a.serialize({...n,type:"text",multiple:!1,defaultValue:o,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:`${e.value}`,condition:e.condition})):null});case"number":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="number"&&e.push(t);e.length===0&&(e=void 0)}return a.serialize({...n,type:"number",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:Number(t.value),condition:t.condition})):null})}return a.serialize({...n,type:"number",multiple:!1,defaultValue:f,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:Number(e.value),condition:e.condition})):null});case"boolean":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="boolean"&&e.push(t);e.length===0&&(e=void 0)}return a.serialize({...n,type:"boolean",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:!!t.value,condition:t.condition})):null})}return a.serialize({...n,type:"boolean",multiple:!1,defaultValue:s,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:!!e.value,condition:e.condition})):null});default:throw new Error("Unsupported field type")}}}},E=i=>{const d=[],l=[],n=[],o=[],f=[];return{id:i.id,component:i.component,name:i.name,initializeOpen:i.initializeOpen,decide:i.decide,targets:i.targets,steps:d,nodes:l,edges:n,fields:f,conditionals:o,addStep(s,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const r="serialize"in s?s:b(s,this);if(t){if(!r.node)throw new Error("todo no node");const c=u({sourceNode:t,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(c)}return r.fields.length>0&&r.fields.forEach(c=>{this.fields.includes(c)||this.fields.push(c)}),this.steps.includes(r)||(this.steps.push(r),r.node&&this.nodes.push(r.node)),r},addAction(s,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const r="serialize"in s?s:m(s,this);if(t){const c=u({sourceNode:t,destinationNode:r,sourceNodeHandle:null},this);this.edges.push(c)}return this.nodes.push(r),r},addConditional(s,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const r="serialize"in s?s:g(s,this);if(t){if(!r.node)throw new Error("todo no node");const c=u({sourceNode:t,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(c)}return this.conditionals.includes(r)||(this.conditionals.push(r),r.node&&this.nodes.push(r.node)),r},addExperience(s,e){let t=e==null?void 0:e.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const r=h({type:"experience",experience:s},this);if(this.nodes.push(r),t){const c=u({sourceNode:t,destinationNode:r,sourceNodeHandle:null},this);this.edges.push(c)}return s},addField(s,e){const t="serialize"in s?s:N(s);return e&&e.fields.push(t),this.fields.includes(t)||this.fields.push(t),t},serialize(){return a.serialize({id:this.id,component:this.component,name:this.name,initializeOpen:this.initializeOpen,decide:this.decide,targets:this.targets,steps:this.steps.map(s=>a.deserialize(s.serialize())),nodes:this.nodes.map(s=>a.deserialize(s.serialize())),edges:this.edges.map(s=>a.deserialize(s.serialize())),conditionals:this.conditionals.map(s=>a.deserialize(s.serialize())),fields:this.fields.map(s=>a.deserialize(s.serialize()))})}}};exports.createConditional=g;exports.createEdge=u;exports.createExperience=E;exports.createExperiencePlugin=y;exports.createField=N;exports.createNode=h;exports.createStep=z;exports.serialization=a;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),n=require("../../../storage-DuRlyFaY.cjs"),g=require("../../../logger-BsmHUUw1.cjs"),S=({storage:i="local"}={})=>({name:"experience-browser-storage-plugin",setup:s=>{const c=i==="local"?n.localStore:n.sessionStore,a=r.createEffect(async e=>{if(!e){g.logger("warn","No experience instance provided to loadExperienceVisiblityFx.");return}const t=n.createStorageKey("open-close","experience",e),o=c.get(t).boolean();e.setOpen(o??e.isOpenStore.getState())});r.sample({source:s.eventBus,filter:e=>e.type==="experience_initialized"&&"experienceInstance"in e,fn:e=>e.experienceInstance,target:a});const l=r.createEffect(async e=>{const t=n.createStorageKey("open-close","experience",e),o=e.isOpenStore.getState();c.set(t,o)}),p=e=>r.sample({source:e.isOpenStore,fn:()=>e,target:l});s.experienceInstances.listStore.watch(e=>{e.forEach(t=>p(t))})}});exports.experienceBrowserStoragePlugin=S;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("effector"),o=require("../../../storage-DuRlyFaY.cjs"),i=o.createStorageKey("history","global"),l=({storage:a="local"}={})=>({name:"history-browser-storage-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;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),a=require("../../../storage-DuRlyFaY.cjs"),p=a.createStorageKey("responses","global"),b=({storage:u="local"}={})=>({name:"responses-browser-storage-plugin",setup:s=>{const c=u==="local"?a.localStore:a.sessionStore,g=r.createEffect(async()=>{const e=c.get(p).json();if(!e)return null;Object.entries(e).forEach(([t,o])=>{s.responses.register(t,o)})}),f=r.attach({source:{responses:s.responses.getAllStore,fields:s.fields.listStore},effect:({responses:e,fields:t})=>{const o={};Object.entries(e).forEach(([l,S])=>{var i;const n=t.find(d=>d.id===l);!((i=n==null?void 0:n.policies)!=null&&i.doNotStoreValue)&&(o[l]=S)}),c.set(p,o)}});r.sample({source:s.eventBus,filter:e=>e.type==="initialized",target:g}),r.sample({source:s.responses.getAllStore,target:f})}});exports.responsesBrowserStoragePlugin=b;
@@ -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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("effector"),w="picked";async function p(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 d="responses",f={storeName:d,keyPath:"fieldId"},E=()=>({name:"responses-indexdb-plugin",setup:r=>{const o=l.createEffect(async()=>{const t=await p(f),e=(await g(t,d)).reduce((c,{fieldId:u,value:m})=>(c[u]=m,c),{});await r.responses.commit(e)}),a=l.createEffect(async t=>{t.forEach(s=>{p(f).then(e=>{x(e,d,s)}).catch(e=>{console.error("Failed to store response in IndexedDB:",e)})})}),n=l.createEffect(async()=>{const t=await p(f);await b(t,d)}),i=l.createEffect(async t=>{const s=await p(f);await y(s,d,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=>{var u;return!((u=c.policies)!=null&&u.doNotStoreValue)});return t.filter(c=>e.some(u=>u.id===c.fieldId))},target:a}),l.sample({clock:r.responses.clearAll,target:n}),l.sample({clock:r.responses.clear,target:i})}});exports.responsesIndexedDBPlugin=E;
@@ -1 +1 @@
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
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../supports-YvpQZxbh.cjs"),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(?:\/|$)/},p=/^\/collections\/(?<collectionHandle>[^/]+)(?:\/|$)/,a=(e,o)=>o?!!e.exec(o.pathname):!1,i=(e,o)=>{if(o){const c=e.exec(o.pathname);if(c)return c[1]}},s={"is-page":({location:e})=>a(t.page,e),"get-page-handle":({location:e})=>i(t.page,e),"is-product-page":({location:e})=>a(t.productPage,e),"get-product-handle":({location:e})=>i(t.productPage,e),"is-collection-page":({location:e})=>a(t.collection,e),"get-collection-handle":({location:e})=>i(p,e),"is-blog-page":({location:e})=>a(t.blog,e),"get-blog-handle":({location:e})=>i(t.blog,e),"is-article-page":({location:e})=>a(t.article,e),"get-article-handle":({location:e})=>i(t.article,e),"is-app-proxy-page":({location:e})=>a(t.appProxy,e),"get-app-proxy-handle":({location:e})=>i(t.appProxy,e),"is-account-page":({location:e})=>a(t.accountWildcard,e),"is-login-page":({location:e})=>a(t.accountLogin,e),"is-register-page":({location:e})=>a(t.accountRegister,e),"is-cart-page":({location:e})=>a(t.cart,e),"is-checkout-page":({location:e})=>a(t.checkout,e),"is-homepage":({location:e})=>a(t.homepage,e)};function r(e){var o,c;return typeof((c=(o=e.Shopify)==null?void 0:o.analytics)==null?void 0:c.publish)=="function"}const l=()=>({name:"shopify",setup:e=>{Object.entries(s).forEach(([o,c])=>{e.registerPredicate(`shopify-${o}`,c)}),n.supportsWindow()&&e.eventBus.watch(o=>{r(window)&&o.type==="session"&&window.Shopify.analytics.publish("picked:session",{id:o.id})})}});exports.shopifyPlugin=l;
@@ -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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../supports-YvpQZxbh.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;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../supports-YvpQZxbh.cjs"),i=()=>({name:"web-components",setup:e=>{if(!o.supportsWindow()||!o.supportsWebComponents())return;const t="picked-root";if(window.customElements.get(t))return;class s extends HTMLElement{connectedCallback(){const n=this.getAttribute("experience-id");e.isReady&&n&&e.launchExperienceById(n)}}window.customElements.define(t,s)}});exports.webComponentsPlugin=i;
@@ -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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../supports-YvpQZxbh.cjs"),i=()=>({name:"window",setup:e=>{t.supportsWindow()&&(window.Picked=e)}});exports.windowObjectPlugin=i;
@@ -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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-CF6m7G83.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;