@picked/client 0.0.1-dev.1777869768355 → 0.0.1-dev.1778120127377
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/dist/{api-DT7ImnBi.cjs → api-BM3zWj3k.cjs} +1 -1
- package/dist/{api-Dx9PpWfN.js → api-zfqEYPyX.js} +1 -1
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/single-page-app/index.js +1 -1
- package/dist/cjs/plugins/web-components/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/actions.mdx +0 -1
- package/dist/docs/index.md +0 -2
- package/dist/docs/pickedql/dimensions.md +2 -0
- package/dist/docs/pickedql/virtual-functions.md +27 -0
- package/dist/docs/sdk/actions.md +0 -1
- package/dist/docs/sdk/features.md +0 -1
- package/dist/docs/sdk/index.md +0 -1
- package/dist/docs/sdk/plugins/create-experience.md +0 -1
- package/dist/docs/sdk/plugins/dynamic-experiences.md +0 -1
- package/dist/docs/sdk/plugins/window-object.md +0 -1
- package/dist/docs/sdk/predicates.md +0 -1
- package/dist/esm/form/index.js +1 -1
- package/dist/esm/index.js +970 -539
- package/dist/esm/plugins/dynamic-experiences/index.js +51 -49
- package/dist/esm/plugins/experience-browser-storage/index.js +8 -5
- package/dist/esm/plugins/history-browser-storage/index.js +3 -3
- package/dist/esm/plugins/single-page-app/index.js +1 -1
- package/dist/esm/plugins/web-components/index.js +1 -1
- package/dist/esm/server/index.js +23 -13
- package/dist/{experience-instance-CWYRLfFM.js → experience-instance-BrLWgVAN.js} +135 -127
- package/dist/experience-instance-Ct3ogC7n.cjs +1 -0
- package/dist/rules-logic-D_CVBuv7.js +13 -0
- package/dist/rules-logic-H6P8xwHF.cjs +1 -0
- package/dist/types/client.d.ts +2 -2
- package/dist/types/entities/action/action.d.ts +6 -3
- package/dist/types/entities/action/action.d.ts.map +1 -1
- package/dist/types/entities/component/component.d.ts +39 -2
- package/dist/types/entities/component/component.d.ts.map +1 -1
- package/dist/types/entities/experience/experience.d.ts +49 -113
- package/dist/types/entities/experience/experience.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +17 -2
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/entities/feature/feature.d.ts +26 -2
- package/dist/types/entities/feature/feature.d.ts.map +1 -1
- package/dist/types/entities/field/field.d.ts.map +1 -1
- package/dist/types/entities/framework/framework.d.ts +24 -3
- package/dist/types/entities/framework/framework.d.ts.map +1 -1
- package/dist/types/entities/history/history.d.ts +3 -21
- package/dist/types/entities/history/history.d.ts.map +1 -1
- package/dist/types/entities/plugin/plugin.d.ts +32 -1
- package/dist/types/entities/plugin/plugin.d.ts.map +1 -1
- package/dist/types/entities/predicate/predicate.d.ts +24 -3
- package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
- package/dist/types/entities/session/session.d.ts +45 -0
- package/dist/types/entities/session/session.d.ts.map +1 -0
- package/dist/types/exports.d.ts +9 -3
- package/dist/types/exports.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lifecycle/lifecycle.d.ts +47 -0
- package/dist/types/lifecycle/lifecycle.d.ts.map +1 -0
- package/dist/types/lifecycle/rules-logic.d.ts +24 -0
- package/dist/types/lifecycle/rules-logic.d.ts.map +1 -0
- package/dist/types/lifecycle/state-snapshot.d.ts +37 -0
- package/dist/types/lifecycle/state-snapshot.d.ts.map +1 -0
- package/dist/types/logic-engine.d.ts +1 -1
- package/dist/types/logic-engine.d.ts.map +1 -1
- package/dist/types/picked.d.ts +104 -196
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/plugins/history-browser-storage/plugin.d.ts +0 -14
- package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/plugins/web-components/plugin.d.ts.map +1 -1
- package/dist/types/server/index.d.ts +7 -0
- package/dist/types/server/index.d.ts.map +1 -1
- package/dist/types/utils/events.d.ts +1 -1
- package/dist/types/utils/events.d.ts.map +1 -1
- package/dist/types/utils/picked-config.d.ts +12 -4
- package/dist/types/utils/picked-config.d.ts.map +1 -1
- package/dist/types/utils/rules-logic.d.ts +4 -9
- package/dist/types/utils/rules-logic.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/experience-instance-BDTNGT8a.cjs +0 -1
- package/dist/rules-logic-BTIxfrJJ.js +0 -240
- package/dist/rules-logic-DNLOv90w.cjs +0 -1
- package/dist/types/utils/state-snaphot.d.ts +0 -26
- package/dist/types/utils/state-snaphot.d.ts.map +0 -1
- package/dist/types/utils/user-session.d.ts +0 -12
- package/dist/types/utils/user-session.d.ts.map +0 -1
- /package/dist/{object-C82v79xc.js → object-DvUDOytC.js} +0 -0
- /package/dist/{object-CUJOjanb.cjs → object-ThO1DEyl.cjs} +0 -0
package/README.md
CHANGED
|
@@ -12,7 +12,6 @@ import { createClient, render } from '@picked/client'
|
|
|
12
12
|
|
|
13
13
|
// Initialize the client
|
|
14
14
|
createClient({
|
|
15
|
-
organizationId: 'your-organization-id',
|
|
16
15
|
projectId: 'your-project-id',
|
|
17
16
|
})
|
|
18
17
|
|
|
@@ -32,7 +31,6 @@ Predicates are functions that determine when experiences should be rendered. The
|
|
|
32
31
|
|
|
33
32
|
```typescript
|
|
34
33
|
createClient({
|
|
35
|
-
organizationId: 'your-organization-id',
|
|
36
34
|
projectId: 'your-project-id',
|
|
37
35
|
predicates: {
|
|
38
36
|
isProductPage({ location }) {
|
|
@@ -55,7 +53,6 @@ Features are functions the determine whether an experience should be shown based
|
|
|
55
53
|
import { createClient } from '@picked/client'
|
|
56
54
|
|
|
57
55
|
const client = createClient({
|
|
58
|
-
organizationId: 'your-organization-id',
|
|
59
56
|
projectId: 'your-project-id',
|
|
60
57
|
features: {
|
|
61
58
|
'is-winter-sale': () => ({
|
|
@@ -87,7 +84,6 @@ import { singlePageAppPlugin } from '@picked/client/plugins/single-page-app'
|
|
|
87
84
|
import { createClient } from '@picked/client'
|
|
88
85
|
|
|
89
86
|
createClient({
|
|
90
|
-
organizationId: 'your-organization-id',
|
|
91
87
|
projectId: 'your-project-id',
|
|
92
88
|
plugins: [
|
|
93
89
|
singlePageAppPlugin({
|
|
@@ -108,7 +104,6 @@ import { createClient } from '@picked/client'
|
|
|
108
104
|
import { sveltePlugin } from '@picked/svelte'
|
|
109
105
|
|
|
110
106
|
createClient({
|
|
111
|
-
organizationId: 'your-organization-id',
|
|
112
107
|
projectId: 'your-project-id',
|
|
113
108
|
plugins: [
|
|
114
109
|
sveltePlugin({
|
|
@@ -128,7 +123,6 @@ You can register custom components:
|
|
|
128
123
|
import { createClient, registerComponent } from '@picked/client'
|
|
129
124
|
|
|
130
125
|
createClient({
|
|
131
|
-
organizationId: 'your-organization-id',
|
|
132
126
|
projectId: 'your-project-id',
|
|
133
127
|
})
|
|
134
128
|
|
|
@@ -144,7 +138,6 @@ For testing unpublished experiences, use the `previewToken`:
|
|
|
144
138
|
|
|
145
139
|
```typescript
|
|
146
140
|
createClient({
|
|
147
|
-
organizationId: 'your-organization-id',
|
|
148
141
|
projectId: 'your-project-id',
|
|
149
142
|
previewToken: 'your-preview-token',
|
|
150
143
|
})
|
|
@@ -160,7 +153,6 @@ import { sveltePlugin } from '@picked/svelte'
|
|
|
160
153
|
import Experience from './components/Experience.svelte'
|
|
161
154
|
|
|
162
155
|
createClient({
|
|
163
|
-
organizationId: 'your-organization-id',
|
|
164
156
|
projectId: 'your-project-id',
|
|
165
157
|
plugins: [
|
|
166
158
|
sveltePlugin({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.
|
|
1
|
+
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.1778120127377`,i=`v1`;function a(e,t){return new URL(`/api/${i}/${t}`,e).toString()}function o(e){return{...n(`sdk`,r()),...e}}async function s(e,t,n){let r=a(e,t);return fetch(r,{headers:o(n)})}async function c(e,t,n,r){let i=a(e,t);return fetch(i,{method:`POST`,headers:{"Content-Type":`application/json`,...o(r)},body:JSON.stringify(n)})}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
package/dist/cjs/form/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../rules-logic-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../rules-logic-H6P8xwHF.cjs`);let t=require(`effector`);function n(e,t,n){let r=e[t];if(r===void 0){e[t]=n;return}if(Array.isArray(r)&&Array.isArray(n)&&n.length>0){typeof r[0]==`string`?e[t]=[...r,...n].map(String):typeof r[0]==`number`?e[t]=[...r,...n].map(Number):typeof r[0]==`boolean`?e[t]=[...r,...n].map(e=>!!e):e[t]=n;return}e[t]=n}function r(e,t){let r=Array.from(t.entries()),i={};return e.forEach(e=>{let t=r.filter(([t])=>t===e.key);t.length===0&&(t=[[e.key,``]]),t.forEach(([,t])=>{if(t===``){n(i,e.key,null);return}switch(e.type){case`text`:case`object`:n(i,e.key,e.multiple?[String(t)]:String(t));break;case`number`:n(i,e.key,e.multiple?[Number(t)]:Number(t));break;case`boolean`:n(i,e.key,e.multiple?[t===`true`]:t===`true`);break}})}),i}function i(e){return Array.isArray(e.options)&&e.options.some(e=>`condition`in e)}function a(e){return e.some(e=>e.condition||i(e))}function o(e){return e.condition??null}async function s(t,n,r){return n.length===0||!a(n)?n:(await Promise.all(n.map(async n=>{let a=o(n);if(!(!a||await e.t(t,a,r)))return null;if(!Array.isArray(n.options)||!i(n))return n;let s=(await Promise.all(n.options.map(async n=>n.condition?await e.t(t,n.condition,r)?n:null:n))).filter(e=>e!==null);return s.length===n.options.length?n:s.length===0?null:{...n,options:s}}))).filter(e=>e!==null)}function c(e,n,r){let i=(0,t.createStore)([]),a=(0,t.attach)({source:{allFields:e.fields.listStore,fieldKeys:n,staged:r,committed:e.responses.getAllStore},effect:(0,t.createEffect)(async({allFields:t,fieldKeys:n,staged:r,committed:i})=>{let a=new Map(t.map(e=>[e.key,e]));return await s(e,n.flatMap(e=>{let t=a.get(e);return t?[t]:[]}),{responses:{...i,...r}})})});return(0,t.sample)({clock:a.doneData,target:i}),a(),(0,t.sample)({clock:[e.responses.listStore,n,e.fields.listStore,r],target:a}),{fieldsStore:i}}function l(e){return e===null||e===``||Array.isArray(e)&&e.length===0}function u(n,r,i){let a=(0,t.createEvent)(),o=(0,t.createEvent)(),s=(0,t.createEvent)(),c=(0,t.createStore)({});(0,t.sample)({clock:s,source:c,fn:(e,{fieldKey:t})=>({...e,[t]:!0}),target:c});let u=(0,t.createStore)({}),d=u.map(e=>Object.values(e).filter(e=>e!==void 0)),f=(0,t.attach)({source:{fields:r,staged:i,committed:n.responses.getAllStore},effect:async({fields:t,staged:r,committed:i},{fieldKey:a,value:o,checkRequired:s})=>{let c=t.find(e=>e.key===a);if(!c)return{fieldKey:a,error:null};if(c.validation&&Object.keys(c.validation).length>0){let t={...i,...r},s=await e.t(n,c.validation,{responses:t,$input:o});if(typeof s==`string`)return{fieldKey:a,error:{fieldKey:c.key,userMessage:s,systemMessage:s,value:o}};if(s===!1)return{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is invalid`,systemMessage:`Field validation rule returned false.`,value:o}}}return s&&c.required&&l(o)?{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is required`,systemMessage:`Field is required.`,value:o}}:{fieldKey:a,error:null}}});return(0,t.sample)({clock:a,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:o,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:s,fn:({fieldKey:e,value:t})=>({fieldKey:e,value:t,checkRequired:!0}),target:f}),i.on(a,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(o,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(s,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),u.on(f.doneData,(e,{fieldKey:t,error:n})=>{if(n===null){let n={...e};return delete n[t],n}return{...e,[t]:n}}),{fieldInputEvent:a,fieldChangeEvent:o,fieldBlurEvent:s,touchedStore:c,fieldErrorsStore:u,formErrorsStore:d,stagedValuesStore:i}}function d(e){let n=[];return{executeFx:(0,t.createEffect)(async(...t)=>await e(n,...t)),register:e=>(n.push(e),()=>{n=n.filter(t=>t!==e)})}}function f({client:e,experienceInstance:n,formId:i,title:a,stepStore:o,fieldsStore:s,goToNextStep:c}){let l=(0,t.createEvent)(),u=(0,t.createEvent)(),f=(0,t.createEvent)(),p=(0,t.createEvent)(),m=(0,t.createEvent)(),h=(0,t.createStore)(!1),g=(0,t.createStore)(!1);g.on(p,()=>!0).on(l,()=>!1);let _=l.map(()=>void 0),v=d(async(e,t)=>{await Promise.all(e.map(e=>Promise.resolve(e(t))))}),y=d(async(e,t)=>{await Promise.all(e.map(e=>Promise.resolve(e(t))))}),b=d(async(e,t)=>{let n=t;for(let t of e){let e=await Promise.resolve(t(n));e!==void 0&&(n=e)}return n}),x=(0,t.createEffect)(async t=>({data:t,errors:(await e.responses.commit(t)).errors})),S=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,data:e.data}),effect:(0,t.createEffect)(async({step:t,title:r,data:a})=>(e.eventBus({type:`form_submit_success`,form:{id:i,title:r},experience:n,step:t??void 0}),a))}),C=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,errors:e.errors}),effect:(0,t.createEffect)(async({step:t,title:r,errors:a})=>(e.eventBus({type:`form_submit_error`,form:{id:i,title:r},exception:{reason:a},experience:n,step:t??void 0}),a.forEach(r=>{e.eventBus({type:`field_validation_error`,exception:{reason:[r]},experience:n,step:t??void 0})}),a))});return(0,t.sample)({clock:l,fn:()=>!0,target:h}),(0,t.sample)({clock:l,source:{step:o,title:a},fn:({step:e,title:t})=>({formId:i,title:t,step:e}),target:(0,t.createEffect)(({formId:t,title:r,step:i})=>{e.eventBus({type:`form_submit`,form:{id:t,title:r},experience:n,step:i??void 0})})}),(0,t.sample)({clock:l,source:{stepFields:s},fn:({stepFields:e},t)=>(t.preventDefault(),r(e,new FormData(t.currentTarget))),target:b.executeFx}),(0,t.sample)({clock:b.executeFx.doneData,target:x}),(0,t.split)({source:x.doneData,match:{hasErrors:({errors:e})=>e.length>0},cases:{hasErrors:C,__:S}}),(0,t.sample)({clock:S.doneData,target:u}),(0,t.sample)({clock:u,fn:e=>({data:e,stopNavigation:p}),target:v.executeFx}),(0,t.sample)({clock:v.executeFx.done,target:m}),(0,t.sample)({clock:m,source:g,filter:e=>!e,target:c}),(0,t.sample)({clock:C.doneData,target:f}),(0,t.sample)({clock:f,target:y.executeFx}),(0,t.sample)({clock:[m,y.executeFx.done,b.executeFx.fail,x.fail,S.fail,C.fail,v.executeFx.fail,y.executeFx.fail],fn:()=>!1,target:h}),{submitEvent:l,isFormSubmitting:h,onBeforeSubmit:b.register,onSuccess:v.register,onError:y.register,submitStarted:_,validationErrorsReceived:f}}function p(e){let t=e.currentTarget;if(t instanceof HTMLInputElement)return t.type===`checkbox`?t.checked:t.value;if(t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement)return t.value}function m(e,t,n){let r=e.currentTarget;if(t.multiple){if(r instanceof HTMLInputElement&&r.type===`checkbox`)return h(e,r,n);if(r instanceof HTMLSelectElement&&r.multiple)return Array.from(r.selectedOptions,e=>e.value)}return p(e)}function h(e,t,n){if(e.type===`input`)return;let r=Array.isArray(n)?n.map(String):[];return e.type===`change`?g(r,String(t.value)):r}function g(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function _(e,t,n){return r=>{let i=m(r,e,t);i!==void 0&&n({fieldKey:e.key,value:i})}}function v(e,n,r,i){let{client:a,experienceInstance:o}=e,{currentStepStore:s,goToNextStep:l}=o,d=(0,t.combine)(s,o,(e,t)=>({stepId:e?.id,experienceId:t.id})),p=(0,t.createStore)({}),{fieldsStore:m}=c(a,i,p);(0,t.sample)({clock:m,source:p,fn:(e,t)=>{let n=!1,r={...e};for(let e of t)e.defaultValue!=null&&!(e.key in r)&&(r[e.key]=e.defaultValue,n=!0);return n?r:e},target:p});let{fieldInputEvent:h,fieldChangeEvent:g,fieldBlurEvent:v,touchedStore:y,fieldErrorsStore:b,formErrorsStore:x}=u(a,m,p),S=(0,t.combine)({fields:m,responses:a.responses.listStore,staged:p,fieldErrors:b,touched:y,experienceAndStepId:d},({fields:e,responses:t,staged:n,fieldErrors:r,touched:i,experienceAndStepId:a})=>e.map(e=>{let o=n[e.key]??t.find(t=>t.fieldKey===e.key)?.value??e.defaultValue,s=_(e,o,h),c=_(e,o,g),l=_(e,o,v),u=r[e.key],d=e.type===`number`?`number`:`text`,f=e.type===`boolean`?`checkbox`:d,{experienceId:p,stepId:m}=a,y=`${p}-${m??`step`}-${e.id}`;return{...e,value:o,error:u,touched:i[e.key]??!1,props:{id:y,name:e.key,key:e.key,value:o,type:f,required:e.required,placeholder:e.placeholder,oninput:s,onchange:c,onblur:l}}})),{submitEvent:C,isFormSubmitting:w,onBeforeSubmit:T,onSuccess:E,onError:D,submitStarted:O,validationErrorsReceived:k}=f({client:a,experienceInstance:o,formId:n,title:r,stepStore:s,fieldsStore:m,goToNextStep:l});return(0,t.sample)({clock:O,fn:()=>({}),target:y}),(0,t.sample)({clock:O,fn:()=>({}),target:b}),(0,t.sample)({clock:k,source:m,fn:(e,t)=>Object.fromEntries(t.map(t=>[e.find(e=>e.key===t.fieldKey)?.key??t.fieldKey,t])),target:b}),{form:{props:{onsubmit:C},errors:x,submitting:w,onBeforeSubmit:T,onSuccess:E,onError:D},fields:S}}exports.buildResponsesFromFormData=r,exports.createFieldEvaluator=c,exports.createFieldValidation=u,exports.createForm=v,exports.createSubmitPipeline=f,exports.getEventValue=p,exports.getStepFields=s;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../rules-logic-DNLOv90w.cjs`),t=require(`../object-CUJOjanb.cjs`),n=require(`../logger-fbvQC40v.cjs`),r=require(`../supports-Dsjg-82e.cjs`),i=require(`../experience-instance-BDTNGT8a.cjs`),a=require(`../storage-B6lQtc4-.cjs`),o=require(`../api-DT7ImnBi.cjs`),s=require(`../id-Bv44ilEo.cjs`);let c=require(`effector`),l=require(`@withease/factories`);var u=(0,c.createDomain)(`experience`),d=(0,l.createFactory)(({client:e,experience:t})=>{let n=u.store(t),r=(0,c.createApi)(n,{merge(e,t){return{...e,...t.experience}}}),a=n.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),o=(0,c.combine)(n,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),s=(0,c.combine)(n,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(i.i).map(e=>t[e.stepId]).filter(e=>e!==void 0),a=e.nodes.filter(i.r).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:a}}),l=t.actions??[];return{id:t.id,key:t.key,name:t.name,configStore:a,treeStore:s,componentStore:o,actions:l,merge:r.merge}});function f(e){return(0,l.invoke)(d,e)}var p=(0,l.createFactory)(({client:e})=>{let t=u.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.id]:t}}});function r(r){let i=t.getState()[r.id];if(i){i.merge({experience:r,strategy:`override`});return}let a=f({client:e,experience:r});n.register(a)}let i=t.map(e=>Object.values(e));function a(e){return t.map(t=>t[e],{skipVoid:!1})}function o(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let s=(0,c.attach)({source:t,effect:async(t,n)=>{let r=`key`in n?Object.values(t).find(e=>e.key===n.key):t[n.id];if(!r){`key`in n?`${n.key}`:`${n.id}`;return}let{options:i}=n;if(i?.bypassCondition){h(e,r,i);return}await _(e,r)&&h(e,r,i)}});return{register:r,get:a,getById:a,getByKey:o,launch:s,open:(0,c.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>r&&e.experienceId===r.id);if(i.length>0)for(let e of i)e.open();else s(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:i}});function m(e){return(0,l.invoke)(p,e)}var h=(e,t,n)=>{let{targetSelectors:r}=t.configStore.getState(),a=i.s(r,t.id);a.forEach(({elements:e})=>e.forEach(e=>i.l(e,t.id))),i.a(a,t.id,t.key).forEach(r=>{n?e.experienceInstances.spawn(t,r,n):e.experienceInstances.spawn(t,r)})},g=async e=>{await Promise.all(e.experiences.listStore.getState().map(async t=>{await _(e,t)&&h(e,t)}))},_=async(t,n)=>{if(!t.preconditionPassed||!t.session?.isUser)return!1;let{decisionLogic:r,targetSelectors:a}=n.configStore.getState();return i.s(a,n.id).length<1||a.length===0?!1:r===void 0?!0:e.n(r)?await e.t(t,r)===!0:!0},v=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},ee=(0,c.createDomain)(`component`),y=(0,l.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function b(e){return(0,l.invoke)(y,e)}var x=(0,l.createFactory)(({client:e})=>{let t=ee.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:t}}});function r(r,i){t.getState()[r]&&`${r}`;let a=b({client:e,name:r,component:i});n.register(a)}let i=t.map(e=>Object.values(e));function a(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:r,getByName:a,listStore:i}});function S(e){return(0,l.invoke)(x,e)}var C=(e,t,n)=>{n.register(e,t)},te=(0,c.createDomain)(`framework`),ne=(0,l.createFactory)(({client:e})=>{let t=te.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}});function r(e,r){t.getState()[e]&&`${e}`,n.register({name:e,framework:r})}let i=t.map(e=>Object.values(e));function a(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:r,getByName:a,listStore:i}});function re(e){return(0,l.invoke)(ne,e)}var ie=(e,t)=>{t.register(e.name,e)},ae=6e3,oe=a.t(`last_ping`,`global`),se=async e=>{try{let t=Date.now(),n=a.n.get(oe),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ae)return!0;let i={projectId:e.projectId,path:window.location.pathname},s={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(s[`x-vercel-protection-bypass`]=c);let l=(await o.n(e.apiUrl,`ping`,i,s)).ok;return l&&n.set(t),l}catch{return!1}};function w(e){let t=typeof window<`u`,n={client:e,responses:e.responses.listStore.getState(),fields:e.fields.listStore.getState(),location:t?window.location:void 0,document:t?window.document:void 0,sessionStorage:t?window.sessionStorage:void 0,localStorage:t?window.localStorage:void 0};return Object.freeze(n)}var T=(0,c.createDomain)(`predicate`),E=(0,l.createFactory)(({client:e})=>{let t=T.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}});function r(e,r){t.getState()[e]&&`${e}`,n.register(Object.freeze({name:e,predicate:r}))}let i=t.map(e=>Object.values(e));function a(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function o(t){let n=(0,c.createStore)(()=>void 0,{skipVoid:!1}),r=(0,c.createEffect)(async()=>{let n=a(t).getState();if(!n)return;let r=w(e);return(...e)=>n({...r,args:e})});return(0,c.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,c.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:r,getByName:a,listStore:i,getEvokablePredicate:o}});function D(e){return(0,l.invoke)(E,e)}var O=(e,t,n)=>{n.register(e,t)},k=(0,c.createDomain)(`feature`),A=(0,l.createFactory)(({client:e})=>{let t=k.store({}),n=k.store([]),r=(0,c.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}});function i(e,n){t.getState()[e]&&`${e}`;let i={id:e,feature:{...n,id:e}};r.register(Object.freeze({id:e,feature:i}))}let o=(0,c.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=a.t(`feature:${e}:${t}`,`global`),i=(n===`session`?a.r:a.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),s=(0,c.createEffect)(e=>{if(!e)return null;let t=a.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?a.r:a.n).set(t,e.bucket)}),l=new Map,u=(0,c.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:n},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=l.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();l.set(`${n}:${i}`,c);let u=await c;return{id:o.id,bucket:u,key:i,storage:o.feature.storage}}});(0,c.sample)({clock:r.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:o}),(0,c.sample)({source:t,clock:u.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:s});let d=(0,c.combine)({allFeaturesStore:t,resolvedFeaturesStore:n}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await u(e.feature),isResolved:!1}}));(0,c.sample)({clock:u.doneData,source:{resolvedFeatures:n},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,c.sample)({clock:[o.doneData,u.doneData],source:n,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:n});function f(e){return d.map(t=>t.find(t=>t.id===e))}function p(e){return t.map(t=>t[e],{skipVoid:!1})}function m(e){let t=(0,c.createStore)(async()=>void 0,{skipVoid:!1}),r=(0,c.createEffect)(async()=>{let t=f(e).getState();if(t)return async()=>(await t.getBucket()).bucket});return(0,c.sample)({source:n,filter:t=>t.some(t=>t.id===e),target:r}),(0,c.sample)({clock:r.doneData,filter:e=>e!==void 0,target:t}),r(),t}return{register:i,getById:f,getByName:p,listStore:d,getEvokableFeature:m}});function j(e){return(0,l.invoke)(A,e)}var M=(e,t,n)=>{n.register(e,t)},N=(0,c.createDomain)(`history`);function P(e,t,n){return{id:s.t(`history-entry-${Date.now()}-${Math.random()}}`),node:n,at:Date.now(),instanceId:e,experienceId:t}}function F(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n&&i.i(n.node))return e.slice(0,t+1)}return[]}var I=(0,l.createFactory)(()=>{let e=N.store([]),t=N.event(),n=N.event(),r=N.event(),a=N.event(),o=N.event(),l=N.event();e.on(t,(e,t)=>[...e,P(t.instanceId,t.experienceId,t.node)]),e.on(n,(e,t)=>{let n=-1;for(let r=e.length-1;r>=0;r--)if(e[r]?.instanceId===t.instanceId){n=r;break}let r=P(t.instanceId,t.experienceId,t.node);return n===-1?[...e,r]:e.map((e,t)=>t===n?r:e)}),e.on(r,(e,{instanceId:t})=>{let n=-1,r=-1;for(let a=e.length-1;a>=0;a--){let o=e[a];if(!(!o||o.instanceId!==t||!i.i(o.node)))if(n===-1)n=a;else{r=a;break}}return r===-1?e:e.filter((e,n)=>e.instanceId!==t||n<=r)}),e.on(a,(e,{snapshots:t})=>{let n=[];for(let e of Object.values(t))n.push(...e);return n}),e.on(l,(e,t)=>[...e,...t]);let u=e.map(e=>{let t={};for(let n of e){let e=t[n.experienceId];e?e.push(n):t[n.experienceId]=[n]}return t});return(0,c.sample)({clock:o,source:u,fn:(e,{instanceId:t,experienceId:n})=>F(e[n]??[]).map(e=>({...e,id:s.t(`history-entry-${Date.now()}-${Math.random()}}`),instanceId:t,at:Date.now()})),target:l}),{push:t,replace:n,back:r,restoreSnapshots:a,seedInstanceFromSnapshot:o,entriesStore:e.map(e=>e),snapshotStore:u}});function L(){return(0,l.invoke)(I)}var R=0,z=e=>{let t=(0,c.createStore)([]);return(0,c.sample)({clock:e,source:t,fn:(e,t)=>[...e,{id:R++,at:new Date,payload:t}],target:t}),t},B=(0,c.createDomain)(`field`),V=(0,l.createFactory)(()=>{let e=B.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}function r(n,r){let i=e.getState(),a=Object.values(i).find(e=>e.key===n)?.key;a&&t.updateByKey({fieldKey:a,updates:r})}let i=e.map(e=>Object.values(e));function a(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function o(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:r,getById:a,getByKey:o,listStore:i,getByName:s}});function H(){return(0,l.invoke)(V)}var U=(0,c.createDomain)(`step`),W=(0,l.createFactory)(()=>{let e=U.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function G(){return(0,l.invoke)(W)}function K(e,t){t.register(e)}var ce=(0,c.createDomain)(`action`),le=(0,l.createFactory)(({client:e})=>{let t=ce.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}});function r(e,r){t.getState()[e]&&`${e}`,n.register(Object.freeze({key:e,action:r}))}let i=t.map(e=>Object.values(e));function a(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function o(t,n){let r=(0,c.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,o=(0,c.createEffect)(async()=>{let n=a(t).getState();if(!n)return;let r=w(e);return(...e)=>n({...r,args:e},i)});return(0,c.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:o}),(0,c.sample)({clock:o.doneData,filter:e=>e!==void 0,target:r}),o(),r}return{register:r,getByKey:a,listStore:i,getEvokableAction:o}});function ue(e){return(0,l.invoke)(le,e)}var de=(e,t,n)=>{n.register(e,t)};function q(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function J(e){return e===null||e===``||Array.isArray(e)&&!e.length}function fe(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function Y(e){try{return JSON.stringify(e),!0}catch{return!1}}function pe(e,t){return t.find(t=>t.key===e)??null}function me(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function he(e,t){if(e.type!==`object`||J(t))return null;if(e.multiple){if(!Array.isArray(t))return q(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return q(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!Y(n))return q(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?q(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?q(e,t,`This field expects an object value`,`Field expects an object value.`):Y(t)?null:q(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function ge(e,t){if(J(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:q(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!fe(e)||e===null?!1:r.includes(e))?null:q(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function _e(e,n,r,i){if(n.validation&&!t.t(n.validation)&&!J(r)){let t=i?{$input:r,responses:i}:{$input:r},a=await e(n.validation,t);if(typeof a==`string`)return q(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return q(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&J(r)?q(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?q(n,r,`This field expects a single response`,`Field expects a single response.`):null}var ve=(0,c.createDomain)(`response`),ye=(0,l.createFactory)(({client:t})=>{let n=ve.store({}),r=(0,c.createEvent)(),i=(0,c.createEvent)(),a=(0,c.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>e.t(t,n,r),l=(0,c.attach)({source:{allFields:t.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=pe(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=me(o,n),l=await _e(s,o,c,a);if(l){r.push(l);return}let u=he(o,c);if(u){r.push(u);return}let d=ge(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return l(e)}let d=(0,c.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await l(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,c.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(e){return h(t.fields.getById(e))}function _(e){return h(t.fields.getByKey(e))}function v(e){return h(t.fields.getByName(e))}return(0,c.sample)({clock:r,target:a.clearAll}),(0,c.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function be(e){return(0,l.invoke)(ye,e)}var xe=(0,c.createDomain)(`condition`),Se=(0,l.createFactory)(()=>{let e=xe.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Ce(){return(0,l.invoke)(Se)}function we(){if(r.r()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}function Te(){if(!r.d())return{};let e=new URLSearchParams(window.location.search),t={},n=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&n.add(t);for(let r of n){let n=r.replace(`picked-`,``);t[n]=e.getAll(r)}let i=a.t(`s`);if(n.size>0)a.r.set(i,t);else{let e=a.r.get(i);if(e)return e.json()||{}}return t}function Ee(){return r.n()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}var De=a.t(`session`,`global`),Oe=()=>{let e=a.n.get(De),t;e.isSet()&&(t=e.json());let n=t=>e.set({id:t.id,isUser:t.isUser,identifiers:t.identifiers}),r={id:t?.id??Ee(),isUser:t?.isUser??void 0,identifiers:t?.identifiers??void 0,setIsUser(e){this.isUser=e,n(this)},setIdentifier(e,t){this.identifiers={...this.identifiers,[e]:t},n(this)},removeIdentifier(e){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([t])=>t!==e)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,n(this))}};return n(r),r},ke=()=>r.o()?Oe():null;function X(){if(r.d())return globalThis.window.pickedConfig}function Z(){if(!r.d())return;let e=X(),t=e?.organizationId,n=e?.projectId;return t&&n?{organizationId:t,projectId:n}:void 0}function Ae(){if(!r.r())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(!e)return;let t=e.dataset.organizationid||e.getAttribute(`organization-id`),n=e.dataset.projectid||e.getAttribute(`project-id`);return t&&n?{organizationId:t,projectId:n}:void 0}function je(e){let{organizationId:t,projectId:n}=e;if(t&&n)return{organizationId:t,projectId:n};let r=Z();if(r)return r;let i=Ae();if(i)return i;throw Error(`organizationId and projectId are required. You can provide them via one of:
|
|
2
|
-
(1) createClient({
|
|
3
|
-
(2) window.pickedConfig = {
|
|
4
|
-
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../object-ThO1DEyl.cjs`),t=require(`../rules-logic-H6P8xwHF.cjs`),n=require(`../logger-fbvQC40v.cjs`),r=require(`../supports-Dsjg-82e.cjs`),i=require(`../experience-instance-Ct3ogC7n.cjs`),a=require(`../storage-B6lQtc4-.cjs`),o=require(`../api-BM3zWj3k.cjs`),s=require(`../id-Bv44ilEo.cjs`);let c=require(`effector`),l=require(`@withease/factories`);var u=(0,c.createDomain)(`experience`),d=(0,l.createFactory)(({client:e,experience:n})=>{let r=u.store(n),a=(0,c.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),o=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),s=(0,c.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),l=(0,c.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(i.i).map(e=>t[e.stepId]).filter(e=>e!==void 0),a=e.nodes.filter(i.r).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:a}}),d=n.actions??[],f,p=(0,c.attach)({source:o,effect:(t,r)=>{let a=i.s(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.l(e,n.id))),i.a(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(f,t,r):e.experienceInstances.spawn(f,t)})}}),m=(0,c.attach)({source:(0,c.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:o}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.s(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}});return f={id:n.id,key:n.key,name:n.name,configStore:o,treeStore:l,componentStore:s,actions:d,merge:a.merge,initialiseFx:p,shouldInitialiseFx:m},f});function f(e){return(0,l.invoke)(d,e)}var p=(0,l.createFactory)(({client:e})=>{let t=u.store({}),n=(0,c.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,c.createEvent)(),i=(0,c.createEffect)(t=>{n.register(f({client:e,experience:t}))});(0,c.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,c.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let l=(0,c.attach)({source:t,effect:async(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;if(r?.bypassCondition){await n.initialiseFx(r);return}await n.shouldInitialiseFx()&&await n.initialiseFx(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:l,open:(0,c.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>r&&e.experienceId===r.id);if(i.length>0){for(let e of i)e.open();return}await l(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,c.attach)({source:a,effect:async e=>{await Promise.all(e.map(async e=>{await e.shouldInitialiseFx()&&await e.initialiseFx(void 0)}))}})}});function m(e){return(0,l.invoke)(p,e)}var h=async e=>{await e.experiences.initialiseExperiencesFx()};function g(e){return(0,c.createEffect)(async()=>{await e()})}var _=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},v=(0,c.createDomain)(`component`),y=(0,l.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function b(e){return(0,l.invoke)(y,e)}var x=(0,l.createFactory)(({client:e})=>{let t=v.store({}),r=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,c.createEvent)();(0,c.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,c.sample)({clock:i,fn:({name:t,component:n})=>b({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function S(e){return(0,l.invoke)(x,e)}var C=(e,t,n)=>{n.register({name:e,component:t})},w=(0,c.createDomain)(`framework`),T=(0,l.createFactory)(e=>{let t=w.store({}),r=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,c.createEvent)();(0,c.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,c.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function E(e){return(0,l.invoke)(T,e)}var D=(e,t)=>{t.register({name:e.name,framework:e})},O=(0,l.createFactory)(({client:e})=>{let t=typeof window<`u`,n={location:t?window.location:void 0,document:t?window.document:void 0,sessionStorage:t?window.sessionStorage:void 0,localStorage:t?window.localStorage:void 0};return(0,c.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function k(e){return(0,l.invoke)(O,e)}function A(e){return typeof e==`number`&&!isNaN(e)}function j(e){return typeof e==`string`}function M(e){return Array.isArray(e)}function N(e){return e instanceof Promise}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function F(e){if(A(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var ee={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>F(e)>F(t),">=":(e,t)=>F(e)>=F(t),"<":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<i;let a=F(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<=i;let a=F(n);return r<=i&&i<=a},"!!":async e=>await R(e),"!":async e=>!await R(e),"%":(e,t)=>F(e)%F(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(I(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(I).join(``),substr:(e,t,n)=>{let r=I(e),i=F(t);if(n===void 0)return r.substr(i);let a=F(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>F(e)+F(t),0),"*":(...e)=>e.reduce((e,t)=>F(e)*F(t),1),"-":(e,t)=>{let n=F(e);return t===void 0?-n:n-F(t)},"/":(e,t)=>F(e)/F(t),min:(...e)=>Math.min(...e.map(F)),max:(...e)=>Math.max(...e.map(F)),merge:(...e)=>e.reduce((e,t)=>M(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=I(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=M(e[0])?e[0]:e,n=[];for(let e of t){let t=await L({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await L({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=F(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>j(e)&&j(t)&&e.startsWith(t),endsWith:(e,t)=>j(e)&&j(t)&&e.endsWith(t),regexp_matches(e,t){let n=e,r=``;if(M(e)){let[t,i]=e;n=t,r=i}return!j(n)||!j(r)?!1:new RegExp(n,r).test(I(t))},throw(e){throw Error(I(e))}};async function L(e,t){if(!e)return e;if(N(e))return L(await e,t);if(M(e))return Promise.all(e.map(e=>L(e,t)));if(!P(e))return e;let n=z(e),r=n?e[n]??[]:[];switch(M(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await R(await L(r[e],t)))return L(r[e+1],t);return r.length%2==1?L(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await L(n,t),!await R(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await L(n,t),await R(e))return e;return e}case`map`:{let e=await L(r[0],t);return M(e)?await Promise.all(e.map(e=>L(r[1],e))):[]}case`filter`:{let e=await L(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await R(await L(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await L(r[0],t);if(!M(e))return r.length>2?await L(r[2],t):null;let n=r[1],i=r.length>2?await L(r[2],t):null;for(let t of e)i=await L(n,{current:t,accumulator:i});return i}case`all`:{let e=await L(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await R(await L(r[1],t)))return!1;return!0}case`some`:{let e=await L(r[0],t);if(!M(e))return!1;for(let t of e)if(await R(await L(r[1],t)))return!0;return!1}case`none`:{let e=await L(r[0],t);if(!M(e))return!0;for(let t of e)if(await R(await L(r[1],t)))return!1;return!0}case`catch`:try{return await L(r[0],t)}catch(e){return P(e)?await L(e,t):r[1]?await L(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>L(e,t))),a=n?ee[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function R(e){return N(e)?R(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function z(e){return Object.keys(e)[0]}var te=(0,l.createFactory)(({client:e})=>(0,c.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i},{rule:a,context:o})=>{let s=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),c=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),l=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{});return await L(a,{responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:s,actions:c,features:l,...o})}}));function ne(e){return(0,l.invoke)(te,e)}var re=6e3,ie=a.t(`last_ping`,`global`),ae=async e=>{try{let t=Date.now(),n=a.n.get(ie),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<re)return!0;let i={projectId:e.projectId,path:window.location.pathname},s={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(s[`x-vercel-protection-bypass`]=c);let l=(await o.n(e.apiUrl,`ping`,i,s)).ok;return l&&n.set(t),l}catch{return!1}},B=(0,c.createDomain)(`lifecycle`),oe=(0,l.createFactory)(({client:e})=>{let n=B.store(!1),a=(0,c.createStore)(void 0,{skipVoid:!1,domain:B}),o=(0,c.createStore)(void 0,{skipVoid:!1,domain:B}),s=B.store(`idle`),l=B.store([]),u=(0,c.createStore)(void 0,{skipVoid:!1,domain:B}),d=(0,c.createStore)(void 0,{skipVoid:!1,domain:B}),f=(0,c.createEvent)(),p=(0,c.createEvent)(),m=(0,c.createEvent)(),g=(0,c.createEvent)(),_=(0,c.createEvent)(),v=(0,c.createEvent)();l.on(g,(e,t)=>[...e,t]),u.on(_,(e,t)=>t),d.on(v,(e,t)=>t),n.on(p,()=>!0);let y=(0,c.createEffect)(()=>{ae(e)}),b=(0,c.createEffect)(async()=>{await i.o()}),x=(0,c.createEffect)(async()=>{await h(e)}),S=(0,c.attach)({effect:x}),C=(0,c.attach)({source:l,effect:async e=>{for(let t of e)await t()}}),w=(0,c.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,c.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,c.sample)({clock:f,filter:()=>r.r()});(0,c.sample)({clock:E,fn:()=>`starting`,target:s}),(0,c.sample)({clock:E,target:y}),(0,c.sample)({clock:E,target:C}),(0,c.sample)({clock:E,target:b}),(0,c.sample)({clock:C.done,target:w}),(0,c.sample)({clock:w.doneData,target:a}),(0,c.sample)({clock:T.doneData,target:o}),(0,c.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,c.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,c.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,c.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,c.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,c.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,c.createStore)(!1).on(b.done,()=>!0),O=(0,c.createStore)(!1).on(m,()=>!0),k=(0,c.createStore)(!1).on(S.done,()=>!0),A=(0,c.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,c.sample)({clock:m,source:A,filter:e=>e,fn:()=>void 0,target:x}),(0,c.sample)({clock:(0,c.combine)(D,O,A,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:S}),(0,c.sample)({clock:(0,c.combine)(D,O,A,k,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,c.sample)({clock:p,fn:()=>`ready`,target:s}),(0,c.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,c.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,c.sample)({clock:[C.fail,w.fail,T.fail,x.fail,S.fail,b.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:g,setPrecondition:_,setCondition:v}});function se(e){return(0,l.invoke)(oe,e)}var ce=(0,c.createDomain)(`predicate`),le=(0,l.createFactory)(({client:e})=>{let t=ce.store({}),r=(0,c.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,c.createEvent)();(0,c.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,c.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,c.createStore)(()=>void 0,{skipVoid:!1}),r=(0,c.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,c.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,c.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function ue(e){return(0,l.invoke)(le,e)}var V=(e,t,n)=>{n.register({name:e,predicate:t})},H=(0,c.createDomain)(`feature`),U=(0,l.createFactory)(({client:e})=>{let t=H.store({}),r=H.store([]),i=(0,c.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),o=(0,c.createEvent)();(0,c.sample)({clock:o,source:t,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,c.sample)({clock:o,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,c.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=a.t(`feature:${e}:${t}`,`global`),i=(n===`session`?a.r:a.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),l=(0,c.createEffect)(e=>{if(!e)return null;let t=a.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?a.r:a.n).set(t,e.bucket)}),u=new Map,d=(0,c.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:r},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=u.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();u.set(`${n}:${i}`,c);let l=await c;return{id:o.id,bucket:l,key:i,storage:o.feature.storage}}});(0,c.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:s}),(0,c.sample)({source:t,clock:d.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:l});let f=(0,c.combine)({allFeaturesStore:t,resolvedFeaturesStore:r}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,c.sample)({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,c.sample)({clock:[s.doneData,d.doneData],source:r,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}function m(e){return t.map(t=>t[e],{skipVoid:!1})}function h(e){let t=(0,c.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,c.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,c.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,c.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:o,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function de(e){return(0,l.invoke)(U,e)}var fe=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,c.createDomain)(`history`);function G(e,t){return{id:s.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var pe=(0,l.createFactory)(()=>{let e=W.store({entries:[]}),t=W.event(),n=W.event(),r=W.event(),a=W.event();e.on(t,(e,t)=>({entries:[...e.entries,G(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),G(t.experienceId,t.node)]})),e.on(a,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let a=e[r],o=a?.node;if(!(!o||!i.i(o))&&!(t&&a.experienceId!==t))if(n.lastStepIndex===-1)n.lastStepIndex=r;else{n.secondLastStepIndex=r;break}}return n}return e.on(r,(e,t)=>{let{secondLastStepIndex:n}=o(e.entries,t.experienceId),r=n===-1?e.entries:e.entries.slice(0,n+1);return{...e,entries:r}}),{push:t,replace:n,back:r,restore:a,entriesStore:e.map(e=>e.entries)}});function me(){return(0,l.invoke)(pe)}var he=0,ge=e=>{let t=(0,c.createStore)([]);return t.on(e,(e,t)=>[...e,{id:he++,at:new Date,payload:t}]),t},_e=(0,c.createDomain)(`field`),ve=(0,l.createFactory)(()=>{let e=_e.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function l(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:l}});function ye(){return(0,l.invoke)(ve)}var be=(0,c.createDomain)(`step`),xe=(0,l.createFactory)(()=>{let e=be.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Se(){return(0,l.invoke)(xe)}function Ce(e,t){t.register(e)}var we=(0,c.createDomain)(`action`),Te=(0,l.createFactory)(({client:e})=>{let t=we.store({}),r=(0,c.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,c.createEvent)();(0,c.sample)({clock:i,source:t,filter:(e,{key:t})=>e[t]!==void 0,fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,c.sample)({clock:i,fn:({key:e,action:t})=>Object.freeze({key:e,action:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function s(t,n){let r=(0,c.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,c.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,c.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,c.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Ee(e){return(0,l.invoke)(Te,e)}var De=(e,t,n)=>{n.register({key:e,action:t})};function K(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function q(e){return e===null||e===``||Array.isArray(e)&&!e.length}function Oe(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function J(e){try{return JSON.stringify(e),!0}catch{return!1}}function ke(e,t){return t.find(t=>t.key===e)??null}function Ae(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function je(e,t){if(e.type!==`object`||q(t))return null;if(e.multiple){if(!Array.isArray(t))return K(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return K(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!J(n))return K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?K(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?K(e,t,`This field expects an object value`,`Field expects an object value.`):J(t)?null:K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Me(e,t){if(q(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!Oe(e)||e===null?!1:r.includes(e))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Ne(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!q(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return K(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return K(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&q(r)?K(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?K(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Pe=(0,c.createDomain)(`response`),Fe=(0,l.createFactory)(({client:e})=>{let n=Pe.store({}),r=(0,c.createEvent)(),i=(0,c.createEvent)(),a=(0,c.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),l=(0,c.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=ke(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=Ae(o,n),l=await Ne(s,o,c,a);if(l){r.push(l);return}let u=je(o,c);if(u){r.push(u);return}let d=Me(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return l(e)}let d=(0,c.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await l(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,c.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}return(0,c.sample)({clock:r,target:a.clearAll}),(0,c.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Ie(e){return(0,l.invoke)(Fe,e)}var Le=(0,c.createDomain)(`condition`),Re=(0,l.createFactory)(()=>{let e=Le.store({}),t=(0,c.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function ze(){return(0,l.invoke)(Re)}function Be(){if(r.r()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}function Ve(){if(!r.d())return{};let e=new URLSearchParams(window.location.search),t={},n=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&n.add(t);for(let r of n){let n=r.replace(`picked-`,``);t[n]=e.getAll(r)}let i=a.t(`s`);if(n.size>0)a.r.set(i,t);else{let e=a.r.get(i);if(e)return e.json()||{}}return t}var Y=a.t(`session`,`global`);function He(){return r.n()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function Ue(){if(!r.o())return null;let e=a.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var We=(0,l.createFactory)(()=>{let e=Ue(),t={id:e?.id??He()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,c.createStore)(t),i=(0,c.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}});return(0,c.sample)({source:n,target:(0,c.attach)({source:n,effect:e=>{if(r.o())try{a.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Ge(){return(0,l.invoke)(We,void 0)}function X(){if(r.d())return globalThis.window.pickedConfig}function Ke(){if(r.d())return X()?.projectId}function Z(){if(!r.r())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function qe(e){if(e.projectId)return e.projectId;let t=Ke();if(t)return t;let n=Z();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
2
|
+
(1) createClient({ projectId }) options;
|
|
3
|
+
(2) window.pickedConfig = { projectId };
|
|
4
|
+
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function Q(e){return e==null||e===``||Number.isNaN(e)}var Je={default:(e,t)=>Q(e)?String(t??``):String(e),append:(e,t)=>t&&!Q(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!Q(e)?`${t} ${e}`:e,upper:e=>typeof e==`string`?e.toUpperCase():e,lower:e=>typeof e==`string`?e.toLowerCase():e,capitalize:e=>typeof e==`string`?e.charAt(0).toUpperCase()+e.slice(1):e,list:e=>{if(!e||typeof e!=`object`)return e;let t=new Intl.ListFormat(`en`,{style:`long`,type:`conjunction`});if(Array.isArray(e))return t.format(e.map(String));if(e instanceof Map){let n=Array.from(e.entries()).map(([e,t])=>`${e}: ${t}`);return t.format(n)}return e instanceof Set?t.format(Array.from(e).map(String)):e}};function Ye(e){return typeof e==`object`&&!!e}function Xe(e,t){let n=t;for(let t of e.split(`.`))if(Ye(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function Ze(e,t){let n=e.split(`|`).map(e=>e.trim()),r=Xe(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=Je[i];o&&(r=o(r,a))}return Q(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function Qe(e,t){let n=``,r=0;for(;r<e.length;)if(e[r]===`{`&&e[r+1]===`{`){r+=2;let i=``;for(;r<e.length;){if(e[r]===`}`&&e[r+1]===`}`){r+=2;break}i+=e[r++]}n+=Ze(i.trim(),t)}else n+=e[r++];return n}var $=class{static logger=n.t;options;plugins={};eventBus=(0,c.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=Ge();searchParams=Ve();history=me();components=S({client:this});experienceInstances=i.n({client:this});experiences=m({client:this});frameworks=E({client:this});predicates=ue({client:this});features=de({client:this});conditions=ze();fields=ye();responses=Ie({client:this});steps=Se();actions=Ee({client:this});stateSnapshotStore=k({client:this});evaluateRuleLogicFx=ne({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=se({client:this});renderStringFx=(0,c.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return Qe(t,{...n,responses:r})}});constructor(e){this.events=ge(this.eventBus),this.projectId=qe(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Be(),this.dashboardUrl=e.dashboardUrl??`https://dashboard.picked.app`,this.documentationSiteUrl=e.documentationSiteUrl??`https://docs.picked.app`,this.start=this.lifecycle.start,this.readyStore=this.lifecycle.readyStore,this.preconditionPassedStore=this.lifecycle.preconditionPassedStore,this.conditionPassedStore=this.lifecycle.conditionPassedStore,this.lifecycleStageStore=this.lifecycle.lifecycleStageStore,this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupComponents(),this.lifecycle.setPrecondition(e.precondition),this.lifecycle.setCondition(e.condition),this.eventBus({type:`load`,version:o.r()})}registerFramework=e=>{D(e,this.frameworks)};registerComponent=(e,t)=>{C(e,t,this.components)};registerPlugin=e=>{_(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{fe(e,t,this.features)};registerPredicate=(e,t)=>{V(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Ce(e,this.steps)};registerAction=(e,t)=>{De(e,t,this.actions)};registerExperience=e=>{e.component&&C(`experience:${e.id}`,e.component,this.components),this.experiences.register(e)};launchExperienceById=async(e,t)=>{this.experiences.launch({id:e,options:t})};launchExperienceByKey=async(e,t)=>{this.experiences.launch({key:e,options:t})};openExperienceById=async e=>{this.experiences.open({id:e})};openExperienceByKey=async e=>{this.experiences.open({key:e})};setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(e=>{this.registerPlugin(e)});return}let t=typeof e==`function`?e():e;if(Array.isArray(t)){t.forEach(e=>this.registerPlugin(e));return}this.registerPlugin(t)})}setupFeatures(){let e=this.options.features;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerFeature(e,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(e=>{try{let[t,n]=e.split(`:`);if(!t||!n)return;let r=n;r===`true`&&(r=!0),r===`false`&&(r=!1),this.registerFeature(t,{key:`${r}`,name:t,decide:()=>r,storage:`session`})}catch{}})}setupPredicates(){let e=this.options.predicates;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerPredicate(e,t)})}setupActions(){let e=this.options.actions;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerAction(e,t)})}setupComponents(){let e=this.options.components;e&&Object.entries(e).forEach(([e,t])=>{this.registerComponent(e,t)})}getPluginConfig=e=>this.plugins[e]??{}};function $e(e){return{$$type:`lazy-component`,load:e}}function et(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}var tt=e=>{let t=new $(e);return r.p(t),t};exports.Picked=$,exports.createClient=tt,exports.createPluginEffect=g,exports.createStorageKey=a.t,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=X,exports.isLazyLoader=et,exports.isPickedRoot=i.c,exports.lazyComponent=$e,exports.localStore=a.n,exports.sessionStore=a.r,exports.subscribe=a.i,exports.supportsCookies=r.t,exports.supportsCryptoRandomUUID=r.n,exports.supportsDocument=r.r,exports.supportsHistory=r.i,exports.supportsIntersectionObserver=r.a,exports.supportsLocalStorage=r.o,exports.supportsLocation=r.s,exports.supportsSessionStorage=r.c,exports.supportsShadowRoot=r.l,exports.supportsWebComponents=r.u,exports.supportsWindow=r.d;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../../logger-fbvQC40v.cjs`);const e=require(`../../../api-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../../logger-fbvQC40v.cjs`);const e=require(`../../../api-BM3zWj3k.cjs`);let t=require(`effector`);function n(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function r(e){return n(e)%100}function i(e,t){return t<=0?!1:t>=100?!0:e<t}function a(e){return typeof e==`object`&&!!e&&`features`in e&&Array.isArray(e.features)}function o(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function s(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function c(e,t){if(Array.isArray(t.fields))for(let n of t.fields)e.registerField(n)}function l(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName})}}function u(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)s(e,n)}function d(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function f(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function p(e,t,n,i){let a=f(e),o=r(i);for(let r of t.features)a.has(r.id)||m(e,r,n,o)}function m(e,t,n,r){e.registerFeature(t.id,{key:`v${t.version}`,name:t.name,storage:n?`session`:`local`,decide:()=>t.enabled?i(r,t.weight):!1})}function h(){let e;try{e=__PICKED_PROJECT_CONFIG__}catch{return}if(e===void 0)return;let t;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}else t=e;if(a(t))return t}function g(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function _(e){if(typeof e!=`object`||!e||!(`cause`in e))return!1;let{cause:t}=e;return typeof t!=`object`||!t||!(`code`in t)?!1:t.code===`ECONNREFUSED`}async function v(t,n,r){let i=r?.previewToken?`projects/${n}?preview_token=${encodeURIComponent(r.previewToken)}`:`projects/${n}`,o;try{o=await e.t(t,i,r?.headers)}catch(e){return g(t)&&_(e),null}if(!o.ok)return`${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return null}return a(s)?s:null}function y(e){return{name:`dynamic-experiences`,setup:n=>{let r=e?.apiUrl??n.apiUrl;return{onStart:(0,t.attach)({source:n.session.store.map(e=>e.id),effect:async t=>{let i=d(n);if(i){let e=await v(r,n.projectId,{previewToken:i});e&&(p(n,e,!0,t),o(n,e),c(n,e),l(n,e),u(n,e));return}let a=e?.projectConfig??h();if(a){p(n,a,!1,t),o(n,a),c(n,a),l(n,a),u(n,a);return}let s=await v(r,n.projectId);s&&(p(n,s,!1,t),o(n,s),c(n,s),l(n,s),u(n,s))}})}}}}exports.createClientHeaders=e.i,exports.dynamicExperiencesPlugin=y,exports.fetchProject=v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../../logger-fbvQC40v.cjs`);const e=require(`../../../supports-Dsjg-82e.cjs`),t=require(`../../../storage-B6lQtc4-.cjs`);let n=require(`effector`);var r=({storage:r=`local`}={})=>({name:`experience-browser-storage-plugin`,setup:i=>{if(!e.d())return;let a=r===`local`?t.n:t.r,o=(0,n.createEffect)(async e=>{if(!e)return;let n=t.t(`open-close`,`experience`,e),r=a.get(n).boolean();e.setOpen(r
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../../logger-fbvQC40v.cjs`);const e=require(`../../../supports-Dsjg-82e.cjs`),t=require(`../../../storage-B6lQtc4-.cjs`);let n=require(`effector`);var r=({storage:r=`local`}={})=>({name:`experience-browser-storage-plugin`,setup:i=>{if(!e.d())return;let a=r===`local`?t.n:t.r,o=(0,n.createEffect)(async e=>{if(!e)return;let n=t.t(`open-close`,`experience`,e),r=a.get(n).boolean();r!==null&&e.setOpen(r)});(0,n.sample)({source:i.eventBus,filter:e=>e.type===`experience_initialize`&&`experience`in e,fn:e=>e.experience,target:o});let s=(0,n.createEffect)(async({experience:e,isOpen:n})=>{let r=t.t(`open-close`,`experience`,e);a.set(r,n)}),c=e=>(0,n.sample)({source:e.isOpenStore,fn:t=>({experience:e,isOpen:t}),target:s});i.experienceInstances.listStore.watch(e=>{e.forEach(e=>c(e))})}});exports.experienceBrowserStoragePlugin=r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../supports-Dsjg-82e.cjs`),t=require(`../../../storage-B6lQtc4-.cjs`);let n=require(`effector`);var r=t.t(`history
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../supports-Dsjg-82e.cjs`),t=require(`../../../storage-B6lQtc4-.cjs`);let n=require(`effector`);var r=t.t(`history`,`global`),i=({storage:i=`local`}={})=>({name:`history-browser-storage-plugin`,setup:a=>{if(!e.d())return;let o=i===`local`?t.n:t.r,s=(0,n.createEffect)(async()=>{let e=o.get(r).json();e&&a.history.restore({entries:e})}),c=(0,n.createEffect)(async e=>{o.set(r,e)});(0,n.sample)({source:a.eventBus,filter:e=>e.type===`load`,target:s}),(0,n.sample)({source:a.history.entriesStore,target:c})}});exports.historyBrowserStoragePlugin=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../object-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../object-ThO1DEyl.cjs`),t=require(`../../../supports-Dsjg-82e.cjs`);var n=t.f,r,i=e=>({name:`single-page-app`,setup:e=>{t.d()&&a(()=>{requestAnimationFrame(()=>{e.start()})})}});function a(i){if(n.addEventListener(`popstate`,()=>{let e=n.location.href,t=r;r=e,t!==e&&i()}),!t.i())return;function a(e){return function(...t){let n=t.length>2?t[2]:void 0;if(n){let a=r,o=String(n);if(r=o,a===o)return e.apply(this,t);i()}return e.apply(this,t)}}e.n(n.history,`pushState`,a),e.n(n.history,`replaceState`,a)}exports.singlePageAppPlugin=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../supports-Dsjg-82e.cjs`);var t=()=>({name:`web-components`,setup:t=>{if(!e.d()||!e.u())return;let n=`picked-root`;if(window.customElements.get(n))return;class r extends HTMLElement{connectedCallback(){let e=this.getAttribute(`experience-id`);t.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../supports-Dsjg-82e.cjs`);var t=()=>({name:`web-components`,setup:t=>{if(!e.d()||!e.u())return;let n=`picked-root`;if(window.customElements.get(n))return;class r extends HTMLElement{connectedCallback(){let e=this.getAttribute(`experience-id`);t.readyStore.getState()&&e&&t.experiences.launch({id:e})}}window.customElements.define(n,r)}});exports.webComponentsPlugin=t;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../experience-instance-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../experience-instance-Ct3ogC7n.cjs`);let t=require(`effector`);function n(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:t=>e(t),reject:e=>t(e)}}function r(r,i){let{promise:a,resolve:o}=n(),s=(0,t.createEvent)(),c=(0,t.createEvent)(),l=(0,t.createEvent)(),u=(0,t.createEvent)(),d=(0,t.createEvent)(),f=r.experiences.listStore.map(t=>t.map(t=>e.t({client:r,experience:t}))),p=(0,t.createStore)({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=(0,t.createEffect)(async e=>{let n=(0,t.attach)({source:e.experience.componentStore,effect:async(t,n)=>{let i=e.availableRenderers[n];return t&&i?.isValidComponent(t.component)?{rendered:await i.render(t.component,r,e.experience),rendererIndex:n}:null}}),i=e.startRendererIndex??0;for(let t=i;t<e.availableRenderers.length;t++){let e=await n(t);if(e)return e}return null}),h=(0,t.createEffect)(async({experience:e,availableRenderers:t,startRendererIndex:n=0})=>e?m({experience:e,availableRenderers:t,startRendererIndex:n}):null);return p.on(l,(e,t)=>({...e,renderedExperiences:[...e.renderedExperiences,t],currentExperienceIndex:e.currentExperienceIndex+1})).on(d,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(u,e=>({...e,isComplete:!0})).reset(s),(0,t.sample)({clock:s,target:c}),(0,t.sample)({clock:c,source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex<e.length&&!t.isComplete,fn:({experiences:e,state:t})=>({experience:e[t.currentExperienceIndex],availableRenderers:i,startRendererIndex:0}),target:h}),(0,t.sample)({clock:h.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),(0,t.sample)({clock:l,target:c}),(0,t.sample)({clock:h.doneData,filter:e=>e===null,target:d}),(0,t.sample)({clock:d,target:c}),(0,t.sample)({clock:[c,d,l],source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex>=e.length,target:u}),(0,t.sample)({clock:u,target:(0,t.attach)({source:p,effect:e=>{e.isComplete&&o(e.renderedExperiences)}})}),s(),a}exports.render=r;
|
package/dist/docs/actions.mdx
CHANGED
|
@@ -37,7 +37,6 @@ Actions must be registered when creating the Picked client. Pass an `actions` ob
|
|
|
37
37
|
import { createClient } from '@picked/client'
|
|
38
38
|
|
|
39
39
|
const picked = createClient({
|
|
40
|
-
organizationId: 'your-org-id',
|
|
41
40
|
projectId: 'your-project-id',
|
|
42
41
|
actions: {
|
|
43
42
|
'track-signup': () => {
|
package/dist/docs/index.md
CHANGED
|
@@ -26,7 +26,6 @@ Add the SDK to your site and initialize the client. Copy the snippet from your p
|
|
|
26
26
|
import { createClient } from '@picked/client'
|
|
27
27
|
|
|
28
28
|
const picked = createClient({
|
|
29
|
-
organizationId: 'your-organization-id',
|
|
30
29
|
projectId: 'your-project-id',
|
|
31
30
|
plugins: [],
|
|
32
31
|
})
|
|
@@ -44,7 +43,6 @@ Register components when creating the client. Each key in the `components` objec
|
|
|
44
43
|
import { createClient } from '@picked/client'
|
|
45
44
|
|
|
46
45
|
const picked = createClient({
|
|
47
|
-
organizationId: 'your-organization-id',
|
|
48
46
|
projectId: 'your-project-id',
|
|
49
47
|
components: {
|
|
50
48
|
'welcome-survey': YourComponent,
|
|
@@ -26,6 +26,8 @@ The `steps`, `experiences`, and `projects` sources are reference tables sourced
|
|
|
26
26
|
| `steps`, `experiences` | `WHERE project_id = '<project_id>'` |
|
|
27
27
|
| `projects` | `WHERE id = '<project_id>'` (the row's `id` IS the project id) |
|
|
28
28
|
|
|
29
|
+
When auto-joined, these reference tables also receive a tenant equality on the JOIN's `ON` clause (e.g. `AND st.project_id = '<project_id>'`, `AND pr.id = '<project_id>'`) so ClickHouse prunes the dim scan instead of reading the full table. The predicate is added to `ON` rather than `WHERE` to preserve `LEFT JOIN` semantics.
|
|
30
|
+
|
|
29
31
|
Analyst-facing column names are prefixed (`step_title`, `project_name`, etc.) to avoid collisions across sources — for example, `steps.title` and `experiences.title` both exist, but you reference them as `step_title` and `experience_title`.
|
|
30
32
|
|
|
31
33
|
```sql
|
|
@@ -149,6 +149,33 @@ Funnel metrics are being continuously updated. Check back for new functions.
|
|
|
149
149
|
| `step_enter_users()` | Users who entered a funnel step |
|
|
150
150
|
| `step_enter_sessions()` | Sessions that entered a funnel step |
|
|
151
151
|
|
|
152
|
+
## Cohort filters (`events` only)
|
|
153
|
+
|
|
154
|
+
Predicate-shaped functions that emit a `user_canonical_id IN (SELECT … FROM events …)` subquery. Use in `WHERE` to restrict any analysis to users who have at least one event matching a custom condition.
|
|
155
|
+
|
|
156
|
+
| Function | Description |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `user_cohort_filter('<condition>')` | Restrict the query to users with ≥1 `events` row matching `<condition>` |
|
|
159
|
+
| `user_cohort_filter(filter='<condition>')` | Same, named-arg form |
|
|
160
|
+
|
|
161
|
+
`<condition>` uses the same `column=value [AND\|OR …]` shorthand as `control_users` / `variant_users`.
|
|
162
|
+
|
|
163
|
+
```sql
|
|
164
|
+
-- Funnel scoped to users who eventually submitted lead capture
|
|
165
|
+
SELECT all_users(), all_purchase_users()
|
|
166
|
+
FROM events
|
|
167
|
+
WHERE project_id = 'proj-abc'
|
|
168
|
+
AND user_cohort_filter('event_type=lead_capture')
|
|
169
|
+
|
|
170
|
+
-- Multi-condition cohort with OR-grouping
|
|
171
|
+
SELECT all_sessions()
|
|
172
|
+
FROM events
|
|
173
|
+
WHERE project_id = 'proj-abc'
|
|
174
|
+
AND user_cohort_filter('event_type=signup OR event_type=trial_start')
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The outer query MUST filter by a single `project_id` — the function bakes that tenant into the inner subquery so the cohort scan is scoped to your project, not the whole warehouse.
|
|
178
|
+
|
|
152
179
|
## Feature functions (`features` / `events`)
|
|
153
180
|
|
|
154
181
|
Parameterized functions that accept the feature name, bucket, and an optional feature key:
|
package/dist/docs/sdk/actions.md
CHANGED
|
@@ -14,7 +14,6 @@ Register actions when creating the Picked client. Each key in the `actions` obje
|
|
|
14
14
|
import { createClient } from '@picked/client'
|
|
15
15
|
|
|
16
16
|
const picked = createClient({
|
|
17
|
-
organizationId: 'your-org-id',
|
|
18
17
|
projectId: 'your-project-id',
|
|
19
18
|
actions: {
|
|
20
19
|
'track-signup': () => {
|
|
@@ -14,7 +14,6 @@ Define features when creating the Picked client by passing a `features` object.
|
|
|
14
14
|
import { createClient } from '@picked/client'
|
|
15
15
|
|
|
16
16
|
const client = createClient({
|
|
17
|
-
organizationId: 'your-org-id',
|
|
18
17
|
projectId: 'your-project-id',
|
|
19
18
|
features: {
|
|
20
19
|
'summer-sale': {
|
package/dist/docs/sdk/index.md
CHANGED
|
@@ -20,7 +20,6 @@ import { windowObjectPlugin } from '@picked/client/plugins/window-object'
|
|
|
20
20
|
import { singlePageAppPlugin } from '@picked/client/plugins/single-page-app'
|
|
21
21
|
|
|
22
22
|
const picked = createClient({
|
|
23
|
-
organizationId: 'your-organization-id',
|
|
24
23
|
projectId: 'your-project-id',
|
|
25
24
|
plugins: [windowObjectPlugin(), singlePageAppPlugin()],
|
|
26
25
|
})
|
|
@@ -17,7 +17,6 @@ import { funnelExperience } from '../experiences/funnel-experience'
|
|
|
17
17
|
import { widgetExperience } from '../experiences/widget-experience'
|
|
18
18
|
|
|
19
19
|
const client = createClient({
|
|
20
|
-
organizationId: 'your-org-id',
|
|
21
20
|
projectId: 'your-project-id',
|
|
22
21
|
plugins: createExperiencePlugin({
|
|
23
22
|
experiences: [funnelExperience, widgetExperience],
|
|
@@ -15,7 +15,6 @@ import { createClient } from '@picked/client'
|
|
|
15
15
|
import { dynamicExperiencesPlugin } from '@picked/client/plugins/dynamic-experiences'
|
|
16
16
|
|
|
17
17
|
const client = createClient({
|
|
18
|
-
organizationId: 'your-org-id',
|
|
19
18
|
projectId: 'your-project-id',
|
|
20
19
|
plugins: [dynamicExperiencesPlugin()],
|
|
21
20
|
})
|
|
@@ -13,7 +13,6 @@ import { createClient } from '@picked/client'
|
|
|
13
13
|
import { windowObjectPlugin } from '@picked/client/plugins/window-object'
|
|
14
14
|
|
|
15
15
|
const client = createClient({
|
|
16
|
-
organizationId: 'your-org-id',
|
|
17
16
|
projectId: 'your-project-id',
|
|
18
17
|
plugins: [windowObjectPlugin()],
|
|
19
18
|
})
|
|
@@ -14,7 +14,6 @@ Define predicates when creating the Picked client by passing a `predicates` obje
|
|
|
14
14
|
import { createClient } from '@picked/client'
|
|
15
15
|
|
|
16
16
|
const client = createClient({
|
|
17
|
-
organizationId: 'your-org-id',
|
|
18
17
|
projectId: 'your-project-id',
|
|
19
18
|
predicates: {
|
|
20
19
|
'is-example-page': ({ location }) => {
|
package/dist/esm/form/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "../../rules-logic-
|
|
1
|
+
import { t as e } from "../../rules-logic-D_CVBuv7.js";
|
|
2
2
|
import { attach as t, combine as n, createEffect as r, createEvent as i, createStore as a, sample as o, split as s } from "effector";
|
|
3
3
|
//#region src/form/build-responses.ts
|
|
4
4
|
function c(e, t, n) {
|