@remoteoss/remote-flows 1.42.0 → 1.42.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DatePickerFieldDefault-EUPACNZD.js → DatePickerFieldDefault-XMG6ZDVQ.js} +2 -2
- package/dist/{RadioGroupFieldDefault-XR37OID5.js → RadioGroupFieldDefault-X3HP3BDR.js} +2 -2
- package/dist/chunk-3BRO52TO.js +2 -0
- package/dist/chunk-3BRO52TO.js.map +1 -0
- package/dist/{chunk-44F5FY7C.js → chunk-3DD3UNKM.js} +2 -2
- package/dist/{chunk-T7QVVLKT.js → chunk-3GB6QH7W.js} +2 -2
- package/dist/{chunk-3U4PZ4KB.js → chunk-3QG44XYC.js} +2 -2
- package/dist/{chunk-C332PSLT.js → chunk-3YP27SZK.js} +2 -2
- package/dist/chunk-5LJ5IFXF.js +2 -0
- package/dist/chunk-5LJ5IFXF.js.map +1 -0
- package/dist/chunk-6JW4ERRK.js +2 -0
- package/dist/chunk-6JW4ERRK.js.map +1 -0
- package/dist/{chunk-W4BOTAD6.js → chunk-ARNYUYFG.js} +2 -2
- package/dist/{chunk-QKSYPFRB.js → chunk-BSOKKYGH.js} +2 -2
- package/dist/{chunk-4RVJJ33G.js → chunk-C3J4KQEW.js} +2 -2
- package/dist/chunk-DAFIBCX4.js +2 -0
- package/dist/chunk-DAFIBCX4.js.map +1 -0
- package/dist/{chunk-QGC2HCZG.js → chunk-DS6URMR3.js} +2 -2
- package/dist/{chunk-YPLIXSIP.js → chunk-E2463GRM.js} +2 -2
- package/dist/{chunk-YPLIXSIP.js.map → chunk-E2463GRM.js.map} +1 -1
- package/dist/{chunk-SJO4XFQD.js → chunk-FMP4J4GT.js} +2 -2
- package/dist/{chunk-TWULMMMY.js → chunk-GYSU3LLC.js} +2 -2
- package/dist/{chunk-LES7J6H4.js → chunk-HGY2ZKJN.js} +2 -2
- package/dist/{chunk-VCF327FJ.js → chunk-IOGX6GAZ.js} +2 -2
- package/dist/{chunk-GR6QMP4Z.js → chunk-LWTE6DD4.js} +2 -2
- package/dist/{chunk-WTVYMT5N.js → chunk-PDQ5GZSE.js} +2 -2
- package/dist/{chunk-YADHCTR7.js → chunk-PXU2LCFW.js} +2 -2
- package/dist/{chunk-LXNEYPO5.js → chunk-RLFV5DLC.js} +2 -2
- package/dist/{chunk-QQ3PZHXO.js → chunk-RU5E42WN.js} +2 -2
- package/dist/{chunk-XEK3MUYF.js → chunk-SRGB5JQU.js} +2 -2
- package/dist/{chunk-HYNJ3ITY.js → chunk-SRXYQVLN.js} +2 -2
- package/dist/{chunk-XS5ASVWY.js → chunk-TM2GTPUI.js} +2 -2
- package/dist/{chunk-FJGDFNEH.js → chunk-TWBTRW4Z.js} +2 -2
- package/dist/{chunk-XGXXXWTH.js → chunk-XT6WMFV5.js} +2 -2
- package/dist/chunk-YRNO7X3H.js +2 -0
- package/dist/chunk-YRNO7X3H.js.map +1 -0
- package/dist/{chunk-MG6UYSCR.js → chunk-YYX3OX7N.js} +2 -2
- package/dist/{chunk-UJWKHGH5.js → chunk-ZQWAUPIL.js} +2 -2
- package/dist/{chunk-F74X2V2N.js → chunk-ZVNUZW4X.js} +2 -2
- package/dist/default-components.d.ts +2 -2
- package/dist/default-components.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +3 -3
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/ContractAmendment/types.d.ts +2 -2
- package/dist/flows/ContractAmendment/utils.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
- package/dist/flows/ContractorOnboarding/api.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/api.js +1 -1
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractOriginStep.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/ContractPreviewHeader.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStatement.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/context.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.js +1 -1
- package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/index.js +1 -1
- package/dist/flows/ContractorOnboarding/jsfModify.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/jsfModify.js +1 -1
- package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/utils.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/utils.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -2
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -2
- package/dist/flows/CostCalculator/api.d.ts +2 -2
- package/dist/flows/CostCalculator/api.js +1 -1
- package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
- package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
- package/dist/flows/CostCalculator/context.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.js +1 -1
- package/dist/flows/CostCalculator/index.d.ts +3 -3
- package/dist/flows/CostCalculator/index.js +1 -1
- package/dist/flows/CostCalculator/types.d.ts +2 -2
- package/dist/flows/CostCalculator/utils.d.ts +3 -3
- package/dist/flows/CostCalculator/utils.js +1 -1
- package/dist/flows/CreateCompany/CreateCompany.d.ts +4 -4
- package/dist/flows/CreateCompany/CreateCompany.js +1 -1
- package/dist/flows/CreateCompany/api.d.ts +2 -2
- package/dist/flows/CreateCompany/api.js +1 -1
- package/dist/flows/CreateCompany/components/AddressDetailsStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CreateCompanyForm.d.ts +2 -2
- package/dist/flows/CreateCompany/context.d.ts +4 -4
- package/dist/flows/CreateCompany/hooks.d.ts +4 -4
- package/dist/flows/CreateCompany/hooks.js +1 -1
- package/dist/flows/CreateCompany/index.d.ts +4 -4
- package/dist/flows/CreateCompany/index.js +1 -1
- package/dist/flows/CreateCompany/types.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/api.d.ts +4 -4
- package/dist/flows/Onboarding/api.js +1 -1
- package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
- package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
- package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/EmploymentAgreementInfoContent.js +1 -1
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/Onboarding/components/PreOnboardingRequirements.d.ts +4 -4
- package/dist/flows/Onboarding/components/PreOnboardingRequirements.js +1 -1
- package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/Onboarding/context.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.js +1 -1
- package/dist/flows/Onboarding/index.d.ts +4 -4
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/types.d.ts +4 -4
- package/dist/flows/Onboarding/utils.d.ts +4 -4
- package/dist/flows/PayrollAdminOnboarding/PayrollAdminOnboardingFlow.d.ts +3 -3
- package/dist/flows/PayrollAdminOnboarding/context.d.ts +3 -3
- package/dist/flows/PayrollAdminOnboarding/hooks.d.ts +3 -3
- package/dist/flows/PayrollAdminOnboarding/index.d.ts +3 -3
- package/dist/flows/PayrollAdminOnboarding/types.d.ts +3 -3
- package/dist/flows/PayrollEmployeeOnboarding/PayrollEmployeeOnboardingFlow.d.ts +3 -3
- package/dist/flows/PayrollEmployeeOnboarding/context.d.ts +3 -3
- package/dist/flows/PayrollEmployeeOnboarding/hooks.d.ts +3 -3
- package/dist/flows/PayrollEmployeeOnboarding/index.d.ts +3 -3
- package/dist/flows/PayrollEmployeeOnboarding/types.d.ts +3 -3
- package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/TerminationForm.d.ts +4 -4
- package/dist/flows/Termination/api.d.ts +5 -5
- package/dist/flows/Termination/api.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +6 -6
- package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
- package/dist/flows/Termination/context.d.ts +4 -4
- package/dist/flows/Termination/hooks.d.ts +4 -4
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +6 -6
- package/dist/flows/Termination/index.js +1 -1
- package/dist/flows/Termination/json-schemas/schema.d.ts +4 -4
- package/dist/flows/Termination/types.d.ts +4 -4
- package/dist/flows/Termination/utils.d.ts +4 -4
- package/dist/flows/types.d.ts +2 -2
- package/dist/flows/utils.d.ts +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +13 -13
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +3 -3
- package/dist/internals.js +1 -1
- package/dist/{mutations-HzXri7rU.d.ts → mutations-Bb4S8J29.d.ts} +1 -1
- package/dist/{remoteFlows-D6N3P-Z8.d.ts → remoteFlows-CZEN0YS9.d.ts} +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/{types-SOAhi2Xb.d.ts → types-BjDBV8pu.d.ts} +1 -1
- package/dist/{types-BA5HatKg.d.ts → types-CBDzsY3a.d.ts} +1 -1
- package/dist/{types-CKY2s5Tl.d.ts → types-CBkHhvbz.d.ts} +5 -4
- package/dist/{types-BxGIDgr8.d.ts → types-DuPw8mPr.d.ts} +2 -2
- package/dist/{types-OIG1NWJB.d.ts → types-DvNZcY-b.d.ts} +3 -3
- package/dist/{types-PiIfh75U.d.ts → types-QvgO54zG.d.ts} +1 -1
- package/dist/{types-CeMJCc7f.d.ts → types-cBDclXLf.d.ts} +3 -3
- package/dist/{types.gen-DCswUxeu.d.ts → types.gen-rKTincuW.d.ts} +1 -1
- package/dist/{utils-VhDQSRx8.d.ts → utils-Cexn9XOb.d.ts} +1 -1
- package/package.json +2 -2
- package/dist/chunk-4LQDSIUG.js +0 -2
- package/dist/chunk-4LQDSIUG.js.map +0 -1
- package/dist/chunk-6WGW27VH.js +0 -2
- package/dist/chunk-6WGW27VH.js.map +0 -1
- package/dist/chunk-LKVQ32ZK.js +0 -2
- package/dist/chunk-LKVQ32ZK.js.map +0 -1
- package/dist/chunk-NZHABET6.js +0 -2
- package/dist/chunk-NZHABET6.js.map +0 -1
- package/dist/chunk-VUQH44VX.js +0 -2
- package/dist/chunk-VUQH44VX.js.map +0 -1
- /package/dist/{DatePickerFieldDefault-EUPACNZD.js.map → DatePickerFieldDefault-XMG6ZDVQ.js.map} +0 -0
- /package/dist/{RadioGroupFieldDefault-XR37OID5.js.map → RadioGroupFieldDefault-X3HP3BDR.js.map} +0 -0
- /package/dist/{chunk-44F5FY7C.js.map → chunk-3DD3UNKM.js.map} +0 -0
- /package/dist/{chunk-T7QVVLKT.js.map → chunk-3GB6QH7W.js.map} +0 -0
- /package/dist/{chunk-3U4PZ4KB.js.map → chunk-3QG44XYC.js.map} +0 -0
- /package/dist/{chunk-C332PSLT.js.map → chunk-3YP27SZK.js.map} +0 -0
- /package/dist/{chunk-W4BOTAD6.js.map → chunk-ARNYUYFG.js.map} +0 -0
- /package/dist/{chunk-QKSYPFRB.js.map → chunk-BSOKKYGH.js.map} +0 -0
- /package/dist/{chunk-4RVJJ33G.js.map → chunk-C3J4KQEW.js.map} +0 -0
- /package/dist/{chunk-QGC2HCZG.js.map → chunk-DS6URMR3.js.map} +0 -0
- /package/dist/{chunk-SJO4XFQD.js.map → chunk-FMP4J4GT.js.map} +0 -0
- /package/dist/{chunk-TWULMMMY.js.map → chunk-GYSU3LLC.js.map} +0 -0
- /package/dist/{chunk-LES7J6H4.js.map → chunk-HGY2ZKJN.js.map} +0 -0
- /package/dist/{chunk-VCF327FJ.js.map → chunk-IOGX6GAZ.js.map} +0 -0
- /package/dist/{chunk-GR6QMP4Z.js.map → chunk-LWTE6DD4.js.map} +0 -0
- /package/dist/{chunk-WTVYMT5N.js.map → chunk-PDQ5GZSE.js.map} +0 -0
- /package/dist/{chunk-YADHCTR7.js.map → chunk-PXU2LCFW.js.map} +0 -0
- /package/dist/{chunk-LXNEYPO5.js.map → chunk-RLFV5DLC.js.map} +0 -0
- /package/dist/{chunk-QQ3PZHXO.js.map → chunk-RU5E42WN.js.map} +0 -0
- /package/dist/{chunk-XEK3MUYF.js.map → chunk-SRGB5JQU.js.map} +0 -0
- /package/dist/{chunk-HYNJ3ITY.js.map → chunk-SRXYQVLN.js.map} +0 -0
- /package/dist/{chunk-XS5ASVWY.js.map → chunk-TM2GTPUI.js.map} +0 -0
- /package/dist/{chunk-FJGDFNEH.js.map → chunk-TWBTRW4Z.js.map} +0 -0
- /package/dist/{chunk-XGXXXWTH.js.map → chunk-XT6WMFV5.js.map} +0 -0
- /package/dist/{chunk-MG6UYSCR.js.map → chunk-YYX3OX7N.js.map} +0 -0
- /package/dist/{chunk-UJWKHGH5.js.map → chunk-ZQWAUPIL.js.map} +0 -0
- /package/dist/{chunk-F74X2V2N.js.map → chunk-ZVNUZW4X.js.map} +0 -0
package/dist/chunk-4LQDSIUG.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as ae,b as pe,c as me,d as fe,e as ye,f as _e,g as ge,i as be,j as Ce,k as Se,l as we,m as ve,n as he,o as Pe,p as Ee,q as Oe,r as Ve,s as Fe,t as Me,u as De,v as Ie,w as Ae,x as ke}from"./chunk-XGXXXWTH.js";import{a as Re,b as Te,c as qe}from"./chunk-YADHCTR7.js";import{a as se,b as ce,f as le,g as ue,h as de}from"./chunk-YPLIXSIP.js";import{a as Y,b as st,c as f,d as re,g as oe}from"./chunk-PB6UQ4A4.js";import{a as ne}from"./chunk-GNDFT5KG.js";import{f as Zt,h as te,i as ee}from"./chunk-W4BOTAD6.js";import{Q as Yt}from"./chunk-BYDNNJHZ.js";import{a as $t,b,d as zt,h as m,i as M,u as D,v}from"./chunk-G2LZFGZA.js";import{a as ie}from"./chunk-JDIKYCN6.js";import{e as Xt}from"./chunk-H2O4CVKF.js";import{a as p}from"./chunk-P37U34EQ.js";import{useEffect as I,useMemo as a,useRef as je,useState as A}from"react";import xe from"lodash.omit";import{useQuery as Ln}from"@tanstack/react-query";var jn=p(()=>{let{client:j}=Xt(),{data:q}=pe(),d=me(q)?q?.company?.id??"":"";return Ln({queryKey:["legal-entities",d],queryFn:p(()=>Yt({client:j,path:{company_id:d},query:{page_size:100}}),"queryFn"),select:p(x=>x.data?.data?.legal_entities,"select"),enabled:!!d})},"useLegalEntities"),Le=p(()=>{let{data:j}=jn();return j?.find(q=>q.is_default)},"useDefaultLegalEntity");var xn={select_country:null,basic_information:"employment_basic_information",contract_origin:null,contract_details:null,eligibility_questionnaire:null,pricing_plan:null,contract_preview:null,review:null},Bn={employment_basic_information:"basic_information"},gi=p(({countryCode:j,externalId:q,employmentId:d,skipSteps:x,options:y,initialValues:l})=>{let Be=y?.excludeProducts||[],gt=je(y?.onContractReviewed);I(()=>{gt.current=y?.onContractReviewed},[y?.onContractReviewed]);let[u,bt]=A(j||null),[r,Qe]=A(d),[g,Ct]=A(void 0),Z=je({select_country:{},basic_information:{},contract_origin:{},contract_details:{},contract_preview:{},pricing_plan:{},eligibility_questionnaire:{}}),[tt,Ne]=A(void 0),[St,wt]=A(!1),[vt,Je]=A(!0),[ht,Ue]=A(!0),[ct,Pt]=A(null),{steps:Ke,stepsArray:Ge}=a(()=>se({includeSelectCountry:!x?.includes("select_country"),includeContractOrigin:!x?.includes("contract_origin"),includeEligibilityQuestionnaire:St,includeContractDetails:ht,includeContractPreview:vt}),[St,ht,vt,x]),{fieldValues:s,stepState:e,setFieldValues:Et,previousStep:He,nextStep:We,goToStep:B,setStepValues:Ot}=ie(Ke);I(()=>{ct&&(B(ct),Pt(null))},[ct,B]);let{data:o,isLoading:$e,refetch:Vt}=ne({employmentId:r,queryParams:{exclude_files:!0}}),ze=Le(),{data:Ft}=ke({options:{queryOptions:{enabled:e.currentStep.name==="review"}}}),{status:k}=o||{},h=k&&le.includes(k),Xe=k&&!ue.includes(k),Ye=a(()=>k&&["invited","initiated"].includes(k)?"invited":"not_invited",[k]),Mt=te(),Dt=ee(u,y),lt=Ce(),It=ae(),{mutateAsync:At}=ve(lt,It,s),kt=Oe(),Rt=Ve(),Tt=Me(),{mutateAsyncOrThrow:Ze}=b(Dt),qt=ye(),Lt=be(),jt=Fe(),{mutateAsyncOrThrow:tn}=b(Mt),{mutateAsyncOrThrow:en}=b(lt),{mutateAsyncOrThrow:nn}=b(qt),{mutateAsyncOrThrow:xt}=b(Lt),{mutateAsyncOrThrow:rn}=b(kt),{mutateAsyncOrThrow:Bt}=b(Rt),{mutateAsyncOrThrow:on}=b(jt),{mutateAsyncOrThrow:an}=b(Tt);d&&o?.country?.code&&!u&&bt(o.country.code);let{selectCountryForm:Q,isLoading:sn,countries:Qt}=Ie({jsfModify:y?.jsfModify?.select_country}),ut=a(()=>Qt?.find(t=>t.value===u),[Qt,u]),cn=a(()=>ut?.label,[ut]),ln=e.currentStep.name==="pricing_plan"||!!d&&h,{form:P,isLoading:un,contractorSubscriptions:et,filteredContractorSubscriptions:N,refetch:dt,isEligibilityQuestionnaireBlocked:J}=we(r,ut,{jsonSchemaVersion:y?.jsonSchemaVersion,queryOptions:{enabled:ln},excludeProducts:Be,jsfModify:y?.jsfModify?.pricing_plan}),R=a(()=>!!et?.find(t=>t.product.identifier===f)?.eligibility_questionnaire?.submitted_at,[et]),Nt=a(()=>R?!1:tt===f,[R,tt]),Jt=o?.contractor_type!=="cor",L=(s.contract_origin??e.values?.contract_origin?.contract_origin??o?.contract_details?.contract_origin)==="provided_by_customer";I(()=>{Ue(!L)},[L]),I(()=>{wt(!L&&Nt)},[L,Nt]),I(()=>{Je(!L&&Jt)},[L,Jt]);let nt=a(()=>et?.find(t=>t.product.identifier===f)?.eligibility_questionnaire?.responses,[et]),dn=xn[e.currentStep.name]||"contractor_basic_information",pn=Bn[dn],mn=o?.[pn]||{},fn=p(({form:t,options:i={},query:c={}})=>{let F=Object.keys(s).length>0?{...l,...e.values?.[e.currentStep.name],...s}:{...l,...mn};return Zt({countryCode:u,form:t,fieldValues:F,query:c,options:{...i,queryOptions:{enabled:i.queryOptions?.enabled??!0}}})},"useJSONSchema"),yn=!!(u&&(e.currentStep.name==="basic_information"||d)),_n=!!(u==="GBR"&&d&&e.currentStep.name==="basic_information"),{data:U,isLoading:gn}=he(d,{enabled:_n}),{data:it,isLoading:bn}=Pe(r,{enabled:!!r});I(()=>{it&&it.length>0&&!g&&Ct(it[0].id)},[it,g]);let{data:C,isLoading:Cn}=fn({form:"contractor_basic_information",options:{jsfModify:Te(u,cn,y),queryOptions:{enabled:yn}}}),Sn=a(()=>ce(o?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date),[o?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date]),_=a(()=>{let t={standard:Y,plus:st,cor:f};if(s.subscription)return s.subscription;let i=e.values?.pricing_plan?.subscription;if(i&&!J)return i;if(R&&!J)return f;if(J&&R)return Y;if(N&&N.length>0)return t[o?.contractor_type]||Y},[s,e.values,R,o?.contractor_type,J,N]);I(()=>{_&&_!==tt&&Ne(_)},[_,tt]);let wn=a(()=>({...nt,...l,...e.values?.eligibility_questionnaire,...s}),[nt,l,e.values?.eligibility_questionnaire,s]),vn=a(()=>_===f&&e.currentStep.name==="eligibility_questionnaire"||!!d&&h&&_===f,[_,e.currentStep.name,d,h]),{data:E,isLoading:hn}=Ee({options:{queryOptions:{enabled:vn},jsfModify:y?.jsfModify?.eligibility_questionnaire},fieldValues:wn}),Pn=!!(u&&e.currentStep.name==="contract_details"||h),{data:S,isLoading:En}=Ae({countryCode:u,fieldValues:s,employmentId:r,options:{queryOptions:{enabled:Pn},jsfModify:Re(y?.jsfModify?.contract_details,Sn,_,s,_===f)}}),On=a(()=>e.currentStep.name==="contract_preview"||!!d&&h,[e.currentStep.name,d,h]),{data:O}=fe({fieldValues:s,options:{queryOptions:{enabled:On},jsfModify:qe(y,s)}}),{data:V}=De({fieldValues:s}),{data:pt,isLoading:Vn,refetch:Fn}=_e({employmentId:r,contractDocumentId:g,options:{queryOptions:{enabled:!!g}}}),{hasCompanySignedContract:Mn}=ge({employmentId:r,contractDocumentId:g,options:{queryOptions:{enabled:!!g}}}),n=a(()=>({select_country:Q?.fields||[],basic_information:C?.fields||[],contract_origin:V?.fields||[],pricing_plan:P?.fields||[],eligibility_questionnaire:E?.fields||[],contract_details:S?.fields||[],contract_preview:O?.fields||[],review:[]}),[Q?.fields,C?.fields,V?.fields,P?.fields,S?.fields,O?.fields,E?.fields]),Dn={select_country:null,basic_information:C?.meta["x-jsf-fieldsets"],contract_origin:null,pricing_plan:null,contract_details:S?.meta["x-jsf-fieldsets"],eligibility_questionnaire:null,contract_preview:null,review:null},In={select_country:Q?.meta?.["x-jsf-presentation"],basic_information:C?.meta?.["x-jsf-presentation"],contract_origin:V?.meta?.["x-jsf-presentation"],pricing_plan:P?.meta?.["x-jsf-presentation"],eligibility_questionnaire:E?.meta?.["x-jsf-presentation"],contract_details:S?.meta?.["x-jsf-presentation"],contract_preview:O?.meta?.["x-jsf-presentation"],review:null},{country:An,basic_information:rt={},contract_details:Ut={}}=o||{},Kt=An?.code,K=a(()=>M(n.select_country,{country:u||Kt||""}),[n.select_country,u,Kt]),mt=a(()=>U?.content?zt(U.content,U.name):null,[U?.content,U?.name]),G=a(()=>{let t={...l,...rt,ir35:o?.contract_details?.ir_35,nationality_status:o?.contract_details?.nationality,...mt&&{ir35_sds_file:[mt]}};return M(n.basic_information,t)},[l,rt,o?.contract_details?.ir_35,o?.contract_details?.nationality,mt,n.basic_information]),Gt=a(()=>{let t={...l,contract_origin:o?.contract_details?.contract_origin};return M(n.contract_origin,t)},[n.contract_origin,l,o?.contract_details?.contract_origin]),H=a(()=>{let i={...{service_duration:{provisional_start_date:rt.provisional_start_date}},...l,...Ut};return M(n.contract_details,i)},[n.contract_details,Ut,l,rt]),W=a(()=>{let t=pt?.contract_document?.signatories?.find(c=>c.type==="company"),i={...l,signature:t?.signature};return M(n.contract_preview,i)},[n.contract_preview,l,pt]),$=a(()=>{let i={...{subscription:_},...l};return M(n.pricing_plan,i)},[n.pricing_plan,l,_]),z=a(()=>{let t={...l,...nt};return M(n.eligibility_questionnaire,t)},[n.eligibility_questionnaire,l,nt]),kn=a(()=>({select_country:K,basic_information:G,contract_origin:Gt,contract_details:H,contract_preview:W,pricing_plan:$,eligibility_questionnaire:z}),[K,G,Gt,H,W,$,z]),ft=!!(d&&h&&e.currentStep.name!=="review"),yt=sn||Cn||$e||En||un||Vn||gn||bn||hn,Ht=a(()=>{let i=o?.contractor_type==="cor"||n.contract_preview.length>0;return!!(ft&&!yt&&g&&n.basic_information.length>0&&n.contract_details.length>0&&i)},[ft,yt,g,n.basic_information.length,n.contract_details.length,n.contract_preview.length,o?.contractor_type]);I(()=>{Ht&&(Z.current={select_country:D(K,n.select_country,{skipMoneyConversion:!0}),basic_information:D(G,n.basic_information,{skipMoneyConversion:!0}),contract_origin:{},contract_details:D(H,n.contract_details,{skipMoneyConversion:!0}),contract_preview:D(W,n.contract_preview,{skipMoneyConversion:!0}),pricing_plan:D($,n.pricing_plan,{skipMoneyConversion:!0}),eligibility_questionnaire:D(z,n.eligibility_questionnaire,{skipMoneyConversion:!0})},Ot({select_country:K,basic_information:G,contract_origin:{},contract_details:H,contract_preview:W,pricing_plan:$,eligibility_questionnaire:z,review:{}}),B("review"))},[Ht,B,K,G,H,Ot,n.select_country,n.basic_information,n.contract_details,n.pricing_plan,$,n.contract_preview,W,n.eligibility_questionnaire,z]);let Rn=p(t=>{B(t)},"goTo"),Wt=p(async t=>Q&&e.currentStep.name==="select_country"?t:C&&e.currentStep.name==="basic_information"?await m(t,C?.fields,{isPartialValidation:!1}):S&&e.currentStep.name==="contract_details"?await m(t,S?.fields,{isPartialValidation:!1}):O&&e.currentStep.name==="contract_preview"?await m(t,O?.fields,{isPartialValidation:!1}):P&&e.currentStep.name==="pricing_plan"?await m(t,P?.fields,{isPartialValidation:!1}):E&&e.currentStep.name==="eligibility_questionnaire"?await m(t,E?.fields,{isPartialValidation:!1}):V&&e.currentStep.name==="contract_origin"?await m(t,V?.fields,{isPartialValidation:!1}):{},"parseFormValues"),Tn=p(t=>{if(!$t(t))return null;let i=t.normalizedErrors.services_and_deliverables,c=Array.isArray(i)?i[0]:i;return c?.source===oe?{error:c.error,source:c.source,skippable:c.skippable}:null},"extractAiValidationError");async function qn(t){let i=e.currentStep.name,c=await Wt(t);switch(i in Z.current&&(Z.current[i]=D(c,n[i])),e.currentStep.name){case"select_country":return bt(c.country),Promise.resolve({data:{countryCode:c.country}});case"basic_information":{let T=!r&&u,F=r&&u&&o?.country&&o?.country.code!==u;if(T||F){let _t={basic_information:xe(c,"nationality_status","ir35","ir35_sds_file"),type:"contractor",country_code:u,external_id:q},at=await tn(_t),w=at?.data?.employment?.id;if(!w)throw v("Employment ID not found");return await At({employmentId:w}),Qe(w),at}else if(r){let ot=xe(c,"nationality_status","ir35","ir35_sds_file");return await At({employmentId:r}),Ze({employmentId:r,basic_information:ot})}return}case"contract_details":{let{services_and_deliverables_ai_warning:T,services_and_deliverables_error_skippable:F,...ot}=c,_t=s.services_and_deliverables_error_skippable===!0,at={contract_document:ot,skip_ai_checks:_t};try{let w=await en({employmentId:r,payload:at}),X=w?.data?.contract_document?.id;if(!X)throw v("Contract document ID not found");return Ct(X),w}catch(w){let X=Tn(w);throw X&&Et({...t,services_and_deliverables_ai_warning:de(_===f),services_and_deliverables_error_skippable:X.skippable}),w}}case"contract_preview":{if(Mn)return Promise.resolve({data:{contract_document:{id:g}}});let T=await nn({employmentId:r,contractDocumentId:g,payload:{signature:c.signature}});return await Fn(),T}case"pricing_plan":{if(t.subscription===re)return Promise.resolve({data:{subscription:t.subscription}});if(N.length===0)throw v("No available subscriptions.");if(!t.subscription&&N.length>0)throw v("Please select a subscription plan.");if(J&&[f,st].includes(t.subscription))throw v(`This individual is not eligible for ${Se[t.subscription]}.`);if(R&&t.subscription!==f)try{await on({employmentId:r}),await dt()}catch(F){if(F?.response?.status!==404)throw F;await dt()}if(t.subscription==Y)return xt({employmentId:r,payload:{operation:"downgrade"}});if(t.subscription==st)return xt({employmentId:r,payload:{operation:"upgrade"}});if(t.subscription==f)return R&&o?.contractor_type!=="cor"?Bt({employmentId:r}):Promise.resolve({data:{subscription:t.subscription}});throw v("invalid selection")}case"contract_origin":return t.contract_origin==="provided_by_customer"&&await an({employmentId:r,contractOrigin:"provided_by_customer",templateType:"contractor_agreement"}),{data:{contractOrigin:t.contract_origin}};case"eligibility_questionnaire":try{if((await rn({employmentId:r,payload:c}))?.data?.is_blocking)throw wt(!1),Pt("pricing_plan"),v("This individual is not eligible for Contractor of Record.");return await Bt({employmentId:r})}finally{await dt()}default:throw v("Invalid step state")}}return p(qn,"onSubmit"),{isLoading:yt||ft,fieldValues:s,stepState:e,checkFieldUpdates:Et,markContractAsReviewed:p(()=>{gt.current?.()},"markContractAsReviewed"),back:He,next:p(()=>{r&&Vt(),We()},"handleNextStep"),goTo:Rn,onSubmit:qn,fields:n[e.currentStep.name],meta:{fields:Z.current,fieldsets:Dn[e.currentStep.name],presentation:In[e.currentStep.name]},parseFormValues:Wt,canSkipAiValidation:s.services_and_deliverables_error_skippable===!0,handleValidation:p(async t=>{if(e.currentStep.name==="select_country")return Q.handleValidation(t);if(C&&e.currentStep.name==="basic_information"){let i=await m(t,C?.fields,{isPartialValidation:!1});return C?.handleValidation(i)}if(S&&e.currentStep.name==="contract_details"){let i=await m(t,S?.fields,{isPartialValidation:!1});return S?.handleValidation(i)}if(O&&e.currentStep.name==="contract_preview"){let i=await m(t,O?.fields,{isPartialValidation:!0});return O?.handleValidation(i)}if(P&&e.currentStep.name==="pricing_plan"){let i=await m(t,P?.fields,{isPartialValidation:!1});return P?.handleValidation(i)}if(E&&e.currentStep.name==="eligibility_questionnaire"){let i=await m(t,E?.fields,{isPartialValidation:!1});return E?.handleValidation(i)}if(V&&e.currentStep.name==="contract_origin"){let i=await m(t,V?.fields,{isPartialValidation:!1});return V?.handleValidation(i)}return null},"handleValidation"),initialValues:kn,employmentId:r,refetchEmployment:Vt,isSubmitting:Mt.isPending||Dt.isPending||lt.isPending||qt.isPending||Lt.isPending||It.isPending||kt.isPending||Rt.isPending||jt.isPending||Tt.isPending,documentPreviewPdf:pt,canInvite:Xe,isEmploymentReadOnly:h,invitedStatus:Ye,employment:o,defaultLegalEntity:ze,needsCompanyVerification:Ft?.some(t=>t.type==="verify_company")??!1,needsRemotePaymentsSetup:Ft?.some(t=>t.type==="setup_remote_payments")??!1,steps:Ge}},"useContractorOnboarding");export{gi as a};
|
|
2
|
-
//# sourceMappingURL=chunk-4LQDSIUG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/ContractorOnboarding/hooks.tsx","../src/common/api/legal-entities.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { FieldValues } from 'react-hook-form';\nimport omit from 'lodash.omit';\nimport { $TSFixMe, JSFFields } from '@/src/types/remoteFlows';\nimport {\n CreateContractDocument,\n Employment,\n EmploymentCreateParams,\n} from '@/src/client/types.gen';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';\nimport {\n useCreateContractorContractDocument,\n useGetContractDocumentSignatureSchema,\n usePostManageContractorSubscriptions,\n useContractorSubscriptionSchemaField,\n useGetShowContractDocument,\n useSignContractDocument,\n useUpdateUKandSaudiFields,\n useGetIR35File,\n useGetContractDocuments,\n useGetEligibilityQuestionnaire,\n usePostCreateEligibilityQuestionnaire,\n usePostManageContractorCorSubscription,\n useDeleteContractorCorSubscription,\n useCountriesSchemaField,\n useContractorOnboardingDetailsSchemaWithCurrencies,\n CONTRACT_PRODUCT_TITLES,\n useHasCompanySignedContract,\n useCompanyOpenTasks,\n useSetContractOrigin,\n useGetContractOriginSchema,\n} from '@/src/flows/ContractorOnboarding/api';\nimport {\n ContractorOnboardingFlowProps,\n ContractorOnboardingHookOptions,\n} from '@/src/flows/ContractorOnboarding/types';\nimport {\n buildSteps,\n calculateProvisionalStartDateDescription,\n reviewStepAllowedEmploymentStatus,\n disabledInviteButtonEmploymentStatus,\n StepKeys,\n} from '@/src/flows/ContractorOnboarding/utils';\nimport {\n useCreateEmployment,\n useJSONSchemaForm,\n useUpdateEmployment,\n} from '@/src/flows/Onboarding/api';\nimport { FlowOptions, JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { mutationToPromise, isMutationError } from '@/src/lib/mutations';\nimport { createStructuredError, prettifyFormValues } from '@/src/lib/utils';\nimport { JSFFieldset, Meta } from '@/src/types/remoteFlows';\nimport {\n contractorStandardProductIdentifier,\n contractorPlusProductIdentifier,\n corProductIdentifier,\n eorProductIdentifier,\n REMOTE_AI_ERROR_SOURCE,\n} from '@/src/flows/ContractorOnboarding/constants';\nimport {\n buildBasicInformationJsfModify,\n buildContractDetailsJsfModify,\n buildContractPreviewJsfModify,\n} from '@/src/flows/ContractorOnboarding/jsfModify';\nimport { transformAiErrorResponse } from '@/src/flows/ContractorOnboarding/utils';\nimport { AiValidationError } from '@/src/flows/ContractorOnboarding/types';\nimport { useUploadFile } from '@/src/common/api/files';\nimport { dataURLtoFile } from '@/src/lib/files';\nimport { useEmploymentQuery } from '@/src/common/api/employment';\nimport { useDefaultLegalEntity } from '@/src/common/api/legal-entities';\n\ntype useContractorOnboardingProps = Omit<\n ContractorOnboardingFlowProps,\n 'render' | 'options'\n> & {\n options: ContractorOnboardingHookOptions;\n};\n\nconst stepToFormSchemaMap: Record<StepKeys, JSONSchemaFormType | null> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_origin: null,\n contract_details: null,\n eligibility_questionnaire: null,\n pricing_plan: null,\n contract_preview: null,\n review: null,\n};\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n};\n\nexport const useContractorOnboarding = ({\n countryCode,\n externalId,\n employmentId,\n skipSteps,\n options,\n initialValues: onboardingInitialValues,\n}: useContractorOnboardingProps) => {\n const excludeProducts = options?.excludeProducts || [];\n\n const onContractReviewedRef = useRef(options?.onContractReviewed);\n\n useEffect(() => {\n onContractReviewedRef.current = options?.onContractReviewed;\n }, [options?.onContractReviewed]);\n\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalContractDocumentId, setInternalContractDocumentId] = useState<\n string | undefined\n >(undefined);\n const fieldsMetaRef = useRef<{\n select_country: Meta;\n basic_information: Meta;\n contract_origin: Meta;\n contract_details: Meta;\n contract_preview: Meta;\n pricing_plan: Meta;\n eligibility_questionnaire: Meta;\n }>({\n select_country: {},\n basic_information: {},\n contract_origin: {},\n contract_details: {},\n contract_preview: {},\n pricing_plan: {},\n eligibility_questionnaire: {},\n });\n\n const [selectedProduct, setSelectedProduct] = useState<string | undefined>(\n undefined,\n );\n\n const [includeEligibilityQuestionnaire, setIncludeEligibilityQuestionnaire] =\n useState<boolean>(false);\n\n const [includeContractPreview, setIncludeContractPreview] =\n useState<boolean>(true);\n\n const [includeContractDetails, setIncludeContractDetails] =\n useState<boolean>(true);\n\n const [pendingNavigationStep, setPendingNavigationStep] =\n useState<StepKeys | null>(null);\n\n const { steps, stepsArray } = useMemo(\n () =>\n buildSteps({\n includeSelectCountry: !skipSteps?.includes('select_country'),\n includeContractOrigin: !skipSteps?.includes('contract_origin'),\n includeEligibilityQuestionnaire: includeEligibilityQuestionnaire,\n includeContractDetails: includeContractDetails,\n includeContractPreview: includeContractPreview,\n }),\n [\n includeEligibilityQuestionnaire,\n includeContractDetails,\n includeContractPreview,\n skipSteps,\n ],\n );\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(steps);\n\n useEffect(() => {\n if (pendingNavigationStep) {\n // Now steps have been updated\n goToStep(pendingNavigationStep);\n setPendingNavigationStep(null);\n }\n }, [pendingNavigationStep, goToStep]);\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmploymentQuery({\n employmentId: internalEmploymentId as string,\n queryParams: { exclude_files: true },\n });\n\n const defaultLegalEntity = useDefaultLegalEntity();\n\n const { data: openTasks } = useCompanyOpenTasks({\n options: {\n queryOptions: {\n enabled: stepState.currentStep.name === 'review',\n },\n },\n });\n\n const { status: employmentStatus } = employment || {};\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const canInvite =\n employmentStatus &&\n !disabledInviteButtonEmploymentStatus.includes(employmentStatus);\n\n const invitedStatus: 'invited' | 'not_invited' = useMemo(() => {\n const invitedStatuses = ['invited', 'initiated'];\n const isInvited =\n employmentStatus && invitedStatuses.includes(employmentStatus);\n\n return isInvited ? 'invited' : 'not_invited';\n }, [employmentStatus]);\n\n const createEmploymentMutation = useCreateEmployment();\n const updateEmploymentMutation = useUpdateEmployment(\n internalCountryCode as string,\n options,\n );\n const createContractorContractDocumentMutation =\n useCreateContractorContractDocument();\n const uploadFileMutation = useUploadFile();\n const { mutateAsync: updateUKandSaudiFieldsMutation } =\n useUpdateUKandSaudiFields(\n createContractorContractDocumentMutation,\n uploadFileMutation,\n fieldValues,\n );\n const createEligibilityQuestionnaireMutation =\n usePostCreateEligibilityQuestionnaire();\n const manageContractorCorSubscriptionMutation =\n usePostManageContractorCorSubscription();\n const setContractOriginMutation = useSetContractOrigin();\n\n const { mutateAsyncOrThrow: updateEmploymentMutationAsync } =\n mutationToPromise(updateEmploymentMutation);\n const signContractDocumentMutation = useSignContractDocument();\n const manageContractorSubscriptionMutation =\n usePostManageContractorSubscriptions();\n const deleteContractorCorSubscriptionMutation =\n useDeleteContractorCorSubscription();\n\n const { mutateAsyncOrThrow: createEmploymentMutationAsync } =\n mutationToPromise(createEmploymentMutation);\n\n const { mutateAsyncOrThrow: createContractorContractDocumentMutationAsync } =\n mutationToPromise(createContractorContractDocumentMutation);\n\n const { mutateAsyncOrThrow: signContractDocumentMutationAsync } =\n mutationToPromise(signContractDocumentMutation);\n\n const { mutateAsyncOrThrow: manageContractorSubscriptionMutationAsync } =\n mutationToPromise(manageContractorSubscriptionMutation);\n\n const { mutateAsyncOrThrow: createEligibilityQuestionnaireMutationAsync } =\n mutationToPromise(createEligibilityQuestionnaireMutation);\n\n const { mutateAsyncOrThrow: manageContractorCorSubscriptionMutationAsync } =\n mutationToPromise(manageContractorCorSubscriptionMutation);\n\n const { mutateAsyncOrThrow: deleteContractorCorSubscriptionMutationAsync } =\n mutationToPromise(deleteContractorCorSubscriptionMutation);\n\n const { mutateAsyncOrThrow: setContractOriginMutationAsync } =\n mutationToPromise(setContractOriginMutation);\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 (employmentId && employment?.country?.code && !internalCountryCode) {\n setInternalCountryCode(employment.country.code);\n }\n\n const {\n selectCountryForm,\n isLoading: isLoadingCountries,\n countries,\n } = useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n });\n\n const selectedCountry = useMemo(() => {\n return countries?.find((country) => country.value === internalCountryCode);\n }, [countries, internalCountryCode]);\n\n const countryName = useMemo(() => {\n return selectedCountry?.label;\n }, [selectedCountry]);\n\n const isPricingPlanEnabled =\n stepState.currentStep.name === 'pricing_plan' ||\n (Boolean(employmentId) && isEmploymentReadOnly);\n\n const {\n form: selectContractorSubscriptionForm,\n isLoading: isLoadingContractorSubscriptions,\n contractorSubscriptions,\n filteredContractorSubscriptions,\n refetch: refetchContractorSubscriptions,\n isEligibilityQuestionnaireBlocked,\n } = useContractorSubscriptionSchemaField(\n internalEmploymentId as string,\n selectedCountry,\n {\n jsonSchemaVersion: options?.jsonSchemaVersion,\n queryOptions: {\n enabled: isPricingPlanEnabled,\n },\n excludeProducts: excludeProducts,\n jsfModify: options?.jsfModify?.pricing_plan,\n },\n );\n\n const hasEligibilityQuestionnaireSubmitted = useMemo(() => {\n return Boolean(\n contractorSubscriptions?.find(\n (subscription) =>\n subscription.product.identifier === corProductIdentifier,\n )?.eligibility_questionnaire?.submitted_at,\n );\n }, [contractorSubscriptions]);\n\n const shouldIncludeEligibilityQuestionnaire = useMemo(() => {\n if (hasEligibilityQuestionnaireSubmitted) return false;\n return selectedProduct === corProductIdentifier;\n }, [hasEligibilityQuestionnaireSubmitted, selectedProduct]);\n\n const shouldIncludeContractPreview = employment?.contractor_type !== 'cor';\n\n const selectedContractOrigin =\n (fieldValues.contract_origin as string | undefined) ??\n (stepState.values?.contract_origin?.contract_origin as\n | string\n | undefined) ??\n employment?.contract_details?.contract_origin;\n\n const isContractProvidedByCustomer =\n selectedContractOrigin === 'provided_by_customer';\n\n useEffect(() => {\n setIncludeContractDetails(!isContractProvidedByCustomer);\n }, [isContractProvidedByCustomer]);\n\n useEffect(() => {\n setIncludeEligibilityQuestionnaire(\n !isContractProvidedByCustomer && shouldIncludeEligibilityQuestionnaire,\n );\n }, [isContractProvidedByCustomer, shouldIncludeEligibilityQuestionnaire]);\n\n useEffect(() => {\n setIncludeContractPreview(\n !isContractProvidedByCustomer && shouldIncludeContractPreview,\n );\n }, [isContractProvidedByCustomer, shouldIncludeContractPreview]);\n\n const eligibilityAnswers = useMemo(() => {\n return contractorSubscriptions?.find(\n (subscription) =>\n subscription.product.identifier === corProductIdentifier,\n )?.eligibility_questionnaire?.responses;\n }, [contractorSubscriptions]);\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'contractor_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 query = {},\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n jsonSchemaVersion?: FlowOptions['jsonSchemaVersion'];\n };\n query?: Record<string, string>;\n }) => {\n const hasUserEnteredAnyValues = Object.keys(fieldValues).length > 0;\n // when you write on the fields, the values are stored in the fieldValues state\n // when values are stored in the stepState is when the user has navigated to the step\n // and then we have the values from the server and the onboardingInitialValues that the user can inject,\n const mergedFormValues = hasUserEnteredAnyValues\n ? {\n ...onboardingInitialValues,\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : {\n ...onboardingInitialValues,\n ...serverEmploymentData,\n };\n\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues: mergedFormValues,\n query,\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 isIR35FileEnabled = Boolean(\n internalCountryCode === 'GBR' &&\n employmentId &&\n stepState.currentStep.name === 'basic_information',\n );\n\n const { data: ir35File, isLoading: isLoadingIR35File } = useGetIR35File(\n employmentId as string,\n {\n enabled: isIR35FileEnabled,\n },\n );\n\n const { data: contractDocuments, isLoading: isLoadingContractDocuments } =\n useGetContractDocuments(internalEmploymentId as string, {\n enabled: Boolean(internalEmploymentId),\n });\n\n useEffect(() => {\n if (\n contractDocuments &&\n contractDocuments.length > 0 &&\n !internalContractDocumentId\n ) {\n setInternalContractDocumentId(contractDocuments[0].id);\n }\n }, [contractDocuments, internalContractDocumentId]);\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'contractor_basic_information',\n options: {\n jsfModify: buildBasicInformationJsfModify(\n internalCountryCode as string,\n countryName,\n options,\n ),\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n },\n });\n\n const descriptionProvisionalStartDate = useMemo(() => {\n return calculateProvisionalStartDateDescription(\n employment?.basic_information?.provisional_start_date as string,\n fieldValues?.service_duration?.provisional_start_date as string,\n );\n }, [\n employment?.basic_information?.provisional_start_date,\n fieldValues?.service_duration?.provisional_start_date,\n ]);\n\n /**\n * When the user selects COR, the data isn't saved yet in the BE\n * We need to use the internalState to know what has happened\n */\n const selectedPricingPlan = useMemo(() => {\n const subscriptions = {\n standard: contractorStandardProductIdentifier,\n plus: contractorPlusProductIdentifier,\n cor: corProductIdentifier,\n };\n\n // HIGHEST PRIORITY: Current form value (user is actively selecting)\n if (fieldValues.subscription) {\n return fieldValues.subscription;\n }\n\n // SECOND: Previously submitted value in this session\n const subscription = stepState.values?.pricing_plan?.subscription;\n if (subscription && !isEligibilityQuestionnaireBlocked) {\n return subscription;\n }\n\n // THIRD: Backend state (eligibility submitted or employment contractor_type)\n if (\n hasEligibilityQuestionnaireSubmitted &&\n !isEligibilityQuestionnaireBlocked\n ) {\n return corProductIdentifier;\n }\n\n // Fourth: If the eligibility questionnaire is blocked and has been submitted, return the standard product\n if (\n isEligibilityQuestionnaireBlocked &&\n hasEligibilityQuestionnaireSubmitted\n ) {\n return contractorStandardProductIdentifier;\n }\n\n // Fifth: If there are no available subscriptions, return undefined\n const hasAvailableSubscriptions =\n filteredContractorSubscriptions &&\n filteredContractorSubscriptions.length > 0;\n\n if (!hasAvailableSubscriptions) {\n return undefined;\n }\n\n // FALLBACK: Employment contractor_type or default\n return (\n subscriptions[\n employment?.contractor_type as keyof typeof subscriptions\n ] || contractorStandardProductIdentifier\n );\n }, [\n fieldValues,\n stepState.values,\n hasEligibilityQuestionnaireSubmitted,\n employment?.contractor_type,\n isEligibilityQuestionnaireBlocked,\n filteredContractorSubscriptions,\n ]);\n\n useEffect(() => {\n if (selectedPricingPlan && selectedPricingPlan !== selectedProduct) {\n setSelectedProduct(selectedPricingPlan);\n }\n }, [selectedPricingPlan, selectedProduct]);\n\n const eligibilityFields = useMemo(() => {\n return {\n ...eligibilityAnswers,\n ...onboardingInitialValues,\n ...stepState.values?.eligibility_questionnaire,\n ...fieldValues,\n };\n }, [\n eligibilityAnswers,\n onboardingInitialValues,\n stepState.values?.eligibility_questionnaire,\n fieldValues,\n ]);\n\n const isEligibilityQuestionnaireEnabled = useMemo(() => {\n return (\n (selectedPricingPlan === corProductIdentifier &&\n stepState.currentStep.name === 'eligibility_questionnaire') ||\n (Boolean(employmentId) &&\n isEmploymentReadOnly &&\n selectedPricingPlan === corProductIdentifier)\n );\n }, [\n selectedPricingPlan,\n stepState.currentStep.name,\n employmentId,\n isEmploymentReadOnly,\n ]);\n\n const {\n data: eligibilityQuestionnaireForm,\n isLoading: isLoadingEligibilityQuestionnaire,\n } = useGetEligibilityQuestionnaire({\n options: {\n queryOptions: {\n enabled: isEligibilityQuestionnaireEnabled,\n },\n jsfModify: options?.jsfModify?.eligibility_questionnaire,\n },\n fieldValues: eligibilityFields,\n });\n\n const isContractorOnboardingDetailsEnabled = Boolean(\n (internalCountryCode &&\n stepState.currentStep.name === 'contract_details') ||\n isEmploymentReadOnly,\n );\n\n const {\n data: contractorOnboardingDetailsForm,\n isLoading: isLoadingContractorOnboardingDetailsForm,\n } = useContractorOnboardingDetailsSchemaWithCurrencies({\n countryCode: internalCountryCode as string,\n fieldValues: fieldValues,\n employmentId: internalEmploymentId as string,\n options: {\n queryOptions: {\n enabled: isContractorOnboardingDetailsEnabled,\n },\n jsfModify: buildContractDetailsJsfModify(\n options?.jsfModify?.contract_details,\n descriptionProvisionalStartDate,\n selectedPricingPlan,\n fieldValues,\n selectedPricingPlan === corProductIdentifier,\n ),\n },\n });\n\n const isSignatureSchemaEnabled = useMemo(() => {\n return (\n stepState.currentStep.name === 'contract_preview' ||\n (Boolean(employmentId) && isEmploymentReadOnly)\n );\n }, [stepState.currentStep.name, employmentId, isEmploymentReadOnly]);\n\n const { data: signatureSchemaForm } = useGetContractDocumentSignatureSchema({\n fieldValues: fieldValues,\n options: {\n queryOptions: {\n enabled: isSignatureSchemaEnabled,\n },\n jsfModify: buildContractPreviewJsfModify(options, fieldValues),\n },\n });\n\n const { data: contractOriginForm } = useGetContractOriginSchema({\n fieldValues: fieldValues,\n });\n\n const {\n data: documentPreviewPdf,\n isLoading: isLoadingDocumentPreviewForm,\n refetch: refetchDocumentPreviewForm,\n } = useGetShowContractDocument({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n options: {\n queryOptions: {\n enabled: Boolean(internalContractDocumentId),\n },\n },\n });\n\n const { hasCompanySignedContract } = useHasCompanySignedContract({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n options: {\n queryOptions: {\n enabled: Boolean(internalContractDocumentId),\n },\n },\n });\n\n const stepFields: Record<StepKeys, JSFFields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n contract_origin: contractOriginForm?.fields || [],\n pricing_plan: selectContractorSubscriptionForm?.fields || [],\n eligibility_questionnaire: eligibilityQuestionnaireForm?.fields || [],\n contract_details: contractorOnboardingDetailsForm?.fields || [],\n contract_preview: signatureSchemaForm?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractOriginForm?.fields,\n selectContractorSubscriptionForm?.fields,\n contractorOnboardingDetailsForm?.fields,\n signatureSchemaForm?.fields,\n eligibilityQuestionnaireForm?.fields,\n ],\n );\n\n const stepFieldsWithFlatFieldsets: Record<\n StepKeys,\n JSFFieldset | null | undefined\n > = {\n select_country: null,\n basic_information: basicInformationForm?.meta['x-jsf-fieldsets'],\n contract_origin: null,\n pricing_plan: null,\n contract_details: contractorOnboardingDetailsForm?.meta['x-jsf-fieldsets'],\n eligibility_questionnaire: null,\n contract_preview: null,\n review: null,\n };\n\n const stepPresentation: Record<\n StepKeys,\n Record<string, unknown> | null | undefined\n > = {\n select_country: selectCountryForm?.meta?.['x-jsf-presentation'],\n basic_information: basicInformationForm?.meta?.['x-jsf-presentation'],\n contract_origin: contractOriginForm?.meta?.['x-jsf-presentation'],\n pricing_plan:\n selectContractorSubscriptionForm?.meta?.['x-jsf-presentation'],\n eligibility_questionnaire:\n eligibilityQuestionnaireForm?.meta?.['x-jsf-presentation'],\n contract_details:\n contractorOnboardingDetailsForm?.meta?.['x-jsf-presentation'],\n contract_preview: signatureSchemaForm?.meta?.['x-jsf-presentation'],\n review: null,\n };\n\n const {\n country,\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n } = employment || {};\n\n const employmentCountryCode = country?.code;\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 // memoize file conversion to avoid re-converting the file on every render\n // noticed performance issues when not doing memoizing individually\n const convertedIr35File = useMemo(() => {\n if (!ir35File?.content) return null;\n return dataURLtoFile(ir35File.content as unknown as string, ir35File.name);\n }, [ir35File?.content, ir35File?.name]);\n\n const basicInformationInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentBasicInformation,\n ir35: employment?.contract_details?.ir_35,\n nationality_status: employment?.contract_details?.nationality,\n ...(convertedIr35File && {\n ir35_sds_file: [convertedIr35File],\n }),\n };\n\n return getInitialValues(stepFields.basic_information, initialValues);\n }, [\n onboardingInitialValues,\n employmentBasicInformation,\n employment?.contract_details?.ir_35,\n employment?.contract_details?.nationality,\n convertedIr35File,\n stepFields.basic_information,\n ]);\n\n const contractOriginInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n contract_origin: employment?.contract_details?.contract_origin,\n };\n return getInitialValues(stepFields.contract_origin, initialValues);\n }, [\n stepFields.contract_origin,\n onboardingInitialValues,\n employment?.contract_details?.contract_origin,\n ]);\n\n const contractDetailsInitialValues = useMemo(() => {\n const hardcodedValues = {\n service_duration: {\n provisional_start_date:\n employmentBasicInformation.provisional_start_date,\n },\n };\n const initialValues = {\n ...hardcodedValues,\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_details, initialValues);\n }, [\n stepFields.contract_details,\n employmentContractDetails,\n onboardingInitialValues,\n employmentBasicInformation,\n ]);\n\n const contractPreviewInitialValues = useMemo(() => {\n const signature = documentPreviewPdf?.contract_document?.signatories?.find(\n (signatory) => signatory.type === 'company',\n );\n const initialValues = {\n ...onboardingInitialValues,\n signature: signature?.signature,\n };\n\n return getInitialValues(stepFields.contract_preview, initialValues);\n }, [\n stepFields.contract_preview,\n onboardingInitialValues,\n documentPreviewPdf,\n ]);\n\n const pricingPlanInitialValues = useMemo(() => {\n const preselectedPricingPlan = {\n subscription: selectedPricingPlan,\n };\n const initialValues = {\n ...preselectedPricingPlan,\n ...onboardingInitialValues,\n };\n\n return getInitialValues(stepFields.pricing_plan, initialValues);\n }, [stepFields.pricing_plan, onboardingInitialValues, selectedPricingPlan]);\n\n const eligibilityQuestionnaireInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...eligibilityAnswers,\n };\n return getInitialValues(\n stepFields.eligibility_questionnaire,\n initialValues,\n );\n }, [\n stepFields.eligibility_questionnaire,\n onboardingInitialValues,\n eligibilityAnswers,\n ]);\n\n const initialValues = useMemo(() => {\n return {\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_origin: contractOriginInitialValues,\n contract_details: contractDetailsInitialValues,\n contract_preview: contractPreviewInitialValues,\n pricing_plan: pricingPlanInitialValues,\n eligibility_questionnaire: eligibilityQuestionnaireInitialValues,\n };\n }, [\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractOriginInitialValues,\n contractDetailsInitialValues,\n contractPreviewInitialValues,\n pricingPlanInitialValues,\n eligibilityQuestionnaireInitialValues,\n ]);\n\n const shouldHandleReadOnlyEmployment = Boolean(\n employmentId &&\n isEmploymentReadOnly &&\n stepState.currentStep.name !== 'review',\n );\n\n const initialLoading =\n isLoadingCountries ||\n isLoadingBasicInformationForm ||\n isLoadingEmployment ||\n isLoadingContractorOnboardingDetailsForm ||\n isLoadingContractorSubscriptions ||\n isLoadingDocumentPreviewForm ||\n isLoadingIR35File ||\n isLoadingContractDocuments ||\n isLoadingEligibilityQuestionnaire;\n\n const isNavigatingToReview = useMemo(() => {\n const isCor = employment?.contractor_type === 'cor';\n const hasContractPreviewFields =\n isCor || stepFields.contract_preview.length > 0;\n\n return Boolean(\n shouldHandleReadOnlyEmployment &&\n !initialLoading &&\n Boolean(internalContractDocumentId) &&\n stepFields.basic_information.length > 0 &&\n stepFields.contract_details.length > 0 &&\n hasContractPreviewFields,\n );\n }, [\n shouldHandleReadOnlyEmployment,\n initialLoading,\n internalContractDocumentId,\n stepFields.basic_information.length,\n stepFields.contract_details.length,\n stepFields.contract_preview.length,\n employment?.contractor_type,\n ]);\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n { skipMoneyConversion: true },\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n { skipMoneyConversion: true },\n ),\n contract_origin: {},\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n { skipMoneyConversion: true },\n ),\n contract_preview: prettifyFormValues(\n contractPreviewInitialValues,\n stepFields.contract_preview,\n { skipMoneyConversion: true },\n ),\n pricing_plan: prettifyFormValues(\n pricingPlanInitialValues,\n stepFields.pricing_plan,\n { skipMoneyConversion: true },\n ),\n eligibility_questionnaire: prettifyFormValues(\n eligibilityQuestionnaireInitialValues,\n stepFields.eligibility_questionnaire,\n { skipMoneyConversion: true },\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_origin: {},\n contract_details: contractDetailsInitialValues,\n contract_preview: contractPreviewInitialValues,\n pricing_plan: pricingPlanInitialValues,\n eligibility_questionnaire: eligibilityQuestionnaireInitialValues,\n review: {},\n });\n goToStep('review');\n }\n }, [\n isNavigatingToReview,\n goToStep,\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n setStepValues,\n stepFields.select_country,\n stepFields.basic_information,\n stepFields.contract_details,\n stepFields.pricing_plan,\n pricingPlanInitialValues,\n stepFields.contract_preview,\n contractPreviewInitialValues,\n stepFields.eligibility_questionnaire,\n eligibilityQuestionnaireInitialValues,\n ]);\n\n const goTo = (step: StepKeys) => {\n goToStep(step);\n };\n\n const parseFormValues = async (values: FieldValues) => {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return await parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return await parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n return await parseJSFToValidate(values, signatureSchemaForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n selectContractorSubscriptionForm &&\n stepState.currentStep.name === 'pricing_plan'\n ) {\n return await parseJSFToValidate(\n values,\n selectContractorSubscriptionForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n eligibilityQuestionnaireForm &&\n stepState.currentStep.name === 'eligibility_questionnaire'\n ) {\n return await parseJSFToValidate(\n values,\n eligibilityQuestionnaireForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n contractOriginForm &&\n stepState.currentStep.name === 'contract_origin'\n ) {\n return await parseJSFToValidate(values, contractOriginForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n return {};\n };\n\n /**\n * Extracts AI validation error from the error response\n * @param error - The error object from the API call\n * @returns The AI validation error if found, null otherwise\n */\n const extractAiValidationError = (\n error: unknown,\n ): AiValidationError | null => {\n if (!isMutationError(error)) {\n return null;\n }\n\n const rawError = error.normalizedErrors.services_and_deliverables;\n\n // The backend's normalize_errors wraps non-list values in an array,\n // so the AI validation error object arrives as a single-element array.\n const servicesAndDeliverablesError = (\n Array.isArray(rawError) ? rawError[0] : rawError\n ) as\n | {\n error: string[];\n source: string;\n skippable: boolean;\n }\n | undefined;\n\n if (servicesAndDeliverablesError?.source === REMOTE_AI_ERROR_SOURCE) {\n return {\n error: servicesAndDeliverablesError.error,\n source: servicesAndDeliverablesError.source,\n skippable: servicesAndDeliverablesError.skippable,\n };\n }\n return null;\n };\n\n async function onSubmit(values: FieldValues) {\n const currentStepName = stepState.currentStep.name;\n const parsedValues = await parseFormValues(values);\n\n if (currentStepName in fieldsMetaRef.current) {\n fieldsMetaRef.current[\n currentStepName as keyof typeof fieldsMetaRef.current\n ] = prettifyFormValues(parsedValues, stepFields[currentStepName]);\n }\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\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const basicInformationParsedValues = omit(\n parsedValues,\n 'nationality_status',\n 'ir35',\n 'ir35_sds_file',\n );\n const basicInformationPayload: EmploymentCreateParams = {\n basic_information: basicInformationParsedValues,\n type: 'contractor',\n country_code: internalCountryCode,\n external_id: externalId,\n };\n const response = await createEmploymentMutationAsync(\n basicInformationPayload,\n );\n const employmentId = response?.data?.employment?.id;\n if (!employmentId) {\n throw createStructuredError('Employment ID not found');\n }\n\n await updateUKandSaudiFieldsMutation({\n employmentId: employmentId as string,\n });\n\n // Only update state (triggers queries with fully consistent backend state) if not caused a bug\n // if one of the updateUKandSaudiFieldsMutation fails with a 422 for example\n setInternalEmploymentId(employmentId);\n\n return response;\n } else if (internalEmploymentId) {\n const basicInformationParsedValues = omit(\n parsedValues,\n 'nationality_status',\n 'ir35',\n 'ir35_sds_file',\n );\n\n await updateUKandSaudiFieldsMutation({\n employmentId: internalEmploymentId,\n });\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: basicInformationParsedValues,\n });\n }\n\n return;\n }\n case 'contract_details': {\n const {\n services_and_deliverables_ai_warning:\n _servicesAndDeliverablesAiWarning,\n services_and_deliverables_error_skippable:\n _servicesAndDeliverablesErrorSkippable,\n ...contractDetailsData\n } = parsedValues;\n\n const shouldSkipAiChecks =\n fieldValues.services_and_deliverables_error_skippable === true;\n const payload: CreateContractDocument = {\n contract_document: contractDetailsData,\n skip_ai_checks: shouldSkipAiChecks,\n };\n\n try {\n const response = await createContractorContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n payload,\n });\n const contractDocumentId = response?.data?.contract_document?.id;\n if (!contractDocumentId) {\n throw createStructuredError('Contract document ID not found');\n }\n setInternalContractDocumentId(contractDocumentId);\n\n return response;\n } catch (error) {\n const aiError = extractAiValidationError(error);\n if (aiError) {\n const isContractorOfRecord =\n selectedPricingPlan === corProductIdentifier;\n setFieldValues({\n ...values,\n services_and_deliverables_ai_warning:\n transformAiErrorResponse(isContractorOfRecord),\n services_and_deliverables_error_skippable: aiError.skippable,\n });\n }\n\n throw error;\n }\n }\n\n case 'contract_preview': {\n if (hasCompanySignedContract) {\n return Promise.resolve({\n data: {\n contract_document: {\n id: internalContractDocumentId,\n },\n },\n });\n }\n const response = await signContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n payload: {\n signature: parsedValues.signature,\n },\n });\n await refetchDocumentPreviewForm();\n return response;\n }\n case 'pricing_plan': {\n if (values.subscription === eorProductIdentifier) {\n // EOR selection - no API call needed at this step\n return Promise.resolve({\n data: {\n subscription: values.subscription,\n },\n });\n }\n // If there are no available contractor subscriptions, throw an error\n if (filteredContractorSubscriptions.length === 0) {\n throw createStructuredError('No available subscriptions.');\n }\n\n if (\n !values.subscription &&\n filteredContractorSubscriptions.length > 0\n ) {\n throw createStructuredError('Please select a subscription plan.');\n }\n\n const blockedProductsEligibility = [\n corProductIdentifier,\n contractorPlusProductIdentifier,\n ];\n\n if (\n isEligibilityQuestionnaireBlocked &&\n blockedProductsEligibility.includes(values.subscription)\n ) {\n throw createStructuredError(\n `This individual is not eligible for ${\n CONTRACT_PRODUCT_TITLES[\n values.subscription as keyof typeof CONTRACT_PRODUCT_TITLES\n ]\n }.`,\n );\n }\n\n if (\n hasEligibilityQuestionnaireSubmitted &&\n values.subscription !== corProductIdentifier\n ) {\n try {\n await deleteContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n await refetchContractorSubscriptions();\n } catch (error) {\n if ((error as $TSFixMe)?.response?.status !== 404) {\n throw error;\n }\n // Still refetch to update the UI state\n await refetchContractorSubscriptions();\n }\n }\n\n if (values.subscription == contractorStandardProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'downgrade',\n },\n });\n } else if (values.subscription == contractorPlusProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'upgrade',\n },\n });\n } else if (values.subscription == corProductIdentifier) {\n if (\n hasEligibilityQuestionnaireSubmitted &&\n employment?.contractor_type !== 'cor'\n ) {\n return manageContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n } else {\n return Promise.resolve({\n data: { subscription: values.subscription },\n });\n }\n }\n\n throw createStructuredError('invalid selection');\n }\n\n case 'contract_origin': {\n // Step visibility is already reconciled reactively from the selected\n // value, so a plain next() lands on the right step (review when the\n // customer provides their own contract, otherwise eligibility /\n // contract_details). We only persist the choice server-side here.\n if (values.contract_origin === 'provided_by_customer') {\n await setContractOriginMutationAsync({\n employmentId: internalEmploymentId as string,\n contractOrigin: 'provided_by_customer',\n templateType: 'contractor_agreement',\n });\n }\n\n return {\n data: { contractOrigin: values.contract_origin },\n };\n }\n\n case 'eligibility_questionnaire': {\n try {\n const response = await createEligibilityQuestionnaireMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: parsedValues,\n });\n\n const isEligibilityQuestionnaireBlocked = response?.data?.is_blocking;\n\n if (isEligibilityQuestionnaireBlocked) {\n setIncludeEligibilityQuestionnaire(false);\n setPendingNavigationStep('pricing_plan');\n throw createStructuredError(\n 'This individual is not eligible for Contractor of Record.',\n );\n }\n\n return await manageContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n } finally {\n // Always refetch to keep state in sync, even on error\n await refetchContractorSubscriptions();\n }\n }\n\n default: {\n throw createStructuredError('Invalid step state');\n }\n }\n }\n\n const markContractAsReviewed = () => {\n // Notify parent to sync form state\n onContractReviewedRef.current?.();\n };\n\n const handleNextStep = () => {\n if (internalEmploymentId) {\n refetchEmployment();\n }\n nextStep();\n };\n\n const isLoading = initialLoading || shouldHandleReadOnlyEmployment;\n\n return {\n /**\n * Loading state indicating if the flow is loading data\n */\n isLoading,\n\n /**\n * Current state of the form fields for the current step.\n */\n fieldValues,\n\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\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 mark the contract as reviewed\n * @param values - New form values to check\n * @returns {boolean}\n */\n markContractAsReviewed,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back: previousStep,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next: handleNextStep,\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: goTo,\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 * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n fieldsets: stepFieldsWithFlatFieldsets[stepState.currentStep.name],\n presentation: stepPresentation[stepState.currentStep.name],\n },\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 * Indicates whether AI validation errors can be skipped (user can continue at their own risk).\n * True when there's a skippable AI validation error on services_and_deliverables field.\n * @returns {boolean}\n */\n canSkipAiValidation:\n fieldValues.services_and_deliverables_error_skippable === true,\n\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: async (\n values: FieldValues,\n ): Promise<ValidationResult | null> => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n { isPartialValidation: false },\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n { isPartialValidation: false },\n );\n return contractorOnboardingDetailsForm?.handleValidation(parsedValues);\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n signatureSchemaForm?.fields,\n { isPartialValidation: true },\n );\n return signatureSchemaForm?.handleValidation(parsedValues);\n }\n\n if (\n selectContractorSubscriptionForm &&\n stepState.currentStep.name === 'pricing_plan'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n selectContractorSubscriptionForm?.fields,\n { isPartialValidation: false },\n );\n return selectContractorSubscriptionForm?.handleValidation(parsedValues);\n }\n\n if (\n eligibilityQuestionnaireForm &&\n stepState.currentStep.name === 'eligibility_questionnaire'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n eligibilityQuestionnaireForm?.fields,\n { isPartialValidation: false },\n );\n return eligibilityQuestionnaireForm?.handleValidation(parsedValues);\n }\n\n if (\n contractOriginForm &&\n stepState.currentStep.name === 'contract_origin'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n contractOriginForm?.fields,\n { isPartialValidation: false },\n );\n return contractOriginForm?.handleValidation(parsedValues);\n }\n\n return null;\n },\n\n /**\n * Initial form values\n */\n initialValues,\n\n /**\n * Employment id\n */\n employmentId: internalEmploymentId,\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment: refetchEmployment,\n\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n createContractorContractDocumentMutation.isPending ||\n signContractDocumentMutation.isPending ||\n manageContractorSubscriptionMutation.isPending ||\n uploadFileMutation.isPending ||\n createEligibilityQuestionnaireMutation.isPending ||\n manageContractorCorSubscriptionMutation.isPending ||\n deleteContractorCorSubscriptionMutation.isPending ||\n setContractOriginMutation.isPending,\n\n /**\n * Document preview PDF data\n */\n documentPreviewPdf,\n\n /**\n * let's the user know if the company can invite employees\n * @returns {boolean}\n */\n canInvite,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n /**\n * let's the user know if the employment is invited or not\n * @returns {'invited' | 'not_invited'}\n */\n invitedStatus,\n\n /**\n * Employment data\n * @returns {Employment}\n */\n employment,\n\n /**\n * Default legal entity\n * @returns {CompanyLegalEntity}\n */\n defaultLegalEntity,\n\n /**\n * Whether the company needs to complete KYB verification before contractors can be paid.\n * Use this to show a company verification nudge banner on the review step.\n */\n needsCompanyVerification:\n openTasks?.some((a) => a.type === 'verify_company') ?? false,\n\n /**\n * Whether the company needs to set up Remote Payments.\n * Use this to show a Remote Payments setup nudge banner on the review step.\n */\n needsRemotePaymentsSetup:\n openTasks?.some((a) => a.type === 'setup_remote_payments') ?? false,\n\n /**\n * Steps array\n * @returns {Array<{name: string, index: number, visible: boolean, label: string}>}\n */\n steps: stepsArray,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport {\n getV1CompaniesCompanyIdLegalEntities,\n CompanyLegalEntity,\n} from '@/src/client';\nimport { Client } from '@/src/client/client';\nimport { useClient } from '@/src/context';\nimport { useIdentity } from '@/src/common/api/identity';\nimport { hasCompany } from '@/src/common/api/companies';\n\n/**\n * Hook to get the legal entities for a company\n * @param companyId - The company ID\n * @returns The legal entities\n */\nexport const useLegalEntities = () => {\n const { client } = useClient();\n const { data: identity } = useIdentity();\n const companyId = hasCompany(identity) ? (identity?.company?.id ?? '') : '';\n\n return useQuery({\n queryKey: ['legal-entities', companyId],\n queryFn: () =>\n getV1CompaniesCompanyIdLegalEntities({\n client: client as Client,\n path: {\n company_id: companyId,\n },\n query: {\n page_size: 100,\n },\n }),\n select: (data) => data.data?.data?.legal_entities,\n enabled: !!companyId,\n });\n};\n\nexport const useDefaultLegalEntity = () => {\n const { data: legalEntities } = useLegalEntities();\n return legalEntities?.find(\n (legalEntity: CompanyLegalEntity) => legalEntity.is_default,\n );\n};\n"],"mappings":"ivBAAA,OAAS,aAAAA,EAAW,WAAAC,EAAS,UAAAC,GAAQ,YAAAC,MAAgB,QAErD,OAAOC,OAAU,cCFjB,OAAS,YAAAC,OAAgB,wBAelB,IAAMC,GAAmBC,EAAA,IAAM,CACpC,GAAM,CAAE,OAAAC,CAAO,EAAIC,GAAU,EACvB,CAAE,KAAMC,CAAS,EAAIC,GAAY,EACjCC,EAAYC,GAAWH,CAAQ,EAAKA,GAAU,SAAS,IAAM,GAAM,GAEzE,OAAOI,GAAS,CACd,SAAU,CAAC,iBAAkBF,CAAS,EACtC,QAASL,EAAA,IACPQ,GAAqC,CACnC,OAAQP,EACR,KAAM,CACJ,WAAYI,CACd,EACA,MAAO,CACL,UAAW,GACb,CACF,CAAC,EATM,WAUT,OAAQL,EAACS,GAASA,EAAK,MAAM,MAAM,eAA3B,UACR,QAAS,CAAC,CAACJ,CACb,CAAC,CACH,EApBgC,oBAsBnBK,GAAwBV,EAAA,IAAM,CACzC,GAAM,CAAE,KAAMW,CAAc,EAAIZ,GAAiB,EACjD,OAAOY,GAAe,KACnBC,GAAoCA,EAAY,UACnD,CACF,EALqC,yBD8CrC,IAAMC,GAAmE,CACvE,eAAgB,KAChB,kBAAmB,+BACnB,gBAAiB,KACjB,iBAAkB,KAClB,0BAA2B,KAC3B,aAAc,KACd,iBAAkB,KAClB,OAAQ,IACV,EAEMC,GAEF,CACF,6BAA8B,mBAChC,EAEaC,GAA0BC,EAAA,CAAC,CACtC,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,EACA,cAAeC,CACjB,IAAoC,CAClC,IAAMC,GAAkBF,GAAS,iBAAmB,CAAC,EAE/CG,GAAwBC,GAAOJ,GAAS,kBAAkB,EAEhEK,EAAU,IAAM,CACdF,GAAsB,QAAUH,GAAS,kBAC3C,EAAG,CAACA,GAAS,kBAAkB,CAAC,EAEhC,GAAM,CAACM,EAAqBC,EAAsB,EAAIC,EACpDZ,GAAe,IACjB,EACM,CAACa,EAAsBC,EAAuB,EAAIF,EAEtDV,CAAY,EACR,CAACa,EAA4BC,EAA6B,EAAIJ,EAElE,MAAS,EACLK,EAAgBT,GAQnB,CACD,eAAgB,CAAC,EACjB,kBAAmB,CAAC,EACpB,gBAAiB,CAAC,EAClB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,0BAA2B,CAAC,CAC9B,CAAC,EAEK,CAACU,GAAiBC,EAAkB,EAAIP,EAC5C,MACF,EAEM,CAACQ,GAAiCC,EAAkC,EACxET,EAAkB,EAAK,EAEnB,CAACU,GAAwBC,EAAyB,EACtDX,EAAkB,EAAI,EAElB,CAACY,GAAwBC,EAAyB,EACtDb,EAAkB,EAAI,EAElB,CAACc,GAAuBC,EAAwB,EACpDf,EAA0B,IAAI,EAE1B,CAAE,MAAAgB,GAAO,WAAAC,EAAW,EAAIC,EAC5B,IACEC,GAAW,CACT,qBAAsB,CAAC5B,GAAW,SAAS,gBAAgB,EAC3D,sBAAuB,CAACA,GAAW,SAAS,iBAAiB,EAC7D,gCAAiCiB,GACjC,uBAAwBI,GACxB,uBAAwBF,EAC1B,CAAC,EACH,CACEF,GACAI,GACAF,GACAnB,CACF,CACF,EAEM,CACJ,YAAA6B,EACA,UAAAC,EACA,eAAAC,GACA,aAAAC,GACA,SAAAC,GACA,SAAAC,EACA,cAAAC,EACF,EAAIC,GAAaX,EAAK,EAEtBnB,EAAU,IAAM,CACViB,KAEFW,EAASX,EAAqB,EAC9BC,GAAyB,IAAI,EAEjC,EAAG,CAACD,GAAuBW,CAAQ,CAAC,EAEpC,GAAM,CACJ,KAAMG,EACN,UAAWC,GACX,QAASC,EACX,EAAIC,GAAmB,CACrB,aAAc9B,EACd,YAAa,CAAE,cAAe,EAAK,CACrC,CAAC,EAEK+B,GAAqBC,GAAsB,EAE3C,CAAE,KAAMC,EAAU,EAAIC,GAAoB,CAC9C,QAAS,CACP,aAAc,CACZ,QAASd,EAAU,YAAY,OAAS,QAC1C,CACF,CACF,CAAC,EAEK,CAAE,OAAQe,CAAiB,EAAIR,GAAc,CAAC,EAE9CS,EACJD,GACAE,GAAkC,SAASF,CAAgB,EAEvDG,GACJH,GACA,CAACI,GAAqC,SAASJ,CAAgB,EAE3DK,GAA2CvB,EAAQ,IAGrDkB,GAFsB,CAAC,UAAW,WAAW,EAET,SAASA,CAAgB,EAE5C,UAAY,cAC9B,CAACA,CAAgB,CAAC,EAEfM,GAA2BC,GAAoB,EAC/CC,GAA2BC,GAC/B/C,EACAN,CACF,EACMsD,GACJC,GAAoC,EAChCC,GAAqBC,GAAc,EACnC,CAAE,YAAaC,EAA+B,EAClDC,GACEL,GACAE,GACA5B,CACF,EACIgC,GACJC,GAAsC,EAClCC,GACJC,GAAuC,EACnCC,GAA4BC,GAAqB,EAEjD,CAAE,mBAAoBC,EAA8B,EACxDC,EAAkBf,EAAwB,EACtCgB,GAA+BC,GAAwB,EACvDC,GACJC,GAAqC,EACjCC,GACJC,GAAmC,EAE/B,CAAE,mBAAoBC,EAA8B,EACxDP,EAAkBjB,EAAwB,EAEtC,CAAE,mBAAoByB,EAA8C,EACxER,EAAkBb,EAAwC,EAEtD,CAAE,mBAAoBsB,EAAkC,EAC5DT,EAAkBC,EAA4B,EAE1C,CAAE,mBAAoBS,EAA0C,EACpEV,EAAkBG,EAAoC,EAElD,CAAE,mBAAoBQ,EAA4C,EACtEX,EAAkBP,EAAsC,EAEpD,CAAE,mBAAoBmB,EAA6C,EACvEZ,EAAkBL,EAAuC,EAErD,CAAE,mBAAoBkB,EAA6C,EACvEb,EAAkBK,EAAuC,EAErD,CAAE,mBAAoBS,EAA+B,EACzDd,EAAkBH,EAAyB,EAIzClE,GAAgBsC,GAAY,SAAS,MAAQ,CAAC9B,GAChDC,GAAuB6B,EAAW,QAAQ,IAAI,EAGhD,GAAM,CACJ,kBAAA8C,EACA,UAAWC,GACX,UAAAC,EACF,EAAIC,GAAwB,CAC1B,UAAWrF,GAAS,WAAW,cACjC,CAAC,EAEKsF,GAAkB5D,EAAQ,IACvB0D,IAAW,KAAMG,GAAYA,EAAQ,QAAUjF,CAAmB,EACxE,CAAC8E,GAAW9E,CAAmB,CAAC,EAE7BkF,GAAc9D,EAAQ,IACnB4D,IAAiB,MACvB,CAACA,EAAe,CAAC,EAEdG,GACJ5D,EAAU,YAAY,OAAS,gBAC9B,EAAQ/B,GAAiB+C,EAEtB,CACJ,KAAM6C,EACN,UAAWC,GACX,wBAAAC,GACA,gCAAAC,EACA,QAASC,GACT,kCAAAC,CACF,EAAIC,GACFvF,EACA6E,GACA,CACE,kBAAmBtF,GAAS,kBAC5B,aAAc,CACZ,QAASyF,EACX,EACA,gBAAiBvF,GACjB,UAAWF,GAAS,WAAW,YACjC,CACF,EAEMiG,EAAuCvE,EAAQ,IAC5C,EACLkE,IAAyB,KACtBM,GACCA,EAAa,QAAQ,aAAeC,CACxC,GAAG,2BAA2B,aAE/B,CAACP,EAAuB,CAAC,EAEtBQ,GAAwC1E,EAAQ,IAChDuE,EAA6C,GAC1CnF,KAAoBqF,EAC1B,CAACF,EAAsCnF,EAAe,CAAC,EAEpDuF,GAA+BjE,GAAY,kBAAoB,MAS/DkE,GANH1E,EAAY,iBACZC,EAAU,QAAQ,iBAAiB,iBAGpCO,GAAY,kBAAkB,mBAGH,uBAE7B/B,EAAU,IAAM,CACdgB,GAA0B,CAACiF,CAA4B,CACzD,EAAG,CAACA,CAA4B,CAAC,EAEjCjG,EAAU,IAAM,CACdY,GACE,CAACqF,GAAgCF,EACnC,CACF,EAAG,CAACE,EAA8BF,EAAqC,CAAC,EAExE/F,EAAU,IAAM,CACdc,GACE,CAACmF,GAAgCD,EACnC,CACF,EAAG,CAACC,EAA8BD,EAA4B,CAAC,EAE/D,IAAME,GAAqB7E,EAAQ,IAC1BkE,IAAyB,KAC7BM,GACCA,EAAa,QAAQ,aAAeC,CACxC,GAAG,2BAA2B,UAC7B,CAACP,EAAuB,CAAC,EAEtBY,GACJhH,GAAoBqC,EAAU,YAAY,IAAI,GAC9C,+BACI4E,GAAgBhH,GAAuB+G,EAAQ,EAC/CE,GAAwBtE,IAAaqE,EAAa,GAAK,CAAC,EAKxDE,GAAgBhH,EAAA,CAAC,CACrB,KAAAiH,EACA,QAASC,EAAoB,CAAC,EAC9B,MAAAC,EAAQ,CAAC,CACX,IAQM,CAKJ,IAAMC,EAJ0B,OAAO,KAAKnF,CAAW,EAAE,OAAS,EAK9D,CACE,GAAG3B,EACH,GAAG4B,EAAU,SAASA,EAAU,YAAY,IAAI,EAChD,GAAGD,CACL,EACA,CACE,GAAG3B,EACH,GAAGyG,EACL,EAEJ,OAAOM,GAAkB,CACvB,YAAa1G,EACb,KAAMsG,EACN,YAAaG,EACb,MAAAD,EACA,QAAS,CACP,GAAGD,EACH,aAAc,CACZ,QAASA,EAAkB,cAAc,SAAW,EACtD,CACF,CACF,CAAC,CACH,EAxCsB,iBA0ChBI,GAAmC,GACvC3G,IACCuB,EAAU,YAAY,OAAS,qBACtB/B,IAGNoH,GAAoB,GACxB5G,IAAwB,OACxBR,GACA+B,EAAU,YAAY,OAAS,qBAG3B,CAAE,KAAMsF,EAAU,UAAWC,EAAkB,EAAIC,GACvDvH,EACA,CACE,QAASoH,EACX,CACF,EAEM,CAAE,KAAMI,GAAmB,UAAWC,EAA2B,EACrEC,GAAwB/G,EAAgC,CACtD,QAAS,EAAQA,CACnB,CAAC,EAEHJ,EAAU,IAAM,CAEZiH,IACAA,GAAkB,OAAS,GAC3B,CAAC3G,GAEDC,GAA8B0G,GAAkB,CAAC,EAAE,EAAE,CAEzD,EAAG,CAACA,GAAmB3G,CAA0B,CAAC,EAElD,GAAM,CACJ,KAAM8G,EACN,UAAWC,EACb,EAAIf,GAAc,CAChB,KAAM,+BACN,QAAS,CACP,UAAWgB,GACTrH,EACAkF,GACAxF,CACF,EACA,aAAc,CACZ,QAASiH,EACX,CACF,CACF,CAAC,EAEKW,GAAkClG,EAAQ,IACvCmG,GACLzF,GAAY,mBAAmB,uBAC/BR,GAAa,kBAAkB,sBACjC,EACC,CACDQ,GAAY,mBAAmB,uBAC/BR,GAAa,kBAAkB,sBACjC,CAAC,EAMKkG,EAAsBpG,EAAQ,IAAM,CACxC,IAAMqG,EAAgB,CACpB,SAAUC,EACV,KAAMC,GACN,IAAK9B,CACP,EAGA,GAAIvE,EAAY,aACd,OAAOA,EAAY,aAIrB,IAAMsE,EAAerE,EAAU,QAAQ,cAAc,aACrD,GAAIqE,GAAgB,CAACH,EACnB,OAAOG,EAIT,GACED,GACA,CAACF,EAED,OAAOI,EAIT,GACEJ,GACAE,EAEA,OAAO+B,EAQT,GAHEnC,GACAA,EAAgC,OAAS,EAO3C,OACEkC,EACE3F,GAAY,eACd,GAAK4F,CAET,EAAG,CACDpG,EACAC,EAAU,OACVoE,EACA7D,GAAY,gBACZ2D,EACAF,CACF,CAAC,EAEDxF,EAAU,IAAM,CACVyH,GAAuBA,IAAwBhH,IACjDC,GAAmB+G,CAAmB,CAE1C,EAAG,CAACA,EAAqBhH,EAAe,CAAC,EAEzC,IAAMoH,GAAoBxG,EAAQ,KACzB,CACL,GAAG6E,GACH,GAAGtG,EACH,GAAG4B,EAAU,QAAQ,0BACrB,GAAGD,CACL,GACC,CACD2E,GACAtG,EACA4B,EAAU,QAAQ,0BAClBD,CACF,CAAC,EAEKuG,GAAoCzG,EAAQ,IAE7CoG,IAAwB3B,GACvBtE,EAAU,YAAY,OAAS,6BAChC,EAAQ/B,GACP+C,GACAiF,IAAwB3B,EAE3B,CACD2B,EACAjG,EAAU,YAAY,KACtB/B,EACA+C,CACF,CAAC,EAEK,CACJ,KAAMuF,EACN,UAAWC,EACb,EAAIC,GAA+B,CACjC,QAAS,CACP,aAAc,CACZ,QAASH,EACX,EACA,UAAWnI,GAAS,WAAW,yBACjC,EACA,YAAakI,EACf,CAAC,EAEKK,GAAuC,GAC1CjI,GACCuB,EAAU,YAAY,OAAS,oBACjCgB,GAGI,CACJ,KAAM2F,EACN,UAAWC,EACb,EAAIC,GAAmD,CACrD,YAAapI,EACb,YAAasB,EACb,aAAcnB,EACd,QAAS,CACP,aAAc,CACZ,QAAS8H,EACX,EACA,UAAWI,GACT3I,GAAS,WAAW,iBACpB4H,GACAE,EACAlG,EACAkG,IAAwB3B,CAC1B,CACF,CACF,CAAC,EAEKyC,GAA2BlH,EAAQ,IAErCG,EAAU,YAAY,OAAS,oBAC9B,EAAQ/B,GAAiB+C,EAE3B,CAAChB,EAAU,YAAY,KAAM/B,EAAc+C,CAAoB,CAAC,EAE7D,CAAE,KAAMgG,CAAoB,EAAIC,GAAsC,CAC1E,YAAalH,EACb,QAAS,CACP,aAAc,CACZ,QAASgH,EACX,EACA,UAAWG,GAA8B/I,EAAS4B,CAAW,CAC/D,CACF,CAAC,EAEK,CAAE,KAAMoH,CAAmB,EAAIC,GAA2B,CAC9D,YAAarH,CACf,CAAC,EAEK,CACJ,KAAMsH,GACN,UAAWC,GACX,QAASC,EACX,EAAIC,GAA2B,CAC7B,aAAc5I,EACd,mBAAoBE,EACpB,QAAS,CACP,aAAc,CACZ,QAAS,EAAQA,CACnB,CACF,CACF,CAAC,EAEK,CAAE,yBAAA2I,EAAyB,EAAIC,GAA4B,CAC/D,aAAc9I,EACd,mBAAoBE,EACpB,QAAS,CACP,aAAc,CACZ,QAAS,EAAQA,CACnB,CACF,CACF,CAAC,EAEK6I,EAA0C9H,EAC9C,KAAO,CACL,eAAgBwD,GAAmB,QAAU,CAAC,EAC9C,kBAAmBuC,GAAsB,QAAU,CAAC,EACpD,gBAAiBuB,GAAoB,QAAU,CAAC,EAChD,aAActD,GAAkC,QAAU,CAAC,EAC3D,0BAA2B0C,GAA8B,QAAU,CAAC,EACpE,iBAAkBI,GAAiC,QAAU,CAAC,EAC9D,iBAAkBK,GAAqB,QAAU,CAAC,EAClD,OAAQ,CAAC,CACX,GACA,CACE3D,GAAmB,OACnBuC,GAAsB,OACtBuB,GAAoB,OACpBtD,GAAkC,OAClC8C,GAAiC,OACjCK,GAAqB,OACrBT,GAA8B,MAChC,CACF,EAEMqB,GAGF,CACF,eAAgB,KAChB,kBAAmBhC,GAAsB,KAAK,iBAAiB,EAC/D,gBAAiB,KACjB,aAAc,KACd,iBAAkBe,GAAiC,KAAK,iBAAiB,EACzE,0BAA2B,KAC3B,iBAAkB,KAClB,OAAQ,IACV,EAEMkB,GAGF,CACF,eAAgBxE,GAAmB,OAAO,oBAAoB,EAC9D,kBAAmBuC,GAAsB,OAAO,oBAAoB,EACpE,gBAAiBuB,GAAoB,OAAO,oBAAoB,EAChE,aACEtD,GAAkC,OAAO,oBAAoB,EAC/D,0BACE0C,GAA8B,OAAO,oBAAoB,EAC3D,iBACEI,GAAiC,OAAO,oBAAoB,EAC9D,iBAAkBK,GAAqB,OAAO,oBAAoB,EAClE,OAAQ,IACV,EAEM,CACJ,QAAAtD,GACA,kBAAmBoE,GAA6B,CAAC,EACjD,iBAAkBC,GAA4B,CAAC,CACjD,EAAIxH,GAAc,CAAC,EAEbyH,GAAwBtE,IAAS,KAEjCuE,EAA6BpI,EACjC,IACEqI,EAAiBP,EAAW,eAAgB,CAC1C,QAASlJ,GAAuBuJ,IAAyB,EAC3D,CAAC,EACH,CAACL,EAAW,eAAgBlJ,EAAqBuJ,EAAqB,CACxE,EAIMG,GAAoBtI,EAAQ,IAC3ByF,GAAU,QACR8C,GAAc9C,EAAS,QAA8BA,EAAS,IAAI,EAD1C,KAE9B,CAACA,GAAU,QAASA,GAAU,IAAI,CAAC,EAEhC+C,EAAgCxI,EAAQ,IAAM,CAClD,IAAMyI,EAAgB,CACpB,GAAGlK,EACH,GAAG0J,GACH,KAAMvH,GAAY,kBAAkB,MACpC,mBAAoBA,GAAY,kBAAkB,YAClD,GAAI4H,IAAqB,CACvB,cAAe,CAACA,EAAiB,CACnC,CACF,EAEA,OAAOD,EAAiBP,EAAW,kBAAmBW,CAAa,CACrE,EAAG,CACDlK,EACA0J,GACAvH,GAAY,kBAAkB,MAC9BA,GAAY,kBAAkB,YAC9B4H,GACAR,EAAW,iBACb,CAAC,EAEKY,GAA8B1I,EAAQ,IAAM,CAChD,IAAMyI,EAAgB,CACpB,GAAGlK,EACH,gBAAiBmC,GAAY,kBAAkB,eACjD,EACA,OAAO2H,EAAiBP,EAAW,gBAAiBW,CAAa,CACnE,EAAG,CACDX,EAAW,gBACXvJ,EACAmC,GAAY,kBAAkB,eAChC,CAAC,EAEKiI,EAA+B3I,EAAQ,IAAM,CAOjD,IAAMyI,EAAgB,CACpB,GAPsB,CACtB,iBAAkB,CAChB,uBACER,GAA2B,sBAC/B,CACF,EAGE,GAAG1J,EACH,GAAG2J,EACL,EAEA,OAAOG,EAAiBP,EAAW,iBAAkBW,CAAa,CACpE,EAAG,CACDX,EAAW,iBACXI,GACA3J,EACA0J,EACF,CAAC,EAEKW,EAA+B5I,EAAQ,IAAM,CACjD,IAAM6I,EAAYrB,IAAoB,mBAAmB,aAAa,KACnEsB,GAAcA,EAAU,OAAS,SACpC,EACML,EAAgB,CACpB,GAAGlK,EACH,UAAWsK,GAAW,SACxB,EAEA,OAAOR,EAAiBP,EAAW,iBAAkBW,CAAa,CACpE,EAAG,CACDX,EAAW,iBACXvJ,EACAiJ,EACF,CAAC,EAEKuB,EAA2B/I,EAAQ,IAAM,CAI7C,IAAMyI,EAAgB,CACpB,GAJ6B,CAC7B,aAAcrC,CAChB,EAGE,GAAG7H,CACL,EAEA,OAAO8J,EAAiBP,EAAW,aAAcW,CAAa,CAChE,EAAG,CAACX,EAAW,aAAcvJ,EAAyB6H,CAAmB,CAAC,EAEpE4C,EAAwChJ,EAAQ,IAAM,CAC1D,IAAMyI,EAAgB,CACpB,GAAGlK,EACH,GAAGsG,EACL,EACA,OAAOwD,EACLP,EAAW,0BACXW,CACF,CACF,EAAG,CACDX,EAAW,0BACXvJ,EACAsG,EACF,CAAC,EAEK4D,GAAgBzI,EAAQ,KACrB,CACL,eAAgBoI,EAChB,kBAAmBI,EACnB,gBAAiBE,GACjB,iBAAkBC,EAClB,iBAAkBC,EAClB,aAAcG,EACd,0BAA2BC,CAC7B,GACC,CACDZ,EACAI,EACAE,GACAC,EACAC,EACAG,EACAC,CACF,CAAC,EAEKC,GAAiC,GACrC7K,GACA+C,GACAhB,EAAU,YAAY,OAAS,UAG3B+I,GACJzF,IACAuC,IACArF,IACAoG,IACA9C,IACAwD,IACA/B,IACAG,IACAc,GAEIwC,GAAuBnJ,EAAQ,IAAM,CAEzC,IAAMoJ,EADQ1I,GAAY,kBAAoB,OAEnCoH,EAAW,iBAAiB,OAAS,EAEhD,MAAO,GACLmB,IACA,CAACC,IACOjK,GACR6I,EAAW,kBAAkB,OAAS,GACtCA,EAAW,iBAAiB,OAAS,GACrCsB,EAEJ,EAAG,CACDH,GACAC,GACAjK,EACA6I,EAAW,kBAAkB,OAC7BA,EAAW,iBAAiB,OAC5BA,EAAW,iBAAiB,OAC5BpH,GAAY,eACd,CAAC,EAED/B,EAAU,IAAM,CACVwK,KACFhK,EAAc,QAAU,CACtB,eAAgBkK,EACdjB,EACAN,EAAW,eACX,CAAE,oBAAqB,EAAK,CAC9B,EACA,kBAAmBuB,EACjBb,EACAV,EAAW,kBACX,CAAE,oBAAqB,EAAK,CAC9B,EACA,gBAAiB,CAAC,EAClB,iBAAkBuB,EAChBV,EACAb,EAAW,iBACX,CAAE,oBAAqB,EAAK,CAC9B,EACA,iBAAkBuB,EAChBT,EACAd,EAAW,iBACX,CAAE,oBAAqB,EAAK,CAC9B,EACA,aAAcuB,EACZN,EACAjB,EAAW,aACX,CAAE,oBAAqB,EAAK,CAC9B,EACA,0BAA2BuB,EACzBL,EACAlB,EAAW,0BACX,CAAE,oBAAqB,EAAK,CAC9B,CACF,EAEAtH,GAAc,CACZ,eAAgB4H,EAChB,kBAAmBI,EACnB,gBAAiB,CAAC,EAClB,iBAAkBG,EAClB,iBAAkBC,EAClB,aAAcG,EACd,0BAA2BC,EAC3B,OAAQ,CAAC,CACX,CAAC,EACDzI,EAAS,QAAQ,EAErB,EAAG,CACD4I,GACA5I,EACA6H,EACAI,EACAG,EACAnI,GACAsH,EAAW,eACXA,EAAW,kBACXA,EAAW,iBACXA,EAAW,aACXiB,EACAjB,EAAW,iBACXc,EACAd,EAAW,0BACXkB,CACF,CAAC,EAED,IAAMM,GAAOrL,EAACsL,GAAmB,CAC/BhJ,EAASgJ,CAAI,CACf,EAFa,QAIPC,GAAkBvL,EAAA,MAAOwL,GACzBjG,GAAqBrD,EAAU,YAAY,OAAS,iBAC/CsJ,EAIP1D,GACA5F,EAAU,YAAY,OAAS,oBAExB,MAAMuJ,EAAmBD,EAAQ1D,GAAsB,OAAQ,CACpE,oBAAqB,EACvB,CAAC,EAIDe,GACA3G,EAAU,YAAY,OAAS,mBAExB,MAAMuJ,EACXD,EACA3C,GAAiC,OACjC,CACE,oBAAqB,EACvB,CACF,EAIAK,GACAhH,EAAU,YAAY,OAAS,mBAExB,MAAMuJ,EAAmBD,EAAQtC,GAAqB,OAAQ,CACnE,oBAAqB,EACvB,CAAC,EAIDnD,GACA7D,EAAU,YAAY,OAAS,eAExB,MAAMuJ,EACXD,EACAzF,GAAkC,OAClC,CACE,oBAAqB,EACvB,CACF,EAIA0C,GACAvG,EAAU,YAAY,OAAS,4BAExB,MAAMuJ,EACXD,EACA/C,GAA8B,OAC9B,CACE,oBAAqB,EACvB,CACF,EAIAY,GACAnH,EAAU,YAAY,OAAS,kBAExB,MAAMuJ,EAAmBD,EAAQnC,GAAoB,OAAQ,CAClE,oBAAqB,EACvB,CAAC,EAGI,CAAC,EAvEc,mBA+ElBqC,GAA2B1L,EAC/B2L,GAC6B,CAC7B,GAAI,CAACC,GAAgBD,CAAK,EACxB,OAAO,KAGT,IAAME,EAAWF,EAAM,iBAAiB,0BAIlCG,EACJ,MAAM,QAAQD,CAAQ,EAAIA,EAAS,CAAC,EAAIA,EAS1C,OAAIC,GAA8B,SAAWC,GACpC,CACL,MAAOD,EAA6B,MACpC,OAAQA,EAA6B,OACrC,UAAWA,EAA6B,SAC1C,EAEK,IACT,EA7BiC,4BA+BjC,eAAeE,GAASR,EAAqB,CAC3C,IAAMS,EAAkB/J,EAAU,YAAY,KACxCgK,EAAe,MAAMX,GAAgBC,CAAM,EAOjD,OALIS,KAAmB/K,EAAc,UACnCA,EAAc,QACZ+K,CACF,EAAIb,EAAmBc,EAAcrC,EAAWoC,CAAe,CAAC,GAE1D/J,EAAU,YAAY,KAAM,CAClC,IAAK,iBACH,OAAAtB,GAAuBsL,EAAa,OAAO,EACpC,QAAQ,QAAQ,CAAE,KAAM,CAAE,YAAaA,EAAa,OAAQ,CAAE,CAAC,EAExE,IAAK,oBAAqB,CACxB,IAAMC,EACJ,CAACrL,GAAwBH,EACrByL,EACJtL,GACAH,GACA8B,GAAY,SACZA,GAAY,QAAQ,OAAS9B,EAE/B,GAAIwL,GAAyBC,EAAmB,CAO9C,IAAMC,GAAkD,CACtD,kBAPmCC,GACnCJ,EACA,qBACA,OACA,eACF,EAGE,KAAM,aACN,aAAcvL,EACd,YAAaT,CACf,EACMqM,GAAW,MAAMxH,GACrBsH,EACF,EACMlM,EAAeoM,IAAU,MAAM,YAAY,GACjD,GAAI,CAACpM,EACH,MAAMqM,EAAsB,yBAAyB,EAGvD,aAAMzI,GAA+B,CACnC,aAAc5D,CAChB,CAAC,EAIDY,GAAwBZ,CAAY,EAE7BoM,EACT,SAAWzL,EAAsB,CAC/B,IAAM2L,GAA+BH,GACnCJ,EACA,qBACA,OACA,eACF,EAEA,aAAMnI,GAA+B,CACnC,aAAcjD,CAChB,CAAC,EACMyD,GAA8B,CACnC,aAAczD,EACd,kBAAmB2L,EACrB,CAAC,CACH,CAEA,MACF,CACA,IAAK,mBAAoB,CACvB,GAAM,CACJ,qCACEC,EACF,0CACEC,EACF,GAAGC,EACL,EAAIV,EAEEW,GACJ5K,EAAY,4CAA8C,GACtD6K,GAAkC,CACtC,kBAAmBF,GACnB,eAAgBC,EAClB,EAEA,GAAI,CACF,IAAMN,EAAW,MAAMvH,GAA8C,CACnE,aAAclE,EACd,QAAAgM,EACF,CAAC,EACKC,EAAqBR,GAAU,MAAM,mBAAmB,GAC9D,GAAI,CAACQ,EACH,MAAMP,EAAsB,gCAAgC,EAE9D,OAAAvL,GAA8B8L,CAAkB,EAEzCR,CACT,OAASZ,EAAO,CACd,IAAMqB,EAAUtB,GAAyBC,CAAK,EAC9C,MAAIqB,GAGF7K,GAAe,CACb,GAAGqJ,EACH,qCACEyB,GAJF9E,IAAwB3B,CAIuB,EAC/C,0CAA2CwG,EAAQ,SACrD,CAAC,EAGGrB,CACR,CACF,CAEA,IAAK,mBAAoB,CACvB,GAAIhC,GACF,OAAO,QAAQ,QAAQ,CACrB,KAAM,CACJ,kBAAmB,CACjB,GAAI3I,CACN,CACF,CACF,CAAC,EAEH,IAAMuL,EAAW,MAAMtH,GAAkC,CACvD,aAAcnE,EACd,mBAAoBE,EACpB,QAAS,CACP,UAAWkL,EAAa,SAC1B,CACF,CAAC,EACD,aAAMzC,GAA2B,EAC1B8C,CACT,CACA,IAAK,eAAgB,CACnB,GAAIf,EAAO,eAAiB0B,GAE1B,OAAO,QAAQ,QAAQ,CACrB,KAAM,CACJ,aAAc1B,EAAO,YACvB,CACF,CAAC,EAGH,GAAItF,EAAgC,SAAW,EAC7C,MAAMsG,EAAsB,6BAA6B,EAG3D,GACE,CAAChB,EAAO,cACRtF,EAAgC,OAAS,EAEzC,MAAMsG,EAAsB,oCAAoC,EAQlE,GACEpG,GANiC,CACjCI,EACA8B,EACF,EAI6B,SAASkD,EAAO,YAAY,EAEvD,MAAMgB,EACJ,uCACEW,GACE3B,EAAO,YACT,CACF,GACF,EAGF,GACElF,GACAkF,EAAO,eAAiBhF,EAExB,GAAI,CACF,MAAMnB,GAA6C,CACjD,aAAcvE,CAChB,CAAC,EACD,MAAMqF,GAA+B,CACvC,OAASwF,EAAO,CACd,GAAKA,GAAoB,UAAU,SAAW,IAC5C,MAAMA,EAGR,MAAMxF,GAA+B,CACvC,CAGF,GAAIqF,EAAO,cAAgBnD,EACzB,OAAOnD,GAA0C,CAC/C,aAAcpE,EACd,QAAS,CACP,UAAW,WACb,CACF,CAAC,EACI,GAAI0K,EAAO,cAAgBlD,GAChC,OAAOpD,GAA0C,CAC/C,aAAcpE,EACd,QAAS,CACP,UAAW,SACb,CACF,CAAC,EACI,GAAI0K,EAAO,cAAgBhF,EAChC,OACEF,GACA7D,GAAY,kBAAoB,MAEzB2C,GAA6C,CAClD,aAActE,CAChB,CAAC,EAEM,QAAQ,QAAQ,CACrB,KAAM,CAAE,aAAc0K,EAAO,YAAa,CAC5C,CAAC,EAIL,MAAMgB,EAAsB,mBAAmB,CACjD,CAEA,IAAK,kBAKH,OAAIhB,EAAO,kBAAoB,wBAC7B,MAAMlG,GAA+B,CACnC,aAAcxE,EACd,eAAgB,uBAChB,aAAc,sBAChB,CAAC,EAGI,CACL,KAAM,CAAE,eAAgB0K,EAAO,eAAgB,CACjD,EAGF,IAAK,4BACH,GAAI,CAQF,IAPiB,MAAMrG,GAA4C,CACjE,aAAcrE,EACd,QAASoL,CACX,CAAC,IAEmD,MAAM,YAGxD,MAAA5K,GAAmC,EAAK,EACxCM,GAAyB,cAAc,EACjC4K,EACJ,2DACF,EAGF,OAAO,MAAMpH,GAA6C,CACxD,aAActE,CAChB,CAAC,CACH,QAAE,CAEA,MAAMqF,GAA+B,CACvC,CAGF,QACE,MAAMqG,EAAsB,oBAAoB,CAEpD,CACF,CAlRe,OAAAxM,EAAAgM,GAAA,YAkSR,CAIL,UANgBf,IAAkBD,GAWlC,YAAA/I,EAKA,UAAAC,EAMA,kBAAmBC,GAOnB,uBAzC6BnC,EAAA,IAAM,CAEnCQ,GAAsB,UAAU,CAClC,EAH+B,0BA+C7B,KAAM4B,GAMN,KAhDqBpC,EAAA,IAAM,CACvBc,GACF6B,GAAkB,EAEpBN,GAAS,CACX,EALuB,kBAuDrB,KAAMgJ,GAON,SAAAW,GAKA,OAAQnC,EAAW3H,EAAU,YAAY,IAAI,EAK7C,KAAM,CACJ,OAAQhB,EAAc,QACtB,UAAW4I,GAA4B5H,EAAU,YAAY,IAAI,EACjE,aAAc6H,GAAiB7H,EAAU,YAAY,IAAI,CAC3D,EAOA,gBAAAqJ,GAOA,oBACEtJ,EAAY,4CAA8C,GAO5D,iBAAkBjC,EAAA,MAChBwL,GACqC,CACrC,GAAItJ,EAAU,YAAY,OAAS,iBACjC,OAAOqD,EAAkB,iBAAiBiG,CAAM,EAGlD,GACE1D,GACA5F,EAAU,YAAY,OAAS,oBAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACA1D,GAAsB,OACtB,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAsB,iBAAiBoE,CAAY,CAC5D,CAEA,GACErD,GACA3G,EAAU,YAAY,OAAS,mBAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACA3C,GAAiC,OACjC,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAiC,iBAAiBqD,CAAY,CACvE,CAEA,GACEhD,GACAhH,EAAU,YAAY,OAAS,mBAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACAtC,GAAqB,OACrB,CAAE,oBAAqB,EAAK,CAC9B,EACA,OAAOA,GAAqB,iBAAiBgD,CAAY,CAC3D,CAEA,GACEnG,GACA7D,EAAU,YAAY,OAAS,eAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACAzF,GAAkC,OAClC,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAkC,iBAAiBmG,CAAY,CACxE,CAEA,GACEzD,GACAvG,EAAU,YAAY,OAAS,4BAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACA/C,GAA8B,OAC9B,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAA8B,iBAAiByD,CAAY,CACpE,CAEA,GACE7C,GACAnH,EAAU,YAAY,OAAS,kBAC/B,CACA,IAAMgK,EAAe,MAAMT,EACzBD,EACAnC,GAAoB,OACpB,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAoB,iBAAiB6C,CAAY,CAC1D,CAEA,OAAO,IACT,EAhFkB,oBAqFlB,cAAA1B,GAKA,aAAc1J,EAMd,kBAAmB6B,GAKnB,aACEY,GAAyB,WACzBE,GAAyB,WACzBE,GAAyC,WACzCc,GAA6B,WAC7BE,GAAqC,WACrCd,GAAmB,WACnBI,GAAuC,WACvCE,GAAwC,WACxCU,GAAwC,WACxCR,GAA0B,UAK5B,mBAAAkF,GAMA,UAAAnG,GAMA,qBAAAF,EAKA,cAAAI,GAMA,WAAAb,EAMA,mBAAAI,GAMA,yBACEE,IAAW,KAAMqK,GAAMA,EAAE,OAAS,gBAAgB,GAAK,GAMzD,yBACErK,IAAW,KAAMqK,GAAMA,EAAE,OAAS,uBAAuB,GAAK,GAMhE,MAAOtL,EACT,CACF,EA3/CuC","names":["useEffect","useMemo","useRef","useState","omit","useQuery","useLegalEntities","__name","client","useClient","identity","useIdentity","companyId","hasCompany","useQuery","getV1CompaniesCompanyIdLegalEntities","data","useDefaultLegalEntity","legalEntities","legalEntity","stepToFormSchemaMap","jsonSchemaToEmployment","useContractorOnboarding","__name","countryCode","externalId","employmentId","skipSteps","options","onboardingInitialValues","excludeProducts","onContractReviewedRef","useRef","useEffect","internalCountryCode","setInternalCountryCode","useState","internalEmploymentId","setInternalEmploymentId","internalContractDocumentId","setInternalContractDocumentId","fieldsMetaRef","selectedProduct","setSelectedProduct","includeEligibilityQuestionnaire","setIncludeEligibilityQuestionnaire","includeContractPreview","setIncludeContractPreview","includeContractDetails","setIncludeContractDetails","pendingNavigationStep","setPendingNavigationStep","steps","stepsArray","useMemo","buildSteps","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","employment","isLoadingEmployment","refetchEmployment","useEmploymentQuery","defaultLegalEntity","useDefaultLegalEntity","openTasks","useCompanyOpenTasks","employmentStatus","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","canInvite","disabledInviteButtonEmploymentStatus","invitedStatus","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","createContractorContractDocumentMutation","useCreateContractorContractDocument","uploadFileMutation","useUploadFile","updateUKandSaudiFieldsMutation","useUpdateUKandSaudiFields","createEligibilityQuestionnaireMutation","usePostCreateEligibilityQuestionnaire","manageContractorCorSubscriptionMutation","usePostManageContractorCorSubscription","setContractOriginMutation","useSetContractOrigin","updateEmploymentMutationAsync","mutationToPromise","signContractDocumentMutation","useSignContractDocument","manageContractorSubscriptionMutation","usePostManageContractorSubscriptions","deleteContractorCorSubscriptionMutation","useDeleteContractorCorSubscription","createEmploymentMutationAsync","createContractorContractDocumentMutationAsync","signContractDocumentMutationAsync","manageContractorSubscriptionMutationAsync","createEligibilityQuestionnaireMutationAsync","manageContractorCorSubscriptionMutationAsync","deleteContractorCorSubscriptionMutationAsync","setContractOriginMutationAsync","selectCountryForm","isLoadingCountries","countries","useCountriesSchemaField","selectedCountry","country","countryName","isPricingPlanEnabled","selectContractorSubscriptionForm","isLoadingContractorSubscriptions","contractorSubscriptions","filteredContractorSubscriptions","refetchContractorSubscriptions","isEligibilityQuestionnaireBlocked","useContractorSubscriptionSchemaField","hasEligibilityQuestionnaireSubmitted","subscription","corProductIdentifier","shouldIncludeEligibilityQuestionnaire","shouldIncludeContractPreview","isContractProvidedByCustomer","eligibilityAnswers","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","query","mergedFormValues","useJSONSchemaForm","isBasicInformationDetailsEnabled","isIR35FileEnabled","ir35File","isLoadingIR35File","useGetIR35File","contractDocuments","isLoadingContractDocuments","useGetContractDocuments","basicInformationForm","isLoadingBasicInformationForm","buildBasicInformationJsfModify","descriptionProvisionalStartDate","calculateProvisionalStartDateDescription","selectedPricingPlan","subscriptions","contractorStandardProductIdentifier","contractorPlusProductIdentifier","eligibilityFields","isEligibilityQuestionnaireEnabled","eligibilityQuestionnaireForm","isLoadingEligibilityQuestionnaire","useGetEligibilityQuestionnaire","isContractorOnboardingDetailsEnabled","contractorOnboardingDetailsForm","isLoadingContractorOnboardingDetailsForm","useContractorOnboardingDetailsSchemaWithCurrencies","buildContractDetailsJsfModify","isSignatureSchemaEnabled","signatureSchemaForm","useGetContractDocumentSignatureSchema","buildContractPreviewJsfModify","contractOriginForm","useGetContractOriginSchema","documentPreviewPdf","isLoadingDocumentPreviewForm","refetchDocumentPreviewForm","useGetShowContractDocument","hasCompanySignedContract","useHasCompanySignedContract","stepFields","stepFieldsWithFlatFieldsets","stepPresentation","employmentBasicInformation","employmentContractDetails","employmentCountryCode","selectCountryInitialValues","getInitialValues","convertedIr35File","dataURLtoFile","basicInformationInitialValues","initialValues","contractOriginInitialValues","contractDetailsInitialValues","contractPreviewInitialValues","signature","signatory","pricingPlanInitialValues","eligibilityQuestionnaireInitialValues","shouldHandleReadOnlyEmployment","initialLoading","isNavigatingToReview","hasContractPreviewFields","prettifyFormValues","goTo","step","parseFormValues","values","parseJSFToValidate","extractAiValidationError","error","isMutationError","rawError","servicesAndDeliverablesError","REMOTE_AI_ERROR_SOURCE","onSubmit","currentStepName","parsedValues","isEmploymentNotLoaded","hasChangedCountry","basicInformationPayload","omit","response","createStructuredError","basicInformationParsedValues","_servicesAndDeliverablesAiWarning","_servicesAndDeliverablesErrorSkippable","contractDetailsData","shouldSkipAiChecks","payload","contractDocumentId","aiError","transformAiErrorResponse","eorProductIdentifier","CONTRACT_PRODUCT_TITLES","a"]}
|
package/dist/chunk-6WGW27VH.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as F,b as P,c as k}from"./chunk-3B6BHFDV.js";import{a as w}from"./chunk-OPDKYPYM.js";import{a as c,b as C}from"./chunk-T5J2Z6ZR.js";import{j as h,k as x,l as v,n as b,o as D}from"./chunk-Y3CJRZLA.js";import{n as t}from"./chunk-G2LZFGZA.js";import{a as n}from"./chunk-P37U34EQ.js";import{CalendarIcon as V}from"lucide-react";import{format as R}from"date-fns";import{ChevronLeft as z,ChevronRight as L}from"lucide-react";import{DayPicker as O}from"react-day-picker";import{jsx as p}from"react/jsx-runtime";function N({className:r,classNames:i,showOutsideDays:m=!0,...a}){return p(O,{showOutsideDays:m,className:t("p-3",r),classNames:{months:"flex flex-col sm:flex-row gap-2",month:"flex flex-col gap-4",caption:"flex justify-center pt-1 relative items-center w-full",caption_label:"text-sm font-medium",nav:"flex items-center gap-1",nav_button:t(c({variant:"outline"}),"size-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-x-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:t("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md",a.mode==="range"?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:t(c({variant:"ghost"}),"size-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",day_range_end:"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground aria-selected:text-muted-foreground",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...i},components:{IconLeft:n(({className:l,...o})=>p(z,{className:t("size-4",l),...o}),"IconLeft"),IconRight:n(({className:l,...o})=>p(L,{className:t("size-4",l),...o}),"IconRight")},...a})}n(N,"Calendar");import{useState as B}from"react";import{Fragment as T,jsx as e,jsxs as u}from"react/jsx-runtime";function ee({field:r,fieldData:i,fieldState:m}){let{name:a,label:l,description:o,minDate:f,maxDate:g}=i,s=f?new Date(f):void 0,y=g?new Date(g):void 0,[I,_]=B(!1);return u(h,{"data-field":a,className:`flex flex-col RemoteFlows__DatePickerField__Item__${a}`,children:[e(x,{className:"RemoteFlows__DatePickerField__Label",children:l}),u(F,{open:I,onOpenChange:_,children:[e(P,{asChild:!0,children:e(v,{children:e("div",{children:u(C,{type:"button",variant:"outline",className:t("w-full pl-3 text-left font-normal",!r.value&&"text-muted-foreground"),"data-testid":`date-picker-button-${a}`,children:[r.value&&e(T,{children:R(r.value,"yyyy-MM-dd")}),e(V,{className:"ml-auto h-4 w-4 opacity-50"})]})})})}),e(k,{className:"w-auto p-0 RemoteFlows__DatepickerField__PopoverContent",align:"start",children:e(N,{mode:"single",className:"RemoteFlows__DatepickerField__Calendar",selected:r.value?new Date(r.value):void 0,onDayClick:d=>{let M=R(d,"yyyy-MM-dd");r.onChange(M),_(!1)},defaultMonth:s,disabled:d=>!!(s&&d<s||y&&d>y)})})]}),o?e(b,{helpCenter:e(w,{helpCenter:i.meta?.helpCenter}),children:o}):null,m.error&&e(D,{className:"RemoteFlows__DatePickerField__Error"})]})}n(ee,"DatePickerFieldDefault");export{ee as a};
|
|
2
|
-
//# sourceMappingURL=chunk-6WGW27VH.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields/default/DatePickerFieldDefault.tsx","../src/components/ui/calendar.tsx"],"sourcesContent":["import { Button } from '@/src/components/ui/button';\nimport {\n FormControl,\n FormDescription,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { DatePickerComponentProps } from '@/src/types/fields';\nimport { CalendarIcon } from 'lucide-react';\nimport { format } from 'date-fns';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { cn } from '@/src/lib/utils';\nimport { Calendar } from '@/src/components/ui/calendar';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\nimport { useState } from 'react';\n\nexport function DatePickerFieldDefault({\n field,\n fieldData,\n fieldState,\n}: DatePickerComponentProps) {\n const { name, label, description, minDate, maxDate } = fieldData;\n const minDateValue = minDate ? new Date(minDate) : undefined;\n const maxDateValue = maxDate ? new Date(maxDate) : undefined;\n const [open, setOpen] = useState(false);\n\n return (\n <FormItem\n data-field={name}\n className={`flex flex-col RemoteFlows__DatePickerField__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__DatePickerField__Label'>\n {label}\n </FormLabel>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <FormControl>\n <div>\n <Button\n type='button'\n variant={'outline'}\n className={cn(\n 'w-full pl-3 text-left font-normal',\n !field.value && 'text-muted-foreground',\n )}\n data-testid={`date-picker-button-${name}`}\n >\n {field.value && <>{format(field.value, 'yyyy-MM-dd')}</>}\n <CalendarIcon className='ml-auto h-4 w-4 opacity-50' />\n </Button>\n </div>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent\n className={`w-auto p-0 RemoteFlows__DatepickerField__PopoverContent`}\n align='start'\n >\n <Calendar\n mode='single'\n className='RemoteFlows__DatepickerField__Calendar'\n selected={field.value ? new Date(field.value) : undefined}\n onDayClick={(day) => {\n const formattedDate = format(day, 'yyyy-MM-dd');\n field.onChange(formattedDate);\n setOpen(false);\n }}\n defaultMonth={minDateValue}\n disabled={(date: Date) => {\n if (minDateValue && date < minDateValue) return true;\n if (maxDateValue && date > maxDateValue) return true;\n return false;\n }}\n />\n </PopoverContent>\n </Popover>\n {description ? (\n <FormDescription\n helpCenter={<HelpCenter helpCenter={fieldData.meta?.helpCenter} />}\n >\n {description}\n </FormDescription>\n ) : null}\n {fieldState.error && (\n <FormMessage className='RemoteFlows__DatePickerField__Error' />\n )}\n </FormItem>\n );\n}\n","import * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '@/src/lib/utils';\nimport { buttonVariants } from '@/src/components/ui/button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-2',\n month: 'flex flex-col gap-4',\n caption: 'flex justify-center pt-1 relative items-center w-full',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center gap-1',\n nav_button: cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n ),\n nav_button_previous: 'absolute left-1',\n nav_button_next: 'absolute right-1',\n table: 'w-full border-collapse space-x-1',\n head_row: 'flex',\n head_cell:\n 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n row: 'flex w-full mt-2',\n cell: cn(\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n ),\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal aria-selected:opacity-100',\n ),\n day_range_start:\n 'day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_range_end:\n 'day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_selected:\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n day_today: 'bg-accent text-accent-foreground',\n day_outside:\n 'day-outside text-muted-foreground aria-selected:text-muted-foreground',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle:\n 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n day_hidden: 'invisible',\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn('size-4', className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn('size-4', className)} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n"],"mappings":"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","names":["CalendarIcon","format","ChevronLeft","ChevronRight","DayPicker","jsx","Calendar","className","classNames","showOutsideDays","props","DayPicker","cn","buttonVariants","__name","ChevronLeft","ChevronRight","useState","Fragment","jsx","jsxs","DatePickerFieldDefault","field","fieldData","fieldState","name","label","description","minDate","maxDate","minDateValue","maxDateValue","open","setOpen","useState","FormItem","FormLabel","Popover","PopoverTrigger","FormControl","Button","cn","format","CalendarIcon","PopoverContent","Calendar","day","formattedDate","date","FormDescription","HelpCenter","FormMessage","__name"]}
|
package/dist/chunk-LKVQ32ZK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{f as a}from"./chunk-G2LZFGZA.js";import{b as m}from"./chunk-626FTNKA.js";import{a as f}from"./chunk-P37U34EQ.js";import{createHeadlessForm as y,modify as F}from"@remoteoss/remote-json-schema-form-kit";var O=f((e,t,n)=>{if(n&&n.jsfModify){let{required:r,allOf:i,...s}=n.jsfModify,{schema:o}=F(e,s);if(e=o,r){let l=Array.isArray(o.required)?o.required:[];typeof r=="function"?e.required=r(l):e.required=[...l,...r]}i&&(e.allOf=[...Array.isArray(o.allOf)?o.allOf:[],...i])}let d={};t&&(d=m(e.properties||{},"money").reduce((i,s)=>(i[s]=a(t[s]),i),{}));let u=JSON.parse(JSON.stringify({...t,...d}));return{meta:{"x-jsf-fieldsets":e["x-jsf-fieldsets"],"x-jsf-presentation":e["x-jsf-presentation"]},...y(e,{initialValues:u})}},"createHeadlessForm");export{O as a};
|
|
2
|
-
//# sourceMappingURL=chunk-LKVQ32ZK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/createHeadlessForm.tsx"],"sourcesContent":["import { FieldValues } from 'react-hook-form';\nimport {\n createHeadlessForm as baseCreateHeadlessForm,\n modify,\n} from '@remoteoss/remote-json-schema-form-kit';\nimport { convertToCents } from '@/src/components/form/utils';\nimport {\n JSFModify,\n JSONSchemaFormResultWithFieldsets,\n} from '@/src/flows/types';\nimport { findFieldsByType } from '@/src/flows/utils';\nimport { JSFFieldset } from '@/src/types/remoteFlows';\n\n/*\n * Creates a headless form from a JSON Schema, useful to avoid code duplication when creating headless forms.\n * @param jsfSchema - The JSON Schema\n * @param fieldValues - The field values\n * @param options - The options\n * @returns The headless form\n */\nexport const createHeadlessForm = (\n jsfSchema: Record<string, unknown>,\n fieldValues?: FieldValues,\n options?: { jsfModify?: JSFModify },\n): JSONSchemaFormResultWithFieldsets => {\n if (options && options.jsfModify) {\n const { required, allOf, ...modifyConfig } = options.jsfModify;\n const { schema } = modify(jsfSchema, modifyConfig);\n jsfSchema = schema;\n\n if (required) {\n const baseRequired = Array.isArray(schema.required)\n ? schema.required\n : [];\n\n if (typeof required === 'function') {\n // Function: allows full control over required fields\n jsfSchema.required = required(baseRequired);\n } else {\n // Array: merge with existing required fields (backwards compatible)\n jsfSchema.required = [...baseRequired, ...required];\n }\n }\n\n if (allOf) {\n jsfSchema.allOf = [\n ...(Array.isArray(schema.allOf) ? schema.allOf : []),\n ...allOf,\n ];\n }\n }\n\n let moneyFieldsData: Record<string, number | null> = {};\n\n if (fieldValues) {\n const moneyFields = findFieldsByType(jsfSchema.properties || {}, 'money');\n moneyFieldsData = moneyFields.reduce<Record<string, number | null>>(\n (acc, field) => {\n acc[field] = convertToCents(fieldValues[field]);\n return acc;\n },\n {},\n );\n }\n\n /**\n * We create a deep copy of the field values to avoid modifying the original object.\n * This problem is caused by json-schema-form-v0.\n */\n const initialValues = JSON.parse(\n JSON.stringify({\n ...fieldValues,\n ...moneyFieldsData,\n }),\n );\n\n return {\n meta: {\n 'x-jsf-fieldsets': jsfSchema['x-jsf-fieldsets'] as JSFFieldset,\n 'x-jsf-presentation': jsfSchema['x-jsf-presentation'] as\n | Record<string, unknown>\n | undefined,\n },\n ...baseCreateHeadlessForm(jsfSchema, {\n initialValues,\n }),\n };\n};\n"],"mappings":"wHACA,OACE,sBAAsBA,EACtB,UAAAC,MACK,yCAgBA,IAAMC,EAAqBC,EAAA,CAChCC,EACAC,EACAC,IACsC,CACtC,GAAIA,GAAWA,EAAQ,UAAW,CAChC,GAAM,CAAE,SAAAC,EAAU,MAAAC,EAAO,GAAGC,CAAa,EAAIH,EAAQ,UAC/C,CAAE,OAAAI,CAAO,EAAIC,EAAOP,EAAWK,CAAY,EAGjD,GAFAL,EAAYM,EAERH,EAAU,CACZ,IAAMK,EAAe,MAAM,QAAQF,EAAO,QAAQ,EAC9CA,EAAO,SACP,CAAC,EAED,OAAOH,GAAa,WAEtBH,EAAU,SAAWG,EAASK,CAAY,EAG1CR,EAAU,SAAW,CAAC,GAAGQ,EAAc,GAAGL,CAAQ,CAEtD,CAEIC,IACFJ,EAAU,MAAQ,CAChB,GAAI,MAAM,QAAQM,EAAO,KAAK,EAAIA,EAAO,MAAQ,CAAC,EAClD,GAAGF,CACL,EAEJ,CAEA,IAAIK,EAAiD,CAAC,EAElDR,IAEFQ,EADoBC,EAAiBV,EAAU,YAAc,CAAC,EAAG,OAAO,EAC1C,OAC5B,CAACW,EAAKC,KACJD,EAAIC,CAAK,EAAIC,EAAeZ,EAAYW,CAAK,CAAC,EACvCD,GAET,CAAC,CACH,GAOF,IAAMG,EAAgB,KAAK,MACzB,KAAK,UAAU,CACb,GAAGb,EACH,GAAGQ,CACL,CAAC,CACH,EAEA,MAAO,CACL,KAAM,CACJ,kBAAmBT,EAAU,iBAAiB,EAC9C,qBAAsBA,EAAU,oBAAoB,CAGtD,EACA,GAAGe,EAAuBf,EAAW,CACnC,cAAAc,CACF,CAAC,CACH,CACF,EAnEkC","names":["baseCreateHeadlessForm","modify","createHeadlessForm","__name","jsfSchema","fieldValues","options","required","allOf","modifyConfig","schema","modify","baseRequired","moneyFieldsData","findFieldsByType","acc","field","convertToCents","initialValues","baseCreateHeadlessForm"]}
|
package/dist/chunk-NZHABET6.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as f,b as g}from"./chunk-3UBFABDS.js";import{b as R}from"./chunk-ZOTY3CAM.js";import{a as u}from"./chunk-OPDKYPYM.js";import{j as l,k as F,l as t,n as s,o as _}from"./chunk-Y3CJRZLA.js";import{n as a}from"./chunk-G2LZFGZA.js";import{a as c}from"./chunk-P37U34EQ.js";import{Fragment as v}from"react";import{jsx as e,jsxs as r}from"react/jsx-runtime";var y=c(({field:d,fieldData:i,fieldState:C})=>{let{name:m,label:n,description:p,options:b}=i;return e("fieldset",{className:a("space-y-3",`RemoteFlows__RadioGroupField__Item__${m}`),"data-field":m,children:r(l,{children:[e("legend",{children:n}),p&&e(s,{helpCenter:e(u,{helpCenter:i.meta?.helpCenter}),children:p}),e(t,{children:e(f,{"aria-label":n||m,onValueChange:o=>{d.onChange(o)},value:d.value,className:"flex flex-col",children:b?.map(o=>e(v,{children:r(l,{"data-field":m,className:"flex items-start space-x-3 space-y-0 gap-0 min-h-[24px] RemoteFlows__RadioField__Item",children:[e(t,{children:e(g,{value:o.value,className:a("RemoteFlows__RadioField__Input",o.recommended&&"mt-1"),disabled:o.disabled})}),r("div",{children:[r(F,{className:"font-normal mb-0 RemoteFlows__RadioField__Label",children:[o.label," ",o.recommended&&e(R,{variant:"secondary",className:"ml-2",children:"Recommended"})]}),o.description&&e(s,{className:"mt-2",children:o.description})]})]})},o.value))})}),C.error&&e(_,{})]})})},"RadioGroupFieldDefault");export{y as a};
|
|
2
|
-
//# sourceMappingURL=chunk-NZHABET6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields/default/RadioGroupFieldDefault.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport {\n FormControl,\n FormDescription,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { RadioGroup, RadioGroupItem } from '@/src/components/ui/radio-group';\nimport { cn } from '@/src/lib/utils';\nimport { RadioGroupComponentProps } from '@/src/types/fields';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\nimport { Badge } from '@/src/components/ui/badge';\n\nexport const RadioGroupFieldDefault = ({\n field,\n fieldData,\n fieldState,\n}: RadioGroupComponentProps) => {\n const { name, label, description, options } = fieldData;\n return (\n <fieldset\n className={cn('space-y-3', `RemoteFlows__RadioGroupField__Item__${name}`)}\n data-field={name}\n >\n <FormItem>\n <legend>{label}</legend>\n {description && (\n <FormDescription\n helpCenter={<HelpCenter helpCenter={fieldData.meta?.helpCenter} />}\n >\n {description}\n </FormDescription>\n )}\n <FormControl>\n <RadioGroup\n aria-label={label || name}\n onValueChange={(value: string) => {\n field.onChange(value);\n }}\n value={field.value}\n className='flex flex-col'\n >\n {options?.map((option) => (\n <Fragment key={option.value}>\n <FormItem\n data-field={name}\n className='flex items-start space-x-3 space-y-0 gap-0 min-h-[24px] RemoteFlows__RadioField__Item'\n >\n <FormControl>\n <RadioGroupItem\n value={option.value}\n className={cn(\n 'RemoteFlows__RadioField__Input',\n option.recommended && 'mt-1',\n )}\n disabled={option.disabled}\n />\n </FormControl>\n <div>\n <FormLabel className='font-normal mb-0 RemoteFlows__RadioField__Label'>\n {option.label}{' '}\n {option.recommended && (\n <Badge variant='secondary' className='ml-2'>\n Recommended\n </Badge>\n )}\n </FormLabel>\n {option.description && (\n <FormDescription className='mt-2'>\n {option.description}\n </FormDescription>\n )}\n </div>\n </FormItem>\n </Fragment>\n ))}\n </RadioGroup>\n </FormControl>\n {fieldState.error && <FormMessage />}\n </FormItem>\n </fieldset>\n );\n};\n"],"mappings":"mRAAA,OAAS,YAAAA,MAAgB,QA0BjB,cAAAC,EAkCY,QAAAC,MAlCZ,oBAZD,IAAMC,EAAyBC,EAAA,CAAC,CACrC,MAAAC,EACA,UAAAC,EACA,WAAAC,CACF,IAAgC,CAC9B,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,YAAAC,EAAa,QAAAC,CAAQ,EAAIL,EAC9C,OACEL,EAAC,YACC,UAAWW,EAAG,YAAa,uCAAuCJ,CAAI,EAAE,EACxE,aAAYA,EAEZ,SAAAN,EAACW,EAAA,CACC,UAAAZ,EAAC,UAAQ,SAAAQ,EAAM,EACdC,GACCT,EAACa,EAAA,CACC,WAAYb,EAACc,EAAA,CAAW,WAAYT,EAAU,MAAM,WAAY,EAE/D,SAAAI,EACH,EAEFT,EAACe,EAAA,CACC,SAAAf,EAACgB,EAAA,CACC,aAAYR,GAASD,EACrB,cAAgBU,GAAkB,CAChCb,EAAM,SAASa,CAAK,CACtB,EACA,MAAOb,EAAM,MACb,UAAU,gBAET,SAAAM,GAAS,IAAKQ,GACblB,EAACmB,EAAA,CACC,SAAAlB,EAACW,EAAA,CACC,aAAYL,EACZ,UAAU,wFAEV,UAAAP,EAACe,EAAA,CACC,SAAAf,EAACoB,EAAA,CACC,MAAOF,EAAO,MACd,UAAWP,EACT,iCACAO,EAAO,aAAe,MACxB,EACA,SAAUA,EAAO,SACnB,EACF,EACAjB,EAAC,OACC,UAAAA,EAACoB,EAAA,CAAU,UAAU,kDAClB,UAAAH,EAAO,MAAO,IACdA,EAAO,aACNlB,EAACsB,EAAA,CAAM,QAAQ,YAAY,UAAU,OAAO,uBAE5C,GAEJ,EACCJ,EAAO,aACNlB,EAACa,EAAA,CAAgB,UAAU,OACxB,SAAAK,EAAO,YACV,GAEJ,GACF,GA9BaA,EAAO,KA+BtB,CACD,EACH,EACF,EACCZ,EAAW,OAASN,EAACuB,EAAA,EAAY,GACpC,EACF,CAEJ,EArEsC","names":["Fragment","jsx","jsxs","RadioGroupFieldDefault","__name","field","fieldData","fieldState","name","label","description","options","cn","FormItem","FormDescription","HelpCenter","FormControl","RadioGroup","value","option","Fragment","RadioGroupItem","FormLabel","Badge","FormMessage"]}
|
package/dist/chunk-VUQH44VX.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as lt}from"./chunk-VAIBLWOY.js";import{a as ot}from"./chunk-HYNJ3ITY.js";import{c as ct}from"./chunk-KMLI4ISS.js";import{a as st}from"./chunk-GNDFT5KG.js";import{a as Ue,b as Ge,c as He,f as We,g as $e,h as ze,i as Qe,j as Xe,k as Ye,l as Ze,n as et,o as tt,p as nt,q as at,u as it}from"./chunk-W4BOTAD6.js";import{a as Je,b as xe,c as Te,e as Ie,f as Ke}from"./chunk-K7HS55JD.js";import{b as M,h as y,i as A,k as ae,u as F}from"./chunk-G2LZFGZA.js";import{a as rt}from"./chunk-JDIKYCN6.js";import{a as d}from"./chunk-P37U34EQ.js";import{useCallback as Kt,useEffect as ie,useMemo as l,useRef as Ut,useState as H}from"react";import Gt from"lodash.mergewith";import{jsx as mt}from"react/jsx-runtime";var Ht={employment_basic_information:"basic_information",contract_details:"contract_details"},Wt={select_country:null,basic_information:"employment_basic_information",engagement_agreement_details:null,contract_details:"contract_details",benefits:null,employment_agreement_preview:null,review:null},$t=d(({isLoadingBasicInformationForm:u,isLoadingContractDetailsForm:L,isLoadingEngagementAgreementDetails:W,isLoadingEmploymentAgreementPreview:$,isLoadingEmploymentEngagementAgreementDetails:a,isLoadingEmployment:k,isLoadingBenefitsOffersSchema:q,isLoadingBenefitOffers:o,isLoadingCompany:N,isLoadingCountries:i,employmentStatus:v,employmentId:s,currentStepName:J,basicInformationFields:w,contractDetailsFields:z,arePreOnboardingRequirementsFulfilled:Q})=>{let x=u||L||W||a||k||q||o||N||i||$,B=v&&xe.includes(v),D=v&&!Te.includes(v)&&Q,T=!!(s&&B&&J!=="review"),X=x||T,Y=!!(T&&!x&&w.length>0&&z.length>0);return{isLoading:X,isNavigatingToReview:Y,isEmploymentReadOnly:B,canInvite:D}},"getLoadingStates"),mn=d(({employmentId:u,companyId:L,countryCode:W,type:$,options:a,skipSteps:k,externalId:q,initialValues:o})=>{let{updateErrorContext:N}=ct({flow:"onboarding",metadata:{employmentId:u,companyId:L,isUpdating:!!u}}),[i,v]=H(u),[s,J]=H(W||null),[w,z]=H(!1),[Q,x]=H(!1),B=a?.features?.includes("dynamic_steps")??!1,D=a?.features?.includes("ea_preview")&&Q,{steps:T,stepsArray:X}=l(()=>Je({includeSelectCountry:!k?.includes("select_country"),includeEngagementAgreementDetails:w,useDynamicSteps:B,useEAPreview:D}),[w,k,B,D]),Y=Kt(e=>{N({step:e.name})},[N]),{fieldValues:_,stepState:t,setFieldValues:dt,previousStep:ut,nextStep:ft,goToStep:Z,setStepValues:se}=rt(T,Y),{data:I,isLoading:re}=He(i,{enabled:!!(i&&a?.features?.includes("dynamic_steps"))}),pt=l(()=>({...o,...I,...t.values?.engagement_agreement_details,..._}),[I,o,t.values?.engagement_agreement_details,_]),{data:c,isLoading:oe}=nt(s,pt,{jsfModify:a?.jsfModify,queryOptions:{enabled:!!(s&&a?.features?.includes("dynamic_steps"))}});ie(()=>{let e=!!(c?.fields&&c.fields.length>0);e!==w&&z(e)},[c?.fields,w]);let K=Ut({select_country:{},basic_information:{},contract_details:{},benefits:{},engagement_agreement_details:{},employment_agreement_preview:{}}),{data:f,isLoading:le,refetch:gt}=st({employmentId:i,queryParams:{exclude_files:!0}});u&&f?.country?.code&&!s&&J(f.country.code);let{data:ce,isLoading:me}=Ge(i),{data:U,isLoading:de,refetch:yt}=Ue(L),_t=a?.features?.includes("onboarding_reserves")&&t.currentStep.name==="review"||!1,{data:bt}=tt(L,i,_t),St=!!(a?.features?.includes("pre_onboarding_requirements")&&i),{data:G,isLoading:ue}=at(i,{queryOptions:{enabled:St}}),fe=l(()=>ue?!1:!G||G.length===0?!0:G.every(e=>e.status==="finished"),[G,ue]),{selectCountryForm:R,isLoading:pe,countries:ge}=Ze({jsfModify:a?.jsfModify?.select_country,queryOptions:{enabled:t.currentStep.name==="select_country"}}),ye=l(()=>!!ge?.find(e=>e.value===s)?.employment_agreement_preview_available,[ge,s]);ie(()=>{x(ye)},[ye]);let Et=!!i&&D&&t.currentStep.name==="employment_agreement_preview",{data:Ft,isLoading:_e}=it(i,{queryOptions:{enabled:Et}}),be=ze(a),Se=Qe(s,a),Ee=Ye(a),Fe=Xe(),ve=et(),{mutateAsync:vt}=M(be),{mutateAsync:we}=M(Se),{mutateAsync:wt}=M(Ee),{mutateAsync:ht}=M(Fe),{mutateAsync:Ct}=M(ve),Vt=Wt[t.currentStep.name]||"employment_basic_information",Ot=Ht[Vt],Pt=f?.[Ot]||{},he=d(({form:e,options:r={},query:m={},jsonSchemaVersion:P})=>{let te=Object.keys(_).length>0?{...o,...t.values?.[t.currentStep.name],..._}:{...o,...Pt};return We({countryCode:s,form:e,fieldValues:te,query:m,options:{...r,queryOptions:{enabled:r.queryOptions?.enabled??!0}},jsonSchemaVersion:P})},"useJSONSchema"),Mt=!!(s&&(t.currentStep.name==="basic_information"||u)),At=!!(s&&(t.currentStep.name==="contract_details"||u)),{data:p,isLoading:Ce}=he({form:"employment_basic_information",options:{jsfModify:a?.jsfModify?.basic_information,queryOptions:{enabled:Mt}},jsonSchemaVersion:Ke(a)}),h=a?.jsfModify?.contract_details?.fields?.annual_gross_salary,ee=h&&typeof h=="object"&&"presentation"in h?h.presentation:void 0,Ve=a?.jsfModify?.contract_details?.fields?.equity_compensation,Lt=l(()=>({fields:{annual_gross_salary:{...h,presentation:{annual_gross_salary_conversion_properties:{label:ee?.annual_gross_salary_conversion_properties?.label,description:ee?.annual_gross_salary_conversion_properties?.description},desiredCurrency:U?.desired_currency,Component:d(e=>mt(ot,{desiredCurrency:U?.desired_currency||"",...e}),"Component")}},equity_compensation:{...Ve,presentation:{calculateDynamicProperties:d((e,r)=>{let m=e.equity_compensation?.offer_equity_compensation,P=r?.meta?.cost;return{extra:mt(lt,{offerEquity:m,equityCost:P})}},"calculateDynamicProperties")}}}}),[h,ee,U?.desired_currency,Ve]),qt=Ie(a,s),{data:g,isLoading:Oe}=he({form:"contract_details",query:{employment_id:i},options:{jsfModify:{...a?.jsfModify?.contract_details,fields:{...a?.jsfModify?.contract_details?.fields,...Lt.fields}},queryOptions:{enabled:At}},jsonSchemaVersion:qt}),{data:b,isLoading:Pe}=$e(i,_,a),Me=l(()=>{if(t.currentStep.name==="benefits"){let e={...t.values?.[t.currentStep.name],..._};return Gt({},ce,e)}return{}},[t.currentStep.name,ce,t.values,_]),n=l(()=>({select_country:R?.fields||[],basic_information:p?.fields||[],engagement_agreement_details:c?.fields||[],contract_details:g?.fields||[],benefits:b?.fields||[],employment_agreement_preview:[],review:[]}),[R?.fields,p?.fields,g?.fields,b?.fields,c?.fields]),Bt={select_country:null,basic_information:p?.meta["x-jsf-fieldsets"],engagement_agreement_details:c?.meta["x-jsf-fieldsets"],contract_details:g?.meta["x-jsf-fieldsets"],benefits:null,employment_agreement_preview:null,review:null},Dt={select_country:R?.meta?.["x-jsf-presentation"],basic_information:p?.meta?.["x-jsf-presentation"],engagement_agreement_details:c?.meta?.["x-jsf-presentation"],contract_details:g?.meta?.["x-jsf-presentation"],benefits:b?.meta?.["x-jsf-presentation"],employment_agreement_preview:null,review:null},{country:Ae,basic_information:Le={},contract_details:qe={},status:Be}=f||{},De=Ae?.code,Re=t.currentStep.name,C=l(()=>A(n.select_country,{country:s||De||""}),[n.select_country,s,De]),V=l(()=>{let e={...o,...Le};return A(n.basic_information,e)},[n.basic_information,Le,o]),j=l(()=>{let e={...o,...I};return A(n.engagement_agreement_details,e)},[n.engagement_agreement_details,o,I]),E=l(()=>{let e={...o,...qe};return A(n.contract_details,e)},[n.contract_details,qe,o]),O=l(()=>{let e={...o,...Me};return A(n.benefits,e)},[n.benefits,Me,o]),Rt=l(()=>f?{select_country:C,basic_information:ae(n.basic_information,V),engagement_agreement_details:j,contract_details:f?.contract_details!==null?ae(n.contract_details,E):E,benefits:O,employment_agreement_preview:{}}:{select_country:C,basic_information:V,contract_details:E,benefits:O,employment_agreement_preview:{}},[C,V,j,E,O,f,n]),{isLoading:jt,isNavigatingToReview:je,isEmploymentReadOnly:kt,canInvite:Nt}=l(()=>$t({isLoadingBasicInformationForm:Ce,isLoadingContractDetailsForm:Oe,isLoadingEngagementAgreementDetails:oe,isLoadingEmploymentEngagementAgreementDetails:re,isLoadingEmployment:le,isLoadingBenefitsOffersSchema:Pe,isLoadingBenefitOffers:me,isLoadingCompany:de,isLoadingCountries:pe,isLoadingEmploymentAgreementPreview:_e,employmentId:u,employmentStatus:Be,basicInformationFields:n.basic_information,contractDetailsFields:n.contract_details,currentStepName:Re,arePreOnboardingRequirementsFulfilled:fe}),[Ce,Oe,oe,re,le,Pe,me,de,pe,_e,u,Be,n.basic_information,n.contract_details,Re,fe]);ie(()=>{je&&(K.current={select_country:F(C,n.select_country,{skipMoneyConversion:!0}),basic_information:F(V,n.basic_information,{skipMoneyConversion:!0}),engagement_agreement_details:F(j,n.engagement_agreement_details,{skipMoneyConversion:!0}),contract_details:F(E,n.contract_details,{skipMoneyConversion:!0}),benefits:F(O,n.benefits,{skipMoneyConversion:!0}),employment_agreement_preview:{}},se({select_country:C,basic_information:V,contract_details:E,benefits:O,engagement_agreement_details:j,employment_agreement_preview:{},review:{}}),Z("review"))},[V,O,E,j,Z,je,C,se,n.basic_information,n.benefits,n.contract_details,n.select_country,n.engagement_agreement_details]);let ke=d(async e=>R&&t.currentStep.name==="select_country"?e:p&&t.currentStep.name==="basic_information"?await y(e,p?.fields,{isPartialValidation:!1}):c&&t.currentStep.name==="engagement_agreement_details"?await y(e,c?.fields,{isPartialValidation:!1}):g&&t.currentStep.name==="contract_details"?await y(e,g?.fields,{isPartialValidation:!1}):b&&t.currentStep.name==="benefits"?await y(e,b?.fields,{isPartialValidation:!1}):{},"parseFormValues");async function Jt(e){let r=t.currentStep.name,m=await ke(e);switch(r in K.current&&(K.current[r]=F(m,n[r])),yt(),t.currentStep.name){case"select_country":return J(m.country),Promise.resolve({data:{countryCode:m.country}});case"basic_information":{let P=!i&&s,Ne=i&&s&&f?.country&&f?.country.code!==s;if(P||Ne){let te={basic_information:m,type:$,country_code:s,external_id:q};try{let S=await vt(te);if(S.error)return S;if(S.data){let ne=S.data?.data?.employment?.id;return ne&&(v(ne),await Ct({employmentId:ne,eligible_to_work_in_residing_country:"citizen",employer_or_work_restrictions:!1})),S}}catch(S){throw console.error("Error creating onboarding:",S),S}}else if(i)return we({employmentId:i,basic_information:m,pricing_plan_details:{frequency:"monthly"},external_id:q});return}case"engagement_agreement_details":return ht({employmentId:i,engagement_agreement_details:m});case"contract_details":return we({employmentId:i,external_id:q,...{contract_details:m,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return wt({employmentId:i,...m})}}d(Jt,"onSubmit");function xt(){ut()}d(xt,"back");function Tt(){ft()}d(Tt,"next");function It(e){Z(e)}return d(It,"goTo"),{employmentId:i,options:{features:a?.features},creditRiskStatus:U?.default_legal_entity_credit_risk_status,onboardingReservesStatus:bt,fieldValues:_,stepState:t,fields:n[t.currentStep.name],isLoading:jt,isSubmitting:be.isPending||Se.isPending||Ee.isPending||Fe.isPending||ve.isPending,initialValues:Rt,handleValidation:d(async e=>{if(t.currentStep.name==="select_country")return R.handleValidation(e);if(t.currentStep.name==="benefits"&&b){let r=await y(e,b?.fields,{isPartialValidation:!1});return b?.handleValidation(r)}if(p&&t.currentStep.name==="basic_information"){let r=await y(e,p?.fields,{isPartialValidation:!1});return p?.handleValidation(r)}if(c&&t.currentStep.name==="engagement_agreement_details"){let r=await y(e,c?.fields,{isPartialValidation:!1});return c?.handleValidation(r)}if(g&&t.currentStep.name==="contract_details"){let r=await y(e,g?.fields,{isPartialValidation:!1});return g?.handleValidation(r)}return null},"handleValidation"),checkFieldUpdates:dt,parseFormValues:ke,onSubmit:Jt,back:xt,next:Tt,goTo:It,meta:{fields:K.current,fieldsets:Bt[t.currentStep.name],presentation:Dt[t.currentStep.name]},refetchEmployment:gt,employment:f,isEmploymentReadOnly:kt,canInvite:Nt,steps:X,selectedCountry:s?{code:s,name:Ae?.name}:null,employmentAgreementPreview:Ft}},"useOnboarding");export{mn as a};
|
|
2
|
-
//# sourceMappingURL=chunk-VUQH44VX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Onboarding/hooks.tsx"],"sourcesContent":["import { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';\nimport {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n} from '@/src/client';\nimport { JSFFields, NestedMeta } from '@/src/types/remoteFlows';\nimport { useStepState, Step } from '@/src/flows/useStepState';\nimport {\n disabledInviteButtonEmploymentStatus,\n getContractDetailsSchemaVersion,\n getBasicInformationSchemaVersion,\n reviewStepAllowedEmploymentStatus,\n buildSteps,\n StepKeys,\n} from '@/src/flows/Onboarding/utils';\nimport { prettifyFormValues } from '@/src/lib/utils';\nimport {\n getInitialValues,\n enableAckFields,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowProps } from '@/src/flows/Onboarding/types';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport mergeWith from 'lodash.mergewith';\nimport {\n useBenefitOffers,\n useBenefitOffersSchema,\n useCompany,\n useCountriesSchemaField,\n useCreateEmployment,\n useEmploymentAgreementPreview,\n useEmploymentEngagementAgreementDetails,\n useEmploymentOnboardingReservesStatus,\n useEngagementAgreementDetailsSchema,\n useGetPreOnboardingRequirements,\n useJSONSchemaForm,\n useUpdateBenefitsOffers,\n useUpdateEmployment,\n useUpdateEmploymentEngagementAgreementDetails,\n useUpsertContractEligibility,\n} from '@/src/flows/Onboarding/api';\nimport { JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { AnnualGrossSalary } from '@/src/flows/Onboarding/components/AnnualGrossSalary';\nimport { $TSFixMe, JSFField, JSFFieldset } from '@/src/types/remoteFlows';\nimport { EquityPriceDetails } from '@/src/flows/Onboarding/components/EquityPriceDetails';\nimport { useErrorReporting } from '@/src/components/error-handling/useErrorReporting';\nimport { useEmploymentQuery } from '@/src/common/api/employment';\n\ntype OnboardingHookProps = Omit<OnboardingFlowProps, 'render'>;\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<StepKeys, JSONSchemaFormType | null> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n engagement_agreement_details: null,\n contract_details: 'contract_details',\n benefits: null,\n employment_agreement_preview: null,\n review: null,\n};\n\nconst getLoadingStates = ({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEngagementAgreementDetails,\n isLoadingEmploymentAgreementPreview,\n isLoadingEmploymentEngagementAgreementDetails,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentStatus,\n employmentId,\n currentStepName,\n basicInformationFields,\n contractDetailsFields,\n arePreOnboardingRequirementsFulfilled,\n}: {\n isLoadingBasicInformationForm: boolean;\n isLoadingContractDetailsForm: boolean;\n isLoadingEngagementAgreementDetails: boolean;\n isLoadingEmploymentEngagementAgreementDetails: boolean;\n isLoadingEmployment: boolean;\n isLoadingBenefitsOffersSchema: boolean;\n isLoadingBenefitOffers: boolean;\n isLoadingCompany: boolean;\n isLoadingCountries: boolean;\n isLoadingEmploymentAgreementPreview: boolean;\n employmentStatus?: Employment['status'];\n employmentId?: string;\n currentStepName: string;\n basicInformationFields: JSFFields;\n contractDetailsFields: JSFFields;\n arePreOnboardingRequirementsFulfilled: boolean;\n}) => {\n const initialLoading =\n isLoadingBasicInformationForm ||\n isLoadingContractDetailsForm ||\n isLoadingEngagementAgreementDetails ||\n isLoadingEmploymentEngagementAgreementDetails ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers ||\n isLoadingCompany ||\n isLoadingCountries ||\n isLoadingEmploymentAgreementPreview;\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const canInvite =\n employmentStatus &&\n !disabledInviteButtonEmploymentStatus.includes(employmentStatus) &&\n arePreOnboardingRequirementsFulfilled;\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 {\n isLoading,\n isNavigatingToReview,\n isEmploymentReadOnly,\n canInvite,\n };\n};\n\nexport const useOnboarding = ({\n employmentId,\n companyId,\n countryCode,\n type,\n options,\n skipSteps,\n externalId,\n initialValues: onboardingInitialValues,\n}: OnboardingHookProps) => {\n const { updateErrorContext } = useErrorReporting({\n flow: 'onboarding',\n metadata: {\n employmentId,\n companyId,\n isUpdating: Boolean(employmentId),\n },\n });\n\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n\n const [\n includeEngagementAgreementDetails,\n setIncludeEngagementAgreementDetails,\n ] = useState<boolean>(false);\n\n const [\n includeEmploymentAgreementPreview,\n setIncludeEmploymentAgreementPreview,\n ] = useState<boolean>(false);\n\n const useDynamicSteps = options?.features?.includes('dynamic_steps') ?? false;\n const useEAPreview =\n options?.features?.includes('ea_preview') &&\n includeEmploymentAgreementPreview;\n\n const { steps, stepsArray } = useMemo(\n () =>\n buildSteps({\n includeSelectCountry: !skipSteps?.includes('select_country'),\n includeEngagementAgreementDetails,\n useDynamicSteps,\n useEAPreview,\n }),\n [\n includeEngagementAgreementDetails,\n skipSteps,\n useDynamicSteps,\n useEAPreview,\n ],\n );\n\n const onStepChange = useCallback(\n (step: Step<StepKeys>) => {\n updateErrorContext({\n step: step.name,\n });\n },\n [updateErrorContext],\n );\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(steps, onStepChange);\n\n const {\n data: employmentEngagementAgreementDetails,\n isLoading: isLoadingEmploymentEngagementAgreementDetails,\n } = useEmploymentEngagementAgreementDetails(internalEmploymentId, {\n enabled: Boolean(\n !!internalEmploymentId && options?.features?.includes('dynamic_steps'),\n ),\n });\n\n const engagementAgreementDetailsFieldValues = useMemo(() => {\n return {\n ...onboardingInitialValues,\n ...employmentEngagementAgreementDetails,\n ...stepState.values?.engagement_agreement_details,\n ...fieldValues,\n };\n }, [\n employmentEngagementAgreementDetails,\n onboardingInitialValues,\n stepState.values?.engagement_agreement_details,\n fieldValues,\n ]);\n\n const {\n data: engagementAgreementDetailsSchema,\n isLoading: isLoadingEngagementAgreementDetails,\n } = useEngagementAgreementDetailsSchema(\n internalCountryCode as string,\n engagementAgreementDetailsFieldValues,\n {\n jsfModify: options?.jsfModify,\n queryOptions: {\n enabled: Boolean(\n !!internalCountryCode && options?.features?.includes('dynamic_steps'),\n ),\n },\n },\n );\n\n // logic to include the engagement agreement details step based on the schema fields\n useEffect(() => {\n const hasFields = Boolean(\n engagementAgreementDetailsSchema?.fields &&\n engagementAgreementDetailsSchema.fields.length > 0,\n );\n if (hasFields !== includeEngagementAgreementDetails) {\n setIncludeEngagementAgreementDetails(hasFields);\n }\n }, [\n engagementAgreementDetailsSchema?.fields,\n includeEngagementAgreementDetails,\n ]);\n\n const fieldsMetaRef = useRef<{\n select_country: NestedMeta;\n basic_information: NestedMeta;\n contract_details: NestedMeta;\n benefits: NestedMeta;\n engagement_agreement_details: NestedMeta;\n employment_agreement_preview: NestedMeta;\n }>({\n select_country: {},\n basic_information: {},\n contract_details: {},\n benefits: {},\n engagement_agreement_details: {},\n employment_agreement_preview: {},\n });\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmploymentQuery({\n employmentId: internalEmploymentId as string,\n queryParams: { exclude_files: true },\n });\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 (employmentId && employment?.country?.code && !internalCountryCode) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n\n const {\n data: company,\n isLoading: isLoadingCompany,\n refetch: refetchCompany,\n } = useCompany(companyId);\n\n const isOnboardingReservesEnabled =\n (options?.features?.includes('onboarding_reserves') &&\n stepState.currentStep.name === 'review') ||\n false;\n\n const { data: onboardingReservesStatus } =\n useEmploymentOnboardingReservesStatus(\n companyId,\n internalEmploymentId,\n isOnboardingReservesEnabled,\n );\n\n const isPreOnboardingRequirementsEnabled = Boolean(\n options?.features?.includes('pre_onboarding_requirements') &&\n !!internalEmploymentId,\n );\n\n const { data: requirements, isLoading: isLoadingPreOnboardingRequirements } =\n useGetPreOnboardingRequirements(internalEmploymentId as string, {\n queryOptions: {\n enabled: isPreOnboardingRequirementsEnabled,\n },\n });\n\n const arePreOnboardingRequirementsFulfilled = useMemo(() => {\n // While loading, block the invite\n if (isLoadingPreOnboardingRequirements) {\n return false;\n }\n // If no requirements data at all, allow invite (don't block the flow)\n if (!requirements || requirements.length === 0) {\n return true;\n }\n\n // Check if all requirements are finished (even if there's an error, check cached data)\n return requirements.every(\n (requirement) => requirement.status === 'finished',\n );\n }, [requirements, isLoadingPreOnboardingRequirements]);\n\n const {\n selectCountryForm,\n isLoading: isLoadingCountries,\n countries,\n } = useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n queryOptions: {\n enabled: stepState.currentStep.name === 'select_country',\n },\n });\n\n const isEmploymentAgreementPreviewAvailable = useMemo(() => {\n return Boolean(\n countries?.find((country) => country.value === internalCountryCode)\n ?.employment_agreement_preview_available,\n );\n }, [countries, internalCountryCode]);\n\n useEffect(() => {\n setIncludeEmploymentAgreementPreview(isEmploymentAgreementPreviewAvailable);\n }, [isEmploymentAgreementPreviewAvailable]);\n\n const isEmploymentEnabled =\n Boolean(internalEmploymentId) &&\n useEAPreview &&\n stepState.currentStep.name === 'employment_agreement_preview';\n\n const {\n data: employmentAgreementPreview,\n isLoading: isLoadingEmploymentAgreementPreview,\n } = useEmploymentAgreementPreview(internalEmploymentId, {\n queryOptions: {\n enabled: isEmploymentEnabled,\n },\n });\n\n const createEmploymentMutation = useCreateEmployment(options);\n const updateEmploymentMutation = useUpdateEmployment(\n internalCountryCode as string,\n options,\n );\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers(options);\n const updateEngagementAgreementMutation =\n useUpdateEmploymentEngagementAgreementDetails();\n const updateContractEligibilityMutation = useUpsertContractEligibility();\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 // TODO: refactor all uses in onboarding together to avoid having mixed behaviour\n const { mutateAsync: updateEngagementAgreementMutationAsync } =\n mutationToPromise(updateEngagementAgreementMutation);\n const { mutateAsync: updateContractEligibilityMutationAsync } =\n mutationToPromise(updateContractEligibilityMutation);\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 query = {},\n jsonSchemaVersion,\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n };\n query?: Record<string, string>;\n jsonSchemaVersion?: number | 'latest';\n }) => {\n const hasUserEnteredAnyValues = Object.keys(fieldValues).length > 0;\n // when you write on the fields, the values are stored in the fieldValues state\n // when values are stored in the stepState is when the user has navigated to the step\n // and then we have the values from the server and the onboardingInitialValues that the user can inject,\n const mergedFormValues = hasUserEnteredAnyValues\n ? {\n ...onboardingInitialValues,\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : {\n ...onboardingInitialValues,\n ...serverEmploymentData,\n };\n\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues: mergedFormValues,\n query,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n jsonSchemaVersion,\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 jsonSchemaVersion: getBasicInformationSchemaVersion(options),\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 equityCompensationField =\n options?.jsfModify?.contract_details?.fields?.equity_compensation;\n\n const contractDetailsCustomFields = 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 desiredCurrency: company?.desired_currency,\n Component: (props: JSFField & { currency: string }) => {\n return (\n <AnnualGrossSalary\n desiredCurrency={company?.desired_currency || ''}\n {...props}\n />\n );\n },\n },\n },\n equity_compensation: {\n ...equityCompensationField,\n presentation: {\n calculateDynamicProperties: (\n values: FieldValues,\n field: JSFField,\n ) => {\n const offerEquity =\n values.equity_compensation?.offer_equity_compensation;\n const equityCost = field?.meta?.cost;\n\n return {\n extra: (\n <EquityPriceDetails\n offerEquity={offerEquity}\n equityCost={equityCost as $TSFixMe}\n />\n ),\n };\n },\n },\n },\n },\n }),\n [\n annualGrossSalaryField,\n annualSalaryFieldPresentation,\n company?.desired_currency,\n equityCompensationField,\n ],\n );\n\n const effectiveContractDetailsJsonSchemaVersion =\n getContractDetailsSchemaVersion(options, internalCountryCode);\n\n const { data: contractDetailsForm, isLoading: isLoadingContractDetailsForm } =\n useJSONSchema({\n form: 'contract_details',\n query: {\n employment_id: internalEmploymentId as string,\n },\n options: {\n jsfModify: {\n ...options?.jsfModify?.contract_details,\n fields: {\n ...options?.jsfModify?.contract_details?.fields,\n ...contractDetailsCustomFields.fields,\n },\n },\n queryOptions: {\n enabled: isContractDetailsEnabled,\n },\n },\n jsonSchemaVersion: effectiveContractDetailsJsonSchemaVersion,\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 StepKeys], // 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<StepKeys, JSFFields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n engagement_agreement_details:\n engagementAgreementDetailsSchema?.fields || [],\n contract_details: contractDetailsForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n employment_agreement_preview: [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractDetailsForm?.fields,\n benefitOffersSchema?.fields,\n engagementAgreementDetailsSchema?.fields,\n ],\n );\n\n const stepFieldsWithFlatFieldsets: Record<\n StepKeys,\n JSFFieldset | null | undefined\n > = {\n select_country: null,\n basic_information: basicInformationForm?.meta['x-jsf-fieldsets'],\n engagement_agreement_details:\n engagementAgreementDetailsSchema?.meta['x-jsf-fieldsets'],\n contract_details: contractDetailsForm?.meta['x-jsf-fieldsets'],\n benefits: null,\n employment_agreement_preview: null,\n review: null,\n };\n\n const stepPresentation: Record<\n StepKeys,\n Record<string, unknown> | null | undefined\n > = {\n select_country: selectCountryForm?.meta?.['x-jsf-presentation'],\n basic_information: basicInformationForm?.meta?.['x-jsf-presentation'],\n engagement_agreement_details:\n engagementAgreementDetailsSchema?.meta?.['x-jsf-presentation'],\n contract_details: contractDetailsForm?.meta?.['x-jsf-presentation'],\n benefits: benefitOffersSchema?.meta?.['x-jsf-presentation'],\n employment_agreement_preview: null,\n review: null,\n };\n\n const {\n country,\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n status: employmentStatus,\n } = employment || {};\n\n const employmentCountryCode = country?.code;\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 const initialValues = {\n ...onboardingInitialValues,\n ...employmentBasicInformation,\n };\n\n return getInitialValues(stepFields.basic_information, initialValues);\n }, [\n stepFields.basic_information,\n employmentBasicInformation,\n onboardingInitialValues,\n ]);\n\n const engagementAgreementDetailsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentEngagementAgreementDetails,\n };\n\n return getInitialValues(\n stepFields.engagement_agreement_details,\n initialValues,\n );\n }, [\n stepFields.engagement_agreement_details,\n onboardingInitialValues,\n employmentEngagementAgreementDetails,\n ]);\n\n const contractDetailsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_details, initialValues);\n }, [\n stepFields.contract_details,\n employmentContractDetails,\n onboardingInitialValues,\n ]);\n\n const benefitsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...initialValuesBenefitOffers,\n };\n\n return getInitialValues(stepFields.benefits, initialValues);\n }, [\n stepFields.benefits,\n initialValuesBenefitOffers,\n onboardingInitialValues,\n ]);\n\n const initialValues = useMemo(() => {\n if (employment) {\n return {\n select_country: selectCountryInitialValues,\n // We don't store ack fields in the db, eg \"ack_start_date_ammendment\" for Argentina, and therefore is not returned in the employment response\n // So when an employmentId exists, it means that the user has already started the onboarding process, and we need to enable the ack fields\n basic_information: enableAckFields(\n stepFields['basic_information'],\n basicInformationInitialValues,\n ),\n engagement_agreement_details: engagementAgreementDetailsInitialValues,\n contract_details:\n // if contract details is null, it means it has not been filled yet, so we can't enable the ack fields\n employment?.contract_details !== null\n ? enableAckFields(\n stepFields['contract_details'],\n contractDetailsInitialValues,\n )\n : contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n employment_agreement_preview: {},\n };\n }\n return {\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n employment_agreement_preview: {},\n };\n }, [\n selectCountryInitialValues,\n basicInformationInitialValues,\n engagementAgreementDetailsInitialValues,\n contractDetailsInitialValues,\n benefitsInitialValues,\n employment,\n stepFields,\n ]);\n\n const { isLoading, isNavigatingToReview, isEmploymentReadOnly, canInvite } =\n useMemo(\n () =>\n getLoadingStates({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEngagementAgreementDetails,\n isLoadingEmploymentEngagementAgreementDetails,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n isLoadingEmploymentAgreementPreview,\n employmentId,\n employmentStatus: employmentStatus,\n basicInformationFields: stepFields.basic_information,\n contractDetailsFields: stepFields.contract_details,\n currentStepName: currentStepName,\n arePreOnboardingRequirementsFulfilled,\n }),\n [\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEngagementAgreementDetails,\n isLoadingEmploymentEngagementAgreementDetails,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n isLoadingEmploymentAgreementPreview,\n employmentId,\n employmentStatus,\n stepFields.basic_information,\n stepFields.contract_details,\n currentStepName,\n arePreOnboardingRequirementsFulfilled,\n ],\n );\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n { skipMoneyConversion: true },\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n { skipMoneyConversion: true },\n ),\n engagement_agreement_details: prettifyFormValues(\n engagementAgreementDetailsInitialValues,\n stepFields.engagement_agreement_details,\n { skipMoneyConversion: true },\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n { skipMoneyConversion: true },\n ),\n benefits: prettifyFormValues(\n benefitsInitialValues,\n stepFields.benefits,\n { skipMoneyConversion: true },\n ),\n employment_agreement_preview: {},\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n engagement_agreement_details: engagementAgreementDetailsInitialValues,\n employment_agreement_preview: {},\n review: {},\n });\n\n goToStep('review');\n }\n }, [\n basicInformationInitialValues,\n benefitsInitialValues,\n contractDetailsInitialValues,\n engagementAgreementDetailsInitialValues,\n goToStep,\n isNavigatingToReview,\n selectCountryInitialValues,\n setStepValues,\n stepFields.basic_information,\n stepFields.benefits,\n stepFields.contract_details,\n stepFields.select_country,\n stepFields.engagement_agreement_details,\n ]);\n\n const parseFormValues = async (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 await parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n engagementAgreementDetailsSchema &&\n stepState.currentStep.name === 'engagement_agreement_details'\n ) {\n return await parseJSFToValidate(\n values,\n engagementAgreementDetailsSchema?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return await parseJSFToValidate(values, contractDetailsForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (benefitOffersSchema && stepState.currentStep.name === 'benefits') {\n return await parseJSFToValidate(values, benefitOffersSchema?.fields, {\n isPartialValidation: false,\n });\n }\n\n return {};\n };\n\n async function onSubmit(values: FieldValues) {\n // Prettify values for the current step\n const currentStepName = stepState.currentStep.name;\n const parsedValues = await parseFormValues(values);\n if (currentStepName in fieldsMetaRef.current) {\n fieldsMetaRef.current[\n currentStepName as keyof typeof fieldsMetaRef.current\n ] = prettifyFormValues(parsedValues, stepFields[currentStepName]);\n }\n\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 external_id: externalId,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n\n if (response.error) {\n return response;\n }\n\n if (response.data) {\n // @ts-expect-error the types from the response are not matching\n const employmentId = response.data?.data?.employment?.id;\n if (employmentId) {\n setInternalEmploymentId(employmentId);\n await updateContractEligibilityMutationAsync({\n employmentId: employmentId,\n eligible_to_work_in_residing_country: 'citizen',\n employer_or_work_restrictions: false,\n });\n }\n\n return response;\n }\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 external_id: externalId,\n });\n }\n\n return;\n }\n case 'engagement_agreement_details': {\n return updateEngagementAgreementMutationAsync({\n employmentId: internalEmploymentId as string,\n engagement_agreement_details: parsedValues,\n });\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 external_id: externalId,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...parsedValues,\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: StepKeys) {\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 * Onboarding flow options (feature flags)\n */\n options: {\n features: options?.features,\n },\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 * Onboarding reserves status for the employment\n * Returns 'deposit_required' if a deposit is required based on onboarding reserves policies\n */\n onboardingReservesStatus: onboardingReservesStatus,\n /**\n * Current state of the form fields for the current step.\n */\n fieldValues,\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 updateEngagementAgreementMutation.isPending ||\n updateContractEligibilityMutation.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: async (\n values: FieldValues,\n ): Promise<ValidationResult | null> => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = await parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n { isPartialValidation: false },\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n { isPartialValidation: false },\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n engagementAgreementDetailsSchema &&\n stepState.currentStep.name === 'engagement_agreement_details'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n engagementAgreementDetailsSchema?.fields,\n { isPartialValidation: false },\n );\n return engagementAgreementDetailsSchema?.handleValidation(parsedValues);\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n contractDetailsForm?.fields,\n { isPartialValidation: false },\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 fieldsets: stepFieldsWithFlatFieldsets[stepState.currentStep.name],\n presentation: stepPresentation[stepState.currentStep.name],\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 * let's the user know if the company can invite employees\n * @returns {boolean}\n */\n canInvite,\n\n /**\n * Steps array for dynamic step navigation\n * When 'dynamic_steps' feature is enabled:\n * - Returns all steps including hidden ones with their original indices\n * - Consumers must filter by `visible` property\n * When disabled (default):\n * - Returns only visible steps with sequential indices\n * - Maintains backwards compatibility with existing implementations\n * @returns {Array<{name: string, visible: boolean, index: number, label: string}>}\n */\n steps: stepsArray,\n /**\n * Selected country for the onboarding\n * @returns {name: string, code: string} | null\n */\n selectedCountry: internalCountryCode\n ? {\n code: internalCountryCode,\n name: country?.name,\n }\n : null,\n\n /**\n * Employment agreement preview\n */\n employmentAgreementPreview,\n };\n};\n"],"mappings":"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","names":["useCallback","useEffect","useMemo","useRef","useState","mergeWith","jsx","jsonSchemaToEmployment","stepToFormSchemaMap","getLoadingStates","__name","isLoadingBasicInformationForm","isLoadingContractDetailsForm","isLoadingEngagementAgreementDetails","isLoadingEmploymentAgreementPreview","isLoadingEmploymentEngagementAgreementDetails","isLoadingEmployment","isLoadingBenefitsOffersSchema","isLoadingBenefitOffers","isLoadingCompany","isLoadingCountries","employmentStatus","employmentId","currentStepName","basicInformationFields","contractDetailsFields","arePreOnboardingRequirementsFulfilled","initialLoading","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","canInvite","disabledInviteButtonEmploymentStatus","shouldHandleReadOnlyEmployment","isLoading","isNavigatingToReview","useOnboarding","companyId","countryCode","type","options","skipSteps","externalId","onboardingInitialValues","updateErrorContext","useErrorReporting","internalEmploymentId","setInternalEmploymentId","useState","internalCountryCode","setInternalCountryCode","includeEngagementAgreementDetails","setIncludeEngagementAgreementDetails","includeEmploymentAgreementPreview","setIncludeEmploymentAgreementPreview","useDynamicSteps","useEAPreview","steps","stepsArray","useMemo","buildSteps","onStepChange","useCallback","step","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","employmentEngagementAgreementDetails","useEmploymentEngagementAgreementDetails","engagementAgreementDetailsFieldValues","engagementAgreementDetailsSchema","useEngagementAgreementDetailsSchema","useEffect","hasFields","fieldsMetaRef","useRef","employment","refetchEmployment","useEmploymentQuery","benefitOffers","useBenefitOffers","company","refetchCompany","useCompany","isOnboardingReservesEnabled","onboardingReservesStatus","useEmploymentOnboardingReservesStatus","isPreOnboardingRequirementsEnabled","requirements","isLoadingPreOnboardingRequirements","useGetPreOnboardingRequirements","requirement","selectCountryForm","countries","useCountriesSchemaField","isEmploymentAgreementPreviewAvailable","country","isEmploymentEnabled","employmentAgreementPreview","useEmploymentAgreementPreview","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","updateBenefitsOffersMutation","useUpdateBenefitsOffers","updateEngagementAgreementMutation","useUpdateEmploymentEngagementAgreementDetails","updateContractEligibilityMutation","useUpsertContractEligibility","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","updateEngagementAgreementMutationAsync","updateContractEligibilityMutationAsync","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","query","jsonSchemaVersion","mergedFormValues","useJSONSchemaForm","isBasicInformationDetailsEnabled","isContractDetailsEnabled","basicInformationForm","getBasicInformationSchemaVersion","annualGrossSalaryField","annualSalaryFieldPresentation","equityCompensationField","contractDetailsCustomFields","props","AnnualGrossSalary","values","field","offerEquity","equityCost","EquityPriceDetails","effectiveContractDetailsJsonSchemaVersion","getContractDetailsSchemaVersion","contractDetailsForm","benefitOffersSchema","useBenefitOffersSchema","initialValuesBenefitOffers","benefitsFormValues","mergeWith","stepFields","stepFieldsWithFlatFieldsets","stepPresentation","employmentBasicInformation","employmentContractDetails","employmentCountryCode","selectCountryInitialValues","getInitialValues","basicInformationInitialValues","initialValues","engagementAgreementDetailsInitialValues","contractDetailsInitialValues","benefitsInitialValues","enableAckFields","prettifyFormValues","parseFormValues","parseJSFToValidate","onSubmit","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","back","next","goTo"]}
|
/package/dist/{DatePickerFieldDefault-EUPACNZD.js.map → DatePickerFieldDefault-XMG6ZDVQ.js.map}
RENAMED
|
File without changes
|
/package/dist/{RadioGroupFieldDefault-XR37OID5.js.map → RadioGroupFieldDefault-X3HP3BDR.js.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|