@picked/client 0.0.65-next.3 → 0.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-B4atkKWy.cjs +1 -0
- package/dist/{api-BKpqWJH7.js → api-C3RQgr4k.js} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/content/asset-library.mdx +43 -0
- package/dist/esm/index.js +214 -187
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +1 -1
- package/dist/{plugin-Bv6xMnkt.js → plugin--FaLYDgu.js} +1 -1
- package/dist/{plugin-DfQQmpnX.cjs → plugin-B0aVJl2T.cjs} +1 -1
- package/dist/types/exports.d.ts +3 -0
- package/dist/types/exports.d.ts.map +1 -1
- package/dist/types/utils/html-asset-value.d.ts +20 -0
- package/dist/types/utils/html-asset-value.d.ts.map +1 -0
- package/dist/types/utils/rehydrate-scripts.d.ts +35 -0
- package/dist/types/utils/rehydrate-scripts.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/api-DqWHooZI.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.65`,i=`v1`;function a(e,t){return new URL(`/api/${i}/${t}`,e).toString()}function o(e){return{...n(`sdk`,r()),...e}}async function s(e,t,n,r){let i=a(e,t);return fetch(i,{headers:o(n),signal:r})}async function c(e,t,n,r){let i=a(e,t);return fetch(i,{method:`POST`,headers:{"Content-Type":`application/json`,...o(r)},body:JSON.stringify(n)})}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
|
package/dist/cjs/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-CDrHc_j9.cjs"),a=require("../experience-instance-Nl39IDKx.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-DqWHooZI.cjs"),c=require("../id-Js-62re-.cjs");let l=require("effector"),u=require("@withease/factories");var d=(0,l.createDomain)(`experience`),f=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.u).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.l).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),f=n.actions??[],p,m=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(p,t,r):e.experienceInstances.spawn(p,t)})}}),h=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),g=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),_=(0,l.createEvent)(),v=(0,l.createEvent)(),y=d.createStore(void 0,{skipVoid:!1}).on(_,(e,t)=>t).on(v,(e,t)=>t);return(0,l.sample)({clock:_,target:h}),(0,l.sample)({clock:h.doneData,source:y,filter:(e,t)=>t,fn:e=>e,target:m}),(0,l.sample)({clock:h.doneData,filter:Boolean,target:g}),(0,l.sample)({clock:v,source:y,fn:e=>e,target:m}),(0,l.sample)({clock:v,target:g}),p={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:m,shouldInitialiseFx:h,initialiseRequested:_,initialiseDirectly:v,prepareExperienceContentFx:g},p});function p(e){return(0,u.invoke)(f,e)}var m=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(p({client:e,experience:t}))});(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,l.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function h(e){return(0,u.invoke)(m,e)}var g=async e=>{await e.experiences.initialiseExperiencesFx()};function _(e){return(0,l.createEffect)(async()=>{await e()})}var v=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},y=(0,l.createDomain)(`component`),b=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function x(e){return(0,u.invoke)(b,e)}var S=(0,u.createFactory)(({client:e})=>{let t=y.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:t,component:n})=>x({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function C(e){return(0,u.invoke)(S,e)}var w=(e,t,n)=>{n.register({name:e,component:t})},T=(0,l.createDomain)(`framework`),E=(0,u.createFactory)(e=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function D(e){return(0,u.invoke)(E,e)}var O=(e,t)=>{t.register({name:e.name,framework:e})},k=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function A(e){return(0,u.invoke)(k,e)}function ee(e){return typeof e==`number`&&!isNaN(e)}function j(e){return typeof e==`string`}function M(e){return Array.isArray(e)}function N(e){return e instanceof Promise}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function F(e){if(ee(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var te={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>F(e)>F(t),">=":(e,t)=>F(e)>=F(t),"<":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<i;let a=F(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<=i;let a=F(n);return r<=i&&i<=a},"!!":async e=>await R(e),"!":async e=>!await R(e),"%":(e,t)=>F(e)%F(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(I(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(I).join(``),substr:(e,t,n)=>{let r=I(e),i=F(t);if(n===void 0)return r.substr(i);let a=F(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>F(e)+F(t),0),"*":(...e)=>e.reduce((e,t)=>F(e)*F(t),1),"-":(e,t)=>{let n=F(e);return t===void 0?-n:n-F(t)},"/":(e,t)=>F(e)/F(t),min:(...e)=>Math.min(...e.map(F)),max:(...e)=>Math.max(...e.map(F)),merge:(...e)=>e.reduce((e,t)=>M(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=I(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=M(e[0])?e[0]:e,n=[];for(let e of t){let t=await L({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await L({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=F(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>j(e)&&j(t)&&e.startsWith(t),endsWith:(e,t)=>j(e)&&j(t)&&e.endsWith(t),regexp_matches(e,t){let n=e,r=``;if(M(e)){let[t,i]=e;n=t,r=i}return!j(n)||!j(r)?!1:new RegExp(n,r).test(I(t))},throw(e){throw Error(I(e))}};async function L(e,t){if(!e)return e;if(N(e))return L(await e,t);if(M(e))return Promise.all(e.map(e=>L(e,t)));if(!P(e))return e;let n=ne(e),r=n?e[n]??[]:[];switch(M(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await R(await L(r[e],t)))return L(r[e+1],t);return r.length%2==1?L(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await L(n,t),!await R(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await L(n,t),await R(e))return e;return e}case`map`:{let e=await L(r[0],t);return M(e)?await Promise.all(e.map(e=>L(r[1],e))):[]}case`filter`:{let e=await L(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await R(await L(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await L(r[0],t);if(!M(e))return r.length>2?await L(r[2],t):null;let n=r[1],i=r.length>2?await L(r[2],t):null;for(let t of e)i=await L(n,{current:t,accumulator:i});return i}case`all`:{let e=await L(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await R(await L(r[1],t)))return!1;return!0}case`some`:{let e=await L(r[0],t);if(!M(e))return!1;for(let t of e)if(await R(await L(r[1],t)))return!0;return!1}case`none`:{let e=await L(r[0],t);if(!M(e))return!0;for(let t of e)if(await R(await L(r[1],t)))return!1;return!0}case`catch`:try{return await L(r[0],t)}catch(e){return P(e)?await L(e,t):r[1]?await L(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>L(e,t))),a=n?te[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function R(e){return N(e)?R(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ne(e){return Object.keys(e)[0]}function z(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>n.has(i)?!1:await L(a.logic,{...t,conditions:z(e,t,new Set(n).add(i))})===!0}})}var re=(0,u.createFactory)(({client:e})=>(0,l.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:o,context:s})=>{let c=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),l=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),u=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),d={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:c,actions:l,features:u,...s};return await L(o,{...d,conditions:z(a,d,new Set)})}}));function ie(e){return(0,u.invoke)(re,e)}var ae=6e3,oe=o.t(`last_ping`,`global`),se=async e=>{try{let t=Date.now(),n=o.n.get(oe),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ae)return!0;let i={projectId:e.projectId,path:window.location.pathname},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},B=(0,l.createDomain)(`lifecycle`),ce=(0,u.createFactory)(({client:e})=>{let n=B.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),s=B.store(`idle`),c=B.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),_=(0,l.createEvent)(),v=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(_,(e,t)=>t),d.on(v,(e,t)=>t),n.on(p,()=>!0);let y=(0,l.createEffect)(()=>{se(e)}),b=(0,l.createEffect)(async()=>{await i.r()}),x=(0,l.createEffect)(async()=>{await g(e)}),S=(0,l.attach)({effect:x}),C=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:E,fn:()=>`starting`,target:s}),(0,l.sample)({clock:E,target:y}),(0,l.sample)({clock:E,target:C}),(0,l.sample)({clock:E,target:b}),(0,l.sample)({clock:C.done,target:w}),(0,l.sample)({clock:w.doneData,target:a}),(0,l.sample)({clock:T.doneData,target:o}),(0,l.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,l.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,l.createStore)(!1).on(b.done,()=>!0),O=(0,l.createStore)(!1).on(m,()=>!0),k=(0,l.createStore)(!1).on(S.done,()=>!0),A=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:A,filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(D,O,A,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:S}),(0,l.sample)({clock:(0,l.combine)(D,O,A,k,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,l.sample)({clock:[C.fail,w.fail,T.fail,x.fail,S.fail,b.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:_,setCondition:v}});function le(e){return(0,u.invoke)(ce,e)}var ue=(0,l.createDomain)(`predicate`),de=(0,u.createFactory)(({client:e})=>{let t=ue.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function V(e){return(0,u.invoke)(de,e)}var H=(e,t,n)=>{n.register({name:e,predicate:t})},U=(0,l.createDomain)(`feature`),fe=(0,u.createFactory)(({client:e})=>{let t=U.store({}),r=U.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,source:t,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:r},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=u.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();u.set(`${n}:${i}`,c);let l=await c;return{id:o.id,bucket:l,key:i,storage:o.feature.storage}}});(0,l.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:s}),(0,l.sample)({source:t,clock:d.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:c});let f=(0,l.combine)({allFeaturesStore:t,resolvedFeaturesStore:r}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,l.sample)({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,l.sample)({clock:[s.doneData,d.doneData],source:r,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}function m(e){return t.map(t=>t[e],{skipVoid:!1})}function h(e){let t=(0,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function pe(e){return(0,u.invoke)(fe,e)}var me=(e,t,n)=>{n.register({id:e,feature:t})},W=(0,l.createDomain)(`history`);function G(e,t){return{id:c.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var he=(0,u.createFactory)(()=>{let e=W.store({entries:[]}),t=W.event(),n=W.event(),r=W.event(),i=W.event();e.on(t,(e,t)=>({entries:[...e.entries,G(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),G(t.experienceId,t.node)]})),e.on(i,(e,t)=>t);function o(e,t){let n={lastStepIndex:-1,secondLastStepIndex:-1};for(let r=e.length-1;r>=0;r--){let i=e[r],o=i?.node;if(!(!o||!a.u(o))&&!(t&&i.experienceId!==t))if(n.lastStepIndex===-1)n.lastStepIndex=r;else{n.secondLastStepIndex=r;break}}return n}return e.on(r,(e,t)=>{let{secondLastStepIndex:n}=o(e.entries,t.experienceId),r=n===-1?e.entries:e.entries.slice(0,n+1);return{...e,entries:r}}),{push:t,replace:n,back:r,restore:i,entriesStore:e.map(e=>e.entries)}});function ge(){return(0,u.invoke)(he)}var _e=0,ve=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:_e++,at:new Date,payload:t}]),t},ye=(0,l.createDomain)(`field`),be=(0,u.createFactory)(()=>{let e=ye.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function xe(){return(0,u.invoke)(be)}var Se=(0,l.createDomain)(`step`),Ce=(0,u.createFactory)(()=>{let e=Se.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function we(){return(0,u.invoke)(Ce)}function Te(e,t){t.register(e)}var Ee=(0,l.createDomain)(`content`),De=(0,u.createFactory)(()=>{let e=Ee.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function Oe(){return(0,u.invoke)(De)}function ke(e,t){t.register(e)}var Ae=(0,l.createDomain)(`action`),je=(0,u.createFactory)(({client:e})=>{let t=Ae.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{key:t})=>e[t]!==void 0,fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({key:e,action:t})=>Object.freeze({key:e,action:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function s(t,n){let r=(0,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Me(e){return(0,u.invoke)(je,e)}var Ne=(e,t,n)=>{n.register({key:e,action:t})};function K(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function q(e){return e===null||e===``||Array.isArray(e)&&!e.length}function Pe(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function J(e){try{return JSON.stringify(e),!0}catch{return!1}}function Fe(e,t){return t.find(t=>t.key===e)??null}function Ie(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Le(e,t){if(e.type!==`object`||q(t))return null;if(e.multiple){if(!Array.isArray(t))return K(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return K(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!J(n))return K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}return null}return Array.isArray(t)?K(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?K(e,t,`This field expects an object value`,`Field expects an object value.`):J(t)?null:K(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function Re(e,t){if(q(t)||!Array.isArray(e.options)||e.options.length===0)return null;let n=Array.isArray(t)?t:[t];if(e.type===`object`){let r=new Set(e.options.map(e=>JSON.stringify(e.value)));return n.every(e=>r.has(JSON.stringify(e)))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!Pe(e)||e===null?!1:r.includes(e))?null:K(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function ze(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!q(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return K(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return K(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&q(r)?K(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?K(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Be=(0,l.createDomain)(`response`),Ve=(0,u.createFactory)(({client:e})=>{let n=Be.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,l.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Fe(t,e);if(!o){r.push({fieldKey:t,userMessage:`Field '${t}' not found`,systemMessage:`No field with key '${t}' exists. Available field keys are: ${e.map(e=>e.key).join(`,`)}.`,value:n});return}let c=Ie(o,n),l=await ze(s,o,c,a);if(l){r.push(l);return}let u=Le(o,c);if(u){r.push(u);return}let d=Re(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,l.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}return(0,l.sample)({clock:r,target:a.clearAll}),(0,l.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function He(e){return(0,u.invoke)(Ve,e)}var Ue=(0,l.createDomain)(`condition`),We=(0,u.createFactory)(()=>{let e=Ue.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Ge(){return(0,u.invoke)(We)}function Ke(){if(r.i()){let e=[document.currentScript,document.getElementById(`picked_script`),document.getElementById(`picked`),document.getElementById(`cvly`),document.getElementById(`cvly-x`)];for(let t of e)if(t?.dataset.api)return t.dataset.api}return`https://api.picked.app`}function qe(){if(!r.f())return{};let e=new URLSearchParams(window.location.search),t={},n=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&n.add(t);for(let r of n){let n=r.replace(`picked-`,``);t[n]=e.getAll(r)}let i=o.t(`s`);if(n.size>0)o.r.set(i,t);else{let e=o.r.get(i);if(e)return e.json()||{}}return t}var Y=o.t(`session`,`global`);function Je(){return r.r()?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}function Ye(){if(!r.s())return null;let e=o.n.get(Y);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Xe=(0,u.createFactory)(()=>{let e=Ye(),t={id:e?.id??Je()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}});return(0,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(Y).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Ze(){return(0,u.invoke)(Xe,void 0)}function X(){if(r.f())return globalThis.window.pickedConfig}function Qe(){if(r.f())return X()?.projectId}function $e(){if(!r.i())return;let e=document.getElementById(`picked_script`)||document.querySelector(`script#picked`)||document.getElementById(`cvly`);if(e)return e.dataset.projectid||e.getAttribute(`project-id`)||void 0}function Z(e){if(e.projectId)return e.projectId;let t=Qe();if(t)return t;let n=$e();if(n)return n;throw Error(`projectId is required. You can provide it via one of:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../object-CIkt7Fkr.cjs"),t=require("../rules-logic-CGZIYgAI.cjs"),n=require("../logger-CSTvAyyB.cjs"),r=require("../supports-DBzjGaWD.cjs"),i=require("../dom-CDrHc_j9.cjs"),a=require("../experience-instance-Nl39IDKx.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-B4atkKWy.cjs"),c=require("../id-Js-62re-.cjs");let l=require("effector"),u=require("@withease/factories");var d=(0,l.createDomain)(`experience`),f=(0,u.createFactory)(({client:e,experience:n})=>{let r=d.store(n),o=(0,l.createApi)(r,{merge(e,t){return{...e,...t.experience}}}),s=r.map(e=>({name:e.name,decisionLogic:e.condition,targetSelectors:e.targets,initializeOpenLogic:e.initializeOpen})),c=(0,l.combine)(r,e.components.listStore,(e,t)=>(e.componentName?t.find(t=>t.name===e.componentName):void 0)||t.find(t=>t.name===`experience:${e.id}`)||t.find(e=>e.name===`experience`),{skipVoid:!1}),u=(0,l.combine)(r,e.steps.indexStore,e.conditions.indexStore,(e,t,n)=>{let r=e.nodes.filter(a.u).map(e=>t[e.stepId]).filter(e=>e!==void 0),i=e.nodes.filter(a.l).map(e=>n[e.conditionId]).filter(e=>e!==void 0);return{steps:r,nodes:e.nodes,edges:e.edges,conditions:i}}),f=n.actions??[],p,m=(0,l.attach)({source:s,effect:(t,r)=>{let a=i.i(t.targetSelectors,n.id);a.forEach(({elements:e})=>e.forEach(e=>i.s(e,n.id))),i.t(a,n.id,n.key).forEach(t=>{r?e.experienceInstances.spawn(p,t,r):e.experienceInstances.spawn(p,t)})}}),h=(0,l.attach)({source:(0,l.combine)({preconditionPassed:e.preconditionPassedStore,isUser:e.session.store.map(e=>e.isUser,{skipVoid:!1}),config:s}),effect:async({preconditionPassed:r,isUser:a,config:o})=>{if(!r||!a)return!1;let{decisionLogic:s,targetSelectors:c}=o;return c.length===0||i.i(c,n.id).length<1?!1:s===void 0?!0:t.n(s)?await t.t(e,s)===!0:!0}}),g=(0,l.createEffect)(async()=>{if(!e.contentLoader)return!0;try{await e.contentLoader({id:n.id,key:n.key})}catch{`${n.id}`}return!0}),_=(0,l.createEvent)(),v=(0,l.createEvent)(),y=d.createStore(void 0,{skipVoid:!1}).on(_,(e,t)=>t).on(v,(e,t)=>t);return(0,l.sample)({clock:_,target:h}),(0,l.sample)({clock:h.doneData,source:y,filter:(e,t)=>t,fn:e=>e,target:m}),(0,l.sample)({clock:h.doneData,filter:Boolean,target:g}),(0,l.sample)({clock:v,source:y,fn:e=>e,target:m}),(0,l.sample)({clock:v,target:g}),p={id:n.id,key:n.key,name:n.name,configStore:s,treeStore:u,componentStore:c,actions:f,merge:o.merge,initialiseFx:m,shouldInitialiseFx:h,initialiseRequested:_,initialiseDirectly:v,prepareExperienceContentFx:g},p});function p(e){return(0,u.invoke)(f,e)}var m=(0,u.createFactory)(({client:e})=>{let t=d.store({}),n=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t}}}),r=(0,l.createEvent)(),i=(0,l.createEffect)(t=>{n.register(p({client:e,experience:t}))});(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]!==void 0,fn:(e,t)=>({existing:e[t.id],experience:t})}).watch(({existing:e,experience:t})=>{e?.merge({experience:t,strategy:`override`})}),(0,l.sample)({clock:r,source:t,filter:(e,t)=>e[t.id]===void 0,fn:(e,t)=>t,target:i});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}function s(e){return t.map(t=>Object.values(t).find(t=>t.key===e)??t[e],{skipVoid:!1})}let c=(0,l.attach)({source:t,effect:(e,t)=>{let n=`key`in t?Object.values(e).find(e=>e.key===t.key):e[t.id];if(!n){`key`in t?`${t.key}`:`${t.id}`;return}let{options:r}=t;r?.bypassCondition?n.initialiseDirectly(r):n.initialiseRequested(r)}});return{register:r,get:o,getById:o,getByKey:s,launch:c,open:(0,l.attach)({source:{experiences:t,instances:e.experienceInstances.listStore},effect:async({experiences:e,instances:t},n)=>{let r=`key`in n?Object.values(e).find(e=>e.key===n.key):e[n.id],i=t.filter(e=>e.experienceId===r?.id);if(i.length>0){for(let e of i)e.open();return}await c(`key`in n?{key:n.key,options:{...n.options,initialiseOpen:!0}}:{id:n.id,options:{...n.options,initialiseOpen:!0}})}}),listStore:a,initialiseExperiencesFx:(0,l.attach)({source:a,effect:e=>{for(let t of e)t.initialiseRequested(void 0)}})}});function h(e){return(0,u.invoke)(m,e)}var g=async e=>{await e.experiences.initialiseExperiencesFx()};function _(e){return(0,l.createEffect)(async()=>{await e()})}var v=(e,t,n)=>{let r=t.name,i=t.setup(e);if(i){let e=n[r]??{};n[r]=Object.freeze({...e,...i})}},y=(0,l.createDomain)(`component`),b=(0,u.createFactory)(({client:e,component:t,name:n})=>({name:n,component:t,frameworkStore:e.frameworks.getByName(t.frameworkName)}));function x(e){return(0,u.invoke)(b,e)}var S=(0,u.createFactory)(({client:e})=>{let t=y.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Component '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:t,component:n})=>x({client:e,name:t,component:n}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function C(e){return(0,u.invoke)(S,e)}var w=(e,t,n)=>{n.register({name:e,component:t})},T=(0,l.createDomain)(`framework`),E=(0,u.createFactory)(e=>{let t=T.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:t.framework}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Framework '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e],{skipVoid:!1})}return{register:i,getByName:o,listStore:a}});function D(e){return(0,u.invoke)(E,e)}var O=(e,t)=>{t.register({name:e.name,framework:e})},k=(0,u.createFactory)(({client:e})=>{let t=`window`in globalThis,n={location:t?globalThis.location:void 0,document:t?globalThis.document:void 0,sessionStorage:t?globalThis.sessionStorage:void 0,localStorage:t?globalThis.localStorage:void 0};return(0,l.combine)(e.responses.listStore,e.fields.listStore,(t,r)=>Object.freeze({client:e,responses:t,fields:r,...n}))});function A(e){return(0,u.invoke)(k,e)}function ee(e){return typeof e==`number`&&!isNaN(e)}function j(e){return typeof e==`string`}function M(e){return Array.isArray(e)}function N(e){return e instanceof Promise}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function F(e){if(ee(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function I(e){return`${e}`}var te={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>F(e)>F(t),">=":(e,t)=>F(e)>=F(t),"<":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<i;let a=F(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=F(e),i=F(t);if(n===void 0)return r<=i;let a=F(n);return r<=i&&i<=a},"!!":async e=>await R(e),"!":async e=>!await R(e),"%":(e,t)=>F(e)%F(t),log:e=>(console.log(e),e),in:(e,t)=>t?j(t)?t.indexOf(I(e))!==-1:M(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(I).join(``),substr:(e,t,n)=>{let r=I(e),i=F(t);if(n===void 0)return r.substr(i);let a=F(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>F(e)+F(t),0),"*":(...e)=>e.reduce((e,t)=>F(e)*F(t),1),"-":(e,t)=>{let n=F(e);return t===void 0?-n:n-F(t)},"/":(e,t)=>F(e)/F(t),min:(...e)=>Math.min(...e.map(F)),max:(...e)=>Math.max(...e.map(F)),merge:(...e)=>e.reduce((e,t)=>M(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=I(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=M(e[0])?e[0]:e,n=[];for(let e of t){let t=await L({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await L({missing:t},this);if(!M(n)||!M(t))return[];let r=n.filter(j);return t.filter(j).length-r.length>=F(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>j(e)&&j(t)&&e.startsWith(t),endsWith:(e,t)=>j(e)&&j(t)&&e.endsWith(t),regexp_matches(e,t){let n=e,r=``;if(M(e)){let[t,i]=e;n=t,r=i}return!j(n)||!j(r)?!1:new RegExp(n,r).test(I(t))},throw(e){throw Error(I(e))}};async function L(e,t){if(!e)return e;if(N(e))return L(await e,t);if(M(e))return Promise.all(e.map(e=>L(e,t)));if(!P(e))return e;let n=ne(e),r=n?e[n]??[]:[];switch(M(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await R(await L(r[e],t)))return L(r[e+1],t);return r.length%2==1?L(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await L(n,t),!await R(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await L(n,t),await R(e))return e;return e}case`map`:{let e=await L(r[0],t);return M(e)?await Promise.all(e.map(e=>L(r[1],e))):[]}case`filter`:{let e=await L(r[0],t);return M(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await R(await L(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await L(r[0],t);if(!M(e))return r.length>2?await L(r[2],t):null;let n=r[1],i=r.length>2?await L(r[2],t):null;for(let t of e)i=await L(n,{current:t,accumulator:i});return i}case`all`:{let e=await L(r[0],t);if(!M(e)||e.length===0)return!1;for(let t of e)if(!await R(await L(r[1],t)))return!1;return!0}case`some`:{let e=await L(r[0],t);if(!M(e))return!1;for(let t of e)if(await R(await L(r[1],t)))return!0;return!1}case`none`:{let e=await L(r[0],t);if(!M(e))return!0;for(let t of e)if(await R(await L(r[1],t)))return!1;return!0}case`catch`:try{return await L(r[0],t)}catch(e){return P(e)?await L(e,t):r[1]?await L(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>L(e,t))),a=n?te[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function R(e){return N(e)?R(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ne(e){return Object.keys(e)[0]}function z(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(typeof i!=`string`)return;let a=e.find(e=>e.key===i);if(a!==void 0)return async()=>n.has(i)?!1:await L(a.logic,{...t,conditions:z(e,t,new Set(n).add(i))})===!0}})}var re=(0,u.createFactory)(({client:e})=>(0,l.attach)({source:{stateSnapshot:e.stateSnapshotStore,predicates:e.predicates.listStore,actions:e.actions.listStore,features:e.features.listStore,responses:e.responses.getAllStore,conditions:e.conditions.listStore},effect:async({stateSnapshot:e,predicates:t,actions:n,features:r,responses:i,conditions:a},{rule:o,context:s})=>{let c=t.reduce((t,n)=>(t[n.name]=async(...t)=>await n.predicate({...e,args:t}),t),{}),l=n.reduce((t,n)=>(t[n.key]=async(...t)=>await n.action({...e,args:t},null)??void 0,t),{}),u=r.reduce((e,t)=>(e[t.id]=async()=>{let{bucket:e}=await t.getBucket();return e},e),{}),d={responses:i,location:typeof e.location==`object`?{hash:e.location.hash,host:e.location.host,hostname:e.location.hostname,href:e.location.href,origin:e.location.origin,pathname:e.location.pathname,port:e.location.port,protocol:e.location.protocol,search:e.location.search}:void 0,predicates:c,actions:l,features:u,...s};return await L(o,{...d,conditions:z(a,d,new Set)})}}));function ie(e){return(0,u.invoke)(re,e)}var ae=6e3,oe=o.t(`last_ping`,`global`),se=async e=>{try{let t=Date.now(),n=o.n.get(oe),r=0;if(n.isSet()&&(r=n.json()??0),r&&t-r<ae)return!0;let i={projectId:e.projectId,path:window.location.pathname},a={},c=document.getElementById(`picked_script`)?.dataset.verceltoken;c&&(a[`x-vercel-protection-bypass`]=c);let l=(await s.n(e.apiUrl,`ping`,i,a)).ok;return l&&n.set(t),l}catch{return!1}},B=(0,l.createDomain)(`lifecycle`),ce=(0,u.createFactory)(({client:e})=>{let n=B.store(!1),a=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),o=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),s=B.store(`idle`),c=B.store([]),u=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),d=(0,l.createStore)(void 0,{skipVoid:!1,domain:B}),f=(0,l.createEvent)(),p=(0,l.createEvent)(),m=(0,l.createEvent)(),h=(0,l.createEvent)(),_=(0,l.createEvent)(),v=(0,l.createEvent)();c.on(h,(e,t)=>[...e,t]),u.on(_,(e,t)=>t),d.on(v,(e,t)=>t),n.on(p,()=>!0);let y=(0,l.createEffect)(()=>{se(e)}),b=(0,l.createEffect)(async()=>{await i.r()}),x=(0,l.createEffect)(async()=>{await g(e)}),S=(0,l.attach)({effect:x}),C=(0,l.attach)({source:c,effect:async e=>{for(let t of e)await t()}}),w=(0,l.attach)({source:u,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),T=(0,l.attach)({source:d,effect:async n=>n===void 0?!0:typeof n==`boolean`?n:await t.t(e,n)===!0}),E=(0,l.sample)({clock:f,source:s,filter:e=>e===`idle`&&r.i(),fn:()=>void 0});(0,l.sample)({clock:E,fn:()=>`starting`,target:s}),(0,l.sample)({clock:E,target:y}),(0,l.sample)({clock:E,target:C}),(0,l.sample)({clock:E,target:b}),(0,l.sample)({clock:C.done,target:w}),(0,l.sample)({clock:w.doneData,target:a}),(0,l.sample)({clock:T.doneData,target:o}),(0,l.sample)({clock:w.doneData,filter:e=>e,target:T}),(0,l.sample)({clock:T.doneData,target:e.session.setIsUser}),(0,l.sample)({clock:T.doneData,fn:e=>({type:`user_decide`,value:e}),target:e.eventBus}),(0,l.sample)({clock:w.doneData,filter:e=>!e,fn:()=>void 0,target:m}),(0,l.sample)({clock:T.doneData,fn:()=>void 0,target:m}),(0,l.sample)({clock:m,fn:()=>({type:`initialize`}),target:e.eventBus});let D=(0,l.createStore)(!1).on(b.done,()=>!0),O=(0,l.createStore)(!1).on(m,()=>!0),k=(0,l.createStore)(!1).on(S.done,()=>!0),A=(0,l.combine)(a,o,(e,t)=>e===!0&&t===!0);return(0,l.sample)({clock:m,source:A,filter:e=>e,fn:()=>void 0,target:x}),(0,l.sample)({clock:(0,l.combine)(D,O,A,(e,t,n)=>e&&t&&n),filter:e=>e,fn:()=>void 0,target:S}),(0,l.sample)({clock:(0,l.combine)(D,O,A,k,(e,t,n,r)=>e&&t&&(!n||r)),filter:e=>e,fn:()=>void 0,target:p}),(0,l.sample)({clock:p,fn:()=>`ready`,target:s}),(0,l.sample)({clock:p,fn:()=>({type:`ready`}),target:e.eventBus}),(0,l.sample)({clock:p,source:e.session.store,fn:({id:e,isUser:t,identifiers:n})=>({type:`session`,id:e,isUser:t,identifiers:n}),target:e.eventBus}),(0,l.sample)({clock:[C.fail,w.fail,T.fail,x.fail,S.fail,b.fail],fn:()=>`failed`,target:s}),{start:f,readyStore:n,preconditionPassedStore:a,conditionPassedStore:o,lifecycleStageStore:s,registerPluginStartHook:h,setPrecondition:_,setCondition:v}});function le(e){return(0,u.invoke)(ce,e)}var ue=(0,l.createDomain)(`predicate`),de=(0,u.createFactory)(({client:e})=>{let t=ue.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.name]:{name:t.name,predicate:t.predicate}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{name:t})=>e[t]!==void 0,fn:(e,{name:t})=>`Predicate '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({name:e,predicate:t})=>Object.freeze({name:e,predicate:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.predicate,{skipVoid:!1})}function s(t){let n=(0,l.createStore)(()=>void 0,{skipVoid:!1}),r=(0,l.attach)({source:{predicate:o(t),snapshot:e.stateSnapshotStore},effect:({predicate:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n})}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:r}),(0,l.sample)({clock:r.doneData,filter:e=>e!==void 0,target:n}),r(),n}return{register:i,getByName:o,listStore:a,getEvokablePredicate:s}});function fe(e){return(0,u.invoke)(de,e)}var V=(e,t,n)=>{n.register({name:e,predicate:t})},H=(0,l.createDomain)(`feature`),pe=(0,u.createFactory)(({client:e})=>{let t=H.store({}),r=H.store([]),i=(0,l.createApi)(t,{register(e,t){return{...e,[t.id]:t.feature}}}),a=(0,l.createEvent)();(0,l.sample)({clock:a,source:t,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:a,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:i.register});let s=(0,l.createEffect)(async({id:e,key:t,storage:n=`local`})=>{let r=o.t(`feature:${e}:${t}`,`global`),i=(n===`session`?o.r:o.n).get(r).boolean();return i===null?null:{id:e,key:t,bucket:i,storage:n}}),c=(0,l.createEffect)(e=>{if(!e)return null;let t=o.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?o.r:o.n).set(t,e.bucket)}),u=new Map,d=(0,l.attach)({source:{allFeaturesStore:t,resolvedFeaturesStore:r},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let o=e[n];if(!o)throw Error(`Feature with id '${n}' not found`);let s=u.get(`${n}:${i}`);if(s!==void 0){let e=await s;return{id:o.id,bucket:e,key:i,storage:o.feature.storage}}let c=r();u.set(`${n}:${i}`,c);let l=await c;return{id:o.id,bucket:l,key:i,storage:o.feature.storage}}});(0,l.sample)({clock:i.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage}},target:s}),(0,l.sample)({source:t,clock:d.doneData,fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:c});let f=(0,l.combine)({allFeaturesStore:t,resolvedFeaturesStore:r}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,l.sample)({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:e},{id:t,key:n})=>!e.some(e=>e.id===t&&e.key===n),fn:(e,t)=>t,target:e.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,l.sample)({clock:[s.doneData,d.doneData],source:r,fn:(e,t)=>!t||e.some(e=>e.id===t.id&&e.key===t.key)?e:[...e,t],target:r});function p(e){return f.map(t=>t.find(t=>t.id===e))}function m(e){return t.map(t=>t[e],{skipVoid:!1})}function h(e){let t=(0,l.createStore)(async()=>void 0,{skipVoid:!1}),n=(0,l.attach)({source:p(e),effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,l.sample)({source:r,filter:t=>t.some(t=>t.id===e),target:n}),(0,l.sample)({clock:n.doneData,filter:e=>e!==void 0,target:t}),n(),t}return{register:a,getById:p,getByName:m,listStore:f,getEvokableFeature:h}});function me(e){return(0,u.invoke)(pe,e)}var he=(e,t,n)=>{n.register({id:e,feature:t})},U=(0,l.createDomain)(`history`);function W(e,t){return{id:c.t(`history-entry-${Date.now()}-${Math.random()}}`),node:t,at:Date.now(),experienceId:e}}var ge=(0,u.createFactory)(()=>{let e=U.store({entries:[]}),t=U.event(),n=U.event(),r=U.event(),i=U.event();e.on(t,(e,t)=>({entries:[...e.entries,W(t.experienceId,t.node)]})),e.on(n,(e,t)=>({entries:[...e.entries.slice(0,-1),W(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 _e(){return(0,u.invoke)(ge)}var ve=0,ye=e=>{let t=(0,l.createStore)([]);return t.on(e,(e,t)=>[...e,{id:ve++,at:new Date,payload:t}]),t},be=(0,l.createDomain)(`field`),xe=(0,u.createFactory)(()=>{let e=be.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.field.id]:t.field}},updateByKey(e,t){let n=Object.values(e).find(e=>e.key===t.fieldKey);return n?{...e,[n.id]:Object.assign({},n,t.updates)}:e}});function n(e){t.register({field:e})}let r={};e.watch(e=>{r=e});function i(e,n){let i=Object.values(r).find(t=>t.key===e)?.key;i&&t.updateByKey({fieldKey:i,updates:n})}let a=e.map(e=>Object.values(e));function o(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function s(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}function c(t){return e.map(e=>Object.values(e).find(e=>e.name===t)??null,{skipVoid:!1})}return{register:n,update:i,getById:o,getByKey:s,listStore:a,getByName:c}});function Se(){return(0,u.invoke)(xe)}var Ce=(0,l.createDomain)(`step`),we=(0,u.createFactory)(()=>{let e=Ce.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.step.id]:t.step}}});function n(e){t.register({step:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Te(){return(0,u.invoke)(we)}function Ee(e,t){t.register(e)}var De=(0,l.createDomain)(`content`),Oe=(0,u.createFactory)(()=>{let e=De.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.content.id]:t.content}}});function n(e){t.register({content:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}return{register:n,getById:i,listStore:r,indexStore:e}});function ke(){return(0,u.invoke)(Oe)}function Ae(e,t){t.register(e)}var je=(0,l.createDomain)(`action`),Me=(0,u.createFactory)(({client:e})=>{let t=je.store({}),r=(0,l.createApi)(t,{register(e,t){return{...e,[t.key]:{key:t.key,action:t.action}}}}),i=(0,l.createEvent)();(0,l.sample)({clock:i,source:t,filter:(e,{key:t})=>e[t]!==void 0,fn:(e,{key:t})=>`Action '${t}' already registered. Registering again will override the previous registration.`}).watch(e=>n.t(`warn`,e)),(0,l.sample)({clock:i,fn:({key:e,action:t})=>Object.freeze({key:e,action:t}),target:r.register});let a=t.map(e=>Object.values(e));function o(e){return t.map(t=>t[e]?.action,{skipVoid:!1})}function s(t,n){let r=(0,l.createStore)(()=>void 0,{skipVoid:!1}),i=n?{experience:n.experience}:null,a=(0,l.attach)({source:{action:o(t),snapshot:e.stateSnapshotStore},effect:({action:e,snapshot:t})=>{if(e)return(...n)=>e({...t,args:n},i)}});return(0,l.sample)({source:{responses:e.responses.listStore,fields:e.fields.listStore},target:a}),(0,l.sample)({clock:a.doneData,filter:e=>e!==void 0,target:r}),a(),r}return{register:i,getByKey:o,listStore:a,getEvokableAction:s}});function Ne(e){return(0,u.invoke)(Me,e)}var Pe=(e,t,n)=>{n.register({key:e,action:t})};function G(e,t,n,r){return{fieldKey:e.key,userMessage:n,systemMessage:r,value:t}}function K(e){return e===null||e===``||Array.isArray(e)&&!e.length}function Fe(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null}function q(e){try{return JSON.stringify(e),!0}catch{return!1}}function Ie(e,t){return t.find(t=>t.key===e)??null}function Le(e,t){return e.multiple&&(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)?[t]:t}function Re(e,t){if(e.type!==`object`||K(t))return null;if(e.multiple){if(!Array.isArray(t))return G(e,t,`This field expects multiple values`,`Field expects an array of objects.`);for(let n of t){if(typeof n!=`object`||!n)return G(e,t,`This field expects object values`,`Field expects an array of objects, but received non-object value.`);if(!q(n))return G(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)?G(e,t,`This field expects a single value`,`Field expects a single object, not an array.`):typeof t!=`object`||!t?G(e,t,`This field expects an object value`,`Field expects an object value.`):q(t)?null:G(e,t,`This field contains non-serializable data`,`Field value contains non-JSON-serializable data (functions, circular references, etc.).`)}function ze(e,t){if(K(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:G(e,t,`This field expects a valid option`,`Field expects a valid option from the defined choices.`)}let r=e.options.map(e=>e.value);return n.every(e=>!Fe(e)||e===null?!1:r.includes(e))?null:G(e,t,`This field expects a valid option`,`Field expects a valid option. Valid options are: ${r.join(`, `)}`)}async function Be(t,n,r,i){if(n.validation&&!e.t(n.validation)&&!K(r)){let e=i?{$input:r,responses:i}:{$input:r},a=await t(n.validation,e);if(typeof a==`string`)return G(n,r,a,`Field validation resulted in an error: ${a}.`);if(a===!1)return G(n,r,`This field is invalid`,`Field validation resulted in an unspecified error.`)}return n.required&&K(r)?G(n,r,`This field is required`,`Field is required.`):!n.multiple&&Array.isArray(r)&&r.length>1?G(n,r,`This field expects a single response`,`Field expects a single response.`):null}var Ve=(0,l.createDomain)(`response`),He=(0,u.createFactory)(({client:e})=>{let n=Ve.store({}),r=(0,l.createEvent)(),i=(0,l.createEvent)(),a=(0,l.createApi)(n,{register(e,t){return{...e,[t.fieldKey]:t.response}},registerBatch(e,t){return{...e,...t}},clear(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))},clearAll(){return{}}});function o(e,t){if(typeof e==`string`){if(t===void 0)throw Error(`Response is required when registering a single field`);a.register({fieldKey:e,response:t})}else a.registerBatch(e)}let s=(n,r)=>t.t(e,n,r),c=(0,l.attach)({source:{allFields:e.fields.listStore,existingResponses:n},effect:async({allFields:e,existingResponses:t},n)=>{let r=[],i={},a={...t,...n},o=Object.entries(n),c=await Promise.allSettled(o.map(async([t,n])=>{let o=Ie(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=Le(o,n),l=await Be(s,o,c,a);if(l){r.push(l);return}let u=Re(o,c);if(u){r.push(u);return}let d=ze(o,c);if(d){r.push(d);return}i[o.key]=n}));for(let[e,t]of c.entries()){if(t.status!==`rejected`)continue;let n=o[e];if(!n)continue;let[i,a]=n,s=t.reason instanceof Error?t.reason.message:String(t.reason);r.push({fieldKey:i,userMessage:`An unexpected error occurred validating this field`,systemMessage:`Validation threw for field '${i}': ${s}`,value:a})}return{responsesToCommit:i,validationErrors:r}}});async function u(e){return c(e)}let d=(0,l.attach)({source:n,effect:async(e,t)=>{let{responsesToCommit:n,validationErrors:r}=await c(t);return r.length?{errors:r}:(a.registerBatch(n),{errors:[]})}});async function f(e){return d(e)}let p=n.map(e=>e),m=n.map(e=>Object.entries(e).map(([e,t])=>({fieldKey:e,value:t})));function h(e){return(0,l.combine)({f:e,s:n},({f:e,s:t})=>{let n=e?t[e.key]??null:null;return n===null?e?.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:null:n})}function g(t){return h(e.fields.getById(t))}function _(t){return h(e.fields.getByKey(t))}function v(t){return h(e.fields.getByName(t))}return(0,l.sample)({clock:r,target:a.clearAll}),(0,l.sample)({clock:i,target:a.clear}),{register:o,clearAll:r,clear:i,commit:f,getResponsesToCommit:u,listStore:m,getAllStore:p,getByFieldId:g,getByFieldKey:_,getByFieldName:v}});function Ue(e){return(0,u.invoke)(He,e)}var We=(0,l.createDomain)(`condition`),Ge=(0,u.createFactory)(()=>{let e=We.store({}),t=(0,l.createApi)(e,{register(e,t){return{...e,[t.condition.id]:t.condition}}});function n(e){t.register({condition:e})}let r=e.map(e=>Object.values(e));function i(t){return e.map(e=>e[t]??null,{skipVoid:!1})}function a(t){return e.map(e=>Object.values(e).find(e=>e.key===t)??null,{skipVoid:!1})}return{register:n,getById:i,getByKey:a,listStore:r,indexStore:e}});function Ke(){return(0,u.invoke)(Ge)}function qe(){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 Je(){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 J=o.t(`session`,`global`);function Ye(){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 Xe(){if(!r.s())return null;let e=o.n.get(J);if(!e.isSet())return null;try{return e.json()}catch{return null}}var Ze=(0,u.createFactory)(()=>{let e=Xe(),t={id:e?.id??Ye()};e?.isUser!==void 0&&(t.isUser=e.isUser),e?.identifiers&&Object.keys(e.identifiers).length>0&&(t.identifiers=e.identifiers);let n=(0,l.createStore)(t),i=(0,l.createApi)(n,{setIsUser:(e,t)=>({...e,isUser:t}),setIdentifier:(e,{key:t,value:n})=>({...e,identifiers:{...e.identifiers??{},[t]:n}}),removeIdentifier:(e,t)=>{let n=e.identifiers;if(!n||!(t in n))return e;let r={};for(let[e,i]of Object.entries(n))e!==t&&(r[e]=i);let i={id:e.id};return e.isUser!==void 0&&(i.isUser=e.isUser),Object.keys(r).length>0&&(i.identifiers=r),i}});return(0,l.sample)({source:n,target:(0,l.attach)({source:n,effect:e=>{if(r.s())try{o.n.get(J).set(e)}catch{}}})}),{store:n,setIsUser:i.setIsUser,setIdentifier:i.setIdentifier,removeIdentifier:i.removeIdentifier}});function Qe(){return(0,u.invoke)(Ze,void 0)}function Y(){if(r.f())return globalThis.window.pickedConfig}function $e(){if(r.f())return Y()?.projectId}function et(){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 tt(e){if(e.projectId)return e.projectId;let t=$e();if(t)return t;let n=et();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
|
|
4
|
+
(3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes a data-projectid (or project-id) attribute.`)}function X(e){return e==null||e===``||Number.isNaN(e)}var nt={default:(e,t)=>X(e)?String(t??``):String(e),append:(e,t)=>t&&!X(e)?`${e} ${t}`:e,prepend:(e,t)=>t&&!X(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 rt(e){return typeof e==`object`&&!!e}function Z(e,t){let n=t;for(let t of e.split(`.`))if(rt(n)&&t in n)n=n[t];else return;return typeof n==`function`?n():n}function it(e,t){let n=e.split(`|`).map(e=>e.trim()),r=Z(n.shift()??``,t);for(let e of n){let[t,...n]=e.split(`:`),i=t?.trim()??``,a=n.join(`:`).trim().replaceAll(/(?:^['"]|['"]$)/g,``),o=nt[i];o&&(r=o(r,a))}return X(r)?``:typeof r==`object`?JSON.stringify(r):String(r)}function at(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+=it(i.trim(),t)}else n+=e[r++];return n}var Q=class{static logger=n.t;options;dataSource=null;contentLoader;plugins={};eventBus=(0,l.createEvent)();events;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session=Qe();searchParams=Je();history=_e();components=C({client:this});experienceInstances=a.n({client:this});experiences=h({client:this});frameworks=D({client:this});predicates=fe({client:this});features=me({client:this});conditions=Ke();fields=Se();responses=Ue({client:this});steps=Te();contents=ke();actions=Ne({client:this});conditionResults=a.r();stateSnapshotStore=A({client:this});evaluateRuleLogicFx=ie({client:this});start;readyStore;preconditionPassedStore;conditionPassedStore;lifecycleStageStore;lifecycle=le({client:this});renderStringFx=(0,l.attach)({source:this.responses.listStore,effect:(e,{template:t,context:n})=>{let r={};for(let t of e)r[t.fieldKey]=t.value;return at(t,{...n,responses:r})}});constructor(e){this.events=ye(this.eventBus),this.projectId=tt(e),this.options=Object.freeze(e),this.apiUrl=e.apiUrl||qe(),this.dashboardUrl=e.dashboardUrl??`https://dashboard.picked.app`,this.documentationSiteUrl=e.documentationSiteUrl??`https://docs.picked.app`,this.start=this.lifecycle.start,this.readyStore=this.lifecycle.readyStore,this.preconditionPassedStore=this.lifecycle.preconditionPassedStore,this.conditionPassedStore=this.lifecycle.conditionPassedStore,this.lifecycleStageStore=this.lifecycle.lifecycleStageStore,this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupComponents(),this.lifecycle.setPrecondition(e.precondition),this.lifecycle.setCondition(e.condition),this.eventBus({type:`load`,version:s.r()}),this.maybeStartPreviewBridge()}maybeStartPreviewBridge(){!r.f()||!r.t()||this.searchParams[`preview-token`]?.[0]&&Promise.resolve().then(()=>require("../preview-bridge-CpX1BkSA.cjs")).then(e=>e.initPreviewBridge()).catch(()=>void 0)}registerFramework=e=>{O(e,this.frameworks)};registerComponent=(e,t)=>{w(e,t,this.components)};registerPlugin=e=>{v(this,e,this.plugins);let t=this.plugins[e.name];t?.onStart&&this.lifecycle.registerPluginStartHook(t.onStart)};registerFeature=(e,t)=>{he(e,t,this.features)};registerPredicate=(e,t)=>{V(e,t,this.predicates)};registerCondition=e=>{this.conditions.register(e)};registerField=e=>{this.fields.register(e)};registerStep=e=>{Ee(e,this.steps)};registerContent=e=>{Ae(e,this.contents)};registerAction=(e,t)=>{Pe(e,t,this.actions)};registerExperience=e=>{e.component&&w(`experience:${e.id}`,e.component,this.components),this.experiences.register(e)};launchExperienceById=async(e,t)=>{this.experiences.launch({id:e,options:t})};launchExperienceByKey=async(e,t)=>{this.experiences.launch({key:e,options:t})};openExperienceById=async e=>{this.experiences.open({id:e})};openExperienceByKey=async e=>{this.experiences.open({key:e})};setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(e=>{this.registerPlugin(e)});return}let t=typeof e==`function`?e():e;if(Array.isArray(t)){t.forEach(e=>this.registerPlugin(e));return}this.registerPlugin(t)})}setupFeatures(){let e=this.options.features;e&&Object.entries(e).forEach(([e,t])=>{let n=typeof t==`function`?t():t;this.registerFeature(e,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(e=>{try{let[t,n]=e.split(`:`);if(!t||!n)return;let r=n;r===`true`&&(r=!0),r===`false`&&(r=!1),this.registerFeature(t,{key:`${r}`,name:t,decide:()=>r,storage:`session`})}catch{}})}setupPredicates(){let e=this.options.predicates;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerPredicate(e,t)})}setupActions(){let e=this.options.actions;e&&Object.entries(e).forEach(([e,t])=>{if(typeof t!=`function`){`${e}`;return}this.registerAction(e,t)})}setupComponents(){let e=this.options.components;e&&Object.entries(e).forEach(([e,t])=>{this.registerComponent(e,t)})}getPluginConfig=e=>this.plugins[e]??{}},ot=`application/picked-javascript`,st=`application/picked-module`,ct=`data-picked-hydrated`;async function $(e){if(!(`document`in globalThis))return;let t=`application/picked-module`,n=`data-picked-hydrated`;function r(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.replaceWith(r),i}let i=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 i){if(!e.isConnected)continue;let n=r(e,e.getAttribute(`type`)===t?`module`:null);n&&await n}}function lt(){return`<script>(${$.toString()})(document)<\/script>`}function ut(e){return typeof e==`object`&&!!e&&`id`in e&&typeof e.id==`string`&&`content`in e&&(typeof e.content==`string`||e.content===null)}function dt(e){return{$$type:`lazy-component`,load:e}}function ft(e){return typeof e==`object`&&!!e&&`$$type`in e&&e.$$type===`lazy-component`}var pt=e=>{let t=new Q(e);return r.m(t),t};exports.PICKED_HYDRATED_ATTR=ct,exports.PICKED_MODULE_SCRIPT_TYPE=st,exports.PICKED_SCRIPT_TYPE=ot,exports.Picked=Q,exports.buildRehydrateBootstrap=lt,exports.createClient=pt,exports.createPluginEffect=_,exports.createStorageKey=o.t,exports.evaluateRuleLogic=t.t,exports.getPickedConfig=Y,exports.isHtmlAssetValue=ut,exports.isInsideIframe=r.t,exports.isLazyLoader=ft,exports.isPickedRoot=i.a,exports.lazyComponent=dt,exports.localStore=o.n,exports.rehydrateScripts=$,exports.sessionStore=o.r,exports.subscribe=o.i,exports.supportsCookies=r.n,exports.supportsCryptoRandomUUID=r.r,exports.supportsDocument=r.i,exports.supportsHistory=r.a,exports.supportsIntersectionObserver=r.o,exports.supportsLocalStorage=r.s,exports.supportsLocation=r.c,exports.supportsSessionStorage=r.l,exports.supportsShadowRoot=r.u,exports.supportsWebComponents=r.d,exports.supportsWindow=r.f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../api-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../api-B4atkKWy.cjs"),t=require("../../../plugin-B0aVJl2T.cjs");exports.createClientHeaders=e.i,exports.dynamicExperiencesPlugin=t.t,exports.fetchExperienceContent=t.n,exports.fetchProject=t.r;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-Nl39IDKx.cjs"),t=require("../../plugin-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-Nl39IDKx.cjs"),t=require("../../plugin-B0aVJl2T.cjs");let n=require("effector");var r=1e4;function i(e){if(e?.location!==void 0)return{location:e.location}}function a(t,n){return t.nodes.filter(e.u).some(e=>n.get(e.stepId)===!0)}async function o(n,o){let{projectConfig:s}=o,c=n.session.store.getState().id;n.conditionResults.reset(),t.i(n,s,{isPreview:!1,sessionId:c});let l=i(o.attributes),u=o.timeoutMs??r,d=new Map(s.steps.map(e=>[e.id,e.layoutContentId!==void 0&&e.layoutContentId!==null])),f=[];for(let t of s.experiences)await e.o(n,{condition:t.condition},{context:l})&&f.push(t);let p=new Map;for(let e of f){if(!a(e,d))continue;let r=o.getContent?await o.getContent({id:e.id,key:e.key},{previewToken:o.previewToken}):await t.n(n.apiUrl,n.projectId,e.id,{previewToken:o.previewToken,signal:AbortSignal.timeout(u)});if(r)for(let e of r.content)p.set(e.id,e)}return{versionId:s.versionId,projectConfig:s,content:Array.from(p.values()),conditionResults:n.conditionResults.store.getState()}}function s(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:t=>e(t),reject:e=>t(e)}}function c(t,r){let{promise:i,resolve:a}=s(),o=(0,n.createEvent)(),c=(0,n.createEvent)(),l=(0,n.createEvent)(),u=(0,n.createEvent)(),d=(0,n.createEvent)(),f=t.experiences.listStore.map(n=>n.map(n=>e.t({client:t,experience:n}))),p=(0,n.createStore)({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),m=(0,n.createEffect)(async e=>{let r=(0,n.attach)({source:e.experience.componentStore,effect:async(n,r)=>{let i=e.availableRenderers[r];return n&&i?.isValidComponent(n.component)?{rendered:await i.render(n.component,t,e.experience),rendererIndex:r}:null}}),i=e.startRendererIndex??0;for(let t=i;t<e.availableRenderers.length;t++){let e=await r(t);if(e)return e}return null}),h=(0,n.createEffect)(async({experience:e,availableRenderers:t,startRendererIndex:n=0})=>e?m({experience:e,availableRenderers:t,startRendererIndex:n}):null);return p.on(l,(e,t)=>({...e,renderedExperiences:[...e.renderedExperiences,t],currentExperienceIndex:e.currentExperienceIndex+1})).on(d,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(u,e=>({...e,isComplete:!0})).reset(o),(0,n.sample)({clock:o,target:c}),(0,n.sample)({clock:c,source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex<e.length&&!t.isComplete,fn:({experiences:e,state:t})=>({experience:e[t.currentExperienceIndex],availableRenderers:r,startRendererIndex:0}),target:h}),(0,n.sample)({clock:h.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),(0,n.sample)({clock:l,target:c}),(0,n.sample)({clock:h.doneData,filter:e=>e===null,target:d}),(0,n.sample)({clock:d,target:c}),(0,n.sample)({clock:[c,d,l],source:{experiences:f,state:p},filter:({experiences:e,state:t})=>t.currentExperienceIndex>=e.length,target:u}),(0,n.sample)({clock:u,target:(0,n.attach)({source:p,effect:e=>{e.isComplete&&a(e.renderedExperiences)}})}),o(),i}exports.createExperienceInstance=e.t,exports.evaluateConditionMemo=e.i,exports.hashRule=e.a,exports.isExperienceActive=e.o,exports.registerProjectConfig=t.i,exports.render=c,exports.ruleReferencesAction=e.s,exports.ruleReferencesActionDeep=e.c,exports.serialize=o;
|
|
@@ -31,6 +31,49 @@ Two field types point at library items:
|
|
|
31
31
|
|
|
32
32
|
Add the field to a [layout](/content/layouts), then pick a library item when filling in the [Content Entry](/content/content-entries).
|
|
33
33
|
|
|
34
|
+
## Pick an asset
|
|
35
|
+
|
|
36
|
+
Every Asset field opens the same picker: click **Choose file** (or **Replace** on a field that already has a value) to open a modal with two tabs, **Library** (browse existing assets) and **Upload** (add a new file).
|
|
37
|
+
|
|
38
|
+
<Screenshot
|
|
39
|
+
route="/{orgSlug}/{projectId}/design-systems/new"
|
|
40
|
+
wait='button:has-text("Upload file")'
|
|
41
|
+
click='button:has-text("Upload file")'
|
|
42
|
+
selector="[role=dialog]"
|
|
43
|
+
alt="The asset picker modal on the Picked dashboard, showing the Library tab with its search box, type filter, and Sort by menu"
|
|
44
|
+
renderWidth={1072}
|
|
45
|
+
renderHeight={790}
|
|
46
|
+
/>
|
|
47
|
+
|
|
48
|
+
### Search, filter, and sort
|
|
49
|
+
|
|
50
|
+
The Library tab has three controls for narrowing a large asset list, all applied on the server across the whole library, not just the assets already loaded:
|
|
51
|
+
|
|
52
|
+
- **Search:** filters by file name as you type.
|
|
53
|
+
- **Type filter:** narrows to a media-type bucket (All types, Images, Video, Audio, Documents, or Archives).
|
|
54
|
+
- **Sort by:** orders by Name or Date uploaded, each ascending or descending.
|
|
55
|
+
|
|
56
|
+
:::note
|
|
57
|
+
Results are paginated. Use **Load more** at the bottom of the list to fetch the next page.
|
|
58
|
+
:::
|
|
59
|
+
|
|
60
|
+
### Select one or several assets
|
|
61
|
+
|
|
62
|
+
The picker adapts to how many assets the field accepts:
|
|
63
|
+
|
|
64
|
+
- A field that holds a single asset (a layout's Asset field, or a design system's guidance file) shows a **radio** indicator next to each row. Picking a new asset replaces the current one.
|
|
65
|
+
- A surface that accepts several assets at once (for example, a workbench's Files tab) shows a **checkbox** indicator and a running selection count in the detail panel.
|
|
66
|
+
|
|
67
|
+
The detail panel on the right shows the selected asset's kind, dimensions, size, and upload date.
|
|
68
|
+
|
|
69
|
+
### Open an asset in a new tab
|
|
70
|
+
|
|
71
|
+
Each row, and the detail panel for the currently selected asset, has an **Open in new tab** control. It links to the asset's full detail page without losing your current selection in the picker.
|
|
72
|
+
|
|
73
|
+
:::tip
|
|
74
|
+
Use this to double-check an asset (its full-size preview, every uploaded version) before committing to it.
|
|
75
|
+
:::
|
|
76
|
+
|
|
34
77
|
## HTML assets
|
|
35
78
|
|
|
36
79
|
Upload a `.html` file and reference it from an **HTML asset** field. On upload, Picked runs an advisory scan that guides you but never blocks the upload. It surfaces performance, SEO, and accessibility findings so you can improve the file before publishing:
|