@remoteoss/remote-flows 0.4.0-alpha.11 → 0.4.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +1 -0
  2. package/dist/chunk-7N7ND6Z4.js +2 -0
  3. package/dist/chunk-7N7ND6Z4.js.map +1 -0
  4. package/dist/chunk-AN7L3GVL.js +2 -0
  5. package/dist/{chunk-RWYOUDM5.js.map → chunk-AN7L3GVL.js.map} +1 -1
  6. package/dist/chunk-AOJAZ4FT.js +2 -0
  7. package/dist/chunk-AOJAZ4FT.js.map +1 -0
  8. package/dist/chunk-ASFAGLQI.js +2 -0
  9. package/dist/chunk-ASFAGLQI.js.map +1 -0
  10. package/dist/chunk-BYFO5OB6.js +2 -0
  11. package/dist/chunk-BYFO5OB6.js.map +1 -0
  12. package/dist/chunk-D53FKWGJ.js +2 -0
  13. package/dist/chunk-D53FKWGJ.js.map +1 -0
  14. package/dist/{chunk-RIWPSA6V.js → chunk-IEZAM2XO.js} +2 -2
  15. package/dist/{chunk-RC2UQDK7.js → chunk-NIOH7TNP.js} +2 -2
  16. package/dist/{chunk-INW2EQZR.js → chunk-OS3QI7CV.js} +2 -2
  17. package/dist/{chunk-3QTURBOX.js → chunk-QUM7V5EP.js} +2 -2
  18. package/dist/{chunk-IG3FJLDR.js → chunk-RDAO365M.js} +2 -2
  19. package/dist/chunk-WRKHWEZA.js +2 -0
  20. package/dist/chunk-WRKHWEZA.js.map +1 -0
  21. package/dist/chunk-X6DRD2I4.js +2 -0
  22. package/dist/chunk-X6DRD2I4.js.map +1 -0
  23. package/dist/chunk-XQXFQ7LM.js +2 -0
  24. package/dist/{chunk-L6LGRALQ.js.map → chunk-XQXFQ7LM.js.map} +1 -1
  25. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +1 -1
  26. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  27. package/dist/flows/ContractAmendment/context.d.ts +1 -1
  28. package/dist/flows/ContractAmendment/hooks.d.ts +1 -1
  29. package/dist/flows/ContractAmendment/hooks.js +1 -1
  30. package/dist/flows/ContractAmendment/index.d.ts +1 -1
  31. package/dist/flows/ContractAmendment/index.js +1 -1
  32. package/dist/flows/Onboarding/AnnualGrossSalary.js +1 -1
  33. package/dist/flows/Onboarding/BasicInformationStep.d.ts +6 -1
  34. package/dist/flows/Onboarding/BasicInformationStep.js +1 -1
  35. package/dist/flows/Onboarding/BenefitsStep.d.ts +6 -1
  36. package/dist/flows/Onboarding/BenefitsStep.js +1 -1
  37. package/dist/flows/Onboarding/ContractDetailsStep.d.ts +6 -1
  38. package/dist/flows/Onboarding/ContractDetailsStep.js +1 -1
  39. package/dist/flows/Onboarding/OnboardingFlow.d.ts +2 -2
  40. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  41. package/dist/flows/Onboarding/OnboardingInvite.d.ts +7 -2
  42. package/dist/flows/Onboarding/OnboardingInvite.js +1 -1
  43. package/dist/flows/Onboarding/SelectCountryStep.d.ts +6 -1
  44. package/dist/flows/Onboarding/SelectCountryStep.js +1 -1
  45. package/dist/flows/Onboarding/api.d.ts +5 -1
  46. package/dist/flows/Onboarding/api.js +1 -1
  47. package/dist/flows/Onboarding/context.d.ts +2 -3
  48. package/dist/flows/Onboarding/hooks.d.ts +3 -4
  49. package/dist/flows/Onboarding/hooks.js +1 -1
  50. package/dist/flows/Onboarding/index.d.ts +1 -1
  51. package/dist/flows/Onboarding/index.js +1 -1
  52. package/dist/flows/Onboarding/types.d.ts +19 -0
  53. package/dist/flows/Termination/TerminationFlow.d.ts +1 -1
  54. package/dist/flows/Termination/TerminationFlow.js +1 -1
  55. package/dist/flows/Termination/context.d.ts +1 -1
  56. package/dist/flows/Termination/hooks.d.ts +1 -1
  57. package/dist/flows/Termination/hooks.js +1 -1
  58. package/dist/flows/Termination/index.d.ts +1 -1
  59. package/dist/flows/Termination/index.js +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/mutations-B6HWH-rZ.d.ts +22 -0
  63. package/package.json +1 -1
  64. package/dist/chunk-GAXGAK4P.js +0 -2
  65. package/dist/chunk-GAXGAK4P.js.map +0 -1
  66. package/dist/chunk-HGHKZF7M.js +0 -2
  67. package/dist/chunk-HGHKZF7M.js.map +0 -1
  68. package/dist/chunk-JTP3LZ77.js +0 -2
  69. package/dist/chunk-JTP3LZ77.js.map +0 -1
  70. package/dist/chunk-KHZ2ITFO.js +0 -2
  71. package/dist/chunk-KHZ2ITFO.js.map +0 -1
  72. package/dist/chunk-L6LGRALQ.js +0 -2
  73. package/dist/chunk-RWYOUDM5.js +0 -2
  74. package/dist/chunk-VEOGRXYK.js +0 -2
  75. package/dist/chunk-VEOGRXYK.js.map +0 -1
  76. package/dist/chunk-VJEJUUY2.js +0 -2
  77. package/dist/chunk-VJEJUUY2.js.map +0 -1
  78. package/dist/chunk-VJEL5MZJ.js +0 -2
  79. package/dist/chunk-VJEL5MZJ.js.map +0 -1
  80. package/dist/mutations-v9H353tz.d.ts +0 -10
  81. /package/dist/{chunk-RIWPSA6V.js.map → chunk-IEZAM2XO.js.map} +0 -0
  82. /package/dist/{chunk-RC2UQDK7.js.map → chunk-NIOH7TNP.js.map} +0 -0
  83. /package/dist/{chunk-INW2EQZR.js.map → chunk-OS3QI7CV.js.map} +0 -0
  84. /package/dist/{chunk-3QTURBOX.js.map → chunk-QUM7V5EP.js.map} +0 -0
  85. /package/dist/{chunk-IG3FJLDR.js.map → chunk-RDAO365M.js.map} +0 -0
package/README.md CHANGED
@@ -160,6 +160,7 @@ Visit the different different docs for each flow
160
160
  - [Cost Calculator Flow](./src/flows/CostCalculator/README.md)
161
161
  - [Termination Flow](./src/flows/Termination/README.md)
162
162
  - [Contract Amendments](./src/flows/ContractAmendment/README.md)
163
+ - [Onboarding Flow](./src/flows/Onboarding/README.md)
163
164
 
164
165
  ## Authentication
165
166
 
