@picked/client 0.0.1-dev.1786601464574 → 0.0.1-dev.1787019239195

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/{api-DS7fA9kj.cjs → api-TWnRLh3X.cjs} +1 -1
  2. package/dist/{api-C8B96Kwv.js → api-uttjU_Tg.js} +1 -1
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  5. package/dist/cjs/server/index.js +1 -1
  6. package/dist/docs/_root.css +101 -0
  7. package/dist/docs/how-to/analytics/index.md +2 -0
  8. package/dist/docs/how-to/authenticate-the-cli.md +15 -13
  9. package/dist/docs/how-to/create-and-revoke-an-api-key.md +7 -2
  10. package/dist/docs/how-to/debug-with-the-chrome-extension.md +1 -1
  11. package/dist/docs/how-to/install-the-sdk.md +30 -12
  12. package/dist/docs/how-to/install-the-vite-plugin.md +22 -9
  13. package/dist/docs/how-to/read-a-feature-flag.md +1 -1
  14. package/dist/docs/how-to/register-a-component.md +2 -2
  15. package/dist/docs/how-to/register-an-action-handler.md +1 -1
  16. package/dist/docs/how-to/server-render-a-page.md +1 -1
  17. package/dist/docs/how-to/write-a-predicate.md +1 -1
  18. package/dist/docs/reference/dashboard/api-keys.mdx +5 -4
  19. package/dist/docs/reference/pickedql/dimensions.md +10 -0
  20. package/dist/docs/reference/sdk/analytics-events.md +445 -0
  21. package/dist/docs/reference/sdk/content.md +1 -1
  22. package/dist/docs/reference/sdk/features.md +1 -1
  23. package/dist/docs/reference/sdk/plugins/dynamic-experiences.md +1 -1
  24. package/dist/docs/reference/sdk/plugins/window-object.md +1 -1
  25. package/dist/docs/reference/sdk/ssr/serialize.md +1 -1
  26. package/dist/docs/reference/sdk/type-generation.md +58 -17
  27. package/dist/docs/reference/tools/cli.md +16 -9
  28. package/dist/docs/reference/tools/vite-plugin.md +32 -6
  29. package/dist/docs/tutorials/first-experience.mdx +4 -4
  30. package/dist/docs/tutorials/first-server-rendered-page.mdx +3 -3
  31. package/dist/esm/index.js +2 -2
  32. package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
  33. package/dist/esm/server/index.js +1 -1
  34. package/dist/{plugin-C8hWW3ed.js → plugin-Bb2fJVFr.js} +1 -1
  35. package/dist/{plugin-Dtg2sOad.cjs → plugin-hFQIiHOB.cjs} +1 -1
  36. package/dist/{provider-BEpRDCyr.js → provider-B8vTLrFT.js} +1 -1
  37. package/dist/{provider-ixdOyYTA.cjs → provider-DZEDUlIk.cjs} +1 -1
  38. package/dist/version-CfTz7TK0.cjs +1 -0
  39. package/dist/{version-IAAIvoH9.js → version-DjCWhJD5.js} +1 -1
  40. package/package.json +2 -2
  41. package/dist/version-BLzNWQ-j.cjs +0 -1
@@ -1 +1 @@
1
- require("./logger-CSTvAyyB.cjs");const e=require("./version-BLzNWQ-j.cjs");let t=require("@picked/delivery-api-client");function n(n){return{...n,headers:{...(0,t.createClientHeaders)(`sdk`,e.t()),...n?.headers},onWarn:(e,t)=>{}}}async function r(e,r,i){return(0,t.fetchProject)(e,r,n(i))}async function i(e,r,i,a){return(0,t.fetchExperienceContent)(e,r,i,n(a))}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
1
+ require("./logger-CSTvAyyB.cjs");const e=require("./version-CfTz7TK0.cjs");let t=require("@picked/delivery-api-client");function n(n){return{...n,headers:{...(0,t.createClientHeaders)(`sdk`,e.t()),...n?.headers},onWarn:(e,t)=>{}}}async function r(e,r,i){return(0,t.fetchProject)(e,r,n(i))}async function i(e,r,i,a){return(0,t.fetchExperienceContent)(e,r,i,n(a))}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
@@ -1,5 +1,5 @@
1
1
  import "./logger-DMN6TxJJ.js";
2
- import { t as e } from "./version-IAAIvoH9.js";
2
+ import { t as e } from "./version-DjCWhJD5.js";
3
3
  import { createClientHeaders as t, fetchExperienceContent as n, fetchProject as r } from "@picked/delivery-api-client";
4
4
  //#region src/data-source/api.ts
