@picked/client 0.0.50-next.3 → 0.0.50

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 (51) hide show
  1. package/dist/api-BwTaomem.cjs +1 -0
  2. package/dist/api-DWBcrf98.js +37 -0
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/plugins/create-experience/index.js +1 -1
  5. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  6. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
  7. package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
  8. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  9. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  10. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  11. package/dist/cjs/plugins/web-components/index.js +1 -1
  12. package/dist/cjs/plugins/window-object/index.js +1 -1
  13. package/dist/cjs/server/index.js +1 -1
  14. package/dist/esm/index.js +1126 -1220
  15. package/dist/esm/plugins/create-experience/index.js +461 -468
  16. package/dist/esm/plugins/dynamic-experiences/index.js +106 -123
  17. package/dist/esm/plugins/experience-browser-storage/index.js +32 -37
  18. package/dist/esm/plugins/history-browser-storage/index.js +23 -25
  19. package/dist/esm/plugins/responses-browser-storage/index.js +36 -39
  20. package/dist/esm/plugins/responses-indexeddb/index.js +81 -80
  21. package/dist/esm/plugins/single-page-app/index.js +31 -35
  22. package/dist/esm/plugins/web-components/index.js +18 -20
  23. package/dist/esm/plugins/window-object/index.js +9 -9
  24. package/dist/esm/server/index.js +95 -89
  25. package/dist/experience-instance-BRpI9I4s.js +710 -0
  26. package/dist/experience-instance-BUTnwbSJ.cjs +1 -0
  27. package/dist/id-BniPxOdF.js +4 -0
  28. package/dist/id-CIbS4P60.cjs +1 -0
  29. package/dist/logger-6z_gb4rA.js +4 -0
  30. package/dist/logger-fbvQC40v.cjs +1 -0
  31. package/dist/object-BReQiaSS.cjs +1 -0
  32. package/dist/object-Clj5zVr1.js +24 -0
  33. package/dist/storage-BFjb8azI.cjs +1 -0
  34. package/dist/storage-DyxpJ0pg.js +101 -0
  35. package/dist/supports-0XIfd4-R.js +85 -0
  36. package/dist/supports-Dsjg-82e.cjs +1 -0
  37. package/package.json +5 -5
  38. package/dist/api-4mY9vhi4.cjs +0 -1
  39. package/dist/api-D1FqIUly.js +0 -32
  40. package/dist/experience-instance-BsXG5XJ4.cjs +0 -1
  41. package/dist/experience-instance-fvSEb72i.js +0 -819
  42. package/dist/id-BKIWbSTy.cjs +0 -1
  43. package/dist/id-BW-g3y32.js +0 -6
  44. package/dist/logger-BsmHUUw1.cjs +0 -1
  45. package/dist/logger-C9a75KZn.js +0 -5
  46. package/dist/object-BbFTsGh3.cjs +0 -1
  47. package/dist/object-JwZ58NOH.js +0 -28
  48. package/dist/storage-Be5xWNPC.cjs +0 -1
  49. package/dist/storage-Co_LbKr_.js +0 -239
  50. package/dist/supports-8YT4QKI7.js +0 -95
  51. package/dist/supports-YvpQZxbh.cjs +0 -1
