@picked/client 0.0.1-dev.1784511339717 → 0.0.1-dev.1785287094311
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-26zgmS8x.cjs → api-BzcdC_7V.cjs} +1 -1
- package/dist/{api-Bqutn13B.js → api-o8w9kJwm.js} +1 -1
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/image-optimisation-service.md +8 -0
- package/dist/docs/sdk/steps.md +86 -65
- package/dist/esm/form/index.js +143 -70
- package/dist/esm/index.js +6 -2
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +2 -2
- package/dist/{experience-instance-DCcKZrdI.js → experience-instance-DOJShRk5.js} +5 -1
- package/dist/experience-instance-DurC3pE-.cjs +1 -0
- package/dist/{plugin-BTkfm22-.js → plugin-C46DEiGE.js} +3 -1
- package/dist/plugin-nrEJGTuE.cjs +1 -0
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/entities/feature/feature.d.ts +8 -0
- package/dist/types/entities/feature/feature.d.ts.map +1 -1
- package/dist/types/form/create-submit-pipeline.d.ts +25 -9
- package/dist/types/form/create-submit-pipeline.d.ts.map +1 -1
- package/dist/types/form/index.d.ts +2 -1
- package/dist/types/form/index.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/types/utils/events.d.ts +25 -0
- package/dist/types/utils/events.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/experience-instance-Nl39IDKx.cjs +0 -1
- package/dist/plugin-Dg2_LLSE.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.
|
|
1
|
+
var e=`Picked-Client`,t=`Picked-Version`;function n(n,r){return{[e]:n,[t]:r}}var r=()=>`0.0.1-dev.1785287094311`,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/form/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../rules-logic-CGZIYgAI.cjs");let t=require("effector");function n(e,t,n){let r=e[t];if(r===void 0){e[t]=n;return}if(Array.isArray(r)&&Array.isArray(n)&&n.length>0){typeof r[0]==`string`?e[t]=[...r,...n].map(String):typeof r[0]==`number`?e[t]=[...r,...n].map(Number):typeof r[0]==`boolean`?e[t]=[...r,...n].map(e=>!!e):e[t]=n;return}e[t]=n}function r(e,t){let r=Array.from(t.entries()),i={};return e.forEach(e=>{let t=r.filter(([t])=>t===e.key);t.length===0&&(t=[[e.key,``]]),t.forEach(([,t])=>{if(t===``){n(i,e.key,null);return}switch(e.type){case`text`:case`object`:n(i,e.key,e.multiple?[String(t)]:String(t));break;case`number`:n(i,e.key,e.multiple?[Number(t)]:Number(t));break;case`boolean`:n(i,e.key,e.multiple?[t===`true`]:t===`true`);break}})}),i}function i(e){return Array.isArray(e.options)&&e.options.some(e=>`condition`in e)}function a(e){return e.some(e=>e.condition||i(e))}function o(e){return e.condition??null}async function s(t,n,r){return n.length===0||!a(n)?n:(await Promise.all(n.map(async n=>{let a=o(n);if(!(!a||await e.t(t,a,r)))return null;if(!Array.isArray(n.options)||!i(n))return n;let s=(await Promise.all(n.options.map(async n=>n.condition?await e.t(t,n.condition,r)?n:null:n))).filter(e=>e!==null);return s.length===n.options.length?n:s.length===0?null:{...n,options:s}}))).filter(e=>e!==null)}function c(e,n,r){let i=(0,t.createStore)([]),a=(0,t.attach)({source:{allFields:e.fields.listStore,fieldKeys:n,staged:r,committed:e.responses.getAllStore},effect:(0,t.createEffect)(async({allFields:t,fieldKeys:n,staged:r,committed:i})=>{let a=new Map(t.map(e=>[e.key,e]));return await s(e,n.flatMap(e=>{let t=a.get(e);return t?[t]:[]}),{responses:{...i,...r}})})});return(0,t.sample)({clock:a.doneData,target:i}),a(),(0,t.sample)({clock:[e.responses.listStore,n,e.fields.listStore,r],target:a}),{fieldsStore:i}}function l(e){return e===null||e===``||Array.isArray(e)&&e.length===0}function u(n,r,i){let a=(0,t.createEvent)(),o=(0,t.createEvent)(),s=(0,t.createEvent)(),c=(0,t.createStore)({});(0,t.sample)({clock:s,source:c,fn:(e,{fieldKey:t})=>({...e,[t]:!0}),target:c});let u=(0,t.createStore)({}),d=u.map(e=>Object.values(e).filter(e=>e!==void 0)),f=(0,t.attach)({source:{fields:r,staged:i,committed:n.responses.getAllStore},effect:async({fields:t,staged:r,committed:i},{fieldKey:a,value:o,checkRequired:s})=>{let c=t.find(e=>e.key===a);if(!c)return{fieldKey:a,error:null};if(c.validation&&Object.keys(c.validation).length>0){let t={...i,...r},s=await e.t(n,c.validation,{responses:t,$input:o});if(typeof s==`string`)return{fieldKey:a,error:{fieldKey:c.key,userMessage:s,systemMessage:s,value:o}};if(s===!1)return{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is invalid`,systemMessage:`Field validation rule returned false.`,value:o}}}return s&&c.required&&l(o)?{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is required`,systemMessage:`Field is required.`,value:o}}:{fieldKey:a,error:null}}});return(0,t.sample)({clock:a,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:o,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:s,fn:({fieldKey:e,value:t})=>({fieldKey:e,value:t,checkRequired:!0}),target:f}),i.on(a,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(o,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(s,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),u.on(f.doneData,(e,{fieldKey:t,error:n})=>{if(n===null){let n={...e};return delete n[t],n}return{...e,[t]:n}}),{fieldInputEvent:a,fieldChangeEvent:o,fieldBlurEvent:s,touchedStore:c,fieldErrorsStore:u,formErrorsStore:d,stagedValuesStore:i}}function d(e){let n=[];return{executeFx:(0,t.createEffect)(async(...t)=>await e(n,...t)),register:e=>(n.push(e),()=>{n=n.filter(t=>t!==e)})}}function f({client:e,experienceInstance:n,formId:i,title:a,stepStore:o,fieldsStore:s,goToNextStep:c}){let l=(0,t.createEvent)(),u=(0,t.createEvent)(),f=(0,t.createEvent)(),p=(0,t.createEvent)(),m=(0,t.createEvent)(),h=(0,t.createStore)(!1),g=(0,t.createStore)(!1);g.on(p,()=>!0).on(l,()=>!1);let _=l.map(()=>void 0),v=d(async(e,t)=>{await Promise.all(e.map(e=>Promise.resolve(e(t))))}),y=d(async(e,t)=>{await Promise.all(e.map(e=>Promise.resolve(e(t))))}),b=d(async(e,t)=>{let n=t;for(let t of e){let e=await Promise.resolve(t(n));e!==void 0&&(n=e)}return n}),x=(0,t.createEffect)(async t=>({data:t,errors:(await e.responses.commit(t)).errors})),S=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,data:e.data}),effect:(0,t.createEffect)(async({step:t,title:r,data:a})=>(e.eventBus({type:`form_submit_success`,form:{id:i,title:r},experience:n,step:t??void 0}),a))}),C=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,errors:e.errors}),effect:(0,t.createEffect)(async({step:t,title:r,errors:a})=>(e.eventBus({type:`form_submit_error`,form:{id:i,title:r},exception:{reason:a},experience:n,step:t??void 0}),a.forEach(r=>{e.eventBus({type:`field_validation_error`,exception:{reason:[r]},experience:n,step:t??void 0})}),a))});return(0,t.sample)({clock:l,fn:()=>!0,target:h}),(0,t.sample)({clock:l,source:{step:o,title:a},fn:({step:e,title:t})=>({formId:i,title:t,step:e}),target:(0,t.createEffect)(({formId:t,title:r,step:i})=>{e.eventBus({type:`form_submit`,form:{id:t,title:r},experience:n,step:i??void 0})})}),(0,t.sample)({clock:l,source:{stepFields:s},fn:({stepFields:e},t)=>(t.preventDefault(),r(e,new FormData(t.currentTarget))),target:b.executeFx}),(0,t.sample)({clock:b.executeFx.doneData,target:x}),(0,t.split)({source:x.doneData,match:{hasErrors:({errors:e})=>e.length>0},cases:{hasErrors:C,__:S}}),(0,t.sample)({clock:S.doneData,target:u}),(0,t.sample)({clock:u,fn:e=>({data:e,stopNavigation:p}),target:v.executeFx}),(0,t.sample)({clock:v.executeFx.done,target:m}),(0,t.sample)({clock:m,source:g,filter:e=>!e,target:c}),(0,t.sample)({clock:C.doneData,target:f}),(0,t.sample)({clock:f,target:y.executeFx}),(0,t.sample)({clock:[m,y.executeFx.done,b.executeFx.fail,x.fail,S.fail,C.fail,v.executeFx.fail,y.executeFx.fail],fn:()=>!1,target:h}),{submitEvent:l,isFormSubmitting:h,onBeforeSubmit:b.register,onSuccess:v.register,onError:y.register,submitStarted:_,validationErrorsReceived:f}}function p(e){let t=e.currentTarget;if(t instanceof HTMLInputElement)return t.type===`checkbox`?t.checked:t.value;if(t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement)return t.value}function m(e,t,n){let r=e.currentTarget;if(t.multiple){if(r instanceof HTMLInputElement&&r.type===`checkbox`)return h(e,r,n);if(r instanceof HTMLSelectElement&&r.multiple)return Array.from(r.selectedOptions,e=>e.value)}return p(e)}function h(e,t,n){if(e.type===`input`)return;let r=Array.isArray(n)?n.map(String):[];return e.type===`change`?g(r,String(t.value)):r}function g(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function _(e,t,n){return r=>{let i=m(r,e,t);i!==void 0&&n({fieldKey:e.key,value:i})}}function v(e,n,r,i){let{client:a,experienceInstance:o}=e,{currentStepStore:s,goToNextStep:l}=o,d=(0,t.combine)(s,o,(e,t)=>({stepId:e?.id,experienceId:t.id})),p=(0,t.createStore)({}),{fieldsStore:m}=c(a,i,p);(0,t.sample)({clock:m,source:p,fn:(e,t)=>{let n=!1,r={...e};for(let e of t)e.defaultValue!=null&&!(e.key in r)&&(r[e.key]=e.defaultValue,n=!0);return n?r:e},target:p});let{fieldInputEvent:h,fieldChangeEvent:g,fieldBlurEvent:v,touchedStore:y,fieldErrorsStore:b,formErrorsStore:x}=u(a,m,p),S=(0,t.combine)({fields:m,responses:a.responses.listStore,staged:p,fieldErrors:b,touched:y,experienceAndStepId:d},({fields:e,responses:t,staged:n,fieldErrors:r,touched:i,experienceAndStepId:a})=>e.map(e=>{let o=n[e.key]??t.find(t=>t.fieldKey===e.key)?.value??e.defaultValue,s=_(e,o,h),c=_(e,o,g),l=_(e,o,v),u=r[e.key],d=e.type===`number`?`number`:`text`,f=e.type===`boolean`?`checkbox`:d,{experienceId:p,stepId:m}=a,y=`${p}-${m??`step`}-${e.id}`;return{...e,value:o,error:u,touched:i[e.key]??!1,props:{id:y,name:e.key,key:e.key,value:o,type:f,required:e.required,placeholder:e.placeholder,oninput:s,onchange:c,onblur:l}}})),{submitEvent:C,isFormSubmitting:w,onBeforeSubmit:T,onSuccess:E,onError:D,submitStarted:O,validationErrorsReceived:k}=f({client:a,experienceInstance:o,formId:n,title:r,stepStore:s,fieldsStore:m,goToNextStep:l});return(0,t.sample)({clock:O,fn:()=>({}),target:y}),(0,t.sample)({clock:O,fn:()=>({}),target:b}),(0,t.sample)({clock:k,source:m,fn:(e,t)=>Object.fromEntries(t.map(t=>[e.find(e=>e.key===t.fieldKey)?.key??t.fieldKey,t])),target:b}),{form:{props:{onsubmit:C},errors:x,submitting:w,onBeforeSubmit:T,onSuccess:E,onError:D},fields:S}}exports.buildResponsesFromFormData=r,exports.createFieldEvaluator=c,exports.createFieldValidation=u,exports.createForm=v,exports.createSubmitPipeline=f,exports.getEventValue=p,exports.getStepFields=s;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../rules-logic-CGZIYgAI.cjs");require("../../logger-CSTvAyyB.cjs");let t=require("effector");function n(e,t,n){let r=e[t];if(r===void 0){e[t]=n;return}if(Array.isArray(r)&&Array.isArray(n)&&n.length>0){typeof r[0]==`string`?e[t]=[...r,...n].map(String):typeof r[0]==`number`?e[t]=[...r,...n].map(Number):typeof r[0]==`boolean`?e[t]=[...r,...n].map(e=>!!e):e[t]=n;return}e[t]=n}function r(e,t){let r=Array.from(t.entries()),i={};return e.forEach(e=>{let t=r.filter(([t])=>t===e.key);t.length===0&&(t=[[e.key,``]]),t.forEach(([,t])=>{if(t===``){n(i,e.key,null);return}switch(e.type){case`text`:case`object`:n(i,e.key,e.multiple?[String(t)]:String(t));break;case`number`:n(i,e.key,e.multiple?[Number(t)]:Number(t));break;case`boolean`:n(i,e.key,e.multiple?[t===`true`]:t===`true`);break}})}),i}function i(e){return Array.isArray(e.options)&&e.options.some(e=>`condition`in e)}function a(e){return e.some(e=>e.condition||i(e))}function o(e){return e.condition??null}async function s(t,n,r){return n.length===0||!a(n)?n:(await Promise.all(n.map(async n=>{let a=o(n);if(!(!a||await e.t(t,a,r)))return null;if(!Array.isArray(n.options)||!i(n))return n;let s=(await Promise.all(n.options.map(async n=>n.condition?await e.t(t,n.condition,r)?n:null:n))).filter(e=>e!==null);return s.length===n.options.length?n:s.length===0?null:{...n,options:s}}))).filter(e=>e!==null)}function c(e,n,r){let i=(0,t.createStore)([]),a=(0,t.attach)({source:{allFields:e.fields.listStore,fieldKeys:n,staged:r,committed:e.responses.getAllStore},effect:(0,t.createEffect)(async({allFields:t,fieldKeys:n,staged:r,committed:i})=>{let a=new Map(t.map(e=>[e.key,e]));return await s(e,n.flatMap(e=>{let t=a.get(e);return t?[t]:[]}),{responses:{...i,...r}})})});return(0,t.sample)({clock:a.doneData,target:i}),a(),(0,t.sample)({clock:[e.responses.listStore,n,e.fields.listStore,r],target:a}),{fieldsStore:i}}function l(e){return e===null||e===``||Array.isArray(e)&&e.length===0}function u(n,r,i){let a=(0,t.createEvent)(),o=(0,t.createEvent)(),s=(0,t.createEvent)(),c=(0,t.createStore)({});(0,t.sample)({clock:s,source:c,fn:(e,{fieldKey:t})=>({...e,[t]:!0}),target:c});let u=(0,t.createStore)({}),d=u.map(e=>Object.values(e).filter(e=>e!==void 0)),f=(0,t.attach)({source:{fields:r,staged:i,committed:n.responses.getAllStore},effect:async({fields:t,staged:r,committed:i},{fieldKey:a,value:o,checkRequired:s})=>{let c=t.find(e=>e.key===a);if(!c)return{fieldKey:a,error:null};if(c.validation&&Object.keys(c.validation).length>0){let t={...i,...r},s=await e.t(n,c.validation,{responses:t,$input:o});if(typeof s==`string`)return{fieldKey:a,error:{fieldKey:c.key,userMessage:s,systemMessage:s,value:o}};if(s===!1)return{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is invalid`,systemMessage:`Field validation rule returned false.`,value:o}}}return s&&c.required&&l(o)?{fieldKey:a,error:{fieldKey:c.key,userMessage:`This field is required`,systemMessage:`Field is required.`,value:o}}:{fieldKey:a,error:null}}});return(0,t.sample)({clock:a,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:o,source:c,filter:(e,{fieldKey:t})=>e[t]===!0,fn:(e,{fieldKey:t,value:n})=>({fieldKey:t,value:n,checkRequired:!1}),target:f}),(0,t.sample)({clock:s,fn:({fieldKey:e,value:t})=>({fieldKey:e,value:t,checkRequired:!0}),target:f}),i.on(a,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(o,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),i.on(s,(e,{fieldKey:t,value:n})=>({...e,[t]:n})),u.on(f.doneData,(e,{fieldKey:t,error:n})=>{if(n===null){let n={...e};return delete n[t],n}return{...e,[t]:n}}),{fieldInputEvent:a,fieldChangeEvent:o,fieldBlurEvent:s,touchedStore:c,fieldErrorsStore:u,formErrorsStore:d,stagedValuesStore:i}}var d=25,f=`Error`;function p(e,t){return t instanceof Error?{phase:e,error:{name:t.name,message:t.message}}:typeof t==`string`?{phase:e,error:{name:f,message:t}}:typeof t==`object`&&t&&`message`in t&&typeof t.message==`string`?{phase:e,error:{name:`name`in t&&typeof t.name==`string`?t.name:f,message:t.message}}:{phase:e,error:{name:f,message:`Unknown callback error`}}}async function m(e,t){return(await Promise.all(t.map(async t=>{try{await t();return}catch(t){return p(e,t)}}))).flatMap(e=>e===void 0?[]:[e])}function h(e){let n=[];return{executeFx:(0,t.createEffect)(async(...t)=>await e(n.map(e=>e.callback),...t)),register:e=>{let t={callback:e};return n.push(t),n.length>d&&`${n.length}`,()=>{let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}}}function g({client:e,experienceInstance:n,formId:i,title:a,stepStore:o,fieldsStore:s,goToNextStep:c}){let l=(0,t.createEvent)(),u=(0,t.createEvent)(),d=(0,t.createEvent)(),f=(0,t.createEvent)(),g=(0,t.createEvent)(),_=(0,t.createEvent)(),v=(0,t.createStore)(!1),y=(0,t.createStore)(!1);y.on(f,()=>!0).on(l,()=>!1);let b=l.map(()=>void 0),x=h(async(e,t)=>m(`success`,e.map(e=>()=>e(t)))),S=h(async(e,t)=>m(`error`,e.map(e=>()=>e(t)))),C=h(async(e,t)=>{let n=t;for(let t of e){let e=await Promise.resolve(t(n));e!==void 0&&(n=e)}return n}),w=(0,t.createEffect)(async t=>({data:t,errors:(await e.responses.commit(t)).errors})),T=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,data:e.data}),effect:(0,t.createEffect)(async({step:t,title:r,data:a})=>(e.eventBus({type:`form_submit_success`,form:{id:i,title:r},experience:n,step:t??void 0}),a))}),E=(0,t.attach)({source:{step:o,title:a},mapParams:(e,t)=>({step:t.step,title:t.title,errors:e.errors}),effect:(0,t.createEffect)(async({step:t,title:r,errors:a})=>(e.eventBus({type:`form_submit_error`,form:{id:i,title:r},exception:{reason:a},experience:n,step:t??void 0}),a.forEach(r=>{e.eventBus({type:`field_validation_error`,exception:{reason:[r]},experience:n,step:t??void 0})}),a))}),D=(0,t.createEffect)(({step:t,title:r,failures:a})=>{a.forEach(({phase:a,error:o})=>{e.eventBus({type:`form_submit_callback_error`,form:{id:i,title:r},phase:a,error:o,experience:n,step:t??void 0})})});return(0,t.sample)({clock:l,fn:()=>!0,target:v}),(0,t.sample)({clock:l,source:{step:o,title:a},fn:({step:e,title:t})=>({formId:i,title:t,step:e}),target:(0,t.createEffect)(({formId:t,title:r,step:i})=>{e.eventBus({type:`form_submit`,form:{id:t,title:r},experience:n,step:i??void 0})})}),(0,t.sample)({clock:l,source:{stepFields:s},fn:({stepFields:e},t)=>(t.preventDefault(),r(e,new FormData(t.currentTarget))),target:C.executeFx}),(0,t.sample)({clock:C.executeFx.doneData,target:w}),(0,t.split)({source:w.doneData,match:{hasErrors:({errors:e})=>e.length>0},cases:{hasErrors:E,__:T}}),(0,t.sample)({clock:T.doneData,target:u}),(0,t.sample)({clock:u,fn:e=>({data:e,stopNavigation:f}),target:x.executeFx}),(0,t.sample)({clock:[x.executeFx.doneData,S.executeFx.doneData],filter:e=>e.length>0,target:_}),(0,t.sample)({clock:C.executeFx.failData,fn:e=>[p(`before-submit`,e)],target:_}),(0,t.sample)({clock:_,source:{step:o,title:a},fn:({step:e,title:t},n)=>({step:e,title:t,failures:n}),target:D}),(0,t.sample)({clock:x.executeFx.done,target:g}),(0,t.sample)({clock:g,source:y,filter:e=>!e,target:c}),(0,t.sample)({clock:E.doneData,target:d}),(0,t.sample)({clock:d,target:S.executeFx}),(0,t.sample)({clock:[g,S.executeFx.done,C.executeFx.fail,w.fail,T.fail,E.fail,x.executeFx.fail,S.executeFx.fail],fn:()=>!1,target:v}),{submitEvent:l,isFormSubmitting:v,onBeforeSubmit:C.register,onSuccess:x.register,onError:S.register,submitStarted:b,validationErrorsReceived:d}}function _(e){let t=e.currentTarget;if(t instanceof HTMLInputElement)return t.type===`checkbox`?t.checked:t.value;if(t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement)return t.value}function v(e,t,n){let r=e.currentTarget;if(t.multiple){if(r instanceof HTMLInputElement&&r.type===`checkbox`)return y(e,r,n);if(r instanceof HTMLSelectElement&&r.multiple)return Array.from(r.selectedOptions,e=>e.value)}return _(e)}function y(e,t,n){if(e.type===`input`)return;let r=Array.isArray(n)?n.map(String):[];return e.type===`change`?b(r,String(t.value)):r}function b(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function x(e,t,n){return r=>{let i=v(r,e,t);i!==void 0&&n({fieldKey:e.key,value:i})}}function S(e,n,r,i){let{client:a,experienceInstance:o}=e,{currentStepStore:s,goToNextStep:l}=o,d=(0,t.combine)(s,o,(e,t)=>({stepId:e?.id,experienceId:t.id})),f=(0,t.createStore)({}),{fieldsStore:p}=c(a,i,f);(0,t.sample)({clock:p,source:f,fn:(e,t)=>{let n=!1,r={...e};for(let e of t)e.defaultValue!=null&&!(e.key in r)&&(r[e.key]=e.defaultValue,n=!0);return n?r:e},target:f});let{fieldInputEvent:m,fieldChangeEvent:h,fieldBlurEvent:_,touchedStore:v,fieldErrorsStore:y,formErrorsStore:b}=u(a,p,f),S=(0,t.combine)({fields:p,responses:a.responses.listStore,staged:f,fieldErrors:y,touched:v,experienceAndStepId:d},({fields:e,responses:t,staged:n,fieldErrors:r,touched:i,experienceAndStepId:a})=>e.map(e=>{let o=n[e.key]??t.find(t=>t.fieldKey===e.key)?.value??e.defaultValue,s=x(e,o,m),c=x(e,o,h),l=x(e,o,_),u=r[e.key],d=e.type===`number`?`number`:`text`,f=e.type===`boolean`?`checkbox`:d,{experienceId:p,stepId:g}=a,v=`${p}-${g??`step`}-${e.id}`;return{...e,value:o,error:u,touched:i[e.key]??!1,props:{id:v,name:e.key,key:e.key,value:o,type:f,required:e.required,placeholder:e.placeholder,oninput:s,onchange:c,onblur:l}}})),{submitEvent:C,isFormSubmitting:w,onBeforeSubmit:T,onSuccess:E,onError:D,submitStarted:O,validationErrorsReceived:k}=g({client:a,experienceInstance:o,formId:n,title:r,stepStore:s,fieldsStore:p,goToNextStep:l});return(0,t.sample)({clock:O,fn:()=>({}),target:v}),(0,t.sample)({clock:O,fn:()=>({}),target:y}),(0,t.sample)({clock:k,source:p,fn:(e,t)=>Object.fromEntries(t.map(t=>[e.find(e=>e.key===t.fieldKey)?.key??t.fieldKey,t])),target:y}),{form:{props:{onsubmit:C},errors:b,submitting:w,onBeforeSubmit:T,onSuccess:E,onError:D},fields:S}}exports.buildResponsesFromFormData=r,exports.createFieldEvaluator=c,exports.createFieldValidation=u,exports.createForm=S,exports.createSubmitPipeline=g,exports.getEventValue=_,exports.getStepFields=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-26zgmS8x.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:
|
|
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-DurC3pE-.cjs"),o=require("../storage-DUw9UJ2h.cjs"),s=require("../api-BzcdC_7V.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,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,getBucket:async()=>await d(e.feature),isResolved:!1}}));(0,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
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.src?e.replaceWith(r):(globalThis.__pickedEmbedScriptRoot=e.getRootNode(),e.replaceWith(r),globalThis.__pickedEmbedScriptRoot=null),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-BzcdC_7V.cjs"),t=require("../../../plugin-nrEJGTuE.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-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../experience-instance-DurC3pE-.cjs"),t=require("../../plugin-nrEJGTuE.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;
|
|
@@ -30,10 +30,18 @@ A request whose `url` parameter resolves to any other hostname returns `400 Bad
|
|
|
30
30
|
|
|
31
31
|
## Supported widths
|
|
32
32
|
|
|
33
|
+
Device sizes, for responsive images that span the viewport width:
|
|
34
|
+
|
|
33
35
|
```
|
|
34
36
|
640, 750, 828, 1080, 1200, 1920, 2048, 3840
|
|
35
37
|
```
|
|
36
38
|
|
|
39
|
+
Image sizes, for fixed-size UI elements such as icons, avatars, and thumbnails:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
16, 32, 48, 64, 96, 128, 256, 384
|
|
43
|
+
```
|
|
44
|
+
|
|
37
45
|
Requests with any other width return `400 Bad Request`. Pick the smallest width that covers your target rendering size at the user's device pixel ratio.
|
|
38
46
|
|
|
39
47
|
## Supported qualities
|
package/dist/docs/sdk/steps.md
CHANGED
|
@@ -174,6 +174,8 @@ function ContactForm() {
|
|
|
174
174
|
|
|
175
175
|
When a step has fields, `getStep()` / `useStep()` provides a `form` object for handling submission, validation, and navigation.
|
|
176
176
|
|
|
177
|
+
Both accept an optional callbacks object — `getStep({ onSuccess })` / `useStep({ onSuccess })` — which is the recommended way to react to submission. The available slots are `onBeforeSubmit`, `onSuccess` and `onError`, all covered below.
|
|
178
|
+
|
|
177
179
|
### Handling submission
|
|
178
180
|
|
|
179
181
|
Bind `form.props` to your `<form>` element's `onsubmit` handler:
|
|
@@ -243,15 +245,16 @@ function StepForm() {
|
|
|
243
245
|
Submitting the form:
|
|
244
246
|
|
|
245
247
|
1. Collects field values from the HTML form
|
|
246
|
-
2. Runs `
|
|
248
|
+
2. Runs `onBeforeSubmit` transform callbacks in series — a throw here aborts the submit before anything is committed
|
|
247
249
|
3. Validates all required fields and field validation rules
|
|
248
250
|
4. Commits the responses to the experience state
|
|
249
251
|
5. Fires `form_submit_success` or `form_submit_error` on the event bus
|
|
250
|
-
6.
|
|
252
|
+
6. Runs your `onSuccess` or `onError` callbacks
|
|
253
|
+
7. Navigates to the next step (unless `stopNavigation` is called, and regardless of whether a callback in step 6 failed)
|
|
251
254
|
|
|
252
255
|
### Transforming data before submission
|
|
253
256
|
|
|
254
|
-
Use `
|
|
257
|
+
Use `onBeforeSubmit` to intercept and transform field data before it is committed. Callbacks run in series, each receiving the output of the previous:
|
|
255
258
|
|
|
256
259
|
:::code-group
|
|
257
260
|
|
|
@@ -259,14 +262,14 @@ Use `form.onBeforeSubmit` to intercept and transform field data before it is com
|
|
|
259
262
|
<script lang="ts">
|
|
260
263
|
import { getStep } from '@picked/svelte/hooks'
|
|
261
264
|
|
|
262
|
-
const { form } = getStep(
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
265
|
+
const { form } = getStep({
|
|
266
|
+
onBeforeSubmit: async (data) => {
|
|
267
|
+
// Normalize email to lowercase before committing
|
|
268
|
+
return {
|
|
269
|
+
...data,
|
|
270
|
+
'email-address': String(data['email-address']).toLowerCase(),
|
|
271
|
+
}
|
|
272
|
+
},
|
|
270
273
|
})
|
|
271
274
|
</script>
|
|
272
275
|
|
|
@@ -277,14 +280,14 @@ Use `form.onBeforeSubmit` to intercept and transform field data before it is com
|
|
|
277
280
|
import { useStep } from '@picked/react/hooks'
|
|
278
281
|
|
|
279
282
|
function ContactStep() {
|
|
280
|
-
const { form } = useStep(
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
283
|
+
const { form } = useStep({
|
|
284
|
+
onBeforeSubmit: async (data) => {
|
|
285
|
+
// Normalize email to lowercase before committing
|
|
286
|
+
return {
|
|
287
|
+
...data,
|
|
288
|
+
'email-address': String(data['email-address']).toLowerCase(),
|
|
289
|
+
}
|
|
290
|
+
},
|
|
288
291
|
})
|
|
289
292
|
|
|
290
293
|
return <form {...form.props}>{/* ... */}</form>
|
|
@@ -293,9 +296,13 @@ function ContactStep() {
|
|
|
293
296
|
|
|
294
297
|
:::
|
|
295
298
|
|
|
299
|
+
:::warning
|
|
300
|
+
If an `onBeforeSubmit` callback throws, the submit is aborted before anything is committed and the step does not advance. This is deliberate — committing a half-transformed payload would persist wrong-but-plausible data. Use it for transforms and validation, and put side effects such as analytics or backend calls in `onSuccess` instead.
|
|
301
|
+
:::
|
|
302
|
+
|
|
296
303
|
### Success and error callbacks
|
|
297
304
|
|
|
298
|
-
|
|
305
|
+
Pass `onSuccess` and `onError` to react to submission outcomes:
|
|
299
306
|
|
|
300
307
|
:::code-group
|
|
301
308
|
|
|
@@ -303,18 +310,13 @@ Register callbacks for submission outcomes using `form.onSuccess` and `form.onEr
|
|
|
303
310
|
<script lang="ts">
|
|
304
311
|
import { getStep } from '@picked/svelte/hooks'
|
|
305
312
|
|
|
306
|
-
const { form } = getStep(
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
})
|
|
314
|
-
})
|
|
315
|
-
|
|
316
|
-
form.onError((errors) => {
|
|
317
|
-
console.error('Validation errors:', errors)
|
|
313
|
+
const { form } = getStep({
|
|
314
|
+
onSuccess: ({ data }) => {
|
|
315
|
+
analytics.track('lead_captured', data)
|
|
316
|
+
},
|
|
317
|
+
onError: (errors) => {
|
|
318
|
+
console.error('Validation errors:', errors)
|
|
319
|
+
},
|
|
318
320
|
})
|
|
319
321
|
</script>
|
|
320
322
|
|
|
@@ -325,18 +327,13 @@ Register callbacks for submission outcomes using `form.onSuccess` and `form.onEr
|
|
|
325
327
|
import { useStep } from '@picked/react/hooks'
|
|
326
328
|
|
|
327
329
|
function ContactStep() {
|
|
328
|
-
const { form } = useStep(
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
})
|
|
336
|
-
})
|
|
337
|
-
|
|
338
|
-
form.onError((errors) => {
|
|
339
|
-
console.error('Validation errors:', errors)
|
|
330
|
+
const { form } = useStep({
|
|
331
|
+
onSuccess: ({ data }) => {
|
|
332
|
+
analytics.track('lead_captured', data)
|
|
333
|
+
},
|
|
334
|
+
onError: (errors) => {
|
|
335
|
+
console.error('Validation errors:', errors)
|
|
336
|
+
},
|
|
340
337
|
})
|
|
341
338
|
|
|
342
339
|
return <form {...form.props}>{/* ... */}</form>
|
|
@@ -345,7 +342,29 @@ function ContactStep() {
|
|
|
345
342
|
|
|
346
343
|
:::
|
|
347
344
|
|
|
348
|
-
Callbacks
|
|
345
|
+
Callbacks are scoped to the component that passes them, and are cleaned up automatically when that component unmounts — no manual teardown is needed. Passing a new inline function on a re-render replaces the previous one rather than adding another, so a single submit runs each callback exactly once.
|
|
346
|
+
|
|
347
|
+
A throwing or rejecting `onSuccess`/`onError` callback cannot block the flow: the step still advances, and the failure is reported on the client event bus as `form_submit_callback_error` so it stays observable.
|
|
348
|
+
|
|
349
|
+
#### Registering callbacks imperatively
|
|
350
|
+
|
|
351
|
+
`form.onSuccess`, `form.onError` and `form.onBeforeSubmit` are also available as an escape hatch, for cases where a callback has to be attached conditionally. They return nothing — cleanup is automatic, as above.
|
|
352
|
+
|
|
353
|
+
```tsx [React]
|
|
354
|
+
function ContactStep({ trackConversions }: { trackConversions: boolean }) {
|
|
355
|
+
const { form } = useStep()
|
|
356
|
+
|
|
357
|
+
if (trackConversions) {
|
|
358
|
+
form.onSuccess(({ data }) => analytics.track('lead_captured', data))
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return <form {...form.props}>{/* ... */}</form>
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
:::warning
|
|
366
|
+
Register from the component body, not from an event handler. A registration made inside a click handler is added each time the handler runs and is only released when the component unmounts, so it accumulates. Prefer the options object above wherever you can.
|
|
367
|
+
:::
|
|
349
368
|
|
|
350
369
|
### Preventing navigation on success
|
|
351
370
|
|
|
@@ -358,18 +377,19 @@ By default, the experience advances to the next step after a successful submissi
|
|
|
358
377
|
import { getStep } from '@picked/svelte/hooks'
|
|
359
378
|
import { getExperience } from '@picked/svelte/hooks'
|
|
360
379
|
|
|
361
|
-
const { form } = getStep()
|
|
362
380
|
const experience = getExperience()
|
|
363
381
|
|
|
364
|
-
|
|
365
|
-
stopNavigation
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
382
|
+
const { form } = getStep({
|
|
383
|
+
onSuccess: ({ data, stopNavigation }) => {
|
|
384
|
+
stopNavigation()
|
|
385
|
+
|
|
386
|
+
// Navigate to step based on submitted data
|
|
387
|
+
if (data['plan-type'] === 'enterprise') {
|
|
388
|
+
experience.goToStepById('enterprise-contact')
|
|
389
|
+
} else {
|
|
390
|
+
experience.goToNextStep()
|
|
391
|
+
}
|
|
392
|
+
},
|
|
373
393
|
})
|
|
374
394
|
</script>
|
|
375
395
|
|
|
@@ -381,18 +401,19 @@ import { useStep } from '@picked/react/hooks'
|
|
|
381
401
|
import { useExperience } from '@picked/react/hooks'
|
|
382
402
|
|
|
383
403
|
function PlanStep() {
|
|
384
|
-
const { form } = useStep()
|
|
385
404
|
const experience = useExperience()
|
|
386
405
|
|
|
387
|
-
|
|
388
|
-
stopNavigation
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
406
|
+
const { form } = useStep({
|
|
407
|
+
onSuccess: ({ data, stopNavigation }) => {
|
|
408
|
+
stopNavigation()
|
|
409
|
+
|
|
410
|
+
// Decide the next step based on submitted data
|
|
411
|
+
if (data['plan-type'] === 'enterprise') {
|
|
412
|
+
experience.goToStepById('enterprise-contact')
|
|
413
|
+
} else {
|
|
414
|
+
experience.goToNextStep()
|
|
415
|
+
}
|
|
416
|
+
},
|
|
396
417
|
})
|
|
397
418
|
|
|
398
419
|
return <form {...form.props}>{/* ... */}</form>
|
package/dist/esm/form/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { t as e } from "../../rules-logic-HesIUCu6.js";
|
|
2
|
+
import "../../logger-DMN6TxJJ.js";
|
|
2
3
|
import { attach as t, combine as n, createEffect as r, createEvent as i, createStore as a, sample as o, split as s } from "effector";
|
|
3
4
|
//#region src/form/build-responses.ts
|
|
4
5
|
function c(e, t, n) {
|
|
@@ -221,33 +222,71 @@ function g(n, r, s) {
|
|
|
221
222
|
}
|
|
222
223
|
//#endregion
|
|
223
224
|
//#region src/form/create-submit-pipeline.ts
|
|
224
|
-
|
|
225
|
+
var _ = 25, v = "Error";
|
|
226
|
+
function y(e, t) {
|
|
227
|
+
return t instanceof Error ? {
|
|
228
|
+
phase: e,
|
|
229
|
+
error: {
|
|
230
|
+
name: t.name,
|
|
231
|
+
message: t.message
|
|
232
|
+
}
|
|
233
|
+
} : typeof t == "string" ? {
|
|
234
|
+
phase: e,
|
|
235
|
+
error: {
|
|
236
|
+
name: v,
|
|
237
|
+
message: t
|
|
238
|
+
}
|
|
239
|
+
} : typeof t == "object" && t && "message" in t && typeof t.message == "string" ? {
|
|
240
|
+
phase: e,
|
|
241
|
+
error: {
|
|
242
|
+
name: "name" in t && typeof t.name == "string" ? t.name : v,
|
|
243
|
+
message: t.message
|
|
244
|
+
}
|
|
245
|
+
} : {
|
|
246
|
+
phase: e,
|
|
247
|
+
error: {
|
|
248
|
+
name: v,
|
|
249
|
+
message: "Unknown callback error"
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
async function b(e, t) {
|
|
254
|
+
return (await Promise.all(t.map(async (t) => {
|
|
255
|
+
try {
|
|
256
|
+
await t();
|
|
257
|
+
return;
|
|
258
|
+
} catch (t) {
|
|
259
|
+
return y(e, t);
|
|
260
|
+
}
|
|
261
|
+
}))).flatMap((e) => e === void 0 ? [] : [e]);
|
|
262
|
+
}
|
|
263
|
+
function x(e) {
|
|
225
264
|
let t = [];
|
|
226
265
|
return {
|
|
227
|
-
executeFx: r(async (...n) => await e(t, ...n)),
|
|
228
|
-
register: (e) =>
|
|
229
|
-
|
|
230
|
-
|
|
266
|
+
executeFx: r(async (...n) => await e(t.map((e) => e.callback), ...n)),
|
|
267
|
+
register: (e) => {
|
|
268
|
+
let n = { callback: e };
|
|
269
|
+
return t.push(n), t.length > _ && `${t.length}`, () => {
|
|
270
|
+
let e = t.indexOf(n);
|
|
271
|
+
e !== -1 && t.splice(e, 1);
|
|
272
|
+
};
|
|
273
|
+
}
|
|
231
274
|
};
|
|
232
275
|
}
|
|
233
|
-
function
|
|
234
|
-
let m = i(), h = i(), g = i(), v = i(),
|
|
235
|
-
|
|
236
|
-
let
|
|
237
|
-
await Promise.all(e.map((e) => Promise.resolve(e(t))));
|
|
238
|
-
}), w = _(async (e, t) => {
|
|
239
|
-
await Promise.all(e.map((e) => Promise.resolve(e(t))));
|
|
240
|
-
}), T = _(async (e, t) => {
|
|
276
|
+
function S({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d, fieldsStore: f, goToNextStep: p }) {
|
|
277
|
+
let m = i(), h = i(), g = i(), _ = i(), v = i(), S = i(), C = a(!1), w = a(!1);
|
|
278
|
+
w.on(_, () => !0).on(m, () => !1);
|
|
279
|
+
let T = m.map(() => void 0), E = x(async (e, t) => b("success", e.map((e) => () => e(t)))), D = x(async (e, t) => b("error", e.map((e) => () => e(t)))), O = x(async (e, t) => {
|
|
241
280
|
let n = t;
|
|
242
281
|
for (let t of e) {
|
|
243
282
|
let e = await Promise.resolve(t(n));
|
|
244
283
|
e !== void 0 && (n = e);
|
|
245
284
|
}
|
|
246
285
|
return n;
|
|
247
|
-
}),
|
|
286
|
+
}), k = r(async (t) => ({
|
|
248
287
|
data: t,
|
|
249
288
|
errors: (await e.responses.commit(t)).errors
|
|
250
|
-
})),
|
|
289
|
+
})), A = t({
|
|
251
290
|
source: {
|
|
252
291
|
step: d,
|
|
253
292
|
title: u
|
|
@@ -266,7 +305,7 @@ function v({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d
|
|
|
266
305
|
experience: n,
|
|
267
306
|
step: t ?? void 0
|
|
268
307
|
}), i))
|
|
269
|
-
}),
|
|
308
|
+
}), j = t({
|
|
270
309
|
source: {
|
|
271
310
|
step: d,
|
|
272
311
|
title: u
|
|
@@ -293,11 +332,25 @@ function v({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d
|
|
|
293
332
|
step: t ?? void 0
|
|
294
333
|
});
|
|
295
334
|
}), i))
|
|
335
|
+
}), M = r(({ step: t, title: r, failures: i }) => {
|
|
336
|
+
i.forEach(({ phase: i, error: a }) => {
|
|
337
|
+
e.eventBus({
|
|
338
|
+
type: "form_submit_callback_error",
|
|
339
|
+
form: {
|
|
340
|
+
id: c,
|
|
341
|
+
title: r
|
|
342
|
+
},
|
|
343
|
+
phase: i,
|
|
344
|
+
error: a,
|
|
345
|
+
experience: n,
|
|
346
|
+
step: t ?? void 0
|
|
347
|
+
});
|
|
348
|
+
});
|
|
296
349
|
});
|
|
297
350
|
return o({
|
|
298
351
|
clock: m,
|
|
299
352
|
fn: () => !0,
|
|
300
|
-
target:
|
|
353
|
+
target: C
|
|
301
354
|
}), o({
|
|
302
355
|
clock: m,
|
|
303
356
|
source: {
|
|
@@ -324,97 +377,117 @@ function v({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d
|
|
|
324
377
|
clock: m,
|
|
325
378
|
source: { stepFields: f },
|
|
326
379
|
fn: ({ stepFields: e }, t) => (t.preventDefault(), l(e, new FormData(t.currentTarget))),
|
|
327
|
-
target:
|
|
380
|
+
target: O.executeFx
|
|
328
381
|
}), o({
|
|
329
|
-
clock:
|
|
330
|
-
target:
|
|
382
|
+
clock: O.executeFx.doneData,
|
|
383
|
+
target: k
|
|
331
384
|
}), s({
|
|
332
|
-
source:
|
|
385
|
+
source: k.doneData,
|
|
333
386
|
match: { hasErrors: ({ errors: e }) => e.length > 0 },
|
|
334
387
|
cases: {
|
|
335
|
-
hasErrors:
|
|
336
|
-
__:
|
|
388
|
+
hasErrors: j,
|
|
389
|
+
__: A
|
|
337
390
|
}
|
|
338
391
|
}), o({
|
|
339
|
-
clock:
|
|
392
|
+
clock: A.doneData,
|
|
340
393
|
target: h
|
|
341
394
|
}), o({
|
|
342
395
|
clock: h,
|
|
343
396
|
fn: (e) => ({
|
|
344
397
|
data: e,
|
|
345
|
-
stopNavigation:
|
|
398
|
+
stopNavigation: _
|
|
346
399
|
}),
|
|
347
|
-
target:
|
|
400
|
+
target: E.executeFx
|
|
348
401
|
}), o({
|
|
349
|
-
clock:
|
|
350
|
-
|
|
402
|
+
clock: [E.executeFx.doneData, D.executeFx.doneData],
|
|
403
|
+
filter: (e) => e.length > 0,
|
|
404
|
+
target: S
|
|
351
405
|
}), o({
|
|
352
|
-
clock:
|
|
353
|
-
|
|
406
|
+
clock: O.executeFx.failData,
|
|
407
|
+
fn: (e) => [y("before-submit", e)],
|
|
408
|
+
target: S
|
|
409
|
+
}), o({
|
|
410
|
+
clock: S,
|
|
411
|
+
source: {
|
|
412
|
+
step: d,
|
|
413
|
+
title: u
|
|
414
|
+
},
|
|
415
|
+
fn: ({ step: e, title: t }, n) => ({
|
|
416
|
+
step: e,
|
|
417
|
+
title: t,
|
|
418
|
+
failures: n
|
|
419
|
+
}),
|
|
420
|
+
target: M
|
|
421
|
+
}), o({
|
|
422
|
+
clock: E.executeFx.done,
|
|
423
|
+
target: v
|
|
424
|
+
}), o({
|
|
425
|
+
clock: v,
|
|
426
|
+
source: w,
|
|
354
427
|
filter: (e) => !e,
|
|
355
428
|
target: p
|
|
356
429
|
}), o({
|
|
357
|
-
clock:
|
|
430
|
+
clock: j.doneData,
|
|
358
431
|
target: g
|
|
359
432
|
}), o({
|
|
360
433
|
clock: g,
|
|
361
|
-
target:
|
|
434
|
+
target: D.executeFx
|
|
362
435
|
}), o({
|
|
363
436
|
clock: [
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
437
|
+
v,
|
|
438
|
+
D.executeFx.done,
|
|
439
|
+
O.executeFx.fail,
|
|
440
|
+
k.fail,
|
|
441
|
+
A.fail,
|
|
442
|
+
j.fail,
|
|
443
|
+
E.executeFx.fail,
|
|
444
|
+
D.executeFx.fail
|
|
372
445
|
],
|
|
373
446
|
fn: () => !1,
|
|
374
|
-
target:
|
|
447
|
+
target: C
|
|
375
448
|
}), {
|
|
376
449
|
submitEvent: m,
|
|
377
|
-
isFormSubmitting:
|
|
378
|
-
onBeforeSubmit:
|
|
379
|
-
onSuccess:
|
|
380
|
-
onError:
|
|
381
|
-
submitStarted:
|
|
450
|
+
isFormSubmitting: C,
|
|
451
|
+
onBeforeSubmit: O.register,
|
|
452
|
+
onSuccess: E.register,
|
|
453
|
+
onError: D.register,
|
|
454
|
+
submitStarted: T,
|
|
382
455
|
validationErrorsReceived: g
|
|
383
456
|
};
|
|
384
457
|
}
|
|
385
458
|
//#endregion
|
|
386
459
|
//#region src/form/create-form.ts
|
|
387
|
-
function
|
|
460
|
+
function C(e) {
|
|
388
461
|
let t = e.currentTarget;
|
|
389
462
|
if (t instanceof HTMLInputElement) return t.type === "checkbox" ? t.checked : t.value;
|
|
390
463
|
if (t instanceof HTMLSelectElement || t instanceof HTMLTextAreaElement) return t.value;
|
|
391
464
|
}
|
|
392
|
-
function
|
|
465
|
+
function w(e, t, n) {
|
|
393
466
|
let r = e.currentTarget;
|
|
394
467
|
if (t.multiple) {
|
|
395
|
-
if (r instanceof HTMLInputElement && r.type === "checkbox") return
|
|
468
|
+
if (r instanceof HTMLInputElement && r.type === "checkbox") return T(e, r, n);
|
|
396
469
|
if (r instanceof HTMLSelectElement && r.multiple) return Array.from(r.selectedOptions, (e) => e.value);
|
|
397
470
|
}
|
|
398
|
-
return
|
|
471
|
+
return C(e);
|
|
399
472
|
}
|
|
400
|
-
function
|
|
473
|
+
function T(e, t, n) {
|
|
401
474
|
if (e.type === "input") return;
|
|
402
475
|
let r = Array.isArray(n) ? n.map(String) : [];
|
|
403
|
-
return e.type === "change" ?
|
|
476
|
+
return e.type === "change" ? E(r, String(t.value)) : r;
|
|
404
477
|
}
|
|
405
|
-
function
|
|
478
|
+
function E(e, t) {
|
|
406
479
|
return e.includes(t) ? e.filter((e) => e !== t) : [...e, t];
|
|
407
480
|
}
|
|
408
|
-
function
|
|
481
|
+
function D(e, t, n) {
|
|
409
482
|
return (r) => {
|
|
410
|
-
let i =
|
|
483
|
+
let i = w(r, e, t);
|
|
411
484
|
i !== void 0 && n({
|
|
412
485
|
fieldKey: e.key,
|
|
413
486
|
value: i
|
|
414
487
|
});
|
|
415
488
|
};
|
|
416
489
|
}
|
|
417
|
-
function
|
|
490
|
+
function O(e, t, r, i) {
|
|
418
491
|
let { client: s, experienceInstance: c } = e, { currentStepStore: l, goToNextStep: u } = c, d = n(l, c, (e, t) => ({
|
|
419
492
|
stepId: e?.id,
|
|
420
493
|
experienceId: t.id
|
|
@@ -429,15 +502,15 @@ function w(e, t, r, i) {
|
|
|
429
502
|
},
|
|
430
503
|
target: f
|
|
431
504
|
});
|
|
432
|
-
let { fieldInputEvent: h, fieldChangeEvent: _, fieldBlurEvent:
|
|
505
|
+
let { fieldInputEvent: h, fieldChangeEvent: _, fieldBlurEvent: v, touchedStore: y, fieldErrorsStore: b, formErrorsStore: x } = g(s, p, f), C = n({
|
|
433
506
|
fields: p,
|
|
434
507
|
responses: s.responses.listStore,
|
|
435
508
|
staged: f,
|
|
436
|
-
fieldErrors:
|
|
437
|
-
touched:
|
|
509
|
+
fieldErrors: b,
|
|
510
|
+
touched: y,
|
|
438
511
|
experienceAndStepId: d
|
|
439
512
|
}, ({ fields: e, responses: t, staged: n, fieldErrors: r, touched: i, experienceAndStepId: a }) => e.map((e) => {
|
|
440
|
-
let o = n[e.key] ?? t.find((t) => t.fieldKey === e.key)?.value ?? e.defaultValue, s =
|
|
513
|
+
let o = n[e.key] ?? t.find((t) => t.fieldKey === e.key)?.value ?? e.defaultValue, s = D(e, o, h), c = D(e, o, _), l = D(e, o, v), u = r[e.key], d = e.type === "number" ? "number" : "text", f = e.type === "boolean" ? "checkbox" : d, { experienceId: p, stepId: m } = a, g = `${p}-${m ?? "step"}-${e.id}`;
|
|
441
514
|
return {
|
|
442
515
|
...e,
|
|
443
516
|
value: o,
|
|
@@ -456,7 +529,7 @@ function w(e, t, r, i) {
|
|
|
456
529
|
onblur: l
|
|
457
530
|
}
|
|
458
531
|
};
|
|
459
|
-
})), { submitEvent:
|
|
532
|
+
})), { submitEvent: w, isFormSubmitting: T, onBeforeSubmit: E, onSuccess: O, onError: k, submitStarted: A, validationErrorsReceived: j } = S({
|
|
460
533
|
client: s,
|
|
461
534
|
experienceInstance: c,
|
|
462
535
|
formId: t,
|
|
@@ -468,27 +541,27 @@ function w(e, t, r, i) {
|
|
|
468
541
|
return o({
|
|
469
542
|
clock: A,
|
|
470
543
|
fn: () => ({}),
|
|
471
|
-
target:
|
|
544
|
+
target: y
|
|
472
545
|
}), o({
|
|
473
546
|
clock: A,
|
|
474
547
|
fn: () => ({}),
|
|
475
|
-
target:
|
|
548
|
+
target: b
|
|
476
549
|
}), o({
|
|
477
550
|
clock: j,
|
|
478
551
|
source: p,
|
|
479
552
|
fn: (e, t) => Object.fromEntries(t.map((t) => [e.find((e) => e.key === t.fieldKey)?.key ?? t.fieldKey, t])),
|
|
480
|
-
target:
|
|
553
|
+
target: b
|
|
481
554
|
}), {
|
|
482
555
|
form: {
|
|
483
|
-
props: { onsubmit:
|
|
484
|
-
errors:
|
|
485
|
-
submitting:
|
|
486
|
-
onBeforeSubmit:
|
|
556
|
+
props: { onsubmit: w },
|
|
557
|
+
errors: x,
|
|
558
|
+
submitting: T,
|
|
559
|
+
onBeforeSubmit: E,
|
|
487
560
|
onSuccess: O,
|
|
488
561
|
onError: k
|
|
489
562
|
},
|
|
490
|
-
fields:
|
|
563
|
+
fields: C
|
|
491
564
|
};
|
|
492
565
|
}
|
|
493
566
|
//#endregion
|
|
494
|
-
export { l as buildResponsesFromFormData, m as createFieldEvaluator, g as createFieldValidation,
|
|
567
|
+
export { l as buildResponsesFromFormData, m as createFieldEvaluator, g as createFieldValidation, O as createForm, S as createSubmitPipeline, C as getEventValue, p as getStepFields };
|
package/dist/esm/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import { n as t, t as n } from "../rules-logic-HesIUCu6.js";
|
|
|
3
3
|
import { t as r } from "../logger-DMN6TxJJ.js";
|
|
4
4
|
import { a as i, c as a, d as o, f as s, i as c, l, m as u, n as d, o as f, r as p, s as m, t as h, u as g } from "../supports-CO9bJGNl.js";
|
|
5
5
|
import { a as _, i as v, r as ee, s as y, t as b } from "../dom-BwmTHeT7.js";
|
|
6
|
-
import { l as x, n as S, r as C, u as w } from "../experience-instance-
|
|
6
|
+
import { l as x, n as S, r as C, u as w } from "../experience-instance-DOJShRk5.js";
|
|
7
7
|
import { i as T, n as E, r as D, t as O } from "../storage-1MW3-_As.js";
|
|
8
|
-
import { n as te, r as ne } from "../api-
|
|
8
|
+
import { n as te, r as ne } from "../api-o8w9kJwm.js";
|
|
9
9
|
import { t as re } from "../id-Bo4RBeOs.js";
|
|
10
10
|
import { attach as k, combine as A, createApi as j, createDomain as M, createEffect as N, createEvent as P, createStore as F, sample as I } from "effector";
|
|
11
11
|
import { createFactory as L, invoke as R } from "@withease/factories";
|
|
@@ -900,6 +900,8 @@ var Le = (e, t, n) => {
|
|
|
900
900
|
id: e.id,
|
|
901
901
|
name: e.feature.name,
|
|
902
902
|
key: e.feature.key,
|
|
903
|
+
enabled: e.feature.enabled,
|
|
904
|
+
weight: e.feature.weight,
|
|
903
905
|
getBucket: () => ({
|
|
904
906
|
id: e.id,
|
|
905
907
|
bucket: n.bucket
|
|
@@ -909,6 +911,8 @@ var Le = (e, t, n) => {
|
|
|
909
911
|
id: e.id,
|
|
910
912
|
name: e.feature.name,
|
|
911
913
|
key: e.feature.key,
|
|
914
|
+
enabled: e.feature.enabled,
|
|
915
|
+
weight: e.feature.weight,
|
|
912
916
|
getBucket: async () => await l(e.feature),
|
|
913
917
|
isResolved: !1
|
|
914
918
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as e } from "../../../api-
|
|
2
|
-
import { n as t, r as n, t as r } from "../../../plugin-
|
|
1
|
+
import { i as e } from "../../../api-o8w9kJwm.js";
|
|
2
|
+
import { n as t, r as n, t as r } from "../../../plugin-C46DEiGE.js";
|
|
3
3
|
export { e as createClientHeaders, r as dynamicExperiencesPlugin, t as fetchExperienceContent, n as fetchProject };
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, o as r, s as i, t as a, u as o } from "../../experience-instance-
|
|
2
|
-
import { i as s, n as c } from "../../plugin-
|
|
1
|
+
import { a as e, c as t, i as n, o as r, s as i, t as a, u as o } from "../../experience-instance-DOJShRk5.js";
|
|
2
|
+
import { i as s, n as c } from "../../plugin-C46DEiGE.js";
|
|
3
3
|
import { attach as l, createEffect as u, createEvent as d, createStore as f, sample as p } from "effector";
|
|
4
4
|
//#region src/server/serialize.ts
|
|
5
5
|
var m = 1e4;
|
|
@@ -188,7 +188,11 @@ function R(e, t, n, r) {
|
|
|
188
188
|
var z = s("experience-instance"), B = f(({ client: r, experience: s, target: f, options: p }) => {
|
|
189
189
|
let y = l(), b = l(), x = l(), S = l(), C = l(), w = l(), T = l(), E = s.componentStore, D = z.store("transitioning"), O = r.history.entriesStore.map((e) => e.filter((e) => e.experienceId === s.id)), k = O.map((e) => e.filter((e) => h(e.node))), A = O.map((e) => e.at(-1)?.node || null), j = z.store(null);
|
|
190
190
|
u({
|
|
191
|
-
clock: [
|
|
191
|
+
clock: [
|
|
192
|
+
A,
|
|
193
|
+
r.steps.listStore,
|
|
194
|
+
w
|
|
195
|
+
],
|
|
192
196
|
source: {
|
|
193
197
|
steps: r.steps.listStore,
|
|
194
198
|
node: A
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rules-logic-CGZIYgAI.cjs");require("./logger-CSTvAyyB.cjs");const t=require("./dom-CDrHc_j9.cjs");let n=require("effector"),r=require("@withease/factories");function i(e){return e.type===`condition`}function a(e){return e.type===`step`}function o(e){return e.type===`experience`}function s(e){return e.type===`origin`}function c(e){return e.type===`action`}var l=`conditions.`,u=(0,n.createDomain)(`condition-results`);function d(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function f(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(e=>f(e));if(d(e)){let t=Object.keys(e).sort((e,t)=>e.localeCompare(t)),n={};for(let r of t)n[r]=f(e[r]);return n}return e}function p(e){return JSON.stringify(f(e))}var m=(0,r.createFactory)(()=>{let e=u.store({}),t=(0,n.createApi)(e,{set(e,t){return e[t.hash]===t.result?e:{...e,[t.hash]:t.result}},seed(e,t){return Object.keys(t).every(n=>e[n]===t[n])?e:{...e,...t}},clear(){return{}}});function r(e){t.set(e)}function i(e){t.seed(e)}function a(){t.clear()}function o(t){return e.getState()[t]}return{store:e,set:r,seed:i,peek:o,reset:a}});function h(){return(0,r.invoke)(m)}async function g(t,n,r){return n==null?!0:typeof n==`boolean`?n:e.n(n)?await e.t(t,n,r)===!0:!0}function _(e){if(typeof e==`string`)return e;if(Array.isArray(e)&&typeof e[0]==`string`)return e[0]}function v(e){if(Array.isArray(e))return e.some(v);if(d(e)){let t=_(e.var);return t!==void 0&&(t===`actions`||t.startsWith(`actions.`))?!0:Object.values(e).some(v)}return!1}function y(e){if(Array.isArray(e))return e.flatMap(y);if(d(e)){let t=_(e.var);return[...t!==void 0&&t.startsWith(l)?[t.slice(11)]:[],...Object.values(e).flatMap(y)]}return[]}function b(e,t,n=new Set){if(v(e))return!0;for(let r of y(e)){if(n.has(r))continue;n.add(r);let e=t[r];if(e!==void 0&&b(e.logic,t,n))return!0}return!1}async function x(e,t,n){let r={};for(let t of e.conditions.listStore.getState())r[t.key]=t;let i=b(t,r),a=p(t);if(!i){let t=e.conditionResults.peek(a);if(t!==void 0)return t}let o=await g(e,t,n?.context);return i||e.conditionResults.set({hash:a,result:o}),o}async function S(e,t,n){let r=n?.context,i=[n?.precondition,n?.condition,t.condition];for(let t of i)if(!await x(e,t,{context:r}))return!1;return!0}var C=(e,t,n,r,i=new Set)=>i.has(n.id)?[]:(i.add(n.id),a(n)&&!r?[n]:t.filter(e=>e.sourceNodeId===n.id).flatMap(n=>{let r=e.find(e=>e.id===n.destinationNodeId);return r?C(e,t,r,!1,i):[]})),w=(e,t,n)=>C(e,t,n,!0,new Set),T=(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]=T(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]},E=(e,t,n)=>T(e,t,n,!0,new Set),D=(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]=D(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]},ee=(e,t,n)=>D(e,t,n,new Set),O=e=>e.find(e=>e.type===`origin`)||null,k=(e,t,n)=>{if(!e)return O(t);let r=n.find(t=>t.sourceNodeId===e.id);return r&&t.find(e=>e.id===r.destinationNodeId)||null};async function A(e,t,n,r){let i=e?`true`:`false`,a=r.find(e=>e.sourceHandle===i&&e.sourceNodeId===t);return n.find(e=>e.id===a?.destinationNodeId)}function j(e,t,n,r){let i=r.filter(e=>e.sourceNodeId===t),a=e?`true`:`false`,o=i.find(e=>e.sourceHandle===a)??i.find(e=>e.sourceHandle==null);return n.find(e=>e.id===o?.destinationNodeId)}var M=(0,n.createDomain)(`experience-instance`),N=(0,r.createFactory)(({client:r,experience:l,target:u,options:d})=>{let f=(0,n.createEvent)(),p=(0,n.createEvent)(),m=(0,n.createEvent)(),h=(0,n.createEvent)(),g=(0,n.createEvent)(),_=(0,n.createEvent)(),v=(0,n.createEvent)(),y=l.componentStore,b=M.store(`transitioning`),x=r.history.entriesStore.map(e=>e.filter(e=>e.experienceId===l.id)),S=x.map(e=>e.filter(e=>a(e.node))),C=x.map(e=>e.at(-1)?.node||null),T=M.store(null);(0,n.sample)({clock:[C,r.steps.listStore,_],source:{steps:r.steps.listStore,node:C},filter:({node:e})=>e!==null&&a(e),fn:({steps:e,node:t})=>t&&a(t)?e.find(e=>e.id===t.stepId)??null:null,target:T});let D=(0,n.combine)(r.steps.listStore,S,(e,t)=>{let n=t.at(-2);if(!n||!a(n.node))return null;let r=n.node;return e.find(e=>e.id===r.stepId)||null}),N=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?w(e,t,n):[]),P=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?ee(e,t,n):[-1,-1]),F=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?E(e,t,n):[-1,-1]),I=M.store(!1),L=(0,n.createApi)(I,{open:()=>!0,close:()=>!1,toggle:e=>!e,set:(e,t)=>t}),R=(0,n.createEffect)(async()=>{r.history.back({experienceId:l.id})}),z=(0,n.attach)({source:l.treeStore,effect:async(e,t)=>{let n=e.nodes.find(e=>a(e)&&e.stepId===t);n&&r.history.push({experienceId:l.id,node:n})}}),B=(0,n.attach)({source:l.treeStore,effect:async(e,t)=>{let n=e.steps.find(e=>e.key===t);if(!n)return;let i=e.nodes.find(e=>a(e)&&e.stepId===n.id);i&&r.history.push({experienceId:l.id,node:i})}}),V=(0,n.attach)({source:C,effect:e=>{}}),H=(0,n.attach)({source:l.treeStore,effect:async({nodes:e})=>O(e)}),U=(0,n.attach)({source:l.treeStore,effect:async({nodes:e,edges:t},n)=>{if(s(n))return k(n,e,t)}}),W=(0,n.attach)({source:l.treeStore,effect:async({nodes:t,edges:n,conditions:a},o)=>{if(!i(o))return;let s=a.find(e=>e.id===o.conditionId)?.logic;return s?A(!!await e.t(r,s),o.id,t,n):void 0}}),G=(0,n.attach)({source:{tree:l.treeStore,actions:r.actions.listStore,snapshot:r.stateSnapshotStore},effect:async({tree:e,actions:t,snapshot:n},r)=>{let{nodes:i,edges:a}=e;if(!c(r))return;let o=r.actionKey;if(!o){`${r.id}`;return}let s=t.find(e=>e.key===o)?.action;if(typeof s!=`function`)return`${o}`,j(!1,r.id,i,a)??null;let l=!0;try{`${o}`,await s({...n,args:[]},{experience:Z})}catch{`${o}`,l=!1}let u=j(l,r.id,i,a);if(!u){let e=a.some(e=>e.sourceNodeId===r.id)?`no edge for its outcome`:`no outgoing edge`;return`${r.id}${e}`,null}return`${o}${u.id}`,u}}),K=(0,n.createEffect)(e=>{o(e)&&r.experiences.launch({key:e.experienceKey})}),q=(0,n.attach)({source:[C,l.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),J=(0,n.attach)({source:[C,l.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),te=(0,n.createEffect)(e=>{r.history.push({experienceId:l.id,node:e})}),Y=(0,n.attach)({source:l.configStore,effect:async({initializeOpenLogic:t})=>d?.initialiseOpen===void 0?e.n(t)?!!await e.t(r,t):t??!1:d.initialiseOpen}),X=(0,n.combine)(y,r.frameworks.listStore,(e,t)=>{if(!e)return null;let n=t.find(t=>t.name===e.component.frameworkName);return n?{component:e,framework:n}:null},{skipVoid:!1}),Z,ne=(0,n.attach)({source:X,effect:e=>{if(!e)return;if(!u){`${l.id}`;return}let n=t.n(u);try{e.framework.render(n,e.component.component,r,Z)}catch{}}});Z=Object.freeze({id:Math.random().toString(36).substring(7),experienceKey:l.key,experienceId:l.id,experienceName:l.name,configStore:l.configStore,target:u,componentStore:y,componentAndFrameworkStore:X,stateStore:b,isOpenStore:I,open:L.open,close:L.close,toggleOpen:L.toggle,setOpen:L.set,treeStore:l.treeStore,currentNodeStore:C,currentStepStore:T,previousStepStore:D,nextReachableStepNodesStore:N,stepsToOriginStore:P,stepsToLeafStore:F,goToNextStep:p,goToPreviousStep:m,goToStepById:h,goToStepByKey:g,stepsHistoryStore:S,mountFx:ne});let Q=(0,n.createEvent)(),$=(0,n.createEvent)();return(0,n.sample)({clock:C,target:Q}),(0,n.sample)({clock:Q,filter:e=>e===null,target:H}),(0,n.sample)({clock:Q,filter:e=>e!==null,target:$}),(0,n.split)({source:$,match:e=>i(e)?`condition`:a(e)?`step`:o(e)?`launchExperience`:s(e)?`origin`:c(e)?`action`:`other`,cases:{origin:U,condition:W,step:V,launchExperience:K,action:G,__:(0,n.createEvent)()}}),(0,n.sample)({clock:[W.doneData,U.doneData,H.doneData,J.doneData,q.doneData,G.doneData],filter:Boolean,target:te}),(0,n.sample)({clock:p,target:J}),(0,n.sample)({clock:p,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit`,step:e,experience:Z}))}),(0,n.sample)({clock:J.done,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit_success`,step:e,experience:Z}))}),(0,n.sample)({clock:J.fail,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit_error`,step:e,experience:Z}))}),(0,n.sample)({clock:m,target:R}),(0,n.sample)({clock:h,target:z}),(0,n.sample)({clock:g,target:B}),(0,n.sample)({source:(0,n.combine)([W.pending,U.pending,H.pending,J.pending,q.pending,G.pending]),fn:e=>e.some(Boolean)?`transitioning`:`ready`,target:b}),(0,n.sample)({clock:V.doneData,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_enter`,step:e,experience:Z}))}),(0,n.sample)({clock:v,target:Y}),(0,n.sample)({source:Y.doneData,fn:Boolean,target:I}),(0,n.sample)({source:C,clock:f,filter:e=>e?s(e):!0,target:q}),(0,n.sample)({source:I,filter:Boolean,target:f}),(0,n.sample)({source:I,filter:Boolean,target:r.eventBus.prepend(()=>({type:`experience_open`,experience:Z}))}),(0,n.sample)({source:I,filter:e=>!e,target:r.eventBus.prepend(()=>({type:`experience_close`,experience:Z}))}),(0,n.sample)({clock:_,target:[v]}),_(),Z});function P(e){return(0,r.invoke)(N,e)}var F=(0,r.createFactory)(({client:e})=>{let r=M.store({}),i=(0,n.createEvent)(),a=(0,n.createEvent)(),o=(0,n.createEvent)(),s=(0,n.createApi)(r,{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??[]}}}),c=(0,n.createEffect)(({experience:t,target:n,options:r})=>P({client:e,experience:t,target:n,options:r})),l=(0,n.createEffect)(e=>{s.register(e)}),u=(0,n.createEffect)(e=>{e.target&&t.o(e.target,()=>{o(e)})}),d=(0,n.createEffect)(e=>{s.unregister(e)}),f=(0,n.createEffect)(async e=>{await e.mountFx()});(0,n.sample)({clock:i,target:c}),(0,n.sample)({clock:o,target:d}),(0,n.sample)({clock:c.doneData,target:[l,u,a]}),(0,n.sample)({clock:c.doneData,target:e.eventBus.prepend(e=>({type:`experience_initialize`,experience:e}))}),(0,n.sample)({clock:a,target:f});function p(e,t,n){i({experience:e,target:t,options:n})}let m=r.map(e=>Object.values(e).flat());function h(e){return m.map(t=>t.filter(t=>t.experienceKey===e),{skipVoid:!1})}function g(e){return r.map(t=>t[e]||[],{skipVoid:!1})}return{spawn:p,getByExperienceKey:h,getByExperienceId:g,listStore:m}});function I(e){return(0,r.invoke)(F,e)}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return a}});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./logger-DMN6TxJJ.js";
|
|
2
|
-
import { t as e } from "./api-
|
|
2
|
+
import { t as e } from "./api-o8w9kJwm.js";
|
|
3
3
|
import { attach as t } from "effector";
|
|
4
4
|
//#region src/plugins/dynamic-experiences/hash.ts
|
|
5
5
|
function n(e) {
|
|
@@ -91,6 +91,8 @@ function h(e, t, n, r) {
|
|
|
91
91
|
e.registerFeature(t.id, {
|
|
92
92
|
key: `v${t.version}`,
|
|
93
93
|
name: t.name,
|
|
94
|
+
enabled: t.enabled,
|
|
95
|
+
weight: t.weight,
|
|
94
96
|
storage: n ? "session" : "local",
|
|
95
97
|
decide: () => t.enabled ? i(r, t.weight) : !1
|
|
96
98
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./api-BzcdC_7V.cjs");let t=require("effector");function n(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function r(e){return n(e)%100}function i(e,t){return t<=0?!1:t>=100?!0:e<t}function a(e){return typeof e==`object`&&!!e&&`features`in e&&Array.isArray(e.features)}function o(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function s(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function c(e,t){if(Array.isArray(t.fields))for(let n of t.fields)e.registerField(n)}function l(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function u(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)s(e,n)}function d(e,t,n){m(e,t,n.isPreview,n.sessionId),o(e,t),c(e,t),l(e,t),u(e,t)}function f(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function p(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function m(e,t,n,i){let a=p(e),o=r(i);for(let r of t.features)a.has(r.id)||h(e,r,n,o)}function h(e,t,n,r){e.registerFeature(t.id,{key:`v${t.version}`,name:t.name,enabled:t.enabled,weight:t.weight,storage:n?`session`:`local`,decide:()=>t.enabled?i(r,t.weight):!1})}function g(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function _(e){if(typeof e!=`object`||!e||!(`cause`in e))return!1;let{cause:t}=e;return typeof t!=`object`||!t||!(`code`in t)?!1:t.code===`ECONNREFUSED`}async function v(t,n,r){let i=r?.previewToken?`projects/${n}?preview_token=${encodeURIComponent(r.previewToken)}`:`projects/${n}`,o;try{o=await e.t(t,i,r?.headers)}catch(e){return g(t)&&_(e),null}if(!o.ok)return`${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return null}return a(s)?s:null}function y(e){return typeof e!=`object`||!e||!(`experienceId`in e)||!(`content`in e)?!1:Array.isArray(e.content)}async function b(t,n,r,i){let a=i?.previewToken?`projects/${n}/experiences/${r}/content?preview_token=${encodeURIComponent(i.previewToken)}`:`projects/${n}/experiences/${r}/content`,o;try{o=await e.t(t,a,i?.headers,i?.signal)}catch(e){return g(t)&&_(e)||`${r}`,null}if(!o.ok)return`${r}${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return`${r}`,null}return y(s)?s:(`${r}`,null)}function x(e,t){for(let n of t.content)e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function S(e){if(typeof e!=`object`||!e||!(`projectConfig`in e)||!(`experienceContent`in e)||!(`manifestMetadata`in e))return!1;let{experienceContent:t}=e;return typeof t==`function`}async function C(){try{let e=await import(`virtual:picked/data`);return S(e)?e:null}catch{return null}}function w(e,t,n){return r=>b(e,t,r.id,n?{previewToken:n}:void 0)}function T(e,t){return n=>e(n,t?{previewToken:t}:void 0)}function E(e){return(t,n)=>e.experienceContent(t,n)}function D(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&x(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function O(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}async function k(e){let{client:t,apiUrl:n,options:r}=e,i=f(t),a=!!i,o=r?.projectConfig??null,s=r?.getContent?T(r.getContent,i):null,c=null;if(i)return o??=await v(n,t.projectId,{previewToken:i}),s??=w(n,t.projectId,i),{config:o,contentLoader:s,dataSource:c,isPreview:a};if(o&&s)return{config:o,contentLoader:s,dataSource:c,isPreview:a};let l=await C();return l?(o??=l.projectConfig,s??=E(l),c=l.manifestMetadata,{config:o,contentLoader:s,dataSource:c,isPreview:a}):(o??=await v(n,t.projectId),s??=w(n,t.projectId),{config:o,contentLoader:s,dataSource:c,isPreview:a})}function A(e){return{name:`dynamic-experiences`,setup:n=>{let r=e?.apiUrl??n.apiUrl;return{onStart:(0,t.attach)({source:n.session.store.map(e=>e.id),effect:async t=>{let{config:i,contentLoader:a,dataSource:o,isPreview:s}=await k({client:n,apiUrl:r,options:e});a&&(n.contentLoader=D(n,O(a,i))),n.dataSource=o,i&&d(n,i,{isPreview:s,sessionId:t})}})}}}}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return A}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"experience-instance.d.ts","sourceRoot":"","sources":["../../../../src/entities/experience-instance/experience-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@ export interface Feature {
|
|
|
5
5
|
name: string;
|
|
6
6
|
decide: () => boolean | Promise<boolean> | string | Promise<string>;
|
|
7
7
|
storage?: 'local' | 'session';
|
|
8
|
+
/** Admin on/off flag from the Picked project config. Undefined for manually-registered features. */
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
/** Traffic-allocation percentage (0-100) from the Picked project config. Undefined for manually-registered features. */
|
|
11
|
+
weight?: number;
|
|
8
12
|
}
|
|
9
13
|
export type FeaturesStore = ReturnType<typeof createFeatureIndexFactory>;
|
|
10
14
|
export interface FeatureIndexItem {
|
|
@@ -23,6 +27,10 @@ export interface FeatureBaseBucket {
|
|
|
23
27
|
name: string;
|
|
24
28
|
key: string;
|
|
25
29
|
id: string;
|
|
30
|
+
/** Admin on/off flag from the Picked project config. Undefined for manually-registered features. */
|
|
31
|
+
enabled?: boolean;
|
|
32
|
+
/** Traffic-allocation percentage (0-100) from the Picked project config. Undefined for manually-registered features. */
|
|
33
|
+
weight?: number;
|
|
26
34
|
}
|
|
27
35
|
export interface UnresolvedFeatureBucket extends FeatureBaseBucket {
|
|
28
36
|
isResolved: false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/entities/feature/feature.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,OAAO,EAQL,KAAK,aAAa,EAElB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAI1C,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/entities/feature/feature.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,OAAO,EAQL,KAAK,aAAa,EAElB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAI1C,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wHAAwH;IACxH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAExE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;IACV,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wHAAwH;IACxH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,UAAU,EAAE,KAAK,CAAA;IACjB,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,UAAU,EAAE,IAAI,CAAA;IAChB,SAAS,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,qBAAqB,CAAA;AAI3E,QAAA,MAAM,yBAAyB,eAA8B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;;YAoBzC,MAAM;iBAAW,OAAO;;kBAwMvC,MAAM;sBAaF,MAAM;;sCAahB,MAAM,KAClB,KAAK,CAAC,MAAM,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CA6CrD,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAC1F,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAE9C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,SAAS,OAAO,EAAE,UAAU,aAAa,SAEnF,CAAA"}
|
|
@@ -13,6 +13,22 @@ export type SuccessCallback<TFieldIds extends string = string> = (options: {
|
|
|
13
13
|
}) => void | Promise<void>;
|
|
14
14
|
export type ErrorCallback = (errors: ValidationError[]) => void | Promise<void>;
|
|
15
15
|
export type SubmitCallback<TFieldIds extends string = string> = (data: Record<TFieldIds, FieldValue>) => Record<TFieldIds, FieldValue> | void | Promise<Record<TFieldIds, FieldValue> | void>;
|
|
16
|
+
/**
|
|
17
|
+
* Latest-wins submit callback slots accepted by the framework adapters.
|
|
18
|
+
*
|
|
19
|
+
* Declared here so `@picked/react` and `@picked/svelte` share one shape rather
|
|
20
|
+
* than each defining its own. Passing callbacks as options is the recommended
|
|
21
|
+
* style in both adapters: the callbacks arrive as arguments, so there is no
|
|
22
|
+
* registration lifecycle for a consumer to get wrong, and re-rendering with a new
|
|
23
|
+
* inline function simply replaces the previous one.
|
|
24
|
+
*
|
|
25
|
+
* @example createForm(id, title, keys, { onSuccess: ({ data }) => track(data) })
|
|
26
|
+
*/
|
|
27
|
+
export interface FormCallbackOptions<TFieldKeys extends string = string> {
|
|
28
|
+
onBeforeSubmit?: SubmitCallback<TFieldKeys>;
|
|
29
|
+
onSuccess?: SuccessCallback<TFieldKeys>;
|
|
30
|
+
onError?: ErrorCallback;
|
|
31
|
+
}
|
|
16
32
|
export interface SubmitPipelineConfig {
|
|
17
33
|
client: Picked;
|
|
18
34
|
experienceInstance: ExperienceInstance;
|
|
@@ -51,15 +67,15 @@ export interface SubmitPipeline {
|
|
|
51
67
|
* caller wires to the validation module to keep validation state in sync without
|
|
52
68
|
* the pipeline needing direct access to validation stores.
|
|
53
69
|
*
|
|
54
|
-
* @param config - The submit pipeline configuration.
|
|
55
|
-
* @param config.client - The Picked client instance.
|
|
56
|
-
* @param config.experienceInstance - The experience instance.
|
|
57
|
-
* @param config.formId - The form identifier.
|
|
58
|
-
* @param config.title - Store containing the form title.
|
|
59
|
-
* @param config.stepStore - Store containing the current step.
|
|
60
|
-
* @param config.fieldsStore - Store containing the form fields.
|
|
61
|
-
* @param config.goToNextStep - Event to trigger navigation to the next step.
|
|
62
|
-
* @returns The submit pipeline with events, stores, and callback registration.
|
|
70
|
+
* @param {SubmitPipelineConfig} config - The submit pipeline configuration.
|
|
71
|
+
* @param {Picked} config.client - The Picked client instance.
|
|
72
|
+
* @param {ExperienceInstance} config.experienceInstance - The experience instance.
|
|
73
|
+
* @param {string} config.formId - The form identifier.
|
|
74
|
+
* @param {Store<string>} config.title - Store containing the form title.
|
|
75
|
+
* @param {Store<ExperienceStep | null>} config.stepStore - Store containing the current step.
|
|
76
|
+
* @param {Store<Field[]>} config.fieldsStore - Store containing the form fields.
|
|
77
|
+
* @param {EventCallable<void>} config.goToNextStep - Event to trigger navigation to the next step.
|
|
78
|
+
* @returns {SubmitPipeline} The submit pipeline with events, stores, and callback registration.
|
|
63
79
|
* @example
|
|
64
80
|
* ```ts
|
|
65
81
|
* const pipeline = createSubmitPipeline(config)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-submit-pipeline.d.ts","sourceRoot":"","sources":["../../../src/form/create-submit-pipeline.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAOL,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"create-submit-pipeline.d.ts","sourceRoot":"","sources":["../../../src/form/create-submit-pipeline.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAOL,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAiBvC,MAAM,MAAM,4BAA4B,GAAG,WAAW,GAAG;IACvD,aAAa,EAAE,WAAW,GAAG,eAAe,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;IACzE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACnC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CACpC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1B,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/E,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CAC9D,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,KAChC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;AAEzF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM;IACrE,cAAc,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;IAC3C,SAAS,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AA0FD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpB,SAAS,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACvC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3B,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAA;IACxD,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAChC,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,MAAM,IAAI,CAAA;IACxD,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IACpD,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,MAAM,IAAI,CAAA;IAChD;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B;;;OAGG;IACH,wBAAwB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;CACnD;AAyED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,kBAAkB,EAClB,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,EACX,YAAY,GACb,EAAE,oBAAoB,GAAG,cAAc,CAoRvC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
/** @file Public surface of `@picked/client/form`. */
|
|
1
2
|
export { buildResponsesFromFormData } from './build-responses';
|
|
2
3
|
export { getStepFields } from './get-step-fields';
|
|
3
4
|
export { createFieldEvaluator } from './create-field-evaluator';
|
|
4
5
|
export { createFieldValidation } from './create-field-validation';
|
|
5
6
|
export type { FieldValidation } from './create-field-validation';
|
|
6
7
|
export { createSubmitPipeline } from './create-submit-pipeline';
|
|
7
|
-
export type { SubmitPipelineConfig, SubmitPipeline, SubmitEventWithCurrentTarget, SuccessCallback, ErrorCallback, SubmitCallback, } from './create-submit-pipeline';
|
|
8
|
+
export type { SubmitPipelineConfig, SubmitPipeline, SubmitEventWithCurrentTarget, SuccessCallback, ErrorCallback, SubmitCallback, FormCallbackOptions, } from './create-submit-pipeline';
|
|
8
9
|
export { createForm, getEventValue } from './create-form';
|
|
9
10
|
export type { CreateFormDeps, FormField, FormInstance } from './create-form';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,4BAA4B,EAC5B,eAAe,EACf,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,4BAA4B,EAC5B,eAAe,EACf,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/dynamic-experiences/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,cAAc,CAAA;AAI5D,OAAO,KAAK,EAEV,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAId,MAAM,SAAS,CAAA;AA4JhB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAMN;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/dynamic-experiences/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,cAAc,CAAA;AAI5D,OAAO,KAAK,EAEV,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EAId,MAAM,SAAS,CAAA;AA4JhB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAMN;AA8JD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmC/B;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAsC3C;AA4QD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAmC1F"}
|
|
@@ -71,6 +71,31 @@ export interface PayloadMap {
|
|
|
71
71
|
experience: ExperienceInstance;
|
|
72
72
|
step?: ExperienceStep;
|
|
73
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* Emitted when a consumer callback registered via `form.onBeforeSubmit`,
|
|
76
|
+
* `form.onSuccess` or `form.onError` throws or rejects — once per failed
|
|
77
|
+
* callback.
|
|
78
|
+
*
|
|
79
|
+
* A `success` or `error` phase failure never blocks navigation; a
|
|
80
|
+
* `before-submit` failure aborts the submit before commit, because that
|
|
81
|
+
* callback is on the data path and its return value is what gets committed.
|
|
82
|
+
*
|
|
83
|
+
* The thrown value is normalised to `name`/`message` deliberately: no stack,
|
|
84
|
+
* no cause, and no submitted field data, because the bus fans out to
|
|
85
|
+
* third-party sinks. The field is named `error` rather than `exception` so it
|
|
86
|
+
* stays distinct from the `{ reason: ValidationError[] }` shape that the
|
|
87
|
+
* analytics plugin narrows on.
|
|
88
|
+
*/
|
|
89
|
+
form_submit_callback_error: {
|
|
90
|
+
form: FormPayload;
|
|
91
|
+
phase: 'before-submit' | 'success' | 'error';
|
|
92
|
+
error: {
|
|
93
|
+
name: string;
|
|
94
|
+
message: string;
|
|
95
|
+
};
|
|
96
|
+
experience: ExperienceInstance;
|
|
97
|
+
step?: ExperienceStep;
|
|
98
|
+
};
|
|
74
99
|
field_validation_error: {
|
|
75
100
|
exception: {
|
|
76
101
|
reason: ValidationError[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAE1D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,UAAU,EAAE,KAAK,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/B,cAAc,EAAE;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAA;IAC5C,qBAAqB,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAA;IACzD,eAAe,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAA;IACnD,gBAAgB,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAA;IACpD,mBAAmB,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAA;IACvD,UAAU,EAAE;QACV,IAAI,EAAE,cAAc,CAAA;QACpB,UAAU,EAAE,kBAAkB,CAAA;KAC/B,CAAA;IACD,WAAW,EAAE;QACX,IAAI,EAAE,cAAc,CAAA;QACpB,UAAU,EAAE,kBAAkB,CAAA;KAC/B,CAAA;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,cAAc,CAAA;QACpB,UAAU,EAAE,kBAAkB,CAAA;KAC/B,CAAA;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,cAAc,CAAA;QACpB,UAAU,EAAE,kBAAkB,CAAA;KAC/B,CAAA;IACD,aAAa,EAAE;QACb,IAAI,EAAE,cAAc,CAAA;QACpB,UAAU,EAAE,kBAAkB,CAAA;KAC/B,CAAA;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW,CAAA;QACjB,UAAU,EAAE,kBAAkB,CAAA;QAC9B,IAAI,CAAC,EAAE,cAAc,CAAA;KACtB,CAAA;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,WAAW,CAAA;QACjB,UAAU,EAAE,kBAAkB,CAAA;QAC9B,IAAI,CAAC,EAAE,cAAc,CAAA;KACtB,CAAA;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,WAAW,CAAA;QACjB,SAAS,EAAE;YAAE,MAAM,EAAE,eAAe,EAAE,CAAA;SAAE,CAAA;QACxC,UAAU,EAAE,kBAAkB,CAAA;QAC9B,IAAI,CAAC,EAAE,cAAc,CAAA;KACtB,CAAA;IACD,sBAAsB,EAAE;QACtB,SAAS,EAAE;YAAE,MAAM,EAAE,eAAe,EAAE,CAAA;SAAE,CAAA;QACxC,UAAU,EAAE,kBAAkB,CAAA;QAC9B,IAAI,CAAC,EAAE,cAAc,CAAA;KACtB,CAAA;IACD,SAAS,EAAE;QACT,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;QACvB,IAAI,EAAE,OAAO,CAAA;KACd,CAAA;CACF;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,UAAU,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,eAAe,GAAG;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GACxF,MAAM,GACN,UAAU,CAAC,CAAC,CAAC,CAAC;CACnB,CAAC,eAAe,CAAC,CAAA;AAElB,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAA;AAgB1D,eAAO,MAAM,kBAAkB,GAC7B,UAAU,UAAU,CAAC,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC,KACxD,iBAgBF,CAAA"}
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./rules-logic-CGZIYgAI.cjs");require("./logger-CSTvAyyB.cjs");const t=require("./dom-CDrHc_j9.cjs");let n=require("effector"),r=require("@withease/factories");function i(e){return e.type===`condition`}function a(e){return e.type===`step`}function o(e){return e.type===`experience`}function s(e){return e.type===`origin`}function c(e){return e.type===`action`}var l=`conditions.`,u=(0,n.createDomain)(`condition-results`);function d(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function f(e){if(e===void 0)return null;if(Array.isArray(e))return e.map(e=>f(e));if(d(e)){let t=Object.keys(e).sort((e,t)=>e.localeCompare(t)),n={};for(let r of t)n[r]=f(e[r]);return n}return e}function p(e){return JSON.stringify(f(e))}var m=(0,r.createFactory)(()=>{let e=u.store({}),t=(0,n.createApi)(e,{set(e,t){return e[t.hash]===t.result?e:{...e,[t.hash]:t.result}},seed(e,t){return Object.keys(t).every(n=>e[n]===t[n])?e:{...e,...t}},clear(){return{}}});function r(e){t.set(e)}function i(e){t.seed(e)}function a(){t.clear()}function o(t){return e.getState()[t]}return{store:e,set:r,seed:i,peek:o,reset:a}});function h(){return(0,r.invoke)(m)}async function g(t,n,r){return n==null?!0:typeof n==`boolean`?n:e.n(n)?await e.t(t,n,r)===!0:!0}function _(e){if(typeof e==`string`)return e;if(Array.isArray(e)&&typeof e[0]==`string`)return e[0]}function v(e){if(Array.isArray(e))return e.some(v);if(d(e)){let t=_(e.var);return t!==void 0&&(t===`actions`||t.startsWith(`actions.`))?!0:Object.values(e).some(v)}return!1}function y(e){if(Array.isArray(e))return e.flatMap(y);if(d(e)){let t=_(e.var);return[...t!==void 0&&t.startsWith(l)?[t.slice(11)]:[],...Object.values(e).flatMap(y)]}return[]}function b(e,t,n=new Set){if(v(e))return!0;for(let r of y(e)){if(n.has(r))continue;n.add(r);let e=t[r];if(e!==void 0&&b(e.logic,t,n))return!0}return!1}async function x(e,t,n){let r={};for(let t of e.conditions.listStore.getState())r[t.key]=t;let i=b(t,r),a=p(t);if(!i){let t=e.conditionResults.peek(a);if(t!==void 0)return t}let o=await g(e,t,n?.context);return i||e.conditionResults.set({hash:a,result:o}),o}async function S(e,t,n){let r=n?.context,i=[n?.precondition,n?.condition,t.condition];for(let t of i)if(!await x(e,t,{context:r}))return!1;return!0}var C=(e,t,n,r,i=new Set)=>i.has(n.id)?[]:(i.add(n.id),a(n)&&!r?[n]:t.filter(e=>e.sourceNodeId===n.id).flatMap(n=>{let r=e.find(e=>e.id===n.destinationNodeId);return r?C(e,t,r,!1,i):[]})),w=(e,t,n)=>C(e,t,n,!0,new Set),T=(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]=T(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]},E=(e,t,n)=>T(e,t,n,!0,new Set),D=(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]=D(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]},ee=(e,t,n)=>D(e,t,n,new Set),O=e=>e.find(e=>e.type===`origin`)||null,k=(e,t,n)=>{if(!e)return O(t);let r=n.find(t=>t.sourceNodeId===e.id);return r&&t.find(e=>e.id===r.destinationNodeId)||null};async function A(e,t,n,r){let i=e?`true`:`false`,a=r.find(e=>e.sourceHandle===i&&e.sourceNodeId===t);return n.find(e=>e.id===a?.destinationNodeId)}function j(e,t,n,r){let i=r.filter(e=>e.sourceNodeId===t),a=e?`true`:`false`,o=i.find(e=>e.sourceHandle===a)??i.find(e=>e.sourceHandle==null);return n.find(e=>e.id===o?.destinationNodeId)}var M=(0,n.createDomain)(`experience-instance`),N=(0,r.createFactory)(({client:r,experience:l,target:u,options:d})=>{let f=(0,n.createEvent)(),p=(0,n.createEvent)(),m=(0,n.createEvent)(),h=(0,n.createEvent)(),g=(0,n.createEvent)(),_=(0,n.createEvent)(),v=(0,n.createEvent)(),y=l.componentStore,b=M.store(`transitioning`),x=r.history.entriesStore.map(e=>e.filter(e=>e.experienceId===l.id)),S=x.map(e=>e.filter(e=>a(e.node))),C=x.map(e=>e.at(-1)?.node||null),T=M.store(null);(0,n.sample)({clock:[C,r.steps.listStore],source:{steps:r.steps.listStore,node:C},filter:({node:e})=>e!==null&&a(e),fn:({steps:e,node:t})=>t&&a(t)?e.find(e=>e.id===t.stepId)??null:null,target:T});let D=(0,n.combine)(r.steps.listStore,S,(e,t)=>{let n=t.at(-2);if(!n||!a(n.node))return null;let r=n.node;return e.find(e=>e.id===r.stepId)||null}),N=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?w(e,t,n):[]),P=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?ee(e,t,n):[-1,-1]),F=(0,n.combine)(l.treeStore,C,({nodes:e,edges:t},n)=>n?E(e,t,n):[-1,-1]),I=M.store(!1),L=(0,n.createApi)(I,{open:()=>!0,close:()=>!1,toggle:e=>!e,set:(e,t)=>t}),R=(0,n.createEffect)(async()=>{r.history.back({experienceId:l.id})}),z=(0,n.attach)({source:l.treeStore,effect:async(e,t)=>{let n=e.nodes.find(e=>a(e)&&e.stepId===t);n&&r.history.push({experienceId:l.id,node:n})}}),B=(0,n.attach)({source:l.treeStore,effect:async(e,t)=>{let n=e.steps.find(e=>e.key===t);if(!n)return;let i=e.nodes.find(e=>a(e)&&e.stepId===n.id);i&&r.history.push({experienceId:l.id,node:i})}}),V=(0,n.attach)({source:C,effect:e=>{}}),H=(0,n.attach)({source:l.treeStore,effect:async({nodes:e})=>O(e)}),U=(0,n.attach)({source:l.treeStore,effect:async({nodes:e,edges:t},n)=>{if(s(n))return k(n,e,t)}}),W=(0,n.attach)({source:l.treeStore,effect:async({nodes:t,edges:n,conditions:a},o)=>{if(!i(o))return;let s=a.find(e=>e.id===o.conditionId)?.logic;return s?A(!!await e.t(r,s),o.id,t,n):void 0}}),G=(0,n.attach)({source:{tree:l.treeStore,actions:r.actions.listStore,snapshot:r.stateSnapshotStore},effect:async({tree:e,actions:t,snapshot:n},r)=>{let{nodes:i,edges:a}=e;if(!c(r))return;let o=r.actionKey;if(!o){`${r.id}`;return}let s=t.find(e=>e.key===o)?.action;if(typeof s!=`function`)return`${o}`,j(!1,r.id,i,a)??null;let l=!0;try{`${o}`,await s({...n,args:[]},{experience:Z})}catch{`${o}`,l=!1}let u=j(l,r.id,i,a);if(!u){let e=a.some(e=>e.sourceNodeId===r.id)?`no edge for its outcome`:`no outgoing edge`;return`${r.id}${e}`,null}return`${o}${u.id}`,u}}),K=(0,n.createEffect)(e=>{o(e)&&r.experiences.launch({key:e.experienceKey})}),q=(0,n.attach)({source:[C,l.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),J=(0,n.attach)({source:[C,l.treeStore],effect:async([e,{nodes:t,edges:n}])=>k(e,t,n)}),te=(0,n.createEffect)(e=>{r.history.push({experienceId:l.id,node:e})}),Y=(0,n.attach)({source:l.configStore,effect:async({initializeOpenLogic:t})=>d?.initialiseOpen===void 0?e.n(t)?!!await e.t(r,t):t??!1:d.initialiseOpen}),X=(0,n.combine)(y,r.frameworks.listStore,(e,t)=>{if(!e)return null;let n=t.find(t=>t.name===e.component.frameworkName);return n?{component:e,framework:n}:null},{skipVoid:!1}),Z,ne=(0,n.attach)({source:X,effect:e=>{if(!e)return;if(!u){`${l.id}`;return}let n=t.n(u);try{e.framework.render(n,e.component.component,r,Z)}catch{}}});Z=Object.freeze({id:Math.random().toString(36).substring(7),experienceKey:l.key,experienceId:l.id,experienceName:l.name,configStore:l.configStore,target:u,componentStore:y,componentAndFrameworkStore:X,stateStore:b,isOpenStore:I,open:L.open,close:L.close,toggleOpen:L.toggle,setOpen:L.set,treeStore:l.treeStore,currentNodeStore:C,currentStepStore:T,previousStepStore:D,nextReachableStepNodesStore:N,stepsToOriginStore:P,stepsToLeafStore:F,goToNextStep:p,goToPreviousStep:m,goToStepById:h,goToStepByKey:g,stepsHistoryStore:S,mountFx:ne});let Q=(0,n.createEvent)(),$=(0,n.createEvent)();return(0,n.sample)({clock:C,target:Q}),(0,n.sample)({clock:Q,filter:e=>e===null,target:H}),(0,n.sample)({clock:Q,filter:e=>e!==null,target:$}),(0,n.split)({source:$,match:e=>i(e)?`condition`:a(e)?`step`:o(e)?`launchExperience`:s(e)?`origin`:c(e)?`action`:`other`,cases:{origin:U,condition:W,step:V,launchExperience:K,action:G,__:(0,n.createEvent)()}}),(0,n.sample)({clock:[W.doneData,U.doneData,H.doneData,J.doneData,q.doneData,G.doneData],filter:Boolean,target:te}),(0,n.sample)({clock:p,target:J}),(0,n.sample)({clock:p,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit`,step:e,experience:Z}))}),(0,n.sample)({clock:J.done,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit_success`,step:e,experience:Z}))}),(0,n.sample)({clock:J.fail,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_submit_error`,step:e,experience:Z}))}),(0,n.sample)({clock:m,target:R}),(0,n.sample)({clock:h,target:z}),(0,n.sample)({clock:g,target:B}),(0,n.sample)({source:(0,n.combine)([W.pending,U.pending,H.pending,J.pending,q.pending,G.pending]),fn:e=>e.some(Boolean)?`transitioning`:`ready`,target:b}),(0,n.sample)({clock:V.doneData,source:T,filter:Boolean,target:r.eventBus.prepend(e=>({type:`step_enter`,step:e,experience:Z}))}),(0,n.sample)({clock:v,target:Y}),(0,n.sample)({source:Y.doneData,fn:Boolean,target:I}),(0,n.sample)({source:C,clock:f,filter:e=>e?s(e):!0,target:q}),(0,n.sample)({source:I,filter:Boolean,target:f}),(0,n.sample)({source:I,filter:Boolean,target:r.eventBus.prepend(()=>({type:`experience_open`,experience:Z}))}),(0,n.sample)({source:I,filter:e=>!e,target:r.eventBus.prepend(()=>({type:`experience_close`,experience:Z}))}),(0,n.sample)({clock:_,target:[v]}),_(),Z});function P(e){return(0,r.invoke)(N,e)}var F=(0,r.createFactory)(({client:e})=>{let r=M.store({}),i=(0,n.createEvent)(),a=(0,n.createEvent)(),o=(0,n.createEvent)(),s=(0,n.createApi)(r,{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??[]}}}),c=(0,n.createEffect)(({experience:t,target:n,options:r})=>P({client:e,experience:t,target:n,options:r})),l=(0,n.createEffect)(e=>{s.register(e)}),u=(0,n.createEffect)(e=>{e.target&&t.o(e.target,()=>{o(e)})}),d=(0,n.createEffect)(e=>{s.unregister(e)}),f=(0,n.createEffect)(async e=>{await e.mountFx()});(0,n.sample)({clock:i,target:c}),(0,n.sample)({clock:o,target:d}),(0,n.sample)({clock:c.doneData,target:[l,u,a]}),(0,n.sample)({clock:c.doneData,target:e.eventBus.prepend(e=>({type:`experience_initialize`,experience:e}))}),(0,n.sample)({clock:a,target:f});function p(e,t,n){i({experience:e,target:t,options:n})}let m=r.map(e=>Object.values(e).flat());function h(e){return m.map(t=>t.filter(t=>t.experienceKey===e),{skipVoid:!1})}function g(e){return r.map(t=>t[e]||[],{skipVoid:!1})}return{spawn:p,getByExperienceKey:h,getByExperienceId:g,listStore:m}});function I(e){return(0,r.invoke)(F,e)}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return a}});
|
package/dist/plugin-Dg2_LLSE.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./api-26zgmS8x.cjs");let t=require("effector");function n(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function r(e){return n(e)%100}function i(e,t){return t<=0?!1:t>=100?!0:e<t}function a(e){return typeof e==`object`&&!!e&&`features`in e&&Array.isArray(e.features)}function o(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function s(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function c(e,t){if(Array.isArray(t.fields))for(let n of t.fields)e.registerField(n)}function l(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function u(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)s(e,n)}function d(e,t,n){m(e,t,n.isPreview,n.sessionId),o(e,t),c(e,t),l(e,t),u(e,t)}function f(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function p(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function m(e,t,n,i){let a=p(e),o=r(i);for(let r of t.features)a.has(r.id)||h(e,r,n,o)}function h(e,t,n,r){e.registerFeature(t.id,{key:`v${t.version}`,name:t.name,storage:n?`session`:`local`,decide:()=>t.enabled?i(r,t.weight):!1})}function g(e){try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`}catch{return!1}}function _(e){if(typeof e!=`object`||!e||!(`cause`in e))return!1;let{cause:t}=e;return typeof t!=`object`||!t||!(`code`in t)?!1:t.code===`ECONNREFUSED`}async function v(t,n,r){let i=r?.previewToken?`projects/${n}?preview_token=${encodeURIComponent(r.previewToken)}`:`projects/${n}`,o;try{o=await e.t(t,i,r?.headers)}catch(e){return g(t)&&_(e),null}if(!o.ok)return`${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return null}return a(s)?s:null}function y(e){return typeof e!=`object`||!e||!(`experienceId`in e)||!(`content`in e)?!1:Array.isArray(e.content)}async function b(t,n,r,i){let a=i?.previewToken?`projects/${n}/experiences/${r}/content?preview_token=${encodeURIComponent(i.previewToken)}`:`projects/${n}/experiences/${r}/content`,o;try{o=await e.t(t,a,i?.headers,i?.signal)}catch(e){return g(t)&&_(e)||`${r}`,null}if(!o.ok)return`${r}${o.status.toString()}`,null;let s;try{s=await o.json()}catch{return`${r}`,null}return y(s)?s:(`${r}`,null)}function x(e,t){for(let n of t.content)e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function S(e){if(typeof e!=`object`||!e||!(`projectConfig`in e)||!(`experienceContent`in e)||!(`manifestMetadata`in e))return!1;let{experienceContent:t}=e;return typeof t==`function`}async function C(){try{let e=await import(`virtual:picked/data`);return S(e)?e:null}catch{return null}}function w(e,t,n){return r=>b(e,t,r.id,n?{previewToken:n}:void 0)}function T(e,t){return n=>e(n,t?{previewToken:t}:void 0)}function E(e){return(t,n)=>e.experienceContent(t,n)}function D(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&x(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function O(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}async function k(e){let{client:t,apiUrl:n,options:r}=e,i=f(t),a=!!i,o=r?.projectConfig??null,s=r?.getContent?T(r.getContent,i):null,c=null;if(i)return o??=await v(n,t.projectId,{previewToken:i}),s??=w(n,t.projectId,i),{config:o,contentLoader:s,dataSource:c,isPreview:a};if(o&&s)return{config:o,contentLoader:s,dataSource:c,isPreview:a};let l=await C();return l?(o??=l.projectConfig,s??=E(l),c=l.manifestMetadata,{config:o,contentLoader:s,dataSource:c,isPreview:a}):(o??=await v(n,t.projectId),s??=w(n,t.projectId),{config:o,contentLoader:s,dataSource:c,isPreview:a})}function A(e){return{name:`dynamic-experiences`,setup:n=>{let r=e?.apiUrl??n.apiUrl;return{onStart:(0,t.attach)({source:n.session.store.map(e=>e.id),effect:async t=>{let{config:i,contentLoader:a,dataSource:o,isPreview:s}=await k({client:n,apiUrl:r,options:e});a&&(n.contentLoader=D(n,O(a,i))),n.dataSource=o,i&&d(n,i,{isPreview:s,sessionId:t})}})}}}}Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return A}});
|