@remoteoss/remote-flows 1.33.0 → 1.33.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/ButtonDefault-CB27KWFN.js +2 -0
- package/dist/CheckboxFieldDefault-5NZEGPA6.js +2 -0
- package/dist/CountryFieldDefault-GP2S2KN6.js +2 -0
- package/dist/DatePickerFieldDefault-KN4COEEO.js +2 -0
- package/dist/DrawerDefault-JR6422D5.js +2 -0
- package/dist/EmailFieldDefault-XSAEEKK7.js +2 -0
- package/dist/FieldsetToggleButtonDefault-OQ7J2T3G.js +2 -0
- package/dist/FileUploadFieldDefault-5VQDJWZV.js +2 -0
- package/dist/MultiSelectFieldDefault-BORNPHNW.js +2 -0
- package/dist/NumberFieldDefault-PRI6IHOZ.js +2 -0
- package/dist/RadioGroupFieldDefault-L3CZN2ZT.js +2 -0
- package/dist/SelectFieldDefault-EV5QGUX6.js +2 -0
- package/dist/StatementDefault-WKRJDBC7.js +2 -0
- package/dist/TableFieldDefault-75LWJ2E3.js +2 -0
- package/dist/TelFieldDefault-M5LDQMIK.js +2 -0
- package/dist/TextAreaFieldDefault-YKBNDA4U.js +2 -0
- package/dist/TextFieldDefault-RCZYNB3Z.js +2 -0
- package/dist/WorkScheduleFieldDefault-XLAFRZX2.js +2 -0
- package/dist/ZendeskDrawerDefault-NQP7CBPW.js +2 -0
- package/dist/chunk-242UBL3Z.js +2 -0
- package/dist/{chunk-LWQLNGOH.js.map → chunk-242UBL3Z.js.map} +1 -1
- package/dist/{chunk-QC2FAORS.js → chunk-24HG2Q5K.js} +2 -2
- package/dist/{chunk-QC2FAORS.js.map → chunk-24HG2Q5K.js.map} +1 -1
- package/dist/chunk-2HREQZP4.js +2 -0
- package/dist/chunk-2HREQZP4.js.map +1 -0
- package/dist/{chunk-ZHDES3J6.js → chunk-2IIHA7AA.js} +2 -2
- package/dist/{chunk-FHW5CMN5.js → chunk-2LUPUTP6.js} +2 -2
- package/dist/{chunk-J4ALYQ36.js → chunk-33NHO3CG.js} +2 -2
- package/dist/{chunk-5FHDUZCG.js → chunk-3JXNNFJV.js} +2 -2
- package/dist/{chunk-QYNWADPG.js → chunk-3PKL3V6F.js} +2 -2
- package/dist/{chunk-UB5ZMTTU.js → chunk-3TLNWNFZ.js} +2 -2
- package/dist/{chunk-AWQU5AAN.js → chunk-3YS4OWE3.js} +2 -2
- package/dist/{chunk-F7PE3VRK.js → chunk-4FQCB4LB.js} +2 -2
- package/dist/{chunk-U5T77DSF.js → chunk-4MW7KA47.js} +2 -2
- package/dist/{chunk-J2QQLYVY.js → chunk-4ZMRPH3M.js} +2 -2
- package/dist/{chunk-4YCBOVSQ.js → chunk-5BGNKOPP.js} +2 -2
- package/dist/{chunk-XG6ASTX5.js → chunk-5BU3CD2P.js} +2 -2
- package/dist/{chunk-XG6ASTX5.js.map → chunk-5BU3CD2P.js.map} +1 -1
- package/dist/{chunk-WJ64Q54L.js → chunk-5CYUZQSB.js} +2 -2
- package/dist/{chunk-LXEFKJ4K.js → chunk-5FHNCDLU.js} +2 -2
- package/dist/{chunk-LXEFKJ4K.js.map → chunk-5FHNCDLU.js.map} +1 -1
- package/dist/{chunk-ZSMILHO4.js → chunk-5KTF4QMV.js} +2 -2
- package/dist/{chunk-FKELI7OS.js → chunk-6NTCRGOD.js} +2 -2
- package/dist/{chunk-TVF4JOK2.js → chunk-6PXDRES5.js} +2 -2
- package/dist/{chunk-TVF4JOK2.js.map → chunk-6PXDRES5.js.map} +1 -1
- package/dist/{chunk-SNWJIIF7.js → chunk-6YBH2ELN.js} +2 -2
- package/dist/{chunk-ZANINDSC.js → chunk-A7IG7GGK.js} +2 -2
- package/dist/{chunk-ZANINDSC.js.map → chunk-A7IG7GGK.js.map} +1 -1
- package/dist/{chunk-N5XWRUYE.js → chunk-B3ACYI7T.js} +2 -2
- package/dist/{chunk-NDZIQGDE.js → chunk-B3KDZREG.js} +2 -2
- package/dist/{chunk-ZQNYASQ3.js → chunk-BQA2DJF2.js} +2 -2
- package/dist/{chunk-3SIHU3EE.js → chunk-C7GJUNNC.js} +2 -2
- package/dist/{chunk-3JPDFNNH.js → chunk-CDX5QDO3.js} +2 -2
- package/dist/{chunk-KWBTUWWQ.js → chunk-CFCUY6VA.js} +2 -2
- package/dist/{chunk-5QRYKH3H.js → chunk-CMPHQVJ3.js} +2 -2
- package/dist/{chunk-LG5NFDID.js → chunk-CQQCOU57.js} +2 -2
- package/dist/{chunk-GCQYAEZT.js → chunk-DTTE663D.js} +2 -2
- package/dist/{chunk-CBPV2QLT.js → chunk-DU55JKPB.js} +2 -2
- package/dist/chunk-DU55JKPB.js.map +1 -0
- package/dist/{chunk-AZZUFPQM.js → chunk-DUJVDBY4.js} +2 -2
- package/dist/{chunk-AZZUFPQM.js.map → chunk-DUJVDBY4.js.map} +1 -1
- package/dist/{chunk-ZYN3TAUB.js → chunk-DXKUARQF.js} +2 -2
- package/dist/{chunk-T5HMFMXH.js → chunk-ED7I5OM2.js} +2 -2
- package/dist/chunk-EJWKMMZV.js +2 -0
- package/dist/chunk-EJWKMMZV.js.map +1 -0
- package/dist/chunk-ER46UFIU.js +8 -0
- package/dist/chunk-ER46UFIU.js.map +1 -0
- package/dist/{chunk-MKUSE7JK.js → chunk-F2ENM2JE.js} +2 -2
- package/dist/chunk-F2ENM2JE.js.map +1 -0
- package/dist/{chunk-2P2OJKD4.js → chunk-FFOTUKBN.js} +2 -2
- package/dist/{chunk-ACM63WPM.js → chunk-FIVDMRET.js} +2 -2
- package/dist/chunk-FJUUNJHY.js +2 -0
- package/dist/chunk-FJUUNJHY.js.map +1 -0
- package/dist/{chunk-7GDMMNJT.js → chunk-G247NY7P.js} +2 -2
- package/dist/{chunk-7GDMMNJT.js.map → chunk-G247NY7P.js.map} +1 -1
- package/dist/{chunk-CKJF6K4L.js → chunk-G6E7F6VD.js} +2 -2
- package/dist/{chunk-5X6JMXP6.js → chunk-G7MJDZGB.js} +2 -2
- package/dist/chunk-G7MJDZGB.js.map +1 -0
- package/dist/{chunk-GUO7UC4X.js → chunk-GQACPN6J.js} +2 -2
- package/dist/{chunk-HUAPBLSQ.js → chunk-IKZZOOWO.js} +2 -2
- package/dist/{chunk-HUAPBLSQ.js.map → chunk-IKZZOOWO.js.map} +1 -1
- package/dist/{chunk-77WJNWIC.js → chunk-IQRJNJQ7.js} +2 -2
- package/dist/{chunk-L57LWMNE.js → chunk-IX5SV6J2.js} +2 -2
- package/dist/{chunk-3OU6XE7X.js → chunk-J2G2I3PX.js} +2 -2
- package/dist/{chunk-TSPDJUGG.js → chunk-JDIKYCN6.js} +1 -1
- package/dist/{chunk-TSPDJUGG.js.map → chunk-JDIKYCN6.js.map} +1 -1
- package/dist/{chunk-H4S6LSDA.js → chunk-JFSM3EOC.js} +2 -2
- package/dist/chunk-JLFYJT3K.js +2 -0
- package/dist/chunk-JLFYJT3K.js.map +1 -0
- package/dist/chunk-JXAAON7I.js +2 -0
- package/dist/chunk-JXAAON7I.js.map +1 -0
- package/dist/{chunk-3ZGDRCSS.js → chunk-K3LPVMXD.js} +2 -2
- package/dist/{chunk-GVPB75PC.js → chunk-KYNIBHVR.js} +2 -2
- package/dist/{chunk-2WOUKCSC.js → chunk-L5SNHVLU.js} +2 -2
- package/dist/chunk-LDI7E3ZK.js +2 -0
- package/dist/{chunk-5JGA7DRL.js.map → chunk-LDI7E3ZK.js.map} +1 -1
- package/dist/{chunk-YMOAWXSE.js → chunk-LKFGJU72.js} +2 -2
- package/dist/{chunk-E3WR4SVV.js → chunk-MXARM6PV.js} +2 -2
- package/dist/{chunk-E3WR4SVV.js.map → chunk-MXARM6PV.js.map} +1 -1
- package/dist/{chunk-AVVDKCFO.js → chunk-N2MBTATE.js} +2 -2
- package/dist/{chunk-IOVRTUOC.js → chunk-N5DHVRQR.js} +2 -2
- package/dist/{chunk-IOVRTUOC.js.map → chunk-N5DHVRQR.js.map} +1 -1
- package/dist/{chunk-ZWH34WQJ.js → chunk-ND66GS24.js} +2 -2
- package/dist/{chunk-MGPUZ7NZ.js → chunk-NN2HUS43.js} +2 -2
- package/dist/{chunk-DIZ5Z4MN.js → chunk-NZXVTXZY.js} +2 -2
- package/dist/{chunk-HZ2BCB3U.js → chunk-OO3VBBVN.js} +2 -2
- package/dist/{chunk-C4UUGOR3.js → chunk-OSHTXKLJ.js} +2 -2
- package/dist/{chunk-WUQZCGWG.js → chunk-OVQOV5YL.js} +2 -2
- package/dist/{chunk-WUSKSXW2.js → chunk-PMAIML44.js} +2 -2
- package/dist/{chunk-WUSKSXW2.js.map → chunk-PMAIML44.js.map} +1 -1
- package/dist/{chunk-OMLHAQQX.js → chunk-PSN4ZR5Y.js} +2 -2
- package/dist/{chunk-AGKLWKYY.js → chunk-Q5RU76HN.js} +2 -2
- package/dist/{chunk-2A4DCZTX.js → chunk-Q5WADFQ7.js} +2 -2
- package/dist/chunk-Q65JWWKR.js +2 -0
- package/dist/chunk-Q65JWWKR.js.map +1 -0
- package/dist/chunk-QHZPSH52.js +2 -0
- package/dist/chunk-QHZPSH52.js.map +1 -0
- package/dist/{chunk-6C4DCKHS.js → chunk-QWIPKY24.js} +2 -2
- package/dist/{chunk-X66NETZL.js → chunk-QWSAKYH4.js} +2 -2
- package/dist/{chunk-C6UF7BPK.js → chunk-QYLLXHLO.js} +2 -2
- package/dist/{chunk-AYYYRHO3.js → chunk-R4TTPUH7.js} +2 -2
- package/dist/{chunk-Y5JFBXNR.js → chunk-R63ZJMJA.js} +2 -2
- package/dist/{chunk-Y5JFBXNR.js.map → chunk-R63ZJMJA.js.map} +1 -1
- package/dist/{chunk-3EUYWSSZ.js → chunk-RGXG3HOB.js} +2 -2
- package/dist/{chunk-3EUYWSSZ.js.map → chunk-RGXG3HOB.js.map} +1 -1
- package/dist/{chunk-OPM4YQGQ.js → chunk-RQGYSZOO.js} +2 -2
- package/dist/{chunk-OPM4YQGQ.js.map → chunk-RQGYSZOO.js.map} +1 -1
- package/dist/{chunk-6S66UQ2X.js → chunk-RS25IVTP.js} +2 -2
- package/dist/chunk-SVVZOMLQ.js +2 -0
- package/dist/chunk-SVVZOMLQ.js.map +1 -0
- package/dist/chunk-T35SZZ74.js +2 -0
- package/dist/chunk-T35SZZ74.js.map +1 -0
- package/dist/{chunk-MHQ5ZW5P.js → chunk-TMS24RKD.js} +2 -2
- package/dist/{chunk-JX2ZVRE7.js → chunk-TMZVJ3SQ.js} +2 -2
- package/dist/{chunk-45RIDSO6.js → chunk-TXP3DGU6.js} +2 -2
- package/dist/{chunk-KAHAW4HH.js → chunk-U3PQEGSV.js} +2 -2
- package/dist/{chunk-KAHAW4HH.js.map → chunk-U3PQEGSV.js.map} +1 -1
- package/dist/{chunk-ID66NML3.js → chunk-U5QVIJOS.js} +2 -2
- package/dist/{chunk-ID66NML3.js.map → chunk-U5QVIJOS.js.map} +1 -1
- package/dist/{chunk-CNMNJMOT.js → chunk-UBIW2GE4.js} +2 -2
- package/dist/{chunk-SYXJTCKS.js → chunk-UG5UQ72J.js} +2 -2
- package/dist/{chunk-LDSS6RYC.js → chunk-VAYKULUJ.js} +2 -2
- package/dist/{chunk-PFQTTYVH.js → chunk-VBP6CRNM.js} +2 -2
- package/dist/{chunk-XELPL3XO.js → chunk-VJPSDB7M.js} +2 -2
- package/dist/{chunk-RXSGIEA5.js → chunk-VLWFSFRL.js} +2 -2
- package/dist/{chunk-75MI3G5H.js → chunk-VYBMEFCQ.js} +2 -2
- package/dist/{chunk-K5TZIA6W.js → chunk-VZEIJSTF.js} +2 -2
- package/dist/chunk-W4YDSTXA.js +2 -0
- package/dist/chunk-W4YDSTXA.js.map +1 -0
- package/dist/{chunk-234SEE75.js → chunk-X4KJVXDB.js} +2 -2
- package/dist/{chunk-WSARYSM5.js → chunk-XK24ZBGA.js} +2 -2
- package/dist/{chunk-WZHTDLX6.js → chunk-XWBNZAGY.js} +2 -2
- package/dist/{chunk-PBWF2VXG.js → chunk-XWZP4WYZ.js} +2 -2
- package/dist/{chunk-PR6I3UYE.js → chunk-XX25MIBS.js} +2 -2
- package/dist/{chunk-BCCIFJSO.js → chunk-Y7NFXPZ2.js} +2 -2
- package/dist/{chunk-3UDWOREZ.js → chunk-YLHYARJK.js} +2 -2
- package/dist/{chunk-DCPBAFIN.js → chunk-YPVZUXVH.js} +2 -2
- package/dist/chunk-YPVZUXVH.js.map +1 -0
- package/dist/{chunk-JLUYUNSV.js → chunk-Z4TZ527J.js} +2 -2
- package/dist/{chunk-4RF6I3TT.js → chunk-Z4USLCXF.js} +2 -2
- package/dist/{chunk-4RF6I3TT.js.map → chunk-Z4USLCXF.js.map} +1 -1
- package/dist/{chunk-DKLTO4XS.js → chunk-ZAVH2YKN.js} +2 -2
- package/dist/chunk-ZAZ24JS2.js +2 -0
- package/dist/chunk-ZAZ24JS2.js.map +1 -0
- package/dist/{chunk-NRNLLJCB.js → chunk-ZE37CBDF.js} +2 -2
- package/dist/{chunk-H6Q7QK3C.js → chunk-ZM4ZOX7B.js} +2 -2
- package/dist/{chunk-JQHOMFXA.js → chunk-ZSCJ6CT5.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 +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +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 +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentForm.js +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/ContractAmendment/utils.js +1 -1
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
- package/dist/flows/ContractorOnboarding/api.d.ts +3 -2
- package/dist/flows/ContractorOnboarding/api.js +1 -1
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
- 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/ContractPreviewStatement.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractReviewButton.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.js +1 -1
- 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/PricingPlan.js +1 -1
- package/dist/flows/ContractorOnboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/StatementOfWorkDisclaimer.js +1 -1
- 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/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/CostCalculatorForm.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -2
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -2
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.js +1 -1
- 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 +3 -3
- 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/AddressDetailsStep.js +1 -1
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.js +1 -1
- package/dist/flows/CreateCompany/components/CreateCompanyForm.d.ts +2 -2
- package/dist/flows/CreateCompany/components/CreateCompanyForm.js +1 -1
- 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/BasicInformationStep.js +1 -1
- package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
- package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/Onboarding/components/OnboardingInvite.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/components/SelectCountryStep.js +1 -1
- 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/Termination/AdditionalDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
- package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
- package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
- 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/TerminationForm.js +1 -1
- package/dist/flows/Termination/api.d.ts +5 -5
- package/dist/flows/Termination/api.js +1 -1
- package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation.js +1 -1
- package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
- 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/components/TerminationReasonsDetailContent/TerminationReasonsDetailContent.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/Termination/utils.js +1 -1
- package/dist/flows/types.d.ts +5 -3
- package/dist/flows/useStepState.js +1 -1
- package/dist/flows/utils.d.ts +2 -2
- package/dist/index.d.ts +12 -12
- 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-DTK4GE8r.d.ts → mutations-tMusyGqR.d.ts} +1 -1
- package/dist/{remoteFlows-n8r_cW0z.d.ts → remoteFlows-1ODSR6M5.d.ts} +1 -1
- package/dist/{types-BD0b8UuQ.d.ts → types-B3ZY2CHC.d.ts} +2 -2
- package/dist/{types-BiMfLZYw.d.ts → types-B3zSOF4R.d.ts} +3 -3
- package/dist/{types-BJ9gyvly.d.ts → types-BADwm0IP.d.ts} +4 -4
- package/dist/{types-Cd5_2FHQ.d.ts → types-BdaVhuNW.d.ts} +3 -3
- package/dist/{types-BY3BtHb6.d.ts → types-CY31SALf.d.ts} +1 -1
- package/dist/{types.gen-DPZBntYq.d.ts → types.gen-D39CBKLR.d.ts} +25 -9
- package/dist/{utils-C5lwjSxr.d.ts → utils-BwkOqPg_.d.ts} +1 -1
- package/package.json +9 -8
- package/dist/ButtonDefault-OMZEWLEI.js +0 -2
- package/dist/CheckboxFieldDefault-AGW42RDY.js +0 -2
- package/dist/CountryFieldDefault-24T4C7OU.js +0 -2
- package/dist/DatePickerFieldDefault-BG4KM2EG.js +0 -2
- package/dist/DrawerDefault-64GMPAIH.js +0 -2
- package/dist/EmailFieldDefault-UPDZNN2F.js +0 -2
- package/dist/FieldsetToggleButtonDefault-BOYDY7VX.js +0 -2
- package/dist/FileUploadFieldDefault-KFTIOHEJ.js +0 -2
- package/dist/MultiSelectFieldDefault-ALM76UQ5.js +0 -2
- package/dist/NumberFieldDefault-OXSEX3HX.js +0 -2
- package/dist/RadioGroupFieldDefault-55336PG5.js +0 -2
- package/dist/SelectFieldDefault-ARANC6QX.js +0 -2
- package/dist/StatementDefault-BMPIWUGF.js +0 -2
- package/dist/TableFieldDefault-2FLJU7TJ.js +0 -2
- package/dist/TelFieldDefault-RFAYBPGK.js +0 -2
- package/dist/TextAreaFieldDefault-3C6UZXHV.js +0 -2
- package/dist/TextFieldDefault-UQ23EIHH.js +0 -2
- package/dist/WorkScheduleFieldDefault-CGU2T6HY.js +0 -2
- package/dist/ZendeskDrawerDefault-JEHYLRHU.js +0 -2
- package/dist/chunk-4QVFKKVN.js +0 -2
- package/dist/chunk-4QVFKKVN.js.map +0 -1
- package/dist/chunk-5JGA7DRL.js +0 -2
- package/dist/chunk-5X6JMXP6.js.map +0 -1
- package/dist/chunk-B6YWTMGV.js +0 -2
- package/dist/chunk-B6YWTMGV.js.map +0 -1
- package/dist/chunk-BZ232WZD.js +0 -2
- package/dist/chunk-BZ232WZD.js.map +0 -1
- package/dist/chunk-CBPV2QLT.js.map +0 -1
- package/dist/chunk-DCPBAFIN.js.map +0 -1
- package/dist/chunk-HVI5GHIV.js +0 -2
- package/dist/chunk-HVI5GHIV.js.map +0 -1
- package/dist/chunk-I66TFXX4.js +0 -2
- package/dist/chunk-I66TFXX4.js.map +0 -1
- package/dist/chunk-K2SHDZBB.js +0 -2
- package/dist/chunk-K2SHDZBB.js.map +0 -1
- package/dist/chunk-LANAT75E.js +0 -2
- package/dist/chunk-LANAT75E.js.map +0 -1
- package/dist/chunk-LWQLNGOH.js +0 -2
- package/dist/chunk-MKUSE7JK.js.map +0 -1
- package/dist/chunk-PIGJNWPB.js +0 -2
- package/dist/chunk-PIGJNWPB.js.map +0 -1
- package/dist/chunk-RWXZG4KO.js +0 -2
- package/dist/chunk-RWXZG4KO.js.map +0 -1
- package/dist/chunk-RZCU2MT3.js +0 -2
- package/dist/chunk-RZCU2MT3.js.map +0 -1
- package/dist/chunk-TNQKP2XT.js +0 -8
- package/dist/chunk-TNQKP2XT.js.map +0 -1
- package/dist/chunk-TSWZPJNS.js +0 -2
- package/dist/chunk-TSWZPJNS.js.map +0 -1
- /package/dist/{ButtonDefault-OMZEWLEI.js.map → ButtonDefault-CB27KWFN.js.map} +0 -0
- /package/dist/{CheckboxFieldDefault-AGW42RDY.js.map → CheckboxFieldDefault-5NZEGPA6.js.map} +0 -0
- /package/dist/{CountryFieldDefault-24T4C7OU.js.map → CountryFieldDefault-GP2S2KN6.js.map} +0 -0
- /package/dist/{DatePickerFieldDefault-BG4KM2EG.js.map → DatePickerFieldDefault-KN4COEEO.js.map} +0 -0
- /package/dist/{DrawerDefault-64GMPAIH.js.map → DrawerDefault-JR6422D5.js.map} +0 -0
- /package/dist/{EmailFieldDefault-UPDZNN2F.js.map → EmailFieldDefault-XSAEEKK7.js.map} +0 -0
- /package/dist/{FieldsetToggleButtonDefault-BOYDY7VX.js.map → FieldsetToggleButtonDefault-OQ7J2T3G.js.map} +0 -0
- /package/dist/{FileUploadFieldDefault-KFTIOHEJ.js.map → FileUploadFieldDefault-5VQDJWZV.js.map} +0 -0
- /package/dist/{MultiSelectFieldDefault-ALM76UQ5.js.map → MultiSelectFieldDefault-BORNPHNW.js.map} +0 -0
- /package/dist/{NumberFieldDefault-OXSEX3HX.js.map → NumberFieldDefault-PRI6IHOZ.js.map} +0 -0
- /package/dist/{RadioGroupFieldDefault-55336PG5.js.map → RadioGroupFieldDefault-L3CZN2ZT.js.map} +0 -0
- /package/dist/{SelectFieldDefault-ARANC6QX.js.map → SelectFieldDefault-EV5QGUX6.js.map} +0 -0
- /package/dist/{StatementDefault-BMPIWUGF.js.map → StatementDefault-WKRJDBC7.js.map} +0 -0
- /package/dist/{TableFieldDefault-2FLJU7TJ.js.map → TableFieldDefault-75LWJ2E3.js.map} +0 -0
- /package/dist/{TelFieldDefault-RFAYBPGK.js.map → TelFieldDefault-M5LDQMIK.js.map} +0 -0
- /package/dist/{TextAreaFieldDefault-3C6UZXHV.js.map → TextAreaFieldDefault-YKBNDA4U.js.map} +0 -0
- /package/dist/{TextFieldDefault-UQ23EIHH.js.map → TextFieldDefault-RCZYNB3Z.js.map} +0 -0
- /package/dist/{WorkScheduleFieldDefault-CGU2T6HY.js.map → WorkScheduleFieldDefault-XLAFRZX2.js.map} +0 -0
- /package/dist/{ZendeskDrawerDefault-JEHYLRHU.js.map → ZendeskDrawerDefault-NQP7CBPW.js.map} +0 -0
- /package/dist/{chunk-ZHDES3J6.js.map → chunk-2IIHA7AA.js.map} +0 -0
- /package/dist/{chunk-FHW5CMN5.js.map → chunk-2LUPUTP6.js.map} +0 -0
- /package/dist/{chunk-J4ALYQ36.js.map → chunk-33NHO3CG.js.map} +0 -0
- /package/dist/{chunk-5FHDUZCG.js.map → chunk-3JXNNFJV.js.map} +0 -0
- /package/dist/{chunk-QYNWADPG.js.map → chunk-3PKL3V6F.js.map} +0 -0
- /package/dist/{chunk-UB5ZMTTU.js.map → chunk-3TLNWNFZ.js.map} +0 -0
- /package/dist/{chunk-AWQU5AAN.js.map → chunk-3YS4OWE3.js.map} +0 -0
- /package/dist/{chunk-F7PE3VRK.js.map → chunk-4FQCB4LB.js.map} +0 -0
- /package/dist/{chunk-U5T77DSF.js.map → chunk-4MW7KA47.js.map} +0 -0
- /package/dist/{chunk-J2QQLYVY.js.map → chunk-4ZMRPH3M.js.map} +0 -0
- /package/dist/{chunk-4YCBOVSQ.js.map → chunk-5BGNKOPP.js.map} +0 -0
- /package/dist/{chunk-WJ64Q54L.js.map → chunk-5CYUZQSB.js.map} +0 -0
- /package/dist/{chunk-ZSMILHO4.js.map → chunk-5KTF4QMV.js.map} +0 -0
- /package/dist/{chunk-FKELI7OS.js.map → chunk-6NTCRGOD.js.map} +0 -0
- /package/dist/{chunk-SNWJIIF7.js.map → chunk-6YBH2ELN.js.map} +0 -0
- /package/dist/{chunk-N5XWRUYE.js.map → chunk-B3ACYI7T.js.map} +0 -0
- /package/dist/{chunk-NDZIQGDE.js.map → chunk-B3KDZREG.js.map} +0 -0
- /package/dist/{chunk-ZQNYASQ3.js.map → chunk-BQA2DJF2.js.map} +0 -0
- /package/dist/{chunk-3SIHU3EE.js.map → chunk-C7GJUNNC.js.map} +0 -0
- /package/dist/{chunk-3JPDFNNH.js.map → chunk-CDX5QDO3.js.map} +0 -0
- /package/dist/{chunk-KWBTUWWQ.js.map → chunk-CFCUY6VA.js.map} +0 -0
- /package/dist/{chunk-5QRYKH3H.js.map → chunk-CMPHQVJ3.js.map} +0 -0
- /package/dist/{chunk-LG5NFDID.js.map → chunk-CQQCOU57.js.map} +0 -0
- /package/dist/{chunk-GCQYAEZT.js.map → chunk-DTTE663D.js.map} +0 -0
- /package/dist/{chunk-ZYN3TAUB.js.map → chunk-DXKUARQF.js.map} +0 -0
- /package/dist/{chunk-T5HMFMXH.js.map → chunk-ED7I5OM2.js.map} +0 -0
- /package/dist/{chunk-2P2OJKD4.js.map → chunk-FFOTUKBN.js.map} +0 -0
- /package/dist/{chunk-ACM63WPM.js.map → chunk-FIVDMRET.js.map} +0 -0
- /package/dist/{chunk-CKJF6K4L.js.map → chunk-G6E7F6VD.js.map} +0 -0
- /package/dist/{chunk-GUO7UC4X.js.map → chunk-GQACPN6J.js.map} +0 -0
- /package/dist/{chunk-77WJNWIC.js.map → chunk-IQRJNJQ7.js.map} +0 -0
- /package/dist/{chunk-L57LWMNE.js.map → chunk-IX5SV6J2.js.map} +0 -0
- /package/dist/{chunk-3OU6XE7X.js.map → chunk-J2G2I3PX.js.map} +0 -0
- /package/dist/{chunk-H4S6LSDA.js.map → chunk-JFSM3EOC.js.map} +0 -0
- /package/dist/{chunk-3ZGDRCSS.js.map → chunk-K3LPVMXD.js.map} +0 -0
- /package/dist/{chunk-GVPB75PC.js.map → chunk-KYNIBHVR.js.map} +0 -0
- /package/dist/{chunk-2WOUKCSC.js.map → chunk-L5SNHVLU.js.map} +0 -0
- /package/dist/{chunk-YMOAWXSE.js.map → chunk-LKFGJU72.js.map} +0 -0
- /package/dist/{chunk-AVVDKCFO.js.map → chunk-N2MBTATE.js.map} +0 -0
- /package/dist/{chunk-ZWH34WQJ.js.map → chunk-ND66GS24.js.map} +0 -0
- /package/dist/{chunk-MGPUZ7NZ.js.map → chunk-NN2HUS43.js.map} +0 -0
- /package/dist/{chunk-DIZ5Z4MN.js.map → chunk-NZXVTXZY.js.map} +0 -0
- /package/dist/{chunk-HZ2BCB3U.js.map → chunk-OO3VBBVN.js.map} +0 -0
- /package/dist/{chunk-C4UUGOR3.js.map → chunk-OSHTXKLJ.js.map} +0 -0
- /package/dist/{chunk-WUQZCGWG.js.map → chunk-OVQOV5YL.js.map} +0 -0
- /package/dist/{chunk-OMLHAQQX.js.map → chunk-PSN4ZR5Y.js.map} +0 -0
- /package/dist/{chunk-AGKLWKYY.js.map → chunk-Q5RU76HN.js.map} +0 -0
- /package/dist/{chunk-2A4DCZTX.js.map → chunk-Q5WADFQ7.js.map} +0 -0
- /package/dist/{chunk-6C4DCKHS.js.map → chunk-QWIPKY24.js.map} +0 -0
- /package/dist/{chunk-X66NETZL.js.map → chunk-QWSAKYH4.js.map} +0 -0
- /package/dist/{chunk-C6UF7BPK.js.map → chunk-QYLLXHLO.js.map} +0 -0
- /package/dist/{chunk-AYYYRHO3.js.map → chunk-R4TTPUH7.js.map} +0 -0
- /package/dist/{chunk-6S66UQ2X.js.map → chunk-RS25IVTP.js.map} +0 -0
- /package/dist/{chunk-MHQ5ZW5P.js.map → chunk-TMS24RKD.js.map} +0 -0
- /package/dist/{chunk-JX2ZVRE7.js.map → chunk-TMZVJ3SQ.js.map} +0 -0
- /package/dist/{chunk-45RIDSO6.js.map → chunk-TXP3DGU6.js.map} +0 -0
- /package/dist/{chunk-CNMNJMOT.js.map → chunk-UBIW2GE4.js.map} +0 -0
- /package/dist/{chunk-SYXJTCKS.js.map → chunk-UG5UQ72J.js.map} +0 -0
- /package/dist/{chunk-LDSS6RYC.js.map → chunk-VAYKULUJ.js.map} +0 -0
- /package/dist/{chunk-PFQTTYVH.js.map → chunk-VBP6CRNM.js.map} +0 -0
- /package/dist/{chunk-XELPL3XO.js.map → chunk-VJPSDB7M.js.map} +0 -0
- /package/dist/{chunk-RXSGIEA5.js.map → chunk-VLWFSFRL.js.map} +0 -0
- /package/dist/{chunk-75MI3G5H.js.map → chunk-VYBMEFCQ.js.map} +0 -0
- /package/dist/{chunk-K5TZIA6W.js.map → chunk-VZEIJSTF.js.map} +0 -0
- /package/dist/{chunk-234SEE75.js.map → chunk-X4KJVXDB.js.map} +0 -0
- /package/dist/{chunk-WSARYSM5.js.map → chunk-XK24ZBGA.js.map} +0 -0
- /package/dist/{chunk-WZHTDLX6.js.map → chunk-XWBNZAGY.js.map} +0 -0
- /package/dist/{chunk-PBWF2VXG.js.map → chunk-XWZP4WYZ.js.map} +0 -0
- /package/dist/{chunk-PR6I3UYE.js.map → chunk-XX25MIBS.js.map} +0 -0
- /package/dist/{chunk-BCCIFJSO.js.map → chunk-Y7NFXPZ2.js.map} +0 -0
- /package/dist/{chunk-3UDWOREZ.js.map → chunk-YLHYARJK.js.map} +0 -0
- /package/dist/{chunk-JLUYUNSV.js.map → chunk-Z4TZ527J.js.map} +0 -0
- /package/dist/{chunk-DKLTO4XS.js.map → chunk-ZAVH2YKN.js.map} +0 -0
- /package/dist/{chunk-NRNLLJCB.js.map → chunk-ZE37CBDF.js.map} +0 -0
- /package/dist/{chunk-H6Q7QK3C.js.map → chunk-ZM4ZOX7B.js.map} +0 -0
- /package/dist/{chunk-JQHOMFXA.js.map → chunk-ZSCJ6CT5.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/form/fields/CountryField.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/HiddenField.tsx","../src/components/form/fields/WorkScheduleField.tsx","../src/components/form/fields/MultiSelectField.tsx","../src/components/form/fields/MoneyField.tsx","../src/components/form/fields/TelField.tsx","../src/components/form/fields/baseFields.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\nimport { Fragment, useEffect, useRef } from 'react';\nimport omit from 'lodash.omit';\nimport { baseFields } from '@/src/components/form/fields/baseFields';\nimport { cn } from '@/src/lib/utils';\nimport { $TSFixMe, Components } from '@/src/types/remoteFlows';\nimport { Statement } from '@/src/components/form/Statement';\nimport { useFormFields } from '@/src/context';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { FieldsetToggleButtonDefault } from '@/src/components/form/fields/default/FieldsetToggleButtonDefault';\nimport { BaseTypes, SupportedTypes } from './types';\nimport { StatementComponentProps } from '@/src/types/fields';\nimport { checkFieldHasForcedValue } from '@/src/components/form/utils';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { BaseFormDescription } from '@/src/components/ui/form';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n Component?: React.ComponentType<$TSFixMe>;\n inputType: SupportedTypes;\n multiple?: boolean;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetFeatures = {\n toggle?: {\n enabled: boolean;\n defaultExpanded?: boolean;\n stateField?: string;\n labels?: {\n expand: string;\n collapse: string;\n };\n className?: string;\n };\n};\n\nexport type FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n features?: FieldSetFeatures;\n components: Components;\n statement?: StatementComponentProps['data'];\n isFlatFieldset: boolean;\n extra?: React.ReactNode;\n variant: 'outset' | 'inset';\n meta?: {\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n } & Record<string, $TSFixMe>;\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n statement,\n isFlatFieldset,\n extra,\n variant = 'outset',\n features,\n meta,\n}: FieldSetProps) {\n const { helpCenter } = meta || {};\n const { watch, setValue, trigger, formState } = useFormContext();\n const { components: formComponents } = useFormFields();\n\n // Get expanded state from form state if stateField is provided\n const stateField = features?.toggle?.stateField;\n const isExpanded = stateField\n ? watch(stateField)\n : (features?.toggle?.defaultExpanded ?? true);\n\n const fieldNames = fields.map(\n ({ name: fieldName }) => `${name}.${fieldName}`,\n );\n const watchedValues = watch(fieldNames);\n const prevValuesRef = useRef<string[]>(watchedValues);\n const triggerTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const toggleExpanded = () => {\n if (stateField) {\n setValue(stateField, !isExpanded);\n }\n };\n\n useEffect(() => {\n const currentValues = watchedValues;\n const previousValues = prevValuesRef.current;\n const hasBeenSubmitted = formState.isSubmitted || formState.submitCount > 0;\n\n // Check if any value has changed\n let hasChanged = false;\n for (let i = 0; i < currentValues.length; i++) {\n if (\n currentValues[i] !== undefined &&\n previousValues[i] !== currentValues[i]\n ) {\n hasChanged = true;\n // This is to prevent the form from triggering validation too many times\n break;\n }\n }\n // If changes detected and we haven't triggered yet, run trigger\n if (hasChanged && hasBeenSubmitted) {\n // We need to debounce the validation trigger so that tests don't freeze\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n triggerTimeoutRef.current = setTimeout(() => {\n trigger();\n }, 50);\n }\n\n prevValuesRef.current = [...currentValues];\n\n return () => {\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n };\n }, [watchedValues, trigger, formState.isSubmitted, formState.submitCount]);\n\n const ToggleComponent =\n formComponents?.fieldsetToggle || FieldsetToggleButtonDefault;\n const contentId = `${name}-content`;\n const headerId = `${name}-header`;\n\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField`,\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend\n className={cn(\n 'text-sm font-semibold px-2',\n variant === 'inset' && 'hidden',\n )}\n >\n {label}\n </legend>\n {helpCenter?.callToAction && helpCenter?.id && variant === 'outset' && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n {variant === 'inset' && (\n <>\n <div\n className='RemoteFlows__FieldSetField__Header'\n id={headerId}\n data-state={isExpanded ? 'expanded' : 'collapsed'}\n aria-expanded={isExpanded}\n >\n <h3 className={cn('RemoteFlows__FieldSetField__Title')}>{label}</h3>\n {features?.toggle?.enabled && (\n <ToggleComponent\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${label}`}\n className={cn(\n 'RemoteFlows__FieldSetField__Toggle',\n features.toggle?.className,\n )}\n >\n {isExpanded\n ? (features.toggle.labels?.collapse ?? 'Remove')\n : (features.toggle.labels?.expand ?? 'Define')}\n </ToggleComponent>\n )}\n </div>\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </>\n )}\n {isExpanded && (\n <div id={contentId} aria-labelledby={headerId} role='region'>\n {description ? (\n <BaseFormDescription\n as='div'\n className='mb-5 RemoteFlows__FieldSetField__Description'\n >\n {description}\n </BaseFormDescription>\n ) : null}\n <div className='grid gap-4'>\n {fields.map((field: $TSFixMe) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(watchedValues, field) ||\n {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n const fieldType = field.type;\n const fieldKey = `${isFlatFieldset ? field.name : `${name}.${field.name}`}`;\n\n const isForcedValue = checkFieldHasForcedValue(field);\n\n // Helper function to wrap content with WrapperComponent if present\n const wrapWithCustomWrapper = (\n content: React.ReactNode,\n key: string,\n ) => {\n if (field.WrapperComponent) {\n return (\n <field.WrapperComponent key={key}>\n {content}\n </field.WrapperComponent>\n );\n }\n return <Fragment key={key}>{content}</Fragment>;\n };\n\n if (isForcedValue) {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <ForcedValueField\n name={fieldKey}\n description={fieldProps.description}\n value={fieldProps.const}\n statement={fieldProps.statement}\n label={fieldProps.label}\n helpCenter={fieldProps.meta?.helpCenter}\n />,\n fieldKey,\n );\n }\n\n // Handle nested fieldsets\n if (fieldType === 'fieldset') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n />,\n fieldKey,\n );\n }\n\n if (fieldType === 'fieldset-flat') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n isFlatFieldset\n />,\n fieldKey,\n );\n }\n // We need to do the check after checking (field.type || field.inputType) === 'fieldset' or (field.type || field.inputType) === 'fieldset-flat'\n // circular dependency most likely\n let FieldComponent = baseFields[fieldType as BaseTypes];\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<$TSFixMe>;\n };\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <Component\n {...fieldProps}\n value={watch(fieldKey) as string}\n setValue={(value: unknown) => {\n setValue(fieldKey, value);\n }}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n }\n\n if (!FieldComponent) {\n return (\n <p className='error'>Field type {fieldType} not supported</p>\n );\n }\n\n if (fieldType === 'select' && field.multiple) {\n FieldComponent = baseFields['multi-select'];\n }\n\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <FieldComponent\n {...fieldProps}\n name={fieldKey}\n component={components?.[fieldType as keyof Components]}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n })}\n {extra ? extra : null}\n {statement ? <Statement {...statement} /> : null}\n </div>\n </div>\n )}\n </fieldset>\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { getMinStartDate } from '@/src/components/form/utils';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: $TSFixMe) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n maxDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n let minDateValue: Date;\n if (rest.meta?.mot && typeof rest.meta.mot === 'number') {\n minDateValue = getMinStartDate(rest.meta.mot);\n } else if (typeof minDate === 'string') {\n minDateValue = new Date(`${minDate}T00:00:00`);\n }\n\n let maxDateValue: Date | undefined;\n if (maxDate) {\n maxDateValue = new Date(`${maxDate}T23:59:59`);\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.date;\n\n if (!Component) {\n throw new Error(`Date picker component not found for field ${name}`);\n }\n\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n onChange,\n transformHtml,\n ...(minDateValue && { minDate: minDateValue.toISOString() }),\n ...(maxDateValue && { maxDate: maxDateValue.toISOString() }),\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { FieldDataProps } from '@/src/types/fields';\n\nconst validateFileSize = (files: File[], maxSize?: number): string | null => {\n if (!maxSize) return null;\n\n for (const file of files) {\n if (file.size > maxSize) {\n const maxSizeMB = Math.round(maxSize / (1024 * 1024));\n const fileSizeMB = Math.round(file.size / (1024 * 1024));\n return `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB (file is ${fileSizeMB}MB)`;\n }\n }\n return null;\n};\n\nexport type FieldFileDataProps = FieldDataProps & {\n accept?: string;\n multiple?: boolean;\n maxFileSize?: number;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: File[]) => void;\n multiple?: boolean;\n component?: Components['file'];\n maxSize?: number;\n accept?: string;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n accept,\n maxSize,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control, setError, clearErrors } = useFormContext();\n const transformHtml = useTransformer();\n\n const handleOnChange = async (\n files: File[],\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const sizeError = validateFileSize(files, maxSize);\n if (sizeError) {\n setError(name, { message: sizeError });\n return;\n }\n\n clearErrors(name);\n field.onChange(files);\n onChange?.(files);\n };\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.file;\n if (!Component) {\n throw new Error(`File upload component not found for field ${name}`);\n }\n\n const customFileUploadFieldProps: FieldFileDataProps = {\n name,\n description,\n label,\n multiple,\n accept,\n maxFileSize: maxSize,\n transformHtml,\n ...rest,\n };\n\n return (\n <Component\n field={{\n ...field,\n value: field.value,\n onChange: async (value: File[]) => handleOnChange(value, field),\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\nimport { TextFieldProps } from './TextField';\n\nexport type NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n onChange?: (value: number) => void;\n};\n\nexport function NumberField({\n component,\n onChange,\n ...props\n}: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.number;\n\n if (!Component) {\n throw new Error(`Number component not found for field ${props.name}`);\n }\n\n const customNumberFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: number) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customNumberFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: string) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const Component = component || components?.radio;\n if (!Component) {\n throw new Error(`Radio group component not found for field ${name}`);\n }\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string | number; label: string }>;\n className?: string;\n onChange?: (value: string | number) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.select;\n\n if (!Component) {\n throw new Error(`Select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string | number) => {\n const isNumberType = Array.isArray(rest.jsonType)\n ? rest.jsonType.includes('number')\n : rest.jsonType === 'number';\n const maybeCastValue = isNumberType ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: $TSFixMe) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.countries;\n if (!Component) {\n throw new Error(`Country component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.textarea;\n if (!Component) {\n throw new Error(`Text area component not found for field ${name}`);\n }\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (evt: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField({ component, onChange, ...props }: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.email;\n\n if (!Component) {\n throw new Error(`Email component not found for field ${props.name}`);\n }\n\n const customEmailFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customEmailFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { Field } from '@/src/flows/types';\n\nexport function HiddenField(props: Field) {\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field }) => {\n return <input {...field} type='hidden' />;\n }}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\n\nimport {\n buildWorkScheduleSummary,\n calculateTotalWorkHours,\n DailySchedule,\n} from './workScheduleUtils';\n\ntype WorkScheduleFieldProps = JSFField & {\n name: string;\n default: DailySchedule[];\n onChange?: (value: $TSFixMe) => void;\n component?: Components['work-schedule'];\n};\n\ntype WorkScheduleFormData = {\n schedule: DailySchedule[];\n};\n\nexport function WorkScheduleField(props: WorkScheduleFieldProps) {\n const { components } = useFormFields();\n const { setValue, control, watch } = useFormContext();\n const transformHtml = useTransformer();\n const watchedSchedule = watch(props.name);\n const [currentSchedule, setCurrentSchedule] =\n useState<DailySchedule[]>(watchedSchedule);\n\n const { workHoursSummary, breakSummary } =\n buildWorkScheduleSummary(currentSchedule);\n const totalWorkHours = calculateTotalWorkHours(currentSchedule);\n\n useEffect(() => {\n setValue(props.name, currentSchedule);\n }, [currentSchedule, props.name, setValue]);\n\n function onSubmit(data: WorkScheduleFormData['schedule']) {\n setCurrentSchedule(data);\n }\n\n const Component = props.component || components['work-schedule'];\n if (!Component) {\n throw new Error(\n `Work schedule component not found for field ${props.name}`,\n );\n }\n\n const fieldData = {\n ...props,\n onSubmit,\n currentSchedule,\n transformHtml,\n defaultFormattedValue: {\n workHoursSummary,\n breakSummary,\n totalWorkHours,\n },\n };\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={fieldData}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype MultiSelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: $TSFixMe) => void;\n component?: Components['select'];\n};\n\nexport function MultiSelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: MultiSelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.['multi-select'];\n if (!Component) {\n throw new Error(`Multi select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import {\n NumberField,\n NumberFieldProps,\n} from '@/src/components/form/fields/NumberField';\n\n// TODO: We use the number field and the the number type is what the partner overrides\n// TODO: this needs to be changed in the future with the changes from https://github.com/remoteoss/remote-flows/pull/128\nexport const MoneyField = (props: NumberFieldProps) => {\n return <NumberField maxLength={15} {...props} />;\n};\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components } from '@/src/types/remoteFlows';\nimport {\n useFormContext,\n ControllerFieldState,\n ControllerRenderProps,\n FieldValues,\n} from 'react-hook-form';\nimport { TelFieldComponentProps, TelFieldDataProps } from '@/src/types/fields';\nimport { useMemo, useCallback, useState, useEffect, useRef } from 'react';\n\nexport type Country = {\n name: string;\n dialCode: string;\n pattern: string;\n areaCodes?: string[];\n};\n\n/**\n * Removes all spaces from input.\n */\nfunction removeSpaces(value: string) {\n return value.replace(/\\s/g, '');\n}\n\nfunction getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber: string = '',\n country?: Country,\n) {\n const baseRegex = new RegExp(\n `^(\\\\+|00)(\\\\d{${country?.dialCode?.length ?? 0}})(.*)$`,\n );\n const baseMatch = internationalPhoneNumber?.match(baseRegex);\n\n if (!baseMatch) {\n return {\n prefix: '',\n dialCode: '',\n phoneNumber: internationalPhoneNumber,\n };\n }\n\n const [, plusOrCallPrefix, dialCode, phoneNumber] = baseMatch;\n\n return {\n prefix: plusOrCallPrefix,\n dialCode,\n phoneNumber,\n };\n}\n\nfunction getCountryFromPhoneNumber(\n {\n dialCodes,\n dialCodeMaxLength,\n }: ReturnType<typeof getCountryDataByCountryCode>,\n internationalPhoneNumber: string,\n) {\n const { prefix } = getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n );\n\n if (!prefix) {\n return undefined;\n }\n\n // Try longest dial codes first - critical for US/Canada\n for (let i = dialCodeMaxLength + prefix.length; i > prefix.length; i--) {\n const dialCode = internationalPhoneNumber.slice(prefix.length, i);\n\n if (dialCodes[dialCode]) {\n return dialCodes[dialCode];\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates a map of dial codes (including area codes) to country objects.\n * Handles countries like US/Canada that share +1 with different area codes.\n */\nexport function getCountryDataByCountryCode(countries: Country[]) {\n const dialCodes: Record<string, Country> = {};\n let dialCodeMaxLength = 0;\n\n countries.forEach((country) => {\n if (country.areaCodes) {\n // For countries with area codes (e.g., +1204, +1226)\n country.areaCodes.forEach((areaCode) => {\n const code = country.dialCode + areaCode;\n dialCodes[code] = country;\n if (code.length > dialCodeMaxLength) {\n dialCodeMaxLength = code.length;\n }\n });\n } else {\n // For countries with simple dial codes (e.g., +44, +351)\n dialCodes[country.dialCode] = country;\n if (country.dialCode.length > dialCodeMaxLength) {\n dialCodeMaxLength = country.dialCode.length;\n }\n }\n });\n\n return { dialCodes, dialCodeMaxLength };\n}\n\nfunction getAreaCodesFromPattern(pattern: string = '') {\n const codeGroupPattern = /\\(([^)]+)\\)/g;\n const groups = pattern.match(codeGroupPattern);\n\n if (groups?.length === 2) {\n return groups[1].replace(/\\(|\\)/g, '').split('|');\n }\n\n return undefined;\n}\n\nfunction transformSchemaToCountries(\n options: Array<{\n value: string;\n label: string;\n meta: { countryCode: string };\n pattern: string;\n }>,\n): Country[] {\n return options.map((option) => ({\n name: option.label,\n dialCode: option.meta.countryCode,\n pattern: option.pattern,\n areaCodes: getAreaCodesFromPattern(option.pattern),\n }));\n}\n\nexport function TelFieldRenderer({\n field,\n fieldState,\n fieldData,\n component: Component,\n onChangeCountryCode,\n onChangePhoneNumber,\n}: {\n field: ControllerRenderProps<FieldValues, string>;\n fieldState: ControllerFieldState;\n fieldData: TelFieldDataProps;\n component: React.ComponentType<TelFieldComponentProps>;\n onChangeCountryCode?: (newCountry: Country) => void;\n onChangePhoneNumber?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n const { value: internationalPhoneNumber } = field;\n const { options } = fieldData;\n\n const countries = useMemo(\n () => transformSchemaToCountries(options),\n [options],\n );\n\n const countriesByCountryCode = useMemo(\n () => getCountryDataByCountryCode(countries),\n [countries],\n );\n\n // Track if the country change was due to manual selection\n const isManualSelectionRef = useRef(false);\n\n // Use state to track country, so manual selection is preserved\n const [country, setCountry] = useState<Country | undefined>(() =>\n getCountryFromPhoneNumber(\n getCountryDataByCountryCode(countries),\n internationalPhoneNumber || '',\n ),\n );\n\n // Re-detect country when phone number changes externally (e.g., form reset or area code typed)\n useEffect(() => {\n // Reset manual selection flag if field is cleared\n if (!internationalPhoneNumber || internationalPhoneNumber === '+') {\n isManualSelectionRef.current = false;\n }\n\n if (isManualSelectionRef.current) {\n return;\n }\n\n const detected = getCountryFromPhoneNumber(\n countriesByCountryCode,\n internationalPhoneNumber || '',\n );\n setCountry(detected);\n }, [internationalPhoneNumber, countriesByCountryCode]);\n\n const { prefix, phoneNumber: nationalPhoneNumber } = useMemo(\n () =>\n getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n country,\n ),\n [internationalPhoneNumber, country],\n );\n\n const handleCountryCodeChange = useCallback(\n (newCountry: Country) => {\n if (!newCountry) return;\n const newValue = `+${newCountry.dialCode}${nationalPhoneNumber}`;\n\n // Mark as manual selection to prevent useEffect from overriding\n isManualSelectionRef.current = true;\n\n // Update country state to preserve manual selection\n setCountry(newCountry);\n\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangeCountryCode) {\n onChangeCountryCode(newCountry);\n }\n },\n [nationalPhoneNumber, field, onChangeCountryCode],\n );\n\n const handlePhoneNumberChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const valueWithoutSpaces = removeSpaces(event.target.value);\n let newValue: string;\n if (country) {\n newValue = `${prefix}${country.dialCode}${valueWithoutSpaces}`;\n } else {\n newValue = `${prefix}${valueWithoutSpaces}`;\n }\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangePhoneNumber) {\n const syntheticEvent = {\n target: { value: newValue, name: field.name },\n } as React.ChangeEvent<HTMLInputElement>;\n onChangePhoneNumber(syntheticEvent);\n }\n },\n [country, prefix, field, onChangePhoneNumber],\n );\n\n const fieldDataWithComputedValues = useMemo(\n () => ({\n ...fieldData,\n onChangeCountryCode: handleCountryCodeChange,\n onChangePhoneNumber: handlePhoneNumberChange,\n currentCountry: country,\n nationalPhoneNumber,\n }),\n [\n fieldData,\n handleCountryCodeChange,\n handlePhoneNumberChange,\n country,\n nationalPhoneNumber,\n ],\n );\n\n return (\n <Component\n field={field}\n fieldState={fieldState}\n fieldData={fieldDataWithComputedValues}\n />\n );\n}\n\nexport type TelFieldProps = TelFieldDataProps & {\n name: string;\n component?: Components['tel'];\n};\n\nexport function TelField({\n name,\n description,\n label,\n onChangeCountryCode,\n onChangePhoneNumber,\n component,\n ...rest\n}: TelFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.tel;\n if (!Component) {\n throw new Error(`Tel component not found for field ${name}`);\n }\n\n const customTelFieldProps: TelFieldDataProps = {\n name,\n description,\n label,\n transformHtml,\n ...rest,\n };\n\n return (\n <TelFieldRenderer\n field={field}\n fieldState={fieldState}\n fieldData={customTelFieldProps}\n component={Component}\n onChangeCountryCode={onChangeCountryCode}\n onChangePhoneNumber={onChangePhoneNumber}\n />\n );\n }}\n />\n );\n}\n","import { CheckBoxField } from './CheckBoxField';\nimport { DatePickerField } from './DatePickerField';\nimport { FileUploadField } from './FileUploadField';\nimport { NumberField } from './NumberField';\nimport { RadioGroupField } from './RadioGroupField';\nimport { SelectField } from './SelectField';\nimport { CountryField } from './CountryField';\nimport { TextAreaField } from './TextAreaField';\nimport { TextField } from './TextField';\nimport { EmailField } from './EmailField';\nimport { HiddenField } from './HiddenField';\nimport { WorkScheduleField } from './WorkScheduleField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { MoneyField } from './MoneyField';\nimport { TelField } from './TelField';\nimport { SupportedTypes } from './types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\nexport const baseFields: Record<\n Exclude<SupportedTypes, 'fieldset' | 'fieldset-flat'>,\n React.ComponentType<$TSFixMe>\n> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: MoneyField,\n select: SelectField,\n 'multi-select': MultiSelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n hidden: HiddenField,\n tel: TelField,\n 'work-schedule': WorkScheduleField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { HelpCenterDataProps } from '@/src/types/fields';\nimport { BaseFormDescription as Description } from '@/src/components/ui/form';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\n\nexport type ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement?: {\n title?: string;\n description?: string;\n };\n label: string;\n helpCenter?: HelpCenterDataProps;\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n label,\n helpCenter,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n const forcedValueDescription = statement?.description || description;\n\n const forcedValueTitle = statement?.title\n ? sanitizeHtml(statement?.title)\n : sanitizeHtml(label);\n\n const titleId = `forced-value-${name}-title`;\n const descriptionId = `forced-value-${name}-description`;\n\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isHiddenValue = !forcedValueDescription && !statement?.title;\n\n if (isHiddenValue) {\n return null;\n }\n\n return (\n <div\n role='group'\n aria-labelledby={forcedValueTitle ? titleId : undefined}\n aria-describedby={forcedValueDescription ? descriptionId : undefined}\n >\n {forcedValueTitle && (\n <p\n id={titleId}\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: forcedValueTitle,\n }}\n />\n )}\n <Description\n as='span'\n id={descriptionId}\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n helpCenter={\n <HelpCenter\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n helpCenter={helpCenter}\n />\n }\n >\n {forcedValueDescription}\n </Description>\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","useEffect","useRef","omit","jsx","DatePickerField","description","label","name","minDate","maxDate","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","minDateValue","getMinStartDate","maxDateValue","FormField","field","fieldState","Component","customDatePickerFieldProps","__name","value","jsx","validateFileSize","__name","files","maxSize","file","maxSizeMB","fileSizeMB","FileUploadField","name","description","label","multiple","onChange","component","accept","rest","components","useFormFields","control","setError","clearErrors","useFormContext","transformHtml","useTransformer","handleOnChange","field","sizeError","FormField","fieldState","Component","customFileUploadFieldProps","value","jsx","NumberField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customNumberFieldProps","__name","value","jsx","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customRadioGroupFieldProps","__name","value","jsx","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","maybeCastValue","jsx","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customTextAreaFieldProps","__name","evt","jsx","EmailField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customEmailFieldProps","__name","value","jsx","HiddenField","props","control","useFormContext","FormField","field","__name","useEffect","useState","jsx","WorkScheduleField","props","components","useFormFields","setValue","control","watch","useFormContext","transformHtml","useTransformer","watchedSchedule","currentSchedule","setCurrentSchedule","useState","workHoursSummary","breakSummary","buildWorkScheduleSummary","totalWorkHours","calculateTotalWorkHours","useEffect","onSubmit","data","__name","Component","fieldData","FormField","field","fieldState","value","jsx","MultiSelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","MoneyField","__name","props","NumberField","useMemo","useCallback","useState","useEffect","useRef","jsx","removeSpaces","value","__name","getStructuredNumberFromInternationalNumber","internationalPhoneNumber","country","baseRegex","baseMatch","plusOrCallPrefix","dialCode","phoneNumber","getCountryFromPhoneNumber","dialCodes","dialCodeMaxLength","prefix","i","getCountryDataByCountryCode","countries","areaCode","code","getAreaCodesFromPattern","pattern","codeGroupPattern","groups","transformSchemaToCountries","options","option","TelFieldRenderer","field","fieldState","fieldData","Component","onChangeCountryCode","onChangePhoneNumber","useMemo","countriesByCountryCode","isManualSelectionRef","useRef","setCountry","useState","useEffect","detected","nationalPhoneNumber","handleCountryCodeChange","useCallback","newCountry","newValue","handlePhoneNumberChange","event","valueWithoutSpaces","syntheticEvent","fieldDataWithComputedValues","TelField","name","description","label","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","customTelFieldProps","baseFields","CheckBoxField","TextField","EmailField","MoneyField","SelectField","MultiSelectField","RadioGroupField","NumberField","FileUploadField","DatePickerField","TextAreaField","CountryField","HiddenField","TelField","WorkScheduleField","useEffect","jsx","jsxs","ForcedValueField","name","value","description","statement","label","helpCenter","setValue","useFormContext","forcedValueDescription","forcedValueTitle","sanitizeHtml","titleId","descriptionId","useEffect","BaseFormDescription","HelpCenter","__name","Fragment","jsx","jsxs","FieldSetField","label","name","fields","description","components","statement","isFlatFieldset","extra","variant","features","meta","helpCenter","watch","setValue","trigger","formState","useFormContext","formComponents","useFormFields","stateField","isExpanded","fieldNames","fieldName","watchedValues","prevValuesRef","useRef","triggerTimeoutRef","toggleExpanded","__name","useEffect","currentValues","previousValues","hasBeenSubmitted","hasChanged","i","ToggleComponent","FieldsetToggleButtonDefault","contentId","headerId","cn","ZendeskTriggerButton","BaseFormDescription","field","fieldType","fieldKey","isForcedValue","checkFieldHasForcedValue","wrapWithCustomWrapper","content","key","fieldProps","omit","ForcedValueField","FieldComponent","baseFields","Component","value","Statement"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/form/fields/CountryField.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/HiddenField.tsx","../src/components/form/fields/WorkScheduleField.tsx","../src/components/form/fields/MultiSelectField.tsx","../src/components/form/fields/MoneyField.tsx","../src/components/form/fields/TelField.tsx","../src/components/form/fields/baseFields.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\nimport { Fragment, useEffect, useRef } from 'react';\nimport omit from 'lodash.omit';\nimport { baseFields } from '@/src/components/form/fields/baseFields';\nimport { cn } from '@/src/lib/utils';\nimport { $TSFixMe, Components } from '@/src/types/remoteFlows';\nimport { Statement } from '@/src/components/form/Statement';\nimport { useFormFields } from '@/src/context';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { FieldsetToggleButtonDefault } from '@/src/components/form/fields/default/FieldsetToggleButtonDefault';\nimport { BaseTypes, SupportedTypes } from './types';\nimport { StatementComponentProps } from '@/src/types/fields';\nimport { checkFieldHasForcedValue } from '@/src/components/form/utils';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { BaseFormDescription } from '@/src/components/ui/form';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n Component?: React.ComponentType<$TSFixMe>;\n inputType: SupportedTypes;\n multiple?: boolean;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetFeatures = {\n toggle?: {\n enabled: boolean;\n defaultExpanded?: boolean;\n stateField?: string;\n labels?: {\n expand: string;\n collapse: string;\n };\n className?: string;\n };\n};\n\nexport type FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n features?: FieldSetFeatures;\n components: Components;\n statement?: StatementComponentProps['data'];\n isFlatFieldset: boolean;\n extra?: React.ReactNode;\n variant: 'outset' | 'inset';\n meta?: {\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n } & Record<string, $TSFixMe>;\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n statement,\n isFlatFieldset,\n extra,\n variant = 'outset',\n features,\n meta,\n}: FieldSetProps) {\n const { helpCenter } = meta || {};\n const { watch, setValue, trigger, formState } = useFormContext();\n const { components: formComponents } = useFormFields();\n\n // Get expanded state from form state if stateField is provided\n const stateField = features?.toggle?.stateField;\n const isExpanded = stateField\n ? watch(stateField)\n : (features?.toggle?.defaultExpanded ?? true);\n\n const fieldNames = fields.map(\n ({ name: fieldName }) => `${name}.${fieldName}`,\n );\n const watchedValues = watch(fieldNames);\n const prevValuesRef = useRef<string[]>(watchedValues);\n const triggerTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const toggleExpanded = () => {\n if (stateField) {\n setValue(stateField, !isExpanded);\n }\n };\n\n useEffect(() => {\n const currentValues = watchedValues;\n const previousValues = prevValuesRef.current;\n const hasBeenSubmitted = formState.isSubmitted || formState.submitCount > 0;\n\n // Check if any value has changed\n let hasChanged = false;\n for (let i = 0; i < currentValues.length; i++) {\n if (\n currentValues[i] !== undefined &&\n previousValues[i] !== currentValues[i]\n ) {\n hasChanged = true;\n // This is to prevent the form from triggering validation too many times\n break;\n }\n }\n // If changes detected and we haven't triggered yet, run trigger\n if (hasChanged && hasBeenSubmitted) {\n // We need to debounce the validation trigger so that tests don't freeze\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n triggerTimeoutRef.current = setTimeout(() => {\n trigger();\n }, 50);\n }\n\n prevValuesRef.current = [...currentValues];\n\n return () => {\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n };\n }, [watchedValues, trigger, formState.isSubmitted, formState.submitCount]);\n\n const ToggleComponent =\n formComponents?.fieldsetToggle || FieldsetToggleButtonDefault;\n const contentId = `${name}-content`;\n const headerId = `${name}-header`;\n\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField`,\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend\n className={cn(\n 'text-sm font-semibold px-2',\n variant === 'inset' && 'hidden',\n )}\n >\n {label}\n </legend>\n {helpCenter?.callToAction && helpCenter?.id && variant === 'outset' && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n {variant === 'inset' && (\n <>\n <div\n className='RemoteFlows__FieldSetField__Header'\n id={headerId}\n data-state={isExpanded ? 'expanded' : 'collapsed'}\n aria-expanded={isExpanded}\n >\n <h3 className={cn('RemoteFlows__FieldSetField__Title')}>{label}</h3>\n {features?.toggle?.enabled && (\n <ToggleComponent\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${label}`}\n className={cn(\n 'RemoteFlows__FieldSetField__Toggle',\n features.toggle?.className,\n )}\n >\n {isExpanded\n ? (features.toggle.labels?.collapse ?? 'Remove')\n : (features.toggle.labels?.expand ?? 'Define')}\n </ToggleComponent>\n )}\n </div>\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </>\n )}\n {isExpanded && (\n <div id={contentId} aria-labelledby={headerId} role='region'>\n {description ? (\n <BaseFormDescription\n as='div'\n className='mb-5 RemoteFlows__FieldSetField__Description'\n >\n {description}\n </BaseFormDescription>\n ) : null}\n <div className='grid gap-4'>\n {fields.map((field: $TSFixMe) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(watchedValues, field) ||\n {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n const fieldType = field.type;\n const fieldKey = `${isFlatFieldset ? field.name : `${name}.${field.name}`}`;\n\n const isForcedValue = checkFieldHasForcedValue(field);\n\n // Helper function to wrap content with WrapperComponent if present\n const wrapWithCustomWrapper = (\n content: React.ReactNode,\n key: string,\n ) => {\n if (field.WrapperComponent) {\n return (\n <field.WrapperComponent key={key}>\n {content}\n </field.WrapperComponent>\n );\n }\n return <Fragment key={key}>{content}</Fragment>;\n };\n\n if (isForcedValue) {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <ForcedValueField\n name={fieldKey}\n description={fieldProps.description}\n value={fieldProps.const}\n statement={fieldProps.statement}\n label={fieldProps.label}\n helpCenter={fieldProps.meta?.helpCenter}\n />,\n fieldKey,\n );\n }\n\n // Handle nested fieldsets\n if (fieldType === 'fieldset') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n />,\n fieldKey,\n );\n }\n\n if (fieldType === 'fieldset-flat') {\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <FieldSetField\n {...(fieldProps as $TSFixMe)}\n name={fieldKey}\n components={components}\n isFlatFieldset\n />,\n fieldKey,\n );\n }\n // We need to do the check after checking (field.type || field.inputType) === 'fieldset' or (field.type || field.inputType) === 'fieldset-flat'\n // circular dependency most likely\n let FieldComponent = baseFields[fieldType as BaseTypes];\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<$TSFixMe>;\n };\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <Component\n {...fieldProps}\n value={watch(fieldKey) as string}\n setValue={(value: unknown) => {\n setValue(fieldKey, value);\n }}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n }\n\n if (!FieldComponent) {\n return (\n <p className='error'>Field type {fieldType} not supported</p>\n );\n }\n\n if (fieldType === 'select' && field.multiple) {\n FieldComponent = baseFields['multi-select'];\n }\n\n const fieldProps = omit(field, 'WrapperComponent');\n return wrapWithCustomWrapper(\n <>\n <FieldComponent\n {...fieldProps}\n name={fieldKey}\n component={components?.[fieldType as keyof Components]}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </>,\n fieldKey,\n );\n })}\n {extra ? extra : null}\n {statement ? <Statement {...statement} /> : null}\n </div>\n </div>\n )}\n </fieldset>\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { getMinStartDate } from '@/src/components/form/utils';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: $TSFixMe) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n maxDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n let minDateValue: Date;\n if (rest.meta?.mot && typeof rest.meta.mot === 'number') {\n minDateValue = getMinStartDate(rest.meta.mot);\n } else if (typeof minDate === 'string') {\n minDateValue = new Date(`${minDate}T00:00:00`);\n }\n\n let maxDateValue: Date | undefined;\n if (maxDate) {\n maxDateValue = new Date(`${maxDate}T23:59:59`);\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.date;\n\n if (!Component) {\n throw new Error(`Date picker component not found for field ${name}`);\n }\n\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n onChange,\n transformHtml,\n ...(minDateValue && { minDate: minDateValue.toISOString() }),\n ...(maxDateValue && { maxDate: maxDateValue.toISOString() }),\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { FieldDataProps } from '@/src/types/fields';\n\nconst validateFileSize = (files: File[], maxSize?: number): string | null => {\n if (!maxSize) return null;\n\n for (const file of files) {\n if (file.size > maxSize) {\n const maxSizeMB = Math.round(maxSize / (1024 * 1024));\n const fileSizeMB = Math.round(file.size / (1024 * 1024));\n return `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB (file is ${fileSizeMB}MB)`;\n }\n }\n return null;\n};\n\nexport type FieldFileDataProps = FieldDataProps & {\n accept?: string;\n multiple?: boolean;\n maxFileSize?: number;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: File[]) => void;\n multiple?: boolean;\n component?: Components['file'];\n maxSize?: number;\n accept?: string;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n accept,\n maxSize,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control, setError, clearErrors } = useFormContext();\n const transformHtml = useTransformer();\n\n const handleOnChange = async (\n files: File[],\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const sizeError = validateFileSize(files, maxSize);\n if (sizeError) {\n setError(name, { message: sizeError });\n return;\n }\n\n clearErrors(name);\n field.onChange(files);\n onChange?.(files);\n };\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.file;\n if (!Component) {\n throw new Error(`File upload component not found for field ${name}`);\n }\n\n const customFileUploadFieldProps: FieldFileDataProps = {\n name,\n description,\n label,\n multiple,\n accept,\n maxFileSize: maxSize,\n transformHtml,\n ...rest,\n };\n\n return (\n <Component\n field={{\n ...field,\n value: field.value,\n onChange: async (value: File[]) => handleOnChange(value, field),\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\nimport { TextFieldProps } from './TextField';\n\nexport type NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n onChange?: (value: number) => void;\n};\n\nexport function NumberField({\n component,\n onChange,\n ...props\n}: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.number;\n\n if (!Component) {\n throw new Error(`Number component not found for field ${props.name}`);\n }\n\n const customNumberFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: number) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customNumberFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: string) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const Component = component || components?.radio;\n if (!Component) {\n throw new Error(`Radio group component not found for field ${name}`);\n }\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string | number; label: string }>;\n className?: string;\n onChange?: (value: string | number) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.select;\n\n if (!Component) {\n throw new Error(`Select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string | number) => {\n const isNumberType = Array.isArray(rest.jsonType)\n ? rest.jsonType.includes('number')\n : rest.jsonType === 'number';\n const maybeCastValue = isNumberType ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: $TSFixMe) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.countries;\n if (!Component) {\n throw new Error(`Country component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '@/src/components/ui/form';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.textarea;\n if (!Component) {\n throw new Error(`Text area component not found for field ${name}`);\n }\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (evt: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField({ component, onChange, ...props }: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const Component = component || components.email;\n\n if (!Component) {\n throw new Error(`Email component not found for field ${props.name}`);\n }\n\n const customEmailFieldProps = {\n onChange,\n transformHtml,\n ...props,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: string) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customEmailFieldProps}\n />\n );\n }}\n />\n );\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { Field } from '@/src/flows/types';\n\nexport function HiddenField(props: Field) {\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field }) => {\n return <input {...field} type='hidden' />;\n }}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\n\nimport {\n buildWorkScheduleSummary,\n calculateTotalWorkHours,\n DailySchedule,\n} from './workScheduleUtils';\n\ntype WorkScheduleFieldProps = JSFField & {\n name: string;\n default: DailySchedule[];\n onChange?: (value: $TSFixMe) => void;\n component?: Components['work-schedule'];\n};\n\ntype WorkScheduleFormData = {\n schedule: DailySchedule[];\n};\n\nexport function WorkScheduleField(props: WorkScheduleFieldProps) {\n const { components } = useFormFields();\n const { setValue, control, watch } = useFormContext();\n const transformHtml = useTransformer();\n const watchedSchedule = watch(props.name);\n const [currentSchedule, setCurrentSchedule] =\n useState<DailySchedule[]>(watchedSchedule);\n\n const { workHoursSummary, breakSummary } =\n buildWorkScheduleSummary(currentSchedule);\n const totalWorkHours = calculateTotalWorkHours(currentSchedule);\n\n useEffect(() => {\n setValue(props.name, currentSchedule);\n }, [currentSchedule, props.name, setValue]);\n\n function onSubmit(data: WorkScheduleFormData['schedule']) {\n setCurrentSchedule(data);\n }\n\n const Component = props.component || components['work-schedule'];\n if (!Component) {\n throw new Error(\n `Work schedule component not found for field ${props.name}`,\n );\n }\n\n const fieldData = {\n ...props,\n onSubmit,\n currentSchedule,\n transformHtml,\n defaultFormattedValue: {\n workHoursSummary,\n breakSummary,\n totalWorkHours,\n },\n };\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={fieldData}\n />\n );\n }}\n />\n );\n}\n","import { useFormFields, useTransformer } from '@/src/context';\nimport { Components, JSFField, $TSFixMe } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\n\ntype MultiSelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: $TSFixMe) => void;\n component?: Components['select'];\n};\n\nexport function MultiSelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: MultiSelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components?.['multi-select'];\n if (!Component) {\n throw new Error(`Multi select component not found for field ${name}`);\n }\n\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n transformHtml,\n ...rest,\n };\n return (\n <Component\n field={{\n ...field,\n onChange: (value: $TSFixMe) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }}\n />\n );\n}\n","import {\n NumberField,\n NumberFieldProps,\n} from '@/src/components/form/fields/NumberField';\n\n// TODO: We use the number field and the the number type is what the partner overrides\n// TODO: this needs to be changed in the future with the changes from https://github.com/remoteoss/remote-flows/pull/128\nexport const MoneyField = (props: NumberFieldProps) => {\n return <NumberField maxLength={15} {...props} />;\n};\n","import { FormField } from '@/src/components/ui/form';\nimport { useFormFields, useTransformer } from '@/src/context';\nimport { Components } from '@/src/types/remoteFlows';\nimport {\n useFormContext,\n ControllerFieldState,\n ControllerRenderProps,\n FieldValues,\n} from 'react-hook-form';\nimport { TelFieldComponentProps, TelFieldDataProps } from '@/src/types/fields';\nimport { useMemo, useCallback, useState, useEffect, useRef } from 'react';\n\nexport type Country = {\n name: string;\n dialCode: string;\n pattern: string;\n areaCodes?: string[];\n};\n\n/**\n * Removes all spaces from input.\n */\nfunction removeSpaces(value: string) {\n return value.replace(/\\s/g, '');\n}\n\nfunction getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber: string = '',\n country?: Country,\n) {\n const baseRegex = new RegExp(\n `^(\\\\+|00)(\\\\d{${country?.dialCode?.length ?? 0}})(.*)$`,\n );\n const baseMatch = internationalPhoneNumber?.match(baseRegex);\n\n if (!baseMatch) {\n return {\n prefix: '',\n dialCode: '',\n phoneNumber: internationalPhoneNumber,\n };\n }\n\n const [, plusOrCallPrefix, dialCode, phoneNumber] = baseMatch;\n\n return {\n prefix: plusOrCallPrefix,\n dialCode,\n phoneNumber,\n };\n}\n\nfunction getCountryFromPhoneNumber(\n {\n dialCodes,\n dialCodeMaxLength,\n }: ReturnType<typeof getCountryDataByCountryCode>,\n internationalPhoneNumber: string,\n) {\n const { prefix } = getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n );\n\n if (!prefix) {\n return undefined;\n }\n\n // Try longest dial codes first - critical for US/Canada\n for (let i = dialCodeMaxLength + prefix.length; i > prefix.length; i--) {\n const dialCode = internationalPhoneNumber.slice(prefix.length, i);\n\n if (dialCodes[dialCode]) {\n return dialCodes[dialCode];\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates a map of dial codes (including area codes) to country objects.\n * Handles countries like US/Canada that share +1 with different area codes.\n */\nexport function getCountryDataByCountryCode(countries: Country[]) {\n const dialCodes: Record<string, Country> = {};\n let dialCodeMaxLength = 0;\n\n countries.forEach((country) => {\n if (country.areaCodes) {\n // For countries with area codes (e.g., +1204, +1226)\n country.areaCodes.forEach((areaCode) => {\n const code = country.dialCode + areaCode;\n dialCodes[code] = country;\n if (code.length > dialCodeMaxLength) {\n dialCodeMaxLength = code.length;\n }\n });\n } else {\n // For countries with simple dial codes (e.g., +44, +351)\n dialCodes[country.dialCode] = country;\n if (country.dialCode.length > dialCodeMaxLength) {\n dialCodeMaxLength = country.dialCode.length;\n }\n }\n });\n\n return { dialCodes, dialCodeMaxLength };\n}\n\nfunction getAreaCodesFromPattern(pattern: string = '') {\n const codeGroupPattern = /\\(([^)]+)\\)/g;\n const groups = pattern.match(codeGroupPattern);\n\n if (groups?.length === 2) {\n return groups[1].replace(/\\(|\\)/g, '').split('|');\n }\n\n return undefined;\n}\n\nfunction transformSchemaToCountries(\n options: Array<{\n value: string;\n label: string;\n meta: { countryCode: string };\n pattern: string;\n }>,\n): Country[] {\n return options.map((option) => ({\n name: option.label,\n dialCode: option.meta.countryCode,\n pattern: option.pattern,\n areaCodes: getAreaCodesFromPattern(option.pattern),\n }));\n}\n\nexport function TelFieldRenderer({\n field,\n fieldState,\n fieldData,\n component: Component,\n onChangeCountryCode,\n onChangePhoneNumber,\n}: {\n field: ControllerRenderProps<FieldValues, string>;\n fieldState: ControllerFieldState;\n fieldData: TelFieldDataProps;\n component: React.ComponentType<TelFieldComponentProps>;\n onChangeCountryCode?: (newCountry: Country) => void;\n onChangePhoneNumber?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n const { value: internationalPhoneNumber } = field;\n const { options } = fieldData;\n\n const countries = useMemo(\n () => transformSchemaToCountries(options),\n [options],\n );\n\n const countriesByCountryCode = useMemo(\n () => getCountryDataByCountryCode(countries),\n [countries],\n );\n\n // Track if the country change was due to manual selection\n const isManualSelectionRef = useRef(false);\n\n // Use state to track country, so manual selection is preserved\n const [country, setCountry] = useState<Country | undefined>(() =>\n getCountryFromPhoneNumber(\n getCountryDataByCountryCode(countries),\n internationalPhoneNumber || '',\n ),\n );\n\n // Re-detect country when phone number changes externally (e.g., form reset or area code typed)\n useEffect(() => {\n // Reset manual selection flag if field is cleared\n if (!internationalPhoneNumber || internationalPhoneNumber === '+') {\n isManualSelectionRef.current = false;\n }\n\n if (isManualSelectionRef.current) {\n return;\n }\n\n const detected = getCountryFromPhoneNumber(\n countriesByCountryCode,\n internationalPhoneNumber || '',\n );\n setCountry(detected);\n }, [internationalPhoneNumber, countriesByCountryCode]);\n\n const { prefix, phoneNumber: nationalPhoneNumber } = useMemo(\n () =>\n getStructuredNumberFromInternationalNumber(\n internationalPhoneNumber,\n country,\n ),\n [internationalPhoneNumber, country],\n );\n\n const handleCountryCodeChange = useCallback(\n (newCountry: Country) => {\n if (!newCountry) return;\n const newValue = `+${newCountry.dialCode}${nationalPhoneNumber}`;\n\n // Mark as manual selection to prevent useEffect from overriding\n isManualSelectionRef.current = true;\n\n // Update country state to preserve manual selection\n setCountry(newCountry);\n\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangeCountryCode) {\n onChangeCountryCode(newCountry);\n }\n },\n [nationalPhoneNumber, field, onChangeCountryCode],\n );\n\n const handlePhoneNumberChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const valueWithoutSpaces = removeSpaces(event.target.value);\n let newValue: string;\n if (country) {\n newValue = `${prefix}${country.dialCode}${valueWithoutSpaces}`;\n } else {\n newValue = `${prefix}${valueWithoutSpaces}`;\n }\n // Update React Hook Form state\n field.onChange(newValue);\n\n // Call optional external onChange\n if (onChangePhoneNumber) {\n const syntheticEvent = {\n target: { value: newValue, name: field.name },\n } as React.ChangeEvent<HTMLInputElement>;\n onChangePhoneNumber(syntheticEvent);\n }\n },\n [country, prefix, field, onChangePhoneNumber],\n );\n\n const fieldDataWithComputedValues = useMemo(\n () => ({\n ...fieldData,\n onChangeCountryCode: handleCountryCodeChange,\n onChangePhoneNumber: handlePhoneNumberChange,\n currentCountry: country,\n nationalPhoneNumber,\n }),\n [\n fieldData,\n handleCountryCodeChange,\n handlePhoneNumberChange,\n country,\n nationalPhoneNumber,\n ],\n );\n\n return (\n <Component\n field={field}\n fieldState={fieldState}\n fieldData={fieldDataWithComputedValues}\n />\n );\n}\n\nexport type TelFieldProps = TelFieldDataProps & {\n name: string;\n component?: Components['tel'];\n};\n\nexport function TelField({\n name,\n description,\n label,\n onChangeCountryCode,\n onChangePhoneNumber,\n component,\n ...rest\n}: TelFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n const transformHtml = useTransformer();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const Component = component || components.tel;\n if (!Component) {\n throw new Error(`Tel component not found for field ${name}`);\n }\n\n const customTelFieldProps: TelFieldDataProps = {\n name,\n description,\n label,\n transformHtml,\n ...rest,\n };\n\n return (\n <TelFieldRenderer\n field={field}\n fieldState={fieldState}\n fieldData={customTelFieldProps}\n component={Component}\n onChangeCountryCode={onChangeCountryCode}\n onChangePhoneNumber={onChangePhoneNumber}\n />\n );\n }}\n />\n );\n}\n","import { CheckBoxField } from './CheckBoxField';\nimport { DatePickerField } from './DatePickerField';\nimport { FileUploadField } from './FileUploadField';\nimport { NumberField } from './NumberField';\nimport { RadioGroupField } from './RadioGroupField';\nimport { SelectField } from './SelectField';\nimport { CountryField } from './CountryField';\nimport { TextAreaField } from './TextAreaField';\nimport { TextField } from './TextField';\nimport { EmailField } from './EmailField';\nimport { HiddenField } from './HiddenField';\nimport { WorkScheduleField } from './WorkScheduleField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { MoneyField } from './MoneyField';\nimport { TelField } from './TelField';\nimport { SupportedTypes } from './types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\nexport const baseFields: Record<\n Exclude<SupportedTypes, 'fieldset' | 'fieldset-flat'>,\n React.ComponentType<$TSFixMe>\n> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: MoneyField,\n select: SelectField,\n 'multi-select': MultiSelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n hidden: HiddenField,\n tel: TelField,\n 'work-schedule': WorkScheduleField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { HelpCenterDataProps } from '@/src/types/fields';\nimport { BaseFormDescription as Description } from '@/src/components/ui/form';\nimport { HelpCenter } from '@/src/components/shared/zendesk-drawer/HelpCenter';\n\nexport type ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement?: {\n title?: string;\n description?: string;\n };\n label: string;\n helpCenter?: HelpCenterDataProps;\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n label,\n helpCenter,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n const forcedValueDescription = statement?.description || description;\n\n const forcedValueTitle = statement?.title\n ? sanitizeHtml(statement?.title)\n : sanitizeHtml(label);\n\n const titleId = `forced-value-${name}-title`;\n const descriptionId = `forced-value-${name}-description`;\n\n useEffect(() => {\n setValue(name, value);\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isHiddenValue = !forcedValueDescription && !statement?.title;\n\n if (isHiddenValue) {\n return null;\n }\n\n return (\n <div\n role='group'\n aria-labelledby={forcedValueTitle ? titleId : undefined}\n aria-describedby={forcedValueDescription ? descriptionId : undefined}\n >\n {forcedValueTitle && (\n <p\n id={titleId}\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: forcedValueTitle,\n }}\n />\n )}\n <Description\n as='span'\n id={descriptionId}\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n helpCenter={\n <HelpCenter\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n helpCenter={helpCenter}\n />\n }\n >\n {forcedValueDescription}\n </Description>\n </div>\n );\n}\n"],"mappings":"8cACA,OAAS,YAAAA,GAAU,aAAAC,GAAW,UAAAC,OAAc,QAC5C,OAAOC,MAAU,cC0DP,cAAAC,OAAA,oBAhDH,SAASC,GAAgB,CAC9B,YAAAC,EACA,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAyB,CACvB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAEjCC,EACAP,EAAK,MAAM,KAAO,OAAOA,EAAK,KAAK,KAAQ,SAC7CO,EAAeC,EAAgBR,EAAK,KAAK,GAAG,EACnC,OAAOJ,GAAY,WAC5BW,EAAe,IAAI,KAAK,GAAGX,CAAO,WAAW,GAG/C,IAAIa,EACJ,OAAIZ,IACFY,EAAe,IAAI,KAAK,GAAGZ,CAAO,WAAW,GAI7CN,GAACmB,EAAA,CACC,QAASP,EACT,KAAMR,EACN,OAAQ,CAAC,CAAE,MAAAgB,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYd,GAAaE,GAAY,KAE3C,GAAI,CAACY,EACH,MAAM,IAAI,MAAM,6CAA6ClB,CAAI,EAAE,EAGrE,IAAMmB,EAA6B,CACjC,YAAArB,EACA,MAAAC,EACA,KAAAC,EACA,SAAAG,EACA,cAAAO,EACA,GAAIE,GAAgB,CAAE,QAASA,EAAa,YAAY,CAAE,EAC1D,GAAIE,GAAgB,CAAE,QAASA,EAAa,YAAY,CAAE,EAC1D,GAAGT,CACL,EACA,OACET,GAACsB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAoB,CAC7BL,EAAM,SAASK,CAAK,EACpBlB,IAAWkB,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CA/DgBC,EAAAvB,GAAA,mBC6EN,cAAAyB,OAAA,oBA/EV,IAAMC,GAAmBC,EAAA,CAACC,EAAeC,IAAoC,CAC3E,GAAI,CAACA,EAAS,OAAO,KAErB,QAAWC,KAAQF,EACjB,GAAIE,EAAK,KAAOD,EAAS,CACvB,IAAME,EAAY,KAAK,MAAMF,EAAW,OAAY,EAC9CG,EAAa,KAAK,MAAMF,EAAK,MAAQ,KAAO,KAAK,EACvD,MAAO,SAASA,EAAK,IAAI,6BAA6BC,CAAS,eAAeC,CAAU,KAC1F,CAEF,OAAO,IACT,EAXyB,oBA2BlB,SAASC,GAAgB,CAC9B,KAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,OAAAC,EACA,QAAAX,EACA,GAAGY,CACL,EAAyB,CACvB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,EAAS,SAAAC,EAAU,YAAAC,CAAY,EAAIC,EAAe,EACpDC,EAAgBC,EAAe,EAE/BC,EAAiBvB,EAAA,MACrBC,EACAuB,IACG,CACH,IAAMC,EAAY1B,GAAiBE,EAAOC,CAAO,EACjD,GAAIuB,EAAW,CACbP,EAASX,EAAM,CAAE,QAASkB,CAAU,CAAC,EACrC,MACF,CAEAN,EAAYZ,CAAI,EAChBiB,EAAM,SAASvB,CAAK,EACpBU,IAAWV,CAAK,CAClB,EAbuB,kBAevB,OACEH,GAAC4B,EAAA,CACC,QAAST,EACT,KAAMV,EACN,OAAQ,CAAC,CAAE,MAAAiB,EAAO,WAAAG,CAAW,IAAM,CACjC,IAAMC,EAAYhB,GAAaG,EAAW,KAC1C,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,6CAA6CrB,CAAI,EAAE,EAGrE,IAAMsB,EAAiD,CACrD,KAAAtB,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAG,EACA,YAAaX,EACb,cAAAmB,EACA,GAAGP,CACL,EAEA,OACEhB,GAAC8B,EAAA,CACC,MAAO,CACL,GAAGJ,EACH,MAAOA,EAAM,MACb,SAAUxB,EAAA,MAAO8B,GAAkBP,EAAeO,EAAON,CAAK,EAApD,WACZ,EACA,WAAYG,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CAjEgB7B,EAAAM,GAAA,mBCAN,cAAAyB,OAAA,oBA1BH,SAASC,EAAY,CAC1B,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAqB,CACnB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAErC,OACEV,GAACW,EAAA,CACC,QAASJ,EACT,KAAMH,EAAM,KACZ,OAAQ,CAAC,CAAE,MAAAQ,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYZ,GAAaG,EAAW,OAE1C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,wCAAwCV,EAAM,IAAI,EAAE,EAGtE,IAAMW,EAAyB,CAC7B,SAAAZ,EACA,cAAAM,EACA,GAAGL,CACL,EACA,OACEJ,GAACc,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAkB,CAC3BL,EAAM,SAASK,CAAK,EACpBd,IAAWc,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CAzCgBC,EAAAf,EAAA,eCiCN,cAAAiB,OAAA,oBAlCH,SAASC,GAAgB,CAC9B,KAAAC,EACA,aAAAC,EACA,YAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAyB,CACvB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAErC,OACEf,GAACgB,EAAA,CACC,QAASJ,EACT,KAAMV,EACN,aAAcC,EACd,OAAQ,CAAC,CAAE,MAAAc,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYX,GAAaE,GAAY,MAC3C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,6CAA6CjB,CAAI,EAAE,EAErE,IAAMkB,EAA6B,CACjC,KAAAlB,EACA,aAAAC,EACA,YAAAC,EACA,MAAAC,EACA,QAAAC,EACA,cAAAQ,EACA,GAAGL,CACL,EACA,OACET,GAACmB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAkB,CAC3BL,EAAM,SAASK,CAAK,EACpBf,IAAWe,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CAjDgBC,EAAApB,GAAA,mBCwCN,cAAAsB,OAAA,oBArCH,SAASC,GAAY,CAC1B,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAqB,CACnB,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7B,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/BC,EAAgBC,EAAe,EAErC,OACEf,GAACgB,EAAA,CACC,aAAcX,EACd,QAASK,EACT,KAAMP,EACN,OAAQ,CAAC,CAAE,MAAAc,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYX,GAAaI,GAAY,OAE3C,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,wCAAwChB,CAAI,EAAE,EAGhE,IAAMiB,EAAyB,CAC7B,MAAAlB,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,cAAAO,EACA,GAAGL,CACL,EACA,OACET,GAACmB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAA2B,CAIpC,IAAMC,GAHe,MAAM,QAAQd,EAAK,QAAQ,EAC5CA,EAAK,SAAS,SAAS,QAAQ,EAC/BA,EAAK,WAAa,UACgB,OAAOa,CAAK,EAAIA,EACtDL,EAAM,SAASM,CAAc,EAC7BhB,IAAWgB,CAAc,CAC3B,EAPU,WAQZ,EACA,WAAYL,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CAxDgBC,EAAApB,GAAA,eCwCN,cAAAuB,OAAA,oBAtCH,SAASC,GAAa,CAC3B,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,MAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAsB,CACpB,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7B,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/BC,EAAgBC,EAAe,EAErC,OACEhB,GAACiB,EAAA,CACC,aAAcZ,EACd,QAASM,EACT,KAAMR,EACN,OAAQ,CAAC,CAAE,MAAAe,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYX,GAAaI,EAAW,UAC1C,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,yCAAyCjB,CAAI,EAAE,EAGjE,IAAMkB,EAAyB,CAC7B,MAAAnB,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,MAAAC,EACA,cAAAO,EACA,GAAGL,CACL,EACA,OACEV,GAACoB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAoB,CAC7BL,EAAM,SAASK,CAAK,EACpBhB,IAAWgB,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CArDgBC,EAAArB,GAAA,gBC4BN,cAAAuB,OAAA,oBA/BH,SAASC,GAAc,CAC5B,KAAAC,EACA,YAAAC,EACA,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAuB,CACrB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAErC,OACEd,GAACe,EAAA,CACC,QAASJ,EACT,KAAMT,EACN,OAAQ,CAAC,CAAE,MAAAc,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYX,GAAaE,EAAW,SAC1C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,2CAA2ChB,CAAI,EAAE,EAEnE,IAAMiB,EAA2B,CAC/B,KAAAjB,EACA,YAAAC,EACA,MAAAC,EACA,UAAAE,EACA,cAAAO,EACA,GAAGL,CACL,EACA,OACER,GAACkB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAgD,CACzDL,EAAM,SAASK,CAAG,EAClBhB,IAAWgB,CAAG,CAChB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CA9CgBC,EAAAnB,GAAA,iBCoBN,cAAAqB,OAAA,oBAtBH,SAASC,GAAW,CAAE,UAAAC,EAAW,SAAAC,EAAU,GAAGC,CAAM,EAAoB,CAC7E,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAErC,OACEV,GAACW,EAAA,CACC,QAASJ,EACT,KAAMH,EAAM,KACZ,OAAQ,CAAC,CAAE,MAAAQ,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYZ,GAAaG,EAAW,MAE1C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,uCAAuCV,EAAM,IAAI,EAAE,EAGrE,IAAMW,EAAwB,CAC5B,SAAAZ,EACA,cAAAM,EACA,GAAGL,CACL,EACA,OACEJ,GAACc,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAkB,CAC3BL,EAAM,SAASK,CAAK,EACpBd,IAAWc,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CArCgBC,EAAAf,GAAA,cCED,cAAAiB,OAAA,oBARR,SAASC,GAAYC,EAAc,CACxC,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAEnC,OACEJ,GAACK,EAAA,CACC,QAASF,EACT,KAAMD,EAAM,KACZ,OAAQ,CAAC,CAAE,MAAAI,CAAM,IACRN,GAAC,SAAO,GAAGM,EAAO,KAAK,SAAS,EAE3C,CAEJ,CAZgBC,EAAAN,GAAA,eCJhB,OAAS,aAAAO,GAAW,YAAAC,OAAgB,QAsE1B,cAAAC,OAAA,oBA7CH,SAASC,GAAkBC,EAA+B,CAC/D,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,SAAAC,EAAU,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAAe,EAC9CC,EAAgBC,EAAe,EAC/BC,EAAkBJ,EAAML,EAAM,IAAI,EAClC,CAACU,EAAiBC,CAAkB,EACxCC,GAA0BH,CAAe,EAErC,CAAE,iBAAAI,EAAkB,aAAAC,CAAa,EACrCC,GAAyBL,CAAe,EACpCM,EAAiBC,GAAwBP,CAAe,EAE9DQ,GAAU,IAAM,CACdf,EAASH,EAAM,KAAMU,CAAe,CACtC,EAAG,CAACA,EAAiBV,EAAM,KAAMG,CAAQ,CAAC,EAE1C,SAASgB,EAASC,EAAwC,CACxDT,EAAmBS,CAAI,CACzB,CAFSC,EAAAF,EAAA,YAIT,IAAMG,EAAYtB,EAAM,WAAaC,EAAW,eAAe,EAC/D,GAAI,CAACqB,EACH,MAAM,IAAI,MACR,+CAA+CtB,EAAM,IAAI,EAC3D,EAGF,IAAMuB,EAAY,CAChB,GAAGvB,EACH,SAAAmB,EACA,gBAAAT,EACA,cAAAH,EACA,sBAAuB,CACrB,iBAAAM,EACA,aAAAC,EACA,eAAAE,CACF,CACF,EAEA,OACElB,GAAC0B,EAAA,CACC,QAASpB,EACT,KAAMJ,EAAM,KACZ,OAAQ,CAAC,CAAE,MAAAyB,EAAO,WAAAC,CAAW,IAEzB5B,GAACwB,EAAA,CACC,MAAO,CACL,GAAGG,EACH,SAAUJ,EAACM,GAAoB,CAC7BF,EAAM,SAASE,CAAK,EACpB3B,EAAM,WAAW2B,CAAK,CACxB,EAHU,WAIZ,EACA,WAAYD,EACZ,UAAWH,EACb,EAGN,CAEJ,CA5DgBF,EAAAtB,GAAA,qBCwBN,cAAA6B,OAAA,oBApCH,SAASC,GAAiB,CAC/B,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,GAAM,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7B,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/BC,EAAgBC,EAAe,EAErC,OACEf,GAACgB,EAAA,CACC,aAAcX,EACd,QAASK,EACT,KAAMP,EACN,OAAQ,CAAC,CAAE,MAAAc,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAMC,EAAYX,GAAaI,IAAa,cAAc,EAC1D,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,8CAA8ChB,CAAI,EAAE,EAGtE,IAAMiB,EAAyB,CAC7B,MAAAlB,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,SAAAC,EACA,cAAAO,EACA,GAAGL,CACL,EACA,OACET,GAACmB,EAAA,CACC,MAAO,CACL,GAAGF,EACH,SAAUI,EAACC,GAAoB,CAC7BL,EAAM,SAASK,CAAK,EACpBf,IAAWe,CAAK,CAClB,EAHU,WAIZ,EACA,WAAYJ,EACZ,UAAWE,EACb,CAEJ,EACF,CAEJ,CAnDgBC,EAAApB,GAAA,oBCLP,cAAAsB,OAAA,oBADF,IAAMC,GAAaC,EAACC,GAClBH,GAACI,EAAA,CAAY,UAAW,GAAK,GAAGD,EAAO,EADtB,cCG1B,OAAS,WAAAE,EAAS,eAAAC,GAAa,YAAAC,GAAU,aAAAC,GAAW,UAAAC,OAAc,QA+P9D,cAAAC,MAAA,oBAnPJ,SAASC,GAAaC,EAAe,CACnC,OAAOA,EAAM,QAAQ,MAAO,EAAE,CAChC,CAFSC,EAAAF,GAAA,gBAIT,SAASG,GACPC,EAAmC,GACnCC,EACA,CACA,IAAMC,EAAY,IAAI,OACpB,iBAAiBD,GAAS,UAAU,QAAU,CAAC,SACjD,EACME,EAAYH,GAA0B,MAAME,CAAS,EAE3D,GAAI,CAACC,EACH,MAAO,CACL,OAAQ,GACR,SAAU,GACV,YAAaH,CACf,EAGF,GAAM,CAAC,CAAEI,EAAkBC,EAAUC,CAAW,EAAIH,EAEpD,MAAO,CACL,OAAQC,EACR,SAAAC,EACA,YAAAC,CACF,CACF,CAxBSR,EAAAC,GAAA,8CA0BT,SAASQ,GACP,CACE,UAAAC,EACA,kBAAAC,CACF,EACAT,EACA,CACA,GAAM,CAAE,OAAAU,CAAO,EAAIX,GACjBC,CACF,EAEA,GAAKU,EAKL,QAASC,EAAIF,EAAoBC,EAAO,OAAQC,EAAID,EAAO,OAAQC,IAAK,CACtE,IAAMN,EAAWL,EAAyB,MAAMU,EAAO,OAAQC,CAAC,EAEhE,GAAIH,EAAUH,CAAQ,EACpB,OAAOG,EAAUH,CAAQ,CAE7B,CAGF,CAzBSP,EAAAS,GAAA,6BA+BF,SAASK,GAA4BC,EAAsB,CAChE,IAAML,EAAqC,CAAC,EACxCC,EAAoB,EAExB,OAAAI,EAAU,QAASZ,GAAY,CACzBA,EAAQ,UAEVA,EAAQ,UAAU,QAASa,GAAa,CACtC,IAAMC,EAAOd,EAAQ,SAAWa,EAChCN,EAAUO,CAAI,EAAId,EACdc,EAAK,OAASN,IAChBA,EAAoBM,EAAK,OAE7B,CAAC,GAGDP,EAAUP,EAAQ,QAAQ,EAAIA,EAC1BA,EAAQ,SAAS,OAASQ,IAC5BA,EAAoBR,EAAQ,SAAS,QAG3C,CAAC,EAEM,CAAE,UAAAO,EAAW,kBAAAC,CAAkB,CACxC,CAxBgBX,EAAAc,GAAA,+BA0BhB,SAASI,GAAwBC,EAAkB,GAAI,CACrD,IAAMC,EAAmB,eACnBC,EAASF,EAAQ,MAAMC,CAAgB,EAE7C,GAAIC,GAAQ,SAAW,EACrB,OAAOA,EAAO,CAAC,EAAE,QAAQ,SAAU,EAAE,EAAE,MAAM,GAAG,CAIpD,CATSrB,EAAAkB,GAAA,2BAWT,SAASI,GACPC,EAMW,CACX,OAAOA,EAAQ,IAAKC,IAAY,CAC9B,KAAMA,EAAO,MACb,SAAUA,EAAO,KAAK,YACtB,QAASA,EAAO,QAChB,UAAWN,GAAwBM,EAAO,OAAO,CACnD,EAAE,CACJ,CAdSxB,EAAAsB,GAAA,8BAgBF,SAASG,GAAiB,CAC/B,MAAAC,EACA,WAAAC,EACA,UAAAC,EACA,UAAWC,EACX,oBAAAC,EACA,oBAAAC,CACF,EAOG,CACD,GAAM,CAAE,MAAO7B,CAAyB,EAAIwB,EACtC,CAAE,QAAAH,CAAQ,EAAIK,EAEdb,EAAYiB,EAChB,IAAMV,GAA2BC,CAAO,EACxC,CAACA,CAAO,CACV,EAEMU,EAAyBD,EAC7B,IAAMlB,GAA4BC,CAAS,EAC3C,CAACA,CAAS,CACZ,EAGMmB,EAAuBC,GAAO,EAAK,EAGnC,CAAChC,EAASiC,CAAU,EAAIC,GAA8B,IAC1D5B,GACEK,GAA4BC,CAAS,EACrCb,GAA4B,EAC9B,CACF,EAGAoC,GAAU,IAAM,CAMd,IAJI,CAACpC,GAA4BA,IAA6B,OAC5DgC,EAAqB,QAAU,IAG7BA,EAAqB,QACvB,OAGF,IAAMK,EAAW9B,GACfwB,EACA/B,GAA4B,EAC9B,EACAkC,EAAWG,CAAQ,CACrB,EAAG,CAACrC,EAA0B+B,CAAsB,CAAC,EAErD,GAAM,CAAE,OAAArB,EAAQ,YAAa4B,CAAoB,EAAIR,EACnD,IACE/B,GACEC,EACAC,CACF,EACF,CAACD,EAA0BC,CAAO,CACpC,EAEMsC,EAA0BC,GAC7BC,GAAwB,CACvB,GAAI,CAACA,EAAY,OACjB,IAAMC,EAAW,IAAID,EAAW,QAAQ,GAAGH,CAAmB,GAG9DN,EAAqB,QAAU,GAG/BE,EAAWO,CAAU,EAGrBjB,EAAM,SAASkB,CAAQ,EAGnBd,GACFA,EAAoBa,CAAU,CAElC,EACA,CAACH,EAAqBd,EAAOI,CAAmB,CAClD,EAEMe,EAA0BH,GAC7BI,GAA+C,CAC9C,IAAMC,EAAqBjD,GAAagD,EAAM,OAAO,KAAK,EACtDF,EAUJ,GATIzC,EACFyC,EAAW,GAAGhC,CAAM,GAAGT,EAAQ,QAAQ,GAAG4C,CAAkB,GAE5DH,EAAW,GAAGhC,CAAM,GAAGmC,CAAkB,GAG3CrB,EAAM,SAASkB,CAAQ,EAGnBb,EAAqB,CACvB,IAAMiB,EAAiB,CACrB,OAAQ,CAAE,MAAOJ,EAAU,KAAMlB,EAAM,IAAK,CAC9C,EACAK,EAAoBiB,CAAc,CACpC,CACF,EACA,CAAC7C,EAASS,EAAQc,EAAOK,CAAmB,CAC9C,EAEMkB,EAA8BjB,EAClC,KAAO,CACL,GAAGJ,EACH,oBAAqBa,EACrB,oBAAqBI,EACrB,eAAgB1C,EAChB,oBAAAqC,CACF,GACA,CACEZ,EACAa,EACAI,EACA1C,EACAqC,CACF,CACF,EAEA,OACE3C,EAACgC,EAAA,CACC,MAAOH,EACP,WAAYC,EACZ,UAAWsB,EACb,CAEJ,CAvIgBjD,EAAAyB,GAAA,oBA8IT,SAASyB,GAAS,CACvB,KAAAC,EACA,YAAAC,EACA,MAAAC,EACA,oBAAAvB,EACA,oBAAAC,EACA,UAAAuB,EACA,GAAGC,CACL,EAAkB,CAChB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,QAAAC,CAAQ,EAAIC,EAAe,EAC7BC,EAAgBC,EAAe,EAErC,OACEhE,EAACiE,EAAA,CACC,QAASJ,EACT,KAAMP,EACN,OAAQ,CAAC,CAAE,MAAAzB,EAAO,WAAAC,CAAW,IAAM,CACjC,IAAME,EAAYyB,GAAaE,EAAW,IAC1C,GAAI,CAAC3B,EACH,MAAM,IAAI,MAAM,qCAAqCsB,CAAI,EAAE,EAG7D,IAAMY,EAAyC,CAC7C,KAAAZ,EACA,YAAAC,EACA,MAAAC,EACA,cAAAO,EACA,GAAGL,CACL,EAEA,OACE1D,EAAC4B,GAAA,CACC,MAAOC,EACP,WAAYC,EACZ,UAAWoC,EACX,UAAWlC,EACX,oBAAqBC,EACrB,oBAAqBC,EACvB,CAEJ,EACF,CAEJ,CA5CgB/B,EAAAkD,GAAA,YCpQT,IAAMc,EAGT,CACF,SAAUC,GACV,KAAMC,GACN,MAAOC,GACP,MAAOC,GACP,OAAQC,GACR,eAAgBC,GAChB,MAAOC,GACP,OAAQC,EACR,KAAMC,GACN,KAAMC,GACN,SAAUC,GACV,UAAWC,GACX,OAAQC,GACR,IAAKC,GACL,gBAAiBC,EACnB,ECnCA,OAAS,aAAAC,OAAiB,QA+CtB,OAMI,OAAAC,EANJ,QAAAC,OAAA,oBA9BG,SAASC,GAAiB,CAC/B,KAAAC,EACA,MAAAC,EACA,YAAAC,EACA,UAAAC,EACA,MAAAC,EACA,WAAAC,CACF,EAA0B,CACxB,GAAM,CAAE,SAAAC,CAAS,EAAIC,EAAe,EAC9BC,EAAyBL,GAAW,aAAeD,EAEnDO,EAAmBN,GAAW,MAChCO,EAAaP,GAAW,KAAK,EAC7BO,EAAaN,CAAK,EAEhBO,EAAU,gBAAgBX,CAAI,SAC9BY,EAAgB,gBAAgBZ,CAAI,eAS1C,OAPAa,GAAU,IAAM,CACdP,EAASN,EAAMC,CAAK,CAEtB,EAAG,CAAC,CAAC,EAEiB,CAACO,GAA0B,CAACL,GAAW,MAGpD,KAIPL,GAAC,OACC,KAAK,QACL,kBAAiBW,EAAmBE,EAAU,OAC9C,mBAAkBH,EAAyBI,EAAgB,OAE1D,UAAAH,GACCZ,EAAC,KACC,GAAIc,EACJ,UAAW,4CAA4CX,CAAI,GAC3D,wBAAyB,CACvB,OAAQS,CACV,EACF,EAEFZ,EAACiB,EAAA,CACC,GAAG,OACH,GAAIF,EACJ,UAAW,kDAAkDZ,CAAI,GACjE,WACEH,EAACkB,GAAA,CACC,UAAU,2CACV,WAAYV,EACd,EAGD,SAAAG,EACH,GACF,CAEJ,CA3DgBQ,EAAAjB,GAAA,oBf0IV,OAiBE,YAAAkB,EAjBF,OAAAC,EAkBI,QAAAC,MAlBJ,oBAtFC,SAASC,GAAc,CAC5B,MAAAC,EACA,KAAAC,EACA,OAAAC,EACA,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,eAAAC,EACA,MAAAC,EACA,QAAAC,EAAU,SACV,SAAAC,EACA,KAAAC,CACF,EAAkB,CAChB,GAAM,CAAE,WAAAC,CAAW,EAAID,GAAQ,CAAC,EAC1B,CAAE,MAAAE,EAAO,SAAAC,EAAU,QAAAC,EAAS,UAAAC,CAAU,EAAIC,EAAe,EACzD,CAAE,WAAYC,CAAe,EAAIC,EAAc,EAG/CC,EAAaV,GAAU,QAAQ,WAC/BW,EAAaD,EACfP,EAAMO,CAAU,EACfV,GAAU,QAAQ,iBAAmB,GAEpCY,EAAanB,EAAO,IACxB,CAAC,CAAE,KAAMoB,CAAU,IAAM,GAAGrB,CAAI,IAAIqB,CAAS,EAC/C,EACMC,EAAgBX,EAAMS,CAAU,EAChCG,EAAgBC,GAAiBF,CAAa,EAC9CG,EAAoBD,GAA8B,IAAI,EAEtDE,GAAiBC,EAAA,IAAM,CACvBT,GACFN,EAASM,EAAY,CAACC,CAAU,CAEpC,EAJuB,kBAMvBS,GAAU,IAAM,CACd,IAAMC,EAAgBP,EAChBQ,EAAiBP,EAAc,QAC/BQ,EAAmBjB,EAAU,aAAeA,EAAU,YAAc,EAGtEkB,EAAa,GACjB,QAASC,EAAI,EAAGA,EAAIJ,EAAc,OAAQI,IACxC,GACEJ,EAAcI,CAAC,IAAM,QACrBH,EAAeG,CAAC,IAAMJ,EAAcI,CAAC,EACrC,CACAD,EAAa,GAEb,KACF,CAGF,OAAIA,GAAcD,IAEZN,EAAkB,SACpB,aAAaA,EAAkB,OAAO,EAExCA,EAAkB,QAAU,WAAW,IAAM,CAC3CZ,EAAQ,CACV,EAAG,EAAE,GAGPU,EAAc,QAAU,CAAC,GAAGM,CAAa,EAElC,IAAM,CACPJ,EAAkB,SACpB,aAAaA,EAAkB,OAAO,CAE1C,CACF,EAAG,CAACH,EAAeT,EAASC,EAAU,YAAaA,EAAU,WAAW,CAAC,EAEzE,IAAMoB,GACJlB,GAAgB,gBAAkBmB,GAC9BC,EAAY,GAAGpC,CAAI,WACnBqC,EAAW,GAAGrC,CAAI,UAExB,OACEH,EAAC,YACC,UAAWyC,EACT,uCACA,6BACA,+BAA+BtC,CAAI,EACrC,EAEA,UAAAJ,EAAC,UACC,UAAW0C,EACT,6BACA/B,IAAY,SAAW,QACzB,EAEC,SAAAR,EACH,EACCW,GAAY,cAAgBA,GAAY,IAAMH,IAAY,UACzDX,EAAC2C,EAAA,CACC,UAAU,kDACV,UAAW7B,EAAW,GAErB,SAAAA,EAAW,aACd,EAEDH,IAAY,SACXV,EAAAF,EAAA,CACE,UAAAE,EAAC,OACC,UAAU,qCACV,GAAIwC,EACJ,aAAYlB,EAAa,WAAa,YACtC,gBAAeA,EAEf,UAAAvB,EAAC,MAAG,UAAW0C,EAAG,mCAAmC,EAAI,SAAAvC,EAAM,EAC9DS,GAAU,QAAQ,SACjBZ,EAACsC,GAAA,CACC,WAAYf,EACZ,SAAUO,GACV,gBAAeP,EACf,gBAAeiB,EACf,aAAY,GAAGjB,EAAa,OAAS,MAAM,IAAIpB,CAAK,GACpD,UAAWuC,EACT,qCACA9B,EAAS,QAAQ,SACnB,EAEC,SAAAW,EACIX,EAAS,OAAO,QAAQ,UAAY,SACpCA,EAAS,OAAO,QAAQ,QAAU,SACzC,GAEJ,EACCE,GAAY,cAAgBA,GAAY,IACvCd,EAAC2C,EAAA,CACC,UAAU,kDACV,UAAW7B,EAAW,GAErB,SAAAA,EAAW,aACd,GAEJ,EAEDS,GACCtB,EAAC,OAAI,GAAIuC,EAAW,kBAAiBC,EAAU,KAAK,SACjD,UAAAnC,EACCN,EAAC4C,EAAA,CACC,GAAG,MACH,UAAU,+CAET,SAAAtC,EACH,EACE,KACJL,EAAC,OAAI,UAAU,aACZ,UAAAI,EAAO,IAAKwC,GAAoB,CAS/B,GARIA,EAAM,6BACRA,EAAQ,CACN,GAAGA,EACH,GAAIA,EAAM,2BAA2BnB,EAAemB,CAAK,GACvD,CAAC,CACL,GAGEA,EAAM,YAAc,IAASA,EAAM,WACrC,OAAO,KAGT,IAAMC,EAAYD,EAAM,KAClBE,EAAW,GAAGtC,EAAiBoC,EAAM,KAAO,GAAGzC,CAAI,IAAIyC,EAAM,IAAI,EAAE,GAEnEG,EAAgBC,EAAyBJ,CAAK,EAG9CK,EAAwBnB,EAAA,CAC5BoB,EACAC,IAEIP,EAAM,iBAEN7C,EAAC6C,EAAM,iBAAN,CACE,SAAAM,GAD0BC,CAE7B,EAGGpD,EAACD,GAAA,CAAoB,SAAAoD,GAANC,CAAc,EAXR,yBAc9B,GAAIJ,EAAe,CACjB,IAAMK,EAAaC,EAAKT,EAAO,kBAAkB,EACjD,OAAOK,EACLlD,EAACuD,GAAA,CACC,KAAMR,EACN,YAAaM,EAAW,YACxB,MAAOA,EAAW,MAClB,UAAWA,EAAW,UACtB,MAAOA,EAAW,MAClB,WAAYA,EAAW,MAAM,WAC/B,EACAN,CACF,CACF,CAGA,GAAID,IAAc,WAAY,CAC5B,IAAMO,EAAaC,EAAKT,EAAO,kBAAkB,EACjD,OAAOK,EACLlD,EAACE,GAAA,CACE,GAAImD,EACL,KAAMN,EACN,WAAYxC,EACd,EACAwC,CACF,CACF,CAEA,GAAID,IAAc,gBAAiB,CACjC,IAAMO,EAAaC,EAAKT,EAAO,kBAAkB,EACjD,OAAOK,EACLlD,EAACE,GAAA,CACE,GAAImD,EACL,KAAMN,EACN,WAAYxC,EACZ,eAAc,GAChB,EACAwC,CACF,CACF,CAGA,IAAIS,EAAiBC,EAAWX,CAAsB,EAEtD,GAAID,EAAM,UAAW,CACnB,GAAM,CAAE,UAAAa,CAAU,EAAIb,EAGhBQ,EAAaC,EAAKT,EAAO,kBAAkB,EACjD,OAAOK,EACLjD,EAAAF,EAAA,CACE,UAAAC,EAAC0D,EAAA,CACE,GAAGL,EACJ,MAAOtC,EAAMgC,CAAQ,EACrB,SAAWY,IAAmB,CAC5B3C,EAAS+B,EAAUY,EAAK,CAC1B,EACF,EACCd,EAAM,UACL7C,EAAC4D,EAAA,CACE,GAAIf,EAAM,UACb,EACE,KACHA,EAAM,MAAQA,EAAM,MAAQ,MAC/B,EACAE,CACF,CACF,CAEA,GAAI,CAACS,EACH,OACEvD,EAAC,KAAE,UAAU,QAAQ,wBAAY6C,EAAU,kBAAc,EAIzDA,IAAc,UAAYD,EAAM,WAClCW,EAAiBC,EAAW,cAAc,GAG5C,IAAMJ,GAAaC,EAAKT,EAAO,kBAAkB,EACjD,OAAOK,EACLjD,EAAAF,EAAA,CACE,UAAAC,EAACwD,EAAA,CACE,GAAGH,GACJ,KAAMN,EACN,UAAWxC,IAAauC,CAA6B,EACvD,EACCD,EAAM,UACL7C,EAAC4D,EAAA,CACE,GAAIf,EAAM,UACb,EACE,KACHA,EAAM,MAAQA,EAAM,MAAQ,MAC/B,EACAE,CACF,CACF,CAAC,EACArC,GAAgB,KAChBF,EAAYR,EAAC4D,EAAA,CAAW,GAAGpD,EAAW,EAAK,MAC9C,GACF,GAEJ,CAEJ,CA/RgBuB,EAAA7B,GAAA","names":["Fragment","useEffect","useRef","omit","jsx","DatePickerField","description","label","name","minDate","maxDate","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","minDateValue","getMinStartDate","maxDateValue","FormField","field","fieldState","Component","customDatePickerFieldProps","__name","value","jsx","validateFileSize","__name","files","maxSize","file","maxSizeMB","fileSizeMB","FileUploadField","name","description","label","multiple","onChange","component","accept","rest","components","useFormFields","control","setError","clearErrors","useFormContext","transformHtml","useTransformer","handleOnChange","field","sizeError","FormField","fieldState","Component","customFileUploadFieldProps","value","jsx","NumberField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customNumberFieldProps","__name","value","jsx","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customRadioGroupFieldProps","__name","value","jsx","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","maybeCastValue","jsx","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customTextAreaFieldProps","__name","evt","jsx","EmailField","component","onChange","props","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","field","fieldState","Component","customEmailFieldProps","__name","value","jsx","HiddenField","props","control","useFormContext","FormField","field","__name","useEffect","useState","jsx","WorkScheduleField","props","components","useFormFields","setValue","control","watch","useFormContext","transformHtml","useTransformer","watchedSchedule","currentSchedule","setCurrentSchedule","useState","workHoursSummary","breakSummary","buildWorkScheduleSummary","totalWorkHours","calculateTotalWorkHours","useEffect","onSubmit","data","__name","Component","fieldData","FormField","field","fieldState","value","jsx","MultiSelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","transformHtml","useTransformer","FormField","field","fieldState","Component","customSelectFieldProps","__name","value","jsx","MoneyField","__name","props","NumberField","useMemo","useCallback","useState","useEffect","useRef","jsx","removeSpaces","value","__name","getStructuredNumberFromInternationalNumber","internationalPhoneNumber","country","baseRegex","baseMatch","plusOrCallPrefix","dialCode","phoneNumber","getCountryFromPhoneNumber","dialCodes","dialCodeMaxLength","prefix","i","getCountryDataByCountryCode","countries","areaCode","code","getAreaCodesFromPattern","pattern","codeGroupPattern","groups","transformSchemaToCountries","options","option","TelFieldRenderer","field","fieldState","fieldData","Component","onChangeCountryCode","onChangePhoneNumber","useMemo","countriesByCountryCode","isManualSelectionRef","useRef","setCountry","useState","useEffect","detected","nationalPhoneNumber","handleCountryCodeChange","useCallback","newCountry","newValue","handlePhoneNumberChange","event","valueWithoutSpaces","syntheticEvent","fieldDataWithComputedValues","TelField","name","description","label","component","rest","components","useFormFields","control","useFormContext","transformHtml","useTransformer","FormField","customTelFieldProps","baseFields","CheckBoxField","TextField","EmailField","MoneyField","SelectField","MultiSelectField","RadioGroupField","NumberField","FileUploadField","DatePickerField","TextAreaField","CountryField","HiddenField","TelField","WorkScheduleField","useEffect","jsx","jsxs","ForcedValueField","name","value","description","statement","label","helpCenter","setValue","useFormContext","forcedValueDescription","forcedValueTitle","sanitizeHtml","titleId","descriptionId","useEffect","BaseFormDescription","HelpCenter","__name","Fragment","jsx","jsxs","FieldSetField","label","name","fields","description","components","statement","isFlatFieldset","extra","variant","features","meta","helpCenter","watch","setValue","trigger","formState","useFormContext","formComponents","useFormFields","stateField","isExpanded","fieldNames","fieldName","watchedValues","prevValuesRef","useRef","triggerTimeoutRef","toggleExpanded","__name","useEffect","currentValues","previousValues","hasBeenSubmitted","hasChanged","i","ToggleComponent","FieldsetToggleButtonDefault","contentId","headerId","cn","ZendeskTriggerButton","BaseFormDescription","field","fieldType","fieldKey","isForcedValue","checkFieldHasForcedValue","wrapWithCustomWrapper","content","key","fieldProps","omit","ForcedValueField","FieldComponent","baseFields","Component","value","Statement"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as e}from"./chunk-KYNIBHVR.js";import{b as a}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as s}from"react/jsx-runtime";function p({onSubmit:t}){let{terminationBag:o}=a(),n=i(async r=>{let m=await o?.parseFormValues(r);await t?.(m),o?.next()},"handleSubmit");return s(e,{defaultValues:o.fieldValues,onSubmit:n})}i(p,"TerminationDetailsForm");export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-PSN4ZR5Y.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-4MW7KA47.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as n}from"react/jsx-runtime";function t({field:m,fieldData:i}){return n(o,{name:m.name,...i,type:"email"})}e(t,"EmailFieldDefault");export{t as a};
|
|
2
|
+
//# sourceMappingURL=chunk-Q5RU76HN.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{n as e}from"./chunk-JXAAON7I.js";import{a}from"./chunk-P37U34EQ.js";import{cva as n}from"class-variance-authority";import{jsx as i}from"react/jsx-runtime";var o=n("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",warning:"bg-card bg-warning border-warning-border [&>svg]:text-current"}},defaultVariants:{variant:"default"}});function c({className:t,variant:r,...s}){return i("div",{"data-slot":"alert",role:"alert",className:e(o({variant:r}),t),...s})}a(c,"Alert");function g({className:t,...r}){return i("div",{"data-slot":"alert-title",className:e("col-start-2 min-h-4 font-medium tracking-tight",t),...r})}a(g,"AlertTitle");function p({className:t,...r}){return i("div",{"data-slot":"alert-description",className:e("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed inline-block",t),...r})}a(p,"AlertDescription");export{c as a,g as b,p as c};
|
|
2
|
+
//# sourceMappingURL=chunk-Q5WADFQ7.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{H as r,d as m}from"./chunk-ER46UFIU.js";import{e as o}from"./chunk-H2O4CVKF.js";import{a as e}from"./chunk-P37U34EQ.js";import{useMutation as l,useQuery as p}from"@tanstack/react-query";var E=e(({employmentId:t,queryParams:n})=>{let{client:s}=o();return p({queryKey:["employment",t],retry:!1,queryFn:e(()=>r({client:s,headers:{Authorization:""},path:{employment_id:t},query:n}),"queryFn"),enabled:!!t,select:e(({data:i})=>i?.data?.employment,"select")})},"useEmploymentQuery"),f=e(()=>{let{client:t}=o();return l({mutationFn:e(({employmentId:n})=>m({client:t,headers:{Authorization:""},path:{employment_id:n}}),"mutationFn")})},"useDiscardEmploymentMutation");export{E as a,f as b};
|
|
2
|
+
//# sourceMappingURL=chunk-Q65JWWKR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/api/employment.ts"],"sourcesContent":["import {\n getV1EmploymentsEmploymentId,\n GetV1EmploymentsEmploymentIdResponse,\n postV1CancelOnboardingEmploymentId,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { useMutation, useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { Client } from '@/src/client/client';\n\n/**\n * Hook to retrieve employment details for a specific employment ID.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} params.employmentId - The ID of the employment to fetch details for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.\n */\nexport const useEmploymentQuery = ({\n employmentId,\n queryParams,\n}: {\n employmentId: string;\n queryParams?: $TSFixMe; // TODO: we need to generate openapi-ts types but it's broken at the moment\n}): UseQueryResult<\n GetV1EmploymentsEmploymentIdResponse['data']['employment'],\n unknown\n> => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n queryFn: () => {\n return getV1EmploymentsEmploymentId({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n query: queryParams,\n });\n },\n enabled: !!employmentId,\n select: ({ data }) => data?.data?.employment,\n });\n};\n\n/**\n * Hook to discard an employment.\n *\n * @returns {UseMutationResult<void, unknown, { employmentId: string }, unknown>} - The mutation result.\n */\nexport const useDiscardEmploymentMutation = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({ employmentId }: { employmentId: string }) => {\n return postV1CancelOnboardingEmploymentId({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n });\n },\n });\n};\n"],"mappings":"+HAOA,OAAS,eAAAA,EAAa,YAAAC,MAAgC,wBAU/C,IAAMC,EAAqBC,EAAA,CAAC,CACjC,aAAAC,EACA,YAAAC,CACF,IAMK,CACH,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,aAAcJ,CAAY,EACrC,MAAO,GACP,QAASD,EAAA,IACAM,EAA6B,CAClC,OAAQH,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CAAE,cAAeF,CAAa,EACpC,MAAOC,CACT,CAAC,EARM,WAUT,QAAS,CAAC,CAACD,EACX,OAAQD,EAAA,CAAC,CAAE,KAAAO,CAAK,IAAMA,GAAM,MAAM,WAA1B,SACV,CAAC,CACH,EA3BkC,sBAkCrBC,EAA+BR,EAAA,IAAM,CAChD,GAAM,CAAE,OAAAG,CAAO,EAAIC,EAAU,EAC7B,OAAOK,EAAY,CACjB,WAAYT,EAAA,CAAC,CAAE,aAAAC,CAAa,IACnBS,EAAmC,CACxC,OAAQP,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CAAE,cAAeF,CAAa,CACtC,CAAC,EAPS,aASd,CAAC,CACH,EAb4C","names":["useMutation","useQuery","useEmploymentQuery","__name","employmentId","queryParams","client","useClient","useQuery","getV1EmploymentsEmploymentId","data","useDiscardEmploymentMutation","useMutation","postV1CancelOnboardingEmploymentId"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{f as a}from"./chunk-JXAAON7I.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-QHZPSH52.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d,b as S,c as p,d as u,e as g,f as b}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d,b as S,c as p,d as u,e as g,f as b}from"./chunk-ED7I5OM2.js";import{j as c,k as i,l as n,n as _,o as F}from"./chunk-5BU3CD2P.js";import{a as s}from"./chunk-P37U34EQ.js";import{jsx as e,jsxs as v}from"react/jsx-runtime";function R({field:t,fieldState:a,fieldData:C}){let{name:r,label:o,description:m,options:N}=C;return v(c,{"data-field":r,className:`RemoteFlows__SelectField__Item__${r}`,children:[e(i,{className:"RemoteFlows__SelectField__Label",children:o}),e(n,{children:e("div",{className:"relative",children:v(d,{value:t.value||"",onValueChange:l=>{t.onChange(l)},children:[e(u,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!a.error,"aria-label":o,children:e("span",{className:"absolute",children:e(p,{placeholder:o})})}),e(g,{className:"RemoteFlows__SelectField__Content",children:e(S,{className:"RemoteFlows__SelectField__Group",children:N?.map(l=>e(b,{value:l.value,className:"RemoteFlows__SelectField__SelectItem",disabled:l.disabled,children:l.label},l.value))})})]})})}),m&&e(_,{children:m}),a.error&&e(F,{})]})}s(R,"SelectFieldDefault");export{R as a};
|
|
2
|
+
//# sourceMappingURL=chunk-QWIPKY24.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{n as i}from"./chunk-JXAAON7I.js";import{a as s}from"./chunk-P37U34EQ.js";import*as n from"react";import{Drawer as r}from"vaul";import{jsx as a,jsxs as l}from"react/jsx-runtime";var d=s(({shouldScaleBackground:e=!0,...t})=>a(r.Root,{shouldScaleBackground:e,...t}),"Drawer");d.displayName="Drawer";var N=r.Trigger,f=r.Portal,P=r.Close,m=n.forwardRef(({className:e,...t},o)=>a(r.Overlay,{ref:o,className:i("fixed inset-0 z-50 bg-black/80",e),...t}));m.displayName=r.Overlay.displayName;var D=n.forwardRef(({className:e,children:t,showHandle:o=!0,...c},p)=>l(f,{children:[a(m,{}),l(r.Content,{ref:p,className:i("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",e),...c,children:[o&&a("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),t]})]}));D.displayName="DrawerContent";var w=s(({className:e,...t})=>a("div",{className:i("grid gap-1.5 p-4 text-center sm:text-left",e),...t}),"DrawerHeader");w.displayName="DrawerHeader";var R=s(({className:e,...t})=>a("div",{className:i("mt-auto flex flex-col gap-2 p-4",e),...t}),"DrawerFooter");R.displayName="DrawerFooter";var g=n.forwardRef(({className:e,...t},o)=>a(r.Title,{ref:o,className:i("text-lg font-semibold leading-none tracking-tight",e),...t}));g.displayName=r.Title.displayName;var u=n.forwardRef(({className:e,...t},o)=>a(r.Description,{ref:o,className:i("text-sm text-muted-foreground",e),...t}));u.displayName=r.Description.displayName;export{d as a,N as b,D as c,w as d,g as e,u as f};
|
|
2
|
+
//# sourceMappingURL=chunk-QWSAKYH4.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as n}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as n}from"./chunk-RGXG3HOB.js";import{j as a,k as i,l as s,n as p,o as F}from"./chunk-5BU3CD2P.js";import{n as t}from"./chunk-JXAAON7I.js";import{a as r}from"./chunk-P37U34EQ.js";import{jsx as e,jsxs as U}from"react/jsx-runtime";function b({field:o,fieldState:_,fieldData:c}){let{name:l,label:d,description:m,multiple:f,accept:u}=c;return U(a,{"data-field":l,className:`RemoteFlows__FileUpload__Item__${l}`,children:[e(i,{className:"RemoteFlows__FileUpload__Label",children:d}),e(s,{children:e(n,{onChange:o.onChange,multiple:f,className:t("RemoteFlows__FileUpload__Input"),accept:u,files:o.value})}),m&&e("div",{className:"flex items-center justify-between",children:e(p,{className:"RemoteFlows__FileUpload__Description",children:m})}),_.error&&e(F,{className:"RemoteFlows__FileUpload__Error"})]})}r(b,"FileUploadFieldDefault");export{b as a};
|
|
2
|
+
//# sourceMappingURL=chunk-QYLLXHLO.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{n as e}from"./chunk-JXAAON7I.js";import{a as t}from"./chunk-P37U34EQ.js";import{cva as a}from"class-variance-authority";import{jsx as u}from"react/jsx-runtime";var i=a("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none aria-invalid:ring-destructive/20 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 RemoteFlows_ButtonDefault",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 RemoteFlows_ButtonDestructive",outline:"border border-input bg-background shadow-xs RemoteFlows_ButtonOutline",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80 RemoteFlows_ButtonSecondary",ghost:"hover:bg-accent hover:text-accent-foreground RemoteFlows_ButtonGhost",link:"text-link-button-primary underline-offset-4 hover:underline button-link RemoteFlows_ButtonLink"},size:{default:"h-9 px-4 py-7 has-[>svg]:px-3 RemoteFlows_ButtonDefault",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 RemoteFlows_ButtonSm",lg:"h-10 rounded-md px-6 has-[>svg]:px-4 RemoteFlows_ButtonLg",icon:"size-9 RemoteFlows_ButtonIcon",link:"px-0 RemoteFlows_ButtonLink"}},defaultVariants:{variant:"default",size:"default"}});function m({className:o,variant:n,size:r,...s}){return u("button",{"data-slot":"button",className:e(i({variant:n,size:r,className:o}),"RemoteFlows__Button"),...s})}t(m,"Button");export{i as a,m as b};
|
|
2
|
+
//# sourceMappingURL=chunk-R4TTPUH7.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as U}from"./chunk-6DHV4GT6.js";import{a as W}from"./chunk-3YS4OWE3.js";import{a as Y}from"./chunk-UG5UQ72J.js";import{a as Q}from"./chunk-5BGNKOPP.js";import{a as J}from"./chunk-DTTE663D.js";import{a as H}from"./chunk-IF42CZJH.js";import{a as q,b as B,c as L,d as z}from"./chunk-CQQCOU57.js";import{f as Z,g as K}from"./chunk-G7MJDZGB.js";import{a as R}from"./chunk-ZXGAFQXW.js";import{a as S}from"./chunk-Z4TZ527J.js";import{a as N}from"./chunk-Q65JWWKR.js";import{a as E}from"./chunk-QHZPSH52.js";import{a as _,b as v}from"./chunk-W4YDSTXA.js";import{q as O}from"./chunk-ER46UFIU.js";import{b as w,h as u,n as D}from"./chunk-JXAAON7I.js";import{a as A}from"./chunk-JDIKYCN6.js";import{a as I}from"./chunk-626FTNKA.js";import{e as $}from"./chunk-H2O4CVKF.js";import{a as o}from"./chunk-P37U34EQ.js";import xe from"lodash.omitby";import je from"lodash.isnull";import{format as x,isFuture as Ve,parseISO as j,subDays as Pe}from"date-fns";import{useMemo as V}from"react";import be from"lodash.omit";import{useQuery as Fe}from"@tanstack/react-query";var G=o(({query:t,options:e})=>{let{client:y}=$();return Fe({queryKey:["payroll-calendars"],queryFn:o(()=>O({client:y,query:{year:t?.year,country_code:t?.countryCode}}),"queryFn"),enabled:e?.enabled,select:o(c=>c.data?.data?.payroll_calendars?.[0],"select")})},"usePayrollCalendars");import{isFuture as Me,isToday as ge,parseISO as Se}from"date-fns";var X=o(t=>{if(!t)return!1;let e=Se(t);return Me(e)||ge(e)},"isInProbationPeriod");import{Fragment as ke,jsx as m,jsxs as Ce}from"react/jsx-runtime";var lo=o(({employmentId:t,options:e,initialValues:y})=>{let{fieldValues:c,setFieldValues:ee,stepState:l,previousStep:oe,nextStep:ie}=A(q),{data:n,isLoading:te}=N({employmentId:t,queryParams:{exclude_files:!0}}),{data:ne}=G({query:{year:new Date().getFullYear().toString(),countryCode:n?.country?.code},options:{enabled:!!n?.country?.code}}),T=X(n?.probation_period_end_date),F=B(ne),P=V(()=>T?x(new Date,"yyyy-MM-dd"):x(F,"yyyy-MM-dd"),[T,F]),M=!!(n?.provisional_start_date&&Ve(j(n.provisional_start_date))),ae={personal_email:n?.basic_information?.email},g=z({...ae,...y,...l.values?.employee_communication,...l.values?.termination_details,...l.values?.paid_time_off,...l.values?.additional_information},M),d=V(()=>({...g,...c}),[c,g]),b=L({minTerminationDate:F,isEmployeeInProbationPeriod:T,selectedDate:j(d.proposed_termination_date)}),re=V(()=>{let s=R.data.schema.properties.termination_reason.oneOf,a=M?s.filter(i=>i.const==="cancellation_before_start_date"):s.filter(i=>i.const!=="cancellation_before_start_date");return{fields:{risk_assesment_info:S("Offboarding risk assessment","Employees may be protected from termination if they fall into certain categories. To help avoid claims from employees, let us know if the employee is part of one or more of these categories. Select all that apply.",{className:e?.jsfModify?.fields?.risk_assesment_info?.["x-jsf-presentation"]?.className}),termination_reason:{...e?.jsfModify?.fields?.termination_reason,oneOf:a},proposed_termination_date_info:S("Proposed termination date",Ce(ke,{children:["In most cases, Remote must provide notice to the employee before termination. The required notice period depends on local labor laws, the employment agreement, and other factors. We'll use those factors to determine the required notice period.",m(v,{external:!0,zendeskId:_.terminationNoticePeriods,className:D("text-sm",e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.zendeskTriggerButtonClassName),children:"Learn about notice periods"})]}),{className:e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.className}),proposed_termination_date:{...e?.jsfModify?.fields?.proposed_termination_date,"x-jsf-presentation":{...e?.jsfModify?.fields?.proposed_termination_date?.["x-jsf-presentation"],minDate:P,...d.termination_reason==="cancellation_before_start_date"&&n?.provisional_start_date?{maxDate:x(Pe(j(n.provisional_start_date),1),"yyyy-MM-dd")}:{},...b},...d.termination_reason==="cancellation_before_start_date"?{"x-jsf-errorMessage":{maximum:"The proposed termination date must be before the employee's start date."}}:{}},paid_time_off_info:{...e?.jsfModify?.fields?.paid_time_off_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"],Component:o(()=>{let i=e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"]?.Component;return m(J,{employeeName:n?.basic_information?.name,proposedTerminationDate:d.proposed_termination_date,employmentId:t,employment:n,render:r=>i?m(i,{...r}):m(Q,{...r})})},"Component")}},acknowledge_termination_procedure_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"],Component:o(()=>{let i=e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"]?.Component;return m(U,{render:r=>i?m(i,{...r}):m(W,{...r})})},"Component")}},acknowledge_termination_procedure_fees_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"],Component:o(()=>{let i={involuntaryOffboardingServiceChargeZendeskId:_.involuntaryOffboardingServiceCharge,reconciliationInvoiceZendeskId:_.reconciliationInvoice},r=e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"]?.Component;return r?m(r,{...i}):m(Y,{...i})},"Component")}}}}},[n,t,d.proposed_termination_date,d.termination_reason,M,P,e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,e?.jsfModify?.fields?.acknowledge_termination_procedure_info,e?.jsfModify?.fields?.paid_time_off_info,e?.jsfModify?.fields?.proposed_termination_date,e?.jsfModify?.fields?.proposed_termination_date_info,e?.jsfModify?.fields?.risk_assesment_info,e?.jsfModify?.fields?.termination_reason,b]),{data:f,isLoading:se}=K({formValues:d,jsfModify:{...e?.jsfModify,fields:{...e?.jsfModify?.fields,...re?.fields}},step:l.currentStep.name}),me=E(H.data.schema),k=Z(),{mutateAsync:de}=w(k);async function fe(s){if(!t)throw new Error("Employment id is missing");if(f){let a=await C(s,!0),{customer_informed_employee:i}=a,r=i==="yes"?{employee_awareness:{date:a.customer_informed_employee_date,note:a.customer_informed_employee_description}}:void 0,ue=await I(a,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),_e=be(ue,"customer_informed_employee_date","customer_informed_employee_description"),ye=xe({..._e,...r},je),p=a.timesheet_file??[],h=Array.isArray(p)&&p.length>0?{content:p[0].content,name:p[0].name}:void 0,Te={employment_id:t,termination_details:{...ye,timesheet_file:h||void 0},type:"termination"};return de(Te)}}o(fe,"onSubmit");function le(){oe()}o(le,"back");function ce(){ie()}o(ce,"next");let pe=Object.keys(c).length>0,C=o(async(s,a=!1)=>a?await u(s,me.fields,{isPartialValidation:!0}):f?await u(s,f?.fields,{isPartialValidation:!0}):{},"parseFormValues");return{employmentId:t,employment:n,fieldValues:d,isDirty:pe,stepState:l,fields:f?.fields||[],isLoading:se||te,isSubmitting:k.isPending,initialValues:g,handleValidation:o(async s=>{if(f){let a=await u(s,f?.fields);return f?.handleValidation(a)}return null},"handleValidation"),checkFieldUpdates:ee,parseFormValues:C,onSubmit:fe,back:le,next:ce}},"useTermination");export{lo as a};
|
|
2
|
+
//# sourceMappingURL=chunk-R63ZJMJA.js.map
|