@@ -0,0 +1 @@
1
+ const e=require(`./object-BReQiaSS.cjs`);require(`./logger-fbvQC40v.cjs`);const t=require(`./supports-Dsjg-82e.cjs`);let n=require(`effector`),r=require(`@withease/factories`);function i(e){return typeof e==`number`&&!isNaN(e)}function a(e){return typeof e==`string`}function o(e){return Array.isArray(e)}function s(e){return e instanceof Promise}function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function l(e){if(i(e))return e;let t=parseFloat(`${e}`);return isNaN(t)?0:t}function u(e){return`${e}`}var d={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>l(e)>l(t),">=":(e,t)=>l(e)>=l(t),"<":(e,t,n)=>{let r=l(e),i=l(t);if(n===void 0)return r<i;let a=l(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=l(e),i=l(t);if(n===void 0)return r<=i;let a=l(n);return r<=i&&i<=a},"!!":async e=>await p(e),"!":async e=>!await p(e),"%":(e,t)=>l(e)%l(t),log:e=>(console.log(e),e),in:(e,t)=>t?a(t)?t.indexOf(u(e))!==-1:o(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(u).join(``),substr:(e,t,n)=>{let r=u(e),i=l(t);if(n===void 0)return r.substr(i);let a=l(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)=>l(e)+l(t),0),"*":(...e)=>e.reduce((e,t)=>l(e)*l(t),1),"-":(e,t)=>{let n=l(e);return t===void 0?-n:n-l(t)},"/":(e,t)=>l(e)/l(t),min:(...e)=>Math.min(...e.map(l)),max:(...e)=>Math.max(...e.map(l)),merge:(...e)=>e.reduce((e,t)=>o(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=u(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=o(e[0])?e[0]:e,n=[];for(let e of t){let t=await f({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let n=await f({missing:t},this);if(!o(n)||!o(t))return[];let r=n.filter(a);return t.filter(a).length-r.length>=l(e)?[]:r},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},regexp_matches(e,t){let n=e,r=``;if(o(e)){let[t,i]=e;n=t,r=i}return!a(n)||!a(r)?!1:new RegExp(n,r).test(u(t))},throw(e){throw Error(u(e))}};async function f(e,t){if(!e)return e;if(s(e))return f(await e,t);if(o(e))return Promise.all(e.map(e=>f(e,t)));if(!c(e))return e;let n=m(e),r=n?e[n]??[]:[];switch(o(r)||(r=[r]),n){case`if`:case`?:`:for(let e=0;e<r.length-1;e+=2)if(await p(await f(r[e],t)))return f(r[e+1],t);return r.length%2==1?f(r[r.length-1],t):null;case`and`:{let e=null;for(let n of r)if(e=await f(n,t),!await p(e))return e;return e}case`or`:{let e=null;for(let n of r)if(e=await f(n,t),await p(e))return e;return e}case`map`:{let e=await f(r[0],t);return o(e)?await Promise.all(e.map(e=>f(r[1],e))):[]}case`filter`:{let e=await f(r[0],t);return o(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await p(await f(r[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await f(r[0],t);if(!o(e))return r.length>2?await f(r[2],t):null;let n=r[1],i=r.length>2?await f(r[2],t):null;for(let t of e)i=await f(n,{current:t,accumulator:i});return i}case`all`:{let e=await f(r[0],t);if(!o(e)||e.length===0)return!1;for(let t of e)if(!await p(await f(r[1],t)))return!1;return!0}case`some`:{let e=await f(r[0],t);if(!o(e))return!1;for(let t of e)if(await p(await f(r[1],t)))return!0;return!1}case`none`:{let e=await f(r[0],t);if(!o(e))return!0;for(let t of e)if(await p(await f(r[1],t)))return!1;return!0}case`catch`:try{return await f(r[0],t)}catch(e){return c(e)?await f(e,t):r[1]?await f(r[1],e):e instanceof Error?e.message:e}}let i=await Promise.all(r.map(e=>f(e,t))),a=n?d[n]:void 0;if(!a)throw Error(`Unrecognized operation ${n}`);return a.apply(t,i)}async function p(e){return s(e)?p(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function m(e){return Object.keys(e)[0]}function h(t){return!e.t(t)}async function g(e,t,n){let r=e.getStateSnapshot(),i=e.predicates.listStore.getState().reduce((e,t)=>({...e,[t.name]:(...e)=>t.predicate({...r,args:e})}),{}),a=e.features.listStore.getState().reduce((e,t)=>({...e,[t.id]:async()=>{let{bucket:e}=await t.getBucket();return e}}),{});return await f(t,{...n,responses:e.responses.getAllStore.getState(),location:typeof r.location==`object`?{hash:r.location.hash,host:r.location.host,hostname:r.location.hostname,href:r.location.href,origin:r.location.origin,pathname:r.location.pathname,port:r.location.port,protocol:r.location.protocol,search:r.location.search}:void 0,predicates:i,features:a})}function _(e){return!t.d()||!t.r()?[]:Array.from(window.document.querySelectorAll(e)).filter(e=>e instanceof HTMLElement)}var v=`open`;function y(e){if(!t.l())throw Error(`Shadow DOM is not supported in this environment`);return e.attachShadow({mode:v})}function b(){return new Promise((e,n)=>{if(!t.r()){n();return}document.readyState===`loading`?document.addEventListener(`readystatechange`,()=>e(),{once:!0}):e()})}function x(e,t){let n=new MutationObserver(r=>{document.contains(e)||(n.disconnect(),t())});n.observe(document.body,{childList:!0,subtree:!0})}var S=`picked-root`,C=`picked-target`,w=`picked-root`;function T(e,t){return[...e,{selector:`${w}[experience-id="${t}"]`,placement:`replace`}].flatMap(e=>{let n=_(e.selector).filter(e=>!O(e,t)&&!k(e,t));return{...e,elements:n}})}function E(e,t){return e.flatMap(e=>e.elements.map(n=>j(n,e.placement,t)))}function D(e,t){e.classList.add(C),e.classList.add(`${C}-${t}`)}function O(e,t){return t?e.classList.contains(`${C}-${t}`):e.classList.contains(`${C}`)}function k(e,t){return t?e.classList.contains(`${S}-${t}`):e.classList.contains(S)}function A(e){let t=document.createElement(`div`);return t.style.display=`block`,t.classList.add(S),t.classList.add(`${S}-${e}`),t}function j(e,t,n){let r,i=A(n);if(e instanceof Document)r=e.body.appendChild(i);else{switch(t){case`replace`:e.replaceWith(i);break;case`before`:e.before(i);break;case`after`:e.after(i);break;case`prepend`:e.prepend(i);break;default:e.append(i);break}r=i}return r}function M(e){return e.type===`conditional`}function N(e){return e.type===`step`}function P(e){return e.type===`experience`}function F(e){return e.type===`origin`}function I(e){return e.type===`action`}var L=(e,t,n,r,i=new Set)=>i.has(n.id)?[]:(i.add(n.id),N(n)&&!r?[n]:t.filter(e=>e.sourceNodeId===n.id).flatMap(n=>{let r=e.find(e=>e.id===n.destinationNodeId);return r?L(e,t,r,!1,i):[]})),R=(e,t,n)=>L(e,t,n,!0,new Set),z=(e,t,n,r,i=new Set)=>{if(i.has(n.id))return[-1,-1];i.add(n.id);let a=t.filter(e=>e.sourceNodeId===n.id);if(a.length===0)return[0,0];let o=1/0,s=-1/0;for(let n of a){let r=e.find(e=>e.id===n.destinationNodeId);if(!r)continue;let[a,c]=z(e,t,r,!1,new Set(i));a!==-1&&(o=Math.min(o,a+1),s=Math.max(s,c+1))}return o===1/0?[-1,-1]:[o,s]},B=(e,t,n)=>z(e,t,n,!0,new Set),V=(e,t,n,r=new Set)=>{if(r.has(n.id))return[-1,-1];if(r.add(n.id),n.type===`origin`)return[0,0];let i=t.filter(e=>e.destinationNodeId===n.id);if(i.length===0)return[-1,-1];let a=1/0,o=-1/0;for(let n of i){let i=e.find(e=>e.id===n.sourceNodeId);if(!i)continue;let[s,c]=V(e,t,i,new Set(r));s!==-1&&(a=Math.min(a,s+1),o=Math.max(o,c+1))}return a===1/0?[-1,-1]:[a,o]},H=(e,t,n)=>V(e,t,n,new Set),U=e=>e.find(e=>e.type===`origin`)||null,W=(e,t,n)=>{if(!e)return U(t);let r=n.find(t=>t.sourceNodeId===e.id);return r&&t.find(e=>e.id===r.destinationNodeId)||null};async function G(e,t,n,r){let i=e?`true`:`false`,a=r.find(e=>e.sourceNodeHandle===i&&e.sourceNodeId===t);return n.find(e=>e.id===a?.destinationNodeId)}var K=(0,n.createDomain)(`experience-instance`),q=(0,r.createFactory)(({client:e,experience:t,target:r,options:i})=>{let a=(0,n.createEvent)(),o=(0,n.createEvent)(),s=(0,n.createEvent)(),c=(0,n.createEvent)(),l=(0,n.createEvent)(),u=(0,n.createEvent)(),d=t.componentStore,f=K.store(`transitioning`),p=e.history.entriesStore.map(e=>e.filter(e=>e.experienceId===t.id)),m=p.map(e=>e.filter(e=>N(e.node))),_=p.map(e=>e.at(-1)?.node||null),v=(0,n.combine)(t.treeStore,_,({steps:e},t)=>e.find(e=>t&&N(t)&&e.id===t.stepId)||null),y=(0,n.combine)(t.treeStore,m,({steps:e},t)=>{let n=t.at(-2);if(!n||!N(n.node))return null;let r=n.node;return e.find(e=>e.id===r.stepId)||null}),b=(0,n.combine)(t.treeStore,_,({nodes:e,edges:t},n)=>n?R(e,t,n):[]),x=(0,n.combine)(t.treeStore,_,({nodes:e,edges:t},n)=>n?H(e,t,n):[-1,-1]),S=(0,n.combine)(t.treeStore,_,({nodes:e,edges:t},n)=>n?B(e,t,n):[-1,-1]),C=K.store(!1),w=(0,n.createApi)(C,{open:()=>!0,close:()=>!1,toggle:e=>!e,set:(e,t)=>t}),T=(0,n.createEffect)(async()=>{e.history.back({experienceId:t.id})}),E=(0,n.attach)({source:t.treeStore,effect:async(n,r)=>{let i=n.nodes.find(e=>N(e)&&e.stepId===r);i&&e.history.push({experienceId:t.id,node:i})}}),D=(0,n.attach)({source:_,effect:e=>{}}),O=(0,n.attach)({source:t.treeStore,effect:async({nodes:e})=>U(e)}),k=(0,n.attach)({source:t.treeStore,effect:async({nodes:e,edges:t},n)=>{if(F(n))return W(n,e,t)}}),A=(0,n.attach)({source:t.treeStore,effect:async({nodes:t,edges:n,conditionals:r},i)=>{if(!M(i))return;let a=r.find(e=>e.id===i.conditionalId);if(!a)return;let o=i.id;return G(!!await g(e,a.condition),o,t,n)}}),j=(0,n.attach)({source:t.treeStore,effect:async({nodes:t,edges:n},r)=>{if(!I(r))return;let i=r.action;if(!i){`${r.id}`;return}let a=e.actions.getByName(i).getState();if(!a){`${i}`;let e=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);return e?t.find(t=>t.id===e.destinationNodeId):null}if(typeof a.action!=`function`){`${i}`;let e=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);return e?t.find(t=>t.id===e.destinationNodeId):null}try{`${i}`,await a.action(i);let e=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`true`);if(!e)return`${r.id}`,null;let o=t.find(t=>t.id===e.destinationNodeId);return`${i}${o?.id}`,o||null}catch{`${i}`;let e=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);if(!e)return`${r.id}`,null;let a=t.find(t=>t.id===e.destinationNodeId);return`${i}${a?.id}`,a||null}}}),L=(0,n.createEffect)(t=>{P(t)&&e.experiences.launch({id:t.experienceId})}),z=(0,n.attach)({source:[_,t.treeStore],effect:async([e,{nodes:t,edges:n}])=>W(e,t,n)}),V=(0,n.attach)({source:[_,t.treeStore],effect:async([e,{nodes:t,edges:n}])=>W(e,t,n)}),q=(0,n.createEffect)(n=>{e.history.push({experienceId:t.id,node:n})}),J=(0,n.attach)({source:t.configStore,effect:async({initializeOpenLogic:t})=>i?.initialiseOpen===void 0?h(t)?!!await g(e,t):t??!1:i.initialiseOpen}),Y=Object.freeze({id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:d,stateStore:f,isOpenStore:C,open:w.open,close:w.close,toggleOpen:w.toggle,setOpen:w.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:_,currentStepStore:v,previousStepStore:y,nextReachableStepNodesStore:b,stepsToOriginStore:x,stepsToLeafStore:S,goToNextStep:o,goToPreviousStep:s,goToStepById:c,stepsHistoryStore:m}),X=(0,n.createEvent)(),Z=(0,n.createEvent)();return(0,n.sample)({source:_,target:X}),(0,n.sample)({clock:X,filter:e=>e===null,target:O}),(0,n.sample)({clock:X,filter:e=>e!==null,target:Z}),(0,n.split)({source:Z,match:e=>M(e)?`condition`:N(e)?`step`:P(e)?`launchExperience`:F(e)?`origin`:I(e)?`action`:`other`,cases:{origin:k,condition:A,step:D,launchExperience:L,action:j,__:(0,n.createEvent)()}}),(0,n.sample)({clock:[A.doneData,k.doneData,O.doneData,V.doneData,z.doneData,j.doneData],filter:Boolean,target:q}),(0,n.sample)({clock:o,target:V}),(0,n.sample)({clock:o,source:v,filter:Boolean,target:e.eventBus.prepend(e=>({type:`step_submit`,step:e,experience:Y}))}),(0,n.sample)({clock:V.done,source:v,filter:Boolean,target:e.eventBus.prepend(e=>({type:`step_submit_success`,step:e,experience:Y}))}),(0,n.sample)({clock:V.fail,source:v,filter:Boolean,target:e.eventBus.prepend(e=>({type:`step_submit_error`,step:e,experience:Y}))}),(0,n.sample)({clock:s,target:T}),(0,n.sample)({clock:c,target:E}),(0,n.sample)({source:(0,n.combine)([A.pending,k.pending,O.pending,V.pending]),fn:e=>e.some(Boolean)?`transitioning`:`ready`,target:f}),(0,n.sample)({clock:D.doneData,source:v,filter:Boolean,target:e.eventBus.prepend(e=>({type:`step_enter`,step:e,experience:Y}))}),(0,n.sample)({clock:u,target:J}),(0,n.sample)({source:J.doneData,fn:Boolean,target:C}),(0,n.sample)({source:_,clock:a,filter:e=>e?F(e):!0,target:z}),(0,n.sample)({source:C,filter:Boolean,target:a}),(0,n.sample)({source:C,filter:Boolean,target:e.eventBus.prepend(()=>({type:`experience_open`,experience:Y}))}),(0,n.sample)({source:C,filter:e=>!e,target:e.eventBus.prepend(()=>({type:`experience_close`,experience:Y}))}),(0,n.sample)({clock:l,target:[u]}),l(),Y});function J(e){return(0,r.invoke)(q,e)}var Y=(0,r.createFactory)(({client:e})=>{let t=K.store({}),r=(0,n.createEvent)(),i=(0,n.createEvent)(),a=(0,n.createEvent)(),o=(0,n.createApi)(t,{register(e,t){let n=[...e[t.experienceId]??[]];return n.push(t),{...e,[t.experienceId]:n}},unregister(e,t){let n=t.experienceId,r=e[n]?.filter(e=>e!==t);return{...e,[n]:r??[]}}}),s=(0,n.createEffect)(({experience:t,target:n,options:r})=>J({client:e,experience:t,target:n,options:r})),c=(0,n.createEffect)(e=>{o.register(e)}),l=(0,n.createEffect)(e=>{e.target&&x(e.target,()=>{a(e)})}),u=(0,n.createEffect)(e=>{o.unregister(e)}),d=(0,n.createEffect)(t=>{let n=t.componentStore.getState();if(!n)return;let r=n.frameworkStore.getState();if(!r){`${n.name}`;return}let i=t.target;if(!i){`${t.experienceId}`;return}let a=y(i);try{r.render(a,n.component,e,t)}catch{}});(0,n.sample)({clock:r,target:s}),(0,n.sample)({clock:a,target:u}),(0,n.sample)({clock:s.doneData,target:[c,l,i]}),(0,n.sample)({clock:s.doneData,target:e.eventBus.prepend(e=>({type:`experience_initialize`,experience:e}))}),(0,n.sample)({clock:i,target:d});function f(e,t,n){r({experience:e,target:t,options:n})}let p=t.map(e=>Object.values(e).flat());function m(e){return t.map(t=>t[e]||[],{skipVoid:!1})}return{spawn:f,getByExperienceId:m,listStore:p}});function X(e){return(0,r.invoke)(Y,e)}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return h}});
@@ -0,0 +1,4 @@
1
+ //#region src/utils/id.ts
2
+ var e = {}, t = 0, n = (n) => (e[n] || (e[n] = `${(t++).toString(36)}`), `${e[n]}:${(t++).toString(36)}`);
3
+ //#endregion
4
+ export { n as t };
@@ -0,0 +1 @@
1
+ var e={},t=0,n=n=>(e[n]||(e[n]=`${(t++).toString(36)}`),`${e[n]}:${(t++).toString(36)}`);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
@@ -0,0 +1,4 @@
1
+ //#region src/utils/logger.ts
2
+ var e = (e, ...t) => {};
3
+ //#endregion
4
+ export { e as t };
@@ -0,0 +1 @@
1
+ var e=(e,...t)=>{};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
@@ -0,0 +1 @@
1
+ function e(e,t,r){if(!(t in e))return;let i=e[t];if(typeof i!=`function`)throw Error(`Expected '${String(t)}' to be a function`);let a=r(i);n(a,i),e[t]=a}function t(e,t,n){Object.defineProperty(e,t,{enumerable:!1,value:n,writable:!0,configurable:!0})}function n(e,n){e.prototype=n.prototype=n.prototype||{},t(e,`__picked_original`,n)}function r(e){return e===void 0||typeof e==`object`&&!!e&&e.constructor===Object&&Object.keys(e).length===0}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
@@ -0,0 +1,24 @@
1
+ //#region src/utils/object.ts
2
+ function e(e, t, r) {
3
+ if (!(t in e)) return;
4
+ let i = e[t];
5
+ if (typeof i != "function") throw Error(`Expected '${String(t)}' to be a function`);
6
+ let a = r(i);
7
+ n(a, i), e[t] = a;
8
+ }
9
+ function t(e, t, n) {
10
+ Object.defineProperty(e, t, {
11
+ enumerable: !1,
12
+ value: n,
13
+ writable: !0,
14
+ configurable: !0
15
+ });
16
+ }
17
+ function n(e, n) {
18
+ e.prototype = n.prototype = n.prototype || {}, t(e, "__picked_original", n);
19
+ }
20
+ function r(e) {
21
+ return e === void 0 || typeof e == "object" && !!e && e.constructor === Object && Object.keys(e).length === 0;
22
+ }
23
+ //#endregion
24
+ export { e as n, r as t };
@@ -0,0 +1 @@
1
+ var e=e=>btoa([...e].map(e=>String.fromCharCode(e.charCodeAt(0)^7)).join(``)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``);function t(t,n=`global`,r){let i=`pckd`;if(n===`experience`){if(!r)throw Error(`Experience instance is required to scope storage to an experience`);i=`${i}:${r.experienceId}`}return{_:`${i}:${e(t)}`,scope:n}}var n=new Map;function r(e,t){let r=n.get(e._);r&&r.forEach(n=>n(e,t))}function i(e,t,n,i){let a=n===`local`?localStorage:sessionStorage,o=typeof t==`string`?t:JSON.stringify(t);if(a.setItem(e._,o),typeof i==`number`){let t=new Date(Date.now()+i).toISOString();a.setItem(`${e._}:expires-at`,t)}r(e,n)}function a(e,t){let n=t===`local`?localStorage:sessionStorage;n.removeItem(e._),n.removeItem(`${e._}:expires-at`),r(e,t)}function o(e,t,r,i){let a=t===`local`?localStorage:sessionStorage;function o(t){t.storageArea===a&&t.key===e._&&i(r(e))}function s(e,n){n===t&&i(r(e))}return window.addEventListener(`storage`,o),n.has(e._)||n.set(e._,new Set),n.get(e._).add(s),function(){window.removeEventListener(`storage`,o);let t=n.get(e._);t&&(t.delete(s),t.size===0&&n.delete(e._))}}function s(e,t){let n=t===`local`?localStorage:sessionStorage,r=n.getItem(e._),c=n.getItem(`${e._}:expires-at`),l=(n,r)=>i(e,n,t,r),u=()=>a(e,t),d=n=>o(e,t,e=>s(e,t),n);return c&&new Date>new Date(c)?(a(e,t),{isSet:()=>!1,text:()=>null,json:()=>null,boolean:()=>null,set:l,remove:u,subscribe:d}):{isSet(){return r!==null},text(){return r},json(){return r?JSON.parse(r):null},boolean(){return r?r===`true`:null},set:l,remove:u,subscribe:d}}var c={get(e){return s(e,`session`)},set(e,t,n){i(e,t,`session`,n)},remove(e){a(e,`session`)},subscribe(e,t){return o(e,`session`,this.get,t)}},l={get(e){return s(e,`local`)},set(e,t,n){i(e,t,`local`,n)},remove(e){a(e,`local`)},subscribe(e,t){return o(e,`local`,this.get,t)}};Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
@@ -0,0 +1,101 @@
1
+ //#region src/utils/storage.ts
2
+ var e = (e) => btoa([...e].map((e) => String.fromCharCode(e.charCodeAt(0) ^ 7)).join("")).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
3
+ function t(t, n = "global", r) {
4
+ let i = "pckd";
5
+ if (n === "experience") {
6
+ if (!r) throw Error("Experience instance is required to scope storage to an experience");
7
+ i = `${i}:${r.experienceId}`;
8
+ }
9
+ return {
10
+ _: `${i}:${e(t)}`,
11
+ scope: n
12
+ };
13
+ }
14
+ var n = /* @__PURE__ */ new Map();
15
+ function r(e, t) {
16
+ let r = n.get(e._);
17
+ r && r.forEach((n) => n(e, t));
18
+ }
19
+ function i(e, t, n, i) {
20
+ let a = n === "local" ? localStorage : sessionStorage, o = typeof t == "string" ? t : JSON.stringify(t);
21
+ if (a.setItem(e._, o), typeof i == "number") {
22
+ let t = new Date(Date.now() + i).toISOString();
23
+ a.setItem(`${e._}:expires-at`, t);
24
+ }
25
+ r(e, n);
26
+ }
27
+ function a(e, t) {
28
+ let n = t === "local" ? localStorage : sessionStorage;
29
+ n.removeItem(e._), n.removeItem(`${e._}:expires-at`), r(e, t);
30
+ }
31
+ function o(e, t, r, i) {
32
+ let a = t === "local" ? localStorage : sessionStorage;
33
+ function o(t) {
34
+ t.storageArea === a && t.key === e._ && i(r(e));
35
+ }
36
+ function s(e, n) {
37
+ n === t && i(r(e));
38
+ }
39
+ return window.addEventListener("storage", o), n.has(e._) || n.set(e._, /* @__PURE__ */ new Set()), n.get(e._).add(s), function() {
40
+ window.removeEventListener("storage", o);
41
+ let t = n.get(e._);
42
+ t && (t.delete(s), t.size === 0 && n.delete(e._));
43
+ };
44
+ }
45
+ function s(e, t) {
46
+ let n = t === "local" ? localStorage : sessionStorage, r = n.getItem(e._), c = n.getItem(`${e._}:expires-at`), l = (n, r) => i(e, n, t, r), u = () => a(e, t), d = (n) => o(e, t, (e) => s(e, t), n);
47
+ return c && /* @__PURE__ */ new Date() > new Date(c) ? (a(e, t), {
48
+ isSet: () => !1,
49
+ text: () => null,
50
+ json: () => null,
51
+ boolean: () => null,
52
+ set: l,
53
+ remove: u,
54
+ subscribe: d
55
+ }) : {
56
+ isSet() {
57
+ return r !== null;
58
+ },
59
+ text() {
60
+ return r;
61
+ },
62
+ json() {
63
+ return r ? JSON.parse(r) : null;
64
+ },
65
+ boolean() {
66
+ return r ? r === "true" : null;
67
+ },
68
+ set: l,
69
+ remove: u,
70
+ subscribe: d
71
+ };
72
+ }
73
+ var c = {
74
+ get(e) {
75
+ return s(e, "session");
76
+ },
77
+ set(e, t, n) {
78
+ i(e, t, "session", n);
79
+ },
80
+ remove(e) {
81
+ a(e, "session");
82
+ },
83
+ subscribe(e, t) {
84
+ return o(e, "session", this.get, t);
85
+ }
86
+ }, l = {
87
+ get(e) {
88
+ return s(e, "local");
89
+ },
90
+ set(e, t, n) {
91
+ i(e, t, "local", n);
92
+ },
93
+ remove(e) {
94
+ a(e, "local");
95
+ },
96
+ subscribe(e, t) {
97
+ return o(e, "local", this.get, t);
98
+ }
99
+ };
100
+ //#endregion
101
+ export { o as i, l as n, c as r, t };
@@ -0,0 +1,85 @@
1
+ //#region src/utils/global-obj.ts
2
+ var e = Symbol("Picked"), t = globalThis, n = (n) => {
3
+ t[e] = n;
4
+ };
5
+ //#endregion
6
+ //#region src/utils/supports.ts
7
+ function r() {
8
+ try {
9
+ return "location" in t && !!t.location;
10
+ } catch {
11
+ return !1;
12
+ }
13
+ }
14
+ function i() {
15
+ try {
16
+ return "history" in t && !!t.history;
17
+ } catch {
18
+ return !1;
19
+ }
20
+ }
21
+ function a() {
22
+ try {
23
+ return "localStorage" in t && !!t.localStorage;
24
+ } catch {
25
+ return !1;
26
+ }
27
+ }
28
+ function o() {
29
+ try {
30
+ return "sessionStorage" in t && !!t.sessionStorage;
31
+ } catch {
32
+ return !1;
33
+ }
34
+ }
35
+ function s() {
36
+ try {
37
+ return "document" in t && "cookie" in t.document;
38
+ } catch {
39
+ return !1;
40
+ }
41
+ }
42
+ function c() {
43
+ try {
44
+ return "document" in t && "createElement" in t.document && "attachShadow" in t.document.createElement("div");
45
+ } catch {
46
+ return !1;
47
+ }
48
+ }
49
+ function l() {
50
+ try {
51
+ return "window" in t;
52
+ } catch {
53
+ return !1;
54
+ }
55
+ }
56
+ function u() {
57
+ try {
58
+ return "document" in t;
59
+ } catch {
60
+ return !1;
61
+ }
62
+ }
63
+ function d() {
64
+ try {
65
+ return "IntersectionObserver" in t;
66
+ } catch {
67
+ return !1;
68
+ }
69
+ }
70
+ function f() {
71
+ try {
72
+ return "customElements" in t && !!t.customElements;
73
+ } catch {
74
+ return !1;
75
+ }
76
+ }
77
+ function p() {
78
+ try {
79
+ return "crypto" in t && "randomUUID" in t.crypto;
80
+ } catch {
81
+ return !1;
82
+ }
83
+ }
84
+ //#endregion
85
+ export { d as a, o as c, l as d, t as f, i, c as l, p as n, a as o, n as p, u as r, r as s, s as t, f as u };
@@ -0,0 +1 @@
1
+ var e=Symbol(`Picked`),t=globalThis,n=n=>{t[e]=n};function r(){try{return`location`in t&&!!t.location}catch{return!1}}function i(){try{return`history`in t&&!!t.history}catch{return!1}}function a(){try{return`localStorage`in t&&!!t.localStorage}catch{return!1}}function o(){try{return`sessionStorage`in t&&!!t.sessionStorage}catch{return!1}}function s(){try{return`document`in t&&`cookie`in t.document}catch{return!1}}function c(){try{return`document`in t&&`createElement`in t.document&&`attachShadow`in t.document.createElement(`div`)}catch{return!1}}function l(){try{return`window`in t}catch{return!1}}function u(){try{return`document`in t}catch{return!1}}function d(){try{return`IntersectionObserver`in t}catch{return!1}}function f(){try{return`customElements`in t&&!!t.customElements}catch{return!1}}function p(){try{return`crypto`in t&&`randomUUID`in t.crypto}catch{return!1}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/client",
3
- "version": "0.0.50-next.3",
3
+ "version": "0.0.50",
4
4
  "dependencies": {
5
5
  "@withease/factories": "^1.0.5"
6
6
  },
@@ -10,17 +10,17 @@
10
10
  "@rollup/plugin-replace": "^6.0.2",
11
11
  "@size-limit/preset-small-lib": "^12.0.0",
12
12
  "@testing-library/dom": "^10.4.0",
13
- "@vitest/browser": "^4.0.17",
14
- "@vitest/coverage-istanbul": "^4.0.17",
13
+ "@vitest/browser": "^4.1.0",
14
+ "@vitest/coverage-istanbul": "^4.1.0",
15
15
  "effector": "^23.3.0",
16
16
  "happy-dom": "^20.0.2",
17
17
  "size-limit": "^12.0.0",
18
18
  "tslib": "^2.8.1",
19
19
  "typedoc": "^0.28.5",
20
20
  "typedoc-plugin-markdown": "^4.6.3",
21
- "vite": "^7.3.1",
21
+ "vite": "^8.0.1",
22
22
  "vite-plugin-dts": "^4.5.4",
23
- "vitest": "^4.0.17"
23
+ "vitest": "^4.1.0"
24
24
  },
25
25
  "exports": {
26
26
  ".": {
@@ -1 +0,0 @@
1
- "use strict";const a="Picked-Client",d="Picked-Version";function s(e,t){return{[a]:e,[d]:t}}const o=()=>"0.0.50-next.3",E="v1";function c(e,t){return new URL(`/api/${E}/${t}`,e).toString()}function i(e){return{...s("sdk",o()),...e}}async function f(e,t,n){const r=c(e,t);return fetch(r,{headers:i(n)})}async function l(e,t,n,r){const u=c(e,t);return fetch(u,{method:"POST",headers:{"Content-Type":"application/json",...i(r)},body:JSON.stringify(n)})}exports.createClientHeaders=s;exports.get=f;exports.getVersion=o;exports.post=l;
@@ -1,32 +0,0 @@
1
- const i = "Picked-Client", a = "Picked-Version";
2
- function u(n, t) {
3
- return {
4
- [i]: n,
5
- [a]: t
6
- };
7
- }
8
- const d = () => "0.0.50-next.3", E = "v1";
9
- function s(n, t) {
10
- return new URL(`/api/${E}/${t}`, n).toString();
11
- }
12
- function o(n) {
13
- return { ...u("sdk", d()), ...n };
14
- }
15
- async function f(n, t, e) {
16
- const r = s(n, t);
17
- return fetch(r, { headers: o(e) });
18
- }
19
- async function p(n, t, e, r) {
20
- const c = s(n, t);
21
- return fetch(c, {
22
- method: "POST",
23
- headers: { "Content-Type": "application/json", ...o(r) },
24
- body: JSON.stringify(e)
25
- });
26
- }
27
- export {
28
- f as a,
29
- u as c,
30
- d as g,
31
- p
32
- };
@@ -1 +0,0 @@
1
- "use strict";const s=require("effector"),W=require("@withease/factories"),j=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),xe=require("./object-BbFTsGh3.cjs");function Ne(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function x(e){return Array.isArray(e)}function ue(e){return e instanceof Promise}function ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(Ne(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function M(e){return`${e}`}const Ie={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>m(e)>m(t),">=":(e,t)=>m(e)>=m(t),"<":(e,t,r)=>{const n=m(e),c=m(t);if(r===void 0)return n<c;const a=m(r);return n<c&&c<a},"<=":(e,t,r)=>{const n=m(e),c=m(t);if(r===void 0)return n<=c;const a=m(r);return n<=c&&c<=a},"!!":async e=>await v(e),"!":async e=>!await v(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(M(e))!==-1:x(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(M).join(""),substr:(e,t,r)=>{const n=M(e),c=m(t);if(r===void 0)return n.substr(c);const a=m(r);if(a<0){const o=n.substr(c);return o.substr(0,o.length+a)}return n.substr(c,a)},"+":(...e)=>e.reduce((t,r)=>m(t)+m(r),0),"*":(...e)=>e.reduce((t,r)=>m(t)*m(r),1),"-":(e,t)=>{const r=m(e);return t===void 0?-r:r-m(t)},"/":(e,t)=>m(e)/m(t),min:(...e)=>Math.min(...e.map(m)),max:(...e)=>Math.max(...e.map(m)),merge:(...e)=>e.reduce((t,r)=>x(r)?t.concat(r):t.concat([r]),[]),var(e,t){const r=arguments.length>1?t:null;if(e===""||e==="."||e===null||e===void 0)return this;if(typeof e=="number"&&Array.isArray(this))return e>=0&&e<this.length?this[e]:r;const n=M(e);if(n===""||n===".")return this;const c=n.split(".");let a=this;for(const o of c){if(a==null)return r;if(Array.isArray(a)){const f=parseInt(o,10);isNaN(f)?a=a[o]:a=a[f]}else a=a[o]}return a!==void 0?a:r},async missing(...e){const t=x(e[0])?e[0]:e,r=[];for(const n of t){const c=await g({var:n},this);(c===null||c==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!x(r)||!x(t))return[];const n=r.filter(R);return t.filter(R).length-n.length>=m(e)?[]:n},invoke(...e){const[t,...r]=e;return typeof t!="function"?null:Reflect.apply(t,null,r)},regexp_matches(e,t){let r=e,n="";if(x(e)){const[a,o]=e;r=a,n=o}return!R(r)||!R(n)?!1:new RegExp(r,n).test(M(t))},throw(e){throw new Error(M(e))}};async function g(e,t){if(!e)return e;if(ue(e))return g(await e,t);if(x(e))return Promise.all(e.map(o=>g(o,t)));if(!ie(e))return e;const r=ke(e);let n=r?e[r]??[]:[];switch(x(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await v(await g(n[o],t)))return g(n[o+1],t);return n.length%2===1?g(n[n.length-1],t):null;case"and":{let o=null;for(const f of n)if(o=await g(f,t),!await v(o))return o;return o}case"or":{let o=null;for(const f of n)if(o=await g(f,t),await v(o))return o;return o}case"map":{const o=await g(n[0],t);return x(o)?await Promise.all(o.map(f=>g(n[1],f))):[]}case"filter":{const o=await g(n[0],t);return x(o)?(await Promise.all(o.map(async p=>{const h=await v(await g(n[1],p));return{item:p,shouldInclude:h}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!x(o))return n.length>2?await g(n[2],t):null;const f=n[1];let h=n.length>2?await g(n[2],t):null;for(const k of o)h=await g(f,{current:k,accumulator:h});return h}case"all":{const o=await g(n[0],t);if(!x(o)||o.length===0)return!1;for(const f of o)if(!await v(await g(n[1],f)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!x(o))return!1;for(const f of o)if(await v(await g(n[1],f)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!x(o))return!0;for(const f of o)if(await v(await g(n[1],f)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return ie(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const c=await Promise.all(n.map(o=>g(o,t))),a=r?Ie[r]:void 0;if(!a)throw new Error(`Unrecognized operation ${r}`);return a.apply(t,c)}async function v(e){return ue(e)?v(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function ke(e){return Object.keys(e)[0]}function fe(e){return!xe.isEmpty(e)}async function Y(e,t,r){const n=e.getStateSnapshot(),c=e.predicates.listStore.getState().reduce((f,p)=>({...f,[p.name]:(...h)=>p.predicate({...n,args:h})}),{}),a=e.features.listStore.getState().reduce((f,p)=>({...f,[p.id]:async()=>{const{bucket:h}=await p.getBucket();return h}}),{}),o={...r,responses:e.responses.getAllStore.getState(),location:typeof n.location=="object"?{hash:n.location.hash,host:n.location.host,hostname:n.location.hostname,href:n.location.href,origin:n.location.origin,pathname:n.location.pathname,port:n.location.port,protocol:n.location.protocol,search:n.location.search}:void 0,predicates:c,features:a};return await g(t,o)}function ve(e){return!j.supportsWindow()||!j.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const be="open";function Ae(e){if(!j.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:be})}function Oe(){return new Promise((e,t)=>{if(!j.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function Fe(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const q="picked-root",U="picked-target",Be="picked-root";function _e(e,t){return[...e,{selector:`${Be}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const c=ve(n.selector).filter(a=>!Me(a,t)&&!le(a,t));return{...n,elements:c}})}function $e(e,t){return e.flatMap(r=>r.elements.map(n=>De(n,r.placement,t)))}function Te(e,t){e.classList.add(U),e.classList.add(`${U}-${t}`)}function Me(e,t){return t?e.classList.contains(`${U}-${t}`):e.classList.contains(`${U}`)}function le(e,t){return t?e.classList.contains(`${q}-${t}`):e.classList.contains(q)}function Le(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(q),t.classList.add(`${q}-${e}`),t}function De(e,t,r){let n;const c=Le(r);if(e instanceof Document)n=e.body.appendChild(c);else{switch(t){case"replace":e.replaceWith(c);break;case"before":e.before(c);break;case"after":e.after(c);break;case"prepend":e.prepend(c);break;default:e.append(c);break}n=c}return n}function se(e){return e.type==="conditional"}function B(e){return e.type==="step"}function ce(e){return e.type==="experience"}function J(e){return e.type==="origin"}function ae(e){return e.type==="action"}const de=(e,t,r,n,c=new Set)=>c.has(r.id)?[]:(c.add(r.id),B(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const f=e.find(p=>p.id===o.destinationNodeId);return f?de(e,t,f,!1,c):[]})),Re=(e,t,r)=>de(e,t,r,!0,new Set),pe=(e,t,r,n,c=new Set)=>{if(c.has(r.id))return[-1,-1];c.add(r.id);const a=t.filter(p=>p.sourceNodeId===r.id);if(a.length===0)return[0,0];let o=1/0,f=-1/0;for(const p of a){const h=e.find(_=>_.id===p.destinationNodeId);if(!h)continue;const[k,A]=pe(e,t,h,!1,new Set(c));k!==-1&&(o=Math.min(o,k+1),f=Math.max(f,A+1))}return o===1/0?[-1,-1]:[o,f]},Pe=(e,t,r)=>pe(e,t,r,!0,new Set),ge=(e,t,r,n=new Set)=>{if(n.has(r.id))return[-1,-1];if(n.add(r.id),r.type==="origin")return[0,0];const c=t.filter(f=>f.destinationNodeId===r.id);if(c.length===0)return[-1,-1];let a=1/0,o=-1/0;for(const f of c){const p=e.find(A=>A.id===f.sourceNodeId);if(!p)continue;const[h,k]=ge(e,t,p,new Set(n));h!==-1&&(a=Math.min(a,h+1),o=Math.max(o,k+1))}return a===1/0?[-1,-1]:[a,o]},He=(e,t,r)=>ge(e,t,r,new Set),me=e=>e.find(r=>r.type==="origin")||null,Q=(e,t,r)=>{if(!e)return me(t);const n=r.find(a=>a.sourceNodeId===e.id);if(!n)return null;const c=t.find(a=>a.id===n.destinationNodeId);return c||null};async function Ce(e,t,r,n){const c=e?"true":"false",a=n.find(o=>o.sourceNodeHandle===c&&o.sourceNodeId===t);return r.find(o=>o.id===a?.destinationNodeId)}const Z=s.createDomain("experience-instance"),je=W.createFactory(({client:e,experience:t,target:r,options:n})=>{const c=s.createEvent(),a=s.createEvent(),o=s.createEvent(),f=s.createEvent(),p=s.createEvent(),h=s.createEvent(),k=t.componentStore,A=Z.store("transitioning"),_=e.history.entriesStore.map(i=>i.filter(d=>d.experienceId===t.id)),P=_.map(i=>i.filter(d=>B(d.node))),u=_.map(i=>i.at(-1)?.node||null),S=s.combine(t.treeStore,u,({steps:i},d)=>i.find(l=>d&&B(d)&&l.id===d.stepId)||null),E=s.combine(t.treeStore,P,({steps:i},d)=>{const l=d.at(-2);if(!l||!B(l.node))return null;const y=l.node;return i.find(O=>O.id===y.stepId)||null}),$=s.combine(t.treeStore,u,({nodes:i,edges:d},l)=>l?Re(i,d,l):[]),L=s.combine(t.treeStore,u,({nodes:i,edges:d},l)=>l?He(i,d,l):[-1,-1]),G=s.combine(t.treeStore,u,({nodes:i,edges:d},l)=>l?Pe(i,d,l):[-1,-1]),T=Z.store(!1),H=s.createApi(T,{open:()=>!0,close:()=>!1,toggle:i=>!i,set:(i,d)=>d}),he=s.createEffect(async()=>{e.history.back({experienceId:t.id})}),ye=s.attach({source:t.treeStore,effect:async(i,d)=>{const l=i.nodes.find(y=>B(y)&&y.stepId===d);l&&e.history.push({experienceId:t.id,node:l})}}),ee=s.attach({source:u,effect:i=>{}}),K=s.attach({source:t.treeStore,effect:async({nodes:i})=>me(i)}),V=s.attach({source:t.treeStore,effect:async({nodes:i,edges:d},l)=>{if(J(l))return Q(l,i,d)}}),z=s.attach({source:t.treeStore,effect:async({nodes:i,edges:d,conditionals:l},y)=>{if(!se(y))return;const O=l.find(b=>b.id===y.conditionalId);if(!O)return;const I=y.id,w=await Y(e,O.condition);return Ce(!!w,I,i,d)}}),te=s.attach({source:t.treeStore,effect:async({nodes:i,edges:d},l)=>{if(!ae(l))return;const y=l.action;if(!y){N.logger("warn",`Action node ${l.id} has no action name`);return}const O=e.actions.getByName(y).getState();if(!O){N.logger("warn",`Action '${y}' not registered on client`);const I=d.find(w=>w.sourceNodeId===l.id&&w.sourceNodeHandle==="false");return I?i.find(w=>w.id===I.destinationNodeId):null}if(typeof O.action!="function"){N.logger("warn",`Action '${y}' is not a function`);const I=d.find(w=>w.sourceNodeId===l.id&&w.sourceNodeHandle==="false");return I?i.find(w=>w.id===I.destinationNodeId):null}try{N.logger("info",`Executing action: ${y}`),await O.action(y);const I=d.find(b=>b.sourceNodeId===l.id&&b.sourceNodeHandle==="true");if(!I)return N.logger("warn",`No 'true' edge found for action node ${l.id}`),null;const w=i.find(b=>b.id===I.destinationNodeId);return N.logger("info",`Action '${y}' succeeded, moving to node ${w?.id}`),w||null}catch(I){N.logger("warn",`Action '${y}' failed:`,I);const w=d.find(C=>C.sourceNodeId===l.id&&C.sourceNodeHandle==="false");if(!w)return N.logger("warn",`No 'false' edge found for action node ${l.id}`),null;const b=i.find(C=>C.id===w.destinationNodeId);return N.logger("info",`Action '${y}' failed, moving to node ${b?.id}`),b||null}}}),we=s.createEffect(i=>{ce(i)&&e.experiences.launch({id:i.experienceId})}),ne=s.attach({source:[u,t.treeStore],effect:async([i,{nodes:d,edges:l}])=>Q(i,d,l)}),D=s.attach({source:[u,t.treeStore],effect:async([i,{nodes:d,edges:l}])=>Q(i,d,l)}),Ee=s.createEffect(i=>{e.history.push({experienceId:t.id,node:i})}),re=s.attach({source:t.configStore,effect:async({initializeOpenLogic:i})=>n?.initialiseOpen!==void 0?n.initialiseOpen:fe(i)?!!await Y(e,i):i??!1}),F=Object.freeze({id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:k,stateStore:A,isOpenStore:T,open:H.open,close:H.close,toggleOpen:H.toggle,setOpen:H.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:u,currentStepStore:S,previousStepStore:E,nextReachableStepNodesStore:$,stepsToOriginStore:L,stepsToLeafStore:G,goToNextStep:a,goToPreviousStep:o,goToStepById:f,stepsHistoryStore:P}),X=s.createEvent(),oe=s.createEvent();return s.sample({source:u,target:X}),s.sample({clock:X,filter:i=>i===null,target:K}),s.sample({clock:X,filter:i=>i!==null,target:oe}),s.split({source:oe,match:i=>se(i)?"condition":B(i)?"step":ce(i)?"launchExperience":J(i)?"origin":ae(i)?"action":"other",cases:{origin:V,condition:z,step:ee,launchExperience:we,action:te,__:s.createEvent()}}),s.sample({clock:[z.doneData,V.doneData,K.doneData,D.doneData,ne.doneData,te.doneData],filter:Boolean,target:Ee}),s.sample({clock:a,target:D}),s.sample({clock:a,source:S,filter:Boolean,target:e.eventBus.prepend(i=>({type:"step_submit",step:i,experience:F}))}),s.sample({clock:D.done,source:S,filter:Boolean,target:e.eventBus.prepend(i=>({type:"step_submit_success",step:i,experience:F}))}),s.sample({clock:D.fail,source:S,filter:Boolean,target:e.eventBus.prepend(i=>({type:"step_submit_error",step:i,experience:F}))}),s.sample({clock:o,target:he}),s.sample({clock:f,target:ye}),s.sample({source:s.combine([z.pending,V.pending,K.pending,D.pending]),fn:i=>i.some(Boolean)?"transitioning":"ready",target:A}),s.sample({clock:ee.doneData,source:S,filter:Boolean,target:e.eventBus.prepend(i=>({type:"step_enter",step:i,experience:F}))}),s.sample({clock:h,target:re}),s.sample({source:re.doneData,fn:Boolean,target:T}),s.sample({source:u,clock:c,filter:i=>i?J(i):!0,target:ne}),s.sample({source:T,filter:Boolean,target:c}),s.sample({source:T,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:F}))}),s.sample({source:T,filter:i=>!i,target:e.eventBus.prepend(()=>({type:"experience_close",experience:F}))}),s.sample({clock:p,target:[h]}),p(),F});function Se(e){return W.invoke(je,e)}const qe=W.createFactory(({client:e})=>{const t=Z.store({}),r=s.createEvent(),n=s.createEvent(),c=s.createEvent(),a=s.createApi(t,{register(u,S){const E=[...u[S.experienceId]??[]];return E.push(S),{...u,[S.experienceId]:E}},unregister(u,S){const E=S.experienceId,$=u[E]?.filter(L=>L!==S);return{...u,[E]:$??[]}}}),o=s.createEffect(({experience:u,target:S,options:E})=>Se({client:e,experience:u,target:S,options:E})),f=s.createEffect(u=>{a.register(u)}),p=s.createEffect(u=>{u.target&&Fe(u.target,()=>{c(u)})}),h=s.createEffect(u=>{a.unregister(u)}),k=s.createEffect(u=>{const S=u.componentStore.getState();if(!S){N.logger("warn","No app component registered. Skipping init.");return}const E=S.frameworkStore.getState();if(!E){N.logger("error",`No framework registered for component '${S.name}'. Skipping rendering.`);return}const $=u.target;if(!$){N.logger("error",`No target element registered for experience '${u.experienceId}'. Skipping rendering.`);return}const L=Ae($);try{E.render(L,S.component,e,u)}catch(G){N.logger("error",G)}});s.sample({clock:r,target:o}),s.sample({clock:c,target:h}),s.sample({clock:o.doneData,target:[f,p,n]}),s.sample({clock:o.doneData,target:e.eventBus.prepend(u=>({type:"experience_initialize",experience:u}))}),s.sample({clock:n,target:k});function A(u,S,E){r({experience:u,target:S,options:E})}const _=t.map(u=>Object.values(u).flat());function P(u){return t.map(S=>S[u]||[],{skipVoid:!1})}return{spawn:A,getByExperienceId:P,listStore:_}});function Ue(e){return W.invoke(qe,e)}exports.createAppHosts=$e;exports.createExperienceInstance=Se;exports.createExperienceInstanceIndex=Ue;exports.domInteractive=Oe;exports.evaluateRuleLogic=Y;exports.getTargetElements=_e;exports.isPickedRoot=le;exports.isRulesLogic=fe;exports.isStepNode=B;exports.tagTargetElement=Te;