@picked/svelte 0.0.1-dev.1769998196048 → 0.0.1-dev.1769998938557

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/form/form.js CHANGED
@@ -1,4 +1,4 @@
1
- import*as V from"svelte/internal/client";import{getStepFields as W}from"@picked/client";import{createStore as E,combine as X,attach as _,createEffect as v,sample as c,createEvent as y,split as Y}from"effector";import{getContext as $}from"svelte";import{getPicked as j,getExperience as z}from"../hooks/client.js";import{STEP_CONTEXT_KEY as G}from"../context.js";import"svelte/store";import"@picked/analytics";import{warnDeprecation as H}from"../utils/deprecation.js";function D(i){let l=[];return{executeFx:v(async(...o)=>await i(l,...o)),register:o=>{V.user_effect(()=>(l.push(o),()=>{l=l.filter(a=>a!==o)}))}}}const N=new Map;function se(){N.clear()}function J(i,l,S,F=!1){const o=j();let a=null,p,f=null;try{a=z(),p=a.currentStepStore,f=a.goToNextStep}catch{p=E(null)}const d=E([]),B=X({fields:d,responses:o.responses.listStore},({fields:e,responses:t})=>e.map(s=>{const x=t.find(m=>m.fieldId===s.id)?.value;return{...s,value:x}})),b=_({source:o.fields.listStore,effect:v(async e=>{const t=e.filter(s=>S.includes(s.id));return await W(o,t)})});c({clock:b.doneData,target:d}),b(),c({clock:o.responses.listStore,target:b});const h=y(),C=y(),O=y(),T=y(),k=y(),w=E(!1),q=E(!1);q.on(T,()=>!0).on(h,()=>!1);const I=D(async(e,t)=>{await Promise.all(e.map(s=>Promise.resolve(s(t))))}),A=D(async(e,t)=>{await Promise.all(e.map(s=>Promise.resolve(s(t))))}),P=D(async(e,t)=>{let s=t;for(const x of e){const m=await Promise.resolve(x(s));m!==void 0&&(s=m)}return s}),M=v(async e=>{const t=await o.responses.commit(e);return{data:e,errors:t.errors}}),K=_({source:{step:p},mapParams:(e,t)=>({step:t.step,data:e.data}),effect:v(async({step:e,data:t})=>(a&&o.eventBus({type:"form_submit_success",form:{id:i,title:l},experience:a,step:e??void 0}),t))}),L=_({source:{step:p},mapParams:(e,t)=>({step:t.step,errors:e.errors}),effect:v(async({step:e,errors:t})=>(a&&(o.eventBus({type:"form_submit_error",form:{id:i,title:l},exception:{reason:t},experience:a,step:e??void 0}),t.forEach(s=>{o.eventBus({type:"field_validation_error",exception:{reason:[s]},experience:a,step:e??void 0})})),t))});return c({clock:h,fn:()=>!0,target:w}),c({clock:h,source:{step:p},fn:({step:e})=>({formId:i,title:l,step:e}),target:v(({formId:e,title:t,step:s})=>{a&&o.eventBus({type:"form_submit",form:{id:e,title:t},experience:a,step:s??void 0})})}),c({clock:h,source:{stepFields:d},fn:({stepFields:e},t)=>{t.preventDefault();const s=new FormData(t.currentTarget),x=Array.from(s.entries()),m={data:{},push(n){const u=n.questionId,r=this.data[u];r?Array.isArray(r)&&Array.isArray(n.value)?Array.isArray(r)&&Array.isArray(n.value)&&(typeof r[0]=="string"?this.data[u]=[...r,...n.value].map(String):typeof r[0]=="number"?this.data[u]=[...r,...n.value].map(Number):typeof r[0]=="boolean"?this.data[u]=[...r,...n.value].map(g=>!!g):this.data[u]=n.value):this.data[u]=n.value:this.data[u]=n.value}};return e.forEach(n=>{let u=x.filter(([r])=>r===n.id);u.length===0&&(u=[[n.id,""]]),u.forEach(([,r])=>{const g=n.id;if(r===""){m.push({questionId:g,value:null});return}switch(n.type){case"text":m.push({questionId:g,value:n.multiple?[String(r)]:String(r)});break;case"number":m.push({questionId:g,value:n.multiple?[Number(r)]:Number(r)});break;case"boolean":m.push({questionId:g,value:n.multiple?[r==="true"]:r==="true"});break}})}),m.data},target:P.executeFx}),c({clock:P.executeFx.doneData,target:M}),Y({source:M.doneData,match:{hasErrors:({errors:e})=>e.length>0},cases:{hasErrors:L,__:K}}),c({clock:K.doneData,target:C}),c({clock:C,fn:e=>({data:e,stopNavigation:T}),target:I.executeFx}),c({clock:I.executeFx.done,target:k}),!F&&f&&c({clock:k,source:q,filter:e=>!e,target:f}),c({clock:L.doneData,target:O}),c({clock:O,target:A.executeFx}),c({clock:[k,A.executeFx.done],fn:()=>!1,target:w}),{form:{onsubmit:h},fields:B,onFormSubmit:P.register,onFormSuccess:I.register,onFormError:A.register,isFormSubmitting:w}}function ne(i){const{id:l,title:S}=i,F=!("fieldIds"in i)||i.fieldIds===void 0;let o,a,p;if(F){a=i.onSuccess,p=i.onError;try{const d=$(G);if(!d)throw new Error("Step context not found");o=d.step.getState().fieldIds}catch{throw new Error("getForm() called without fieldIds parameter requires being inside a <Step> component. Either wrap this component in <Step>, or use the new API: getForm({ id, title, fieldIds: [...] })")}H("getForm({ onSuccess, onError })",`This API pattern is deprecated. Please migrate to the new observable pattern:
1
+ import*as L from"svelte/internal/client";import{getStepFields as V}from"@picked/client";import{createStore as b,combine as W,attach as _,createEffect as F,sample as c,createEvent as y,split as X}from"effector";import{getContext as Y}from"svelte";import{getPicked as $,getExperience as j}from"../hooks/client.js";import{STEP_CONTEXT_KEY as z}from"../context.js";import"svelte/store";import"@picked/analytics";import{warnDeprecation as G}from"../utils/deprecation.js";function D(i){let l=[];return{executeFx:F(async(...r)=>await i(l,...r)),register:r=>{L.user_effect(()=>(l.push(r),()=>{l=l.filter(u=>u!==r)}))}}}const N=new Map;function oe(){N.clear()}function H(i,l,S){const a=$();let r=null,u,d=null;try{r=j(),u=r.currentStepStore,d=r.goToNextStep}catch{u=b(null)}const m=b([]),g=W({fields:m,responses:a.responses.listStore},({fields:e,responses:t})=>e.map(s=>{const x=t.find(p=>p.fieldId===s.id)?.value;return{...s,value:x}})),E=_({source:a.fields.listStore,effect:F(async e=>{const t=e.filter(s=>S.includes(s.id));return await V(a,t)})});c({clock:E.doneData,target:m}),E(),c({clock:a.responses.listStore,target:E});const h=y(),B=y(),C=y(),O=y(),k=y(),w=b(!1),T=b(!1);T.on(O,()=>!0).on(h,()=>!1);const I=D(async(e,t)=>{await Promise.all(e.map(s=>Promise.resolve(s(t))))}),A=D(async(e,t)=>{await Promise.all(e.map(s=>Promise.resolve(s(t))))}),P=D(async(e,t)=>{let s=t;for(const x of e){const p=await Promise.resolve(x(s));p!==void 0&&(s=p)}return s}),q=F(async e=>{const t=await a.responses.commit(e);return{data:e,errors:t.errors}}),M=_({source:{step:u},mapParams:(e,t)=>({step:t.step,data:e.data}),effect:F(async({step:e,data:t})=>(r&&a.eventBus({type:"form_submit_success",form:{id:i,title:l},experience:r,step:e??void 0}),t))}),K=_({source:{step:u},mapParams:(e,t)=>({step:t.step,errors:e.errors}),effect:F(async({step:e,errors:t})=>(r&&(a.eventBus({type:"form_submit_error",form:{id:i,title:l},exception:{reason:t},experience:r,step:e??void 0}),t.forEach(s=>{a.eventBus({type:"field_validation_error",exception:{reason:[s]},experience:r,step:e??void 0})})),t))});return c({clock:h,fn:()=>!0,target:w}),c({clock:h,source:{step:u},fn:({step:e})=>({formId:i,title:l,step:e}),target:F(({formId:e,title:t,step:s})=>{r&&a.eventBus({type:"form_submit",form:{id:e,title:t},experience:r,step:s??void 0})})}),c({clock:h,source:{stepFields:m},fn:({stepFields:e},t)=>{t.preventDefault();const s=new FormData(t.currentTarget),x=Array.from(s.entries()),p={data:{},push(n){const f=n.questionId,o=this.data[f];o?Array.isArray(o)&&Array.isArray(n.value)?Array.isArray(o)&&Array.isArray(n.value)&&(typeof o[0]=="string"?this.data[f]=[...o,...n.value].map(String):typeof o[0]=="number"?this.data[f]=[...o,...n.value].map(Number):typeof o[0]=="boolean"?this.data[f]=[...o,...n.value].map(v=>!!v):this.data[f]=n.value):this.data[f]=n.value:this.data[f]=n.value}};return e.forEach(n=>{let f=x.filter(([o])=>o===n.id);f.length===0&&(f=[[n.id,""]]),f.forEach(([,o])=>{const v=n.id;if(o===""){p.push({questionId:v,value:null});return}switch(n.type){case"text":p.push({questionId:v,value:n.multiple?[String(o)]:String(o)});break;case"number":p.push({questionId:v,value:n.multiple?[Number(o)]:Number(o)});break;case"boolean":p.push({questionId:v,value:n.multiple?[o==="true"]:o==="true"});break}})}),p.data},target:P.executeFx}),c({clock:P.executeFx.doneData,target:q}),X({source:q.doneData,match:{hasErrors:({errors:e})=>e.length>0},cases:{hasErrors:K,__:M}}),c({clock:M.doneData,target:B}),c({clock:B,fn:e=>({data:e,stopNavigation:O}),target:I.executeFx}),c({clock:I.executeFx.done,target:k}),d&&c({clock:k,source:T,filter:e=>!e,target:d}),c({clock:K.doneData,target:C}),c({clock:C,target:A.executeFx}),c({clock:[k,A.executeFx.done],fn:()=>!1,target:w}),{form:{onsubmit:h},fields:g,onFormSubmit:P.register,onFormSuccess:I.register,onFormError:A.register,isFormSubmitting:w}}function se(i){const{id:l,title:S}=i,a=!("fieldIds"in i)||i.fieldIds===void 0;let r,u,d;if(a){u=i.onSuccess,d=i.onError;try{const g=Y(z);if(!g)throw new Error("Step context not found");r=g.step.getState().fieldIds}catch{throw new Error("getForm() called without fieldIds parameter requires being inside a <Step> component. Either wrap this component in <Step>, or use the new API: getForm({ id, title, fieldIds: [...] })")}G("getForm({ onSuccess, onError })",`This API pattern is deprecated. Please migrate to the new observable pattern:
2
2
 
3
3
  Before (deprecated):
4
4
  const { form } = getForm({
@@ -18,4 +18,4 @@ After (recommended):
18
18
  onFormSuccess(({ data, stopNavigation }) => {...})
19
19
  onFormError((errors) => {...})
20
20
 
21
- Benefits: Access to form data, type safety, multiple callbacks, navigation control`)}else o=i.fieldIds;let f=N.get(l);return f||(f=J(l,S,o),N.set(l,f)),F&&(a&&f.onFormSuccess(()=>a()),p&&f.onFormError(d=>p(d))),f}export{se as clearFormCache,ne as getForm};
21
+ Benefits: Access to form data, type safety, multiple callbacks, navigation control`)}else r=i.fieldIds;let m=N.get(l);return m||(m=H(l,S,r),N.set(l,m)),a&&(u&&m.onFormSuccess(()=>u()),d&&m.onFormError(g=>d(g))),m}export{oe as clearFormCache,se as getForm};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/svelte",
3
- "version": "0.0.1-dev.1769998196048",
3
+ "version": "0.0.1-dev.1769998938557",
4
4
  "dependencies": {
5
5
  "d3": "^7.9.0"
6
6
  },
@@ -75,7 +75,7 @@
75
75
  ],
76
76
  "module": "./dist/index.js",
77
77
  "peerDependencies": {
78
- "@picked/client": "0.0.1-dev.1769998196048",
78
+ "@picked/client": "0.0.1-dev.1769998938557",
79
79
  "effector": "^23.3.0",
80
80
  "svelte": "^5.34.3"
81
81
  },