@@ -0,0 +1,2 @@
1
+ import{a as ce,b as le,c as p,d as me}from"./chunk-7JHIPWS7.js";import{a as Fe}from"./chunk-RDAO365M.js";import{a as de,b as fe,c as ue,f as ye,g as pe,h as _e,i as Se,j as be,l as ge}from"./chunk-AN7L3GVL.js";import{a as k}from"./chunk-WRKHWEZA.js";import{a as re}from"./chunk-PJBAQZ6G.js";import{c as y,d as T}from"./chunk-MH6KKP6K.js";import{a as r}from"./chunk-P37U34EQ.js";import{useEffect as He,useMemo as l,useRef as xe,useState as Ee}from"react";import Ge from"lodash.mergewith";import{jsx as ze}from"react/jsx-runtime";var We={employment_basic_information:"basic_information",contract_details:"contract_details"},Ke={select_country:null,basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},Ye=r(({isLoadingBasicInformationForm:m,isLoadingContractDetailsForm:w,isLoadingEmployment:R,isLoadingBenefitsOffersSchema:v,isLoadingBenefitOffers:i,isLoadingCompany:N,isLoadingCountries:_,employmentStatus:a,employmentId:j,currentStepName:s,basicInformationFields:P,contractDetailsFields:c})=>{let S=m||w||R||v||i||N||_,B=a&&me.includes(a),b=!!(j&&B&&s!=="review"),M=S||b,g=!!(b&&!S&&P.length>0&&c.length>0);return{isLoading:M,isNavigatingToReview:g,isEmploymentReadOnly:B}},"getLoadingStates"),it=r(({employmentId:m,companyId:w,countryCode:R,type:v,options:i,skipSteps:N})=>{let _=xe({}),[a,j]=Ee(m),[s,P]=Ee(R||null),{data:c,isLoading:S,refetch:B}=de(a);c?.country?.code&&s!==c.country.code&&P(c.country.code);let{data:b,isLoading:M}=ue(a),{data:g,isLoading:q,refetch:A}=fe(w),he=N?.includes("select_country")?le:ce,{fieldValues:F,stepState:e,setFieldValues:Oe,previousStep:Ve,nextStep:Ce,goToStep:J,setStepValues:U}=re(he),{selectCountryForm:I,isLoading:H}=ge({jsfModify:i?.jsfModify?.select_country,jsonSchemaVersion:i?.jsonSchemaVersion,queryOptions:{enabled:e.currentStep.name==="select_country"}}),x=_e(i),G=Se(i),W=be(i),{mutateAsync:Le}=k(x),{mutateAsync:K}=k(G),{mutateAsync:Te}=k(W),Pe=Ke[e.currentStep.name]||"employment_basic_information",Be=We[Pe],Me=c?.[Be]||{},Y=r(({form:n,options:o={}})=>ye({countryCode:s,form:n,fieldValues:Object.keys(F).length>0?{...e.values?.[e.currentStep.name],...F}:Me,options:{...o,queryOptions:{enabled:o.queryOptions?.enabled??!0}}}),"useJSONSchema"),Ie=!!(s&&(e.currentStep.name==="basic_information"||m)),ke=!!(s&&(e.currentStep.name==="contract_details"||m)),{data:d,isLoading:z}=Y({form:"employment_basic_information",options:{jsfModify:i?.jsfModify?.basic_information,queryOptions:{enabled:Ie}}}),u=i?.jsfModify?.contract_details?.fields?.annual_gross_salary,D=u&&typeof u=="object"&&"presentation"in u?u.presentation:void 0,we=l(()=>({fields:{annual_gross_salary:{...u,presentation:{annual_gross_salary_conversion_properties:{label:D?.annual_gross_salary_conversion_properties?.label,description:D?.annual_gross_salary_conversion_properties?.description},Component:r(n=>ze(Fe,{desiredCurrency:g?.desired_currency||"",...n}),"Component")}}}}),[g?.desired_currency,D,u]),{data:f,isLoading:Q}=Y({form:"contract_details",options:{jsfModify:{...i?.jsfModify?.contract_details,fields:{...i?.jsfModify?.contract_details?.fields,...we.fields}},queryOptions:{enabled:ke}}}),{data:E,isLoading:X}=pe(a,F,i),Z=l(()=>{if(e.currentStep.name==="benefits"){let n={...e.values?.[e.currentStep.name],...F};return Ge({},b,n)}return{}},[e.currentStep.name,b,e.values,F]),t=l(()=>({select_country:I?.fields||[],basic_information:d?.fields||[],contract_details:f?.fields||[],benefits:E?.fields||[],review:[]}),[I?.fields,d?.fields,f?.fields,E?.fields]),{country:{code:$}={},basic_information:ee={},contract_details:te={},status:ne}=c||{},oe=e.currentStep.name,h=l(()=>T(t.select_country,{country:s||$||""}),[t.select_country,s,$]),O=l(()=>T(t.basic_information,ee||{}),[t.basic_information,ee]),V=l(()=>T(t.contract_details,te||{}),[t.contract_details,te]),C=l(()=>T(t.benefits,Z),[t.benefits,Z]),Re=l(()=>({select_country:h,basic_information:O,contract_details:V,benefits:C}),[h,O,V,C]),{isLoading:ve,isNavigatingToReview:ae,isEmploymentReadOnly:Ne}=l(()=>Ye({isLoadingBasicInformationForm:z,isLoadingContractDetailsForm:Q,isLoadingEmployment:S,isLoadingBenefitsOffersSchema:X,isLoadingBenefitOffers:M,isLoadingCompany:q,isLoadingCountries:H,employmentId:m,employmentStatus:ne,basicInformationFields:t.basic_information,contractDetailsFields:t.contract_details,currentStepName:oe}),[z,Q,S,X,M,q,H,m,ne,t.basic_information,t.contract_details,oe]);He(()=>{ae&&(_.current={select_country:p(h,t.select_country),basic_information:p(O,t.basic_information),contract_details:p(V,t.contract_details),benefits:p(C,t.benefits)},U({select_country:h,basic_information:O,contract_details:V,benefits:C,review:{}}),J("review"))},[O,C,V,J,ae,h,U,t.basic_information,t.benefits,t.contract_details,t.select_country]);let ie=r(n=>I&&e.currentStep.name==="select_country"?n:d&&e.currentStep.name==="basic_information"?y(n,d?.fields,{isPartialValidation:!0}):f&&e.currentStep.name==="contract_details"?y(n,f?.fields,{isPartialValidation:!0}):{},"parseFormValues");async function je(n){_.current[e.currentStep.name]=p(n,t[e.currentStep.name]);let o=ie(n);switch(A(),e.currentStep.name){case"select_country":return P(o.country),Promise.resolve({data:{countryCode:o.country}});case"basic_information":{let se=!a&&s,Ae=a&&s&&c?.country&&c?.country.code!==s;if(se||Ae){let Ue={basic_information:o,type:v,country_code:s};try{let L=await Le(Ue);return await A(),j(L.data?.data?.employment?.id),L}catch(L){throw console.error("Error creating onboarding:",L),L}}else if(a)return K({employmentId:a,basic_information:o,pricing_plan_details:{frequency:"monthly"}});return}case"contract_details":return K({employmentId:a,...{contract_details:o,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return Te({employmentId:a,...n})}}r(je,"onSubmit");function Je(){Ve()}r(Je,"back");function De(){Ce()}r(De,"next");function qe(n){J(n)}return r(qe,"goTo"),{employmentId:a,creditRiskStatus:g?.default_legal_entity_credit_risk_status,stepState:e,fields:t[e.currentStep.name],isLoading:ve,isSubmitting:x.isPending||G.isPending||W.isPending,initialValues:Re,handleValidation:r(n=>{if(e.currentStep.name==="select_country")return I.handleValidation(n);if(e.currentStep.name==="benefits"&&E){let o=y(n,E?.fields);return E?.handleValidation(o)}if(d&&e.currentStep.name==="basic_information"){let o=y(n,d?.fields);return d?.handleValidation(o)}if(f&&e.currentStep.name==="contract_details"){let o=y(n,f?.fields);return f?.handleValidation(o)}return null},"handleValidation"),checkFieldUpdates:Oe,parseFormValues:ie,onSubmit:je,back:Je,next:De,goTo:qe,meta:{fields:_.current},refetchEmployment:B,employment:c,isEmploymentReadOnly:Ne}},"useOnboarding");export{it as a};
2
+ //# sourceMappingURL=chunk-7N7ND6Z4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/hooks.tsx"],"sourcesContent":["import {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n} from '@/src/client';\nimport { Fields } from '@remoteoss/json-schema-form';\n\nimport { useStepState, Step } from '@/src/flows/useStepState';\nimport {\n prettifyFormValues,\n reviewStepAllowedEmploymentStatus,\n STEPS,\n STEPS_WITHOUT_SELECT_COUNTRY,\n} from '@/src/flows/Onboarding/utils';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport mergeWith from 'lodash.mergewith';\nimport {\n useBenefitOffers,\n useBenefitOffersSchema,\n useCompany,\n useCountriesSchemaField,\n useCreateEmployment,\n useEmployment,\n useJSONSchemaForm,\n useUpdateBenefitsOffers,\n useUpdateEmployment,\n} from '@/src/flows/Onboarding/api';\nimport { JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { AnnualGrossSalary } from '@/src/flows/Onboarding/AnnualGrossSalary';\nimport { JSFField } from '@/src/types/remoteFlows';\n\ntype OnboardingHookProps = OnboardingFlowParams;\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n contract_details: 'contract_details',\n};\n\nconst stepToFormSchemaMap: Record<\n keyof typeof STEPS,\n JSONSchemaFormType | null\n> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_details: 'contract_details',\n benefits: null,\n review: null,\n};\n\nconst getLoadingStates = ({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentStatus,\n employmentId,\n currentStepName,\n basicInformationFields,\n contractDetailsFields,\n}: {\n isLoadingBasicInformationForm: boolean;\n isLoadingContractDetailsForm: boolean;\n isLoadingEmployment: boolean;\n isLoadingBenefitsOffersSchema: boolean;\n isLoadingBenefitOffers: boolean;\n isLoadingCompany: boolean;\n isLoadingCountries: boolean;\n employmentStatus?: Employment['status'];\n employmentId?: string;\n currentStepName: string;\n basicInformationFields: Fields;\n contractDetailsFields: Fields;\n}) => {\n const initialLoading =\n isLoadingBasicInformationForm ||\n isLoadingContractDetailsForm ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers ||\n isLoadingCompany ||\n isLoadingCountries;\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const shouldHandleReadOnlyEmployment = Boolean(\n employmentId && isEmploymentReadOnly && currentStepName !== 'review',\n );\n\n const isLoading = initialLoading || shouldHandleReadOnlyEmployment;\n\n const isNavigatingToReview = Boolean(\n shouldHandleReadOnlyEmployment &&\n !initialLoading &&\n basicInformationFields.length > 0 &&\n contractDetailsFields.length > 0,\n );\n\n return { isLoading, isNavigatingToReview, isEmploymentReadOnly };\n};\n\nexport const useOnboarding = ({\n employmentId,\n companyId,\n countryCode,\n type,\n options,\n skipSteps,\n}: OnboardingHookProps) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldsMetaRef = useRef<Record<string, any>>({});\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmployment(internalEmploymentId);\n\n // if the employment is loaded, country code has not been set yet\n // we set the internal country code with the employment country code\n if (\n employment?.country?.code &&\n internalCountryCode !== employment.country.code\n ) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n const {\n data: company,\n isLoading: isLoadingCompany,\n refetch: refetchCompany,\n } = useCompany(companyId);\n const stepsToUse = skipSteps?.includes('select_country')\n ? STEPS_WITHOUT_SELECT_COUNTRY\n : STEPS;\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(\n stepsToUse as Record<keyof typeof STEPS, Step<keyof typeof STEPS>>,\n );\n\n const { selectCountryForm, isLoading: isLoadingCountries } =\n useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n jsonSchemaVersion: options?.jsonSchemaVersion,\n queryOptions: {\n enabled: stepState.currentStep.name === 'select_country',\n },\n });\n\n const createEmploymentMutation = useCreateEmployment(options);\n const updateEmploymentMutation = useUpdateEmployment(options);\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers(options);\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n const { mutateAsync: updateEmploymentMutationAsync } = mutationToPromise(\n updateEmploymentMutation,\n );\n const { mutateAsync: updateBenefitsOffersMutationAsync } = mutationToPromise(\n updateBenefitsOffersMutation,\n );\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'employment_basic_information';\n const employmentKey = jsonSchemaToEmployment[formType] as keyof Employment;\n const serverEmploymentData = (employment?.[employmentKey] || {}) as Record<\n string,\n unknown\n >;\n\n const useJSONSchema = ({\n form,\n options: jsonSchemaOptions = {},\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n };\n }) => {\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues:\n Object.keys(fieldValues).length > 0\n ? {\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : serverEmploymentData,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n });\n };\n\n const isBasicInformationDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n Boolean(employmentId)),\n );\n\n const isContractDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'contract_details' ||\n Boolean(employmentId)),\n );\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'employment_basic_information',\n options: {\n jsfModify: options?.jsfModify?.basic_information,\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n },\n });\n\n const annualGrossSalaryField =\n options?.jsfModify?.contract_details?.fields?.annual_gross_salary;\n const annualSalaryFieldPresentation =\n annualGrossSalaryField &&\n typeof annualGrossSalaryField === 'object' &&\n 'presentation' in annualGrossSalaryField\n ? (\n annualGrossSalaryField as {\n presentation?: {\n annual_gross_salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const customFields = useMemo(\n () => ({\n fields: {\n annual_gross_salary: {\n ...annualGrossSalaryField,\n presentation: {\n annual_gross_salary_conversion_properties: {\n label:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.label,\n description:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.description,\n },\n Component: (props: JSFField & { currency: string }) => (\n <AnnualGrossSalary\n desiredCurrency={company?.desired_currency || ''}\n {...props}\n />\n ),\n },\n },\n },\n }),\n [\n company?.desired_currency,\n annualSalaryFieldPresentation,\n annualGrossSalaryField,\n ],\n );\n\n const { data: contractDetailsForm, isLoading: isLoadingContractDetailsForm } =\n useJSONSchema({\n form: 'contract_details',\n options: {\n jsfModify: {\n ...options?.jsfModify?.contract_details,\n fields: {\n ...options?.jsfModify?.contract_details?.fields,\n ...customFields.fields,\n },\n },\n queryOptions: {\n enabled: isContractDetailsEnabled,\n },\n },\n });\n\n const {\n data: benefitOffersSchema,\n isLoading: isLoadingBenefitsOffersSchema,\n } = useBenefitOffersSchema(\n internalEmploymentId as string,\n fieldValues,\n options,\n );\n\n const initialValuesBenefitOffers = useMemo(() => {\n if (stepState.currentStep.name === 'benefits') {\n const benefitsFormValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n return mergeWith({}, benefitOffers, benefitsFormValues);\n }\n return {};\n }, [\n stepState.currentStep.name,\n benefitOffers,\n stepState.values,\n fieldValues,\n ]);\n\n const stepFields: Record<keyof typeof STEPS, Fields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n contract_details: contractDetailsForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractDetailsForm?.fields,\n benefitOffersSchema?.fields,\n ],\n );\n\n const {\n country: { code: employmentCountryCode } = {},\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n status: employmentStatus,\n } = employment || {};\n const currentStepName = stepState.currentStep.name;\n\n const selectCountryInitialValues = useMemo(\n () =>\n getInitialValues(stepFields.select_country, {\n country: internalCountryCode || employmentCountryCode || '',\n }),\n [stepFields.select_country, internalCountryCode, employmentCountryCode],\n );\n\n const basicInformationInitialValues = useMemo(\n () =>\n getInitialValues(\n stepFields.basic_information,\n employmentBasicInformation || {},\n ),\n [stepFields.basic_information, employmentBasicInformation],\n );\n\n const contractDetailsInitialValues = useMemo(\n () =>\n getInitialValues(\n stepFields.contract_details,\n employmentContractDetails || {},\n ),\n [stepFields.contract_details, employmentContractDetails],\n );\n\n const benefitsInitialValues = useMemo(\n () => getInitialValues(stepFields.benefits, initialValuesBenefitOffers),\n [stepFields.benefits, initialValuesBenefitOffers],\n );\n\n const initialValues = useMemo(\n () => ({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n }),\n [\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n benefitsInitialValues,\n ],\n );\n\n const { isLoading, isNavigatingToReview, isEmploymentReadOnly } = useMemo(\n () =>\n getLoadingStates({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentId,\n employmentStatus: employmentStatus,\n basicInformationFields: stepFields.basic_information,\n contractDetailsFields: stepFields.contract_details,\n currentStepName: currentStepName,\n }),\n [\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentId,\n employmentStatus,\n stepFields.basic_information,\n stepFields.contract_details,\n currentStepName,\n ],\n );\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n ),\n benefits: prettifyFormValues(\n benefitsInitialValues,\n stepFields.benefits,\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n review: {},\n });\n\n goToStep('review');\n }\n }, [\n basicInformationInitialValues,\n benefitsInitialValues,\n contractDetailsInitialValues,\n goToStep,\n isNavigatingToReview,\n selectCountryInitialValues,\n setStepValues,\n stepFields.basic_information,\n stepFields.benefits,\n stepFields.contract_details,\n stepFields.select_country,\n ]);\n\n const parseFormValues = (values: FieldValues) => {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return parseJSFToValidate(values, contractDetailsForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n return {};\n };\n\n async function onSubmit(values: FieldValues) {\n // Prettify values for the current step\n fieldsMetaRef.current[stepState.currentStep.name] = prettifyFormValues(\n values,\n stepFields[stepState.currentStep.name],\n );\n\n const parsedValues = parseFormValues(values);\n refetchCompany();\n switch (stepState.currentStep.name) {\n case 'select_country': {\n setInternalCountryCode(parsedValues.country);\n return Promise.resolve({ data: { countryCode: parsedValues.country } });\n }\n case 'basic_information': {\n const isEmploymentNotLoaded =\n !internalEmploymentId && internalCountryCode;\n const hasChangedCountry =\n internalEmploymentId &&\n internalCountryCode &&\n employment?.country &&\n employment?.country.code !== internalCountryCode;\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: type,\n country_code: internalCountryCode,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n await refetchCompany();\n setInternalEmploymentId(\n // @ts-expect-error the types from the response are not matching\n response.data?.data?.employment?.id,\n );\n return response;\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else if (internalEmploymentId) {\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n });\n }\n\n return;\n }\n case 'contract_details': {\n const payload: EmploymentFullParams = {\n contract_details: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n };\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId as string,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...values,\n });\n }\n }\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n function goTo(step: keyof typeof STEPS) {\n goToStep(step);\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId: internalEmploymentId,\n\n /**\n * Credit risk status of the company, useful to know what to to show in the review step\n * The possible values are:\n * - not_started\n * - ready\n * - in_progress\n * - referred\n * - fail\n * - deposit_required\n * - no_deposit_required\n */\n\n creditRiskStatus: company?.default_legal_entity_credit_risk_status,\n\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n /**\n * Loading state indicating if the onboarding schema is being fetched\n */\n isLoading: isLoading,\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n updateBenefitsOffersMutation.isPending,\n /**\n * Initial form values\n */\n initialValues,\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: FieldValues) => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n contractDetailsForm?.fields,\n );\n return contractDetailsForm?.handleValidation(parsedValues);\n }\n\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n\n /**\n * Function to handle going to a specific step\n * @param step The step to go to.\n * @returns {void}\n */\n goTo,\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n },\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment,\n /**\n * Employment data\n */\n employment,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited, created_awaiting_reserve or created_reserve_paid\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n };\n};\n"],"mappings":"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","names":["useEffect","useMemo","useRef","useState","mergeWith","jsx","jsonSchemaToEmployment","stepToFormSchemaMap","getLoadingStates","__name","isLoadingBasicInformationForm","isLoadingContractDetailsForm","isLoadingEmployment","isLoadingBenefitsOffersSchema","isLoadingBenefitOffers","isLoadingCompany","isLoadingCountries","employmentStatus","employmentId","currentStepName","basicInformationFields","contractDetailsFields","initialLoading","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","shouldHandleReadOnlyEmployment","isLoading","isNavigatingToReview","useOnboarding","companyId","countryCode","type","options","skipSteps","fieldsMetaRef","useRef","internalEmploymentId","setInternalEmploymentId","useState","internalCountryCode","setInternalCountryCode","employment","refetchEmployment","useEmployment","benefitOffers","useBenefitOffers","company","refetchCompany","useCompany","stepsToUse","STEPS_WITHOUT_SELECT_COUNTRY","STEPS","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","selectCountryForm","useCountriesSchemaField","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","updateBenefitsOffersMutation","useUpdateBenefitsOffers","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","useJSONSchemaForm","isBasicInformationDetailsEnabled","isContractDetailsEnabled","basicInformationForm","annualGrossSalaryField","annualSalaryFieldPresentation","customFields","useMemo","props","AnnualGrossSalary","contractDetailsForm","benefitOffersSchema","useBenefitOffersSchema","initialValuesBenefitOffers","benefitsFormValues","mergeWith","stepFields","employmentCountryCode","employmentBasicInformation","employmentContractDetails","selectCountryInitialValues","getInitialValues","basicInformationInitialValues","contractDetailsInitialValues","benefitsInitialValues","initialValues","useEffect","prettifyFormValues","parseFormValues","values","parseJSFToValidate","onSubmit","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","back","next","goTo","step"]}
@@ -0,0 +1,2 @@
1
+ import{a as z}from"./chunk-WVJDCDGZ.js";import{b as x}from"./chunk-PWUYHFON.js";import{d as _,f as b,g as F,h as C,j as g,k as S,m as j,o as w,p as v,q as O,s as q,v as E,x as P}from"./chunk-WKK63LAY.js";import{d as a}from"./chunk-3ZWDIEEM.js";import{a as V}from"./chunk-MH6KKP6K.js";import{a as n}from"./chunk-P37U34EQ.js";import{createHeadlessForm as h,modify as d}from"@remoteoss/json-schema-form";import{useMutation as c,useQuery as u}from"@tanstack/react-query";var H=n(e=>{let{client:r}=a();return u({queryKey:["employment",e],retry:!1,enabled:!!e,select:n(({data:t})=>t?.data.employment,"select"),queryFn:n(async()=>{let t=await v({client:r,headers:{Authorization:""},path:{employment_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn")})},"useEmployment"),W=n(e=>{let{client:r}=a();return u({queryKey:["company",e],retry:!1,enabled:!!e,queryFn:n(async()=>{let t=await S({client:r,headers:{Authorization:""},path:{company_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn"),select:n(({data:t})=>t.data.company,"select")})},"useCompany"),X=n(e=>{let{client:r}=a();return u({queryKey:["benefit-offers",e],retry:!1,enabled:!!e,queryFn:n(async()=>b({client:r,headers:{Authorization:""},path:{employment_id:e}}).then(t=>{if(t.error||!t.data)throw new Error("Failed to fetch benefit offers data");return t}),"queryFn"),select:n(({data:t})=>t?.data?.reduce((o,s)=>({...o,[s.benefit_group.slug]:{value:s.benefit_tier?.slug??""}}),{}),"select")})},"useBenefitOffers"),Y=n(()=>{let{client:e}=a();return c({mutationFn:n(r=>E({client:e,headers:{Authorization:""},path:r}),"mutationFn")})},"useEmploymentInvite"),Z=n(()=>{let{client:e}=a();return c({mutationFn:n(r=>g({client:e,headers:{Authorization:""},body:r}),"mutationFn")})},"useCreateReserveInvoice"),$=n(({countryCode:e,form:r,fieldValues:t,options:o})=>{let{client:s}=a(),i=o?.jsonSchemaVersion?.form_schema?.[r]?{json_schema_version:o.jsonSchemaVersion.form_schema[r]}:{};return u({queryKey:["onboarding-json-schema-form",e,r],retry:!1,queryFn:n(async()=>{let m=await j({client:s,headers:{Authorization:""},path:{country_code:e,form:r},query:{skip_benefits:!0,...i}});if(m.error||!m.data)throw new Error("Failed to fetch onboarding schema");return m},"queryFn"),enabled:o?.queryOptions?.enabled,select:n(({data:m})=>{let l=m?.data||{};if(o&&o.jsfModify){let{schema:f}=d(l,o.jsfModify);l=f}let y=x(l.properties||{},"money").reduce((f,p)=>(f[p]=V(t[p]),f),{});return h(l,{initialValues:{...t,...y}})},"select")})},"useJSONSchemaForm"),ee=n((e,r,t)=>{let o=t?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:t.jsonSchemaVersion.benefit_offers_form_schema}:{},{client:s}=a();return u({queryKey:["benefit-offers-schema",e],retry:!1,enabled:!!e,queryFn:n(async()=>{let i=await w({client:s,headers:{Authorization:""},path:{employment_id:e},query:o});if(i.error||!i.data)throw new Error("Failed to fetch benefit offers schema");return i},"queryFn"),select:n(({data:i})=>{let m=i?.data?.schema||{};if(t&&t.jsfModify?.benefits){let{schema:y}=d(m,t.jsfModify.benefits);m=y}let l=Object.keys(r).length>0;return h(m,{initialValues:l?{...r}:{}})},"select")})},"useBenefitOffersSchema"),te=n(e=>{let{client:r}=a(),t=e?.jsonSchemaVersion?.form_schema?.employment_basic_information?{json_schema_version:e.jsonSchemaVersion.form_schema.employment_basic_information}:{};return c({mutationFn:n(o=>_({client:r,headers:{Authorization:""},body:o,query:{...t}}),"mutationFn")})},"useCreateEmployment"),ne=n(e=>{let{client:r}=a(),t={employment_basic_information_json_schema_version:e?.jsonSchemaVersion?.form_schema?.employment_basic_information,employment_contract_details_json_schema_version:e?.jsonSchemaVersion?.form_schema?.contract_details},o=Object.fromEntries(Object.entries(t).filter(([,s])=>s!==void 0));return c({mutationFn:n(({employmentId:s,...i})=>O({client:r,headers:{Authorization:""},body:i,path:{employment_id:s},query:{skip_benefits:!0,...o}}),"mutationFn")})},"useUpdateEmployment"),re=n(e=>{let{client:r}=a();return c({mutationFn:n(({employmentId:t,...o})=>{let s=e?.jsonSchemaVersion?.benefit_offers_form_schema?{json_schema_version:e.jsonSchemaVersion.benefit_offers_form_schema}:{};return F({client:r,headers:{Authorization:""},body:o,path:{employment_id:t},query:{...s}})},"mutationFn")})},"useUpdateBenefitsOffers"),oe=n(()=>{let{client:e}=a();return c({mutationFn:n(r=>C({client:e,headers:{Authorization:""},body:r}),"mutationFn")})},"useMagicLink"),M=n(e=>{let{client:r}=a();return u({...e,queryKey:["countries"],retry:!1,queryFn:n(async()=>{let t=await q({client:r,headers:{Authorization:""}});if(t.error||!t.data)throw new Error("Failed to fetch supported countries");return t},"queryFn"),select:n(({data:t})=>t?.data?.map(o=>({label:o.name,value:o.code}))||[],"select")})},"useCountries"),se=n(e=>{let{data:r,isLoading:t}=M(e?.queryOptions),{schema:o}=d(z.data.schema,e?.jsfModify||{}),s=h(o);if(r){let i=s.fields.find(m=>m.name==="country");i&&(i.options=r)}return{isLoading:t,selectCountryForm:s}},"useCountriesSchemaField"),ae=n(()=>{let{client:e}=a();return c({mutationFn:n(r=>P({client:e,headers:{Authorization:""},body:r}),"mutationFn")})},"useConvertCurrency");export{H as a,W as b,X as c,Y as d,Z as e,$ as f,ee as g,te as h,ne as i,re as j,oe as k,se as l,ae as m};
2
+ //# sourceMappingURL=chunk-AN7L3GVL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import {\n ConvertCurrencyParams,\n EmploymentCreateParams,\n EmploymentFullParams,\n getIndexBenefitOffer,\n getShowCompany,\n getShowEmployment,\n getShowFormCountry,\n getShowSchema,\n getSupportedCountry,\n MagicLinkParams,\n patchUpdateEmployment2,\n postConvertCurrencyConverter,\n postCreateEmployment2,\n postCreateRiskReserve,\n postGenerateMagicLink,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\nimport { convertToCents } from '@/src/components/form/utils';\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { FlowOptions, JSONSchemaFormType } from '@/src/flows/types';\nimport { findFieldsByType } from '@/src/flows/utils';\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { FieldValues } from 'react-hook-form';\n\nexport const useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n select: ({ data }) => {\n return data?.data.employment;\n },\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n });\n};\n\nexport const useCompany = (companyId: string) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['company', companyId],\n retry: false,\n enabled: !!companyId,\n queryFn: async () => {\n const response = await getShowCompany({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n select: ({ data }) => {\n return data.data.company;\n },\n });\n};\n\nexport const useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getIndexBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? '',\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\nexport const useCreateReserveInvoice = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: { employment_slug: string }) => {\n return postCreateRiskReserve({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nexport const useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } };\n}) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema?.[form]\n ? {\n json_schema_version: options.jsonSchemaVersion.form_schema[form],\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n enabled: options?.queryOptions?.enabled,\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n\n // Contract details contains x-jsf-logic that need to be calculated every time a form value changes\n // In particular there are calculations involving the annual_gross_salary field. However this field value doesn't get\n // here in cents. So we need to convert the money fields to cents, so that the calculations are correct.\n const moneyFields = findFieldsByType(jsfSchema.properties || {}, 'money');\n const moneyFieldsData = moneyFields.reduce<Record<string, number | null>>(\n (acc, field) => {\n acc[field] = convertToCents(fieldValues[field]);\n return acc;\n },\n {},\n );\n\n return createHeadlessForm(jsfSchema, {\n initialValues: {\n ...fieldValues,\n ...moneyFieldsData,\n },\n });\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowParams['options'],\n) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n let jsfSchema = data?.data?.schema || {};\n\n if (options && options.jsfModify?.benefits) {\n const { schema } = modify(jsfSchema, options.jsfModify.benefits);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const result = createHeadlessForm(jsfSchema, {\n // we need to clone the fieldValues to prevent side effects\n // if we don't do this, the benefits get included in the other steps\n initialValues: hasFieldValues ? { ...fieldValues } : {},\n });\n return result;\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema\n ?.employment_basic_information\n ? {\n json_schema_version:\n options.jsonSchemaVersion.form_schema.employment_basic_information,\n }\n : {};\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParams = {\n employment_basic_information_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.employment_basic_information,\n employment_contract_details_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.contract_details,\n };\n\n const filteredQueryParams = Object.fromEntries(\n Object.entries(jsonSchemaQueryParams).filter(\n ([, value]) => value !== undefined,\n ),\n );\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchUpdateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n ...filteredQueryParams,\n },\n });\n },\n });\n};\n\nexport const useUpdateBenefitsOffers = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n return putUpdateBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n\nconst useCountries = () => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['countries'],\n retry: false,\n queryFn: async () => {\n const response = await getSupportedCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch supported countries');\n }\n\n return response;\n },\n select: ({ data }) => {\n return (\n data?.data?.map((country) => {\n return {\n label: country.name,\n value: country.code,\n };\n }) || []\n );\n },\n });\n};\n\nexport const useCountriesSchemaField = (options?: FlowOptions) => {\n const { data: countries, isLoading } = useCountries();\n\n const { schema: selectCountrySchema } = modify(\n selectCountryStepSchema.data.schema,\n options?.jsfModify || {},\n );\n\n const selectCountryForm = createHeadlessForm(selectCountrySchema);\n\n if (countries) {\n const countryField = selectCountryForm.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n }\n }\n\n return {\n isLoading,\n selectCountryForm,\n };\n};\n\nexport const useConvertCurrency = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: ConvertCurrencyParams) => {\n return postConvertCurrencyConverter({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useEmployment","__name","employmentId","client","useClient","useQuery","data","response","getShowEmployment","useCompany","companyId","getShowCompany","useBenefitOffers","getIndexBenefitOffer","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useCreateReserveInvoice","postCreateRiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","schema","modify","moneyFieldsData","findFieldsByType","field","convertToCents","createHeadlessForm","useBenefitOffersSchema","getShowSchema","hasFieldValues","useCreateEmployment","postCreateEmployment2","useUpdateEmployment","jsonSchemaQueryParams","filteredQueryParams","value","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useMagicLink","params","postGenerateMagicLink","useCountries","getSupportedCountry","country","useCountriesSchemaField","countries","isLoading","selectCountrySchema","selectCountryStepSchema","selectCountryForm","countryField","useConvertCurrency","postConvertCurrencyConverter"]}
1
+ {"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import {\n ConvertCurrencyParams,\n EmploymentCreateParams,\n EmploymentFullParams,\n getIndexBenefitOffer,\n getShowCompany,\n getShowEmployment,\n getShowFormCountry,\n getShowSchema,\n getSupportedCountry,\n MagicLinkParams,\n patchUpdateEmployment2,\n postConvertCurrencyConverter,\n postCreateEmployment2,\n postCreateRiskReserve,\n postGenerateMagicLink,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\nimport { convertToCents } from '@/src/components/form/utils';\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { FlowOptions, JSONSchemaFormType } from '@/src/flows/types';\nimport { findFieldsByType } from '@/src/flows/utils';\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { FieldValues } from 'react-hook-form';\n\nexport const useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n select: ({ data }) => {\n return data?.data.employment;\n },\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n });\n};\n\nexport const useCompany = (companyId: string) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['company', companyId],\n retry: false,\n enabled: !!companyId,\n queryFn: async () => {\n const response = await getShowCompany({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n select: ({ data }) => {\n return data.data.company;\n },\n });\n};\n\nexport const useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getIndexBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? '',\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\nexport const useCreateReserveInvoice = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: { employment_slug: string }) => {\n return postCreateRiskReserve({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nexport const useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } };\n}) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema?.[form]\n ? {\n json_schema_version: options.jsonSchemaVersion.form_schema[form],\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n enabled: options?.queryOptions?.enabled,\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n\n // Contract details contains x-jsf-logic that need to be calculated every time a form value changes\n // In particular there are calculations involving the annual_gross_salary field. However this field value doesn't get\n // here in cents. So we need to convert the money fields to cents, so that the calculations are correct.\n const moneyFields = findFieldsByType(jsfSchema.properties || {}, 'money');\n const moneyFieldsData = moneyFields.reduce<Record<string, number | null>>(\n (acc, field) => {\n acc[field] = convertToCents(fieldValues[field]);\n return acc;\n },\n {},\n );\n\n return createHeadlessForm(jsfSchema, {\n initialValues: {\n ...fieldValues,\n ...moneyFieldsData,\n },\n });\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowParams['options'],\n) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n let jsfSchema = data?.data?.schema || {};\n\n if (options && options.jsfModify?.benefits) {\n const { schema } = modify(jsfSchema, options.jsfModify.benefits);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const result = createHeadlessForm(jsfSchema, {\n // we need to clone the fieldValues to prevent side effects\n // if we don't do this, the benefits get included in the other steps\n initialValues: hasFieldValues ? { ...fieldValues } : {},\n });\n return result;\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema\n ?.employment_basic_information\n ? {\n json_schema_version:\n options.jsonSchemaVersion.form_schema.employment_basic_information,\n }\n : {};\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParams = {\n employment_basic_information_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.employment_basic_information,\n employment_contract_details_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.contract_details,\n };\n\n const filteredQueryParams = Object.fromEntries(\n Object.entries(jsonSchemaQueryParams).filter(\n ([, value]) => value !== undefined,\n ),\n );\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchUpdateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n ...filteredQueryParams,\n },\n });\n },\n });\n};\n\nexport const useUpdateBenefitsOffers = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n return putUpdateBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n\nconst useCountries = (queryOptions?: { enabled?: boolean }) => {\n const { client } = useClient();\n return useQuery({\n ...queryOptions,\n queryKey: ['countries'],\n retry: false,\n queryFn: async () => {\n const response = await getSupportedCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch supported countries');\n }\n\n return response;\n },\n select: ({ data }) => {\n return (\n data?.data?.map((country) => {\n return {\n label: country.name,\n value: country.code,\n };\n }) || []\n );\n },\n });\n};\n\nexport const useCountriesSchemaField = (\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } },\n) => {\n const { data: countries, isLoading } = useCountries(options?.queryOptions);\n\n const { schema: selectCountrySchema } = modify(\n selectCountryStepSchema.data.schema,\n options?.jsfModify || {},\n );\n\n const selectCountryForm = createHeadlessForm(selectCountrySchema);\n\n if (countries) {\n const countryField = selectCountryForm.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n }\n }\n\n return {\n isLoading,\n selectCountryForm,\n };\n};\n\nexport const useConvertCurrency = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: ConvertCurrencyParams) => {\n return postConvertCurrencyConverter({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useEmployment","__name","employmentId","client","useClient","useQuery","data","response","getShowEmployment","useCompany","companyId","getShowCompany","useBenefitOffers","getIndexBenefitOffer","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useCreateReserveInvoice","postCreateRiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","schema","modify","moneyFieldsData","findFieldsByType","field","convertToCents","createHeadlessForm","useBenefitOffersSchema","getShowSchema","hasFieldValues","useCreateEmployment","postCreateEmployment2","useUpdateEmployment","jsonSchemaQueryParams","filteredQueryParams","value","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useMagicLink","params","postGenerateMagicLink","useCountries","queryOptions","getSupportedCountry","country","useCountriesSchemaField","countries","isLoading","selectCountrySchema","selectCountryStepSchema","selectCountryForm","countryField","useConvertCurrency","postConvertCurrencyConverter"]}
@@ -0,0 +1,2 @@
1
+ import{a as s}from"./chunk-QKTDO33H.js";import{b as n}from"./chunk-PGWKJ6FK.js";import{b as i}from"./chunk-WRKHWEZA.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";function F({onSubmit:l,onError:t,onSuccess:d}){let{onboardingBag:o}=n(),m=e(async a=>{try{await l?.(o.parseFormValues(a));let r=await o.onSubmit(a);if(r?.data){await d?.(r.data),o?.next();return}if(r?.error){let c=i(r?.fieldErrors||[],o.meta?.fields?.contract_details);t?.({error:r.error,rawError:r.rawError,fieldErrors:c})}}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit");return p(s,{defaultValues:o.stepState.values?.contract_details||o.initialValues.contract_details,onSubmit:m})}e(F,"ContractDetailsStep");export{F as a};
2
+ //# sourceMappingURL=chunk-AOJAZ4FT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/ContractDetailsStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { EmploymentResponse } from '@/src/client';\nimport { ContractDetailsFormPayload } from '@/src/flows/Onboarding/types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n NormalizedFieldError,\n normalizeFieldErrors,\n} from '@/src/lib/mutations';\n\ntype ContractDetailsStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: ContractDetailsFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (response: EmploymentResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function ContractDetailsStep({\n onSubmit,\n onError,\n onSuccess,\n}: ContractDetailsStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(\n onboardingBag.parseFormValues(payload) as ContractDetailsFormPayload,\n );\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response.data as EmploymentResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n onboardingBag.meta?.fields?.contract_details,\n );\n onError?.({\n error: response.error,\n rawError: response.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n return (\n <OnboardingForm\n defaultValues={\n onboardingBag.stepState.values?.contract_details ||\n onboardingBag.initialValues.contract_details\n }\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"gKAuEI,cAAAA,MAAA,oBAtCG,SAASC,EAAoB,CAClC,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA6B,CAC3B,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IACJG,EAAc,gBAAgBI,CAAO,CACvC,EACA,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMN,IAAYM,EAAS,IAA0B,EACrDL,GAAe,KAAK,EACpB,MACF,CACA,GAAIK,GAAU,MAAO,CACnB,IAAMC,EAAwBC,EAC5BF,GAAU,aAAe,CAAC,EAC1BL,EAAc,MAAM,QAAQ,gBAC9B,EACAF,IAAU,CACR,MAAOO,EAAS,MAChB,SAAUA,EAAS,SACnB,YAAaC,CACf,CAAC,CACH,CACF,OAASE,EAAgB,CACvBV,IAAU,CACR,MAAOU,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EA7BqB,gBA+BrB,OACEb,EAACc,EAAA,CACC,cACET,EAAc,UAAU,QAAQ,kBAChCA,EAAc,cAAc,iBAE9B,SAAUE,EACZ,CAEJ,CA9CgBC,EAAAP,EAAA","names":["jsx","ContractDetailsStep","onSubmit","onError","onSuccess","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","normalizedFieldErrors","normalizeFieldErrors","error","OnboardingForm"]}
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-QKTDO33H.js";import{b as i}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as d}from"react/jsx-runtime";function y({onSubmit:s,onSuccess:c,onError:t}){let{onboardingBag:o}=i(),u=e(async n=>{try{await s?.({countryCode:n.country});let r=await o.onSubmit(n);if(r?.data){await c?.(r?.data),o?.next();return}r?.error&&t?.({error:r.error,rawError:r.rawError,fieldErrors:[]})}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),l=o.stepState.values?.select_country||o.initialValues.select_country;return d(a,{defaultValues:l,onSubmit:u})}e(y,"SelectCountryStep");export{y as a};
2
+ //# sourceMappingURL=chunk-ASFAGLQI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/SelectCountryStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport {\n SelectCountryFormPayload,\n SelectCountrySuccess,\n} from '@/src/flows/Onboarding/types';\nimport { NormalizedFieldError } from '@/src/lib/mutations';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype SelectCountryStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: SelectCountryFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: SelectCountrySuccess) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function SelectCountryStep({\n onSubmit,\n onSuccess,\n onError,\n}: SelectCountryStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.({ countryCode: payload.country });\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as SelectCountrySuccess);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n onError?.({\n error: response.error,\n rawError: response.rawError,\n fieldErrors: [],\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const initialValues =\n onboardingBag.stepState.values?.select_country ||\n onboardingBag.initialValues.select_country;\n\n return (\n <OnboardingForm defaultValues={initialValues} onSubmit={handleSubmit} />\n );\n}\n"],"mappings":"mHAoEI,cAAAA,MAAA,oBApCG,SAASC,EAAkB,CAChC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA2B,CACzB,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IAAW,CAAE,YAAaO,EAAQ,OAAQ,CAAC,EACjD,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMP,IAAYO,GAAU,IAA4B,EACxDL,GAAe,KAAK,EACpB,MACF,CACIK,GAAU,OACZN,IAAU,CACR,MAAOM,EAAS,MAChB,SAAUA,EAAS,SACnB,YAAa,CAAC,CAChB,CAAC,CAEL,OAASC,EAAgB,CACvBP,IAAU,CACR,MAAOO,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EAvBqB,gBAyBfC,EACJP,EAAc,UAAU,QAAQ,gBAChCA,EAAc,cAAc,eAE9B,OACEL,EAACa,EAAA,CAAe,cAAeD,EAAe,SAAUL,EAAc,CAE1E,CAtCgBC,EAAAP,EAAA","names":["jsx","SelectCountryStep","onSubmit","onSuccess","onError","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","error","initialValues","OnboardingForm"]}
@@ -0,0 +1,2 @@
1
+ import{d as w,e as E}from"./chunk-AN7L3GVL.js";import{b as g}from"./chunk-PGWKJ6FK.js";import{a as m}from"./chunk-WRKHWEZA.js";import{b as f}from"./chunk-GEYFQVQI.js";import{b as y}from"./chunk-3ZWDIEEM.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as R}from"react/jsx-runtime";function A({onSubmit:S,onSuccess:d,onError:o,render:u,...r}){let{components:I}=y(),{onboardingBag:t,setCreditScore:c}=g(),n=w(),i=E(),{mutateAsync:b}=m(n),{mutateAsync:_}=m(i),l=a(async()=>{try{if(await S?.(),t.creditRiskStatus==="deposit_required"&&t.employmentId&&t.employment?.status&&!t.isEmploymentReadOnly){let e=await _({employment_slug:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"created_awaiting_reserve"}),c?.(s=>({...s,showReserveInvoice:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}else if(t.employmentId){let e=await b({employment_id:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"invited"}),c?.(s=>({...s,showInviteSuccessful:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}}catch(e){o?.({error:e,rawError:e,fieldErrors:[]})}},"handleSubmit"),p=t.creditRiskStatus==="deposit_required"&&t.employment?.status&&!t.isEmploymentReadOnly,v=I?.button;return v?R(v,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:e=>{l(),r.onClick?.(e)},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})}):R(f,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:()=>{l()},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})})}a(A,"OnboardingInvite");export{A as a};
2
+ //# sourceMappingURL=chunk-BYFO5OB6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/OnboardingInvite.tsx"],"sourcesContent":["import { ButtonHTMLAttributes, ReactNode } from 'react';\nimport { useEmploymentInvite } from './api';\nimport { Button } from '@/src/components/ui/button';\nimport { useCreateReserveInvoice } from '@/src/flows/Onboarding/api';\nimport { FieldError, mutationToPromise } from '@/src/lib/mutations';\nimport { SuccessResponse } from '@/src/client';\nimport { useOnboardingContext } from './context';\nimport { useFormFields } from '@/src/context';\n\nexport type OnboardingInviteProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'onError'\n> & {\n onSuccess?: ({\n data,\n employmentStatus,\n }: {\n data: SuccessResponse;\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => void | Promise<void>;\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: FieldError[];\n }) => void;\n onSubmit?: () => void | Promise<void>;\n render: (props: {\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => ReactNode;\n} & Record<string, unknown>;\n\nexport function OnboardingInvite({\n onSubmit,\n onSuccess,\n onError,\n render,\n ...props\n}: OnboardingInviteProps) {\n const { components } = useFormFields();\n const { onboardingBag, setCreditScore } = useOnboardingContext();\n const employmentInviteMutation = useEmploymentInvite();\n const useCreateReserveInvoiceMutation = useCreateReserveInvoice();\n\n const { mutateAsync: employmentInviteMutationAsync } = mutationToPromise(\n employmentInviteMutation,\n );\n\n const { mutateAsync: createReserveInvoiceMutationAsync } = mutationToPromise(\n useCreateReserveInvoiceMutation,\n );\n\n const handleSubmit = async () => {\n try {\n await onSubmit?.();\n if (\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employmentId &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly\n ) {\n const response = await createReserveInvoiceMutationAsync({\n employment_slug: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'created_awaiting_reserve',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showReserveInvoice: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n\n if (response.error) {\n onError?.({\n error: response.error,\n rawError: response.rawError,\n fieldErrors: [],\n });\n }\n } else if (onboardingBag.employmentId) {\n const response = await employmentInviteMutationAsync({\n employment_id: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'invited',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showInviteSuccessful: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n if (response.error) {\n onError?.({\n error: response.error,\n rawError: response.rawError,\n fieldErrors: [],\n });\n }\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const isReserveFlow =\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly;\n\n const CustomButton = components?.button;\n if (CustomButton) {\n return (\n <CustomButton\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={(evt) => {\n handleSubmit();\n props.onClick?.(evt);\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </CustomButton>\n );\n }\n\n return (\n <Button\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={() => {\n handleSubmit();\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </Button>\n );\n}\n"],"mappings":"kPAgIM,cAAAA,MAAA,oBA7FC,SAASC,EAAiB,CAC/B,SAAAC,EACA,UAAAC,EACA,QAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,cAAAC,EAAe,eAAAC,CAAe,EAAIC,EAAqB,EACzDC,EAA2BC,EAAoB,EAC/CC,EAAkCC,EAAwB,EAE1D,CAAE,YAAaC,CAA8B,EAAIC,EACrDL,CACF,EAEM,CAAE,YAAaM,CAAkC,EAAID,EACzDH,CACF,EAEMK,EAAeC,EAAA,SAAY,CAC/B,GAAI,CAEF,GADA,MAAMlB,IAAW,EAEfO,EAAc,mBAAqB,oBACnCA,EAAc,cACdA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBACf,CACA,IAAMY,EAAW,MAAMH,EAAkC,CACvD,gBAAiBT,EAAc,YACjC,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,0BACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,mBAAoB,EACtB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CAEIY,EAAS,OACXjB,IAAU,CACR,MAAOiB,EAAS,MAChB,SAAUA,EAAS,SACnB,YAAa,CAAC,CAChB,CAAC,CAEL,SAAWZ,EAAc,aAAc,CACrC,IAAMY,EAAW,MAAML,EAA8B,CACnD,cAAeP,EAAc,YAC/B,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,SACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,qBAAsB,EACxB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CACIY,EAAS,OACXjB,IAAU,CACR,MAAOiB,EAAS,MAChB,SAAUA,EAAS,SACnB,YAAa,CAAC,CAChB,CAAC,CAEL,CACF,OAASE,EAAgB,CACvBnB,IAAU,CACR,MAAOmB,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EA/DqB,gBAiEfC,EACJf,EAAc,mBAAqB,oBACnCA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBAEXgB,EAAelB,GAAY,OACjC,OAAIkB,EAEAzB,EAACyB,EAAA,CACE,GAAGnB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAUoB,GAAQ,CAChBP,EAAa,EACbb,EAAM,UAAUoB,CAAG,CACrB,EAEC,SAAArB,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,EAKFxB,EAAC2B,EAAA,CACE,GAAGrB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAS,IAAM,CACba,EAAa,CACf,EAEC,SAAAd,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,CAEJ,CArIgBJ,EAAAnB,EAAA","names":["jsx","OnboardingInvite","onSubmit","onSuccess","onError","render","props","components","useFormFields","onboardingBag","setCreditScore","useOnboardingContext","employmentInviteMutation","useEmploymentInvite","useCreateReserveInvoiceMutation","useCreateReserveInvoice","employmentInviteMutationAsync","mutationToPromise","createReserveInvoiceMutationAsync","handleSubmit","__name","response","prev","error","isReserveFlow","CustomButton","evt","Button"]}
@@ -0,0 +1,2 @@
1
+ import{a as s}from"./chunk-QKTDO33H.js";import{b as t}from"./chunk-PGWKJ6FK.js";import{b as e}from"./chunk-WRKHWEZA.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as c}from"react/jsx-runtime";function S({onSubmit:m,onSuccess:d,onError:a}){let{onboardingBag:o}=t(),l=i(async n=>{try{await m?.(o.parseFormValues(n));let r=await o.onSubmit(n);if(r?.data){await d?.(r?.data),o?.next();return}if(r?.error){let p=e(r?.fieldErrors||[],o.meta?.fields?.basic_information);a?.({error:r?.error,rawError:r?.rawError,fieldErrors:p})}}catch(r){a?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),f=o.stepState.values?.basic_information||o.initialValues.basic_information;return c(s,{defaultValues:f,onSubmit:l})}i(S,"BasicInformationStep");export{S as a};
2
+ //# sourceMappingURL=chunk-D53FKWGJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/BasicInformationStep.tsx"],"sourcesContent":["import { useOnboardingContext } from './context';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { BasicInformationFormPayload } from '@/src/flows/Onboarding/types';\nimport { EmploymentCreationResponse } from '@/src/client';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n normalizeFieldErrors,\n NormalizedFieldError,\n} from '@/src/lib/mutations';\n\ntype BasicInformationStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: BasicInformationFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: EmploymentCreationResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function BasicInformationStep({\n onSubmit,\n onSuccess,\n onError,\n}: BasicInformationStepProps) {\n const { onboardingBag } = useOnboardingContext();\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(\n onboardingBag.parseFormValues(payload) as BasicInformationFormPayload,\n );\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as EmploymentCreationResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n onboardingBag.meta?.fields?.basic_information,\n );\n\n onError?.({\n error: response?.error,\n rawError: response?.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const initialValues =\n onboardingBag.stepState.values?.basic_information ||\n onboardingBag.initialValues.basic_information;\n\n return (\n <OnboardingForm defaultValues={initialValues} onSubmit={handleSubmit} />\n );\n}\n"],"mappings":"gKA6EI,cAAAA,MAAA,oBA5CG,SAASC,EAAqB,CACnC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA8B,CAC5B,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EAEzCC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMP,IACJG,EAAc,gBAAgBI,CAAO,CACvC,EACA,IAAMC,EAAW,MAAML,EAAc,SAASI,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMP,IAAYO,GAAU,IAAkC,EAC9DL,GAAe,KAAK,EACpB,MACF,CACA,GAAIK,GAAU,MAAO,CACnB,IAAMC,EAAwBC,EAC5BF,GAAU,aAAe,CAAC,EAC1BL,EAAc,MAAM,QAAQ,iBAC9B,EAEAD,IAAU,CACR,MAAOM,GAAU,MACjB,SAAUA,GAAU,SACpB,YAAaC,CACf,CAAC,CACH,CACF,OAASE,EAAgB,CACvBT,IAAU,CACR,MAAOS,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EA9BqB,gBAgCfC,EACJT,EAAc,UAAU,QAAQ,mBAChCA,EAAc,cAAc,kBAE9B,OACEL,EAACe,EAAA,CAAe,cAAeD,EAAe,SAAUP,EAAc,CAE1E,CA9CgBC,EAAAP,EAAA","names":["jsx","BasicInformationStep","onSubmit","onSuccess","onError","onboardingBag","useOnboardingContext","handleSubmit","__name","payload","response","normalizedFieldErrors","normalizeFieldErrors","error","initialValues","OnboardingForm"]}
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-RXK4RLF6.js";import{a as c}from"./chunk-RC2UQDK7.js";import{a as e}from"./chunk-CTTXXEWI.js";import{a as m}from"./chunk-CSU6IQX3.js";import{a as r}from"./chunk-RFYJGH2X.js";import{a as o}from"./chunk-TVZAFTPT.js";import{a as n}from"./chunk-P37U34EQ.js";import{useId as f}from"react";import{jsx as s}from"react/jsx-runtime";function k({employmentId:d,countryCode:C,options:p,render:A}){let t=c({employmentId:d,countryCode:C,options:p}),i=f();return s(o.Provider,{value:{formId:i,contractAmendmentBag:t},children:A({contractAmendmentBag:t,components:{Form:r,SubmitButton:a,ConfirmationForm:m,BackButton:e}})})}n(k,"ContractAmendmentFlow");export{k as a};
2
- //# sourceMappingURL=chunk-RIWPSA6V.js.map
1
+ import{a}from"./chunk-RXK4RLF6.js";import{a as c}from"./chunk-NIOH7TNP.js";import{a as e}from"./chunk-CTTXXEWI.js";import{a as m}from"./chunk-CSU6IQX3.js";import{a as r}from"./chunk-RFYJGH2X.js";import{a as o}from"./chunk-TVZAFTPT.js";import{a as n}from"./chunk-P37U34EQ.js";import{useId as f}from"react";import{jsx as s}from"react/jsx-runtime";function k({employmentId:d,countryCode:C,options:p,render:A}){let t=c({employmentId:d,countryCode:C,options:p}),i=f();return s(o.Provider,{value:{formId:i,contractAmendmentBag:t},children:A({contractAmendmentBag:t,components:{Form:r,SubmitButton:a,ConfirmationForm:m,BackButton:e}})})}n(k,"ContractAmendmentFlow");export{k as a};
2
+ //# sourceMappingURL=chunk-IEZAM2XO.js.map
@@ -1,2 +1,2 @@
1
- import{a as v}from"./chunk-LX7QBDSF.js";import{a as A}from"./chunk-KHZ2ITFO.js";import{a as l,b as _}from"./chunk-5SMMQQXP.js";import{c as j,l as E,t as w}from"./chunk-WKK63LAY.js";import{a as M}from"./chunk-PJBAQZ6G.js";import{d}from"./chunk-3ZWDIEEM.js";import{a as b,c as S}from"./chunk-MH6KKP6K.js";import{a as t}from"./chunk-P37U34EQ.js";import{createHeadlessForm as I,modify as R}from"@remoteoss/json-schema-form";import{useMutation as Q,useQuery as B}from"@tanstack/react-query";var J=t(({countryCode:a,employment:r,fieldValues:n,options:e})=>{let{client:u}=d(),m=e?.jsonSchemaVersion?.contract_amendments?{json_schema_version:e.jsonSchemaVersion.contract_amendments}:{};return B({queryKey:["contract-amendment-schema"],retry:!1,queryFn:t(async()=>{let o=await j({client:u,headers:{Authorization:""},query:{employment_id:r?.data?.employment?.id,country_code:a,...m}});if(o.error||!o.data)throw new Error("Failed to fetch contract amendment schema");return o},"queryFn"),enabled:!!r,select:t(({data:o})=>{let c=o?.data||{};if(e&&e.jsfModify){let{schema:f}=R(c,e.jsfModify);c=f}let s={...n,annual_gross_salary:n?.annual_gross_salary?b(n?.annual_gross_salary):void 0},y=Object.keys(s).length>0;return I(c,{initialValues:y?s:_(r)})},"select")})},"useContractAmendmentSchemaQuery"),K=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>E({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useCreateContractAmendmentMutation"),U=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>w({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),ae=t(({employmentId:a,countryCode:r,options:n})=>{let{fieldValues:e,setFieldValues:u,stepState:m,nextStep:o,previousStep:c}=M(l),{data:s,isLoading:y,isError:V,error:f}=v({employmentId:a}),{data:i,isLoading:q,isError:L,error:T}=J({employment:s,countryCode:r,fieldValues:{...m.values?.[m.currentStep.name],...e},options:n}),k=_(s,i?.fields),F=K(n),g=U(n);async function O(p){let h=S(p,i?.fields||[],{isPartialValidation:!1}),P={employment_id:s?.data.employment?.id,amendment_contract_id:s?.data.employment?.active_contract_id,contract_amendment:{...h}};switch(m.currentStep.name){case l.form.name:{let{mutateAsync:C}=A(g),H=await C(P);return o(),H}case l.confirmation_form.name:{let{mutateAsync:C}=A(F);return C(P)}default:throw new Error("Invalid step state")}}t(O,"onSubmit");function z(p){if(i){let h=S(p,i?.fields);return i?.handleValidation(h)}return null}t(z,"handleValidation");function x(){c()}return t(x,"back"),{stepState:m,fields:i?.fields||[],isLoading:y||q,isError:V||L,error:f||T,isSubmitting:g.isPending||F.isPending,initialValues:k,values:e,handleValidation:z,checkFieldUpdates:u,onSubmit:O,back:x}},"useContractAmendment");export{ae as a};
2
- //# sourceMappingURL=chunk-RC2UQDK7.js.map
1
+ import{a as v}from"./chunk-LX7QBDSF.js";import{a as A}from"./chunk-WRKHWEZA.js";import{a as l,b as _}from"./chunk-5SMMQQXP.js";import{c as j,l as E,t as w}from"./chunk-WKK63LAY.js";import{a as M}from"./chunk-PJBAQZ6G.js";import{d}from"./chunk-3ZWDIEEM.js";import{a as b,c as S}from"./chunk-MH6KKP6K.js";import{a as t}from"./chunk-P37U34EQ.js";import{createHeadlessForm as I,modify as R}from"@remoteoss/json-schema-form";import{useMutation as Q,useQuery as B}from"@tanstack/react-query";var J=t(({countryCode:a,employment:r,fieldValues:n,options:e})=>{let{client:u}=d(),m=e?.jsonSchemaVersion?.contract_amendments?{json_schema_version:e.jsonSchemaVersion.contract_amendments}:{};return B({queryKey:["contract-amendment-schema"],retry:!1,queryFn:t(async()=>{let o=await j({client:u,headers:{Authorization:""},query:{employment_id:r?.data?.employment?.id,country_code:a,...m}});if(o.error||!o.data)throw new Error("Failed to fetch contract amendment schema");return o},"queryFn"),enabled:!!r,select:t(({data:o})=>{let c=o?.data||{};if(e&&e.jsfModify){let{schema:f}=R(c,e.jsfModify);c=f}let s={...n,annual_gross_salary:n?.annual_gross_salary?b(n?.annual_gross_salary):void 0},y=Object.keys(s).length>0;return I(c,{initialValues:y?s:_(r)})},"select")})},"useContractAmendmentSchemaQuery"),K=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>E({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useCreateContractAmendmentMutation"),U=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>w({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),ae=t(({employmentId:a,countryCode:r,options:n})=>{let{fieldValues:e,setFieldValues:u,stepState:m,nextStep:o,previousStep:c}=M(l),{data:s,isLoading:y,isError:V,error:f}=v({employmentId:a}),{data:i,isLoading:q,isError:L,error:T}=J({employment:s,countryCode:r,fieldValues:{...m.values?.[m.currentStep.name],...e},options:n}),k=_(s,i?.fields),F=K(n),g=U(n);async function O(p){let h=S(p,i?.fields||[],{isPartialValidation:!1}),P={employment_id:s?.data.employment?.id,amendment_contract_id:s?.data.employment?.active_contract_id,contract_amendment:{...h}};switch(m.currentStep.name){case l.form.name:{let{mutateAsync:C}=A(g),H=await C(P);return o(),H}case l.confirmation_form.name:{let{mutateAsync:C}=A(F);return C(P)}default:throw new Error("Invalid step state")}}t(O,"onSubmit");function z(p){if(i){let h=S(p,i?.fields);return i?.handleValidation(h)}return null}t(z,"handleValidation");function x(){c()}return t(x,"back"),{stepState:m,fields:i?.fields||[],isLoading:y||q,isError:V||L,error:f||T,isSubmitting:g.isPending||F.isPending,initialValues:k,values:e,handleValidation:z,checkFieldUpdates:u,onSubmit:O,back:x}},"useContractAmendment");export{ae as a};
2
+ //# sourceMappingURL=chunk-NIOH7TNP.js.map
@@ -1,2 +1,2 @@
1
- import{a as S}from"./chunk-XFD3ULUF.js";import{a as P}from"./chunk-WWANHPT7.js";import{a as h}from"./chunk-DR7VGNO2.js";import{a as F}from"./chunk-S4XU4SE7.js";import{a as T}from"./chunk-PWUYHFON.js";import{a as y}from"./chunk-KHZ2ITFO.js";import{b as p}from"./chunk-WKK63LAY.js";import{a as V}from"./chunk-PJBAQZ6G.js";import{d as _}from"./chunk-3ZWDIEEM.js";import{c as s}from"./chunk-MH6KKP6K.js";import{a as e}from"./chunk-P37U34EQ.js";import{createHeadlessForm as g,modify as x}from"@remoteoss/json-schema-form";import{useMutation as A,useQuery as K}from"@tanstack/react-query";import L from"lodash.omitby";import q from"lodash.isnull";import z from"lodash.omit";function R(o){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...o}}e(R,"buildInitialValues");var B=e(()=>{let{client:o}=_();return A({mutationFn:e(n=>p({client:o,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateTermination"),I=e(({formValues:o,jsfModify:n,step:m})=>K({queryKey:["rmt-flows-termination-schema",m],queryFn:e(()=>h[m]??S,"queryFn"),select:e(({data:u})=>{let i=u?.schema||{};if(n){let{schema:d}=x(i,n);i=d}return g(i||{},{initialValues:o||{}})},"select")}),"useTerminationSchema"),ue=e(({employmentId:o,options:n})=>{let{fieldValues:m,setFieldValues:u,stepState:i,previousStep:f,nextStep:d}=V(F),k={...i.values?.[i.currentStep.name],...m},{data:r,isLoading:w}=I({formValues:k,jsfModify:n?.jsfModify,step:i.currentStep.name}),l=g(P.data.schema),c=B(),{mutateAsync:b}=y(c);async function C(a){if(!o)throw new Error("Employment id is missing");if(r){let t=s(a,l.fields,{isPartialValidation:!0}),{customer_informed_employee:j}=t,D=j==="yes"?{employee_awareness:{date:t.customer_informed_employee_date,note:t.customer_informed_employee_description}}:void 0,H=T(t,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),J=z(H,"customer_informed_employee_date","customer_informed_employee_description"),O=L({...J,...D},q);return b({employment_id:o,termination_details:O,type:"termination"})}}e(C,"onSubmit");function M(){f()}e(M,"back");function v(){d()}e(v,"next");let E=R({...i.values?.employee_communication,...i.values?.termination_details,...i.values?.paid_time_off,...i.values?.additional_information});return{employmentId:o,stepState:i,fields:r?.fields||[],isLoading:w,isSubmitting:c.isPending,initialValues:E,handleValidation:e(a=>{if(r){let t=s(a,r?.fields);return r?.handleValidation(t)}return null},"handleValidation"),checkFieldUpdates:e(a=>{if(l){let t=s(a,l?.fields,{isPartialValidation:!0});u(t)}},"checkFieldUpdates"),parseFormValues:e(a=>s(a,l.fields,{isPartialValidation:!0}),"parseFormValues"),onSubmit:C,back:M,next:v}},"useTermination");export{ue as a};
2
- //# sourceMappingURL=chunk-INW2EQZR.js.map
1
+ import{a as S}from"./chunk-XFD3ULUF.js";import{a as P}from"./chunk-WWANHPT7.js";import{a as h}from"./chunk-DR7VGNO2.js";import{a as F}from"./chunk-S4XU4SE7.js";import{a as T}from"./chunk-PWUYHFON.js";import{a as y}from"./chunk-WRKHWEZA.js";import{b as p}from"./chunk-WKK63LAY.js";import{a as V}from"./chunk-PJBAQZ6G.js";import{d as _}from"./chunk-3ZWDIEEM.js";import{c as s}from"./chunk-MH6KKP6K.js";import{a as e}from"./chunk-P37U34EQ.js";import{createHeadlessForm as g,modify as x}from"@remoteoss/json-schema-form";import{useMutation as A,useQuery as K}from"@tanstack/react-query";import L from"lodash.omitby";import q from"lodash.isnull";import z from"lodash.omit";function R(o){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...o}}e(R,"buildInitialValues");var B=e(()=>{let{client:o}=_();return A({mutationFn:e(n=>p({client:o,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateTermination"),I=e(({formValues:o,jsfModify:n,step:m})=>K({queryKey:["rmt-flows-termination-schema",m],queryFn:e(()=>h[m]??S,"queryFn"),select:e(({data:u})=>{let i=u?.schema||{};if(n){let{schema:d}=x(i,n);i=d}return g(i||{},{initialValues:o||{}})},"select")}),"useTerminationSchema"),ue=e(({employmentId:o,options:n})=>{let{fieldValues:m,setFieldValues:u,stepState:i,previousStep:f,nextStep:d}=V(F),k={...i.values?.[i.currentStep.name],...m},{data:r,isLoading:w}=I({formValues:k,jsfModify:n?.jsfModify,step:i.currentStep.name}),l=g(P.data.schema),c=B(),{mutateAsync:b}=y(c);async function C(a){if(!o)throw new Error("Employment id is missing");if(r){let t=s(a,l.fields,{isPartialValidation:!0}),{customer_informed_employee:j}=t,D=j==="yes"?{employee_awareness:{date:t.customer_informed_employee_date,note:t.customer_informed_employee_description}}:void 0,H=T(t,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),J=z(H,"customer_informed_employee_date","customer_informed_employee_description"),O=L({...J,...D},q);return b({employment_id:o,termination_details:O,type:"termination"})}}e(C,"onSubmit");function M(){f()}e(M,"back");function v(){d()}e(v,"next");let E=R({...i.values?.employee_communication,...i.values?.termination_details,...i.values?.paid_time_off,...i.values?.additional_information});return{employmentId:o,stepState:i,fields:r?.fields||[],isLoading:w,isSubmitting:c.isPending,initialValues:E,handleValidation:e(a=>{if(r){let t=s(a,r?.fields);return r?.handleValidation(t)}return null},"handleValidation"),checkFieldUpdates:e(a=>{if(l){let t=s(a,l?.fields,{isPartialValidation:!0});u(t)}},"checkFieldUpdates"),parseFormValues:e(a=>s(a,l.fields,{isPartialValidation:!0}),"parseFormValues"),onSubmit:C,back:M,next:v}},"useTermination");export{ue as a};
2
+ //# sourceMappingURL=chunk-OS3QI7CV.js.map
@@ -1,2 +1,2 @@
1
- import{a as m}from"./chunk-LLIGZSYY.js";import{a as n}from"./chunk-JXCJLQRA.js";import{a as e}from"./chunk-INW2EQZR.js";import{a as T}from"./chunk-KGSIUWBI.js";import{a}from"./chunk-4BOE6EEO.js";import{a as f}from"./chunk-O4PJ6GWS.js";import{a as r}from"./chunk-BF7QENCN.js";import{a as p}from"./chunk-OP4QGFLS.js";import{a as t}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{useId as c}from"react";import{jsx as u}from"react/jsx-runtime";var A=i(({employmentId:d,render:s,options:l})=>{let y=c(),o=e({employmentId:d,options:l});return u(t.Provider,{value:{formId:y,terminationBag:o},children:s({terminationBag:o,components:{SubmitButton:m,TimeOff:n,Back:r,EmployeeComunicationStep:a,TerminationDetailsStep:p,PaidTimeOffStep:f,AdditionalDetailsStep:T}})})},"TerminationFlow");export{A as a};
2
- //# sourceMappingURL=chunk-3QTURBOX.js.map
1
+ import{a as m}from"./chunk-LLIGZSYY.js";import{a as n}from"./chunk-JXCJLQRA.js";import{a as e}from"./chunk-OS3QI7CV.js";import{a as T}from"./chunk-KGSIUWBI.js";import{a}from"./chunk-4BOE6EEO.js";import{a as f}from"./chunk-O4PJ6GWS.js";import{a as r}from"./chunk-BF7QENCN.js";import{a as p}from"./chunk-OP4QGFLS.js";import{a as t}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{useId as c}from"react";import{jsx as u}from"react/jsx-runtime";var A=i(({employmentId:d,render:s,options:l})=>{let y=c(),o=e({employmentId:d,options:l});return u(t.Provider,{value:{formId:y,terminationBag:o},children:s({terminationBag:o,components:{SubmitButton:m,TimeOff:n,Back:r,EmployeeComunicationStep:a,TerminationDetailsStep:p,PaidTimeOffStep:f,AdditionalDetailsStep:T}})})},"TerminationFlow");export{A as a};
2
+ //# sourceMappingURL=chunk-QUM7V5EP.js.map
@@ -1,2 +1,2 @@
1
- import{m as N}from"./chunk-RWYOUDM5.js";import{a as q}from"./chunk-GFMFGU7A.js";import{b as M}from"./chunk-3ZWDIEEM.js";import{a as t,b as u,c as Se}from"./chunk-P37U34EQ.js";var F=u((pt,L)=>{"use strict";function Te(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}t(Te,"isObject");L.exports=Te});var W=u((vt,P)=>{"use strict";var he=typeof global=="object"&&global&&global.Object===Object&&global;P.exports=he});var w=u((yt,D)=>{"use strict";var Ce=W(),xe=typeof self=="object"&&self&&self.Object===Object&&self,je=Ce||xe||Function("return this")();D.exports=je});var $=u((St,B)=>{"use strict";var _e=w(),Oe=t(function(){return _e.Date.now()},"now");B.exports=Oe});var J=u((ht,H)=>{"use strict";var Ee=/\s/;function Re(e){for(var n=e.length;n--&&Ee.test(e.charAt(n)););return n}t(Re,"trimmedEndIndex");H.exports=Re});var V=u((xt,U)=>{"use strict";var qe=J(),Fe=/^\s+/;function we(e){return e&&e.slice(0,qe(e)+1).replace(Fe,"")}t(we,"baseTrim");U.exports=we});var I=u((_t,X)=>{"use strict";var Ie=w(),ke=Ie.Symbol;X.exports=ke});var Y=u((Ot,Q)=>{"use strict";var z=I(),K=Object.prototype,Ae=K.hasOwnProperty,Ge=K.toString,j=z?z.toStringTag:void 0;function Me(e){var n=Ae.call(e,j),o=e[j];try{e[j]=void 0;var i=!0}catch{}var a=Ge.call(e);return i&&(n?e[j]=o:delete e[j]),a}t(Me,"getRawTag");Q.exports=Me});var ee=u((Rt,Z)=>{"use strict";var Ne=Object.prototype,Le=Ne.toString;function Pe(e){return Le.call(e)}t(Pe,"objectToString");Z.exports=Pe});var oe=u((Ft,re)=>{"use strict";var te=I(),We=Y(),De=ee(),Be="[object Null]",$e="[object Undefined]",ne=te?te.toStringTag:void 0;function He(e){return e==null?e===void 0?$e:Be:ne&&ne in Object(e)?We(e):De(e)}t(He,"baseGetTag");re.exports=He});var ae=u((It,ie)=>{"use strict";function Je(e){return e!=null&&typeof e=="object"}t(Je,"isObjectLike");ie.exports=Je});var ce=u((At,se)=>{"use strict";var Ue=oe(),Ve=ae(),Xe="[object Symbol]";function ze(e){return typeof e=="symbol"||Ve(e)&&Ue(e)==Xe}t(ze,"isSymbol");se.exports=ze});var me=u((Mt,fe)=>{"use strict";var Ke=V(),ue=F(),Qe=ce(),le=NaN,Ye=/^[-+]0x[0-9a-f]+$/i,Ze=/^0b[01]+$/i,et=/^0o[0-7]+$/i,tt=parseInt;function nt(e){if(typeof e=="number")return e;if(Qe(e))return le;if(ue(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=ue(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=Ke(e);var o=Ze.test(e);return o||et.test(e)?tt(e.slice(2),o?2:8):Ye.test(e)?le:+e}t(nt,"toNumber");fe.exports=nt});var pe=u((Lt,ge)=>{"use strict";var rt=F(),k=$(),de=me(),ot="Expected a function",it=Math.max,at=Math.min;function st(e,n,o){var i,a,m,f,s,d,b=0,S=!1,g=!1,v=!0;if(typeof e!="function")throw new TypeError(ot);n=de(n)||0,rt(o)&&(S=!!o.leading,g="maxWait"in o,m=g?it(de(o.maxWait)||0,n):m,v="trailing"in o?!!o.trailing:v);function T(r){var l=i,p=a;return i=a=void 0,b=r,f=e.apply(p,l),f}t(T,"invokeFunc");function O(r){return b=r,s=setTimeout(y,n),S?T(r):f}t(O,"leadingEdge");function E(r){var l=r-d,p=r-b,G=n-l;return g?at(G,m-p):G}t(E,"remainingWait");function R(r){var l=r-d,p=r-b;return d===void 0||l>=n||l<0||g&&p>=m}t(R,"shouldInvoke");function y(){var r=k();if(R(r))return h(r);s=setTimeout(y,E(r))}t(y,"timerExpired");function h(r){return s=void 0,v&&i?T(r):(i=a=void 0,f)}t(h,"trailingEdge");function c(){s!==void 0&&clearTimeout(s),b=0,i=d=a=s=void 0}t(c,"cancel");function C(){return s===void 0?f:h(k())}t(C,"flush");function x(){var r=k(),l=R(r);if(i=arguments,a=this,d=r,l){if(s===void 0)return O(d);if(g)return clearTimeout(s),s=setTimeout(y,n),T(d)}return s===void 0&&(s=setTimeout(y,n)),f}return t(x,"debounced"),x.cancel=c,x.flush=C,x}t(st,"debounce");ge.exports=st});import{useState as lt,useCallback as ft}from"react";import{useFormContext as mt}from"react-hook-form";var ve=Se(pe(),1);import{useCallback as ct,useEffect as ut,useRef as be}from"react";function A(e,n){let o=be(e);ut(()=>{o.current=e},[e]);let i=be((0,ve.default)(a=>{o.current(a)},n)).current;return ct(a=>{i(a)},[i])}t(A,"useDebounce");import{Fragment as gt,jsx as _,jsxs as ye}from"react/jsx-runtime";var dt=t(({description:e,showConversion:n,currency:o,onClick:i})=>{let{components:a}=M(),m=n?`Hide ${o} conversion`:`Show ${o} conversion`,f=a?.button;return ye("span",{className:"RemoteFlows-AnnualGrossSalary-description",children:[e," ",f?_(f,{className:"RemoteFlows-AnnualGrossSalary-button","data-type":"inline",onClick:i,children:m}):_("button",{className:"RemoteFlows-AnnualGrossSalary-button",onClick:i,children:m})]})},"DescriptionWithConversion"),Kt=t(({currency:e,desiredCurrency:n,description:o,...i})=>{let[a,m]=lt(!1),{setValue:f,watch:s}=mt(),d=s(i.name),b=e&&n&&e!==n,{mutateAsync:S}=N(),g=ft(async(c,C,x,r)=>{if(c)try{let l=await S({source_currency:C,target_currency:x,amount:Number(c)});if(l.data?.data?.conversion_data?.target_amount){let p=l.data.data.conversion_data.target_amount;p&&f(r,p?.toString())}}catch(l){console.error("Error converting currency:",l)}},[S,f]),v=A(c=>g(c,e,n,"annual_gross_salary_conversion"),500),T=A(c=>g(c,n,e,i.name),500),O=t(c=>{a&&v(c.target.value)},"handleAnnualGrossSalaryChange"),E=t(c=>{T(c.target.value)},"handleConversionChange"),y=b?_(dt,{currency:n,description:o,showConversion:a,onClick:t(c=>{c.preventDefault(),m(C=>!C),!a&&d&&v(d)},"toggleConversion")}):o,{annual_gross_salary_conversion_properties:h}=i;return ye(gt,{children:[_(q,{...i,description:y,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",onChange:O}),a&&_(q,{name:"annual_gross_salary_conversion",label:h?.label||"Conversion",description:h?.description||"Estimated amount. This is an estimation. We calculate conversions based on spot rates that are subject to fluctuation over time.",type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",onChange:E})]})},"AnnualGrossSalary");export{Kt as a};
2
- //# sourceMappingURL=chunk-IG3FJLDR.js.map
1
+ import{m as N}from"./chunk-AN7L3GVL.js";import{a as q}from"./chunk-GFMFGU7A.js";import{b as M}from"./chunk-3ZWDIEEM.js";import{a as t,b as u,c as Se}from"./chunk-P37U34EQ.js";var F=u((pt,L)=>{"use strict";function Te(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}t(Te,"isObject");L.exports=Te});var W=u((vt,P)=>{"use strict";var he=typeof global=="object"&&global&&global.Object===Object&&global;P.exports=he});var w=u((yt,D)=>{"use strict";var Ce=W(),xe=typeof self=="object"&&self&&self.Object===Object&&self,je=Ce||xe||Function("return this")();D.exports=je});var $=u((St,B)=>{"use strict";var _e=w(),Oe=t(function(){return _e.Date.now()},"now");B.exports=Oe});var J=u((ht,H)=>{"use strict";var Ee=/\s/;function Re(e){for(var n=e.length;n--&&Ee.test(e.charAt(n)););return n}t(Re,"trimmedEndIndex");H.exports=Re});var V=u((xt,U)=>{"use strict";var qe=J(),Fe=/^\s+/;function we(e){return e&&e.slice(0,qe(e)+1).replace(Fe,"")}t(we,"baseTrim");U.exports=we});var I=u((_t,X)=>{"use strict";var Ie=w(),ke=Ie.Symbol;X.exports=ke});var Y=u((Ot,Q)=>{"use strict";var z=I(),K=Object.prototype,Ae=K.hasOwnProperty,Ge=K.toString,j=z?z.toStringTag:void 0;function Me(e){var n=Ae.call(e,j),o=e[j];try{e[j]=void 0;var i=!0}catch{}var a=Ge.call(e);return i&&(n?e[j]=o:delete e[j]),a}t(Me,"getRawTag");Q.exports=Me});var ee=u((Rt,Z)=>{"use strict";var Ne=Object.prototype,Le=Ne.toString;function Pe(e){return Le.call(e)}t(Pe,"objectToString");Z.exports=Pe});var oe=u((Ft,re)=>{"use strict";var te=I(),We=Y(),De=ee(),Be="[object Null]",$e="[object Undefined]",ne=te?te.toStringTag:void 0;function He(e){return e==null?e===void 0?$e:Be:ne&&ne in Object(e)?We(e):De(e)}t(He,"baseGetTag");re.exports=He});var ae=u((It,ie)=>{"use strict";function Je(e){return e!=null&&typeof e=="object"}t(Je,"isObjectLike");ie.exports=Je});var ce=u((At,se)=>{"use strict";var Ue=oe(),Ve=ae(),Xe="[object Symbol]";function ze(e){return typeof e=="symbol"||Ve(e)&&Ue(e)==Xe}t(ze,"isSymbol");se.exports=ze});var me=u((Mt,fe)=>{"use strict";var Ke=V(),ue=F(),Qe=ce(),le=NaN,Ye=/^[-+]0x[0-9a-f]+$/i,Ze=/^0b[01]+$/i,et=/^0o[0-7]+$/i,tt=parseInt;function nt(e){if(typeof e=="number")return e;if(Qe(e))return le;if(ue(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=ue(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=Ke(e);var o=Ze.test(e);return o||et.test(e)?tt(e.slice(2),o?2:8):Ye.test(e)?le:+e}t(nt,"toNumber");fe.exports=nt});var pe=u((Lt,ge)=>{"use strict";var rt=F(),k=$(),de=me(),ot="Expected a function",it=Math.max,at=Math.min;function st(e,n,o){var i,a,m,f,s,d,b=0,S=!1,g=!1,v=!0;if(typeof e!="function")throw new TypeError(ot);n=de(n)||0,rt(o)&&(S=!!o.leading,g="maxWait"in o,m=g?it(de(o.maxWait)||0,n):m,v="trailing"in o?!!o.trailing:v);function T(r){var l=i,p=a;return i=a=void 0,b=r,f=e.apply(p,l),f}t(T,"invokeFunc");function O(r){return b=r,s=setTimeout(y,n),S?T(r):f}t(O,"leadingEdge");function E(r){var l=r-d,p=r-b,G=n-l;return g?at(G,m-p):G}t(E,"remainingWait");function R(r){var l=r-d,p=r-b;return d===void 0||l>=n||l<0||g&&p>=m}t(R,"shouldInvoke");function y(){var r=k();if(R(r))return h(r);s=setTimeout(y,E(r))}t(y,"timerExpired");function h(r){return s=void 0,v&&i?T(r):(i=a=void 0,f)}t(h,"trailingEdge");function c(){s!==void 0&&clearTimeout(s),b=0,i=d=a=s=void 0}t(c,"cancel");function C(){return s===void 0?f:h(k())}t(C,"flush");function x(){var r=k(),l=R(r);if(i=arguments,a=this,d=r,l){if(s===void 0)return O(d);if(g)return clearTimeout(s),s=setTimeout(y,n),T(d)}return s===void 0&&(s=setTimeout(y,n)),f}return t(x,"debounced"),x.cancel=c,x.flush=C,x}t(st,"debounce");ge.exports=st});import{useState as lt,useCallback as ft}from"react";import{useFormContext as mt}from"react-hook-form";var ve=Se(pe(),1);import{useCallback as ct,useEffect as ut,useRef as be}from"react";function A(e,n){let o=be(e);ut(()=>{o.current=e},[e]);let i=be((0,ve.default)(a=>{o.current(a)},n)).current;return ct(a=>{i(a)},[i])}t(A,"useDebounce");import{Fragment as gt,jsx as _,jsxs as ye}from"react/jsx-runtime";var dt=t(({description:e,showConversion:n,currency:o,onClick:i})=>{let{components:a}=M(),m=n?`Hide ${o} conversion`:`Show ${o} conversion`,f=a?.button;return ye("span",{className:"RemoteFlows-AnnualGrossSalary-description",children:[e," ",f?_(f,{className:"RemoteFlows-AnnualGrossSalary-button","data-type":"inline",onClick:i,children:m}):_("button",{className:"RemoteFlows-AnnualGrossSalary-button",onClick:i,children:m})]})},"DescriptionWithConversion"),Kt=t(({currency:e,desiredCurrency:n,description:o,...i})=>{let[a,m]=lt(!1),{setValue:f,watch:s}=mt(),d=s(i.name),b=e&&n&&e!==n,{mutateAsync:S}=N(),g=ft(async(c,C,x,r)=>{if(c)try{let l=await S({source_currency:C,target_currency:x,amount:Number(c)});if(l.data?.data?.conversion_data?.target_amount){let p=l.data.data.conversion_data.target_amount;p&&f(r,p?.toString())}}catch(l){console.error("Error converting currency:",l)}},[S,f]),v=A(c=>g(c,e,n,"annual_gross_salary_conversion"),500),T=A(c=>g(c,n,e,i.name),500),O=t(c=>{a&&v(c.target.value)},"handleAnnualGrossSalaryChange"),E=t(c=>{T(c.target.value)},"handleConversionChange"),y=b?_(dt,{currency:n,description:o,showConversion:a,onClick:t(c=>{c.preventDefault(),m(C=>!C),!a&&d&&v(d)},"toggleConversion")}):o,{annual_gross_salary_conversion_properties:h}=i;return ye(gt,{children:[_(q,{...i,description:y,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",onChange:O}),a&&_(q,{name:"annual_gross_salary_conversion",label:h?.label||"Conversion",description:h?.description||"Estimated amount. This is an estimation. We calculate conversions based on spot rates that are subject to fluctuation over time.",type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",onChange:E})]})},"AnnualGrossSalary");export{Kt as a};
2
+ //# sourceMappingURL=chunk-RDAO365M.js.map
@@ -0,0 +1,2 @@
1
+ import{a as o}from"./chunk-P37U34EQ.js";function i(e){if(!e||!e.errors||typeof e.errors!="object")return[];let n=[];return Object.entries(e.errors).forEach(([t,a])=>{if(Array.isArray(a)){n.push({field:t,messages:a.map(r=>String(r))});return}a&&typeof a=="object"&&Object.entries(a).forEach(([r,s])=>{Array.isArray(s)&&n.push({field:r,messages:s.map(l=>String(l))})})}),n}o(i,"extractFieldErrors");function u(e){return{mutateAsync:o(n=>new Promise((t,a)=>{e.mutate(n,{onSuccess:o(r=>{if(r.data)t({data:r.data,error:null});else{let s=i(r.error);t({data:null,error:r.error?.message?new Error(r.error.message):new Error("Something went wrong. Please try again later."),rawError:r.error,fieldErrors:s})}},"onSuccess"),onError:o(r=>{let s=i(r);a({data:null,error:r,rawError:r,fieldErrors:s})},"onError")})}),"mutateAsync")}}o(u,"mutationToPromise");function d(e,n){return!e||e.length===0?[]:e.map(t=>{let r=n?.[t.field]?.label||t.field;return{...t,userFriendlyLabel:r,field:t.field,messages:t.messages}})}o(d,"normalizeFieldErrors");export{u as a,d as b};
2
+ //# sourceMappingURL=chunk-WRKHWEZA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/mutations.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { UseMutationResult } from '@tanstack/react-query';\n\ntype MutationData<T> =\n T extends UseMutationResult<infer R, any, any, any> ? R : never;\ntype MutationVariables<T> =\n T extends UseMutationResult<any, any, infer V, any> ? V : never;\ntype MutationError<T> =\n T extends UseMutationResult<any, infer E, any, any> ? E : never;\n\nexport interface SuccessResponse<D> {\n data: D;\n error: null;\n}\n\nexport interface FieldError {\n field: string;\n messages: string[];\n}\n\nexport interface ErrorResponse<E> {\n data: null;\n error: E;\n rawError: Record<string, unknown>;\n fieldErrors: FieldError[];\n}\n\ntype PromiseResult<D, E> = SuccessResponse<D> | ErrorResponse<E>;\n\n/**\n * Extracts field errors from error response into a structured format\n * @param error - The error response object\n * @returns Array of field errors with field name and messages\n */\nexport function extractFieldErrors(error: any): FieldError[] {\n if (!error || !error.errors || typeof error.errors !== 'object') return [];\n\n const fieldErrors: FieldError[] = [];\n\n Object.entries(error.errors).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n fieldErrors.push({\n field: key,\n messages: value.map((msg: any) => String(msg)),\n });\n return;\n }\n if (value && typeof value === 'object') {\n Object.entries(value).forEach(([nestedKey, nestedValue]) => {\n if (Array.isArray(nestedValue)) {\n fieldErrors.push({\n field: nestedKey,\n messages: nestedValue.map((msg: any) => String(msg)),\n });\n }\n });\n }\n });\n return fieldErrors;\n}\n/**\n * Converts a mutation to a promise-based API. We avoid using the\n * `mutateAsync` method from react-query for 2 reasons:\n * 1. We lose the isPending state of the mutation\n * 2. We want to return the data and error in a consistent way\n * (either data or error is null)\n * @param mutation\n * @returns\n */\nexport function mutationToPromise<\n T extends UseMutationResult<any, any, any, any>,\n>(mutation: T) {\n type Data = MutationData<T>;\n type Variables = MutationVariables<T>;\n type Error = MutationError<T>;\n\n return {\n mutateAsync: (values: Variables): Promise<PromiseResult<Data, Error>> => {\n return new Promise((resolve, reject) => {\n mutation.mutate(values, {\n onSuccess: (response) => {\n if (response.data) {\n resolve({\n data: response.data as Data,\n error: null,\n });\n } else {\n const fieldErrors = extractFieldErrors(response.error);\n resolve({\n data: null,\n error: response.error?.message\n ? (new Error(response.error.message) as unknown as Error)\n : (new Error(\n 'Something went wrong. Please try again later.',\n ) as unknown as Error),\n rawError: response.error,\n fieldErrors,\n });\n }\n },\n onError: (error) => {\n const fieldErrors = extractFieldErrors(error);\n reject({\n data: null,\n error: error as Error,\n rawError: error,\n fieldErrors,\n });\n },\n });\n });\n },\n };\n}\n\n/**\n * Enhanced FieldError interface with user-friendly labels\n */\nexport interface NormalizedFieldError extends FieldError {\n userFriendlyLabel: string;\n}\n\n/**\n * Utility function to normalize field errors using field metadata\n * @param fieldErrors - Array of field errors from API response\n * @param meta - Field metadata containing field names and labels\n * @returns Normalized field errors with user-friendly labels\n */\nexport function normalizeFieldErrors(\n fieldErrors: FieldError[],\n meta?: Record<string, { label?: string; prettyValue?: string | boolean }>,\n): NormalizedFieldError[] {\n if (!fieldErrors || fieldErrors.length === 0) {\n return [];\n }\n\n return fieldErrors.map((fieldError) => {\n const fieldMeta = meta?.[fieldError.field];\n const userFriendlyLabel = fieldMeta?.label || fieldError.field;\n\n return {\n ...fieldError,\n userFriendlyLabel,\n // Keep the original field name for form integration\n field: fieldError.field,\n messages: fieldError.messages,\n };\n });\n}\n"],"mappings":"wCAkCO,SAASA,EAAmBC,EAA0B,CAC3D,GAAI,CAACA,GAAS,CAACA,EAAM,QAAU,OAAOA,EAAM,QAAW,SAAU,MAAO,CAAC,EAEzE,IAAMC,EAA4B,CAAC,EAEnC,cAAO,QAAQD,EAAM,MAAM,EAAE,QAAQ,CAAC,CAACE,EAAKC,CAAK,IAAM,CACrD,GAAI,MAAM,QAAQA,CAAK,EAAG,CACxBF,EAAY,KAAK,CACf,MAAOC,EACP,SAAUC,EAAM,IAAKC,GAAa,OAAOA,CAAG,CAAC,CAC/C,CAAC,EACD,MACF,CACID,GAAS,OAAOA,GAAU,UAC5B,OAAO,QAAQA,CAAK,EAAE,QAAQ,CAAC,CAACE,EAAWC,CAAW,IAAM,CACtD,MAAM,QAAQA,CAAW,GAC3BL,EAAY,KAAK,CACf,MAAOI,EACP,SAAUC,EAAY,IAAKF,GAAa,OAAOA,CAAG,CAAC,CACrD,CAAC,CAEL,CAAC,CAEL,CAAC,EACMH,CACT,CAzBgBM,EAAAR,EAAA,sBAmCT,SAASS,EAEdC,EAAa,CAKb,MAAO,CACL,YAAaF,EAACG,GACL,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtCH,EAAS,OAAOC,EAAQ,CACtB,UAAWH,EAACM,GAAa,CACvB,GAAIA,EAAS,KACXF,EAAQ,CACN,KAAME,EAAS,KACf,MAAO,IACT,CAAC,MACI,CACL,IAAMZ,EAAcF,EAAmBc,EAAS,KAAK,EACrDF,EAAQ,CACN,KAAM,KACN,MAAOE,EAAS,OAAO,QAClB,IAAI,MAAMA,EAAS,MAAM,OAAO,EAChC,IAAI,MACH,+CACF,EACJ,SAAUA,EAAS,MACnB,YAAAZ,CACF,CAAC,CACH,CACF,EAnBW,aAoBX,QAASM,EAACP,GAAU,CAClB,IAAMC,EAAcF,EAAmBC,CAAK,EAC5CY,EAAO,CACL,KAAM,KACN,MAAOZ,EACP,SAAUA,EACV,YAAAC,CACF,CAAC,CACH,EARS,UASX,CAAC,CACH,CAAC,EAjCU,cAmCf,CACF,CA5CgBM,EAAAC,EAAA,qBA2DT,SAASM,EACdb,EACAc,EACwB,CACxB,MAAI,CAACd,GAAeA,EAAY,SAAW,EAClC,CAAC,EAGHA,EAAY,IAAKe,GAAe,CAErC,IAAMC,EADYF,IAAOC,EAAW,KAAK,GACJ,OAASA,EAAW,MAEzD,MAAO,CACL,GAAGA,EACH,kBAAAC,EAEA,MAAOD,EAAW,MAClB,SAAUA,EAAW,QACvB,CACF,CAAC,CACH,CApBgBT,EAAAO,EAAA","names":["extractFieldErrors","error","fieldErrors","key","value","msg","nestedKey","nestedValue","__name","mutationToPromise","mutation","values","resolve","reject","response","normalizeFieldErrors","meta","fieldError","userFriendlyLabel"]}
@@ -0,0 +1,2 @@
1
+ import{a as m}from"./chunk-QKTDO33H.js";import{b as a}from"./chunk-PGWKJ6FK.js";import{b as t}from"./chunk-WRKHWEZA.js";import{d as s}from"./chunk-MH6KKP6K.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as E}from"react/jsx-runtime";function P({components:d,onSubmit:l,onError:i,onSuccess:f}){let{onboardingBag:o}=a(),p=o.fields??[],c=s(p,o.initialValues.benefits);return E(m,{defaultValues:c,components:d,onSubmit:e(async n=>{try{await l?.(n);let r=await o.onSubmit(n);if(r?.data){await f?.(r.data),o?.next();return}if(r?.error){let u=t(r?.fieldErrors||[],o.meta?.fields?.benefits);i?.({error:r.error,rawError:r.rawError,fieldErrors:u})}}catch(r){i?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit")})}e(P,"BenefitsStep");export{P as a};
2
+ //# sourceMappingURL=chunk-X6DRD2I4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/BenefitsStep.tsx"],"sourcesContent":["import { Components } from '@/src/types/remoteFlows';\nimport { OnboardingForm } from '@/src/flows/Onboarding/OnboardingForm';\nimport { useOnboardingContext } from '@/src/flows/Onboarding/context';\nimport { SuccessResponse } from '@/src/client';\nimport { getInitialValues } from '@/src/components/form/utils';\nimport { BenefitsFormPayload } from '@/src/flows/Onboarding/types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n NormalizedFieldError,\n normalizeFieldErrors,\n} from '@/src/lib/mutations';\n\ntype BenefitsStepProps = {\n components?: Components;\n /**\n * Callback function to be called when the benefits form is submitted.\n * It can be used to perform any additional validation or processing before\n * the onboarding moves to the last step.\n * @param values\n * @returns\n */\n onSubmit?: (values: BenefitsFormPayload) => void | Promise<void>;\n /**\n * Callback function to be called when the submitting benefits form fails.\n * @param error\n * @returns\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n /**\n * Callback function to be called when benefits form is successfully submitted.\n * This function is called after the submitting benefits form is submitted.\n * @param data\n * @returns\n */\n onSuccess?: (data: SuccessResponse) => void | Promise<void>;\n};\n\nexport function BenefitsStep({\n components,\n onSubmit,\n onError,\n onSuccess,\n}: BenefitsStepProps) {\n const { onboardingBag } = useOnboardingContext();\n const fields = onboardingBag.fields ?? [];\n const initialValues = getInitialValues(\n fields,\n onboardingBag.initialValues.benefits,\n );\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(payload as BenefitsFormPayload);\n const response = await onboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response.data as SuccessResponse);\n onboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n onboardingBag.meta?.fields?.benefits,\n );\n onError?.({\n error: response.error,\n rawError: response.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n return (\n <OnboardingForm\n defaultValues={initialValues}\n components={components}\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"wMAwFI,cAAAA,MAAA,oBA3CG,SAASC,EAAa,CAC3B,WAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAAsB,CACpB,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAqB,EACzCC,EAASF,EAAc,QAAU,CAAC,EAClCG,EAAgBC,EACpBF,EACAF,EAAc,cAAc,QAC9B,EA+BA,OACEN,EAACW,EAAA,CACC,cAAeF,EACf,WAAYP,EACZ,SAjCiBU,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,MAAMV,IAAWU,CAA8B,EAC/C,IAAMC,EAAW,MAAMR,EAAc,SAASO,CAAO,EACrD,GAAIC,GAAU,KAAM,CAClB,MAAMT,IAAYS,EAAS,IAAuB,EAClDR,GAAe,KAAK,EACpB,MACF,CACA,GAAIQ,GAAU,MAAO,CACnB,IAAMC,EAAwBC,EAC5BF,GAAU,aAAe,CAAC,EAC1BR,EAAc,MAAM,QAAQ,QAC9B,EACAF,IAAU,CACR,MAAOU,EAAS,MAChB,SAAUA,EAAS,SACnB,YAAaC,CACf,CAAC,CACH,CACF,OAASE,EAAgB,CACvBb,IAAU,CACR,MAAOa,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EA3BqB,gBAkCnB,CAEJ,CAjDgBL,EAAAX,EAAA","names":["jsx","BenefitsStep","components","onSubmit","onError","onSuccess","onboardingBag","useOnboardingContext","fields","initialValues","getInitialValues","OnboardingForm","__name","payload","response","normalizedFieldErrors","normalizeFieldErrors","error"]}
@@ -0,0 +1,2 @@
1
+ import{a as p}from"./chunk-BYFO5OB6.js";import{a as i}from"./chunk-C3HJSV4T.js";import{a as f}from"./chunk-GPAE53HO.js";import{a as c}from"./chunk-ASFAGLQI.js";import{a as t}from"./chunk-7N7ND6Z4.js";import{a as r}from"./chunk-D53FKWGJ.js";import{a as m}from"./chunk-X6DRD2I4.js";import{a as s}from"./chunk-AOJAZ4FT.js";import{a}from"./chunk-VN4HDCRB.js";import{a as n}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{useId as I,useState as w}from"react";import{jsx as C}from"react/jsx-runtime";var E=e(({employmentId:d,companyId:S,countryCode:b,type:g="employee",skipSteps:u,render:l,options:B})=>{let O=I(),o=t({companyId:S,countryCode:b,employmentId:d,type:g,options:B,skipSteps:u}),[v,y]=w({showReserveInvoice:!1,showInviteSuccessful:!1});return C(n.Provider,{value:{formId:O,onboardingBag:o,creditScore:v,setCreditScore:y},children:l({onboardingBag:o,components:{BasicInformationStep:r,ContractDetailsStep:s,BenefitsStep:m,SubmitButton:i,BackButton:a,OnboardingInvite:p,SelectCountryStep:c,ReviewStep:f}})})},"OnboardingFlow");export{E as a};
2
+ //# sourceMappingURL=chunk-XQXFQ7LM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/OnboardingFlow.tsx"],"sourcesContent":["import React, { useId, useState } from 'react';\nimport { useOnboarding } from '@/src/flows/Onboarding/hooks';\nimport { BasicInformationStep } from '@/src/flows/Onboarding/BasicInformationStep';\nimport { OnboardingContext } from '@/src/flows/Onboarding/context';\nimport { OnboardingSubmit } from '@/src/flows/Onboarding/OnboardingSubmit';\nimport { OnboardingBack } from '@/src/flows/Onboarding/OnboardingBack';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { OnboardingInvite } from '@/src/flows/Onboarding/OnboardingInvite';\nimport { ContractDetailsStep } from '@/src/flows/Onboarding/ContractDetailsStep';\nimport { BenefitsStep } from '@/src/flows/Onboarding/BenefitsStep';\nimport { SelectCountryStep } from '@/src/flows/Onboarding/SelectCountryStep';\nimport { ReviewStep } from '@/src/flows/Onboarding/ReviewStep';\n\nexport type OnboardingRenderProps = {\n /**\n * The onboarding bag returned by the useOnboarding hook.\n * This bag contains all the methods and properties needed to handle the onboarding flow.\n * @see {@link useOnboarding}\n */\n onboardingBag: ReturnType<typeof useOnboarding>;\n /**\n * The components used in the onboarding flow.\n * This includes different steps, submit button, back button.\n * @see {@link BasicInformationStep}\n * @see {@link ContractDetailsStep}\n * @see {@link OnboardingSubmit}\n * @see {@link OnboardingBack}\n * @see {@link OnboardingInvite}\n * @see {@link BenefitsStep}\n * @see {@link OnboardingCreateReserve}\n * @see {@link InvitationSection}\n * @see {@link SelectCountryStep}\n * @see {@link ReviewStep}\n */\n components: {\n SubmitButton: typeof OnboardingSubmit;\n BackButton: typeof OnboardingBack;\n BasicInformationStep: typeof BasicInformationStep;\n OnboardingInvite: typeof OnboardingInvite;\n ContractDetailsStep: typeof ContractDetailsStep;\n BenefitsStep: typeof BenefitsStep;\n SelectCountryStep: typeof SelectCountryStep;\n ReviewStep: typeof ReviewStep;\n };\n};\n\ntype OnboardingFlowProps = OnboardingFlowParams & {\n render: ({\n onboardingBag,\n components,\n }: OnboardingRenderProps) => React.ReactNode;\n};\n\nexport const OnboardingFlow = ({\n employmentId,\n companyId,\n countryCode,\n type = 'employee',\n render,\n options,\n}: OnboardingFlowProps) => {\n const formId = useId();\n const onboardingBag = useOnboarding({\n companyId,\n countryCode,\n employmentId,\n type,\n options,\n });\n\n const [creditScore, setCreditScore] = useState<{\n showReserveInvoice: boolean;\n showInviteSuccessful: boolean;\n }>({\n showReserveInvoice: false,\n showInviteSuccessful: false,\n });\n\n return (\n <OnboardingContext.Provider\n value={{\n formId: formId,\n onboardingBag,\n creditScore,\n setCreditScore: setCreditScore,\n }}\n >\n {render({\n onboardingBag,\n components: {\n BasicInformationStep: BasicInformationStep,\n ContractDetailsStep: ContractDetailsStep,\n BenefitsStep: BenefitsStep,\n SubmitButton: OnboardingSubmit,\n BackButton: OnboardingBack,\n OnboardingInvite: OnboardingInvite,\n SelectCountryStep: SelectCountryStep,\n ReviewStep: ReviewStep,\n },\n })}\n </OnboardingContext.Provider>\n );\n};\n"],"mappings":"mbAAA,OAAgB,SAAAA,EAAO,YAAAC,MAAgB,QA+EnC,cAAAC,MAAA,oBA1BG,IAAMC,EAAiBC,EAAA,CAAC,CAC7B,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAC,EAAO,WACP,OAAAC,EACA,QAAAC,CACF,IAA2B,CACzB,IAAMC,EAASC,EAAM,EACfC,EAAgBC,EAAc,CAClC,UAAAR,EACA,YAAAC,EACA,aAAAF,EACA,KAAAG,EACA,QAAAE,CACF,CAAC,EAEK,CAACK,EAAaC,CAAc,EAAIC,EAGnC,CACD,mBAAoB,GACpB,qBAAsB,EACxB,CAAC,EAED,OACEf,EAACgB,EAAkB,SAAlB,CACC,MAAO,CACL,OAAQP,EACR,cAAAE,EACA,YAAAE,EACA,eAAgBC,CAClB,EAEC,SAAAP,EAAO,CACN,cAAAI,EACA,WAAY,CACV,qBAAsBM,EACtB,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,iBAAkBC,EAClB,kBAAmBC,EACnB,WAAYC,CACd,CACF,CAAC,EACH,CAEJ,EAjD8B","names":["useId","useState","jsx","OnboardingFlow","__name","employmentId","companyId","countryCode","type","render","options","formId","useId","onboardingBag","useOnboarding","creditScore","setCreditScore","useState","OnboardingContext","BasicInformationStep","ContractDetailsStep","BenefitsStep","OnboardingSubmit","OnboardingBack","OnboardingInvite","SelectCountryStep","ReviewStep"]}
1
+ {"version":3,"sources":["../src/flows/Onboarding/OnboardingFlow.tsx"],"sourcesContent":["import React, { useId, useState } from 'react';\nimport { useOnboarding } from '@/src/flows/Onboarding/hooks';\nimport { BasicInformationStep } from '@/src/flows/Onboarding/BasicInformationStep';\nimport { OnboardingContext } from '@/src/flows/Onboarding/context';\nimport { OnboardingSubmit } from '@/src/flows/Onboarding/OnboardingSubmit';\nimport { OnboardingBack } from '@/src/flows/Onboarding/OnboardingBack';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { OnboardingInvite } from '@/src/flows/Onboarding/OnboardingInvite';\nimport { ContractDetailsStep } from '@/src/flows/Onboarding/ContractDetailsStep';\nimport { BenefitsStep } from '@/src/flows/Onboarding/BenefitsStep';\nimport { SelectCountryStep } from '@/src/flows/Onboarding/SelectCountryStep';\nimport { ReviewStep } from '@/src/flows/Onboarding/ReviewStep';\n\nexport type OnboardingRenderProps = {\n /**\n * The onboarding bag returned by the useOnboarding hook.\n * This bag contains all the methods and properties needed to handle the onboarding flow.\n * @see {@link useOnboarding}\n */\n onboardingBag: ReturnType<typeof useOnboarding>;\n /**\n * The components used in the onboarding flow.\n * This includes different steps, submit button, back button.\n * @see {@link BasicInformationStep}\n * @see {@link ContractDetailsStep}\n * @see {@link OnboardingSubmit}\n * @see {@link OnboardingBack}\n * @see {@link OnboardingInvite}\n * @see {@link BenefitsStep}\n * @see {@link OnboardingCreateReserve}\n * @see {@link InvitationSection}\n * @see {@link SelectCountryStep}\n * @see {@link ReviewStep}\n */\n components: {\n SubmitButton: typeof OnboardingSubmit;\n BackButton: typeof OnboardingBack;\n BasicInformationStep: typeof BasicInformationStep;\n OnboardingInvite: typeof OnboardingInvite;\n ContractDetailsStep: typeof ContractDetailsStep;\n BenefitsStep: typeof BenefitsStep;\n SelectCountryStep: typeof SelectCountryStep;\n ReviewStep: typeof ReviewStep;\n };\n};\n\ntype OnboardingFlowProps = OnboardingFlowParams & {\n render: ({\n onboardingBag,\n components,\n }: OnboardingRenderProps) => React.ReactNode;\n};\n\nexport const OnboardingFlow = ({\n employmentId,\n companyId,\n countryCode,\n type = 'employee',\n skipSteps,\n render,\n options,\n}: OnboardingFlowProps) => {\n const formId = useId();\n const onboardingBag = useOnboarding({\n companyId,\n countryCode,\n employmentId,\n type,\n options,\n skipSteps,\n });\n\n const [creditScore, setCreditScore] = useState<{\n showReserveInvoice: boolean;\n showInviteSuccessful: boolean;\n }>({\n showReserveInvoice: false,\n showInviteSuccessful: false,\n });\n\n return (\n <OnboardingContext.Provider\n value={{\n formId: formId,\n onboardingBag,\n creditScore,\n setCreditScore: setCreditScore,\n }}\n >\n {render({\n onboardingBag,\n components: {\n BasicInformationStep: BasicInformationStep,\n ContractDetailsStep: ContractDetailsStep,\n BenefitsStep: BenefitsStep,\n SubmitButton: OnboardingSubmit,\n BackButton: OnboardingBack,\n OnboardingInvite: OnboardingInvite,\n SelectCountryStep: SelectCountryStep,\n ReviewStep: ReviewStep,\n },\n })}\n </OnboardingContext.Provider>\n );\n};\n"],"mappings":"mbAAA,OAAgB,SAAAA,EAAO,YAAAC,MAAgB,QAiFnC,cAAAC,MAAA,oBA5BG,IAAMC,EAAiBC,EAAA,CAAC,CAC7B,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAC,EAAO,WACP,UAAAC,EACA,OAAAC,EACA,QAAAC,CACF,IAA2B,CACzB,IAAMC,EAASC,EAAM,EACfC,EAAgBC,EAAc,CAClC,UAAAT,EACA,YAAAC,EACA,aAAAF,EACA,KAAAG,EACA,QAAAG,EACA,UAAAF,CACF,CAAC,EAEK,CAACO,EAAaC,CAAc,EAAIC,EAGnC,CACD,mBAAoB,GACpB,qBAAsB,EACxB,CAAC,EAED,OACEhB,EAACiB,EAAkB,SAAlB,CACC,MAAO,CACL,OAAQP,EACR,cAAAE,EACA,YAAAE,EACA,eAAgBC,CAClB,EAEC,SAAAP,EAAO,CACN,cAAAI,EACA,WAAY,CACV,qBAAsBM,EACtB,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,iBAAkBC,EAClB,kBAAmBC,EACnB,WAAYC,CACd,CACF,CAAC,EACH,CAEJ,EAnD8B","names":["useId","useState","jsx","OnboardingFlow","__name","employmentId","companyId","countryCode","type","skipSteps","render","options","formId","useId","onboardingBag","useOnboarding","creditScore","setCreditScore","useState","OnboardingContext","BasicInformationStep","ContractDetailsStep","BenefitsStep","OnboardingSubmit","OnboardingBack","OnboardingInvite","SelectCountryStep","ReviewStep"]}
@@ -8,7 +8,7 @@ import { ContractAmendmentParams } from './types.js';
8
8
  import '../../types.gen-D_v539E_.js';
9
9
  import 'react-hook-form';
10
10
  import 'react';
11
- import '../../mutations-v9H353tz.js';
11
+ import '../../mutations-B6HWH-rZ.js';
12
12
  import '@remoteoss/json-schema-form';
13
13
  import '../useStepState.js';
14
14
  import '../types.js';
@@ -1,2 +1,2 @@
1
- import{a}from"../../chunk-RIWPSA6V.js";import"../../chunk-RXK4RLF6.js";import"../../chunk-RC2UQDK7.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-KHZ2ITFO.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-CTTXXEWI.js";import"../../chunk-CSU6IQX3.js";import"../../chunk-RFYJGH2X.js";import"../../chunk-Z3HWTDRE.js";import"../../chunk-XO3JWN33.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-CFIJKJXD.js";import"../../chunk-GEYFQVQI.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-TVZAFTPT.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as ContractAmendmentFlow};
1
+ import{a}from"../../chunk-IEZAM2XO.js";import"../../chunk-RXK4RLF6.js";import"../../chunk-NIOH7TNP.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-WRKHWEZA.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-CTTXXEWI.js";import"../../chunk-CSU6IQX3.js";import"../../chunk-RFYJGH2X.js";import"../../chunk-Z3HWTDRE.js";import"../../chunk-XO3JWN33.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-CFIJKJXD.js";import"../../chunk-GEYFQVQI.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-TVZAFTPT.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as ContractAmendmentFlow};
2
2
  //# sourceMappingURL=ContractAmendmentFlow.js.map
@@ -1,4 +1,4 @@
1
- import { S as SuccessResponse, E as ErrorResponse } from '../../mutations-v9H353tz.js';
1
+ import { S as SuccessResponse, E as ErrorResponse } from '../../mutations-B6HWH-rZ.js';
2
2
  import { C as ContractAmendmentAutomatableResponse, P as PostAutomatableContractAmendmentError, a as ContractAmendmentResponse, b as PostCreateContractAmendmentError } from '../../types.gen-D_v539E_.js';
3
3
  import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
4
4
  import * as react from 'react';
@@ -1,4 +1,4 @@
1
- import { S as SuccessResponse, E as ErrorResponse } from '../../mutations-v9H353tz.js';
1
+ import { S as SuccessResponse, E as ErrorResponse } from '../../mutations-B6HWH-rZ.js';
2
2
  import { C as ContractAmendmentAutomatableResponse, P as PostAutomatableContractAmendmentError, a as ContractAmendmentResponse, b as PostCreateContractAmendmentError } from '../../types.gen-D_v539E_.js';
3
3
  import * as react from 'react';
4
4
  import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
@@ -1,2 +1,2 @@
1
- import{a}from"../../chunk-RC2UQDK7.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-KHZ2ITFO.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-P37U34EQ.js";export{a as useContractAmendment};
1
+ import{a}from"../../chunk-NIOH7TNP.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-WRKHWEZA.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-P37U34EQ.js";export{a as useContractAmendment};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -11,5 +11,5 @@ import 'react';
11
11
  import './types.js';
12
12
  import '../types.js';
13
13
  import '@remoteoss/json-schema-form';
14
- import '../../mutations-v9H353tz.js';
14
+ import '../../mutations-B6HWH-rZ.js';
15
15
  import '../useStepState.js';
@@ -1,2 +1,2 @@
1
- import"../../chunk-A7ZJQCNU.js";import{a as e}from"../../chunk-RIWPSA6V.js";import{a as c}from"../../chunk-RXK4RLF6.js";import{a as d}from"../../chunk-RC2UQDK7.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-KHZ2ITFO.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-CTTXXEWI.js";import{a}from"../../chunk-CSU6IQX3.js";import{a as b}from"../../chunk-RFYJGH2X.js";import"../../chunk-Z3HWTDRE.js";import"../../chunk-XO3JWN33.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-CFIJKJXD.js";import"../../chunk-GEYFQVQI.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-TVZAFTPT.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as ContractAmendmentConfirmationForm,e as ContractAmendmentFlow,b as ContractAmendmentForm,c as ContractAmendmentSubmit,d as useContractAmendment};
1
+ import"../../chunk-A7ZJQCNU.js";import{a as e}from"../../chunk-IEZAM2XO.js";import{a as c}from"../../chunk-RXK4RLF6.js";import{a as d}from"../../chunk-NIOH7TNP.js";import"../../chunk-LX7QBDSF.js";import"../../chunk-WRKHWEZA.js";import"../../chunk-5SMMQQXP.js";import"../../chunk-WKK63LAY.js";import"../../chunk-PJBAQZ6G.js";import"../../chunk-CTTXXEWI.js";import{a}from"../../chunk-CSU6IQX3.js";import{a as b}from"../../chunk-RFYJGH2X.js";import"../../chunk-Z3HWTDRE.js";import"../../chunk-XO3JWN33.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-CFIJKJXD.js";import"../../chunk-GEYFQVQI.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-TVZAFTPT.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as ContractAmendmentConfirmationForm,e as ContractAmendmentFlow,b as ContractAmendmentForm,c as ContractAmendmentSubmit,d as useContractAmendment};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../../chunk-IG3FJLDR.js";import"../../chunk-RWYOUDM5.js";import"../../chunk-WVJDCDGZ.js";import"../../chunk-PWUYHFON.js";import"../../chunk-WKK63LAY.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as AnnualGrossSalary};
1
+ import{a}from"../../chunk-RDAO365M.js";import"../../chunk-AN7L3GVL.js";import"../../chunk-WVJDCDGZ.js";import"../../chunk-PWUYHFON.js";import"../../chunk-WKK63LAY.js";import"../../chunk-GFMFGU7A.js";import"../../chunk-3ZWDIEEM.js";import"../../chunk-VNSF5IOL.js";import"../../chunk-MH6KKP6K.js";import"../../chunk-KPHSEIR3.js";import"../../chunk-P37U34EQ.js";export{a as AnnualGrossSalary};
2
2
  //# sourceMappingURL=AnnualGrossSalary.js.map
@@ -1,13 +1,18 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { BasicInformationFormPayload } from './types.js';
3
3
  import { l as EmploymentCreationResponse } from '../../types.gen-D_v539E_.js';
4
+ import { N as NormalizedFieldError } from '../../mutations-B6HWH-rZ.js';
4
5
  import '../types.js';
5
6
  import '@remoteoss/json-schema-form';
6
7
 
7
8
  type BasicInformationStepProps = {
8
9
  onSubmit?: (payload: BasicInformationFormPayload) => void | Promise<void>;
9
10
  onSuccess?: (data: EmploymentCreationResponse) => void | Promise<void>;
10
- onError?: (error: Error) => void;
11
+ onError?: ({ error, rawError, fieldErrors, }: {
12
+ error: Error;
13
+ rawError: Record<string, unknown>;
14
+ fieldErrors: NormalizedFieldError[];
15
+ }) => void;
11
16
  };
12
17
  declare function BasicInformationStep({ onSubmit, onSuccess, onError, }: BasicInformationStepProps): react_jsx_runtime.JSX.Element;
13
18