5
5
  function i(n) {
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
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-DlLH3FxV.cjs"),a=require("../experience-instance-Dej3P1sE.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../id-Js-62re-.cjs"),c=require("../version-BLzNWQ-j.cjs"),l=require("../inert-script-report-ijRHPtcY.cjs");let u=require("effector"),d=require("@withease/factories"),f=require("@picked/delivery-api-client");var p=(0,u.createDomain)(`experience`),m=(0,d.createFactory)(({client:e,experience:n})=>{let r=p.store(n),o=(0,u.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,u.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),l=(0,u.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}}),d=n.actions??[],f,m=(0,u.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(f,t,r):e.experienceInstances.spawn(f,t)})}}),h=(0,u.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),g=(0,u.attach)({source:h,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||!t.n(s)||await t.t(e,s)===!0}}),_=(0,u.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),v=(0,u.createEvent)(),y=(0,u.createEvent)(),b=p.createStore(void 0,{skipVoid:!1}).on(v,(e,t)=>t).on(y,(e,t)=>t);return(0,u.sample)({clock:v,target:g}),(0,u.sample)({clock:g.doneData,source:b,filter:(e,t)=>t,fn:e=>e,target:m}),(0,u.sample)({clock:g.doneData,filter:Boolean,target:_}),(0,u.sample)({clock:y,source:b,fn:e=>e,target:m}),(0,u.sample)({clock:y,target:_}),f={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:l,componentStore:c,actions:d,merge:o.merge,initialiseFx:m,shouldInitialiseFx:g,initialiseRequested:v,initialiseDirectly:y,prepareExperienceContentFx:_},f});function h(e){return(0,d.invoke)(m,e)}var g=(0,d.createFactory)(({client:e})=>{let t=p.store({}),n=(0,u.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,u.createEvent)(),i=(0,u.createEffect)(t=>{n.register(h({client:e,experience:t}))});(0,u.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,u.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,u.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,u.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}let a=`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}};await c(a)}}),listStore:a,initialiseExperiencesFx:(0,u.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function _(e){return(0,d.invoke)(g,e)}var v=async e=>{await e.experiences.initialiseExperiencesFx()};function y(e){return(0,u.createEffect)(async()=>{await e()})}var b=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},x=(0,u.createDomain)(`component`),S=(0,d.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function C(e){return(0,d.invoke)(S,e)}var w=(0,d.createFactory)(({client:e})=>{let t=x.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,u.createEvent)();(0,u.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,u.sample)({clock:i,fn:({name:t,component:n})=>C({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 T(e){return(0,d.invoke)(w,e)}var E=(e,t,n)=>{n.register({name:e,component:t})},D=(0,u.createDomain)(`framework`),O=(0,d.createFactory)(e=>{let t=D.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,u.createEvent)();(0,u.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,u.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 ee(e){return(0,d.invoke)(O,e)}var k=(e,t)=>{t.register({name:e.name,framework:e})},A=(0,d.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,u.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function te(e){return(0,d.invoke)(A,e)}function ne(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 re(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function P(e){if(ne(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function F(e){return`${e}`}var ie={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>P(e)>P(t),">=":(e,t)=>P(e)>=P(t),"<":(e,t,n)=>{let r=P(e),i=P(t);if(n===void 0)return r<i;let a=P(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=P(e),i=P(t);if(n===void 0)return r<=i;let a=P(n);return r<=i&&i<=a},"!!":async e=>await L(e),"!":async e=>!await L(e),"%":(e,t)=>P(e)%P(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(F(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(F).join(``),substr:(e,t,n)=>{let r=F(e),i=P(t);if(n===void 0)return r.substr(i);let a=P(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)=>P(e)+P(t),0),"*":(...e)=>e.reduce((e,t)=>P(e)*P(t),1),"-":(e,t)=>{let n=P(e);return t===void 0?-n:n-P(t)},"/":(e,t)=>P(e)/P(t),min:(...e)=>Math.min(...e.map(P)),max:(...e)=>Math.max(...e.map(P)),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=F(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 I({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await I({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=P(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(F(t))},throw(e){throw Error(F(e))}};async function I(e,t){if(!e)return e;if(N(e))return I(await e,t);if(M(e))return Promise.all(e.map(e=>I(e,t)));if(!re(e))return e;let n=ae(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 L(await I(r[e],t)))return I(r[e+1],t);return r.length%2==1?I(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await I(n,t),!await L(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await I(n,t),await L(e))return e;return e}case`map`:{let e=await I(r[0],t);return M(e)?await Promise.all(e.map(e=>I(r[1],e))):[]}case`filter`:{let e=await I(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await L(await I(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await I(r[0],t);if(!M(e))return r.length>2?await I(r[2],t):null;let n=r[1],i=r.length>2?await I(r[2],t):null;for(let t of e)i=await I(n,{current:t,accumulator:i});return i}case`all`:{let e=await I(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await L(await I(r[1],t)))return!1;return!0}case`some`:{let e=await I(r[0],t);if(!M(e))return!1;for(let t of e)if(await L(await I(r[1],t)))return!0;return!1}case`none`:{let e=await I(r[0],t);if(!M(e))return!0;for(let t of e)if(await L(await I(r[1],t)))return!1;return!0}case`catch`:try{return await I(r[0],t)}catch(e){return re(e)?await I(e,t):r[1]?await I(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>I(e,t))),a=n?ie[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function L(e){return N(e)?L(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ae(e){return Object.keys(e)[0]}function R(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)&&await I(a.logic,{...t,conditions:R(e,t,new Set(n).add(i))})===!0}})}var oe=(0,d.createFactory)(({client:e})=>(0,u.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 I(o,{...d,conditions:R(a,d,new Set)})}}));function se(e){return(0,d.invoke)(oe,e)}var ce=6e3,le=o.t(`last_ping`,`global`),ue=async e=>{try{let t=Date.now(),n=o.n.get(le),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ce)return!0;let i={},a=document.getElementById(`picked_script`)?.dataset.verceltoken;a&&(i[`x-vercel-protection-bypass`]=a);let s=await(0,f.sendPing)(e.apiUrl,{projectId:e.projectId,path:window.location.pathname},{headers:i});return s&&n.set(t),s}catch{return!1}},z=(0,u.createDomain)(`lifecycle`),de=(0,d.createFactory)(({client:e})=>{let n=z.store(!1),a=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),o=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),s=z.store(`idle`),c=z.store([]),l=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),d=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),f=(0,u.createEvent)(),p=(0,u.createEvent)(),m=(0,u.createEvent)(),h=(0,u.createEvent)(),g=(0,u.createEvent)(),_=(0,u.createEvent)();c.on(h,(e,t)=>[...e,t]),l.on(g,(e,t)=>t),d.on(_,(e,t)=>t),n.on(p,()=>!0);let y=(0,u.createEffect)(()=>{ue(e)}),b=(0,u.createEffect)(async()=>{await i.r()}),x=(0,u.createEffect)(async()=>{await v(e)}),S=(0,u.attach)({effect:x}),C=(0,u.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,u.attach)({source:l,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,u.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,u.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,u.sample)({clock:E,fn:()=>`starting`,target:s}),(0,u.sample)({clock:E,target:y}),(0,u.sample)({clock:E,target:C}),(0,u.sample)({clock:E,target:b}),(0,u.sample)({clock:C.done,target:w}),(0,u.sample)({clock:w.doneData,target:a}),(0,u.sample)({clock:T.doneData,target:o}),(0,u.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,u.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,u.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,u.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,u.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,u.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,u.createStore)(!1).on(b.done,()=>!0),O=(0,u.createStore)(!1).on(m,()=>!0),ee=(0,u.createStore)(!1).on(S.done,()=>!0),k=(0,u.combine)(a,o,(e,t)=>e===!0&&t===!0);(0,u.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:x});let A=(0,u.combine)(D,O,k,(e,t,n)=>e&&t&&n);(0,u.sample)({clock:A,filter:e=>e,fn:()=>void 0,target:S});let te=(0,u.combine)(D,O,k,ee,(e,t,n,r)=>e&&t&&(!n||r));return(0,u.sample)({clock:te,filter:e=>e,fn:()=>void 0,target:p}),(0,u.sample)({clock:p,fn:()=>`ready`,target:s}),(0,u.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,u.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,u.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:g,setCondition:_}});function fe(e){return(0,d.invoke)(de,e)}var pe=(0,u.createDomain)(`predicate`),me=(0,d.createFactory)(({client:e})=>{let t=pe.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,u.createEvent)();(0,u.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,u.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,u.createStore)(()=>void 0,{skipVoid:!1}),r=(0,u.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,u.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,u.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function he(e){return(0,d.invoke)(me,e)}var ge=(e,t,n)=>{n.register({name:e,predicate:t})},_e=(0,u.createDomain)(`feature`);function B(e){return e?.enabled===!1}function ve(e){return e===`true`||e!==`false`&&e}var ye=(0,d.createFactory)(({client:e})=>{let t=_e.store({}),r=_e.store([]),i=(0,u.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,u.createEvent)();(0,u.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,u.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,u.createEffect)(async({id:e,key:t,storage:n=`local`,enabled:r})=>{if(r===!1)return null;let i=o.t(`feature:${e}:${t}`,`global`),a=(n===`session`?o.r:o.n).get(i).text();return a?{id:e,key:t,bucket:ve(a),storage:n}:null}),c=(0,u.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)}),l=new Map,d=(0,u.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`);if(B(o.feature))return{id:o.id,bucket:!1,key:i,storage:o.feature.storage};let s=l.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();l.set(`${n}:${i}`,c);let u=await c;return{id:o.id,bucket:u,key:i,storage:o.feature.storage}}});(0,u.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage,enabled:n.feature.enabled}},target:s}),(0,u.sample)({source:t,clock:d.doneData,filter:(e,t)=>!B(e[t.id]?.feature),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,u.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,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,u.sample)({clock:d.doneData,source:{resolvedFeatures:r,allFeatures:t},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!B(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,u.sample)({clock:[s.doneData,d.doneData],source:{resolvedFeatures:r,allFeatures:t},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||B(t[n.id]?.feature)||e.some(e=>e.id===n.id&&e.key===n.key)?e:[...e,n],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}let m=new Map,h=new Map,g=new Map;function _(e){let t=m.get(e);if(t)return t;let n=p(e);return m.set(e,n),n}function v(e){return t.map(t=>t[e],{skipVoid:!1})}function y(e){let t=(0,u.createStore)(async()=>void 0,{skipVoid:!1}),n=_(e),r=(0,u.attach)({source:n,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,u.sample)({clock:n,target:r}),(0,u.sample)({clock:r.doneData,filter:e=>e!==void 0,target:t}),r(),t}function b(e){let t=h.get(e);if(t)return t;let n=y(e);return h.set(e,n),n}function x(e){let t=b(e),n=(0,u.createStore)(void 0,{skipVoid:!1}),r=(0,u.attach)({source:t,mapParams:(e,t)=>t,effect:(0,u.createEffect)(async e=>await e())});return(0,u.sample)({clock:r.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:n}),(0,u.sample)({clock:t,target:r}),r(),n}function S(e){let t=g.get(e);if(t)return t;let n=x(e);return g.set(e,n),n}return{register:a,getById:_,getByName:v,listStore:f,getEvokableFeature:b,getFeatureResult:S}});function be(e){return(0,d.invoke)(ye,e)}var xe=(e,t,n)=>{n.register({id:e,feature:t})},V=(0,u.createDomain)(`history`);function H(e,t){return{id:s.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var Se=(0,d.createFactory)(()=>{let e=V.store({entries:[]}),t=V.event(),n=V.event(),r=V.event(),i=V.event();e.on(t,(e,t)=>({entries:[...e.entries,H(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),H(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 Ce(){return(0,d.invoke)(Se)}var we=0,Te=e=>{let t=(0,u.createStore)([]);return t.on(e,(e,t)=>[...e,{id:we++,at:new Date,payload:t}]),t},Ee=(0,u.createDomain)(`field`),De=(0,d.createFactory)(()=>{let e=Ee.store({}),t=(0,u.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 Oe(){return(0,d.invoke)(De)}var ke=(0,u.createDomain)(`step`),Ae=(0,d.createFactory)(()=>{let e=ke.store({}),t=(0,u.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 je(){return(0,d.invoke)(Ae)}function Me(e,t){t.register(e)}var Ne=(0,u.createDomain)(`content`),Pe=(0,d.createFactory)(()=>{let e=Ne.store({}),t=(0,u.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}},patch(e,t){let n=e[t.id];if(!n)return e;let r=t.apply(n.data);return r===n.data?e:{...e,[t.id]:{...n,data:r}}}});function n(e){t.register({content:e})}function r(e,n){t.patch({id:e,apply:n})}let i=e.map(e=>Object.values(e));function a(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,patch:r,getById:a,listStore:i,indexStore:e}});function Fe(){return(0,d.invoke)(Pe)}function Ie(e,t){t.register(e)}var Le=(0,u.createDomain)(`action`),Re=(0,d.createFactory)(({client:e})=>{let t=Le.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,u.createEvent)();(0,u.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,u.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,u.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,u.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,u.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,u.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function ze(e){return(0,d.invoke)(Re,e)}var Be=(e,t,n)=>{n.register({key:e,action:t})};function U(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function W(e){return e===null||e===``||Array.isArray(e)&&!e.length}function Ve(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function G(e){try{return JSON.stringify(e),!0}catch{return!1}}function He(e,t){return t.find(t=>t.key===e)??null}function Ue(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function We(e,t){if(e.type!==`object`||W(t))return null;if(e.multiple){if(!Array.isArray(t))return U(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return U(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!G(n))return U(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)?U(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?U(e,t,`This field expects an object value`,`Field expects an object value.`):G(t)?null:U(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Ge(e,t){if(W(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:U(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=>!Ve(e)||e===null?!1:r.includes(e))?null:U(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Ke(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!W(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return U(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return U(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&W(r)?U(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?U(n,r,`This field expects a single response`,`Field expects a single response.`):null}var qe=(0,u.createDomain)(`response`),Je=(0,d.createFactory)(({client:e})=>{let n=qe.store({}),r=(0,u.createEvent)(),i=(0,u.createEvent)(),a=(0,u.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,u.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=He(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=Ue(o,n),l=await Ke(s,o,c,a);if(l){r.push(l);return}let u=We(o,c);if(u){r.push(u);return}let d=Ge(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function l(e){return c(e)}let d=(0,u.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,u.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,u.sample)({clock:r,target:a.clearAll}),(0,u.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:l,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Ye(e){return(0,d.invoke)(Je,e)}var Xe=(0,u.createDomain)(`condition`),Ze=(0,d.createFactory)(()=>{let e=Xe.store({}),t=(0,u.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 Qe(){return(0,d.invoke)(Ze)}function $e(){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 K(){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 q=o.t(`session`,`global`);function et(){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 tt(){if(!r.s())return null;let e=o.n.get(q);if(!e.isSet())return null;try{return e.json()}catch{return null}}var nt=(0,d.createFactory)(()=>{let e=tt(),t={id:e?.id??et()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,u.createStore)(t),i=(0,u.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}}),a=(0,u.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(q).set(e)}catch{}}});return(0,u.sample)({source:n,target:a}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function rt(){return(0,d.invoke)(nt,void 0)}function J(){if(r.f())return globalThis.window.pickedConfig}function it(){if(r.f())return J()?.projectId}function at(){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 ot(e){if(e.projectId)return e.projectId;let t=it();if(t)return t;let n=at();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-DlLH3FxV.cjs"),a=require("../experience-instance-Dej3P1sE.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../id-Js-62re-.cjs"),c=require("../version-CfTz7TK0.cjs"),l=require("../inert-script-report-ijRHPtcY.cjs");let u=require("effector"),d=require("@withease/factories"),f=require("@picked/delivery-api-client");var p=(0,u.createDomain)(`experience`),m=(0,d.createFactory)(({client:e,experience:n})=>{let r=p.store(n),o=(0,u.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,u.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),l=(0,u.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}}),d=n.actions??[],f,m=(0,u.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(f,t,r):e.experienceInstances.spawn(f,t)})}}),h=(0,u.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),g=(0,u.attach)({source:h,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||!t.n(s)||await t.t(e,s)===!0}}),_=(0,u.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),v=(0,u.createEvent)(),y=(0,u.createEvent)(),b=p.createStore(void 0,{skipVoid:!1}).on(v,(e,t)=>t).on(y,(e,t)=>t);return(0,u.sample)({clock:v,target:g}),(0,u.sample)({clock:g.doneData,source:b,filter:(e,t)=>t,fn:e=>e,target:m}),(0,u.sample)({clock:g.doneData,filter:Boolean,target:_}),(0,u.sample)({clock:y,source:b,fn:e=>e,target:m}),(0,u.sample)({clock:y,target:_}),f={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:l,componentStore:c,actions:d,merge:o.merge,initialiseFx:m,shouldInitialiseFx:g,initialiseRequested:v,initialiseDirectly:y,prepareExperienceContentFx:_},f});function h(e){return(0,d.invoke)(m,e)}var g=(0,d.createFactory)(({client:e})=>{let t=p.store({}),n=(0,u.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,u.createEvent)(),i=(0,u.createEffect)(t=>{n.register(h({client:e,experience:t}))});(0,u.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,u.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,u.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,u.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}let a=`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}};await c(a)}}),listStore:a,initialiseExperiencesFx:(0,u.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function _(e){return(0,d.invoke)(g,e)}var v=async e=>{await e.experiences.initialiseExperiencesFx()};function y(e){return(0,u.createEffect)(async()=>{await e()})}var b=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},x=(0,u.createDomain)(`component`),S=(0,d.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function C(e){return(0,d.invoke)(S,e)}var w=(0,d.createFactory)(({client:e})=>{let t=x.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,u.createEvent)();(0,u.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,u.sample)({clock:i,fn:({name:t,component:n})=>C({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 T(e){return(0,d.invoke)(w,e)}var E=(e,t,n)=>{n.register({name:e,component:t})},D=(0,u.createDomain)(`framework`),O=(0,d.createFactory)(e=>{let t=D.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,u.createEvent)();(0,u.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,u.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 ee(e){return(0,d.invoke)(O,e)}var k=(e,t)=>{t.register({name:e.name,framework:e})},A=(0,d.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,u.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function te(e){return(0,d.invoke)(A,e)}function ne(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 re(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function P(e){if(ne(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function F(e){return`${e}`}var ie={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>P(e)>P(t),">=":(e,t)=>P(e)>=P(t),"<":(e,t,n)=>{let r=P(e),i=P(t);if(n===void 0)return r<i;let a=P(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=P(e),i=P(t);if(n===void 0)return r<=i;let a=P(n);return r<=i&&i<=a},"!!":async e=>await L(e),"!":async e=>!await L(e),"%":(e,t)=>P(e)%P(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(F(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(F).join(``),substr:(e,t,n)=>{let r=F(e),i=P(t);if(n===void 0)return r.substr(i);let a=P(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)=>P(e)+P(t),0),"*":(...e)=>e.reduce((e,t)=>P(e)*P(t),1),"-":(e,t)=>{let n=P(e);return t===void 0?-n:n-P(t)},"/":(e,t)=>P(e)/P(t),min:(...e)=>Math.min(...e.map(P)),max:(...e)=>Math.max(...e.map(P)),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=F(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 I({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await I({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=P(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(F(t))},throw(e){throw Error(F(e))}};async function I(e,t){if(!e)return e;if(N(e))return I(await e,t);if(M(e))return Promise.all(e.map(e=>I(e,t)));if(!re(e))return e;let n=ae(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 L(await I(r[e],t)))return I(r[e+1],t);return r.length%2==1?I(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await I(n,t),!await L(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await I(n,t),await L(e))return e;return e}case`map`:{let e=await I(r[0],t);return M(e)?await Promise.all(e.map(e=>I(r[1],e))):[]}case`filter`:{let e=await I(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await L(await I(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await I(r[0],t);if(!M(e))return r.length>2?await I(r[2],t):null;let n=r[1],i=r.length>2?await I(r[2],t):null;for(let t of e)i=await I(n,{current:t,accumulator:i});return i}case`all`:{let e=await I(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await L(await I(r[1],t)))return!1;return!0}case`some`:{let e=await I(r[0],t);if(!M(e))return!1;for(let t of e)if(await L(await I(r[1],t)))return!0;return!1}case`none`:{let e=await I(r[0],t);if(!M(e))return!0;for(let t of e)if(await L(await I(r[1],t)))return!1;return!0}case`catch`:try{return await I(r[0],t)}catch(e){return re(e)?await I(e,t):r[1]?await I(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>I(e,t))),a=n?ie[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function L(e){return N(e)?L(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ae(e){return Object.keys(e)[0]}function R(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)&&await I(a.logic,{...t,conditions:R(e,t,new Set(n).add(i))})===!0}})}var oe=(0,d.createFactory)(({client:e})=>(0,u.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 I(o,{...d,conditions:R(a,d,new Set)})}}));function se(e){return(0,d.invoke)(oe,e)}var ce=6e3,le=o.t(`last_ping`,`global`),ue=async e=>{try{let t=Date.now(),n=o.n.get(le),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ce)return!0;let i={},a=document.getElementById(`picked_script`)?.dataset.verceltoken;a&&(i[`x-vercel-protection-bypass`]=a);let s=await(0,f.sendPing)(e.apiUrl,{projectId:e.projectId,path:window.location.pathname},{headers:i});return s&&n.set(t),s}catch{return!1}},z=(0,u.createDomain)(`lifecycle`),de=(0,d.createFactory)(({client:e})=>{let n=z.store(!1),a=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),o=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),s=z.store(`idle`),c=z.store([]),l=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),d=(0,u.createStore)(void 0,{skipVoid:!1,domain:z}),f=(0,u.createEvent)(),p=(0,u.createEvent)(),m=(0,u.createEvent)(),h=(0,u.createEvent)(),g=(0,u.createEvent)(),_=(0,u.createEvent)();c.on(h,(e,t)=>[...e,t]),l.on(g,(e,t)=>t),d.on(_,(e,t)=>t),n.on(p,()=>!0);let y=(0,u.createEffect)(()=>{ue(e)}),b=(0,u.createEffect)(async()=>{await i.r()}),x=(0,u.createEffect)(async()=>{await v(e)}),S=(0,u.attach)({effect:x}),C=(0,u.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,u.attach)({source:l,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,u.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,u.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,u.sample)({clock:E,fn:()=>`starting`,target:s}),(0,u.sample)({clock:E,target:y}),(0,u.sample)({clock:E,target:C}),(0,u.sample)({clock:E,target:b}),(0,u.sample)({clock:C.done,target:w}),(0,u.sample)({clock:w.doneData,target:a}),(0,u.sample)({clock:T.doneData,target:o}),(0,u.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,u.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,u.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,u.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,u.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,u.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,u.createStore)(!1).on(b.done,()=>!0),O=(0,u.createStore)(!1).on(m,()=>!0),ee=(0,u.createStore)(!1).on(S.done,()=>!0),k=(0,u.combine)(a,o,(e,t)=>e===!0&&t===!0);(0,u.sample)({clock:m,source:k,filter:e=>e,fn:()=>void 0,target:x});let A=(0,u.combine)(D,O,k,(e,t,n)=>e&&t&&n);(0,u.sample)({clock:A,filter:e=>e,fn:()=>void 0,target:S});let te=(0,u.combine)(D,O,k,ee,(e,t,n,r)=>e&&t&&(!n||r));return(0,u.sample)({clock:te,filter:e=>e,fn:()=>void 0,target:p}),(0,u.sample)({clock:p,fn:()=>`ready`,target:s}),(0,u.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,u.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,u.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:g,setCondition:_}});function fe(e){return(0,d.invoke)(de,e)}var pe=(0,u.createDomain)(`predicate`),me=(0,d.createFactory)(({client:e})=>{let t=pe.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,u.createEvent)();(0,u.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,u.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,u.createStore)(()=>void 0,{skipVoid:!1}),r=(0,u.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,u.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,u.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function he(e){return(0,d.invoke)(me,e)}var ge=(e,t,n)=>{n.register({name:e,predicate:t})},_e=(0,u.createDomain)(`feature`);function B(e){return e?.enabled===!1}function ve(e){return e===`true`||e!==`false`&&e}var ye=(0,d.createFactory)(({client:e})=>{let t=_e.store({}),r=_e.store([]),i=(0,u.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,u.createEvent)();(0,u.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,u.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,u.createEffect)(async({id:e,key:t,storage:n=`local`,enabled:r})=>{if(r===!1)return null;let i=o.t(`feature:${e}:${t}`,`global`),a=(n===`session`?o.r:o.n).get(i).text();return a?{id:e,key:t,bucket:ve(a),storage:n}:null}),c=(0,u.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)}),l=new Map,d=(0,u.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`);if(B(o.feature))return{id:o.id,bucket:!1,key:i,storage:o.feature.storage};let s=l.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();l.set(`${n}:${i}`,c);let u=await c;return{id:o.id,bucket:u,key:i,storage:o.feature.storage}}});(0,u.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage,enabled:n.feature.enabled}},target:s}),(0,u.sample)({source:t,clock:d.doneData,filter:(e,t)=>!B(e[t.id]?.feature),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,u.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,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,u.sample)({clock:d.doneData,source:{resolvedFeatures:r,allFeatures:t},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!B(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,u.sample)({clock:[s.doneData,d.doneData],source:{resolvedFeatures:r,allFeatures:t},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||B(t[n.id]?.feature)||e.some(e=>e.id===n.id&&e.key===n.key)?e:[...e,n],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}let m=new Map,h=new Map,g=new Map;function _(e){let t=m.get(e);if(t)return t;let n=p(e);return m.set(e,n),n}function v(e){return t.map(t=>t[e],{skipVoid:!1})}function y(e){let t=(0,u.createStore)(async()=>void 0,{skipVoid:!1}),n=_(e),r=(0,u.attach)({source:n,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,u.sample)({clock:n,target:r}),(0,u.sample)({clock:r.doneData,filter:e=>e!==void 0,target:t}),r(),t}function b(e){let t=h.get(e);if(t)return t;let n=y(e);return h.set(e,n),n}function x(e){let t=b(e),n=(0,u.createStore)(void 0,{skipVoid:!1}),r=(0,u.attach)({source:t,mapParams:(e,t)=>t,effect:(0,u.createEffect)(async e=>await e())});return(0,u.sample)({clock:r.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:n}),(0,u.sample)({clock:t,target:r}),r(),n}function S(e){let t=g.get(e);if(t)return t;let n=x(e);return g.set(e,n),n}return{register:a,getById:_,getByName:v,listStore:f,getEvokableFeature:b,getFeatureResult:S}});function be(e){return(0,d.invoke)(ye,e)}var xe=(e,t,n)=>{n.register({id:e,feature:t})},V=(0,u.createDomain)(`history`);function H(e,t){return{id:s.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var Se=(0,d.createFactory)(()=>{let e=V.store({entries:[]}),t=V.event(),n=V.event(),r=V.event(),i=V.event();e.on(t,(e,t)=>({entries:[...e.entries,H(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),H(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 Ce(){return(0,d.invoke)(Se)}var we=0,Te=e=>{let t=(0,u.createStore)([]);return t.on(e,(e,t)=>[...e,{id:we++,at:new Date,payload:t}]),t},Ee=(0,u.createDomain)(`field`),De=(0,d.createFactory)(()=>{let e=Ee.store({}),t=(0,u.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 Oe(){return(0,d.invoke)(De)}var ke=(0,u.createDomain)(`step`),Ae=(0,d.createFactory)(()=>{let e=ke.store({}),t=(0,u.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 je(){return(0,d.invoke)(Ae)}function Me(e,t){t.register(e)}var Ne=(0,u.createDomain)(`content`),Pe=(0,d.createFactory)(()=>{let e=Ne.store({}),t=(0,u.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}},patch(e,t){let n=e[t.id];if(!n)return e;let r=t.apply(n.data);return r===n.data?e:{...e,[t.id]:{...n,data:r}}}});function n(e){t.register({content:e})}function r(e,n){t.patch({id:e,apply:n})}let i=e.map(e=>Object.values(e));function a(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,patch:r,getById:a,listStore:i,indexStore:e}});function Fe(){return(0,d.invoke)(Pe)}function Ie(e,t){t.register(e)}var Le=(0,u.createDomain)(`action`),Re=(0,d.createFactory)(({client:e})=>{let t=Le.store({}),r=(0,u.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,u.createEvent)();(0,u.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,u.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,u.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,u.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,u.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,u.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function ze(e){return(0,d.invoke)(Re,e)}var Be=(e,t,n)=>{n.register({key:e,action:t})};function U(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function W(e){return e===null||e===``||Array.isArray(e)&&!e.length}function Ve(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function G(e){try{return JSON.stringify(e),!0}catch{return!1}}function He(e,t){return t.find(t=>t.key===e)??null}function Ue(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function We(e,t){if(e.type!==`object`||W(t))return null;if(e.multiple){if(!Array.isArray(t))return U(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return U(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!G(n))return U(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)?U(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?U(e,t,`This field expects an object value`,`Field expects an object value.`):G(t)?null:U(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Ge(e,t){if(W(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:U(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=>!Ve(e)||e===null?!1:r.includes(e))?null:U(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Ke(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!W(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return U(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return U(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&W(r)?U(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?U(n,r,`This field expects a single response`,`Field expects a single response.`):null}var qe=(0,u.createDomain)(`response`),Je=(0,d.createFactory)(({client:e})=>{let n=qe.store({}),r=(0,u.createEvent)(),i=(0,u.createEvent)(),a=(0,u.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,u.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=He(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=Ue(o,n),l=await Ke(s,o,c,a);if(l){r.push(l);return}let u=We(o,c);if(u){r.push(u);return}let d=Ge(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function l(e){return c(e)}let d=(0,u.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,u.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,u.sample)({clock:r,target:a.clearAll}),(0,u.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:l,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Ye(e){return(0,d.invoke)(Je,e)}var Xe=(0,u.createDomain)(`condition`),Ze=(0,d.createFactory)(()=>{let e=Xe.store({}),t=(0,u.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 Qe(){return(0,d.invoke)(Ze)}function $e(){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 K(){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 q=o.t(`session`,`global`);function et(){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 tt(){if(!r.s())return null;let e=o.n.get(q);if(!e.isSet())return null;try{return e.json()}catch{return null}}var nt=(0,d.createFactory)(()=>{let e=tt(),t={id:e?.id??et()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,u.createStore)(t),i=(0,u.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}}),a=(0,u.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(q).set(e)}catch{}}});return(0,u.sample)({source:n,target:a}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function rt(){return(0,d.invoke)(nt,void 0)}function J(){if(r.f())return globalThis.window.pickedConfig}function it(){if(r.f())return J()?.projectId}function at(){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 ot(e){if(e.projectId)return e.projectId;let t=it();if(t)return t;let n=at();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 Y(e){return e==null||e===``||Number.isNaN(e)}var st={default:(e,t)=>Y(e)?String(t??``):String(e),append:(e,t)=>t&&!Y(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!Y(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 ct(e){return typeof e==`object`&&!!e}function lt(e,t){let n=t;for(let t of e.split(`.`))if(ct(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function ut(e,t){let n=e.split(`|`).map(e=>e.trim()),r=lt(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=st[i];o&&(r=o(r,a))}return Y(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function dt(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+=ut(i.trim(),t)}else n+=e[r++];return n}var X=`preview-token`;function ft(){return!r.f()||!r.t()?!1:!!K()[X]?.[0]}var pt=class{static logger=n.t;options;dataSource=null;seededVersionId=null;versionSkew=null;contentLoader;previewEmbedderOrigins=null;plugins={};dataProviders=new Map;eventBus=(0,u.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=rt();searchParams=K();history=Ce();components=T({client:this});experienceInstances=a.n({client:this});experiences=_({client:this});frameworks=ee({client:this});predicates=he({client:this});features=be({client:this});conditions=Qe();fields=Oe();responses=Ye({client:this});steps=je();contents=Fe();actions=ze({client:this});conditionResults=a.r();stateSnapshotStore=te({client:this});evaluateRuleLogicFx=se({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=fe({client:this});renderStringFx=(0,u.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return dt(t,{...n,responses:r})}});constructor(e){this.events=Te(this.eventBus),this.projectId=ot(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||$e(),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:c.t()}),this.maybeStartPreviewChannel()}dataProviderFor(e){let t=e??``,n=this.dataProviders.get(t);if(n)return n;let r=Promise.resolve().then(()=>require("../provider-ixdOyYTA.cjs")).then(t=>t.createPickedDataProvider({apiUrl:this.apiUrl,projectId:this.projectId,...e!==void 0&&{previewToken:e}}));return this.dataProviders.set(t,r),r}async getProjectConfig(e){let t=await this.dataProviderFor(e?.previewToken),n=await t.getProjectConfig();if(this.dataSource=t.meta.manifest,n===null)throw Error(`Picked could not resolve the configuration for project "${this.projectId}" from ${this.apiUrl}.`);return n}async getExperienceContent(e,t){return(await this.dataProviderFor(t?.previewToken)).getContent(e,t?.signal===void 0?void 0:{signal:t.signal})}maybeStartPreviewChannel(){ft()&&Promise.resolve().then(()=>require("../preview-channel-Cx0e6fye.cjs")).then(e=>e.initPreviewChannel(this)).catch(()=>void 0)}registerFramework=e=>{k(e,this.frameworks)};registerComponent=(e,t)=>{E(e,t,this.components)};registerPlugin=e=>{b(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{xe(e,t,this.features)};registerPredicate=(e,t)=>{ge(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Me(e,this.steps)};registerContent=e=>{Ie(e,this.contents)};patchContent=(e,t)=>{this.contents.patch(e,t)};registerAction=(e,t)=>{Be(e,t,this.actions)};registerExperience=e=>{e.component&&E(`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=ve(n);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]??{}},mt=`application/picked-javascript`,ht=`application/picked-module`,gt=`data-picked-hydrated`;async function _t(e){if(!(`document`in globalThis))return;let t=`application/picked-module`,n=`data-picked-hydrated`;function r(e){try{Function(e.textContent)}catch(t){return t instanceof SyntaxError&&(console.error(`[picked] Skipped a rehydrated inline script that failed to parse.`,t),e.setAttribute(n,``),!0)}return!1}function i(e,t){let r=document.createElement(`script`);for(let t of Array.from(e.attributes))t.name!==`type`&&r.setAttribute(t.name,t.value);t&&r.setAttribute(`type`,t),r.setAttribute(n,``),e.src?r.async=!1:r.textContent=e.textContent;let i=e.src?new Promise(e=>{r.addEventListener(`load`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>e(),{once:!0})}):null;return e.src?e.replaceWith(r):(globalThis.__pickedEmbedScriptRoot=e.getRootNode(),e.replaceWith(r),globalThis.__pickedEmbedScriptRoot=null),i}let a=Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter(e=>e instanceof HTMLScriptElement);for(let e of a){if(!e.isConnected)continue;let n=e.getAttribute(`type`)===t?`module`:null;if(!e.src&&n===null&&r(e))continue;let a=i(e,n);a&&await a}}function vt(){return`<script>(${_t.toString()})(document)<\/script>`}function yt(e){return typeof e==`object`&&!!e&&`id`in e&&typeof e.id==`string`&&`content`in e&&(typeof e.content==`string`||e.content===null)}function bt(e){return{$$type:`lazy-component`,load:e}}function xt(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}function Z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`contentEntryId`in e&&typeof e.contentEntryId==`string`}function Q(e){return Z(e)?e.contentEntryId:null}function $(e){let t=Array.isArray(e)?e:[e],n=[];for(let e of t)Z(e)&&n.push(e.contentEntryId);return n}function St(e,t){return t===null?null:e[t]??null}function Ct(e,t){let n=[];for(let r of t){let t=e[r];t!==void 0&&n.push(t)}return n}function wt(e,t){if(u.is.store(t))return(0,u.combine)(t,e.indexStore,(e,t)=>St(t,Q(e)));let n=Q(t);return e.indexStore.map(e=>St(e,n),{skipVoid:!1})}function Tt(e,t){if(u.is.store(t))return(0,u.combine)(t,e.indexStore,(e,t)=>Ct(t,$(e)));let n=$(t);return e.indexStore.map(e=>Ct(e,n),{skipVoid:!1})}var Et=e=>{let t=new pt(e);return r.m(t),t};function Dt(e){return typeof e.data==`object`}function Ot(e){return e.map(e=>!e||!Dt(e)?null:e,{skipVoid:!1})}exports.PICKED_HYDRATED_ATTR=gt,exports.PICKED_MODULE_SCRIPT_TYPE=ht,exports.PICKED_SCRIPT_TYPE=mt,exports.PREVIEW_TOKEN_PARAM=X,exports.Picked=pt,exports.buildRehydrateBootstrap=vt,exports.createClient=Et,exports.createPluginEffect=y,exports.createStorageKey=o.t,exports.deriveReference=wt,exports.deriveReferences=Tt,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=J,exports.isContentReference=Z,exports.isHtmlAssetValue=yt,exports.isInsideIframe=r.t,exports.isLazyLoader=xt,exports.isPickedRoot=i.a,exports.isPreviewSession=ft,exports.lazyComponent=bt,exports.localStore=o.n,exports.onInertScriptSubtrees=l.t,exports.readReferenceId=Q,exports.readReferenceIds=$,exports.rehydrateScripts=_t,exports.reportInertScriptSubtrees=l.n,exports.resetInertScriptReport=l.r,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,exports.toTypedContentStore=Ot;
4
+ (3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function Y(e){return e==null||e===``||Number.isNaN(e)}var st={default:(e,t)=>Y(e)?String(t??``):String(e),append:(e,t)=>t&&!Y(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!Y(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 ct(e){return typeof e==`object`&&!!e}function lt(e,t){let n=t;for(let t of e.split(`.`))if(ct(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function ut(e,t){let n=e.split(`|`).map(e=>e.trim()),r=lt(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=st[i];o&&(r=o(r,a))}return Y(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function dt(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+=ut(i.trim(),t)}else n+=e[r++];return n}var X=`preview-token`;function ft(){return!r.f()||!r.t()?!1:!!K()[X]?.[0]}var pt=class{static logger=n.t;options;dataSource=null;seededVersionId=null;versionSkew=null;contentLoader;previewEmbedderOrigins=null;plugins={};dataProviders=new Map;eventBus=(0,u.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=rt();searchParams=K();history=Ce();components=T({client:this});experienceInstances=a.n({client:this});experiences=_({client:this});frameworks=ee({client:this});predicates=he({client:this});features=be({client:this});conditions=Qe();fields=Oe();responses=Ye({client:this});steps=je();contents=Fe();actions=ze({client:this});conditionResults=a.r();stateSnapshotStore=te({client:this});evaluateRuleLogicFx=se({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=fe({client:this});renderStringFx=(0,u.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return dt(t,{...n,responses:r})}});constructor(e){this.events=Te(this.eventBus),this.projectId=ot(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||$e(),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:c.t()}),this.maybeStartPreviewChannel()}dataProviderFor(e){let t=e??``,n=this.dataProviders.get(t);if(n)return n;let r=Promise.resolve().then(()=>require("../provider-DZEDUlIk.cjs")).then(t=>t.createPickedDataProvider({apiUrl:this.apiUrl,projectId:this.projectId,...e!==void 0&&{previewToken:e}}));return this.dataProviders.set(t,r),r}async getProjectConfig(e){let t=await this.dataProviderFor(e?.previewToken),n=await t.getProjectConfig();if(this.dataSource=t.meta.manifest,n===null)throw Error(`Picked could not resolve the configuration for project "${this.projectId}" from ${this.apiUrl}.`);return n}async getExperienceContent(e,t){return(await this.dataProviderFor(t?.previewToken)).getContent(e,t?.signal===void 0?void 0:{signal:t.signal})}maybeStartPreviewChannel(){ft()&&Promise.resolve().then(()=>require("../preview-channel-Cx0e6fye.cjs")).then(e=>e.initPreviewChannel(this)).catch(()=>void 0)}registerFramework=e=>{k(e,this.frameworks)};registerComponent=(e,t)=>{E(e,t,this.components)};registerPlugin=e=>{b(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{xe(e,t,this.features)};registerPredicate=(e,t)=>{ge(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Me(e,this.steps)};registerContent=e=>{Ie(e,this.contents)};patchContent=(e,t)=>{this.contents.patch(e,t)};registerAction=(e,t)=>{Be(e,t,this.actions)};registerExperience=e=>{e.component&&E(`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=ve(n);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]??{}},mt=`application/picked-javascript`,ht=`application/picked-module`,gt=`data-picked-hydrated`;async function _t(e){if(!(`document`in globalThis))return;let t=`application/picked-module`,n=`data-picked-hydrated`;function r(e){try{Function(e.textContent)}catch(t){return t instanceof SyntaxError&&(console.error(`[picked] Skipped a rehydrated inline script that failed to parse.`,t),e.setAttribute(n,``),!0)}return!1}function i(e,t){let r=document.createElement(`script`);for(let t of Array.from(e.attributes))t.name!==`type`&&r.setAttribute(t.name,t.value);t&&r.setAttribute(`type`,t),r.setAttribute(n,``),e.src?r.async=!1:r.textContent=e.textContent;let i=e.src?new Promise(e=>{r.addEventListener(`load`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>e(),{once:!0})}):null;return e.src?e.replaceWith(r):(globalThis.__pickedEmbedScriptRoot=e.getRootNode(),e.replaceWith(r),globalThis.__pickedEmbedScriptRoot=null),i}let a=Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter(e=>e instanceof HTMLScriptElement);for(let e of a){if(!e.isConnected)continue;let n=e.getAttribute(`type`)===t?`module`:null;if(!e.src&&n===null&&r(e))continue;let a=i(e,n);a&&await a}}function vt(){return`<script>(${_t.toString()})(document)<\/script>`}function yt(e){return typeof e==`object`&&!!e&&`id`in e&&typeof e.id==`string`&&`content`in e&&(typeof e.content==`string`||e.content===null)}function bt(e){return{$$type:`lazy-component`,load:e}}function xt(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}function Z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`contentEntryId`in e&&typeof e.contentEntryId==`string`}function Q(e){return Z(e)?e.contentEntryId:null}function $(e){let t=Array.isArray(e)?e:[e],n=[];for(let e of t)Z(e)&&n.push(e.contentEntryId);return n}function St(e,t){return t===null?null:e[t]??null}function Ct(e,t){let n=[];for(let r of t){let t=e[r];t!==void 0&&n.push(t)}return n}function wt(e,t){if(u.is.store(t))return(0,u.combine)(t,e.indexStore,(e,t)=>St(t,Q(e)));let n=Q(t);return e.indexStore.map(e=>St(e,n),{skipVoid:!1})}function Tt(e,t){if(u.is.store(t))return(0,u.combine)(t,e.indexStore,(e,t)=>Ct(t,$(e)));let n=$(t);return e.indexStore.map(e=>Ct(e,n),{skipVoid:!1})}var Et=e=>{let t=new pt(e);return r.m(t),t};function Dt(e){return typeof e.data==`object`}function Ot(e){return e.map(e=>!e||!Dt(e)?null:e,{skipVoid:!1})}exports.PICKED_HYDRATED_ATTR=gt,exports.PICKED_MODULE_SCRIPT_TYPE=ht,exports.PICKED_SCRIPT_TYPE=mt,exports.PREVIEW_TOKEN_PARAM=X,exports.Picked=pt,exports.buildRehydrateBootstrap=vt,exports.createClient=Et,exports.createPluginEffect=y,exports.createStorageKey=o.t,exports.deriveReference=wt,exports.deriveReferences=Tt,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=J,exports.isContentReference=Z,exports.isHtmlAssetValue=yt,exports.isInsideIframe=r.t,exports.isLazyLoader=xt,exports.isPickedRoot=i.a,exports.isPreviewSession=ft,exports.lazyComponent=bt,exports.localStore=o.n,exports.onInertScriptSubtrees=l.t,exports.readReferenceId=Q,exports.readReferenceIds=$,exports.rehydrateScripts=_t,exports.reportInertScriptSubtrees=l.n,exports.resetInertScriptReport=l.r,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,exports.toTypedContentStore=Ot;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../plugin-Dtg2sOad.cjs"),t=require("../../../api-DS7fA9kj.cjs"),n=require("../../../registry-C1t8l3t9.cjs");let r=require("@picked/delivery-api-client");Object.defineProperty(exports,"createClientHeaders",{enumerable:!0,get:function(){return r.createClientHeaders}}),exports.dynamicExperiencesPlugin=e.t,exports.fetchExperienceContent=t.t,exports.fetchProject=t.n,Object.defineProperty(exports,"fetchSchema",{enumerable:!0,get:function(){return r.fetchSchema}}),exports.registerPickedBundle=n.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../plugin-hFQIiHOB.cjs"),t=require("../../../api-TWnRLh3X.cjs"),n=require("../../../registry-C1t8l3t9.cjs");let r=require("@picked/delivery-api-client");Object.defineProperty(exports,"createClientHeaders",{enumerable:!0,get:function(){return r.createClientHeaders}}),exports.dynamicExperiencesPlugin=e.t,exports.fetchExperienceContent=t.t,exports.fetchProject=t.n,Object.defineProperty(exports,"fetchSchema",{enumerable:!0,get:function(){return r.fetchSchema}}),exports.registerPickedBundle=n.n;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-Dej3P1sE.cjs"),t=require("../../plugin-Dtg2sOad.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 s=o.previewToken===void 0?void 0:{previewToken:o.previewToken},c=await n.getProjectConfig(s),l=n.session.store.getState().id;n.conditionResults.reset(),t.n(n,c,{isPreview:!1,sessionId:l});let u=i(o.attributes),d=o.timeoutMs??r,f=new Map(c.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),p=Object.fromEntries(c.conditions.map(e=>[e.key,e])),m=c.experiences.filter(t=>!e.c(t.condition,p)),h=(await Promise.all(m.map(async t=>({experience:t,active:await e.o(n,{condition:t.condition},{context:u})})))).filter(e=>e.active).map(e=>e.experience),g=await Promise.all(h.filter(e=>a(e,f)).map(e=>n.getExperienceContent({id:e.id,key:e.key},{...s,signal:AbortSignal.timeout(d)}))),_=new Map;for(let e of g)if(e)for(let t of[...e.references??[],...e.content])_.set(t.id,t);return{versionId:c.versionId,projectConfig:c,content:Array.from(_.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);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});let g=(0,n.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}});return(0,n.sample)({clock:u,target:g}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=t.n,exports.render=c,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-Dej3P1sE.cjs"),t=require("../../plugin-hFQIiHOB.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 s=o.previewToken===void 0?void 0:{previewToken:o.previewToken},c=await n.getProjectConfig(s),l=n.session.store.getState().id;n.conditionResults.reset(),t.n(n,c,{isPreview:!1,sessionId:l});let u=i(o.attributes),d=o.timeoutMs??r,f=new Map(c.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),p=Object.fromEntries(c.conditions.map(e=>[e.key,e])),m=c.experiences.filter(t=>!e.c(t.condition,p)),h=(await Promise.all(m.map(async t=>({experience:t,active:await e.o(n,{condition:t.condition},{context:u})})))).filter(e=>e.active).map(e=>e.experience),g=await Promise.all(h.filter(e=>a(e,f)).map(e=>n.getExperienceContent({id:e.id,key:e.key},{...s,signal:AbortSignal.timeout(d)}))),_=new Map;for(let e of g)if(e)for(let t of[...e.references??[],...e.content])_.set(t.id,t);return{versionId:c.versionId,projectConfig:c,content:Array.from(_.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);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});let g=(0,n.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}});return(0,n.sample)({clock:u,target:g}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=t.n,exports.render=c,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=o;
@@ -0,0 +1,101 @@
1
+ /*
2
+ * Site font. Vocs 2 has no `font` config option, so Inter is declared here.
3
+ */
4
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
5
+
6
+ :root {
7
+ --vocs-fontFamily-default: 'Inter', sans-serif;
8
+ }
9
+
10
+ /*
11
+ * Embed mode — activated by the ?embed query param.
12
+ * Hides site chrome (gutters, top nav, sidebar, outline, footer) so the docs
13
+ * content can be displayed inside an iframe in the dashboard's docs panel.
14
+ *
15
+ * Every selector targets a `data-v-*` attribute. These are the hooks Vocs
16
+ * publishes for styling its layout, and they are what this file must use:
17
+ * matching on class names instead would bind to generated Tailwind utilities
18
+ * that carry no compatibility promise, and a rename would break the dashboard's
19
+ * docs panel silently — build and tests stay green while the panel renders with
20
+ * a sidebar and a top nav inside it.
21
+ *
22
+ * Nothing automated covers the visual result. After any Vocs upgrade, open the
23
+ * dashboard docs panel and look at it.
24
+ */
25
+
26
+ /*
27
+ * Hide the gutters. These hold the top nav, the sidebar and the outline, so
28
+ * hiding them removes the chrome in one step.
29
+ *
30
+ * Do NOT add `[data-v-sidebar]` or `[data-v-topnav]` here. Those sit on the
31
+ * layout root as flags describing which regions the layout has — the root
32
+ * carries both — so hiding them blanks the entire page, content included.
33
+ */
34
+ .vocs-embed [data-v-gutter-top],
35
+ .vocs-embed [data-v-gutter-top-left],
36
+ .vocs-embed [data-v-gutter-left],
37
+ .vocs-embed [data-v-gutter-right],
38
+ .vocs-embed [data-v-gutter-logo],
39
+ .vocs-embed [data-v-mobile-nav] {
40
+ display: none !important;
41
+ }
42
+
43
+ /* Hide the sidebar's own container and the curtains behind it */
44
+ .vocs-embed [data-v-sidebar-container],
45
+ .vocs-embed [data-v-sidebar-curtain],
46
+ .vocs-embed [data-v-sidebar-footer-curtain] {
47
+ display: none !important;
48
+ }
49
+
50
+ /*
51
+ * Hide the surface layer that paints the sidebar and top-nav backgrounds.
52
+ * It sits behind the chrome rather than inside it, so hiding the gutters alone
53
+ * leaves its fill behind as a ghost panel down the left edge.
54
+ */
55
+ .vocs-embed [data-v-surface-bg] {
56
+ display: none !important;
57
+ }
58
+
59
+ /*
60
+ * Hide the "Ask AI" prompt. The dashboard embeds these pages beside its own
61
+ * agent, so a second assistant entry point inside the panel competes with it.
62
+ */
63
+ .vocs-embed [data-v-ask-ai-container] {
64
+ display: none !important;
65
+ }
66
+
67
+ /*
68
+ * Hide the mobile outline trigger, the footer, the skip link and the bottom
69
+ * observer. The outline and footer render on the client rather than into the
70
+ * prerendered HTML, so they are covered here even though a static build of this
71
+ * site does not emit them.
72
+ */
73
+ .vocs-embed [data-v-outline],
74
+ .vocs-embed [data-v-outline-mobile],
75
+ .vocs-embed [data-v-footer],
76
+ .vocs-embed [data-v-skip-to-content],
77
+ .vocs-embed [data-bottom-observer],
78
+ .vocs-embed footer {
79
+ display: none !important;
80
+ }
81
+
82
+ /* Reclaim the space the hidden gutters and top nav were holding */
83
+ .vocs-embed [data-v-main] {
84
+ margin-left: 0 !important;
85
+ padding-top: 0 !important;
86
+ }
87
+
88
+ /* Expand content to fill the embed viewport */
89
+ .vocs-embed [data-v-content] {
90
+ max-width: 100% !important;
91
+ margin-left: auto !important;
92
+ margin-right: auto !important;
93
+ padding-left: 1.25rem !important;
94
+ padding-right: 1.25rem !important;
95
+ }
96
+
97
+ /* Remove the top margin on the first child so there is no gap at the panel top */
98
+ .vocs-embed article > :first-child,
99
+ .vocs-embed [data-v-content] > :first-child {
100
+ margin-top: 0 !important;
101
+ }
@@ -311,4 +311,6 @@ WHERE project_id = '{{ your project ID }}'
311
311
  - [About PickedQL](/explanation/how-pickedql-works) — what the layer expands for you.
312
312
  - [Virtual functions](/reference/pickedql/virtual-functions) — every function.
313
313
  - [Dimensions](/reference/pickedql/dimensions) — every dimension column.
314
+ - [Analytics events](/reference/sdk/analytics-events) — every `event_type` value that a
315
+ filter can use.
314
316
  - [Reports](/reference/dashboard/reports) — the same data as an embedded dashboard.
@@ -5,24 +5,24 @@ layout: docs
5
5
 
6
6
  # How to authenticate the CLI
7
7
 
8
- This guide shows you how to install `@picked/cli` and sign it in. Commands that read your
9
- organizations, projects, and workspaces then know who you are. It expects a Picked account
10
- and a project directory to work in.
8
+ This guide shows you how to install the `picked` command and sign it in. Commands that read
9
+ your organizations, projects, and workspaces then know who you are. It expects a Picked
10
+ account and a project directory to work in.
11
11
 
12
12
  ## 1. Install the CLI
13
13
 
14
14
  :::code-group
15
15
 
16
16
  ```bash [npm]
17
- npm install --save-dev @picked/cli
17
+ npm install picked
18
18
  ```
19
19
 
20
20
  ```bash [pnpm]
21
- pnpm add -D @picked/cli
21
+ pnpm add picked
22
22
  ```
23
23
 
24
24
  ```bash [yarn]
25
- yarn add -D @picked/cli
25
+ yarn add picked
26
26
  ```
27
27
 
28
28
  :::
@@ -44,8 +44,7 @@ https://api.picked.app/…/oauth/authorize?…
44
44
  Logged in as you@example.com (https://api.picked.app)
45
45
  ```
46
46
 
47
- The CLI stores the session in `~/.picked/auth/<origin>.json`, outside any repository, with
48
- file mode `600`. It refreshes the session as it nears expiry.
47
+ The CLI stores the session in `~/.picked/auth/<origin>.json`. It refreshes the session as it nears expiry.
49
48
 
50
49
  ## 3. Confirm the session
51
50
 
@@ -70,15 +69,18 @@ Logged out of https://api.picked.app.
70
69
 
71
70
  ## Run the CLI in CI
72
71
 
73
- CI has no browser, so give the CLI a token instead of a session. `PICKED_TOKEN` takes
74
- precedence over any stored session:
72
+ `picked generate types` reads the workspace schema, not your account, so CI needs no
73
+ session for it. A workspace you read with `source: 'preview'` needs that workspace's token.
74
+ Run `picked workspace use` once on your machine, then give CI the two values it wrote:
75
75
 
76
76
  ```bash
77
- PICKED_TOKEN="$PICKED_ACCESS_TOKEN" picked generate types --check
77
+ PICKED_PROJECT_ID=your-project-id \
78
+ PICKED_PREVIEW_TOKEN=$YOUR_CI_SECRET \
79
+ picked generate types --check
78
80
  ```
79
81
 
80
- If an API deployment does not offer OAuth client registration, `picked login` fails and
81
- tells you to set `PICKED_TOKEN`. It falls back to no other flow.
82
+ `picked workspace list` and `picked workspace use` read your organizations and projects, so
83
+ those two do need a session. Run them on your machine, where a browser can sign you in.
82
84
 
83
85
  :::note
84
86
  This is a developer session for local tooling. It is not the same as an
@@ -5,8 +5,13 @@ layout: docs
5
5
 
6
6
  # How to create and revoke an API key
7
7
 
8
- This guide shows you how to give your code access to the Picked API. Use a key for a
9
- server-side integration or for a CI/CD workflow.
8
+ This guide shows you how to give your code access to the Picked API. Use a key where your
9
+ own code calls the API, such as a server-side integration.
10
+
11
+ An API key does not sign the [CLI](/reference/tools/cli) in. The CLI reads a session, which
12
+ `picked login` writes. See
13
+ [How to authenticate the CLI](/how-to/authenticate-the-cli) for the commands that CI can
14
+ run without one.
10
15
 
11
16
  ## Create a key
12
17
 
@@ -16,7 +16,7 @@ Install it from the
16
16
  ## 2. Add the devtools plugin
17
17
 
18
18
  ```typescript
19
- import { createClient } from '@picked/client'
19
+ import { createClient } from 'picked'
20
20
  import { svelteDevtoolsPlugin } from '@picked/svelte/plugins/devtools'
21
21
 
22
22
  const picked = createClient({
@@ -13,28 +13,41 @@ ID from the dashboard.
13
13
  :::code-group
14
14
 
15
15
  ```bash [React]
16
- npm install @picked/client @picked/react effector effector-react
16
+ npm install picked @picked/react effector effector-react
17
17
  ```
18
18
 
19
19
  ```bash [Svelte]
20
- npm install @picked/client @picked/svelte effector
20
+ npm install picked @picked/svelte effector
21
21
  ```
22
22
 
23
23
  :::
24
24
 
25
- :::note
26
- `picked` is a shorter name for the same client. `npm install picked` gives you
27
- `createClient` from `picked` and the `picked.config` helpers from `picked/config`. It also
28
- gives you the `picked` command. npm adds `@picked/client` with it, which is where the
29
- generated types attach.
30
- :::
25
+ `picked` gives you the client, the `picked.config` helpers, and the `picked` command. Your
26
+ package manager adds `@picked/client` with it, which carries the runtime and holds the
27
+ generated types.
28
+
29
+ ## 2. Add `picked.config.ts`
30
+
31
+ Create this file in the root of your project. The `picked` command and the
32
+ [Vite plugin](/reference/tools/vite-plugin) read your project identity from it:
33
+
34
+ ```typescript
35
+ import { defineConfig } from 'picked/config'
36
+
37
+ export default defineConfig({
38
+ projectId: 'your-project-id',
39
+ })
40
+ ```
31
41
 
32
- ## 2. Create and start the client
42
+ [Type generation](/reference/sdk/type-generation) reads this file, and gives your fields,
43
+ features and steps the types the workspace declares.
44
+
45
+ ## 3. Create and start the client
33
46
 
34
47
  :::code-group
35
48
 
36
49
  ```tsx [React]
37
- import { createClient } from '@picked/client'
50
+ import { createClient } from 'picked'
38
51
  import { dynamicExperiencesPlugin } from '@picked/client/plugins/dynamic-experiences'
39
52
  import { reactFrameworkPlugin } from '@picked/react/plugins/framework'
40
53
 
@@ -47,7 +60,7 @@ picked.start()
47
60
  ```
48
61
 
49
62
  ```ts [Svelte]
50
- import { createClient } from '@picked/client'
63
+ import { createClient } from 'picked'
51
64
  import { dynamicExperiencesPlugin } from '@picked/client/plugins/dynamic-experiences'
52
65
  import { svelteFrameworkPlugin } from '@picked/svelte/plugins/framework'
53
66
 
@@ -61,9 +74,13 @@ picked.start()
61
74
 
62
75
  :::
63
76
 
77
+ `picked` carries the client's root entry. Each deeper import path, such as
78
+ `@picked/client/plugins/dynamic-experiences` and `@picked/client/server`, keeps its own
79
+ name.
80
+
64
81
  `start()` is idempotent. A second call changes nothing on a client that started already.
65
82
 
66
- ## 3. Add the optional plugins
83
+ ## 4. Add the optional plugins
67
84
 
68
85
  - `windowObjectPlugin()` puts the client on `window.Picked`, which helps when you debug.
69
86
  - `singlePageAppPlugin()` starts the client again on a history event.
@@ -72,4 +89,5 @@ picked.start()
72
89
 
73
90
  - [Add Picked to your application](/tutorials/first-experience) — the whole path.
74
91
  - [SDK installation](/reference/sdk) — every client option.
92
+ - [Type generation](/reference/sdk/type-generation) — types from your workspace.
75
93
  - [How to register a component](/how-to/register-a-component).
@@ -13,37 +13,49 @@ API request at runtime.
13
13
  :::code-group
14
14
 
15
15
  ```bash [npm]
16
- npm install @picked/vite-plugin-picked
16
+ npm install @picked/vite-plugin-picked picked
17
17
  ```
18
18
 
19
19
  ```bash [pnpm]
20
- pnpm add @picked/vite-plugin-picked
20
+ pnpm add @picked/vite-plugin-picked picked
21
21
  ```
22
22
 
23
23
  ```bash [yarn]
24
- yarn add @picked/vite-plugin-picked
24
+ yarn add @picked/vite-plugin-picked picked
25
25
  ```
26
26
 
27
27
  :::
28
28
 
29
- ## 2. Add it to your config
29
+ ## 2. Name your project
30
+
31
+ Create `picked.config.ts` in the root of your project. The plugin reads your project
32
+ identity from this file:
33
+
34
+ ```typescript
35
+ import { defineConfig } from 'picked/config'
36
+
37
+ export default defineConfig({
38
+ projectId: 'your-project-id',
39
+ })
40
+ ```
41
+
42
+ ## 3. Add the plugin to your Vite config
30
43
 
31
44
  ```typescript
32
45
  import { defineConfig } from 'vite'
33
46
  import { picked } from '@picked/vite-plugin-picked'
34
47
 
35
48
  export default defineConfig({
36
- plugins: [
37
- picked({
38
- projectId: 'your-project-id',
39
- }),
40
- ],
49
+ plugins: [picked()],
41
50
  })
42
51
  ```
43
52
 
44
53
  When Vite starts, the plugin reads your project configuration and embeds them in your bundle.
45
54
  The SDK then reads the embedded configuration and makes no network request.
46
55
 
56
+ The plugin also writes `picked-env.d.ts`, which types your fields, features and steps
57
+ against the workspace. See [Type generation](/reference/sdk/type-generation).
58
+
47
59
  :::note
48
60
  When a preview token is there at runtime, the SDK ignores the embedded configuration and reads
49
61
  fresh data from the API.
@@ -52,5 +64,6 @@ fresh data from the API.
52
64
  ## Related
53
65
 
54
66
  - [Vite plugin](/reference/tools/vite-plugin) — every option.
67
+ - [Type generation](/reference/sdk/type-generation) — the `picked.config.ts` options.
55
68
  - [About how Picked works](/explanation/how-picked-works) — where build-time configuration sit
56
69
  in the startup order.
@@ -77,7 +77,7 @@ renders, and they commit the visitor to a bucket at that moment.
77
77
  The event bus works with any framework, and with none:
78
78
 
79
79
  ```ts
80
- import { createClient } from '@picked/client'
80
+ import { createClient } from 'picked'
81
81
 
82
82
  const client = createClient({
83
83
  /* Put your client options here. */
@@ -17,7 +17,7 @@ the dashboard.
17
17
  :::code-group
18
18
 
19
19
  ```tsx [React]
20
- import { createClient } from '@picked/client'
20
+ import { createClient } from 'picked'
21
21
  import { adaptReactComponent } from '@picked/react'
22
22
  import { MyWidget } from './MyWidget'
23
23
 
@@ -30,7 +30,7 @@ const picked = createClient({
30
30
  ```
31
31
 
32
32
  ```ts [Svelte]
33
- import { createClient } from '@picked/client'
33
+ import { createClient } from 'picked'
34
34
  import { adaptSvelteComponent } from '@picked/svelte'
35
35
  import MyWidget from './MyWidget.svelte'
36
36
 
@@ -15,7 +15,7 @@ Pass an `actions` object to `createClient()`. Each key must match an action key
15
15
  dashboard:
16
16
 
17
17
  ```ts
18
- import { createClient } from '@picked/client'
18
+ import { createClient } from 'picked'
19
19
 
20
20
  const picked = createClient({
21
21
  projectId: 'your-project-id',