@picked/client 0.0.39-next.1 → 0.0.39-next.2

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.
@@ -1 +0,0 @@
1
- "use strict";const i=require("effector"),U=require("@withease/factories"),C=require("./supports-YvpQZxbh.cjs"),N=require("./logger-BsmHUUw1.cjs"),we=require("./object-BbFTsGh3.cjs");function Ee(e){return typeof e=="number"&&!isNaN(e)}function R(e){return typeof e=="string"}function E(e){return Array.isArray(e)}function ae(e){return e instanceof Promise}function re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1}function m(e){if(Ee(e))return e;const t=parseFloat(`${e}`);return isNaN(t)?0:t}function M(e){return`${e}`}const Ne={"==":(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),a=m(t);if(r===void 0)return n<a;const c=m(r);return n<a&&a<c},"<=":(e,t,r)=>{const n=m(e),a=m(t);if(r===void 0)return n<=a;const c=m(r);return n<=a&&a<=c},"!!":async e=>await b(e),"!":async e=>!await b(e),"%":(e,t)=>m(e)%m(t),log:e=>(console.log(e),e),in:(e,t)=>t?R(t)?t.indexOf(M(e))!==-1:E(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(M).join(""),substr:(e,t,r)=>{const n=M(e),a=m(t);if(r===void 0)return n.substr(a);const c=m(r);if(c<0){const o=n.substr(a);return o.substr(0,o.length+c)}return n.substr(a,c)},"+":(...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)=>E(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 a=n.split(".");let c=this;for(const o of a){if(c==null)return r;if(Array.isArray(c)){const u=parseInt(o,10);isNaN(u)?c=c[o]:c=c[u]}else c=c[o]}return c!==void 0?c:r},async missing(...e){const t=E(e[0])?e[0]:e,r=[];for(const n of t){const a=await g({var:n},this);(a===null||a==="")&&r.push(`${n}`)}return r},async missing_some(e,t){const r=await g({missing:t},this);if(!E(r)||!E(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(E(e)){const[c,o]=e;r=c,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(ae(e))return g(await e,t);if(E(e))return Promise.all(e.map(o=>g(o,t)));if(!re(e))return e;const r=Ie(e);let n=r?e[r]??[]:[];switch(E(n)||(n=[n]),r){case"if":case"?:":for(let o=0;o<n.length-1;o+=2)if(await b(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 u of n)if(o=await g(u,t),!await b(o))return o;return o}case"or":{let o=null;for(const u of n)if(o=await g(u,t),await b(o))return o;return o}case"map":{const o=await g(n[0],t);return E(o)?await Promise.all(o.map(u=>g(n[1],u))):[]}case"filter":{const o=await g(n[0],t);return E(o)?(await Promise.all(o.map(async p=>{const S=await b(await g(n[1],p));return{item:p,shouldInclude:S}}))).filter(({shouldInclude:p})=>p).map(({item:p})=>p):[]}case"reduce":{const o=await g(n[0],t);if(!E(o))return n.length>2?await g(n[2],t):null;const u=n[1];let S=n.length>2?await g(n[2],t):null;for(const k of o)S=await g(u,{current:k,accumulator:S});return S}case"all":{const o=await g(n[0],t);if(!E(o)||o.length===0)return!1;for(const u of o)if(!await b(await g(n[1],u)))return!1;return!0}case"some":{const o=await g(n[0],t);if(!E(o))return!1;for(const u of o)if(await b(await g(n[1],u)))return!0;return!1}case"none":{const o=await g(n[0],t);if(!E(o))return!0;for(const u of o)if(await b(await g(n[1],u)))return!1;return!0}case"catch":try{return await g(n[0],t)}catch(o){return re(o)?await g(o,t):n[1]?await g(n[1],o):o instanceof Error?o.message:o}}const a=await Promise.all(n.map(o=>g(o,t))),c=r?Ne[r]:void 0;if(!c)throw new Error(`Unrecognized operation ${r}`);return c.apply(t,a)}async function b(e){return ae(e)?b(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function Ie(e){return Object.keys(e)[0]}function ce(e){return!we.isEmpty(e)}async function J(e,t,r){const n=e.getStateSnapshot(),a=e.predicates.listStore.getState().reduce((u,p)=>({...u,[p.name]:(...S)=>p.predicate({...n,args:S})}),{}),c=e.features.listStore.getState().reduce((u,p)=>({...u,[p.id]:async()=>{const{bucket:S}=await p.getBucket();return S}}),{}),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:a,features:c};return await g(t,o)}function xe(e){return!C.supportsWindow()||!C.supportsDocument()?[]:Array.from(window.document.querySelectorAll(e)).filter(t=>t instanceof HTMLElement)}const ke="open";function ve(e){if(!C.supportsShadowRoot())throw new Error("Shadow DOM is not supported in this environment");return e.attachShadow({mode:ke})}function be(){return new Promise((e,t)=>{if(!C.supportsDocument()){t();return}document.readyState!=="loading"?e():document.addEventListener("readystatechange",()=>e(),{once:!0})})}function Ae(e,t){const r=new MutationObserver(n=>{document.contains(e)||(r.disconnect(),t())});r.observe(document.body,{childList:!0,subtree:!0})}const j="picked-root",q="picked-target",Oe="picked-root";function Fe(e,t){return[...e,{selector:`${Oe}[experience-id="${t}"]`,placement:"replace"}].flatMap(n=>{const a=xe(n.selector).filter(c=>!$e(c,t)&&!ue(c,t));return{...n,elements:a}})}function Be(e,t){return e.flatMap(r=>r.elements.map(n=>Me(n,r.placement,t)))}function _e(e,t){e.classList.add(q),e.classList.add(`${q}-${t}`)}function $e(e,t){return t?e.classList.contains(`${q}-${t}`):e.classList.contains(`${q}`)}function ue(e,t){return t?e.classList.contains(`${j}-${t}`):e.classList.contains(j)}function Te(e){const t=document.createElement("div");return t.style.display="block",t.classList.add(j),t.classList.add(`${j}-${e}`),t}function Me(e,t,r){let n;const a=Te(r);if(e instanceof Document)n=e.body.appendChild(a);else{switch(t){case"replace":e.replaceWith(a);break;case"before":e.before(a);break;case"after":e.after(a);break;case"prepend":e.prepend(a);break;default:e.append(a);break}n=a}return n}function oe(e){return e.type==="conditional"}function _(e){return e.type==="step"}function se(e){return e.type==="experience"}function X(e){return e.type==="origin"}function ie(e){return e.type==="action"}const fe=(e,t,r,n,a=new Set)=>a.has(r.id)?[]:(a.add(r.id),_(r)&&!n?[r]:t.filter(o=>o.sourceNodeId===r.id).flatMap(o=>{const u=e.find(p=>p.id===o.destinationNodeId);return u?fe(e,t,u,!1,a):[]})),Le=(e,t,r)=>fe(e,t,r,!0,new Set),le=(e,t,r,n,a=new Set)=>{if(a.has(r.id))return[-1,-1];a.add(r.id);const c=t.filter(p=>p.sourceNodeId===r.id);if(c.length===0)return[0,0];let o=1/0,u=-1/0;for(const p of c){const S=e.find($=>$.id===p.destinationNodeId);if(!S)continue;const[k,O]=le(e,t,S,!1,new Set(a));k!==-1&&(o=Math.min(o,k+1),u=Math.max(u,O+1))}return o===1/0?[-1,-1]:[o,u]},De=(e,t,r)=>le(e,t,r,!0,new Set),de=(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 a=t.filter(u=>u.destinationNodeId===r.id);if(a.length===0)return[-1,-1];let c=1/0,o=-1/0;for(const u of a){const p=e.find(O=>O.id===u.sourceNodeId);if(!p)continue;const[S,k]=de(e,t,p,new Set(n));S!==-1&&(c=Math.min(c,S+1),o=Math.max(o,k+1))}return c===1/0?[-1,-1]:[c,o]},Re=(e,t,r)=>de(e,t,r,new Set),pe=e=>e.find(r=>r.type==="origin")||null,z=(e,t,r)=>{if(!e)return pe(t);const n=r.find(c=>c.sourceNodeId===e.id);if(!n)return null;const a=t.find(c=>c.id===n.destinationNodeId);return a||null};async function Pe(e,t,r,n){const a=e?"true":"false",c=n.find(o=>o.sourceNodeHandle===a&&o.sourceNodeId===t);return r.find(o=>o.id===c?.destinationNodeId)}const Q=i.createDomain("experience-instance"),He=U.createFactory(({client:e,experience:t,target:r})=>{const n=i.createEvent(),a=i.createEvent(),c=i.createEvent(),o=i.createEvent(),u=i.createEvent(),p=i.createEvent(),S=t.componentStore,k=Q.store("transitioning"),O=e.history.entriesStore.map(s=>s.filter(d=>d.experienceId===t.id)),$=O.map(s=>s.filter(d=>_(d.node))),I=O.map(s=>s.at(-1)?.node||null),l=i.combine(t.treeStore,I,({steps:s},d)=>s.find(f=>d&&_(d)&&f.id===d.stepId)||null),h=i.combine(t.treeStore,$,({steps:s},d)=>{const f=d.at(-2);if(!f||!_(f.node))return null;const y=f.node;return s.find(B=>B.id===y.stepId)||null}),v=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?Le(s,d,f):[]),T=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?Re(s,d,f):[-1,-1]),L=i.combine(t.treeStore,I,({nodes:s,edges:d},f)=>f?De(s,d,f):[-1,-1]),F=Q.store(!1),P=i.createApi(F,{open:()=>!0,close:()=>!1,toggle:s=>!s,set:(s,d)=>d}),me=i.createEffect(async()=>{e.history.back({experienceId:t.id})}),Se=i.attach({source:t.treeStore,effect:async(s,d)=>{const f=s.nodes.find(y=>_(y)&&y.stepId===d);f&&e.history.push({experienceId:t.id,node:f})}}),Y=i.attach({source:I,effect:s=>{}}),W=i.attach({source:t.treeStore,effect:async({nodes:s})=>pe(s)}),G=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},f)=>{if(X(f))return z(f,s,d)}}),K=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d,conditionals:f},y)=>{if(!oe(y))return;const B=f.find(A=>A.id===y.conditionalId);if(!B)return;const x=y.id,w=await J(e,B.condition);return Pe(!!w,x,s,d)}}),Z=i.attach({source:t.treeStore,effect:async({nodes:s,edges:d},f)=>{if(!ie(f))return;const y=f.action;if(!y){N.logger("warn",`Action node ${f.id} has no action name`);return}const B=e.actions.getByName(y).getState();if(!B){N.logger("warn",`Action '${y}' not registered on client`);const x=d.find(w=>w.sourceNodeId===f.id&&w.sourceNodeHandle==="false");return x?s.find(w=>w.id===x.destinationNodeId):null}if(typeof B.action!="function"){N.logger("warn",`Action '${y}' is not a function`);const x=d.find(w=>w.sourceNodeId===f.id&&w.sourceNodeHandle==="false");return x?s.find(w=>w.id===x.destinationNodeId):null}try{N.logger("info",`Executing action: ${y}`),await B.action(y);const x=d.find(A=>A.sourceNodeId===f.id&&A.sourceNodeHandle==="true");if(!x)return N.logger("warn",`No 'true' edge found for action node ${f.id}`),null;const w=s.find(A=>A.id===x.destinationNodeId);return N.logger("info",`Action '${y}' succeeded, moving to node ${w?.id}`),w||null}catch(x){N.logger("warn",`Action '${y}' failed:`,x);const w=d.find(H=>H.sourceNodeId===f.id&&H.sourceNodeHandle==="false");if(!w)return N.logger("warn",`No 'false' edge found for action node ${f.id}`),null;const A=s.find(H=>H.id===w.destinationNodeId);return N.logger("info",`Action '${y}' failed, moving to node ${A?.id}`),A||null}}}),he=i.createEffect(s=>{if(se(s))return e.launchExperienceById(s.experienceId)}),ee=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:f}])=>z(s,d,f)}),D=i.attach({source:[I,t.treeStore],effect:async([s,{nodes:d,edges:f}])=>z(s,d,f)}),ye=i.createEffect(s=>{e.history.push({experienceId:t.id,node:s})}),te=i.attach({source:t.configStore,effect:async({initializeOpenLogic:s})=>ce(s)?!!await J(e,s):s??!1}),V=i.createEvent(),ne=i.createEvent();return i.sample({source:I,target:V}),i.sample({clock:V,filter:s=>s===null,target:W}),i.sample({clock:V,filter:s=>s!==null,target:ne}),i.split({source:ne,match:s=>oe(s)?"condition":_(s)?"step":se(s)?"launchExperience":X(s)?"origin":ie(s)?"action":"other",cases:{origin:G,condition:K,step:Y,launchExperience:he,action:Z,__:i.createEvent()}}),i.sample({clock:[K.doneData,G.doneData,W.doneData,D.doneData,ee.doneData,Z.doneData],filter:Boolean,target:ye}),i.sample({clock:a,target:D}),i.sample({clock:a,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit",step:s,experience:t}))}),i.sample({clock:D.done,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_success",step:s,experience:t}))}),i.sample({clock:D.fail,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_submit_error",step:s,experience:t}))}),i.sample({clock:c,target:me}),i.sample({clock:o,target:Se}),i.sample({source:i.combine([K.pending,G.pending,W.pending,D.pending]),fn:s=>s.some(Boolean)?"transitioning":"ready",target:k}),i.sample({clock:Y.doneData,source:l,filter:Boolean,target:e.eventBus.prepend(s=>({type:"step_enter",step:s,experience:t}))}),i.sample({clock:p,target:te}),i.sample({source:te.doneData,fn:Boolean,target:F}),i.sample({source:I,clock:n,filter:s=>s?X(s):!0,target:ee}),i.sample({source:F,filter:Boolean,target:n}),i.sample({source:F,filter:Boolean,target:e.eventBus.prepend(()=>({type:"experience_open",experience:t}))}),i.sample({source:F,filter:s=>!s,target:e.eventBus.prepend(()=>({type:"experience_close",experience:t}))}),i.sample({clock:u,target:[p]}),u(),{id:Math.random().toString(36).substring(7),experienceId:t.id,configStore:t.configStore,target:r,componentStore:S,stateStore:k,isOpenStore:F,open:P.open,close:P.close,toggleOpen:P.toggle,setOpen:P.set,treeStore:t.treeStore,fieldsStore:t.fieldsStore,currentNodeStore:I,currentStepStore:l,previousStepStore:h,nextReachableStepNodesStore:v,stepsToOriginStore:T,stepsToLeafStore:L,goToNextStep:a,goToPreviousStep:c,goToStepById:o,stepsHistoryStore:$}});function ge(e){return U.invoke(He,e)}const Ce=U.createFactory(({client:e})=>{const t=Q.store({}),r=i.createEvent(),n=i.createEvent(),a=i.createEvent(),c=i.createApi(t,{register(l,h){const v=[...l[h.experienceId]??[]];return v.push(h),{...l,[h.experienceId]:v}},unregister(l,h){const v=h.experienceId,T=l[v]?.filter(L=>L!==h);return{...l,[v]:T??[]}}}),o=i.createEffect(({experience:l,target:h})=>ge({client:e,experience:l,target:h})),u=i.createEffect(l=>{c.register(l)}),p=i.createEffect(l=>{l.target&&Ae(l.target,()=>{a(l)})}),S=i.createEffect(l=>{c.unregister(l)}),k=i.createEffect(l=>{const h=l.componentStore.getState();if(!h){N.logger("warn","No app component registered. Skipping init.");return}const v=h.frameworkStore.getState();if(!v){N.logger("error",`No framework registered for component '${h.name}'. Skipping rendering.`);return}const T=l.target;if(!T){N.logger("error",`No target element registered for experience '${l.experienceId}'. Skipping rendering.`);return}const L=ve(T);try{v.render(L,h.component,e,l)}catch(F){N.logger("error",F)}});i.sample({clock:r,target:o}),i.sample({clock:a,target:S}),i.sample({clock:o.doneData,target:[u,p,n]}),i.sample({clock:o.doneData,target:e.eventBus.prepend(l=>({type:"experience_initialize",experienceInstance:l}))}),i.sample({clock:n,target:k});function O(l,h){r({experience:l,target:h})}const $=t.map(l=>Object.values(l).flat());function I(l){return t.map(h=>h[l]||[],{skipVoid:!1})}return{spawn:O,getByExperienceId:I,listStore:$}});function je(e){return U.invoke(Ce,e)}exports.createAppHosts=Be;exports.createExperienceInstance=ge;exports.createExperienceInstanceIndex=je;exports.domInteractive=be;exports.evaluateRuleLogic=J;exports.getTargetElements=Fe;exports.isPickedRoot=ue;exports.isRulesLogic=ce;exports.isStepNode=_;exports.tagTargetElement=_e;