@picked/client 0.0.1-dev.1780615163258 → 0.0.1-dev.1783393641770
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{api-BQwz0ss0.cjs → api-CEoqdaqt.cjs} +1 -1
- package/dist/{api-CMWlCB-O.js → api-CHtZJL48.js} +1 -1
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/create-experience/index.js +1 -1
- package/dist/cjs/plugins/dom-observer/index.js +1 -1
- 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/responses-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/responses-indexeddb/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/plugins/window-object/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/api/index.md +4 -0
- package/dist/docs/content/asset-library.mdx +50 -0
- package/dist/docs/content/content-entries.mdx +30 -0
- package/dist/docs/content/layouts.mdx +70 -0
- package/dist/docs/content/pages.mdx +67 -0
- package/dist/docs/content/sections.mdx +33 -0
- package/dist/docs/delivery-api/experience-content.md +85 -0
- package/dist/docs/delivery-api/index.md +46 -0
- package/dist/docs/delivery-api/preview-caching-crawling.md +59 -0
- package/dist/docs/delivery-api/project-config.md +56 -0
- package/dist/docs/experiences.mdx +3 -1
- package/dist/docs/fields.mdx +2 -0
- package/dist/docs/guides/build-a-personalized-page.mdx +143 -0
- package/dist/docs/sdk/experiences.md +2 -0
- package/dist/docs/sdk/index.md +11 -1
- package/dist/docs/sdk/ssr/index.md +62 -0
- package/dist/docs/sdk/ssr/rendering-and-hydration.md +141 -0
- package/dist/docs/sdk/ssr/serialize.md +86 -0
- package/dist/docs/sdk/ssr/slots-and-placements.md +35 -0
- package/dist/docs/sdk/steps.md +2 -0
- package/dist/docs/steps.mdx +2 -0
- package/dist/docs/workspace-versioning.mdx +28 -0
- package/dist/{dom-DjfSrkpp.js → dom-BwmTHeT7.js} +1 -1
- package/dist/{dom-sqnnO-CT.cjs → dom-CDrHc_j9.cjs} +1 -1
- package/dist/esm/form/index.js +1 -1
- package/dist/esm/index.js +206 -192
- package/dist/esm/plugins/create-experience/index.js +1 -1
- package/dist/esm/plugins/dom-observer/index.js +3 -3
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/plugins/experience-browser-storage/index.js +3 -3
- package/dist/esm/plugins/history-browser-storage/index.js +2 -2
- package/dist/esm/plugins/responses-browser-storage/index.js +2 -2
- package/dist/esm/plugins/responses-indexeddb/index.js +1 -1
- package/dist/esm/plugins/single-page-app/index.js +2 -2
- package/dist/esm/plugins/web-components/index.js +1 -1
- package/dist/esm/plugins/window-object/index.js +1 -1
- package/dist/esm/server/index.js +33 -33
- package/dist/{experience-instance-DBzfLqnk.js → experience-instance-CBJJPjEJ.js} +189 -141
- package/dist/experience-instance-qBWC_Wr2.cjs +1 -0
- package/dist/id-Js-62re-.cjs +1 -0
- package/dist/logger-CSTvAyyB.cjs +1 -0
- package/dist/{object-ThO1DEyl.cjs → object-CIkt7Fkr.cjs} +1 -1
- package/dist/{plugin-DXbcrmHG.cjs → plugin-C1fanByQ.cjs} +1 -1
- package/dist/{plugin-CDXe4fhZ.js → plugin-mTF3d8cX.js} +11 -7
- package/dist/{preview-bridge-DIdDvNXQ.cjs → preview-bridge-CpX1BkSA.cjs} +1 -1
- package/dist/{preview-bridge-CGyx7dEx.js → preview-bridge-D76l-dPy.js} +2 -2
- package/dist/rules-logic-CGZIYgAI.cjs +1 -0
- package/dist/{rules-logic-D_CVBuv7.js → rules-logic-HesIUCu6.js} +1 -1
- package/dist/{storage-BXSlLTRa.cjs → storage-DUw9UJ2h.cjs} +1 -1
- package/dist/{supports-34OzZK5j.cjs → supports-DBzjGaWD.cjs} +1 -1
- package/dist/types/entities/action/action.d.ts +1 -1
- package/dist/types/entities/condition/condition.d.ts +9 -0
- package/dist/types/entities/condition/condition.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +6 -0
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/lifecycle/condition-selection.d.ts +24 -0
- package/dist/types/lifecycle/condition-selection.d.ts.map +1 -1
- package/dist/types/lifecycle/rules-logic.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/types/server/index.d.ts +1 -1
- package/dist/types/server/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/experience-instance-CVKoGtYE.cjs +0 -1
- package/dist/id-Cg7fVl1O.cjs +0 -1
- package/dist/logger-fbvQC40v.cjs +0 -1
- package/dist/rules-logic-H6P8xwHF.cjs +0 -1
- /package/dist/{id-n2yrHvNo.js → id-Bo4RBeOs.js} +0 -0
- /package/dist/{logger-6z_gb4rA.js → logger-DMN6TxJJ.js} +0 -0
- /package/dist/{object-DvUDOytC.js → object-BUDGxEqy.js} +0 -0
- /package/dist/{storage-hOHCCXvP.js → storage-1MW3-_As.js} +0 -0
- /package/dist/{supports-BgjwyijI.js → supports-CO9bJGNl.js} +0 -0
|
@@ -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.1783393641770`,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,r){let i=a(e,t);return fetch(i,{headers:o(n),signal:r})}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(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../rules-logic-CGZIYgAI.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(`../object-ThO1DEyl.cjs`),t=require(`../rules-logic-H6P8xwHF.cjs`),n=require(`../logger-fbvQC40v.cjs`),r=require(`../supports-34OzZK5j.cjs`),i=require(`../dom-sqnnO-CT.cjs`),a=require(`../experience-instance-CVKoGtYE.cjs`),o=require(`../storage-BXSlLTRa.cjs`),s=require(`../api-BQwz0ss0.cjs`),c=require(`../id-Cg7fVl1O.cjs`);let l=require(`effector`),u=require(`@withease/factories`);var d=(0,l.createDomain)(`experience`),f=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.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}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.l).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.c).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),f=n.actions??[],p,m=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(p,t,r):e.experienceInstances.spawn(p,t)})}}),h=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),g=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),_=(0,l.createEvent)(),v=(0,l.createEvent)(),y=d.createStore(void 0,{skipVoid:!1}).on(_,(e,t)=>t).on(v,(e,t)=>t);return(0,l.sample)({clock:_,target:h}),(0,l.sample)({clock:h.doneData,source:y,filter:(e,t)=>t,fn:e=>e,target:m}),(0,l.sample)({clock:h.doneData,filter:Boolean,target:g}),(0,l.sample)({clock:v,source:y,fn:e=>e,target:m}),(0,l.sample)({clock:v,target:g}),p={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:m,shouldInitialiseFx:h,initialiseRequested:_,initialiseDirectly:v,prepareExperienceContentFx:g},p});function p(e){return(0,u.invoke)(f,e)}var m=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(p({client:e,experience:t}))});(0,l.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,l.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 c=(0,l.attach)({source:t,effect:(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;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.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=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function h(e){return(0,u.invoke)(m,e)}var g=async e=>{await e.experiences.initialiseExperiencesFx()};function _(e){return(0,l.createEffect)(async()=>{await e()})}var v=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},y=(0,l.createDomain)(`component`),b=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function x(e){return(0,u.invoke)(b,e)}var S=(0,u.createFactory)(({client:e})=>{let t=y.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.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,l.sample)({clock:i,fn:({name:t,component:n})=>x({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 C(e){return(0,u.invoke)(S,e)}var w=(e,t,n)=>{n.register({name:e,component:t})},T=(0,l.createDomain)(`framework`),E=(0,u.createFactory)(e=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.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,l.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 D(e){return(0,u.invoke)(E,e)}var O=(e,t)=>{t.register({name:e.name,framework:e})},k=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function A(e){return(0,u.invoke)(k,e)}function ee(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(ee(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var L={"==":(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 z(e),"!":async e=>!await z(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 R({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await R({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 R(e,t){if(!e)return e;if(N(e))return R(await e,t);if(M(e))return Promise.all(e.map(e=>R(e,t)));if(!P(e))return e;let n=te(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 z(await R(r[e],t)))return R(r[e+1],t);return r.length%2==1?R(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await R(n,t),!await z(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await R(n,t),await z(e))return e;return e}case`map`:{let e=await R(r[0],t);return M(e)?await Promise.all(e.map(e=>R(r[1],e))):[]}case`filter`:{let e=await R(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await z(await R(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await R(r[0],t);if(!M(e))return r.length>2?await R(r[2],t):null;let n=r[1],i=r.length>2?await R(r[2],t):null;for(let t of e)i=await R(n,{current:t,accumulator:i});return i}case`all`:{let e=await R(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await z(await R(r[1],t)))return!1;return!0}case`some`:{let e=await R(r[0],t);if(!M(e))return!1;for(let t of e)if(await z(await R(r[1],t)))return!0;return!1}case`none`:{let e=await R(r[0],t);if(!M(e))return!0;for(let t of e)if(await z(await R(r[1],t)))return!1;return!0}case`catch`:try{return await R(r[0],t)}catch(e){return P(e)?await R(e,t):r[1]?await R(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>R(e,t))),a=n?L[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function z(e){return N(e)?z(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function te(e){return Object.keys(e)[0]}var ne=(0,u.createFactory)(({client:e})=>(0,l.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 R(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 re(e){return(0,u.invoke)(ne,e)}var ie=6e3,ae=o.t(`last_ping`,`global`),oe=async e=>{try{let t=Date.now(),n=o.n.get(ae),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ie)return!0;let i={projectId:e.projectId,path:window.location.pathname},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},B=(0,l.createDomain)(`lifecycle`),se=(0,u.createFactory)(({client:e})=>{let n=B.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),s=B.store(`idle`),c=B.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),_=(0,l.createEvent)(),v=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(_,(e,t)=>t),d.on(v,(e,t)=>t),n.on(p,()=>!0);let y=(0,l.createEffect)(()=>{oe(e)}),b=(0,l.createEffect)(async()=>{await i.r()}),x=(0,l.createEffect)(async()=>{await g(e)}),S=(0,l.attach)({effect:x}),C=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:E,fn:()=>`starting`,target:s}),(0,l.sample)({clock:E,target:y}),(0,l.sample)({clock:E,target:C}),(0,l.sample)({clock:E,target:b}),(0,l.sample)({clock:C.done,target:w}),(0,l.sample)({clock:w.doneData,target:a}),(0,l.sample)({clock:T.doneData,target:o}),(0,l.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,l.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,l.createStore)(!1).on(b.done,()=>!0),O=(0,l.createStore)(!1).on(m,()=>!0),k=(0,l.createStore)(!1).on(S.done,()=>!0),A=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:A,filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(D,O,A,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:S}),(0,l.sample)({clock:(0,l.combine)(D,O,A,k,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.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,l.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:h,setPrecondition:_,setCondition:v}});function ce(e){return(0,u.invoke)(se,e)}var le=(0,l.createDomain)(`predicate`),ue=(0,u.createFactory)(({client:e})=>{let t=le.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.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,l.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,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function V(e){return(0,u.invoke)(ue,e)}var H=(e,t,n)=>{n.register({name:e,predicate:t})},U=(0,l.createDomain)(`feature`),de=(0,u.createFactory)(({client:e})=>{let t=U.store({}),r=U.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,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,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.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,l.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,l.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:c});let f=(0,l.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,l.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,l.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,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function fe(e){return(0,u.invoke)(de,e)}var pe=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,l.createDomain)(`history`);function G(e,t){return{id:c.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var me=(0,u.createFactory)(()=>{let e=W.store({entries:[]}),t=W.event(),n=W.event(),r=W.event(),i=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(i,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let i=e[r],o=i?.node;if(!(!o||!a.l(o))&&!(t&&i.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:i,entriesStore:e.map(e=>e.entries)}});function he(){return(0,u.invoke)(me)}var ge=0,_e=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:ge++,at:new Date,payload:t}]),t},ve=(0,l.createDomain)(`field`),ye=(0,u.createFactory)(()=>{let e=ve.store({}),t=(0,l.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 c(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:c}});function be(){return(0,u.invoke)(ye)}var xe=(0,l.createDomain)(`step`),Se=(0,u.createFactory)(()=>{let e=xe.store({}),t=(0,l.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 Ce(){return(0,u.invoke)(Se)}function we(e,t){t.register(e)}var Te=(0,l.createDomain)(`content`),Ee=(0,u.createFactory)(()=>{let e=Te.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function De(){return(0,u.invoke)(Ee)}function Oe(e,t){t.register(e)}var ke=(0,l.createDomain)(`action`),Ae=(0,u.createFactory)(({client:e})=>{let t=ke.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.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,l.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,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function je(e){return(0,u.invoke)(Ae,e)}var Me=(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 Ne(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 Pe(e,t){return t.find(t=>t.key===e)??null}function Fe(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Ie(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 Le(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=>!Ne(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 Re(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 ze=(0,l.createDomain)(`response`),Be=(0,u.createFactory)(({client:e})=>{let n=ze.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.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),c=(0,l.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=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=Fe(o,n),l=await Re(s,o,c,a);if(l){r.push(l);return}let u=Ie(o,c);if(u){r.push(u);return}let d=Le(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 c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(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,l.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,l.sample)({clock:r,target:a.clearAll}),(0,l.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 Ve(e){return(0,u.invoke)(Be,e)}var He=(0,l.createDomain)(`condition`),Ue=(0,u.createFactory)(()=>{let e=He.store({}),t=(0,l.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 We(){return(0,u.invoke)(Ue)}function Ge(){if(r.i()){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 Ke(){if(!r.f())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=o.t(`s`);if(n.size>0)o.r.set(i,t);else{let e=o.r.get(i);if(e)return e.json()||{}}return t}var Y=o.t(`session`,`global`);function qe(){return r.r()?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 Je(){if(!r.s())return null;let e=o.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Ye=(0,u.createFactory)(()=>{let e=Je(),t={id:e?.id??qe()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.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,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Xe(){return(0,u.invoke)(Ye,void 0)}function X(){if(r.f())return globalThis.window.pickedConfig}function Z(){if(r.f())return X()?.projectId}function Ze(){if(!r.i())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=Z();if(t)return t;let n=Ze();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-CGZIYgAI.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-CDrHc_j9.cjs"),a=require("../experience-instance-qBWC_Wr2.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-CEoqdaqt.cjs"),c=require("../id-Js-62re-.cjs");let l=require("effector"),u=require("@withease/factories");var d=(0,l.createDomain)(`experience`),f=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.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}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.u).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.l).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),f=n.actions??[],p,m=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(p,t,r):e.experienceInstances.spawn(p,t)})}}),h=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),g=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),_=(0,l.createEvent)(),v=(0,l.createEvent)(),y=d.createStore(void 0,{skipVoid:!1}).on(_,(e,t)=>t).on(v,(e,t)=>t);return(0,l.sample)({clock:_,target:h}),(0,l.sample)({clock:h.doneData,source:y,filter:(e,t)=>t,fn:e=>e,target:m}),(0,l.sample)({clock:h.doneData,filter:Boolean,target:g}),(0,l.sample)({clock:v,source:y,fn:e=>e,target:m}),(0,l.sample)({clock:v,target:g}),p={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:m,shouldInitialiseFx:h,initialiseRequested:_,initialiseDirectly:v,prepareExperienceContentFx:g},p});function p(e){return(0,u.invoke)(f,e)}var m=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(p({client:e,experience:t}))});(0,l.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,l.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 c=(0,l.attach)({source:t,effect:(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;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.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=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function h(e){return(0,u.invoke)(m,e)}var g=async e=>{await e.experiences.initialiseExperiencesFx()};function _(e){return(0,l.createEffect)(async()=>{await e()})}var v=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},y=(0,l.createDomain)(`component`),b=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function x(e){return(0,u.invoke)(b,e)}var S=(0,u.createFactory)(({client:e})=>{let t=y.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.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,l.sample)({clock:i,fn:({name:t,component:n})=>x({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 C(e){return(0,u.invoke)(S,e)}var w=(e,t,n)=>{n.register({name:e,component:t})},T=(0,l.createDomain)(`framework`),E=(0,u.createFactory)(e=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.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,l.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 D(e){return(0,u.invoke)(E,e)}var O=(e,t)=>{t.register({name:e.name,framework:e})},k=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function A(e){return(0,u.invoke)(k,e)}function ee(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(ee(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var te={"==":(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=ne(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?te[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 ne(e){return Object.keys(e)[0]}function z(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>n.has(i)?!1:await L(a.logic,{...t,conditions:z(e,t,new Set(n).add(i))})===!0}})}var re=(0,u.createFactory)(({client:e})=>(0,l.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:o,context:s})=>{let c=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),l=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),u=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),d={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:c,actions:l,features:u,...s};return await L(o,{...d,conditions:z(a,d,new Set)})}}));function ie(e){return(0,u.invoke)(re,e)}var ae=6e3,oe=o.t(`last_ping`,`global`),se=async e=>{try{let t=Date.now(),n=o.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},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},B=(0,l.createDomain)(`lifecycle`),ce=(0,u.createFactory)(({client:e})=>{let n=B.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),s=B.store(`idle`),c=B.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),_=(0,l.createEvent)(),v=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(_,(e,t)=>t),d.on(v,(e,t)=>t),n.on(p,()=>!0);let y=(0,l.createEffect)(()=>{se(e)}),b=(0,l.createEffect)(async()=>{await i.r()}),x=(0,l.createEffect)(async()=>{await g(e)}),S=(0,l.attach)({effect:x}),C=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:E,fn:()=>`starting`,target:s}),(0,l.sample)({clock:E,target:y}),(0,l.sample)({clock:E,target:C}),(0,l.sample)({clock:E,target:b}),(0,l.sample)({clock:C.done,target:w}),(0,l.sample)({clock:w.doneData,target:a}),(0,l.sample)({clock:T.doneData,target:o}),(0,l.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,l.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,l.createStore)(!1).on(b.done,()=>!0),O=(0,l.createStore)(!1).on(m,()=>!0),k=(0,l.createStore)(!1).on(S.done,()=>!0),A=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:A,filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(D,O,A,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:S}),(0,l.sample)({clock:(0,l.combine)(D,O,A,k,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.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,l.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:h,setPrecondition:_,setCondition:v}});function le(e){return(0,u.invoke)(ce,e)}var ue=(0,l.createDomain)(`predicate`),de=(0,u.createFactory)(({client:e})=>{let t=ue.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.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,l.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,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function V(e){return(0,u.invoke)(de,e)}var H=(e,t,n)=>{n.register({name:e,predicate:t})},U=(0,l.createDomain)(`feature`),fe=(0,u.createFactory)(({client:e})=>{let t=U.store({}),r=U.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,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,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.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,l.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,l.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:c});let f=(0,l.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,l.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,l.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,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function pe(e){return(0,u.invoke)(fe,e)}var me=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,l.createDomain)(`history`);function G(e,t){return{id:c.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var he=(0,u.createFactory)(()=>{let e=W.store({entries:[]}),t=W.event(),n=W.event(),r=W.event(),i=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(i,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let i=e[r],o=i?.node;if(!(!o||!a.u(o))&&!(t&&i.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:i,entriesStore:e.map(e=>e.entries)}});function ge(){return(0,u.invoke)(he)}var _e=0,ve=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:_e++,at:new Date,payload:t}]),t},ye=(0,l.createDomain)(`field`),be=(0,u.createFactory)(()=>{let e=ye.store({}),t=(0,l.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 c(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:c}});function xe(){return(0,u.invoke)(be)}var Se=(0,l.createDomain)(`step`),Ce=(0,u.createFactory)(()=>{let e=Se.store({}),t=(0,l.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 we(){return(0,u.invoke)(Ce)}function Te(e,t){t.register(e)}var Ee=(0,l.createDomain)(`content`),De=(0,u.createFactory)(()=>{let e=Ee.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function Oe(){return(0,u.invoke)(De)}function ke(e,t){t.register(e)}var Ae=(0,l.createDomain)(`action`),je=(0,u.createFactory)(({client:e})=>{let t=Ae.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.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,l.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,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Me(e){return(0,u.invoke)(je,e)}var Ne=(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 Pe(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 Fe(e,t){return t.find(t=>t.key===e)??null}function Ie(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Le(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 Re(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=>!Pe(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 ze(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 Be=(0,l.createDomain)(`response`),Ve=(0,u.createFactory)(({client:e})=>{let n=Be.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.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),c=(0,l.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=Fe(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=Ie(o,n),l=await ze(s,o,c,a);if(l){r.push(l);return}let u=Le(o,c);if(u){r.push(u);return}let d=Re(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 c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(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,l.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,l.sample)({clock:r,target:a.clearAll}),(0,l.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 He(e){return(0,u.invoke)(Ve,e)}var Ue=(0,l.createDomain)(`condition`),We=(0,u.createFactory)(()=>{let e=Ue.store({}),t=(0,l.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 Ge(){return(0,u.invoke)(We)}function Ke(){if(r.i()){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 qe(){if(!r.f())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=o.t(`s`);if(n.size>0)o.r.set(i,t);else{let e=o.r.get(i);if(e)return e.json()||{}}return t}var Y=o.t(`session`,`global`);function Je(){return r.r()?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 Ye(){if(!r.s())return null;let e=o.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Xe=(0,u.createFactory)(()=>{let e=Ye(),t={id:e?.id??Je()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.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,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Ze(){return(0,u.invoke)(Xe,void 0)}function X(){if(r.f())return globalThis.window.pickedConfig}function Qe(){if(r.f())return X()?.projectId}function $e(){if(!r.i())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 Z(e){if(e.projectId)return e.projectId;let t=Qe();if(t)return t;let n=$e();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
2
2
|
(1) createClient({ projectId }) options;
|
|
3
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
|
|
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 et={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 tt(e){return typeof e==`object`&&!!e}function nt(e,t){let n=t;for(let t of e.split(`.`))if(tt(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function rt(e,t){let n=e.split(`|`).map(e=>e.trim()),r=nt(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=et[i];o&&(r=o(r,a))}return Q(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function it(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+=rt(i.trim(),t)}else n+=e[r++];return n}var $=class{static logger=n.t;options;dataSource=null;contentLoader;plugins={};eventBus=(0,l.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=Ze();searchParams=qe();history=ge();components=C({client:this});experienceInstances=a.n({client:this});experiences=h({client:this});frameworks=D({client:this});predicates=V({client:this});features=pe({client:this});conditions=Ge();fields=xe();responses=He({client:this});steps=we();contents=Oe();actions=Me({client:this});conditionResults=a.r();stateSnapshotStore=A({client:this});evaluateRuleLogicFx=ie({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=le({client:this});renderStringFx=(0,l.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return it(t,{...n,responses:r})}});constructor(e){this.events=ve(this.eventBus),this.projectId=Z(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ke(),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:s.r()}),this.maybeStartPreviewBridge()}maybeStartPreviewBridge(){!r.f()||!r.t()||this.searchParams[`preview-token`]?.[0]&&Promise.resolve().then(()=>require("../preview-bridge-CpX1BkSA.cjs")).then(e=>e.initPreviewBridge()).catch(()=>void 0)}registerFramework=e=>{O(e,this.frameworks)};registerComponent=(e,t)=>{w(e,t,this.components)};registerPlugin=e=>{v(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{me(e,t,this.features)};registerPredicate=(e,t)=>{H(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Te(e,this.steps)};registerContent=e=>{ke(e,this.contents)};registerAction=(e,t)=>{Ne(e,t,this.actions)};registerExperience=e=>{e.component&&w(`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 at(e){return{$$type:`lazy-component`,load:e}}function ot(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}var st=e=>{let t=new $(e);return r.m(t),t};exports.Picked=$,exports.createClient=st,exports.createPluginEffect=_,exports.createStorageKey=o.t,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=X,exports.isInsideIframe=r.t,exports.isLazyLoader=ot,exports.isPickedRoot=i.a,exports.lazyComponent=at,exports.localStore=o.n,exports.sessionStore=o.r,exports.subscribe=o.i,exports.supportsCookies=r.n,exports.supportsCryptoRandomUUID=r.r,exports.supportsDocument=r.i,exports.supportsHistory=r.a,exports.supportsIntersectionObserver=r.o,exports.supportsLocalStorage=r.s,exports.supportsLocation=r.c,exports.supportsSessionStorage=r.l,exports.supportsShadowRoot=r.u,exports.supportsWebComponents=r.d,exports.supportsWindow=r.f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../id-Js-62re-.cjs");var t={serialize(e){return JSON.stringify(e)},deserialize(e){return JSON.parse(e)}},n=e=>({name:`create-experience`,setup:n=>{e.experiences.forEach(e=>{let r=e.serialize(),i=t.deserialize(r);i.component=e.component;let{steps:a,conditions:o,fields:s,...c}=i;n.registerExperience(c),s.forEach(e=>{n.registerField(e)}),a.forEach(e=>{n.registerStep(e)}),o.forEach(e=>{n.registerCondition(e)})})}}),r=(n,r)=>({id:e.t(`node`),experience:r,type:`action`,action:n.action,addNext(e){if(!e.node)throw Error(`Cannot connect to node`);let t=s({sourceNode:this,destinationNode:e.node,sourceHandle:null},r);r.edges.push(t)},onSuccess(e){if(!e.node)throw Error(`Cannot connect to node`);let t=s({sourceNode:this,destinationNode:e.node,sourceHandle:`true`},r);r.edges.push(t)},onFail(e){if(!e.node)throw Error(`Cannot connect to node`);let t=s({sourceNode:this,destinationNode:e.node,sourceHandle:`false`},r);r.edges.push(t)},serialize(){return t.serialize({id:this.id,type:this.type,actionKey:this.action})}}),i=t=>{let n=t.name,r=t.id??e.t(`step`);return{id:r,name:n,key:t.key??r,fields:t.fields??[],addField(e){let t=`serialize`in e?e:l(e);return this.fields.includes(t)||this.fields.push(t),t}}},a=(n,r)=>{let i=n.name,a=n.id??e.t(`step`),s={id:a,name:i,key:n.key??a,experience:r,fields:n.fields??[],node:null,nextStep(e){return this.experience.addStep(e,this)},nextCondition(e){return this.experience.addCondition(e,this)},nextConditional(e){return this.nextCondition(e)},addNextExperience(e){return this.experience.addExperience(e,this)},addField(e){return this.experience.addField(e,this)},serialize(){return t.serialize({id:this.id,key:this.key,name:this.name,fieldKeys:this.fields.map(e=>e.key)})}};return o({step:s,type:`step`},r),s},o=(n,r)=>{let i={id:e.t(`node`),experience:r};if(n.type===`step`){let e={...i,type:`step`,connectedStep:n.step,serialize(){return t.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,name:this.connectedStep.name})}};return e.connectedStep.node=e,e}if(n.type===`condition`){let e={...i,type:`condition`,connectedCondition:n.condition,serialize(){return t.serialize({id:this.id,type:this.type,conditionId:this.connectedCondition.id})}};return e.connectedCondition.node=e,e}return n.type===`experience`?{...i,type:`experience`,connectedExperience:n.experience,serialize(){return t.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id,experienceKey:this.connectedExperience.key})}}:{...i,type:`origin`,serialize(){return t.serialize({id:this.id,type:this.type})}}},s=(n,r)=>({id:e.t(`edge`),sourceNode:n.sourceNode,sourceHandle:n.sourceHandle,destinationNode:n.destinationNode,experience:r,serialize(){return t.serialize({id:this.id,sourceHandle:this.sourceHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),c=(n,r)=>{let i=e.t(`conditional`),a=n.name??n.label??i,c={id:i,key:n.key??i,name:a,label:n.label,logic:n.condition,node:null,experience:r,addTrue(e){if(!this.node||!e.node)throw Error(`todo no node`);let t=s({sourceNode:this.node,destinationNode:e.node,sourceHandle:`true`},this.experience);this.experience.edges.push(t)},addFalse(e){if(!this.node||!e.node)throw Error(`todo no node`);let t=s({sourceNode:this.node,destinationNode:e.node,sourceHandle:`false`},this.experience);this.experience.edges.push(t)},serialize(){return t.serialize({id:this.id,key:this.key,name:this.name,logic:this.logic})}};return o({condition:c,type:`condition`},r),c},l=n=>{let r=n.id??e.t(`field`);return{id:r,key:n.key??r,name:n.name,type:n.type,label:n.label,placeholder:n.placeholder,description:n.description,helpText:n.helpText,defaultValue:n.defaultValue??null,multiple:n.multiple,validation:n.validation??{},condition:n.condition,required:n.required,options:n.options?.map(t=>({id:`id`in t?t.id:e.t(`option`),...t}))??null,policies:n.policies,serialize(){let e={id:this.id,key:this.key,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},n=typeof this.defaultValue==`string`?this.defaultValue:void 0,r=typeof this.defaultValue==`number`?this.defaultValue:void 0,i=typeof this.defaultValue==`boolean`?this.defaultValue:void 0;switch(this.type){case`text`:if(this.multiple){let n;if(Array.isArray(this.defaultValue)){n=[];for(let e of this.defaultValue)typeof e==`string`&&n.push(e);n.length===0&&(n=void 0)}return t.serialize({...e,type:`text`,multiple:!0,defaultValue:n,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:`${e.value}`,condition:e.condition})):null})}return t.serialize({...e,type:`text`,multiple:!1,defaultValue:n,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 n;if(Array.isArray(this.defaultValue)){n=[];for(let e of this.defaultValue)typeof e==`number`&&n.push(e);n.length===0&&(n=void 0)}return t.serialize({...e,type:`number`,multiple:!0,defaultValue:n,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:Number(e.value),condition:e.condition})):null})}return t.serialize({...e,type:`number`,multiple:!1,defaultValue:r,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 n;if(Array.isArray(this.defaultValue)){n=[];for(let e of this.defaultValue)typeof e==`boolean`&&n.push(e);n.length===0&&(n=void 0)}return t.serialize({...e,type:`boolean`,multiple:!0,defaultValue:n,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:!!e.value,condition:e.condition})):null})}return t.serialize({...e,type:`boolean`,multiple:!1,defaultValue:i,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:!!e.value,condition:e.condition})):null});case`object`:return this.multiple?t.serialize({...e,type:`object`,multiple:!0,defaultValue:this.defaultValue,options:this.options?this.options.map(e=>({id:e.id,label:e.label,description:e.description,value:e.value,condition:e.condition})):null}):t.serialize({...e,type:`object`,multiple:!1,defaultValue:this.defaultValue,options:this.options?this.options.map(e=>({id:e.id,label:e.label,description:e.description,value:e.value,condition:e.condition})):null});default:throw Error(`Unsupported field type`)}}}},u=e=>({id:e.id,key:e.key??e.id,component:e.component,name:e.name,initializeOpen:e.initializeOpen,condition:e.condition,targets:e.targets,steps:[],nodes:[],edges:[],fields:[],conditions:[],addStep(e,t){let n=t?.node;this.nodes.length===0&&(n=o({type:`origin`},this),this.nodes.push(n));let r=`serialize`in e?e:a(e,this);if(n){if(!r.node)throw Error(`todo no node`);let e=s({sourceNode:n,destinationNode:r.node,sourceHandle:null},this);this.edges.push(e)}return r.fields.length>0&&r.fields.forEach(e=>{this.fields.includes(e)||this.fields.push(e)}),this.steps.includes(r)||(this.steps.push(r),r.node&&this.nodes.push(r.node)),r},addAction(e,t){let n=t?.node;this.nodes.length===0&&(n=o({type:`origin`},this),this.nodes.push(n));let i=`serialize`in e?e:r(e,this);if(n){let e=s({sourceNode:n,destinationNode:i,sourceHandle:null},this);this.edges.push(e)}return this.nodes.push(i),i},addCondition(e,t){let n=t?.node;this.nodes.length===0&&(n=o({type:`origin`},this),this.nodes.push(n));let r=`serialize`in e?e:c(e,this);if(n){if(!r.node)throw Error(`todo no node`);let e=s({sourceNode:n,destinationNode:r.node,sourceHandle:null},this);this.edges.push(e)}return this.conditions.includes(r)||(this.conditions.push(r),r.node&&this.nodes.push(r.node)),r},addConditional(e,t){return this.addCondition(e,t)},addExperience(e,t){let n=t?.node;this.nodes.length===0&&(n=o({type:`origin`},this),this.nodes.push(n));let r=o({type:`experience`,experience:e},this);if(this.nodes.push(r),n){let e=s({sourceNode:n,destinationNode:r,sourceHandle:null},this);this.edges.push(e)}return e},addField(e,t){let n=`serialize`in e?e:l(e);return t&&t.fields.push(n),this.fields.includes(n)||this.fields.push(n),n},serialize(){return t.serialize({id:this.id,key:this.key,component:this.component,name:this.name,initializeOpen:this.initializeOpen,condition:this.condition,targets:this.targets,steps:this.steps.map(e=>t.deserialize(e.serialize())),nodes:this.nodes.map(e=>t.deserialize(e.serialize())),edges:this.edges.map(e=>t.deserialize(e.serialize())),conditions:this.conditions.map(e=>t.deserialize(e.serialize())),fields:this.fields.map(e=>t.deserialize(e.serialize()))})}});exports.createCondition=c,exports.createEdge=s,exports.createExperience=u,exports.createExperiencePlugin=n,exports.createField=l,exports.createNode=o,exports.createStep=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../../../logger-CSTvAyyB.cjs");const e=require("../../../supports-DBzjGaWD.cjs"),t=require("../../../dom-CDrHc_j9.cjs");let n=require("effector");var r=new WeakSet,i=()=>({name:`dom-observer`,setup:e=>{a()&&(r.has(e)||(r.add(e),o(e)))}});function a(){return!(!e.f()||!e.i()||typeof MutationObserver!=`function`||typeof requestAnimationFrame!=`function`)}function o(e){t.r().then(()=>{document.body&&s(e)})}function s(e){let t=(0,n.createEvent)(),r=(0,n.createStore)(new Map).on(t,(e,{id:t,selectors:n})=>{let r=new Map(e);return n.length>0?r.set(t,n):r.delete(t),r}),i=new Map;e.experiences.listStore.watch(e=>{for(let n of e){if(i.has(n.id))continue;let e=n.configStore.watch(e=>{t({id:n.id,selectors:c(e.targetSelectors)})});i.set(n.id,e)}});let a=(0,n.createEffect)(async e=>{await Promise.all(e.map(async e=>{await e.shouldInitialiseFx()&&await e.initialiseFx(void 0)}))});a.fail.watch(({error:e})=>{});let o=(0,n.createEvent)();(0,n.sample)({clock:o,source:{selectorsById:r,experiences:e.experiences.listStore},fn:({selectorsById:e,experiences:t},n)=>t.filter(t=>{let r=e.get(t.id);return r?r.some(e=>l(n,e)):!1}),target:a});let s=[],u,d=()=>{u=void 0;let e=s;s=[],o(e)};new MutationObserver(e=>{let t=!1;for(let n of e)if(n.type===`childList`)for(let e of n.addedNodes)e instanceof Element&&(s.push(e),t=!0);t&&(u??=requestAnimationFrame(d))}).observe(document.body,{childList:!0,subtree:!0})}function c(e){let t=[];for(let n of e){let e=n.selector.trim();e.length>0&&t.push(e)}return t}function l(e,t){for(let n of e)try{if(n.matches(t)||n.querySelector(t)!==null)return!0}catch{return!1}return!1}exports.domObserverPlugin=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../api-CEoqdaqt.cjs"),t=require("../../../plugin-C1fanByQ.cjs");exports.createClientHeaders=e.i,exports.dynamicExperiencesPlugin=t.t,exports.fetchExperienceContent=t.n,exports.fetchProject=t.r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../../../logger-CSTvAyyB.cjs");const e=require("../../../supports-DBzjGaWD.cjs"),t=require("../../../storage-DUw9UJ2h.cjs");let n=require("effector");var r=({storage:r=`local`}={})=>({name:`experience-browser-storage-plugin`,setup:i=>{if(!e.f())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(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../supports-DBzjGaWD.cjs"),t=require("../../../storage-DUw9UJ2h.cjs");let n=require("effector");var r=t.t(`history`,`global`),i=({storage:i=`local`}={})=>({name:`history-browser-storage-plugin`,setup:a=>{if(!e.f())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(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../supports-DBzjGaWD.cjs"),t=require("../../../storage-DUw9UJ2h.cjs");let n=require("effector");var r=t.t(`responses`,`global`);function i(e,t){return Object.fromEntries(Object.entries(e).flatMap(([e,n])=>t.find(t=>t.key===e)?.policies?.doNotStoreValue?[]:[[e,n]]))}var a=({storage:a=`local`}={})=>({name:`responses-browser-storage-plugin`,setup:o=>{if(!e.f())return;let s=a===`local`?t.n:t.r,c=(0,n.createEffect)(async()=>{let e=s.get(r).json();if(!e)return null;o.responses.register(e)}),l=(0,n.attach)({source:{responses:o.responses.getAllStore,fields:o.fields.listStore},effect:({responses:e,fields:t})=>{s.set(r,i(e,t))}});(0,n.sample)({source:o.eventBus,filter:e=>e.type===`load`,target:c}),(0,n.sample)({source:o.responses.getAllStore,target:l})}});exports.responsesBrowserStoragePlugin=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../supports-DBzjGaWD.cjs");let t=require("effector");var n=`picked`;async function r(e){let{storeName:t,version:r=1,keyPath:i=`id`}=e;return new Promise((e,a)=>{let o=indexedDB.open(n,r);o.onupgradeneeded=()=>{let e=o.result;e.objectStoreNames.contains(t)||e.createObjectStore(t,i?{keyPath:i}:void 0)},o.onsuccess=()=>e(o.result),o.onerror=()=>a(Error(o.error?.message))})}async function i(e,t){return new Promise((n,r)=>{let i=e.transaction(t,`readonly`).objectStore(t).getAll();i.onsuccess=()=>n(i.result),i.onerror=()=>r(Error(i.error?.message))})}async function a(e,t,n){return new Promise((r,i)=>{let a=e.transaction(t,`readwrite`).objectStore(t).put(n);a.onsuccess=()=>r(),a.onerror=()=>i(Error(a.error?.message))})}async function o(e,t,n){return new Promise((r,i)=>{let a=e.transaction(t,`readwrite`).objectStore(t).delete(n);a.onsuccess=()=>r(),a.onerror=()=>i(Error(a.error?.message))})}async function s(e,t){return new Promise((n,r)=>{let i=e.transaction(t,`readwrite`).objectStore(t).clear();i.onsuccess=()=>n(),i.onerror=()=>r(Error(i.error?.message))})}var c=`responses`,l={storeName:c,keyPath:`fieldKey`,version:2},u=()=>({name:`responses-indexdb-plugin`,setup:n=>{if(!e.f())return;let u=(0,t.createEffect)(async()=>{let e=(await i(await r(l),c)).reduce((e,{fieldKey:t,value:n})=>(e[t]=n,e),{});await n.responses.commit(e)}),d=(0,t.createEffect)(async e=>{await Promise.allSettled(e.map(async e=>{await a(await r(l),c,e)}))}),f=(0,t.createEffect)(async()=>{await s(await r(l),c)}),p=(0,t.createEffect)(async e=>{await o(await r(l),c,e)});(0,t.sample)({source:n.eventBus,filter:e=>e.type===`load`,target:u}),(0,t.sample)({clock:n.responses.listStore,source:{responses:n.responses.listStore,fields:n.fields.listStore},fn:({responses:e,fields:t})=>{let n=new Set(t.filter(e=>!e.policies?.doNotStoreValue).map(e=>e.key));return e.filter(e=>n.has(e.fieldKey)).map(e=>({fieldKey:e.fieldKey,value:e.value}))},target:d}),(0,t.sample)({clock:n.responses.clearAll,target:f}),(0,t.sample)({clock:n.responses.clear,target:p})}});exports.responsesIndexedDBPlugin=u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../object-CIkt7Fkr.cjs"),t=require("../../../supports-DBzjGaWD.cjs");var n=t.p,r,i=e=>({name:`single-page-app`,setup:e=>{t.f()&&a(()=>{requestAnimationFrame(()=>{e.start()})})}});function a(i){if(n.addEventListener(`popstate`,()=>{let e=n.location.href,t=r;r=e,t!==e&&i()}),!t.a())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(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../supports-DBzjGaWD.cjs");var t=()=>({name:`web-components`,setup:t=>{if(!e.f()||!e.d())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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../supports-DBzjGaWD.cjs");var t=()=>({name:`window`,setup:t=>{e.f()&&(window.Picked=t)}});exports.windowObjectPlugin=t;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-qBWC_Wr2.cjs"),t=require("../../plugin-C1fanByQ.cjs");let n=require("effector");var r=1e4;function i(e){if(e?.location!==void 0)return{location:e.location}}function a(t,n){return t.nodes.filter(e.u).some(e=>n.get(e.stepId)===!0)}async function o(n,o){let{projectConfig:s}=o,c=n.session.store.getState().id;n.conditionResults.reset(),t.i(n,s,{isPreview:!1,sessionId:c});let l=i(o.attributes),u=o.timeoutMs??r,d=new Map(s.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),f=[];for(let t of s.experiences)await e.o(n,{condition:t.condition},{context:l})&&f.push(t);let p=new Map;for(let e of f){if(!a(e,d))continue;let r=o.getContent?await o.getContent({id:e.id,key:e.key},{previewToken:o.previewToken}):await t.n(n.apiUrl,n.projectId,e.id,{previewToken:o.previewToken,signal:AbortSignal.timeout(u)});if(r)for(let e of r.content)p.set(e.id,e)}return{versionId:s.versionId,projectConfig:s,content:Array.from(p.values()),conditionResults:n.conditionResults.store.getState()}}function s(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:t=>e(t),reject:e=>t(e)}}function c(t,r){let{promise:i,resolve:a}=s(),o=(0,n.createEvent)(),c=(0,n.createEvent)(),l=(0,n.createEvent)(),u=(0,n.createEvent)(),d=(0,n.createEvent)(),f=t.experiences.listStore.map(n=>n.map(n=>e.t({client:t,experience:n}))),p=(0,n.createStore)({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=(0,n.createEffect)(async e=>{let r=(0,n.attach)({source:e.experience.componentStore,effect:async(n,r)=>{let i=e.availableRenderers[r];return n&&i?.isValidComponent(n.component)?{rendered:await i.render(n.component,t,e.experience),rendererIndex:r}:null}}),i=e.startRendererIndex??0;for(let t=i;t<e.availableRenderers.length;t++){let e=await r(t);if(e)return e}return null}),h=(0,n.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(o),(0,n.sample)({clock:o,target:c}),(0,n.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:r,startRendererIndex:0}),target:h}),(0,n.sample)({clock:h.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),(0,n.sample)({clock:l,target:c}),(0,n.sample)({clock:h.doneData,filter:e=>e===null,target:d}),(0,n.sample)({clock:d,target:c}),(0,n.sample)({clock:[c,d,l],source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex>=e.length,target:u}),(0,n.sample)({clock:u,target:(0,n.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}})}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=t.i,exports.render=c,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=o;
|
package/dist/docs/api/index.md
CHANGED
|
@@ -6,6 +6,10 @@ layout: docs
|
|
|
6
6
|
|
|
7
7
|
This guide walks you through your first interactions with the Picked GraphQL API, from sending a simple ping to making authenticated queries and mutations.
|
|
8
8
|
|
|
9
|
+
:::note
|
|
10
|
+
This reference covers the authenticated GraphQL management API. To serve your published config and page content to your app, use the public, read-only [Delivery API](/delivery-api) instead.
|
|
11
|
+
:::
|
|
12
|
+
|
|
9
13
|
## Playground
|
|
10
14
|
|
|
11
15
|
Explore the API and run queries interactively in the [GraphQL Playground](https://api.picked.app/api/graphql).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: docs
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import { Screenshot } from '../../../components/Screenshot'
|
|
6
|
+
|
|
7
|
+
# Asset Library
|
|
8
|
+
|
|
9
|
+
The Asset Library stores the files your content references: images, video, documents, and HTML.
|
|
10
|
+
|
|
11
|
+
<Screenshot
|
|
12
|
+
route="/{orgSlug}/{projectId}/assets"
|
|
13
|
+
alt="The asset library on the Picked dashboard"
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
## Upload and manage assets
|
|
17
|
+
|
|
18
|
+
The Asset Library is a project-level store. Upload a file, then reference it from any Content Entry in the project.
|
|
19
|
+
|
|
20
|
+
- **Size limit:** 50 MB per file.
|
|
21
|
+
- **Allowed types:** images (PNG, JPEG, WebP, AVIF, GIF, SVG), video (MP4, WebM), common document formats, and HTML (`text/html`).
|
|
22
|
+
|
|
23
|
+
Uploads outside the allowed types or over the size limit are rejected at upload time.
|
|
24
|
+
|
|
25
|
+
## Reference an asset from a field
|
|
26
|
+
|
|
27
|
+
Two field types point at library items:
|
|
28
|
+
|
|
29
|
+
- An **Asset** field references an image, video, or document.
|
|
30
|
+
- An **HTML asset** field references an uploaded `.html` file.
|
|
31
|
+
|
|
32
|
+
Add the field to a [layout](/content/layouts), then pick a library item when filling in the [Content Entry](/content/content-entries).
|
|
33
|
+
|
|
34
|
+
## HTML assets
|
|
35
|
+
|
|
36
|
+
Upload a `.html` file and reference it from an **HTML asset** field. On upload, Picked runs an advisory scan that guides you but never blocks the upload. It surfaces performance, SEO, and accessibility findings so you can improve the file before publishing:
|
|
37
|
+
|
|
38
|
+
- **File size:** a warning at 100 KB and a stronger one at 250 KB.
|
|
39
|
+
- **Inline images:** a note when inline base64 image data adds roughly 50 KB or more.
|
|
40
|
+
- **Image dimensions:** images missing an explicit width or height, which risk layout shift.
|
|
41
|
+
- **Lazy loading:** images without `loading="lazy"`.
|
|
42
|
+
- **Link safety:** external links with `target="_blank"` but no `rel="noopener"`.
|
|
43
|
+
- **Link SEO:** external links without `rel="nofollow"`.
|
|
44
|
+
- **Accessibility:** an axe-core pass covering alt text, heading order, contrast, and more.
|
|
45
|
+
|
|
46
|
+
Every finding is advisory. You can always upload the file as is.
|
|
47
|
+
|
|
48
|
+
## How assets are served
|
|
49
|
+
|
|
50
|
+
Assets are served from a sandboxed storage origin, separate from your app's trusted origin. Serving HTML from its own origin means an uploaded document executes in isolation and cannot reach the page that embeds it. When an [Experience Content](/delivery-api/experience-content) response includes an HTML asset, its content is inlined into the response, so the SDK renders it without a second storage fetch.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: docs
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import { Screenshot } from '../../../components/Screenshot'
|
|
6
|
+
|
|
7
|
+
# Content Entries
|
|
8
|
+
|
|
9
|
+
A Content Entry is an instance of a layout filled with real data. A Page renders one entry; a Flow Step can render one too.
|
|
10
|
+
|
|
11
|
+
<Screenshot
|
|
12
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/content"
|
|
13
|
+
alt="The content entries list on the Picked dashboard"
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
## What a content entry is
|
|
17
|
+
|
|
18
|
+
A Content Entry is an instance of a layout's schema. The [layout](/content/layouts) defines the fields; the entry holds the actual values. One layout can back many entries, each with its own data.
|
|
19
|
+
|
|
20
|
+
## How entries bind to pages and steps
|
|
21
|
+
|
|
22
|
+
A [Page](/content/pages) has a single Step, and that Step links to its entry through the layout content link. A Flow [Step](/steps) backed by a Step Layout binds an entry the same way. When the SDK renders the Page or Step, it resolves the linked entry and hands its data to your component.
|
|
23
|
+
|
|
24
|
+
## Edit entry data
|
|
25
|
+
|
|
26
|
+
The entry editor renders a form driven by the layout schema: one input per field, in the order the schema defines. Repeatable fields appear as sortable lists you can add to and reorder. Group fields nest their inputs under a single heading.
|
|
27
|
+
|
|
28
|
+
## Validation
|
|
29
|
+
|
|
30
|
+
Invalid data surfaces as per-field errors using a JSON-path style that points at the exact location in the entry, for example `sections[0].data.title`. Fix every error before publishing: the published surface only serves valid content.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: docs
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import { Screenshot } from '../../../components/Screenshot'
|
|
6
|
+
|
|
7
|
+
# Page & Step Layouts
|
|
8
|
+
|
|
9
|
+
Layouts are reusable JSON schemas. Page Layouts back standalone Pages; Step Layouts back individual Steps inside a Flow.
|
|
10
|
+
|
|
11
|
+
<Screenshot
|
|
12
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/models"
|
|
13
|
+
alt="The layouts list in the schema builder on the Picked dashboard"
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
## What a layout is
|
|
17
|
+
|
|
18
|
+
A layout is a reusable schema that defines the fields a piece of content can hold. It holds no data itself: a [Content Entry](/content/content-entries) instantiates the layout and fills it in. The dashboard groups both kinds of layout under **Models**.
|
|
19
|
+
|
|
20
|
+
## Page layouts vs step layouts
|
|
21
|
+
|
|
22
|
+
A layout has a fixed category that decides what it backs:
|
|
23
|
+
|
|
24
|
+
| Layout | Backs | Used by |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| **Page Layout** | A standalone [Page](/content/pages). | The SDK renders the bound entry on your server. |
|
|
27
|
+
| **Step Layout** | A single [Step](/steps) inside a Flow. | The Step renders the bound entry in the browser. |
|
|
28
|
+
|
|
29
|
+
## Create a layout
|
|
30
|
+
|
|
31
|
+
1. Open your workspace and click **Models** in the sidebar.
|
|
32
|
+
2. Click **New Model** and choose the category, **Page Layout** or **Step Layout**.
|
|
33
|
+
3. Enter a name and a **Key**. The Key is a unique, stable identifier used in SDK code and API references.
|
|
34
|
+
4. Add fields (see below) and save.
|
|
35
|
+
|
|
36
|
+
The category is fixed at creation and cannot be changed later.
|
|
37
|
+
|
|
38
|
+
## Field types
|
|
39
|
+
|
|
40
|
+
A layout is built from fields. Each field has a type that decides its editor and the shape of the value it stores.
|
|
41
|
+
|
|
42
|
+
| Type | Stores | Use it for |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| **Single-line text** | A short string. | Titles, labels, short headlines. |
|
|
45
|
+
| **Multi-line text** | A longer plain string. | Descriptions, paragraphs without formatting. |
|
|
46
|
+
| **Markdown** | A Markdown string. | Rich body copy with formatting. |
|
|
47
|
+
| **Slug** | A URL-safe string. | Path segments, identifiers. |
|
|
48
|
+
| **Number** | A numeric value. | Prices, counts, ratings. |
|
|
49
|
+
| **Boolean** | A true/false value. | Toggles, flags. |
|
|
50
|
+
| **Date** | A date value. | Publish dates, deadlines. |
|
|
51
|
+
| **Color** | A color value. | Theme accents, swatches. |
|
|
52
|
+
| **JSON** | An arbitrary JSON value. | Structured data with no dedicated editor. |
|
|
53
|
+
| **Group** | A nested object of fields. | Grouping related fields together. |
|
|
54
|
+
| **Section** | An embedded [Section](/content/sections) schema. | Reusing a shared schema fragment. |
|
|
55
|
+
| **Asset** | A reference to an [Asset Library](/content/asset-library) item. | Images, video, documents. |
|
|
56
|
+
| **HTML asset** | A reference to an uploaded `.html` file. | Pre-built HTML embedded into content. |
|
|
57
|
+
|
|
58
|
+
## Repeatable and grouped fields
|
|
59
|
+
|
|
60
|
+
Any field can be made **repeatable**, which renders as a sortable list of values rather than a single value. Use it for galleries, feature lists, or any collection.
|
|
61
|
+
|
|
62
|
+
A **Group** field nests a set of fields under one key, producing a structured object. Combine repeatable with a group to model a list of objects, such as a list of feature cards.
|
|
63
|
+
|
|
64
|
+
## Composing with sections
|
|
65
|
+
|
|
66
|
+
A **Section** field embeds a reusable [Section](/content/sections) schema inside the layout. Define a common structure, such as a hero or a feature list, once as a Section, then reference it from any Page or Step Layout.
|
|
67
|
+
|
|
68
|
+
## Changing a schema
|
|
69
|
+
|
|
70
|
+
Editing a layout's schema can leave existing Content Entries out of date. After a schema change, revalidate the entries that use the layout and fix any per-field errors before publishing.
|