@picked/client 0.0.45-next.1 → 0.0.45-next.3

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