@remoteoss/remote-flows 1.23.0 → 1.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +0 -4
  2. package/dist/CheckboxFieldDefault-55JIXW4D.js +2 -0
  3. package/dist/CountryFieldDefault-NX5GNCKS.js +2 -0
  4. package/dist/DatePickerFieldDefault-PRJ4Z72O.js +2 -0
  5. package/dist/EmailFieldDefault-TFQ5SQVC.js +2 -0
  6. package/dist/FileUploadFieldDefault-7ETO2SEZ.js +2 -0
  7. package/dist/MultiSelectFieldDefault-5TL5SL7W.js +2 -0
  8. package/dist/NumberFieldDefault-L7J22NRQ.js +2 -0
  9. package/dist/RadioGroupFieldDefault-B2ZRFHJ4.js +2 -0
  10. package/dist/SelectFieldDefault-AT6LLZNX.js +2 -0
  11. package/dist/TextAreaFieldDefault-2TV3WHKH.js +2 -0
  12. package/dist/TextFieldDefault-2GEILZPU.js +2 -0
  13. package/dist/WorkScheduleFieldDefault-XH4AEXSM.js +2 -0
  14. package/dist/{chunk-3MLYDDLK.js → chunk-2AYGZ4RY.js} +2 -2
  15. package/dist/{chunk-ITTXYDGV.js → chunk-2K2RK7RF.js} +2 -2
  16. package/dist/{chunk-VXMLYWZ2.js → chunk-2V4CTIAG.js} +2 -2
  17. package/dist/{chunk-2PDHYTZ2.js → chunk-4FMQTOXJ.js} +2 -2
  18. package/dist/{chunk-HVOYAQHI.js → chunk-6GCLDEJP.js} +2 -2
  19. package/dist/chunk-6GCLDEJP.js.map +1 -0
  20. package/dist/{chunk-HJ7WOTV7.js → chunk-6H4634RG.js} +2 -2
  21. package/dist/{chunk-4Q2FKKQU.js → chunk-6QEF52IP.js} +2 -2
  22. package/dist/{chunk-RKGD6XC7.js → chunk-7BGANM2R.js} +2 -2
  23. package/dist/{chunk-X6CON4YE.js → chunk-7QXULBD7.js} +2 -2
  24. package/dist/{chunk-S42DBWAF.js → chunk-7SO6WCYM.js} +2 -2
  25. package/dist/{chunk-AKFNSADJ.js → chunk-7V2QPZ2F.js} +2 -2
  26. package/dist/{chunk-6ORP3EVR.js → chunk-7ZFZYZSP.js} +2 -2
  27. package/dist/{chunk-VHLCM6IM.js → chunk-ADTGWDQ7.js} +2 -2
  28. package/dist/{chunk-AOSXULKY.js → chunk-AS6KFUXS.js} +2 -2
  29. package/dist/{chunk-JVHQ5EG3.js → chunk-AS77PXWM.js} +2 -2
  30. package/dist/{chunk-TGQTFWAB.js → chunk-B4E43MXD.js} +2 -2
  31. package/dist/chunk-BI4RFXFL.js +2 -0
  32. package/dist/chunk-BI4RFXFL.js.map +1 -0
  33. package/dist/{chunk-EFRT6C7V.js → chunk-BNQFPYNQ.js} +2 -2
  34. package/dist/{chunk-D5ABWBC6.js → chunk-BZAO32QW.js} +2 -2
  35. package/dist/{chunk-O6H66UM2.js → chunk-C32W6TCT.js} +2 -2
  36. package/dist/chunk-C4MRFGQG.js +2 -0
  37. package/dist/chunk-C4MRFGQG.js.map +1 -0
  38. package/dist/{chunk-6PYJAPM2.js → chunk-CKVI2UDU.js} +2 -2
  39. package/dist/chunk-CWAFRJAQ.js +2 -0
  40. package/dist/chunk-CWAFRJAQ.js.map +1 -0
  41. package/dist/{chunk-JEGVULKU.js → chunk-D5AO6SOM.js} +2 -2
  42. package/dist/{chunk-JEGVULKU.js.map → chunk-D5AO6SOM.js.map} +1 -1
  43. package/dist/chunk-DZXU45AS.js +2 -0
  44. package/dist/chunk-DZXU45AS.js.map +1 -0
  45. package/dist/{chunk-MGY23P25.js → chunk-ECGWCDC3.js} +2 -2
  46. package/dist/chunk-FAIEJW57.js +2 -0
  47. package/dist/{chunk-YHQQSL4Q.js.map → chunk-FAIEJW57.js.map} +1 -1
  48. package/dist/{chunk-YHCH57B7.js → chunk-G5O2CM6V.js} +2 -2
  49. package/dist/{chunk-JIW2JK7J.js → chunk-GOTY4N6S.js} +2 -2
  50. package/dist/{chunk-WQ4H5V7U.js → chunk-H2RAK6F7.js} +1 -1
  51. package/dist/chunk-H2RAK6F7.js.map +1 -0
  52. package/dist/{chunk-DNVTXLTP.js → chunk-H5PRUDCX.js} +2 -2
  53. package/dist/chunk-H5QXOIKS.js +2 -0
  54. package/dist/{chunk-TFSRZOMP.js.map → chunk-H5QXOIKS.js.map} +1 -1
  55. package/dist/{chunk-D4TLSPX5.js → chunk-HDH5PEOK.js} +2 -2
  56. package/dist/chunk-HDH5PEOK.js.map +1 -0
  57. package/dist/{chunk-4J36XOH2.js → chunk-HIFEVMKP.js} +2 -2
  58. package/dist/{chunk-JNMD7SWN.js → chunk-HNCOYMS5.js} +2 -2
  59. package/dist/{chunk-KEFIHTZ2.js → chunk-IJ2BGCAF.js} +2 -2
  60. package/dist/{chunk-2MTSUYN6.js → chunk-JF3KLAB5.js} +2 -2
  61. package/dist/{chunk-U33Q35CB.js → chunk-JI5PQLWS.js} +2 -2
  62. package/dist/{chunk-CJG77FUT.js → chunk-JKB4KOVF.js} +2 -2
  63. package/dist/{chunk-H3HNBOAE.js → chunk-JQJBDHAL.js} +2 -2
  64. package/dist/{chunk-GRE4RCPB.js → chunk-JTMJKRH7.js} +2 -2
  65. package/dist/chunk-JTMJKRH7.js.map +1 -0
  66. package/dist/{chunk-TJHW5QSC.js → chunk-K4YQQMHD.js} +2 -2
  67. package/dist/{chunk-D5K4NBOG.js → chunk-K5Y67GIG.js} +2 -2
  68. package/dist/{chunk-4EFT4EBW.js → chunk-KKMW7Q42.js} +2 -2
  69. package/dist/{chunk-5MDNW5H7.js → chunk-KM7CQTD5.js} +2 -2
  70. package/dist/{chunk-OIBZ7VUR.js → chunk-KXT6ACFL.js} +2 -2
  71. package/dist/{chunk-JAZLNJM3.js → chunk-LSVH4U4W.js} +2 -2
  72. package/dist/{chunk-ZEJRVVLJ.js → chunk-MG4PHNSS.js} +2 -2
  73. package/dist/{chunk-YIOLMWB5.js → chunk-MSEHAEEK.js} +2 -2
  74. package/dist/{chunk-S5VSWHJY.js → chunk-NAF6LRSS.js} +2 -2
  75. package/dist/{chunk-JJMBP6FU.js → chunk-NKMO2WW3.js} +2 -2
  76. package/dist/{chunk-TV2NNJVO.js → chunk-NNFWLL7F.js} +2 -2
  77. package/dist/{chunk-FXTOBTW4.js → chunk-OK2NP3L5.js} +2 -2
  78. package/dist/{chunk-WWXX3PU7.js → chunk-OQ5WZBDA.js} +2 -2
  79. package/dist/{chunk-HFQAVCD2.js → chunk-OWUINMZP.js} +2 -2
  80. package/dist/{chunk-5QOEBELF.js → chunk-PZAYG2DF.js} +2 -2
  81. package/dist/{chunk-KO264IE2.js → chunk-QLYFMDLB.js} +2 -2
  82. package/dist/{chunk-UEDPRIG7.js → chunk-R3BBN7TV.js} +2 -2
  83. package/dist/{chunk-HNTEGDI2.js → chunk-RDYN6W2A.js} +2 -2
  84. package/dist/{chunk-V3ZGBTES.js → chunk-SADMJJDB.js} +2 -2
  85. package/dist/{chunk-GECXYMDU.js → chunk-SXKIRVA2.js} +2 -2
  86. package/dist/{chunk-UVBIRNQ4.js → chunk-SXM3GJ5M.js} +2 -2
  87. package/dist/{chunk-M7KQPXCS.js → chunk-T4YYYCSD.js} +2 -2
  88. package/dist/{chunk-7DRY6YCN.js → chunk-TNYFIB6U.js} +2 -2
  89. package/dist/{chunk-NI3CJNG3.js → chunk-UJXUKEQU.js} +2 -2
  90. package/dist/chunk-UMLRTS3B.js +2 -0
  91. package/dist/chunk-UMLRTS3B.js.map +1 -0
  92. package/dist/{chunk-DPRCPBRB.js → chunk-UOA5WU4S.js} +2 -2
  93. package/dist/{chunk-X6PTF3PD.js → chunk-UQBKFWUI.js} +2 -2
  94. package/dist/{chunk-SQPCNBJC.js → chunk-VB6KFDBL.js} +2 -2
  95. package/dist/{chunk-ROQYHTFQ.js → chunk-VK7T332E.js} +2 -2
  96. package/dist/{chunk-4EU3AWEX.js → chunk-VWBA3U4U.js} +2 -2
  97. package/dist/{chunk-IN74TK34.js → chunk-VY6W6W6F.js} +2 -2
  98. package/dist/chunk-W6OOI5NF.js +2 -0
  99. package/dist/{chunk-PVZTOW7Z.js.map → chunk-W6OOI5NF.js.map} +1 -1
  100. package/dist/{chunk-K5HZE7M6.js → chunk-WFZGKBFS.js} +2 -2
  101. package/dist/{chunk-TRBEYNRN.js → chunk-WRRTZ2AL.js} +2 -2
  102. package/dist/{chunk-R7G5G45H.js → chunk-XBPTFEGC.js} +2 -2
  103. package/dist/chunk-XGRFWXUU.js +2 -0
  104. package/dist/chunk-XGRFWXUU.js.map +1 -0
  105. package/dist/chunk-YMJ3HQTG.js +2 -0
  106. package/dist/chunk-YMJ3HQTG.js.map +1 -0
  107. package/dist/{chunk-VL5TI4XT.js → chunk-YOFBRZUZ.js} +2 -2
  108. package/dist/default-components.js +1 -1
  109. package/dist/default-components.js.map +1 -1
  110. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  111. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  112. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  113. package/dist/flows/ContractAmendment/hooks.js +1 -1
  114. package/dist/flows/ContractAmendment/index.js +1 -1
  115. package/dist/flows/ContractAmendment/utils.js +1 -1
  116. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  117. package/dist/flows/ContractorOnboarding/api.js +1 -1
  118. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  119. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  120. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  121. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  122. package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.js +1 -1
  123. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  124. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  125. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  126. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  127. package/dist/flows/ContractorOnboarding/index.js +1 -1
  128. package/dist/flows/ContractorOnboarding/jsfModify.js +1 -1
  129. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  130. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  131. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  132. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.js +1 -1
  133. package/dist/flows/CostCalculator/api.js +1 -1
  134. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  135. package/dist/flows/CostCalculator/hooks.js +1 -1
  136. package/dist/flows/CostCalculator/index.js +1 -1
  137. package/dist/flows/CostCalculator/utils.js +1 -1
  138. package/dist/flows/CreateCompany/CreateCompany.js +1 -1
  139. package/dist/flows/CreateCompany/api.js +1 -1
  140. package/dist/flows/CreateCompany/components/AddressDetailsStep.js +1 -1
  141. package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.js +1 -1
  142. package/dist/flows/CreateCompany/components/CreateCompanyForm.js +1 -1
  143. package/dist/flows/CreateCompany/hooks.js +1 -1
  144. package/dist/flows/CreateCompany/index.js +1 -1
  145. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  146. package/dist/flows/Onboarding/api.js +1 -1
  147. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  148. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  149. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  150. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  151. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  152. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  153. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  154. package/dist/flows/Onboarding/hooks.js +1 -1
  155. package/dist/flows/Onboarding/index.js +1 -1
  156. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  157. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  158. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  159. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  160. package/dist/flows/Termination/TerminationFlow.js +1 -1
  161. package/dist/flows/Termination/TerminationForm.js +1 -1
  162. package/dist/flows/Termination/api.js +1 -1
  163. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation.js +1 -1
  164. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  165. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  166. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  167. package/dist/flows/Termination/hooks.js +1 -1
  168. package/dist/flows/Termination/index.js +1 -1
  169. package/dist/index.css +1 -1
  170. package/dist/index.css.map +1 -1
  171. package/dist/index.js +2 -2
  172. package/dist/index.js.map +1 -1
  173. package/dist/internals.d.ts +4 -2
  174. package/dist/internals.js +1 -1
  175. package/dist/styles.css +1 -1
  176. package/dist/styles.css.map +1 -1
  177. package/package.json +12 -9
  178. package/dist/CheckboxFieldDefault-SZZQUVAM.js +0 -2
  179. package/dist/CountryFieldDefault-IBVQJVMW.js +0 -2
  180. package/dist/DatePickerFieldDefault-5LEOVIM2.js +0 -2
  181. package/dist/EmailFieldDefault-2PMSDIXF.js +0 -2
  182. package/dist/FileUploadFieldDefault-Y2ZYBSTV.js +0 -2
  183. package/dist/MultiSelectFieldDefault-UK7652MS.js +0 -2
  184. package/dist/NumberFieldDefault-C5V6POQ7.js +0 -2
  185. package/dist/RadioGroupFieldDefault-DNESPKMT.js +0 -2
  186. package/dist/SelectFieldDefault-4KQUV57C.js +0 -2
  187. package/dist/TextAreaFieldDefault-5P2MEQUR.js +0 -2
  188. package/dist/TextFieldDefault-PMCQSPPT.js +0 -2
  189. package/dist/WorkScheduleFieldDefault-SR3G37MN.js +0 -2
  190. package/dist/chunk-6AAV34CT.js +0 -2
  191. package/dist/chunk-6AAV34CT.js.map +0 -1
  192. package/dist/chunk-7EONM7HL.js +0 -2
  193. package/dist/chunk-7EONM7HL.js.map +0 -1
  194. package/dist/chunk-D4TLSPX5.js.map +0 -1
  195. package/dist/chunk-EOMVTXER.js +0 -2
  196. package/dist/chunk-EOMVTXER.js.map +0 -1
  197. package/dist/chunk-GRE4RCPB.js.map +0 -1
  198. package/dist/chunk-HVOYAQHI.js.map +0 -1
  199. package/dist/chunk-LU265KXN.js +0 -2
  200. package/dist/chunk-LU265KXN.js.map +0 -1
  201. package/dist/chunk-PVZTOW7Z.js +0 -2
  202. package/dist/chunk-RGLQY27T.js +0 -2
  203. package/dist/chunk-RGLQY27T.js.map +0 -1
  204. package/dist/chunk-TFSRZOMP.js +0 -2
  205. package/dist/chunk-U4QOJDBZ.js +0 -2
  206. package/dist/chunk-U4QOJDBZ.js.map +0 -1
  207. package/dist/chunk-UTLIN5S6.js +0 -2
  208. package/dist/chunk-UTLIN5S6.js.map +0 -1
  209. package/dist/chunk-VKQQKGGY.js +0 -2
  210. package/dist/chunk-VKQQKGGY.js.map +0 -1
  211. package/dist/chunk-WQ4H5V7U.js.map +0 -1
  212. package/dist/chunk-YHQQSL4Q.js +0 -2
  213. /package/dist/{CheckboxFieldDefault-SZZQUVAM.js.map → CheckboxFieldDefault-55JIXW4D.js.map} +0 -0
  214. /package/dist/{CountryFieldDefault-IBVQJVMW.js.map → CountryFieldDefault-NX5GNCKS.js.map} +0 -0
  215. /package/dist/{DatePickerFieldDefault-5LEOVIM2.js.map → DatePickerFieldDefault-PRJ4Z72O.js.map} +0 -0
  216. /package/dist/{EmailFieldDefault-2PMSDIXF.js.map → EmailFieldDefault-TFQ5SQVC.js.map} +0 -0
  217. /package/dist/{FileUploadFieldDefault-Y2ZYBSTV.js.map → FileUploadFieldDefault-7ETO2SEZ.js.map} +0 -0
  218. /package/dist/{MultiSelectFieldDefault-UK7652MS.js.map → MultiSelectFieldDefault-5TL5SL7W.js.map} +0 -0
  219. /package/dist/{NumberFieldDefault-C5V6POQ7.js.map → NumberFieldDefault-L7J22NRQ.js.map} +0 -0
  220. /package/dist/{RadioGroupFieldDefault-DNESPKMT.js.map → RadioGroupFieldDefault-B2ZRFHJ4.js.map} +0 -0
  221. /package/dist/{SelectFieldDefault-4KQUV57C.js.map → SelectFieldDefault-AT6LLZNX.js.map} +0 -0
  222. /package/dist/{TextAreaFieldDefault-5P2MEQUR.js.map → TextAreaFieldDefault-2TV3WHKH.js.map} +0 -0
  223. /package/dist/{TextFieldDefault-PMCQSPPT.js.map → TextFieldDefault-2GEILZPU.js.map} +0 -0
  224. /package/dist/{WorkScheduleFieldDefault-SR3G37MN.js.map → WorkScheduleFieldDefault-XH4AEXSM.js.map} +0 -0
  225. /package/dist/{chunk-3MLYDDLK.js.map → chunk-2AYGZ4RY.js.map} +0 -0
  226. /package/dist/{chunk-ITTXYDGV.js.map → chunk-2K2RK7RF.js.map} +0 -0
  227. /package/dist/{chunk-VXMLYWZ2.js.map → chunk-2V4CTIAG.js.map} +0 -0
  228. /package/dist/{chunk-2PDHYTZ2.js.map → chunk-4FMQTOXJ.js.map} +0 -0
  229. /package/dist/{chunk-HJ7WOTV7.js.map → chunk-6H4634RG.js.map} +0 -0
  230. /package/dist/{chunk-4Q2FKKQU.js.map → chunk-6QEF52IP.js.map} +0 -0
  231. /package/dist/{chunk-RKGD6XC7.js.map → chunk-7BGANM2R.js.map} +0 -0
  232. /package/dist/{chunk-X6CON4YE.js.map → chunk-7QXULBD7.js.map} +0 -0
  233. /package/dist/{chunk-S42DBWAF.js.map → chunk-7SO6WCYM.js.map} +0 -0
  234. /package/dist/{chunk-AKFNSADJ.js.map → chunk-7V2QPZ2F.js.map} +0 -0
  235. /package/dist/{chunk-6ORP3EVR.js.map → chunk-7ZFZYZSP.js.map} +0 -0
  236. /package/dist/{chunk-VHLCM6IM.js.map → chunk-ADTGWDQ7.js.map} +0 -0
  237. /package/dist/{chunk-AOSXULKY.js.map → chunk-AS6KFUXS.js.map} +0 -0
  238. /package/dist/{chunk-JVHQ5EG3.js.map → chunk-AS77PXWM.js.map} +0 -0
  239. /package/dist/{chunk-TGQTFWAB.js.map → chunk-B4E43MXD.js.map} +0 -0
  240. /package/dist/{chunk-EFRT6C7V.js.map → chunk-BNQFPYNQ.js.map} +0 -0
  241. /package/dist/{chunk-D5ABWBC6.js.map → chunk-BZAO32QW.js.map} +0 -0
  242. /package/dist/{chunk-O6H66UM2.js.map → chunk-C32W6TCT.js.map} +0 -0
  243. /package/dist/{chunk-6PYJAPM2.js.map → chunk-CKVI2UDU.js.map} +0 -0
  244. /package/dist/{chunk-MGY23P25.js.map → chunk-ECGWCDC3.js.map} +0 -0
  245. /package/dist/{chunk-YHCH57B7.js.map → chunk-G5O2CM6V.js.map} +0 -0
  246. /package/dist/{chunk-JIW2JK7J.js.map → chunk-GOTY4N6S.js.map} +0 -0
  247. /package/dist/{chunk-DNVTXLTP.js.map → chunk-H5PRUDCX.js.map} +0 -0
  248. /package/dist/{chunk-4J36XOH2.js.map → chunk-HIFEVMKP.js.map} +0 -0
  249. /package/dist/{chunk-JNMD7SWN.js.map → chunk-HNCOYMS5.js.map} +0 -0
  250. /package/dist/{chunk-KEFIHTZ2.js.map → chunk-IJ2BGCAF.js.map} +0 -0
  251. /package/dist/{chunk-2MTSUYN6.js.map → chunk-JF3KLAB5.js.map} +0 -0
  252. /package/dist/{chunk-U33Q35CB.js.map → chunk-JI5PQLWS.js.map} +0 -0
  253. /package/dist/{chunk-CJG77FUT.js.map → chunk-JKB4KOVF.js.map} +0 -0
  254. /package/dist/{chunk-H3HNBOAE.js.map → chunk-JQJBDHAL.js.map} +0 -0
  255. /package/dist/{chunk-TJHW5QSC.js.map → chunk-K4YQQMHD.js.map} +0 -0
  256. /package/dist/{chunk-D5K4NBOG.js.map → chunk-K5Y67GIG.js.map} +0 -0
  257. /package/dist/{chunk-4EFT4EBW.js.map → chunk-KKMW7Q42.js.map} +0 -0
  258. /package/dist/{chunk-5MDNW5H7.js.map → chunk-KM7CQTD5.js.map} +0 -0
  259. /package/dist/{chunk-OIBZ7VUR.js.map → chunk-KXT6ACFL.js.map} +0 -0
  260. /package/dist/{chunk-JAZLNJM3.js.map → chunk-LSVH4U4W.js.map} +0 -0
  261. /package/dist/{chunk-ZEJRVVLJ.js.map → chunk-MG4PHNSS.js.map} +0 -0
  262. /package/dist/{chunk-YIOLMWB5.js.map → chunk-MSEHAEEK.js.map} +0 -0
  263. /package/dist/{chunk-S5VSWHJY.js.map → chunk-NAF6LRSS.js.map} +0 -0
  264. /package/dist/{chunk-JJMBP6FU.js.map → chunk-NKMO2WW3.js.map} +0 -0
  265. /package/dist/{chunk-TV2NNJVO.js.map → chunk-NNFWLL7F.js.map} +0 -0
  266. /package/dist/{chunk-FXTOBTW4.js.map → chunk-OK2NP3L5.js.map} +0 -0
  267. /package/dist/{chunk-WWXX3PU7.js.map → chunk-OQ5WZBDA.js.map} +0 -0
  268. /package/dist/{chunk-HFQAVCD2.js.map → chunk-OWUINMZP.js.map} +0 -0
  269. /package/dist/{chunk-5QOEBELF.js.map → chunk-PZAYG2DF.js.map} +0 -0
  270. /package/dist/{chunk-KO264IE2.js.map → chunk-QLYFMDLB.js.map} +0 -0
  271. /package/dist/{chunk-UEDPRIG7.js.map → chunk-R3BBN7TV.js.map} +0 -0
  272. /package/dist/{chunk-HNTEGDI2.js.map → chunk-RDYN6W2A.js.map} +0 -0
  273. /package/dist/{chunk-V3ZGBTES.js.map → chunk-SADMJJDB.js.map} +0 -0
  274. /package/dist/{chunk-GECXYMDU.js.map → chunk-SXKIRVA2.js.map} +0 -0
  275. /package/dist/{chunk-UVBIRNQ4.js.map → chunk-SXM3GJ5M.js.map} +0 -0
  276. /package/dist/{chunk-M7KQPXCS.js.map → chunk-T4YYYCSD.js.map} +0 -0
  277. /package/dist/{chunk-7DRY6YCN.js.map → chunk-TNYFIB6U.js.map} +0 -0
  278. /package/dist/{chunk-NI3CJNG3.js.map → chunk-UJXUKEQU.js.map} +0 -0
  279. /package/dist/{chunk-DPRCPBRB.js.map → chunk-UOA5WU4S.js.map} +0 -0
  280. /package/dist/{chunk-X6PTF3PD.js.map → chunk-UQBKFWUI.js.map} +0 -0
  281. /package/dist/{chunk-SQPCNBJC.js.map → chunk-VB6KFDBL.js.map} +0 -0
  282. /package/dist/{chunk-ROQYHTFQ.js.map → chunk-VK7T332E.js.map} +0 -0
  283. /package/dist/{chunk-4EU3AWEX.js.map → chunk-VWBA3U4U.js.map} +0 -0
  284. /package/dist/{chunk-IN74TK34.js.map → chunk-VY6W6W6F.js.map} +0 -0
  285. /package/dist/{chunk-K5HZE7M6.js.map → chunk-WFZGKBFS.js.map} +0 -0
  286. /package/dist/{chunk-TRBEYNRN.js.map → chunk-WRRTZ2AL.js.map} +0 -0
  287. /package/dist/{chunk-R7G5G45H.js.map → chunk-XBPTFEGC.js.map} +0 -0
  288. /package/dist/{chunk-VL5TI4XT.js.map → chunk-YOFBRZUZ.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/hooks.tsx","../src/components/error-handling/ErrorContext.tsx","../src/components/error-handling/useErrorReporting.ts"],"sourcesContent":["import { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';\nimport {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n} from '@/src/client';\nimport { JSFFields } from '@/src/types/remoteFlows';\nimport { useStepState, Step } from '@/src/flows/useStepState';\nimport {\n disabledInviteButtonEmploymentStatus,\n getContractDetailsSchemaVersion,\n getBasicInformationSchemaVersion,\n reviewStepAllowedEmploymentStatus,\n STEPS,\n STEPS_WITHOUT_SELECT_COUNTRY,\n} from '@/src/flows/Onboarding/utils';\nimport { prettifyFormValues } from '@/src/lib/utils';\nimport {\n getInitialValues,\n enableAckFields,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowProps } from '@/src/flows/Onboarding/types';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport mergeWith from 'lodash.mergewith';\nimport {\n useBenefitOffers,\n useBenefitOffersSchema,\n useCompany,\n useCountriesSchemaField,\n useCreateEmployment,\n useEmploymentOnboardingReservesStatus,\n useJSONSchemaForm,\n useUpdateBenefitsOffers,\n useUpdateEmployment,\n useUpsertContractEligibility,\n} from '@/src/flows/Onboarding/api';\nimport { JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { AnnualGrossSalary } from '@/src/flows/Onboarding/components/AnnualGrossSalary';\nimport { $TSFixMe, JSFField, JSFFieldset, Meta } from '@/src/types/remoteFlows';\nimport { EquityPriceDetails } from '@/src/flows/Onboarding/components/EquityPriceDetails';\nimport { useErrorReporting } from '@/src/components/error-handling/useErrorReporting';\nimport { useEmploymentQuery } from '@/src/common/api/employment';\n\ntype OnboardingHookProps = Omit<OnboardingFlowProps, 'render'>;\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n contract_details: 'contract_details',\n};\n\nconst stepToFormSchemaMap: Record<\n keyof typeof STEPS,\n JSONSchemaFormType | null\n> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_details: 'contract_details',\n benefits: null,\n review: null,\n};\n\nconst getLoadingStates = ({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentStatus,\n employmentId,\n currentStepName,\n basicInformationFields,\n contractDetailsFields,\n}: {\n isLoadingBasicInformationForm: boolean;\n isLoadingContractDetailsForm: boolean;\n isLoadingEmployment: boolean;\n isLoadingBenefitsOffersSchema: boolean;\n isLoadingBenefitOffers: boolean;\n isLoadingCompany: boolean;\n isLoadingCountries: boolean;\n employmentStatus?: Employment['status'];\n employmentId?: string;\n currentStepName: string;\n basicInformationFields: JSFFields;\n contractDetailsFields: JSFFields;\n}) => {\n const initialLoading =\n isLoadingBasicInformationForm ||\n isLoadingContractDetailsForm ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers ||\n isLoadingCompany ||\n isLoadingCountries;\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const canInvite =\n employmentStatus &&\n !disabledInviteButtonEmploymentStatus.includes(employmentStatus);\n\n const shouldHandleReadOnlyEmployment = Boolean(\n employmentId && isEmploymentReadOnly && currentStepName !== 'review',\n );\n\n const isLoading = initialLoading || shouldHandleReadOnlyEmployment;\n\n const isNavigatingToReview = Boolean(\n shouldHandleReadOnlyEmployment &&\n !initialLoading &&\n basicInformationFields.length > 0 &&\n contractDetailsFields.length > 0,\n );\n\n return {\n isLoading,\n isNavigatingToReview,\n isEmploymentReadOnly,\n canInvite,\n };\n};\n\nexport const useOnboarding = ({\n employmentId,\n companyId,\n countryCode,\n type,\n options,\n skipSteps,\n externalId,\n initialValues: onboardingInitialValues,\n}: OnboardingHookProps) => {\n const { updateErrorContext } = useErrorReporting({\n flow: 'onboarding',\n metadata: {\n employmentId,\n companyId,\n isUpdating: Boolean(employmentId),\n },\n });\n const stepsToUse = skipSteps?.includes('select_country')\n ? STEPS_WITHOUT_SELECT_COUNTRY\n : STEPS;\n\n const onStepChange = useCallback(\n (step: Step<keyof typeof STEPS>) => {\n updateErrorContext({\n step: step.name,\n });\n },\n [updateErrorContext],\n );\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(\n stepsToUse as Record<keyof typeof STEPS, Step<keyof typeof STEPS>>,\n onStepChange,\n );\n\n const fieldsMetaRef = useRef<{\n select_country: Meta;\n basic_information: Meta;\n contract_details: Meta;\n benefits: Meta;\n }>({\n select_country: {},\n basic_information: {},\n contract_details: {},\n benefits: {},\n });\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmploymentQuery({\n employmentId: internalEmploymentId as string,\n queryParams: { exclude_files: true },\n });\n\n // if the employment is loaded, country code has not been set yet\n // we set the internal country code with the employment country code\n if (employmentId && employment?.country?.code && !internalCountryCode) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n\n const {\n data: company,\n isLoading: isLoadingCompany,\n refetch: refetchCompany,\n } = useCompany(companyId);\n\n const isOnboardingReservesEnabled =\n (options?.features?.includes('onboarding_reserves') &&\n stepState.currentStep.name === 'review') ||\n false;\n\n const { data: onboardingReservesStatus } =\n useEmploymentOnboardingReservesStatus(\n companyId,\n internalEmploymentId,\n isOnboardingReservesEnabled,\n );\n\n const { selectCountryForm, isLoading: isLoadingCountries } =\n useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n queryOptions: {\n enabled: stepState.currentStep.name === 'select_country',\n },\n });\n\n const createEmploymentMutation = useCreateEmployment(options);\n const updateEmploymentMutation = useUpdateEmployment(\n internalCountryCode as string,\n options,\n );\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers(options);\n const updateContractEligibilityMutation = useUpsertContractEligibility();\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n const { mutateAsync: updateEmploymentMutationAsync } = mutationToPromise(\n updateEmploymentMutation,\n );\n const { mutateAsync: updateBenefitsOffersMutationAsync } = mutationToPromise(\n updateBenefitsOffersMutation,\n );\n const { mutateAsync: updateContractEligibilityMutationAsync } =\n mutationToPromise(updateContractEligibilityMutation);\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'employment_basic_information';\n const employmentKey = jsonSchemaToEmployment[formType] as keyof Employment;\n const serverEmploymentData = (employment?.[employmentKey] || {}) as Record<\n string,\n unknown\n >;\n\n const useJSONSchema = ({\n form,\n options: jsonSchemaOptions = {},\n query = {},\n jsonSchemaVersion,\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n };\n query?: Record<string, string>;\n jsonSchemaVersion?: number | 'latest';\n }) => {\n const hasUserEnteredAnyValues = Object.keys(fieldValues).length > 0;\n // when you write on the fields, the values are stored in the fieldValues state\n // when values are stored in the stepState is when the user has navigated to the step\n // and then we have the values from the server and the onboardingInitialValues that the user can inject,\n const mergedFormValues = hasUserEnteredAnyValues\n ? {\n ...onboardingInitialValues,\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : {\n ...onboardingInitialValues,\n ...serverEmploymentData,\n };\n\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues: mergedFormValues,\n query,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n jsonSchemaVersion,\n });\n };\n\n const isBasicInformationDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n Boolean(employmentId)),\n );\n\n const isContractDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'contract_details' ||\n Boolean(employmentId)),\n );\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'employment_basic_information',\n options: {\n jsfModify: options?.jsfModify?.basic_information,\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n },\n jsonSchemaVersion: getBasicInformationSchemaVersion(options),\n });\n\n const annualGrossSalaryField =\n options?.jsfModify?.contract_details?.fields?.annual_gross_salary;\n const annualSalaryFieldPresentation =\n annualGrossSalaryField &&\n typeof annualGrossSalaryField === 'object' &&\n 'presentation' in annualGrossSalaryField\n ? (\n annualGrossSalaryField as {\n presentation?: {\n annual_gross_salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const equityCompensationField =\n options?.jsfModify?.contract_details?.fields?.equity_compensation;\n\n const contractDetailsCustomFields = useMemo(\n () => ({\n fields: {\n annual_gross_salary: {\n ...annualGrossSalaryField,\n presentation: {\n annual_gross_salary_conversion_properties: {\n label:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.label,\n description:\n annualSalaryFieldPresentation\n ?.annual_gross_salary_conversion_properties?.description,\n },\n desiredCurrency: company?.desired_currency,\n Component: (props: JSFField & { currency: string }) => {\n return (\n <AnnualGrossSalary\n desiredCurrency={company?.desired_currency || ''}\n {...props}\n />\n );\n },\n },\n },\n equity_compensation: {\n ...equityCompensationField,\n presentation: {\n calculateDynamicProperties: (\n values: FieldValues,\n field: JSFField,\n ) => {\n const offerEquity =\n values.equity_compensation?.offer_equity_compensation;\n const equityCost = field?.meta?.cost;\n\n return {\n extra: (\n <EquityPriceDetails\n offerEquity={offerEquity}\n equityCost={equityCost as $TSFixMe}\n />\n ),\n };\n },\n },\n },\n },\n }),\n [\n annualGrossSalaryField,\n annualSalaryFieldPresentation,\n company?.desired_currency,\n equityCompensationField,\n ],\n );\n\n const effectiveContractDetailsJsonSchemaVersion =\n getContractDetailsSchemaVersion(options, internalCountryCode);\n\n const { data: contractDetailsForm, isLoading: isLoadingContractDetailsForm } =\n useJSONSchema({\n form: 'contract_details',\n query: {\n employment_id: internalEmploymentId as string,\n },\n options: {\n jsfModify: {\n ...options?.jsfModify?.contract_details,\n fields: {\n ...options?.jsfModify?.contract_details?.fields,\n ...contractDetailsCustomFields.fields,\n },\n },\n queryOptions: {\n enabled: isContractDetailsEnabled,\n },\n },\n jsonSchemaVersion: effectiveContractDetailsJsonSchemaVersion,\n });\n\n const {\n data: benefitOffersSchema,\n isLoading: isLoadingBenefitsOffersSchema,\n } = useBenefitOffersSchema(\n internalEmploymentId as string,\n fieldValues,\n options,\n );\n\n const initialValuesBenefitOffers = useMemo(() => {\n if (stepState.currentStep.name === 'benefits') {\n const benefitsFormValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n return mergeWith({}, benefitOffers, benefitsFormValues);\n }\n return {};\n }, [\n stepState.currentStep.name,\n benefitOffers,\n stepState.values,\n fieldValues,\n ]);\n\n const stepFields: Record<keyof typeof STEPS, JSFFields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n contract_details: contractDetailsForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractDetailsForm?.fields,\n benefitOffersSchema?.fields,\n ],\n );\n\n const stepFieldsWithFlatFieldsets: Record<\n keyof typeof STEPS,\n JSFFieldset | null | undefined\n > = {\n select_country: null,\n basic_information: basicInformationForm?.meta['x-jsf-fieldsets'],\n contract_details: contractDetailsForm?.meta['x-jsf-fieldsets'],\n benefits: null,\n review: null,\n };\n\n const {\n country,\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n status: employmentStatus,\n } = employment || {};\n\n const employmentCountryCode = country?.code;\n const currentStepName = stepState.currentStep.name;\n\n const selectCountryInitialValues = useMemo(\n () =>\n getInitialValues(stepFields.select_country, {\n country: internalCountryCode || employmentCountryCode || '',\n }),\n [stepFields.select_country, internalCountryCode, employmentCountryCode],\n );\n\n const basicInformationInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentBasicInformation,\n };\n\n return getInitialValues(stepFields.basic_information, initialValues);\n }, [\n stepFields.basic_information,\n employmentBasicInformation,\n onboardingInitialValues,\n ]);\n\n const contractDetailsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_details, initialValues);\n }, [\n stepFields.contract_details,\n employmentContractDetails,\n onboardingInitialValues,\n ]);\n\n const benefitsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...initialValuesBenefitOffers,\n };\n\n return getInitialValues(stepFields.benefits, initialValues);\n }, [\n stepFields.benefits,\n initialValuesBenefitOffers,\n onboardingInitialValues,\n ]);\n\n const initialValues = useMemo(() => {\n if (employment) {\n return {\n select_country: selectCountryInitialValues,\n // We don't store ack fields in the db, eg \"ack_start_date_ammendment\" for Argentina, and therefore is not returned in the employment response\n // So when an employmentId exists, it means that the user has already started the onboarding process, and we need to enable the ack fields\n basic_information: enableAckFields(\n stepFields['basic_information'],\n basicInformationInitialValues,\n ),\n contract_details:\n // if contract details is null, it means it has not been filled yet, so we can't enable the ack fields\n employment?.contract_details !== null\n ? enableAckFields(\n stepFields['contract_details'],\n contractDetailsInitialValues,\n )\n : contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n };\n }\n return {\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n };\n }, [\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n benefitsInitialValues,\n employment,\n stepFields,\n ]);\n\n const { isLoading, isNavigatingToReview, isEmploymentReadOnly, canInvite } =\n useMemo(\n () =>\n getLoadingStates({\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentId,\n employmentStatus: employmentStatus,\n basicInformationFields: stepFields.basic_information,\n contractDetailsFields: stepFields.contract_details,\n currentStepName: currentStepName,\n }),\n [\n isLoadingBasicInformationForm,\n isLoadingContractDetailsForm,\n isLoadingEmployment,\n isLoadingBenefitsOffersSchema,\n isLoadingBenefitOffers,\n isLoadingCompany,\n isLoadingCountries,\n employmentId,\n employmentStatus,\n stepFields.basic_information,\n stepFields.contract_details,\n currentStepName,\n ],\n );\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n ),\n benefits: prettifyFormValues(\n benefitsInitialValues,\n stepFields.benefits,\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n review: {},\n });\n\n goToStep('review');\n }\n }, [\n basicInformationInitialValues,\n benefitsInitialValues,\n contractDetailsInitialValues,\n goToStep,\n isNavigatingToReview,\n selectCountryInitialValues,\n setStepValues,\n stepFields.basic_information,\n stepFields.benefits,\n stepFields.contract_details,\n stepFields.select_country,\n ]);\n\n const parseFormValues = async (values: FieldValues) => {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return await parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return await parseJSFToValidate(values, contractDetailsForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (benefitOffersSchema && stepState.currentStep.name === 'benefits') {\n return await parseJSFToValidate(values, benefitOffersSchema?.fields, {\n isPartialValidation: false,\n });\n }\n\n return {};\n };\n\n async function onSubmit(values: FieldValues) {\n // Prettify values for the current step\n const currentStepName = stepState.currentStep.name;\n if (currentStepName in fieldsMetaRef.current) {\n fieldsMetaRef.current[\n currentStepName as keyof typeof fieldsMetaRef.current\n ] = prettifyFormValues(values, stepFields[currentStepName]);\n }\n\n const parsedValues = await parseFormValues(values);\n refetchCompany();\n switch (stepState.currentStep.name) {\n case 'select_country': {\n setInternalCountryCode(parsedValues.country);\n return Promise.resolve({ data: { countryCode: parsedValues.country } });\n }\n case 'basic_information': {\n const isEmploymentNotLoaded =\n !internalEmploymentId && internalCountryCode;\n const hasChangedCountry =\n internalEmploymentId &&\n internalCountryCode &&\n employment?.country &&\n employment?.country.code !== internalCountryCode;\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: type,\n country_code: internalCountryCode,\n external_id: externalId,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n\n if (response.error) {\n return response;\n }\n\n if (response.data) {\n // @ts-expect-error the types from the response are not matching\n const employmentId = response.data?.data?.employment?.id;\n if (employmentId) {\n setInternalEmploymentId(employmentId);\n await updateContractEligibilityMutationAsync({\n employmentId: employmentId,\n eligible_to_work_in_residing_country: 'citizen',\n employer_or_work_restrictions: false,\n });\n }\n\n return response;\n }\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else if (internalEmploymentId) {\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n external_id: externalId,\n });\n }\n\n return;\n }\n case 'contract_details': {\n const payload: EmploymentFullParams = {\n contract_details: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n };\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId as string,\n external_id: externalId,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...parsedValues,\n });\n }\n }\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n function goTo(step: keyof typeof STEPS) {\n goToStep(step);\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId: internalEmploymentId,\n\n /**\n * Credit risk status of the company, useful to know what to to show in the review step\n * The possible values are:\n * - not_started\n * - ready\n * - in_progress\n * - referred\n * - fail\n * - deposit_required\n * - no_deposit_required\n */\n\n creditRiskStatus: company?.default_legal_entity_credit_risk_status,\n /**\n * Onboarding reserves status for the employment\n * Returns 'deposit_required' if a deposit is required based on onboarding reserves policies\n */\n onboardingReservesStatus: onboardingReservesStatus,\n /**\n * Current state of the form fields for the current step.\n */\n fieldValues,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n /**\n * Loading state indicating if the onboarding schema is being fetched\n */\n isLoading: isLoading,\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n updateBenefitsOffersMutation.isPending ||\n updateContractEligibilityMutation.isPending,\n /**\n * Initial form values\n */\n initialValues,\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: async (\n values: FieldValues,\n ): Promise<ValidationResult | null> => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = await parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n { isPartialValidation: false },\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n { isPartialValidation: false },\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n contractDetailsForm?.fields,\n { isPartialValidation: false },\n );\n return contractDetailsForm?.handleValidation(parsedValues);\n }\n\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n\n /**\n * Function to handle going to a specific step\n * @param step The step to go to.\n * @returns {void}\n */\n goTo,\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n fieldsets: stepFieldsWithFlatFieldsets[stepState.currentStep.name],\n },\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment,\n /**\n * Employment data\n */\n employment,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited, created_awaiting_reserve or created_reserve_paid\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n\n /**\n * let's the user know if the company can invite employees\n * @returns {boolean}\n */\n canInvite,\n };\n};\n","import {\n createContext,\n useContext,\n ReactNode,\n useMemo,\n useCallback,\n useRef,\n RefObject,\n} from 'react';\nimport type { ErrorContextData } from './types';\n\nexport type ErrorContextValue = {\n errorContextRef: RefObject<ErrorContextData>;\n updateContext: (updates: Partial<ErrorContextData>) => void;\n};\n\nexport const ErrorContext = createContext<ErrorContextValue | undefined>(\n undefined,\n);\n\nexport function ErrorContextProvider({ children }: { children: ReactNode }) {\n const errorContextRef = useRef<ErrorContextData>({});\n\n const updateContext = useCallback((updates: Partial<ErrorContextData>) => {\n errorContextRef.current = { ...errorContextRef.current, ...updates };\n }, []);\n\n // Memoize the value object to prevent unnecessary re-renders\n // Note: setContext is stable from useState and doesn't need to be in deps\n const value = useMemo(\n () => ({\n errorContextRef,\n updateContext,\n }),\n [updateContext],\n );\n\n return (\n <ErrorContext.Provider value={value}>{children}</ErrorContext.Provider>\n );\n}\n\nexport const useErrorContext = () => {\n const ctx = useContext(ErrorContext);\n if (!ctx) {\n throw new Error('useErrorContext must be used within ErrorContextProvider');\n }\n return ctx;\n};\n","import { useErrorContext } from '@/src/components/error-handling/ErrorContext';\nimport { ErrorContextData } from '@/src/components/error-handling/types';\nimport { useEffect, useMemo } from 'react';\n\nexport function useErrorReporting(initialContext: ErrorContextData) {\n const { updateContext, errorContextRef } = useErrorContext();\n\n // Set initial context on mount\n useEffect(() => {\n if (initialContext) {\n errorContextRef.current = initialContext;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Clear context on unmount\n useEffect(() => {\n return () => {\n errorContextRef.current = {};\n };\n }, [errorContextRef]);\n\n // Note: setContext and updateContext are stable, don't need to be in deps\n const handlers = useMemo(\n () => ({\n updateErrorContext: (updates: Partial<ErrorContextData>) => {\n updateContext(updates);\n },\n\n clearErrorContext: () => {\n errorContextRef.current = {};\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n return {\n ...handlers,\n /**\n * @internal For unit testing only - we access the errorContext in the error boundary directly\n * Use updateErrorContext() and clearErrorContext() handlers instead.\n */\n errorContext: errorContextRef,\n };\n}\n"],"mappings":"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","names":["useCallback","useEffect","useMemo","useRef","useState","mergeWith","createContext","useContext","useMemo","useCallback","useRef","jsx","ErrorContext","createContext","ErrorContextProvider","children","errorContextRef","useRef","updateContext","useCallback","updates","value","useMemo","__name","useErrorContext","ctx","useContext","useEffect","useMemo","useErrorReporting","initialContext","updateContext","errorContextRef","useErrorContext","useEffect","useMemo","__name","updates","jsx","jsonSchemaToEmployment","stepToFormSchemaMap","getLoadingStates","__name","isLoadingBasicInformationForm","isLoadingContractDetailsForm","isLoadingEmployment","isLoadingBenefitsOffersSchema","isLoadingBenefitOffers","isLoadingCompany","isLoadingCountries","employmentStatus","employmentId","currentStepName","basicInformationFields","contractDetailsFields","initialLoading","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","canInvite","disabledInviteButtonEmploymentStatus","shouldHandleReadOnlyEmployment","isLoading","isNavigatingToReview","useOnboarding","companyId","countryCode","type","options","skipSteps","externalId","onboardingInitialValues","updateErrorContext","useErrorReporting","stepsToUse","STEPS_WITHOUT_SELECT_COUNTRY","STEPS","onStepChange","useCallback","step","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","fieldsMetaRef","useRef","internalEmploymentId","setInternalEmploymentId","useState","internalCountryCode","setInternalCountryCode","employment","refetchEmployment","useEmploymentQuery","benefitOffers","useBenefitOffers","company","refetchCompany","useCompany","isOnboardingReservesEnabled","onboardingReservesStatus","useEmploymentOnboardingReservesStatus","selectCountryForm","useCountriesSchemaField","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","updateBenefitsOffersMutation","useUpdateBenefitsOffers","updateContractEligibilityMutation","useUpsertContractEligibility","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","updateContractEligibilityMutationAsync","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","query","jsonSchemaVersion","mergedFormValues","useJSONSchemaForm","isBasicInformationDetailsEnabled","isContractDetailsEnabled","basicInformationForm","getBasicInformationSchemaVersion","annualGrossSalaryField","annualSalaryFieldPresentation","equityCompensationField","contractDetailsCustomFields","useMemo","props","AnnualGrossSalary","values","field","offerEquity","equityCost","EquityPriceDetails","effectiveContractDetailsJsonSchemaVersion","getContractDetailsSchemaVersion","contractDetailsForm","benefitOffersSchema","useBenefitOffersSchema","initialValuesBenefitOffers","benefitsFormValues","mergeWith","stepFields","stepFieldsWithFlatFieldsets","country","employmentBasicInformation","employmentContractDetails","employmentCountryCode","selectCountryInitialValues","getInitialValues","basicInformationInitialValues","initialValues","contractDetailsInitialValues","benefitsInitialValues","enableAckFields","useEffect","prettifyFormValues","parseFormValues","parseJSFToValidate","onSubmit","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","back","next","goTo"]}
@@ -1,2 +0,0 @@
1
- import{a as t}from"./chunk-VIGKOVHP.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as n}from"react/jsx-runtime";function r({className:a,...o}){return n("label",{"data-slot":"label",className:t("flex items-center gap-2 text-sm leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",a),...o})}e(r,"Label");export{r as a};
2
- //# sourceMappingURL=chunk-EOMVTXER.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ui/label.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Label({ className, ...props }: React.ComponentProps<'label'>) {\n return (\n <label\n data-slot='label'\n className={cn(\n 'flex items-center gap-2 text-sm leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"mappings":"gFAMI,cAAAA,MAAA,oBAFJ,SAASC,EAAM,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAkC,CACrE,OACEH,EAAC,SACC,YAAU,QACV,UAAWI,EACT,gJACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAXSE,EAAAJ,EAAA","names":["jsx","Label","className","props","cn","__name"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/ContractorOnboarding/hooks.tsx","../src/common/api/legal-entities.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { FieldValues } from 'react-hook-form';\nimport omit from 'lodash.omit';\nimport { $TSFixMe, JSFFields } from '@/src/types/remoteFlows';\nimport {\n CreateContractDocument,\n Employment,\n EmploymentCreateParams,\n} from '@/src/client/types.gen';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { ValidationResult } from '@remoteoss/remote-json-schema-form-kit';\nimport {\n useCreateContractorContractDocument,\n useGetContractDocumentSignatureSchema,\n usePostManageContractorSubscriptions,\n useContractorSubscriptionSchemaField,\n useGetShowContractDocument,\n useSignContractDocument,\n useUpdateUKandSaudiFields,\n useGetIR35File,\n useGetContractDocuments,\n useGetEligibilityQuestionnaire,\n usePostCreateEligibilityQuestionnaire,\n usePostManageContractorCorSubscription,\n useDeleteContractorCorSubscription,\n useCountriesSchemaField,\n useContractorOnboardingDetailsSchemaWithCurrencies,\n CONTRACT_PRODUCT_TITLES,\n} from '@/src/flows/ContractorOnboarding/api';\nimport {\n ContractorOnboardingFlowProps,\n ContractorOnboardingHookOptions,\n} from '@/src/flows/ContractorOnboarding/types';\nimport {\n buildSteps,\n calculateProvisionalStartDateDescription,\n reviewStepAllowedEmploymentStatus,\n disabledInviteButtonEmploymentStatus,\n StepKeys,\n} from '@/src/flows/ContractorOnboarding/utils';\nimport {\n useCreateEmployment,\n useJSONSchemaForm,\n useUpdateEmployment,\n} from '@/src/flows/Onboarding/api';\nimport { FlowOptions, JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { createStructuredError, prettifyFormValues } from '@/src/lib/utils';\nimport { JSFFieldset, Meta } from '@/src/types/remoteFlows';\nimport {\n contractorStandardProductIdentifier,\n contractorPlusProductIdentifier,\n corProductIdentifier,\n eorProductIdentifier,\n REMOTE_AI_ERROR_SOURCE,\n} from '@/src/flows/ContractorOnboarding/constants';\nimport {\n buildBasicInformationJsfModify,\n buildContractDetailsJsfModify,\n buildContractPreviewJsfModify,\n} from '@/src/flows/ContractorOnboarding/jsfModify';\nimport { transformAiErrorResponse } from '@/src/flows/ContractorOnboarding/utils';\nimport { AiValidationError } from '@/src/flows/ContractorOnboarding/types';\nimport { useUploadFile } from '@/src/common/api/files';\nimport { dataURLtoFile } from '@/src/lib/files';\nimport { useEmploymentQuery } from '@/src/common/api/employment';\nimport { useDefaultLegalEntity } from '@/src/common/api/legal-entities';\n\ntype useContractorOnboardingProps = Omit<\n ContractorOnboardingFlowProps,\n 'render' | 'options'\n> & {\n options: ContractorOnboardingHookOptions;\n};\n\nconst stepToFormSchemaMap: Record<StepKeys, JSONSchemaFormType | null> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_details: null,\n eligibility_questionnaire: null,\n pricing_plan: null,\n contract_preview: null,\n review: null,\n};\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n};\n\nexport const useContractorOnboarding = ({\n countryCode,\n externalId,\n employmentId,\n skipSteps,\n options,\n initialValues: onboardingInitialValues,\n}: useContractorOnboardingProps) => {\n const excludeProducts = options?.excludeProducts || [];\n\n const onContractReviewedRef = useRef(options?.onContractReviewed);\n\n useEffect(() => {\n onContractReviewedRef.current = options?.onContractReviewed;\n }, [options?.onContractReviewed]);\n\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalContractDocumentId, setInternalContractDocumentId] = useState<\n string | undefined\n >(undefined);\n const fieldsMetaRef = useRef<{\n select_country: Meta;\n basic_information: Meta;\n contract_details: Meta;\n contract_preview: Meta;\n pricing_plan: Meta;\n eligibility_questionnaire: Meta;\n }>({\n select_country: {},\n basic_information: {},\n contract_details: {},\n contract_preview: {},\n pricing_plan: {},\n eligibility_questionnaire: {},\n });\n\n const [selectedProduct, setSelectedProduct] = useState<string | undefined>(\n undefined,\n );\n\n const [includeEligibilityQuestionnaire, setIncludeEligibilityQuestionnaire] =\n useState<boolean>(false);\n\n const [includeContractPreview, setIncludeContractPreview] =\n useState<boolean>(true);\n\n const [pendingNavigationStep, setPendingNavigationStep] =\n useState<StepKeys | null>(null);\n\n const { steps, stepsArray } = useMemo(\n () =>\n buildSteps({\n includeSelectCountry: !skipSteps?.includes('select_country'),\n includeEligibilityQuestionnaire: includeEligibilityQuestionnaire,\n includeContractPreview: includeContractPreview,\n }),\n [includeEligibilityQuestionnaire, includeContractPreview, skipSteps],\n );\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(steps);\n\n useEffect(() => {\n if (pendingNavigationStep) {\n // Now steps have been updated\n goToStep(pendingNavigationStep);\n setPendingNavigationStep(null);\n }\n }, [pendingNavigationStep, goToStep]);\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmploymentQuery({\n employmentId: internalEmploymentId as string,\n queryParams: { exclude_files: true },\n });\n\n const defaultLegalEntity = useDefaultLegalEntity();\n\n const { status: employmentStatus } = employment || {};\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const canInvite =\n employmentStatus &&\n !disabledInviteButtonEmploymentStatus.includes(employmentStatus);\n\n const invitedStatus: 'invited' | 'not_invited' = useMemo(() => {\n const isInvited = employmentStatus === 'invited';\n\n return isInvited ? 'invited' : 'not_invited';\n }, [employmentStatus]);\n\n const createEmploymentMutation = useCreateEmployment();\n const updateEmploymentMutation = useUpdateEmployment(\n internalCountryCode as string,\n options,\n );\n const createContractorContractDocumentMutation =\n useCreateContractorContractDocument();\n const uploadFileMutation = useUploadFile();\n const { mutateAsync: updateUKandSaudiFieldsMutation } =\n useUpdateUKandSaudiFields(\n createContractorContractDocumentMutation,\n uploadFileMutation,\n fieldValues,\n );\n const createEligibilityQuestionnaireMutation =\n usePostCreateEligibilityQuestionnaire();\n const manageContractorCorSubscriptionMutation =\n usePostManageContractorCorSubscription();\n\n const { mutateAsyncOrThrow: updateEmploymentMutationAsync } =\n mutationToPromise(updateEmploymentMutation);\n const signContractDocumentMutation = useSignContractDocument();\n const manageContractorSubscriptionMutation =\n usePostManageContractorSubscriptions();\n const deleteContractorCorSubscriptionMutation =\n useDeleteContractorCorSubscription();\n\n const { mutateAsyncOrThrow: createEmploymentMutationAsync } =\n mutationToPromise(createEmploymentMutation);\n\n const { mutateAsyncOrThrow: createContractorContractDocumentMutationAsync } =\n mutationToPromise(createContractorContractDocumentMutation);\n\n const { mutateAsyncOrThrow: signContractDocumentMutationAsync } =\n mutationToPromise(signContractDocumentMutation);\n\n const { mutateAsyncOrThrow: manageContractorSubscriptionMutationAsync } =\n mutationToPromise(manageContractorSubscriptionMutation);\n\n const { mutateAsyncOrThrow: createEligibilityQuestionnaireMutationAsync } =\n mutationToPromise(createEligibilityQuestionnaireMutation);\n\n const { mutateAsyncOrThrow: manageContractorCorSubscriptionMutationAsync } =\n mutationToPromise(manageContractorCorSubscriptionMutation);\n\n const { mutateAsyncOrThrow: deleteContractorCorSubscriptionMutationAsync } =\n mutationToPromise(deleteContractorCorSubscriptionMutation);\n\n // if the employment is loaded, country code has not been set yet\n // we set the internal country code with the employment country code\n if (employmentId && employment?.country?.code && !internalCountryCode) {\n setInternalCountryCode(employment.country.code);\n }\n\n const {\n selectCountryForm,\n isLoading: isLoadingCountries,\n countries,\n } = useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n });\n\n const selectedCountry = useMemo(() => {\n return countries?.find((country) => country.value === internalCountryCode);\n }, [countries, internalCountryCode]);\n\n const countryName = useMemo(() => {\n return selectedCountry?.label;\n }, [selectedCountry]);\n\n const isPricingPlanEnabled =\n stepState.currentStep.name === 'pricing_plan' ||\n (Boolean(employmentId) && isEmploymentReadOnly);\n\n const {\n form: selectContractorSubscriptionForm,\n isLoading: isLoadingContractorSubscriptions,\n contractorSubscriptions,\n refetch: refetchContractorSubscriptions,\n isEligibilityQuestionnaireBlocked,\n } = useContractorSubscriptionSchemaField(\n internalEmploymentId as string,\n selectedCountry,\n {\n jsonSchemaVersion: options?.jsonSchemaVersion,\n queryOptions: {\n enabled: isPricingPlanEnabled,\n },\n excludeProducts: excludeProducts,\n jsfModify: options?.jsfModify?.pricing_plan,\n },\n );\n\n const hasEligibilityQuestionnaireSubmitted = useMemo(() => {\n return Boolean(\n contractorSubscriptions?.find(\n (subscription) => subscription.product.short_name === 'COR',\n )?.eligibility_questionnaire?.submitted_at,\n );\n }, [contractorSubscriptions]);\n\n useEffect(() => {\n if (hasEligibilityQuestionnaireSubmitted) {\n setIncludeEligibilityQuestionnaire(false);\n return;\n } else if (selectedProduct === corProductIdentifier) {\n setIncludeEligibilityQuestionnaire(true);\n } else {\n setIncludeEligibilityQuestionnaire(false);\n }\n }, [hasEligibilityQuestionnaireSubmitted, selectedProduct]);\n\n useEffect(() => {\n const isCor = employment?.contractor_type === 'cor';\n setIncludeContractPreview(!isCor);\n }, [employment?.contractor_type]);\n\n const eligibilityAnswers = useMemo(() => {\n return contractorSubscriptions?.find(\n (subscription) => subscription.product.short_name === 'COR',\n )?.eligibility_questionnaire?.responses;\n }, [contractorSubscriptions]);\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'contractor_basic_information';\n const employmentKey = jsonSchemaToEmployment[formType] as keyof Employment;\n const serverEmploymentData = (employment?.[employmentKey] || {}) as Record<\n string,\n unknown\n >;\n\n const useJSONSchema = ({\n form,\n options: jsonSchemaOptions = {},\n query = {},\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n jsonSchemaVersion?: FlowOptions['jsonSchemaVersion'];\n };\n query?: Record<string, string>;\n }) => {\n const hasUserEnteredAnyValues = Object.keys(fieldValues).length > 0;\n // when you write on the fields, the values are stored in the fieldValues state\n // when values are stored in the stepState is when the user has navigated to the step\n // and then we have the values from the server and the onboardingInitialValues that the user can inject,\n const mergedFormValues = hasUserEnteredAnyValues\n ? {\n ...onboardingInitialValues,\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : {\n ...onboardingInitialValues,\n ...serverEmploymentData,\n };\n\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues: mergedFormValues,\n query,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n });\n };\n\n const isBasicInformationDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n Boolean(employmentId)),\n );\n\n const isIR35FileEnabled = Boolean(\n internalCountryCode === 'GBR' &&\n employmentId &&\n stepState.currentStep.name === 'basic_information',\n );\n\n const { data: ir35File, isLoading: isLoadingIR35File } = useGetIR35File(\n employmentId as string,\n {\n enabled: isIR35FileEnabled,\n },\n );\n\n const { data: contractDocuments, isLoading: isLoadingContractDocuments } =\n useGetContractDocuments(internalEmploymentId as string, {\n enabled: Boolean(internalEmploymentId),\n });\n\n useEffect(() => {\n if (\n contractDocuments &&\n contractDocuments.length > 0 &&\n !internalContractDocumentId\n ) {\n setInternalContractDocumentId(contractDocuments[0].id);\n }\n }, [contractDocuments, internalContractDocumentId]);\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'contractor_basic_information',\n options: {\n jsfModify: buildBasicInformationJsfModify(\n internalCountryCode as string,\n countryName,\n options,\n ),\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n },\n });\n\n const descriptionProvisionalStartDate = useMemo(() => {\n return calculateProvisionalStartDateDescription(\n employment?.basic_information?.provisional_start_date as string,\n fieldValues?.service_duration?.provisional_start_date as string,\n );\n }, [\n employment?.basic_information?.provisional_start_date,\n fieldValues?.service_duration?.provisional_start_date,\n ]);\n\n /**\n * When the user selects COR, the data isn't saved yet in the BE\n * We need to use the internalState to know what has happened\n */\n const selectedPricingPlan = useMemo(() => {\n const subscriptions = {\n standard: contractorStandardProductIdentifier,\n plus: contractorPlusProductIdentifier,\n cor: corProductIdentifier,\n };\n\n // HIGHEST PRIORITY: Current form value (user is actively selecting)\n if (fieldValues.subscription) {\n return fieldValues.subscription;\n }\n\n // SECOND: Previously submitted value in this session\n const subscription = stepState.values?.pricing_plan?.subscription;\n if (subscription && !isEligibilityQuestionnaireBlocked) {\n return subscription;\n }\n\n // THIRD: Backend state (eligibility submitted or employment contractor_type)\n if (\n hasEligibilityQuestionnaireSubmitted &&\n !isEligibilityQuestionnaireBlocked\n ) {\n return corProductIdentifier;\n }\n\n // Fourth: If the eligibility questionnaire is blocked and has been submitted, return the standard product\n if (\n isEligibilityQuestionnaireBlocked &&\n hasEligibilityQuestionnaireSubmitted\n ) {\n return contractorStandardProductIdentifier;\n }\n\n // FALLBACK: Employment contractor_type or default\n return (\n subscriptions[\n employment?.contractor_type as keyof typeof subscriptions\n ] || contractorStandardProductIdentifier\n );\n }, [\n fieldValues,\n stepState.values,\n hasEligibilityQuestionnaireSubmitted,\n employment?.contractor_type,\n isEligibilityQuestionnaireBlocked,\n ]);\n\n useEffect(() => {\n if (selectedPricingPlan && selectedPricingPlan !== selectedProduct) {\n setSelectedProduct(selectedPricingPlan);\n }\n }, [selectedPricingPlan, selectedProduct]);\n\n const eligibilityFields = useMemo(() => {\n return {\n ...eligibilityAnswers,\n ...onboardingInitialValues,\n ...stepState.values?.eligibility_questionnaire,\n ...fieldValues,\n };\n }, [\n eligibilityAnswers,\n onboardingInitialValues,\n stepState.values?.eligibility_questionnaire,\n fieldValues,\n ]);\n\n const isEligibilityQuestionnaireEnabled = useMemo(() => {\n return (\n (selectedPricingPlan === corProductIdentifier &&\n stepState.currentStep.name === 'eligibility_questionnaire') ||\n (Boolean(employmentId) &&\n isEmploymentReadOnly &&\n selectedPricingPlan === corProductIdentifier)\n );\n }, [\n selectedPricingPlan,\n stepState.currentStep.name,\n employmentId,\n isEmploymentReadOnly,\n ]);\n\n const {\n data: eligibilityQuestionnaireForm,\n isLoading: isLoadingEligibilityQuestionnaire,\n } = useGetEligibilityQuestionnaire({\n options: {\n queryOptions: {\n enabled: isEligibilityQuestionnaireEnabled,\n },\n jsfModify: options?.jsfModify?.eligibility_questionnaire,\n },\n fieldValues: eligibilityFields,\n });\n\n const isContractorOnboardingDetailsEnabled = Boolean(\n (internalCountryCode &&\n stepState.currentStep.name === 'contract_details') ||\n isEmploymentReadOnly,\n );\n\n const {\n data: contractorOnboardingDetailsForm,\n isLoading: isLoadingContractorOnboardingDetailsForm,\n } = useContractorOnboardingDetailsSchemaWithCurrencies({\n countryCode: internalCountryCode as string,\n fieldValues: fieldValues,\n employmentId: internalEmploymentId as string,\n options: {\n queryOptions: {\n enabled: isContractorOnboardingDetailsEnabled,\n },\n jsfModify: buildContractDetailsJsfModify(\n options?.jsfModify?.contract_details,\n descriptionProvisionalStartDate,\n selectedPricingPlan,\n fieldValues,\n selectedPricingPlan === corProductIdentifier,\n ),\n },\n });\n\n const isSignatureSchemaEnabled = useMemo(() => {\n return (\n stepState.currentStep.name === 'contract_preview' ||\n (Boolean(employmentId) && isEmploymentReadOnly)\n );\n }, [stepState.currentStep.name, employmentId, isEmploymentReadOnly]);\n\n const { data: signatureSchemaForm } = useGetContractDocumentSignatureSchema({\n fieldValues: fieldValues,\n options: {\n queryOptions: {\n enabled: isSignatureSchemaEnabled,\n },\n jsfModify: buildContractPreviewJsfModify(options, fieldValues),\n },\n });\n\n const { data: documentPreviewPdf, isLoading: isLoadingDocumentPreviewForm } =\n useGetShowContractDocument({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n options: {\n queryOptions: {\n enabled: Boolean(internalContractDocumentId),\n },\n },\n });\n\n const stepFields: Record<StepKeys, JSFFields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n pricing_plan: selectContractorSubscriptionForm?.fields || [],\n eligibility_questionnaire: eligibilityQuestionnaireForm?.fields || [],\n contract_details: contractorOnboardingDetailsForm?.fields || [],\n contract_preview: signatureSchemaForm?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n selectContractorSubscriptionForm?.fields,\n contractorOnboardingDetailsForm?.fields,\n signatureSchemaForm?.fields,\n eligibilityQuestionnaireForm?.fields,\n ],\n );\n\n const stepFieldsWithFlatFieldsets: Record<\n StepKeys,\n JSFFieldset | null | undefined\n > = {\n select_country: null,\n basic_information: basicInformationForm?.meta['x-jsf-fieldsets'],\n pricing_plan: null,\n contract_details: contractorOnboardingDetailsForm?.meta['x-jsf-fieldsets'],\n eligibility_questionnaire: null,\n contract_preview: null,\n review: null,\n };\n\n const {\n country,\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n } = employment || {};\n\n const employmentCountryCode = country?.code;\n\n const selectCountryInitialValues = useMemo(\n () =>\n getInitialValues(stepFields.select_country, {\n country: internalCountryCode || employmentCountryCode || '',\n }),\n [stepFields.select_country, internalCountryCode, employmentCountryCode],\n );\n\n // memoize file conversion to avoid re-converting the file on every render\n // noticed performance issues when not doing memoizing individually\n const convertedIr35File = useMemo(() => {\n if (!ir35File?.content) return null;\n return dataURLtoFile(ir35File.content as unknown as string, ir35File.name);\n }, [ir35File?.content, ir35File?.name]);\n\n const basicInformationInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentBasicInformation,\n ir35: employment?.contract_details?.ir_35,\n nationality_status: employment?.contract_details?.nationality,\n ...(convertedIr35File && {\n ir35_sds_file: [convertedIr35File],\n }),\n };\n\n return getInitialValues(stepFields.basic_information, initialValues);\n }, [\n onboardingInitialValues,\n employmentBasicInformation,\n employment?.contract_details?.ir_35,\n employment?.contract_details?.nationality,\n convertedIr35File,\n stepFields.basic_information,\n ]);\n\n const contractDetailsInitialValues = useMemo(() => {\n const hardcodedValues = {\n service_duration: {\n provisional_start_date:\n employmentBasicInformation.provisional_start_date,\n },\n };\n const initialValues = {\n ...hardcodedValues,\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_details, initialValues);\n }, [\n stepFields.contract_details,\n employmentContractDetails,\n onboardingInitialValues,\n employmentBasicInformation,\n ]);\n\n const contractPreviewInitialValues = useMemo(() => {\n const signature = documentPreviewPdf?.contract_document?.signatories?.find(\n (signatory) => signatory.type === 'company',\n );\n const initialValues = {\n ...onboardingInitialValues,\n signature: signature?.signature,\n };\n\n return getInitialValues(stepFields.contract_preview, initialValues);\n }, [\n stepFields.contract_preview,\n onboardingInitialValues,\n documentPreviewPdf,\n ]);\n\n const pricingPlanInitialValues = useMemo(() => {\n const preselectedPricingPlan = {\n subscription: selectedPricingPlan,\n };\n const initialValues = {\n ...preselectedPricingPlan,\n ...onboardingInitialValues,\n };\n\n return getInitialValues(stepFields.pricing_plan, initialValues);\n }, [stepFields.pricing_plan, onboardingInitialValues, selectedPricingPlan]);\n\n const eligibilityQuestionnaireInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...eligibilityAnswers,\n };\n return getInitialValues(\n stepFields.eligibility_questionnaire,\n initialValues,\n );\n }, [\n stepFields.eligibility_questionnaire,\n onboardingInitialValues,\n eligibilityAnswers,\n ]);\n\n const initialValues = useMemo(() => {\n return {\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n contract_preview: contractPreviewInitialValues,\n pricing_plan: pricingPlanInitialValues,\n eligibility_questionnaire: eligibilityQuestionnaireInitialValues,\n };\n }, [\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n contractPreviewInitialValues,\n pricingPlanInitialValues,\n eligibilityQuestionnaireInitialValues,\n ]);\n\n const shouldHandleReadOnlyEmployment = Boolean(\n employmentId &&\n isEmploymentReadOnly &&\n stepState.currentStep.name !== 'review',\n );\n\n const initialLoading =\n isLoadingCountries ||\n isLoadingBasicInformationForm ||\n isLoadingEmployment ||\n isLoadingContractorOnboardingDetailsForm ||\n isLoadingContractorSubscriptions ||\n isLoadingDocumentPreviewForm ||\n isLoadingIR35File ||\n isLoadingContractDocuments ||\n isLoadingEligibilityQuestionnaire;\n\n const isNavigatingToReview = useMemo(() => {\n const isCor = employment?.contractor_type === 'cor';\n const hasContractPreviewFields =\n isCor || stepFields.contract_preview.length > 0;\n\n return Boolean(\n shouldHandleReadOnlyEmployment &&\n !initialLoading &&\n Boolean(internalContractDocumentId) &&\n stepFields.basic_information.length > 0 &&\n stepFields.contract_details.length > 0 &&\n hasContractPreviewFields,\n );\n }, [\n shouldHandleReadOnlyEmployment,\n initialLoading,\n internalContractDocumentId,\n stepFields.basic_information.length,\n stepFields.contract_details.length,\n stepFields.contract_preview.length,\n employment?.contractor_type,\n ]);\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n ),\n contract_preview: prettifyFormValues(\n contractPreviewInitialValues,\n stepFields.contract_preview,\n ),\n pricing_plan: prettifyFormValues(\n pricingPlanInitialValues,\n stepFields.pricing_plan,\n ),\n eligibility_questionnaire: prettifyFormValues(\n eligibilityQuestionnaireInitialValues,\n stepFields.eligibility_questionnaire,\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n contract_preview: contractPreviewInitialValues,\n pricing_plan: pricingPlanInitialValues,\n eligibility_questionnaire: eligibilityQuestionnaireInitialValues,\n review: {},\n });\n goToStep('review');\n }\n }, [\n isNavigatingToReview,\n goToStep,\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n setStepValues,\n stepFields.select_country,\n stepFields.basic_information,\n stepFields.contract_details,\n stepFields.pricing_plan,\n pricingPlanInitialValues,\n stepFields.contract_preview,\n contractPreviewInitialValues,\n stepFields.eligibility_questionnaire,\n eligibilityQuestionnaireInitialValues,\n ]);\n\n const goTo = (step: StepKeys) => {\n goToStep(step);\n };\n\n const parseFormValues = async (values: FieldValues) => {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return await parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return await parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n return await parseJSFToValidate(values, signatureSchemaForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n selectContractorSubscriptionForm &&\n stepState.currentStep.name === 'pricing_plan'\n ) {\n return await parseJSFToValidate(\n values,\n selectContractorSubscriptionForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n eligibilityQuestionnaireForm &&\n stepState.currentStep.name === 'eligibility_questionnaire'\n ) {\n return await parseJSFToValidate(\n values,\n eligibilityQuestionnaireForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n return {};\n };\n\n /**\n * Extracts AI validation error from the error response\n * @param error - The error object from the API call\n * @returns The AI validation error if found, null otherwise\n */\n const extractAiValidationError = (\n error: $TSFixMe,\n ): AiValidationError | null => {\n const errorData = error?.rawError?.error?.errors?.services_and_deliverables;\n if (errorData?.source === REMOTE_AI_ERROR_SOURCE) {\n return {\n error: errorData.error,\n source: errorData.source,\n skippable: errorData.skippable,\n };\n }\n return null;\n };\n\n async function onSubmit(values: FieldValues) {\n const currentStepName = stepState.currentStep.name;\n if (currentStepName in fieldsMetaRef.current) {\n fieldsMetaRef.current[\n currentStepName as keyof typeof fieldsMetaRef.current\n ] = prettifyFormValues(values, stepFields[currentStepName]);\n }\n const parsedValues = await parseFormValues(values);\n switch (stepState.currentStep.name) {\n case 'select_country': {\n setInternalCountryCode(parsedValues.country);\n return Promise.resolve({ data: { countryCode: parsedValues.country } });\n }\n case 'basic_information': {\n const isEmploymentNotLoaded =\n !internalEmploymentId && internalCountryCode;\n const hasChangedCountry =\n internalEmploymentId &&\n internalCountryCode &&\n employment?.country &&\n employment?.country.code !== internalCountryCode;\n\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const basicInformationParsedValues = omit(\n parsedValues,\n 'nationality_status',\n 'ir35',\n 'ir35_sds_file',\n );\n const basicInformationPayload: EmploymentCreateParams = {\n basic_information: basicInformationParsedValues,\n type: 'contractor',\n country_code: internalCountryCode,\n external_id: externalId,\n };\n const response = await createEmploymentMutationAsync(\n basicInformationPayload,\n );\n const employmentId = response?.data?.employment?.id;\n if (!employmentId) {\n throw createStructuredError('Employment ID not found');\n }\n\n await updateUKandSaudiFieldsMutation({\n employmentId: employmentId as string,\n });\n\n // Only update state (triggers queries with fully consistent backend state) if not caused a bug\n // if one of the updateUKandSaudiFieldsMutation fails with a 422 for example\n setInternalEmploymentId(employmentId);\n\n return response;\n } else if (internalEmploymentId) {\n const basicInformationParsedValues = omit(\n parsedValues,\n 'nationality_status',\n 'ir35',\n 'ir35_sds_file',\n );\n\n await updateUKandSaudiFieldsMutation({\n employmentId: internalEmploymentId,\n });\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: basicInformationParsedValues,\n });\n }\n\n return;\n }\n case 'contract_details': {\n const shouldSkipAiChecks =\n fieldValues.services_and_deliverables_error_skippable === true;\n const payload: CreateContractDocument = {\n contract_document: parsedValues,\n skip_ai_checks: shouldSkipAiChecks,\n };\n\n try {\n const response = await createContractorContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n payload,\n });\n const contractDocumentId = response?.data?.contract_document?.id;\n if (!contractDocumentId) {\n throw createStructuredError('Contract document ID not found');\n }\n setInternalContractDocumentId(contractDocumentId);\n\n return response;\n } catch (error) {\n const aiError = extractAiValidationError(error);\n if (aiError) {\n const isContractorOfRecord =\n selectedPricingPlan === corProductIdentifier;\n setFieldValues({\n ...values,\n services_and_deliverables_ai_warning:\n transformAiErrorResponse(isContractorOfRecord),\n services_and_deliverables_error_skippable: aiError.skippable,\n });\n }\n\n throw error;\n }\n }\n\n case 'contract_preview': {\n const response = await signContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n payload: {\n signature: parsedValues.signature,\n },\n });\n return response;\n }\n case 'pricing_plan': {\n const blockedProductsEligibility = [\n corProductIdentifier,\n contractorPlusProductIdentifier,\n ];\n\n if (\n isEligibilityQuestionnaireBlocked &&\n blockedProductsEligibility.includes(values.subscription)\n ) {\n throw createStructuredError(\n `This individual is not eligible for ${\n CONTRACT_PRODUCT_TITLES[\n values.subscription as keyof typeof CONTRACT_PRODUCT_TITLES\n ]\n }.`,\n );\n }\n // Handle EOR selection (from merged options)\n if (values.subscription === eorProductIdentifier) {\n // EOR selection - no API call needed at this step\n return Promise.resolve({\n data: {\n subscription: values.subscription,\n },\n });\n }\n\n if (\n hasEligibilityQuestionnaireSubmitted &&\n values.subscription !== corProductIdentifier\n ) {\n try {\n await deleteContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n await refetchContractorSubscriptions();\n } catch (error) {\n if ((error as $TSFixMe)?.response?.status !== 404) {\n throw error;\n }\n // Still refetch to update the UI state\n await refetchContractorSubscriptions();\n }\n }\n\n if (values.subscription == contractorStandardProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'downgrade',\n },\n });\n } else if (values.subscription == contractorPlusProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'upgrade',\n },\n });\n } else if (values.subscription == corProductIdentifier) {\n if (\n hasEligibilityQuestionnaireSubmitted &&\n employment?.contractor_type !== 'cor'\n ) {\n return manageContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n } else {\n return Promise.resolve({\n data: { subscription: values.subscription },\n });\n }\n }\n\n throw createStructuredError('invalid selection');\n }\n\n case 'eligibility_questionnaire': {\n try {\n const response = await createEligibilityQuestionnaireMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: parsedValues,\n });\n\n const isEligibilityQuestionnaireBlocked = response?.data?.is_blocking;\n\n if (isEligibilityQuestionnaireBlocked) {\n setIncludeEligibilityQuestionnaire(false);\n setPendingNavigationStep('pricing_plan');\n throw createStructuredError(\n 'This individual is not eligible for Contractor of Record.',\n );\n }\n\n return await manageContractorCorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n });\n } finally {\n // Always refetch to keep state in sync, even on error\n await refetchContractorSubscriptions();\n }\n }\n\n default: {\n throw createStructuredError('Invalid step state');\n }\n }\n }\n\n const markContractAsReviewed = () => {\n // Notify parent to sync form state\n onContractReviewedRef.current?.();\n };\n\n const handleNextStep = () => {\n if (internalEmploymentId) {\n refetchEmployment();\n }\n nextStep();\n };\n\n const isLoading = initialLoading || shouldHandleReadOnlyEmployment;\n\n return {\n /**\n * Loading state indicating if the flow is loading data\n */\n isLoading,\n\n /**\n * Current state of the form fields for the current step.\n */\n fieldValues,\n\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to mark the contract as reviewed\n * @param values - New form values to check\n * @returns {boolean}\n */\n markContractAsReviewed,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back: previousStep,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next: handleNextStep,\n\n /**\n * Function to handle going to a specific step\n * @param step The step to go to.\n * @returns {void}\n */\n goTo: goTo,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n fieldsets: stepFieldsWithFlatFieldsets[stepState.currentStep.name],\n },\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Indicates whether AI validation errors can be skipped (user can continue at their own risk).\n * True when there's a skippable AI validation error on services_and_deliverables field.\n * @returns {boolean}\n */\n canSkipAiValidation:\n fieldValues.services_and_deliverables_error_skippable === true,\n\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: async (\n values: FieldValues,\n ): Promise<ValidationResult | null> => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n { isPartialValidation: false },\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n { isPartialValidation: false },\n );\n return contractorOnboardingDetailsForm?.handleValidation(parsedValues);\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n signatureSchemaForm?.fields,\n { isPartialValidation: true },\n );\n return signatureSchemaForm?.handleValidation(parsedValues);\n }\n\n if (\n selectContractorSubscriptionForm &&\n stepState.currentStep.name === 'pricing_plan'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n selectContractorSubscriptionForm?.fields,\n { isPartialValidation: false },\n );\n return selectContractorSubscriptionForm?.handleValidation(parsedValues);\n }\n\n if (\n eligibilityQuestionnaireForm &&\n stepState.currentStep.name === 'eligibility_questionnaire'\n ) {\n const parsedValues = await parseJSFToValidate(\n values,\n eligibilityQuestionnaireForm?.fields,\n { isPartialValidation: false },\n );\n return eligibilityQuestionnaireForm?.handleValidation(parsedValues);\n }\n\n return null;\n },\n\n /**\n * Initial form values\n */\n initialValues,\n\n /**\n * Employment id\n */\n employmentId: internalEmploymentId,\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment: refetchEmployment,\n\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n createContractorContractDocumentMutation.isPending ||\n signContractDocumentMutation.isPending ||\n manageContractorSubscriptionMutation.isPending ||\n uploadFileMutation.isPending ||\n createEligibilityQuestionnaireMutation.isPending ||\n manageContractorCorSubscriptionMutation.isPending ||\n deleteContractorCorSubscriptionMutation.isPending,\n\n /**\n * Document preview PDF data\n */\n documentPreviewPdf,\n\n /**\n * let's the user know if the company can invite employees\n * @returns {boolean}\n */\n canInvite,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n /**\n * let's the user know if the employment is invited or not\n * @returns {'invited' | 'not_invited'}\n */\n invitedStatus,\n\n /**\n * Employment data\n * @returns {Employment}\n */\n employment,\n\n /**\n * Default legal entity\n * @returns {CompanyLegalEntity}\n */\n defaultLegalEntity,\n /**\n * Steps array\n * @returns {Array<{name: string, index: number, label: string}>}\n */\n steps: stepsArray,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { getIndexCompanyLegalEntities } from '@/src/client';\nimport { Client } from '@/src/client/client';\nimport { useClient } from '@/src/context';\nimport { useIdentity } from '@/src/common/api/identity';\nimport { hasCompany } from '@/src/common/api/companies';\n\n/**\n * Hook to get the legal entities for a company\n * @param companyId - The company ID\n * @returns The legal entities\n */\nexport const useLegalEntities = () => {\n const { client } = useClient();\n const { data: identity } = useIdentity();\n const companyId = hasCompany(identity) ? (identity?.company?.id ?? '') : '';\n\n return useQuery({\n queryKey: ['legal-entities', companyId],\n queryFn: () =>\n getIndexCompanyLegalEntities({\n client: client as Client,\n path: {\n company_id: companyId,\n },\n query: {\n page_size: 100,\n },\n }),\n select: (data) => data.data?.data?.legal_entities,\n enabled: !!companyId,\n });\n};\n\nexport const useDefaultLegalEntity = () => {\n const { data: legalEntities } = useLegalEntities();\n return legalEntities?.find((legalEntity) => legalEntity.is_default);\n};\n"],"mappings":"qxBAAA,OAAS,aAAAA,EAAW,WAAAC,EAAS,UAAAC,GAAQ,YAAAC,MAAgB,QAErD,OAAOC,OAAU,cCFjB,OAAS,YAAAC,OAAgB,wBAYlB,IAAMC,GAAmBC,EAAA,IAAM,CACpC,GAAM,CAAE,OAAAC,CAAO,EAAIC,GAAU,EACvB,CAAE,KAAMC,CAAS,EAAIC,GAAY,EACjCC,EAAYC,GAAWH,CAAQ,EAAKA,GAAU,SAAS,IAAM,GAAM,GAEzE,OAAOI,GAAS,CACd,SAAU,CAAC,iBAAkBF,CAAS,EACtC,QAASL,EAAA,IACPQ,GAA6B,CAC3B,OAAQP,EACR,KAAM,CACJ,WAAYI,CACd,EACA,MAAO,CACL,UAAW,GACb,CACF,CAAC,EATM,WAUT,OAAQL,EAACS,GAASA,EAAK,MAAM,MAAM,eAA3B,UACR,QAAS,CAAC,CAACJ,CACb,CAAC,CACH,EApBgC,oBAsBnBK,GAAwBV,EAAA,IAAM,CACzC,GAAM,CAAE,KAAMW,CAAc,EAAIZ,GAAiB,EACjD,OAAOY,GAAe,KAAMC,GAAgBA,EAAY,UAAU,CACpE,EAHqC,yBD6CrC,IAAMC,GAAmE,CACvE,eAAgB,KAChB,kBAAmB,+BACnB,iBAAkB,KAClB,0BAA2B,KAC3B,aAAc,KACd,iBAAkB,KAClB,OAAQ,IACV,EAEMC,GAEF,CACF,6BAA8B,mBAChC,EAEaC,GAA0BC,EAAA,CAAC,CACtC,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,EACA,cAAeC,CACjB,IAAoC,CAClC,IAAMC,GAAkBF,GAAS,iBAAmB,CAAC,EAE/CG,GAAwBC,GAAOJ,GAAS,kBAAkB,EAEhEK,EAAU,IAAM,CACdF,GAAsB,QAAUH,GAAS,kBAC3C,EAAG,CAACA,GAAS,kBAAkB,CAAC,EAEhC,GAAM,CAACM,EAAqBC,EAAsB,EAAIC,EACpDZ,GAAe,IACjB,EACM,CAACa,EAAsBC,EAAuB,EAAIF,EAEtDV,CAAY,EACR,CAACa,EAA4BC,EAA6B,EAAIJ,EAElE,MAAS,EACLK,EAAgBT,GAOnB,CACD,eAAgB,CAAC,EACjB,kBAAmB,CAAC,EACpB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,0BAA2B,CAAC,CAC9B,CAAC,EAEK,CAACU,EAAiBC,EAAkB,EAAIP,EAC5C,MACF,EAEM,CAACQ,GAAiCC,CAAkC,EACxET,EAAkB,EAAK,EAEnB,CAACU,GAAwBC,EAAyB,EACtDX,EAAkB,EAAI,EAElB,CAACY,GAAuBC,EAAwB,EACpDb,EAA0B,IAAI,EAE1B,CAAE,MAAAc,GAAO,WAAAC,EAAW,EAAIC,EAC5B,IACEC,GAAW,CACT,qBAAsB,CAAC1B,GAAW,SAAS,gBAAgB,EAC3D,gCAAiCiB,GACjC,uBAAwBE,EAC1B,CAAC,EACH,CAACF,GAAiCE,GAAwBnB,CAAS,CACrE,EAEM,CACJ,YAAA2B,EACA,UAAAC,EACA,eAAAC,GACA,aAAAC,GACA,SAAAC,GACA,SAAAC,EACA,cAAAC,EACF,EAAIC,GAAaX,EAAK,EAEtBjB,EAAU,IAAM,CACVe,KAEFW,EAASX,EAAqB,EAC9BC,GAAyB,IAAI,EAEjC,EAAG,CAACD,GAAuBW,CAAQ,CAAC,EAEpC,GAAM,CACJ,KAAMG,EACN,UAAWC,GACX,QAASC,EACX,EAAIC,GAAmB,CACrB,aAAc5B,EACd,YAAa,CAAE,cAAe,EAAK,CACrC,CAAC,EAEK6B,GAAqBC,GAAsB,EAE3C,CAAE,OAAQC,CAAiB,EAAIN,GAAc,CAAC,EAE9CO,EACJD,GACAE,GAAkC,SAASF,CAAgB,EAEvDG,GACJH,GACA,CAACI,GAAqC,SAASJ,CAAgB,EAE3DK,GAA2CrB,EAAQ,IACrCgB,IAAqB,UAEpB,UAAY,cAC9B,CAACA,CAAgB,CAAC,EAEfM,GAA2BC,GAAoB,EAC/CC,GAA2BC,GAC/B3C,EACAN,CACF,EACMkD,GACJC,GAAoC,EAChCC,GAAqBC,GAAc,EACnC,CAAE,YAAaC,EAA+B,EAClDC,GACEL,GACAE,GACA1B,CACF,EACI8B,GACJC,GAAsC,EAClCC,GACJC,GAAuC,EAEnC,CAAE,mBAAoBC,EAA8B,EACxDC,EAAkBb,EAAwB,EACtCc,GAA+BC,GAAwB,EACvDC,GACJC,GAAqC,EACjCC,GACJC,GAAmC,EAE/B,CAAE,mBAAoBC,EAA8B,EACxDP,EAAkBf,EAAwB,EAEtC,CAAE,mBAAoBuB,EAA8C,EACxER,EAAkBX,EAAwC,EAEtD,CAAE,mBAAoBoB,EAAkC,EAC5DT,EAAkBC,EAA4B,EAE1C,CAAE,mBAAoBS,EAA0C,EACpEV,EAAkBG,EAAoC,EAElD,CAAE,mBAAoBQ,EAA4C,EACtEX,EAAkBL,EAAsC,EAEpD,CAAE,mBAAoBiB,EAA6C,EACvEZ,EAAkBH,EAAuC,EAErD,CAAE,mBAAoBgB,EAA6C,EACvEb,EAAkBK,EAAuC,EAIvDpE,GAAgBoC,GAAY,SAAS,MAAQ,CAAC5B,GAChDC,GAAuB2B,EAAW,QAAQ,IAAI,EAGhD,GAAM,CACJ,kBAAAyC,EACA,UAAWC,GACX,UAAAC,EACF,EAAIC,GAAwB,CAC1B,UAAW9E,GAAS,WAAW,cACjC,CAAC,EAEK+E,GAAkBvD,EAAQ,IACvBqD,IAAW,KAAMG,GAAYA,EAAQ,QAAU1E,CAAmB,EACxE,CAACuE,GAAWvE,CAAmB,CAAC,EAE7B2E,GAAczD,EAAQ,IACnBuD,IAAiB,MACvB,CAACA,EAAe,CAAC,EAEdG,GACJvD,EAAU,YAAY,OAAS,gBAC9B,EAAQ7B,GAAiB2C,EAEtB,CACJ,KAAM0C,EACN,UAAWC,GACX,wBAAAC,EACA,QAASC,GACT,kCAAAC,CACF,EAAIC,GACF/E,EACAsE,GACA,CACE,kBAAmB/E,GAAS,kBAC5B,aAAc,CACZ,QAASkF,EACX,EACA,gBAAiBhF,GACjB,UAAWF,GAAS,WAAW,YACjC,CACF,EAEMyF,EAAuCjE,EAAQ,IAC5C,EACL6D,GAAyB,KACtBK,GAAiBA,EAAa,QAAQ,aAAe,KACxD,GAAG,2BAA2B,aAE/B,CAACL,CAAuB,CAAC,EAE5BhF,EAAU,IAAM,CACd,GAAIoF,EAAsC,CACxCxE,EAAmC,EAAK,EACxC,MACF,MACEA,EADSH,IAAoB6E,CACU,CAI3C,EAAG,CAACF,EAAsC3E,CAAe,CAAC,EAE1DT,EAAU,IAAM,CACd,IAAMuF,EAAQ1D,GAAY,kBAAoB,MAC9Cf,GAA0B,CAACyE,CAAK,CAClC,EAAG,CAAC1D,GAAY,eAAe,CAAC,EAEhC,IAAM2D,GAAqBrE,EAAQ,IAC1B6D,GAAyB,KAC7BK,GAAiBA,EAAa,QAAQ,aAAe,KACxD,GAAG,2BAA2B,UAC7B,CAACL,CAAuB,CAAC,EAEtBS,GACJtG,GAAoBmC,EAAU,YAAY,IAAI,GAC9C,+BACIoE,GAAgBtG,GAAuBqG,EAAQ,EAC/CE,GAAwB9D,IAAa6D,EAAa,GAAK,CAAC,EAKxDE,GAAgBtG,EAAA,CAAC,CACrB,KAAAuG,EACA,QAASC,EAAoB,CAAC,EAC9B,MAAAC,EAAQ,CAAC,CACX,IAQM,CAKJ,IAAMC,EAJ0B,OAAO,KAAK3E,CAAW,EAAE,OAAS,EAK9D,CACE,GAAGzB,EACH,GAAG0B,EAAU,SAASA,EAAU,YAAY,IAAI,EAChD,GAAGD,CACL,EACA,CACE,GAAGzB,EACH,GAAG+F,EACL,EAEJ,OAAOM,GAAkB,CACvB,YAAahG,EACb,KAAM4F,EACN,YAAaG,EACb,MAAAD,EACA,QAAS,CACP,GAAGD,EACH,aAAc,CACZ,QAASA,EAAkB,cAAc,SAAW,EACtD,CACF,CACF,CAAC,CACH,EAxCsB,iBA0ChBI,GAAmC,GACvCjG,IACGqB,EAAU,YAAY,OAAS,qBACtB7B,IAGR0G,GAAoB,GACxBlG,IAAwB,OACtBR,GACA6B,EAAU,YAAY,OAAS,qBAG7B,CAAE,KAAM8E,EAAU,UAAWC,EAAkB,EAAIC,GACvD7G,EACA,CACE,QAAS0G,EACX,CACF,EAEM,CAAE,KAAMI,GAAmB,UAAWC,EAA2B,EACrEC,GAAwBrG,EAAgC,CACtD,QAAS,EAAQA,CACnB,CAAC,EAEHJ,EAAU,IAAM,CAEZuG,IACAA,GAAkB,OAAS,GAC3B,CAACjG,GAEDC,GAA8BgG,GAAkB,CAAC,EAAE,EAAE,CAEzD,EAAG,CAACA,GAAmBjG,CAA0B,CAAC,EAElD,GAAM,CACJ,KAAMoG,EACN,UAAWC,EACb,EAAIf,GAAc,CAChB,KAAM,+BACN,QAAS,CACP,UAAWgB,GACT3G,EACA2E,GACAjF,CACF,EACA,aAAc,CACZ,QAASuG,EACX,CACF,CACF,CAAC,EAEKW,GAAkC1F,EAAQ,IACvC2F,GACLjF,GAAY,mBAAmB,uBAC/BR,GAAa,kBAAkB,sBACjC,EACC,CACDQ,GAAY,mBAAmB,uBAC/BR,GAAa,kBAAkB,sBACjC,CAAC,EAMK0F,EAAsB5F,EAAQ,IAAM,CACxC,IAAM6F,EAAgB,CACpB,SAAUC,EACV,KAAMC,GACN,IAAK5B,CACP,EAGA,GAAIjE,EAAY,aACd,OAAOA,EAAY,aAIrB,IAAMgE,EAAe/D,EAAU,QAAQ,cAAc,aACrD,OAAI+D,GAAgB,CAACH,EACZG,EAKPD,GACA,CAACF,EAEMI,EAKPJ,GACAE,EAEO6B,EAKPD,EACEnF,GAAY,eACd,GAAKoF,CAET,EAAG,CACD5F,EACAC,EAAU,OACV8D,EACAvD,GAAY,gBACZqD,CACF,CAAC,EAEDlF,EAAU,IAAM,CACV+G,GAAuBA,IAAwBtG,GACjDC,GAAmBqG,CAAmB,CAE1C,EAAG,CAACA,EAAqBtG,CAAe,CAAC,EAEzC,IAAM0G,GAAoBhG,EAAQ,KACzB,CACL,GAAGqE,GACH,GAAG5F,EACH,GAAG0B,EAAU,QAAQ,0BACrB,GAAGD,CACL,GACC,CACDmE,GACA5F,EACA0B,EAAU,QAAQ,0BAClBD,CACF,CAAC,EAEK+F,GAAoCjG,EAAQ,IAE7C4F,IAAwBzB,GACvBhE,EAAU,YAAY,OAAS,6BAChC,EAAQ7B,GACP2C,GACA2E,IAAwBzB,EAE3B,CACDyB,EACAzF,EAAU,YAAY,KACtB7B,EACA2C,CACF,CAAC,EAEK,CACJ,KAAMiF,EACN,UAAWC,EACb,EAAIC,GAA+B,CACjC,QAAS,CACP,aAAc,CACZ,QAASH,EACX,EACA,UAAWzH,GAAS,WAAW,yBACjC,EACA,YAAawH,EACf,CAAC,EAEKK,GAAuC,GAC1CvH,GACCqB,EAAU,YAAY,OAAS,oBAC/Bc,GAGE,CACJ,KAAMqF,EACN,UAAWC,EACb,EAAIC,GAAmD,CACrD,YAAa1H,EACb,YAAaoB,EACb,aAAcjB,EACd,QAAS,CACP,aAAc,CACZ,QAASoH,EACX,EACA,UAAWI,GACTjI,GAAS,WAAW,iBACpBkH,GACAE,EACA1F,EACA0F,IAAwBzB,CAC1B,CACF,CACF,CAAC,EAEKuC,GAA2B1G,EAAQ,IAErCG,EAAU,YAAY,OAAS,oBAC9B,EAAQ7B,GAAiB2C,EAE3B,CAACd,EAAU,YAAY,KAAM7B,EAAc2C,CAAoB,CAAC,EAE7D,CAAE,KAAM0F,CAAoB,EAAIC,GAAsC,CAC1E,YAAa1G,EACb,QAAS,CACP,aAAc,CACZ,QAASwG,EACX,EACA,UAAWG,GAA8BrI,EAAS0B,CAAW,CAC/D,CACF,CAAC,EAEK,CAAE,KAAM4G,GAAoB,UAAWC,EAA6B,EACxEC,GAA2B,CACzB,aAAc/H,EACd,mBAAoBE,EACpB,QAAS,CACP,aAAc,CACZ,QAAS,EAAQA,CACnB,CACF,CACF,CAAC,EAEG8H,EAA0CjH,EAC9C,KAAO,CACL,eAAgBmD,GAAmB,QAAU,CAAC,EAC9C,kBAAmBoC,GAAsB,QAAU,CAAC,EACpD,aAAc5B,GAAkC,QAAU,CAAC,EAC3D,0BAA2BuC,GAA8B,QAAU,CAAC,EACpE,iBAAkBI,GAAiC,QAAU,CAAC,EAC9D,iBAAkBK,GAAqB,QAAU,CAAC,EAClD,OAAQ,CAAC,CACX,GACA,CACExD,GAAmB,OACnBoC,GAAsB,OACtB5B,GAAkC,OAClC2C,GAAiC,OACjCK,GAAqB,OACrBT,GAA8B,MAChC,CACF,EAEMgB,GAGF,CACF,eAAgB,KAChB,kBAAmB3B,GAAsB,KAAK,iBAAiB,EAC/D,aAAc,KACd,iBAAkBe,GAAiC,KAAK,iBAAiB,EACzE,0BAA2B,KAC3B,iBAAkB,KAClB,OAAQ,IACV,EAEM,CACJ,QAAA9C,GACA,kBAAmB2D,GAA6B,CAAC,EACjD,iBAAkBC,GAA4B,CAAC,CACjD,EAAI1G,GAAc,CAAC,EAEb2G,GAAwB7D,IAAS,KAEjC8D,EAA6BtH,EACjC,IACEuH,EAAiBN,EAAW,eAAgB,CAC1C,QAASnI,GAAuBuI,IAAyB,EAC3D,CAAC,EACH,CAACJ,EAAW,eAAgBnI,EAAqBuI,EAAqB,CACxE,EAIMG,GAAoBxH,EAAQ,IAC3BiF,GAAU,QACRwC,GAAcxC,EAAS,QAA8BA,EAAS,IAAI,EAD1C,KAE9B,CAACA,GAAU,QAASA,GAAU,IAAI,CAAC,EAEhCyC,EAAgC1H,EAAQ,IAAM,CAClD,IAAM2H,EAAgB,CACpB,GAAGlJ,EACH,GAAG0I,GACH,KAAMzG,GAAY,kBAAkB,MACpC,mBAAoBA,GAAY,kBAAkB,YAClD,GAAI8G,IAAqB,CACvB,cAAe,CAACA,EAAiB,CACnC,CACF,EAEA,OAAOD,EAAiBN,EAAW,kBAAmBU,CAAa,CACrE,EAAG,CACDlJ,EACA0I,GACAzG,GAAY,kBAAkB,MAC9BA,GAAY,kBAAkB,YAC9B8G,GACAP,EAAW,iBACb,CAAC,EAEKW,EAA+B5H,EAAQ,IAAM,CAOjD,IAAM2H,EAAgB,CACpB,GAPsB,CACtB,iBAAkB,CAChB,uBACER,GAA2B,sBAC/B,CACF,EAGE,GAAG1I,EACH,GAAG2I,EACL,EAEA,OAAOG,EAAiBN,EAAW,iBAAkBU,CAAa,CACpE,EAAG,CACDV,EAAW,iBACXG,GACA3I,EACA0I,EACF,CAAC,EAEKU,EAA+B7H,EAAQ,IAAM,CACjD,IAAM8H,EAAYhB,IAAoB,mBAAmB,aAAa,KACnEiB,GAAcA,EAAU,OAAS,SACpC,EACMJ,EAAgB,CACpB,GAAGlJ,EACH,UAAWqJ,GAAW,SACxB,EAEA,OAAOP,EAAiBN,EAAW,iBAAkBU,CAAa,CACpE,EAAG,CACDV,EAAW,iBACXxI,EACAqI,EACF,CAAC,EAEKkB,EAA2BhI,EAAQ,IAAM,CAI7C,IAAM2H,EAAgB,CACpB,GAJ6B,CAC7B,aAAc/B,CAChB,EAGE,GAAGnH,CACL,EAEA,OAAO8I,EAAiBN,EAAW,aAAcU,CAAa,CAChE,EAAG,CAACV,EAAW,aAAcxI,EAAyBmH,CAAmB,CAAC,EAEpEqC,EAAwCjI,EAAQ,IAAM,CAC1D,IAAM2H,EAAgB,CACpB,GAAGlJ,EACH,GAAG4F,EACL,EACA,OAAOkD,EACLN,EAAW,0BACXU,CACF,CACF,EAAG,CACDV,EAAW,0BACXxI,EACA4F,EACF,CAAC,EAEKsD,GAAgB3H,EAAQ,KACrB,CACL,eAAgBsH,EAChB,kBAAmBI,EACnB,iBAAkBE,EAClB,iBAAkBC,EAClB,aAAcG,EACd,0BAA2BC,CAC7B,GACC,CACDX,EACAI,EACAE,EACAC,EACAG,EACAC,CACF,CAAC,EAEKC,GAAiC,GACrC5J,GACE2C,GACAd,EAAU,YAAY,OAAS,UAG7BgI,GACJ/E,IACAoC,IACA7E,IACA4F,IACA3C,IACAmD,IACA7B,IACAG,IACAc,GAEIiC,GAAuBpI,EAAQ,IAAM,CAEzC,IAAMqI,EADQ3H,GAAY,kBAAoB,OAEnCuG,EAAW,iBAAiB,OAAS,EAEhD,MAAO,GACLiB,IACE,CAACC,IACOhJ,GACR8H,EAAW,kBAAkB,OAAS,GACtCA,EAAW,iBAAiB,OAAS,GACrCoB,EAEN,EAAG,CACDH,GACAC,GACAhJ,EACA8H,EAAW,kBAAkB,OAC7BA,EAAW,iBAAiB,OAC5BA,EAAW,iBAAiB,OAC5BvG,GAAY,eACd,CAAC,EAED7B,EAAU,IAAM,CACVuJ,KACF/I,EAAc,QAAU,CACtB,eAAgBiJ,EACdhB,EACAL,EAAW,cACb,EACA,kBAAmBqB,EACjBZ,EACAT,EAAW,iBACb,EACA,iBAAkBqB,EAChBV,EACAX,EAAW,gBACb,EACA,iBAAkBqB,EAChBT,EACAZ,EAAW,gBACb,EACA,aAAcqB,EACZN,EACAf,EAAW,YACb,EACA,0BAA2BqB,EACzBL,EACAhB,EAAW,yBACb,CACF,EAEAzG,GAAc,CACZ,eAAgB8G,EAChB,kBAAmBI,EACnB,iBAAkBE,EAClB,iBAAkBC,EAClB,aAAcG,EACd,0BAA2BC,EAC3B,OAAQ,CAAC,CACX,CAAC,EACD1H,EAAS,QAAQ,EAErB,EAAG,CACD6H,GACA7H,EACA+G,EACAI,EACAE,EACApH,GACAyG,EAAW,eACXA,EAAW,kBACXA,EAAW,iBACXA,EAAW,aACXe,EACAf,EAAW,iBACXY,EACAZ,EAAW,0BACXgB,CACF,CAAC,EAED,IAAMM,GAAOpK,EAACqK,GAAmB,CAC/BjI,EAASiI,CAAI,CACf,EAFa,QAIPC,GAAkBtK,EAAA,MAAOuK,GACzBvF,GAAqBhD,EAAU,YAAY,OAAS,iBAC/CuI,EAIPnD,GACApF,EAAU,YAAY,OAAS,oBAExB,MAAMwI,EAAmBD,EAAQnD,GAAsB,OAAQ,CACpE,oBAAqB,EACvB,CAAC,EAIDe,GACAnG,EAAU,YAAY,OAAS,mBAExB,MAAMwI,EACXD,EACApC,GAAiC,OACjC,CACE,oBAAqB,EACvB,CACF,EAIAK,GACAxG,EAAU,YAAY,OAAS,mBAExB,MAAMwI,EAAmBD,EAAQ/B,GAAqB,OAAQ,CACnE,oBAAqB,EACvB,CAAC,EAIDhD,GACAxD,EAAU,YAAY,OAAS,eAExB,MAAMwI,EACXD,EACA/E,GAAkC,OAClC,CACE,oBAAqB,EACvB,CACF,EAIAuC,GACA/F,EAAU,YAAY,OAAS,4BAExB,MAAMwI,EACXD,EACAxC,GAA8B,OAC9B,CACE,oBAAqB,EACvB,CACF,EAGK,CAAC,EA9Dc,mBAsElB0C,GAA2BzK,EAC/B0K,GAC6B,CAC7B,IAAMC,EAAYD,GAAO,UAAU,OAAO,QAAQ,0BAClD,OAAIC,GAAW,SAAWC,GACjB,CACL,MAAOD,EAAU,MACjB,OAAQA,EAAU,OAClB,UAAWA,EAAU,SACvB,EAEK,IACT,EAZiC,4BAcjC,eAAeE,GAASN,EAAqB,CAC3C,IAAMO,EAAkB9I,EAAU,YAAY,KAC1C8I,KAAmB5J,EAAc,UACnCA,EAAc,QACZ4J,CACF,EAAIX,EAAmBI,EAAQzB,EAAWgC,CAAe,CAAC,GAE5D,IAAMC,EAAe,MAAMT,GAAgBC,CAAM,EACjD,OAAQvI,EAAU,YAAY,KAAM,CAClC,IAAK,iBACH,OAAApB,GAAuBmK,EAAa,OAAO,EACpC,QAAQ,QAAQ,CAAE,KAAM,CAAE,YAAaA,EAAa,OAAQ,CAAE,CAAC,EAExE,IAAK,oBAAqB,CACxB,IAAMC,EACJ,CAAClK,GAAwBH,EACrBsK,EACJnK,GACAH,GACA4B,GAAY,SACZA,GAAY,QAAQ,OAAS5B,EAE/B,GAAIqK,GAAyBC,EAAmB,CAO9C,IAAMC,EAAkD,CACtD,kBAPmCC,GACnCJ,EACA,qBACA,OACA,eACF,EAGE,KAAM,aACN,aAAcpK,EACd,YAAaT,CACf,EACMkL,GAAW,MAAM3G,GACrByG,CACF,EACM/K,GAAeiL,IAAU,MAAM,YAAY,GACjD,GAAI,CAACjL,GACH,MAAMkL,EAAsB,yBAAyB,EAGvD,aAAM1H,GAA+B,CACnC,aAAcxD,EAChB,CAAC,EAIDY,GAAwBZ,EAAY,EAE7BiL,EACT,SAAWtK,EAAsB,CAC/B,IAAMwK,EAA+BH,GACnCJ,EACA,qBACA,OACA,eACF,EAEA,aAAMpH,GAA+B,CACnC,aAAc7C,CAChB,CAAC,EACMmD,GAA8B,CACnC,aAAcnD,EACd,kBAAmBwK,CACrB,CAAC,CACH,CAEA,MACF,CACA,IAAK,mBAAoB,CACvB,IAAMC,EACJxJ,EAAY,4CAA8C,GACtDyJ,EAAkC,CACtC,kBAAmBT,EACnB,eAAgBQ,CAClB,EAEA,GAAI,CACF,IAAMH,EAAW,MAAM1G,GAA8C,CACnE,aAAc5D,EACd,QAAA0K,CACF,CAAC,EACKC,EAAqBL,GAAU,MAAM,mBAAmB,GAC9D,GAAI,CAACK,EACH,MAAMJ,EAAsB,gCAAgC,EAE9D,OAAApK,GAA8BwK,CAAkB,EAEzCL,CACT,OAASV,EAAO,CACd,IAAMgB,EAAUjB,GAAyBC,CAAK,EAC9C,MAAIgB,GAGFzJ,GAAe,CACb,GAAGsI,EACH,qCACEoB,GAJFlE,IAAwBzB,CAIuB,EAC/C,0CAA2C0F,EAAQ,SACrD,CAAC,EAGGhB,CACR,CACF,CAEA,IAAK,mBAQH,OAPiB,MAAM/F,GAAkC,CACvD,aAAc7D,EACd,mBAAoBE,EACpB,QAAS,CACP,UAAW+J,EAAa,SAC1B,CACF,CAAC,EAGH,IAAK,eAAgB,CAMnB,GACEnF,GANiC,CACjCI,EACA4B,EACF,EAI6B,SAAS2C,EAAO,YAAY,EAEvD,MAAMc,EACJ,uCACEO,GACErB,EAAO,YACT,CACF,GACF,EAGF,GAAIA,EAAO,eAAiBsB,GAE1B,OAAO,QAAQ,QAAQ,CACrB,KAAM,CACJ,aAActB,EAAO,YACvB,CACF,CAAC,EAGH,GACEzE,GACAyE,EAAO,eAAiBvE,EAExB,GAAI,CACF,MAAMjB,GAA6C,CACjD,aAAcjE,CAChB,CAAC,EACD,MAAM6E,GAA+B,CACvC,OAAS+E,EAAO,CACd,GAAKA,GAAoB,UAAU,SAAW,IAC5C,MAAMA,EAGR,MAAM/E,GAA+B,CACvC,CAGF,GAAI4E,EAAO,cAAgB5C,EACzB,OAAO/C,GAA0C,CAC/C,aAAc9D,EACd,QAAS,CACP,UAAW,WACb,CACF,CAAC,EACI,GAAIyJ,EAAO,cAAgB3C,GAChC,OAAOhD,GAA0C,CAC/C,aAAc9D,EACd,QAAS,CACP,UAAW,SACb,CACF,CAAC,EACI,GAAIyJ,EAAO,cAAgBvE,EAChC,OACEF,GACAvD,GAAY,kBAAoB,MAEzBuC,GAA6C,CAClD,aAAchE,CAChB,CAAC,EAEM,QAAQ,QAAQ,CACrB,KAAM,CAAE,aAAcyJ,EAAO,YAAa,CAC5C,CAAC,EAIL,MAAMc,EAAsB,mBAAmB,CACjD,CAEA,IAAK,4BACH,GAAI,CAQF,IAPiB,MAAMxG,GAA4C,CACjE,aAAc/D,EACd,QAASiK,CACX,CAAC,IAEmD,MAAM,YAGxD,MAAAzJ,EAAmC,EAAK,EACxCI,GAAyB,cAAc,EACjC2J,EACJ,2DACF,EAGF,OAAO,MAAMvG,GAA6C,CACxD,aAAchE,CAChB,CAAC,CACH,QAAE,CAEA,MAAM6E,GAA+B,CACvC,CAGF,QACE,MAAM0F,EAAsB,oBAAoB,CAEpD,CACF,CAlOe,OAAArL,EAAA6K,GAAA,YAkPR,CAIL,UANgBb,IAAkBD,GAWlC,YAAAhI,EAKA,UAAAC,EAMA,kBAAmBC,GAOnB,uBAzC6BjC,EAAA,IAAM,CAEnCQ,GAAsB,UAAU,CAClC,EAH+B,0BA+C7B,KAAM0B,GAMN,KAhDqBlC,EAAA,IAAM,CACvBc,GACF2B,GAAkB,EAEpBN,GAAS,CACX,EALuB,kBAuDrB,KAAMiI,GAON,SAAAS,GAKA,OAAQ/B,EAAW9G,EAAU,YAAY,IAAI,EAK7C,KAAM,CACJ,OAAQd,EAAc,QACtB,UAAW6H,GAA4B/G,EAAU,YAAY,IAAI,CACnE,EAOA,gBAAAsI,GAOA,oBACEvI,EAAY,4CAA8C,GAO5D,iBAAkB/B,EAAA,MAChBuK,GACqC,CACrC,GAAIvI,EAAU,YAAY,OAAS,iBACjC,OAAOgD,EAAkB,iBAAiBuF,CAAM,EAGlD,GACEnD,GACApF,EAAU,YAAY,OAAS,oBAC/B,CACA,IAAM+I,EAAe,MAAMP,EACzBD,EACAnD,GAAsB,OACtB,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAsB,iBAAiB2D,CAAY,CAC5D,CAEA,GACE5C,GACAnG,EAAU,YAAY,OAAS,mBAC/B,CACA,IAAM+I,EAAe,MAAMP,EACzBD,EACApC,GAAiC,OACjC,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAiC,iBAAiB4C,CAAY,CACvE,CAEA,GACEvC,GACAxG,EAAU,YAAY,OAAS,mBAC/B,CACA,IAAM+I,EAAe,MAAMP,EACzBD,EACA/B,GAAqB,OACrB,CAAE,oBAAqB,EAAK,CAC9B,EACA,OAAOA,GAAqB,iBAAiBuC,CAAY,CAC3D,CAEA,GACEvF,GACAxD,EAAU,YAAY,OAAS,eAC/B,CACA,IAAM+I,EAAe,MAAMP,EACzBD,EACA/E,GAAkC,OAClC,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAAkC,iBAAiBuF,CAAY,CACxE,CAEA,GACEhD,GACA/F,EAAU,YAAY,OAAS,4BAC/B,CACA,IAAM+I,EAAe,MAAMP,EACzBD,EACAxC,GAA8B,OAC9B,CAAE,oBAAqB,EAAM,CAC/B,EACA,OAAOA,GAA8B,iBAAiBgD,CAAY,CACpE,CAEA,OAAO,IACT,EApEkB,oBAyElB,cAAAvB,GAKA,aAAc1I,EAMd,kBAAmB2B,GAKnB,aACEU,GAAyB,WACzBE,GAAyB,WACzBE,GAAyC,WACzCY,GAA6B,WAC7BE,GAAqC,WACrCZ,GAAmB,WACnBI,GAAuC,WACvCE,GAAwC,WACxCQ,GAAwC,UAK1C,mBAAAoE,GAMA,UAAA3F,GAMA,qBAAAF,EAKA,cAAAI,GAMA,WAAAX,EAMA,mBAAAI,GAKA,MAAOf,EACT,CACF,EAjyCuC","names":["useEffect","useMemo","useRef","useState","omit","useQuery","useLegalEntities","__name","client","useClient","identity","useIdentity","companyId","hasCompany","useQuery","getIndexCompanyLegalEntities","data","useDefaultLegalEntity","legalEntities","legalEntity","stepToFormSchemaMap","jsonSchemaToEmployment","useContractorOnboarding","__name","countryCode","externalId","employmentId","skipSteps","options","onboardingInitialValues","excludeProducts","onContractReviewedRef","useRef","useEffect","internalCountryCode","setInternalCountryCode","useState","internalEmploymentId","setInternalEmploymentId","internalContractDocumentId","setInternalContractDocumentId","fieldsMetaRef","selectedProduct","setSelectedProduct","includeEligibilityQuestionnaire","setIncludeEligibilityQuestionnaire","includeContractPreview","setIncludeContractPreview","pendingNavigationStep","setPendingNavigationStep","steps","stepsArray","useMemo","buildSteps","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","employment","isLoadingEmployment","refetchEmployment","useEmploymentQuery","defaultLegalEntity","useDefaultLegalEntity","employmentStatus","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","canInvite","disabledInviteButtonEmploymentStatus","invitedStatus","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","createContractorContractDocumentMutation","useCreateContractorContractDocument","uploadFileMutation","useUploadFile","updateUKandSaudiFieldsMutation","useUpdateUKandSaudiFields","createEligibilityQuestionnaireMutation","usePostCreateEligibilityQuestionnaire","manageContractorCorSubscriptionMutation","usePostManageContractorCorSubscription","updateEmploymentMutationAsync","mutationToPromise","signContractDocumentMutation","useSignContractDocument","manageContractorSubscriptionMutation","usePostManageContractorSubscriptions","deleteContractorCorSubscriptionMutation","useDeleteContractorCorSubscription","createEmploymentMutationAsync","createContractorContractDocumentMutationAsync","signContractDocumentMutationAsync","manageContractorSubscriptionMutationAsync","createEligibilityQuestionnaireMutationAsync","manageContractorCorSubscriptionMutationAsync","deleteContractorCorSubscriptionMutationAsync","selectCountryForm","isLoadingCountries","countries","useCountriesSchemaField","selectedCountry","country","countryName","isPricingPlanEnabled","selectContractorSubscriptionForm","isLoadingContractorSubscriptions","contractorSubscriptions","refetchContractorSubscriptions","isEligibilityQuestionnaireBlocked","useContractorSubscriptionSchemaField","hasEligibilityQuestionnaireSubmitted","subscription","corProductIdentifier","isCor","eligibilityAnswers","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","query","mergedFormValues","useJSONSchemaForm","isBasicInformationDetailsEnabled","isIR35FileEnabled","ir35File","isLoadingIR35File","useGetIR35File","contractDocuments","isLoadingContractDocuments","useGetContractDocuments","basicInformationForm","isLoadingBasicInformationForm","buildBasicInformationJsfModify","descriptionProvisionalStartDate","calculateProvisionalStartDateDescription","selectedPricingPlan","subscriptions","contractorStandardProductIdentifier","contractorPlusProductIdentifier","eligibilityFields","isEligibilityQuestionnaireEnabled","eligibilityQuestionnaireForm","isLoadingEligibilityQuestionnaire","useGetEligibilityQuestionnaire","isContractorOnboardingDetailsEnabled","contractorOnboardingDetailsForm","isLoadingContractorOnboardingDetailsForm","useContractorOnboardingDetailsSchemaWithCurrencies","buildContractDetailsJsfModify","isSignatureSchemaEnabled","signatureSchemaForm","useGetContractDocumentSignatureSchema","buildContractPreviewJsfModify","documentPreviewPdf","isLoadingDocumentPreviewForm","useGetShowContractDocument","stepFields","stepFieldsWithFlatFieldsets","employmentBasicInformation","employmentContractDetails","employmentCountryCode","selectCountryInitialValues","getInitialValues","convertedIr35File","dataURLtoFile","basicInformationInitialValues","initialValues","contractDetailsInitialValues","contractPreviewInitialValues","signature","signatory","pricingPlanInitialValues","eligibilityQuestionnaireInitialValues","shouldHandleReadOnlyEmployment","initialLoading","isNavigatingToReview","hasContractPreviewFields","prettifyFormValues","goTo","step","parseFormValues","values","parseJSFToValidate","extractAiValidationError","error","errorData","REMOTE_AI_ERROR_SOURCE","onSubmit","currentStepName","parsedValues","isEmploymentNotLoaded","hasChangedCountry","basicInformationPayload","omit","response","createStructuredError","basicInformationParsedValues","shouldSkipAiChecks","payload","contractDocumentId","aiError","transformAiErrorResponse","CONTRACT_PRODUCT_TITLES","eorProductIdentifier"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/hooks.tsx","../src/common/api/payroll-calendars.ts","../src/common/employment.ts"],"sourcesContent":["import { $TSFixMe } from '@/src/types/remoteFlows';\nimport { createHeadlessForm } from '@/src/common/createHeadlessForm';\nimport omitBy from 'lodash.omitby';\nimport isNull from 'lodash.isnull';\nimport { format, isFuture, parseISO, subDays } from 'date-fns';\nimport { useMemo } from 'react';\nimport {\n CreateOffboardingParams,\n TerminationDetailsParams,\n} from '@/src/client';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport {\n EmployeeCommunicationFormValues,\n PaidTimeOffFormValues,\n TerminationDetailsFormValues,\n TerminationFlowProps,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport omit from 'lodash.omit';\nimport { parseFormRadioValues } from '@/src/flows/utils';\nimport { useStepState } from '@/src/flows/useStepState';\nimport {\n buildInitialValues,\n calculateMinTerminationDate,\n calculateProposedTerminationDateStatement,\n STEPS,\n} from '@/src/flows/Termination/utils';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\nimport { terminationDetailsSchema } from '@/src/flows/Termination/json-schemas/terminationDetails';\nimport {\n useCreateTermination,\n useTerminationSchema,\n} from '@/src/flows/Termination/api';\nimport { createInformationField } from '@/src/components/form/jsf-utils/createFields';\nimport { cn } from '@/src/internals';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { PaidTimeOff } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOff';\nimport { PaidTimeOffContainer } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer';\nimport { useEmploymentQuery } from '@/src/common/api/employment';\nimport { AcknowledgeInformationContainer } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInfomationContainer';\nimport { AcknowledgeInformation } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation';\nimport { AcknowledgeInformationFees } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees';\nimport { usePayrollCalendars } from '@/src/common/api/payroll-calendars';\nimport { isInProbationPeriod } from '@/src/common/employment';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\n\ntype TerminationHookProps = Omit<TerminationFlowProps, 'render'>;\n\nexport const useTermination = ({\n employmentId,\n options,\n initialValues: terminationInitialValues,\n}: TerminationHookProps) => {\n const { fieldValues, setFieldValues, stepState, previousStep, nextStep } =\n useStepState<keyof typeof STEPS, TerminationFormValues>(STEPS);\n\n const { data: employment, isLoading: isLoadingEmployment } =\n useEmploymentQuery({ employmentId, queryParams: { exclude_files: true } });\n\n const { data: payrollCalendars } = usePayrollCalendars({\n query: {\n year: new Date().getFullYear().toString(),\n countryCode: employment?.country?.code,\n },\n options: {\n enabled: Boolean(employment?.country?.code),\n },\n });\n\n const isEmployeeInProbationPeriod = isInProbationPeriod(\n employment?.probation_period_end_date,\n );\n\n const minTerminationDate = calculateMinTerminationDate(payrollCalendars);\n const minDate = useMemo(\n () =>\n isEmployeeInProbationPeriod\n ? format(new Date(), 'yyyy-MM-dd')\n : format(minTerminationDate, 'yyyy-MM-dd'),\n [isEmployeeInProbationPeriod, minTerminationDate],\n );\n\n const hasFutureStartDate = Boolean(\n employment?.provisional_start_date &&\n isFuture(parseISO(employment.provisional_start_date)),\n );\n\n const employmentValues = {\n personal_email: employment?.basic_information?.email as string,\n } as Partial<TerminationFormValues>;\n\n const initialValues = buildInitialValues(\n {\n ...employmentValues,\n ...terminationInitialValues,\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n },\n hasFutureStartDate,\n );\n\n const formValues = useMemo(\n () => ({\n ...initialValues,\n ...fieldValues,\n }),\n [fieldValues, initialValues],\n );\n\n const proposedTerminationDateStatement =\n calculateProposedTerminationDateStatement({\n minTerminationDate,\n isEmployeeInProbationPeriod,\n selectedDate: parseISO(formValues.proposed_termination_date),\n });\n\n const customFields = useMemo(() => {\n const originalTerminationReasonOptions =\n terminationDetailsSchema.data.schema.properties.termination_reason.oneOf;\n\n const terminationReasonOptions = hasFutureStartDate\n ? originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const === 'cancellation_before_start_date',\n )\n : originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const !== 'cancellation_before_start_date',\n );\n\n return {\n fields: {\n risk_assesment_info: createInformationField(\n 'Offboarding risk assessment',\n '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.',\n {\n className: (\n options?.jsfModify?.fields?.risk_assesment_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n termination_reason: {\n ...(options?.jsfModify?.fields?.termination_reason as $TSFixMe),\n oneOf: terminationReasonOptions,\n },\n proposed_termination_date_info: createInformationField(\n 'Proposed termination date',\n <>\n In most cases, Remote must provide notice to the employee before\n termination. The required notice period depends on local labor laws,\n the employment agreement, and other factors. We'll use those factors\n to determine the required notice period.\n <ZendeskTriggerButton\n external\n zendeskId={zendeskArticles.terminationNoticePeriods}\n className={cn(\n 'text-sm',\n (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.zendeskTriggerButtonClassName,\n )}\n >\n Learn about notice periods\n </ZendeskTriggerButton>\n </>,\n {\n className: (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n proposed_termination_date: {\n ...(options?.jsfModify?.fields\n ?.proposed_termination_date as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields?.proposed_termination_date as $TSFixMe\n )?.['x-jsf-presentation'],\n minDate: minDate,\n ...(formValues.termination_reason ===\n 'cancellation_before_start_date' &&\n employment?.provisional_start_date\n ? {\n maxDate: format(\n subDays(parseISO(employment.provisional_start_date), 1),\n 'yyyy-MM-dd',\n ),\n }\n : {}),\n ...proposedTerminationDateStatement,\n },\n ...(formValues.termination_reason === 'cancellation_before_start_date'\n ? {\n 'x-jsf-errorMessage': {\n maximum:\n \"The proposed termination date must be before the employee's start date.\",\n },\n }\n : {}),\n },\n paid_time_off_info: {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe)?.[\n 'x-jsf-presentation'\n ],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <PaidTimeOffContainer\n employeeName={employment?.basic_information?.name as string}\n proposedTerminationDate={formValues.proposed_termination_date}\n employmentId={employmentId}\n employment={employment}\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <PaidTimeOff {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <AcknowledgeInformationContainer\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <AcknowledgeInformation {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_fees_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const zendeskIds = {\n involuntaryOffboardingServiceChargeZendeskId:\n zendeskArticles.involuntaryOffboardingServiceCharge,\n reconciliationInvoiceZendeskId:\n zendeskArticles.reconciliationInvoice,\n };\n\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n if (CustomComponent) {\n return <CustomComponent {...zendeskIds} />;\n }\n\n return <AcknowledgeInformationFees {...zendeskIds} />;\n },\n },\n },\n },\n };\n }, [\n employment,\n employmentId,\n formValues.proposed_termination_date,\n formValues.termination_reason,\n hasFutureStartDate,\n minDate,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_info,\n options?.jsfModify?.fields?.paid_time_off_info,\n options?.jsfModify?.fields?.proposed_termination_date,\n options?.jsfModify?.fields?.proposed_termination_date_info,\n options?.jsfModify?.fields?.risk_assesment_info,\n options?.jsfModify?.fields?.termination_reason,\n proposedTerminationDateStatement,\n ]);\n\n const { data: terminationHeadlessForm, isLoading: isLoadingTermination } =\n useTerminationSchema({\n formValues: formValues,\n jsfModify: {\n ...options?.jsfModify,\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n step: stepState.currentStep.name,\n });\n\n const entireTerminationSchema = createHeadlessForm(jsonSchema.data.schema);\n\n const createTermination = useCreateTermination();\n const { mutateAsync } = mutationToPromise(createTermination);\n\n async function onSubmit(values: TerminationFormValues) {\n if (!employmentId) {\n throw new Error('Employment id is missing');\n }\n\n if (terminationHeadlessForm) {\n const parsedValues = (await parseFormValues(\n values,\n true,\n )) as TerminationFormValues;\n\n const { customer_informed_employee: customerInformedEmployee } =\n parsedValues;\n\n const employeeAwareness =\n customerInformedEmployee === 'yes'\n ? {\n employee_awareness: {\n date: parsedValues.customer_informed_employee_date,\n note: parsedValues.customer_informed_employee_description,\n },\n }\n : undefined;\n\n const radioFieldKeys = [\n 'agrees_to_pto_amount',\n 'confidential',\n 'customer_informed_employee',\n 'will_challenge_termination',\n ];\n\n const parsedRadioValues = await parseFormRadioValues(\n parsedValues,\n radioFieldKeys,\n );\n\n const normalizedValues = omit(\n parsedRadioValues,\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n );\n\n const terminationDetails: TerminationDetailsParams = omitBy(\n {\n ...normalizedValues,\n ...employeeAwareness,\n },\n isNull,\n ) as unknown as TerminationDetailsParams;\n\n const files = (parsedValues.timesheet_file as $TSFixMe) ?? [];\n const timesheetFile =\n Array.isArray(files) && files.length > 0\n ? { content: files[0].content, name: files[0].name }\n : undefined;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: {\n ...terminationDetails,\n timesheet_file: timesheetFile ? timesheetFile : undefined,\n },\n type: 'termination',\n };\n\n return mutateAsync(terminationPayload);\n }\n\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n const isDirty = Boolean(Object.keys(fieldValues).length > 0);\n\n const parseFormValues = async (\n values: TerminationFormValues,\n includeAllFields: boolean = false,\n ): Promise<\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues\n | TerminationFormValues\n > => {\n if (includeAllFields) {\n return (await parseJSFToValidate(values, entireTerminationSchema.fields, {\n isPartialValidation: true,\n })) as TerminationFormValues;\n }\n\n if (terminationHeadlessForm) {\n return (await parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n {\n isPartialValidation: true,\n },\n )) as\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues;\n }\n return {} as $TSFixMe;\n };\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Employment data\n */\n employment,\n\n /**\n * Current form field values, we use formValues to let the user know about all the current form values\n */\n fieldValues: formValues,\n\n /**\n * Indicates if the form is dirty\n */\n isDirty,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: terminationHeadlessForm?.fields || [],\n /**\n * Loading state indicating if the termination schema is being fetched\n */\n isLoading: isLoadingTermination || isLoadingEmployment,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting: createTermination.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: async (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = await parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n );\n return terminationHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { getIndexEorPayrollCalendar } from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { Client } from '@/src/client/client';\n\nexport const usePayrollCalendars = ({\n query,\n options,\n}: {\n query?: {\n year?: string;\n countryCode?: string;\n };\n options?: {\n enabled?: boolean;\n };\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['payroll-calendars'],\n queryFn: () =>\n getIndexEorPayrollCalendar({\n client: client as Client,\n query: {\n year: query?.year,\n country_code: query?.countryCode,\n },\n }),\n enabled: options?.enabled,\n select: (data) => data.data?.data?.payroll_calendars?.[0],\n });\n};\n","import { isFuture, isToday, parseISO } from 'date-fns';\n\nexport const isInProbationPeriod = (probationEndDate: string | undefined) => {\n if (!probationEndDate) return false;\n\n const parsedProbationEndDate = parseISO(probationEndDate);\n\n return isFuture(parsedProbationEndDate) || isToday(parsedProbationEndDate);\n};\n"],"mappings":"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","names":["omitBy","isNull","format","isFuture","parseISO","subDays","useMemo","omit","useQuery","usePayrollCalendars","__name","query","options","client","useClient","useQuery","getIndexEorPayrollCalendar","data","isFuture","isToday","parseISO","isInProbationPeriod","__name","probationEndDate","parsedProbationEndDate","parseISO","isFuture","isToday","Fragment","jsx","jsxs","useTermination","__name","employmentId","options","terminationInitialValues","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","employment","isLoadingEmployment","useEmploymentQuery","payrollCalendars","usePayrollCalendars","isEmployeeInProbationPeriod","isInProbationPeriod","minTerminationDate","calculateMinTerminationDate","minDate","useMemo","format","hasFutureStartDate","isFuture","parseISO","employmentValues","initialValues","buildInitialValues","formValues","proposedTerminationDateStatement","calculateProposedTerminationDateStatement","customFields","originalTerminationReasonOptions","terminationDetailsSchema","terminationReasonOptions","option","createInformationField","ZendeskTriggerButton","zendeskArticles","cn","subDays","CustomComponent","PaidTimeOffContainer","props","PaidTimeOff","AcknowledgeInformationContainer","AcknowledgeInformation","zendeskIds","AcknowledgeInformationFees","terminationHeadlessForm","isLoadingTermination","useTerminationSchema","entireTerminationSchema","createHeadlessForm","jsonSchema","createTermination","useCreateTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseFormValues","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","files","timesheetFile","terminationPayload","back","next","isDirty","includeAllFields","parseJSFToValidate"]}
@@ -1,2 +0,0 @@
1
- import{a as T,b as g}from"./chunk-UTLIN5S6.js";import{a as d}from"./chunk-SNECOPBD.js";import{g as C}from"./chunk-JEGVULKU.js";import{b as _}from"./chunk-YHCH57B7.js";import{c as l}from"./chunk-7EONM7HL.js";import{e as p}from"./chunk-VIGKOVHP.js";import{a as m}from"./chunk-P37U34EQ.js";import{Fragment as x}from"react";var y={...T,fieldset:g,"fieldset-flat":g};import{useEffect as P}from"react";import{jsx as c,jsxs as h}from"react/jsx-runtime";var R=m(({name:e,description:i,helpCenter:n})=>h("span",{children:[c("span",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:p(i)}}),n?.callToAction&&n?.id&&c(_,{className:"RemoteFlows__ForcedValue__HelpCenterLink",zendeskId:n.id,children:n.callToAction})]}),"Description");function k({name:e,value:i,description:n,statement:r,label:u,helpCenter:F}){let{setValue:t}=l(),o=p(r?.description||n);P(()=>{t(e,i)},[]);let s=r?.title?p(r?.title):p(u);return h("div",{children:[s&&c("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:s}}),c(R,{name:e,description:o,helpCenter:F})]})}m(k,"ForcedValueField");import{Fragment as M,jsx as a,jsxs as S}from"react/jsx-runtime";function J(e){return e.const!==void 0&&e.const===e.default&&e.type!=="checkbox"&&e.type!=="hidden"}m(J,"checkFieldHasForcedValue");var G=m(({fields:e,fieldsets:i,fieldValues:n,components:r})=>{let{setValue:u}=l();if(!e||e.length===0)return null;let F=i&&n?C({fields:e,fieldsets:i,values:n}):e;return a(M,{children:F.map(t=>{if(t.calculateDynamicProperties&&(t={...t,...t.calculateDynamicProperties(n,t)||{}}),t.isVisible===!1||t.deprecated||t.hidden)return null;if(J(t))return a(k,{name:t.name,description:t.description,value:t.const,statement:t.statement,label:t.label,helpCenter:t.meta?.helpCenter},t.name);if(t.Component){let{Component:b}=t;return S(x,{children:[a(b,{setValue:V=>u(t.name,V),...t}),t.statement?a(d,{...t.statement}):null,t.extra?t.extra:null]},t.name)}let o=t.type,s=y[o];return s?o==="fieldset"?a(s,{...t,components:r},t.name):o==="fieldset-flat"?a(s,{...t,components:r,isFlatFieldset:!0},t.name):(o==="select"&&t.multiple&&(s=y["multi-select"]),S(x,{children:[a(s,{...t,component:r&&r[o]}),t.statement?a(d,{...t.statement}):null,t.extra?t.extra:null]},t.name)):S("p",{className:"error",children:["Field type ",o," not supported"]})})})},"JSONSchemaFormFields");export{G as a};
2
- //# sourceMappingURL=chunk-LU265KXN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/JSONSchemaForm.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { JSFFields } from '@/src/types/remoteFlows';\nimport React, { Fragment } from 'react';\n\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { Statement } from '@/src/components/form/Statement';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { Components, JSFFieldset } from '@/src/types/remoteFlows';\nimport { getFieldsWithFlatFieldsets } from './utils';\nimport { StatementComponentProps } from '@/src/types/fields';\nimport { useFormContext } from 'react-hook-form';\n\ntype JSONSchemaFormFieldsProps = {\n fields: JSFFields;\n components?: Components;\n fieldsets?: JSFFieldset | null | undefined;\n fieldValues?: Record<string, unknown>;\n};\n\nfunction checkFieldHasForcedValue(field: any) {\n // A field to be considered \"forced value\" must:\n return (\n field.const !== undefined && // Only accepts a specific value\n field.const === field.default && // It can be prefilled, meaning it's not critical\n field.type !== 'checkbox' && // Because checkbox must always be visible\n field.type !== 'hidden' // Because hidden inputs shouldn't be visible\n );\n}\n\nexport const JSONSchemaFormFields = ({\n fields,\n fieldsets,\n fieldValues,\n components,\n}: JSONSchemaFormFieldsProps) => {\n const { setValue } = useFormContext();\n\n if (!fields || fields.length === 0) return null;\n\n const maybeFieldWithFlatFieldsets =\n fieldsets && fieldValues\n ? getFieldsWithFlatFieldsets({\n fields: fields,\n fieldsets: fieldsets,\n values: fieldValues,\n })\n : fields;\n\n return (\n <>\n {maybeFieldWithFlatFieldsets.map((field) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(fieldValues, field) || {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated || field.hidden) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (checkFieldHasForcedValue(field)) {\n return (\n <ForcedValueField\n key={field.name as string}\n name={field.name as string}\n description={field.description as string}\n value={field.const as string}\n statement={field.statement as any}\n label={field.label as string}\n helpCenter={field.meta?.helpCenter}\n />\n );\n }\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<any>;\n };\n return (\n <Fragment key={field.name as string}>\n <Component\n setValue={(value: unknown) => setValue(field.name, value)}\n {...field}\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </Fragment>\n );\n }\n\n // We use field.type on purpose here, not field.inputType, when using field.inputType\n // the conditionals didn't work as expected\n // I believe json-schema-form in the latest versions uses field.inputType correctly but\n // the version of json-schema-form is decided by remote-json-schema-form-kit\n // our product uses field.type instead of field.inputType and we probably should do the same\n const fieldType = field.type;\n let FieldComponent = fieldsMap[fieldType as keyof typeof fieldsMap];\n\n if (!FieldComponent) {\n return (\n <p className='error'>\n Field type {fieldType as string} not supported\n </p>\n );\n }\n\n if (fieldType === 'fieldset') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n />\n );\n }\n\n if (fieldType === 'fieldset-flat') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n isFlatFieldset\n />\n );\n }\n\n // TODO: Have doubts about this, it seems we only support checkbox for multiple select\n if (fieldType === 'select' && field.multiple) {\n FieldComponent = fieldsMap['multi-select'];\n }\n\n return (\n <Fragment key={field.name as string}>\n <FieldComponent\n {...field}\n component={\n components && components[fieldType as keyof Components]\n }\n />\n {field.statement ? (\n <Statement\n {...(field.statement as StatementComponentProps['data'])}\n />\n ) : null}\n {field.extra ? field.extra : null}\n </Fragment>\n );\n })}\n </>\n );\n};\n","import { $TSFixMe } from '@/src/types/remoteFlows';\nimport { baseFields } from './baseFields';\nimport { FieldSetField } from './FieldSetField';\nimport { SupportedTypes } from './types';\n\nexport const fieldsMap: Record<\n SupportedTypes,\n React.ComponentType<$TSFixMe>\n> = {\n ...baseFields,\n fieldset: FieldSetField,\n 'fieldset-flat': FieldSetField,\n};\n","import { useFormContext } from 'react-hook-form';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\n\nconst Description = ({\n name,\n description,\n helpCenter,\n}: {\n name: string;\n description: string;\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n}) => {\n return (\n <span>\n <span\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{ __html: sanitizeHtml(description) }}\n />\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__ForcedValue__HelpCenterLink'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </span>\n );\n};\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?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\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 descriptionSanitized = sanitizeHtml(\n statement?.description || description,\n );\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const titleSanitized = statement?.title\n ? sanitizeHtml(statement?.title)\n : sanitizeHtml(label);\n return (\n <div>\n {titleSanitized && (\n <p\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: titleSanitized,\n }}\n />\n )}\n <Description\n name={name}\n description={descriptionSanitized}\n helpCenter={helpCenter}\n />\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","fieldsMap","baseFields","FieldSetField","useEffect","jsx","jsxs","Description","__name","name","description","helpCenter","sanitizeHtml","ZendeskTriggerButton","ForcedValueField","value","statement","label","setValue","useFormContext","descriptionSanitized","useEffect","titleSanitized","Fragment","jsx","jsxs","checkFieldHasForcedValue","field","__name","JSONSchemaFormFields","fields","fieldsets","fieldValues","components","setValue","useFormContext","maybeFieldWithFlatFieldsets","getFieldsWithFlatFieldsets","ForcedValueField","Component","value","Statement","fieldType","FieldComponent","fieldsMap"]}
@@ -1,2 +0,0 @@
1
- import{a as f}from"./chunk-RGLQY27T.js";import{i as a,j as c,k as l,l as m,m as _}from"./chunk-7EONM7HL.js";import{a as u,b as R}from"./chunk-SNBAM7SA.js";import{a as F}from"./chunk-VIGKOVHP.js";import{a as p}from"./chunk-P37U34EQ.js";import{Fragment as g}from"react";import{jsx as e,jsxs as t}from"react/jsx-runtime";var w=p(({field:s,fieldData:i,fieldState:C})=>{let{name:r,label:d,description:n,options:b}=i;return e("fieldset",{className:F("space-y-3",`RemoteFlows__RadioGroupField__Item__${r}`),"data-field":r,children:t(a,{children:[e("legend",{children:d}),n&&e(m,{helpCenter:e(f,{helpCenter:i.meta?.helpCenter}),children:n}),e(l,{children:e(u,{"aria-label":d||r,onValueChange:o=>{s.onChange(o)},value:s.value,className:"flex flex-col space-y-3",children:b?.map(o=>e(g,{children:t(a,{"data-field":r,className:"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item",children:[e(l,{children:e(R,{value:o.value,className:"RemoteFlows__RadioField__Input",disabled:o.disabled})}),t("div",{children:[e(c,{className:"font-normal mb-0 RemoteFlows__RadioField__Label",children:o.label}),o.description&&e(m,{className:"mt-2",children:o.description})]})]})},o.value))})}),C.error&&e(_,{})]})})},"RadioGroupFieldDefault");export{w as a};
2
- //# sourceMappingURL=chunk-PVZTOW7Z.js.map
@@ -1,2 +0,0 @@
1
- import{b as t}from"./chunk-YHCH57B7.js";import{a as r}from"./chunk-P37U34EQ.js";import{jsx as n}from"react/jsx-runtime";function p({helpCenter:e}){return e?n(t,{zendeskId:e.id,children:e.callToAction}):null}r(p,"HelpCenter");export{p as a};
2
- //# sourceMappingURL=chunk-RGLQY27T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/shared/zendesk-drawer/HelpCenter.tsx"],"sourcesContent":["import { ZendeskTriggerButton } from './ZendeskTriggerButton';\nimport { HelpCenterDataProps } from '@/src/types/fields';\n\ntype HelpCenterProps = {\n helpCenter?: HelpCenterDataProps;\n};\n\nexport function HelpCenter({ helpCenter }: HelpCenterProps) {\n if (!helpCenter) {\n return null;\n }\n\n return (\n <ZendeskTriggerButton zendeskId={helpCenter.id}>\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n );\n}\n"],"mappings":"gFAaI,cAAAA,MAAA,oBANG,SAASC,EAAW,CAAE,WAAAC,CAAW,EAAoB,CAC1D,OAAKA,EAKHF,EAACG,EAAA,CAAqB,UAAWD,EAAW,GACzC,SAAAA,EAAW,aACd,EANO,IAQX,CAVgBE,EAAAH,EAAA","names":["jsx","HelpCenter","helpCenter","ZendeskTriggerButton","__name"]}
@@ -1,2 +0,0 @@
1
- import{a as r}from"./chunk-VIGKOVHP.js";import{a as t}from"./chunk-P37U34EQ.js";import{jsx as a}from"react/jsx-runtime";function s({className:e,direction:o="col",...n}){return a("div",{"data-slot":"card",className:r("RemoteFlows__Card bg-white text-card-foreground rounded-[10px] gap-4 border border-gray-200 px-10 py-14",o==="row"?"flex flex-row":"flex flex-col",e),...n})}t(s,"Card");function p({className:e,...o}){return a("header",{"data-slot":"card-header",className:r("flex flex-col gap-1.5 px-6",e),...o})}t(p,"CardHeader");function l({className:e,as:o,...n}){return a(o||"h2",{"data-slot":"card-title",className:r("leading-none font-semibold",e),...n})}t(l,"CardTitle");function i({className:e,...o}){return a("p",{"data-slot":"card-description",className:r("text-sm",e),...o})}t(i,"CardDescription");function m({className:e,...o}){return a("div",{"data-slot":"card-content",className:r("px-6",e),...o})}t(m,"CardContent");function f({className:e,...o}){return a("footer",{"data-slot":"card-footer",className:r("flex items-center px-6",e),...o})}t(f,"CardFooter");export{s as a,p as b,l as c,i as d,m as e,f};
2
- //# sourceMappingURL=chunk-TFSRZOMP.js.map
@@ -1,2 +0,0 @@
1
- import{f as x,g as y,h as d}from"./chunk-LXOYWRNU.js";import{a as j}from"./chunk-WVJDCDGZ.js";import{a as R}from"./chunk-O6H66UM2.js";import{a as p}from"./chunk-S5VSWHJY.js";import{A as S,E as w,G as v,H as O,J as E,O as q,T as P,g as f,i as h,j as g,n as b,o as C,w as F,x as _}from"./chunk-WQ4H5V7U.js";import{d as i}from"./chunk-KQPDXXG3.js";import{a as n}from"./chunk-P37U34EQ.js";import{useMutation as c,useQuery as u}from"@tanstack/react-query";var L=n(e=>{let{client:r}=i();return u({queryKey:["employment",e],retry:!1,enabled:!!e,select:n(({data:t})=>t?.data.employment,"select"),queryFn:n(async()=>{let t=await v({client:r,headers:{Authorization:""},path:{employment_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn")})},"useEmployment"),G=n(e=>{let{client:r}=i();return u({queryKey:["company",e],retry:!1,enabled:!!e,queryFn:n(async()=>{let t=await _({client:r,headers:{Authorization:""},path:{company_id:e}});if(t.error||!t.data)throw new Error("Failed to fetch employment data");return t},"queryFn"),select:n(({data:t})=>t.data.company,"select")})},"useCompany"),X=n(e=>{let{client:r}=i();return u({queryKey:["benefit-offers",e],retry:!1,enabled:!!e,queryFn:n(async()=>b({client:r,path:{employment_id:e}}).then(t=>{if(t.error||!t.data)throw new Error("Failed to fetch benefit offers data");return t}),"queryFn"),select:n(({data:t})=>t?.data?.reduce((s,o)=>({...s,[o.benefit_group.slug]:{value:o.benefit_tier?.slug??"no",...o.benefit_group?.filter?.slug?{filter:o.benefit_group?.filter?.slug}:{}}}),{}),"select")})},"useBenefitOffers"),Y=n(()=>{let{client:e}=i();return c({mutationFn:n(r=>P({client:e,headers:{Authorization:""},path:r}),"mutationFn")})},"useEmploymentInvite"),Z=n(()=>{let{client:e}=i();return c({mutationFn:n(r=>F({client:e,body:r}),"mutationFn")})},"useCreateReserveInvoice"),$=n(({countryCode:e,form:r,fieldValues:t,options:s,query:o={},jsonSchemaVersion:a})=>{let{client:l}=i(),U=a?{json_schema_version:a}:{};return u({queryKey:["onboarding-json-schema-form",e,r],retry:!1,queryFn:n(async()=>{let m=await S({client:l,headers:{Authorization:""},path:{country_code:e,form:r},query:{skip_benefits:!0,...o,...U}});if(m.error||!m.data)throw new Error("Failed to fetch onboarding schema");return m},"queryFn"),enabled:s?.queryOptions?.enabled,select:n(({data:m})=>{let B=m?.data||{};return p(B,t,s)},"select")})},"useJSONSchemaForm"),ee=n((e,r,t)=>{let{client:s}=i(),o={json_schema_version:d(t)};return u({queryKey:["benefit-offers-schema",e],retry:!1,enabled:!!e,queryFn:n(async()=>{let a=await w({client:s,path:{employment_id:e},query:o});if(a.error||!a.data)throw new Error("Failed to fetch benefit offers schema");return a},"queryFn"),select:n(({data:a})=>{let l=a?.data?.schema||{};return p(l,r,{jsfModify:t?.jsfModify?.benefits})},"select")})},"useBenefitOffersSchema"),te=n(e=>{let{client:r}=i(),t={json_schema_version:y(e)};return c({mutationFn:n(s=>h({client:r,headers:{Authorization:""},body:s,query:{...t}}),"mutationFn")})},"useCreateEmployment"),ne=n((e,r)=>{let{client:t}=i(),s={employment_basic_information_json_schema_version:y(r),contract_details_json_schema_version:x(r,e)||1};return c({mutationFn:n(({employmentId:o,...a})=>O({client:t,headers:{Authorization:""},body:a,path:{employment_id:o},query:{skip_benefits:!0,...s}}),"mutationFn")})},"useUpdateEmployment"),re=n(e=>{let{client:r}=i();return c({mutationFn:n(({employmentId:t,...s})=>{let o={json_schema_version:d(e)};return C({client:r,body:s,path:{employment_id:t},query:o})},"mutationFn")})},"useUpdateBenefitsOffers"),oe=n(e=>{let{client:r}=i(),{data:t,isLoading:s}=u({...R(r,"onboarding-countries"),select:n(a=>a.data?.data?.filter(l=>l.eor_onboarding).map(l=>({label:l.name,value:l.code}))||[],"select"),enabled:e?.queryOptions?.enabled}),o=p(j.data.schema,{},e);if(t){let a=o.fields.find(l=>l.name==="country");a&&(a.options=t)}return{isLoading:s,selectCountryForm:o}},"useCountriesSchemaField"),se=n(({type:e="spread"})=>{let{client:r}=i();return c({mutationFn:n(t=>(e==="no_spread"?f:q)({client:r,body:t}),"mutationFn")})},"useConvertCurrency"),ae=n(()=>{let{client:e}=i();return c({mutationFn:n(({employmentId:r,...t})=>E({client:e,path:{employment_id:r},body:t}),"mutationFn")})},"useUpsertContractEligibility"),ie=n((e,r,t=!0)=>{let{client:s}=i();return u({queryKey:["employment-onboarding-reserves-status",e,r],retry:!1,enabled:t&&!!e&&!!r,queryFn:n(async()=>{let o=await g({client:s,headers:{Authorization:""},path:{company_id:e,employment_id:r}});if(o.error||!o.data)throw new Error("Failed to fetch employment onboarding reserves status");return o},"queryFn"),select:n(({data:o})=>o?.data?.status,"select")})},"useEmploymentOnboardingReservesStatus");export{L as a,G as b,X as c,Y as d,Z as e,$ as f,ee as g,te as h,ne as i,re as j,oe as k,se as l,ae as m,ie as n};
2
- //# sourceMappingURL=chunk-U4QOJDBZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import { useMutation, useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { FieldValues } from 'react-hook-form';\nimport { Client } from '@/src/client/client';\nimport {\n ConvertCurrencyParams,\n CreateContractEligibilityParams,\n EmploymentCreateParams,\n EmploymentFullParams,\n getIndexBenefitOffer,\n getShowCompany,\n getShowCompanyEmploymentOnboardingReservesStatus,\n getShowEmployment,\n getShowFormCountry,\n getShowSchema,\n patchUpdateEmployment2,\n postConvertRawCurrencyConverter,\n postConvertWithSpreadCurrencyConverter,\n postCreateContractEligibility,\n postCreateEmployment2,\n postCreateRiskReserve,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\n\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport { OnboardingFlowProps } from '@/src/flows/Onboarding/types';\nimport {\n JSONSchemaFormResultWithFieldsets,\n JSONSchemaFormType,\n FlowOptions,\n} from '@/src/flows/types';\nimport {\n getContractDetailsSchemaVersion,\n getBasicInformationSchemaVersion,\n getBenefitOffersSchemaVersion,\n} from '@/src/flows/Onboarding/utils';\nimport { createHeadlessForm } from '@/src/common/createHeadlessForm';\nimport { countriesOptions } from '@/src/common/api/countries';\n\nexport const useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n select: ({ data }) => {\n return data?.data.employment;\n },\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n });\n};\n\nexport const useCompany = (companyId: string) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['company', companyId],\n retry: false,\n enabled: !!companyId,\n queryFn: async () => {\n const response = await getShowCompany({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n select: ({ data }) => {\n return data.data.company;\n },\n });\n};\n\nexport const useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getIndexBenefitOffer({\n client: client as Client,\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? 'no',\n ...(item.benefit_group?.filter?.slug\n ? { filter: item.benefit_group?.filter?.slug }\n : {}),\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\nexport const useCreateReserveInvoice = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: { employment_slug: string }) => {\n return postCreateRiskReserve({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nexport const useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n query = {},\n jsonSchemaVersion,\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } };\n query?: Record<string, unknown>;\n jsonSchemaVersion?: number | 'latest';\n}): UseQueryResult<JSONSchemaFormResultWithFieldsets> => {\n const { client } = useClient();\n const jsonSchemaQueryParam = jsonSchemaVersion\n ? {\n json_schema_version: jsonSchemaVersion,\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...query,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n enabled: options?.queryOptions?.enabled,\n select: ({ data }) => {\n const jsfSchema = data?.data || {};\n return createHeadlessForm(jsfSchema, fieldValues, options);\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = {\n json_schema_version: getBenefitOffersSchemaVersion(options),\n };\n\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\n client: client as Client,\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n const jsfSchema = data?.data?.schema || {};\n\n return createHeadlessForm(jsfSchema, fieldValues, {\n jsfModify: options?.jsfModify?.benefits,\n });\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = (\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = {\n json_schema_version: getBasicInformationSchemaVersion(options),\n };\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmployment = (\n countryCode: string,\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParams = {\n employment_basic_information_json_schema_version:\n getBasicInformationSchemaVersion(options),\n contract_details_json_schema_version:\n getContractDetailsSchemaVersion(options, countryCode) || 1,\n };\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchUpdateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n ...jsonSchemaQueryParams,\n },\n });\n },\n });\n};\n\nexport const useUpdateBenefitsOffers = (\n options?: OnboardingFlowProps['options'],\n) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n const jsonSchemaQueryParam = {\n json_schema_version: getBenefitOffersSchemaVersion(options),\n };\n\n return putUpdateBenefitOffer({\n client: client as Client,\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n },\n });\n};\n\nexport const useCountriesSchemaField = (\n options?: Omit<FlowOptions, 'jsonSchemaVersion'> & {\n queryOptions?: { enabled?: boolean };\n },\n) => {\n const { client } = useClient();\n const { data: countries, isLoading } = useQuery({\n ...countriesOptions(client as Client, 'onboarding-countries'),\n select: (response) => {\n return (\n response.data?.data\n ?.filter((country) => country.eor_onboarding)\n .map((country) => {\n return {\n label: country.name,\n value: country.code,\n };\n }) || []\n );\n },\n enabled: options?.queryOptions?.enabled,\n });\n\n const selectCountryForm = createHeadlessForm(\n selectCountryStepSchema.data.schema,\n {},\n options,\n );\n\n if (countries) {\n const countryField = selectCountryForm.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n }\n }\n\n return {\n isLoading,\n selectCountryForm,\n };\n};\n\nexport const useConvertCurrency = ({\n type = 'spread',\n}: {\n type?: 'spread' | 'no_spread';\n}) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: ConvertCurrencyParams) => {\n const apiFn =\n type === 'no_spread'\n ? postConvertRawCurrencyConverter\n : postConvertWithSpreadCurrencyConverter;\n return apiFn({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\nexport const useUpsertContractEligibility = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: { employmentId: string } & CreateContractEligibilityParams) => {\n return postCreateContractEligibility({\n client: client as Client,\n path: {\n employment_id: employmentId,\n },\n body: payload,\n });\n },\n });\n};\n\n/**\n * Hook to fetch onboarding reserves status for an employment\n * @param companyId - Company ID\n * @param employmentId - Employment ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with onboarding reserves status\n */\nexport const useEmploymentOnboardingReservesStatus = (\n companyId: string | undefined,\n employmentId: string | undefined,\n enabled = true,\n) => {\n const { client } = useClient();\n return useQuery({\n queryKey: [\n 'employment-onboarding-reserves-status',\n companyId,\n employmentId,\n ],\n retry: false,\n enabled: enabled && !!companyId && !!employmentId,\n queryFn: async () => {\n const response = await getShowCompanyEmploymentOnboardingReservesStatus({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId as string,\n employment_id: employmentId as string,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error(\n 'Failed to fetch employment onboarding reserves status',\n );\n }\n\n return response;\n },\n select: ({ data }) => data?.data?.status,\n });\n};\n"],"mappings":"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","names":["useMutation","useQuery","useEmployment","__name","employmentId","client","useClient","useQuery","data","response","getShowEmployment","useCompany","companyId","getShowCompany","useBenefitOffers","getIndexBenefitOffer","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useCreateReserveInvoice","postCreateRiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","query","jsonSchemaVersion","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","createHeadlessForm","useBenefitOffersSchema","getBenefitOffersSchemaVersion","getShowSchema","useCreateEmployment","getBasicInformationSchemaVersion","postCreateEmployment2","useUpdateEmployment","jsonSchemaQueryParams","getContractDetailsSchemaVersion","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useCountriesSchemaField","countries","isLoading","countriesOptions","country","selectCountryForm","selectCountryStepSchema","countryField","field","useConvertCurrency","type","postConvertRawCurrencyConverter","postConvertWithSpreadCurrencyConverter","useUpsertContractEligibility","postCreateContractEligibility","useEmploymentOnboardingReservesStatus","enabled","getShowCompanyEmploymentOnboardingReservesStatus"]}
@@ -1,2 +0,0 @@
1
- import{a as N}from"./chunk-SNECOPBD.js";import{i as U}from"./chunk-JEGVULKU.js";import{b as L,c as O,f as G}from"./chunk-AOSXULKY.js";import{a as I}from"./chunk-BYDQHL6O.js";import{a as z}from"./chunk-HJ7WOTV7.js";import{b as J}from"./chunk-YHCH57B7.js";import{c as p,h as g}from"./chunk-7EONM7HL.js";import{a as _,e as H}from"./chunk-VIGKOVHP.js";import{b as C}from"./chunk-KQPDXXG3.js";import{a as n}from"./chunk-P37U34EQ.js";import{Fragment as fe,useEffect as Pe,useRef as ge}from"react";import{jsx as Z}from"react/jsx-runtime";function q({description:e,label:t,name:i,minDate:l,maxDate:s,onChange:d,component:r,...c}){let{components:h}=C(),{control:u}=p(),F;c.meta?.mot&&typeof c.meta.mot=="number"?F=U(c.meta.mot):typeof l=="string"&&(F=new Date(`${l}T00:00:00`));let a;return s&&(a=new Date(`${s}T23:59:59`)),Z(g,{control:u,name:i,render:({field:f,fieldState:S})=>{let m=r||h?.date;if(!m)throw new Error(`Date picker component not found for field ${i}`);let y={description:e,label:t,name:i,onChange:d,...F&&{minDate:F.toISOString()},...a&&{maxDate:a.toISOString()},...c};return Z(m,{field:{...f,onChange:n(x=>{f.onChange(x),d?.(x)},"onChange")},fieldState:S,fieldData:y})}})}n(q,"DatePickerField");import{jsx as K}from"react/jsx-runtime";var xe=n((e,t)=>{if(!t)return null;for(let i of e)if(i.size>t){let l=Math.round(t/1048576),s=Math.round(i.size/(1024*1024));return`File "${i.name}" exceeds maximum size of ${l}MB (file is ${s}MB)`}return null},"validateFileSize");function Q({name:e,description:t,label:i,multiple:l,onChange:s,component:d,accept:r,maxSize:c,...h}){let{components:u}=C(),{control:F,setError:a,clearErrors:f}=p(),S=n(async(m,y)=>{let x=xe(m,c);if(x){a(e,{message:x});return}f(e),y.onChange(m),s?.(m)},"handleOnChange");return K(g,{control:F,name:e,render:({field:m,fieldState:y})=>{let x=d||u.file;if(!x)throw new Error(`File upload component not found for field ${e}`);let D={name:e,description:t,label:i,multiple:l,accept:r,maxFileSize:c,...h};return K(x,{field:{...m,value:m.value,onChange:n(async T=>S(T,m),"onChange")},fieldState:y,fieldData:D})}})}n(Q,"FileUploadField");import{jsx as X}from"react/jsx-runtime";function M(e){let{components:t}=C(),{control:i}=p(),l=e.component||t.number;if(!l)throw new Error(`Number component not found for field ${e.name}`);return X(g,{control:i,name:e.name,render:({field:s,fieldState:d})=>X(l,{field:{...s,onChange:n(r=>{s.onChange(r),e.onChange?.(r)},"onChange")},fieldState:d,fieldData:e})})}n(M,"NumberField");import{jsx as Y}from"react/jsx-runtime";function j({name:e,defaultValue:t,description:i,label:l,options:s,onChange:d,component:r,...c}){let{components:h}=C(),{control:u}=p();return Y(g,{control:u,name:e,defaultValue:t,render:({field:F,fieldState:a})=>{let f=r||h?.radio;if(!f)throw new Error(`Radio group component not found for field ${e}`);let S={name:e,defaultValue:t,description:i,label:l,options:s,...c};return Y(f,{field:{...F,onChange:n(m=>{F.onChange(m),d?.(m)},"onChange")},fieldState:a,fieldData:S})}})}n(j,"RadioGroupField");import{jsx as ee}from"react/jsx-runtime";function oe({label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,component:r,...c}){let{control:h}=p(),{components:u}=C();return ee(g,{defaultValue:l,control:h,name:t,render:({field:F,fieldState:a})=>{let f=r||u?.select;if(!f)throw new Error(`Select component not found for field ${t}`);let S={label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,...c};return ee(f,{field:{...F,onChange:n(m=>{let y=c.jsonType==="number"?Number(m):m;F.onChange(y),d?.(y)},"onChange")},fieldState:a,fieldData:S})}})}n(oe,"SelectField");import{jsx as te}from"react/jsx-runtime";function ne({label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,$meta:r,component:c,...h}){let{control:u}=p(),{components:F}=C();return te(g,{defaultValue:l,control:u,name:t,render:({field:a,fieldState:f})=>{let S=c||F.countries;if(!S)throw new Error(`Country component not found for field ${t}`);let m={label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,$meta:r,...h};return te(S,{field:{...a,onChange:n(y=>{a.onChange(y),d?.(y)},"onChange")},fieldState:f,fieldData:m})}})}n(ne,"CountryField");import{jsx as re}from"react/jsx-runtime";function ie({name:e,description:t,label:i,onChange:l,maxLength:s,component:d,...r}){let{components:c}=C(),{control:h}=p();return re(g,{control:h,name:e,render:({field:u,fieldState:F})=>{let a=d||c.textarea;if(!a)throw new Error(`Text area component not found for field ${e}`);let f={name:e,description:t,label:i,maxLength:s,...r};return re(a,{field:{...u,onChange:n(S=>{u.onChange(S),l?.(S)},"onChange")},fieldState:F,fieldData:f})}})}n(ie,"TextAreaField");import{jsx as le}from"react/jsx-runtime";function me(e){let{components:t}=C(),{control:i}=p(),l=e.component||t.email;if(!l)throw new Error(`Email component not found for field ${e.name}`);return le(g,{control:i,name:e.name,render:({field:s,fieldState:d})=>le(l,{field:{...s,onChange:n(r=>{s.onChange(r),e.onChange?.(r)},"onChange")},fieldState:d,fieldData:e})})}n(me,"EmailField");import{jsx as se}from"react/jsx-runtime";function ae(e){let{control:t}=p();return se(g,{control:t,name:e.name,render:({field:i})=>se("input",{...i,type:"hidden"})})}n(ae,"HiddenField");import{useEffect as be,useState as Te}from"react";import{jsx as de}from"react/jsx-runtime";function pe(e){let{components:t}=C(),{setValue:i,control:l,watch:s}=p(),d=s(e.name),[r,c]=Te(d),{workHoursSummary:h,breakSummary:u}=O(r),F=L(r);be(()=>{i(e.name,r)},[r,e.name,i]);function a(m){c(m)}n(a,"onSubmit");let f=e.component||t["work-schedule"];if(!f)throw new Error(`Work schedule component not found for field ${e.name}`);let S={...e,onSubmit:a,currentSchedule:r,defaultFormattedValue:{workHoursSummary:h,breakSummary:u,totalWorkHours:F}};return de(g,{control:l,name:e.name,render:({field:m,fieldState:y})=>de(f,{field:{...m,onChange:n(x=>{m.onChange(x),e.onChange?.(x)},"onChange")},fieldState:y,fieldData:S})})}n(pe,"WorkScheduleField");import{jsx as ce}from"react/jsx-runtime";function ue({label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,component:r,...c}){let{control:h}=p(),{components:u}=C();return ce(g,{defaultValue:l,control:h,name:t,render:({field:F,fieldState:a})=>{let f=r||u?.["multi-select"];if(!f)throw new Error(`Multi select component not found for field ${t}`);let S={label:e,name:t,options:i,defaultValue:l,description:s,onChange:d,...c};return ce(f,{field:{...F,onChange:n(m=>{F.onChange(m),d?.(m)},"onChange")},fieldState:a,fieldData:S})}})}n(ue,"MultiSelectField");import{jsx as $e}from"react/jsx-runtime";var Fe=n(e=>$e(M,{maxLength:15,...e}),"MoneyField");var A={checkbox:G,text:z,email:me,money:Fe,select:oe,"multi-select":ue,radio:j,number:M,file:Q,date:q,textarea:ie,countries:ne,hidden:ae,"work-schedule":pe};import{Fragment as we,jsx as b,jsxs as P}from"react/jsx-runtime";function Ce({label:e,name:t,fields:i,description:l,components:s,statement:d,isFlatFieldset:r,extra:c,variant:h="outset",features:u,meta:F}){let{helpCenter:a}=F||{},{watch:f,setValue:S,trigger:m,formState:y}=p(),{components:x}=C(),D=u?.toggle?.stateField,T=D?f(D):u?.toggle?.defaultExpanded??!0,Se=i.map(({name:o})=>`${t}.${o}`),E=f(Se),B=ge(E),k=ge(null),he=n(()=>{D&&S(D,!T)},"toggleExpanded");Pe(()=>{let o=E,$=B.current,R=y.isSubmitted||y.submitCount>0,v=!1;for(let w=0;w<o.length;w++)if(o[w]!==void 0&&$[w]!==o[w]){v=!0;break}return v&&R&&(k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{m()},50)),B.current=[...o],()=>{k.current&&clearTimeout(k.current)}},[E,m,y.isSubmitted,y.submitCount]);let ye=x?.fieldsetToggle||I,V=`${t}-content`,W=`${t}-header`;return P("fieldset",{className:_("border-1 border-input p-4 rounded-xl","RemoteFlows__FieldSetField",`RemoteFlows__FieldSetField__${t}`),children:[b("legend",{className:_("text-sm font-semibold px-2",h==="inset"&&"hidden"),children:e}),a?.callToAction&&a?.id&&h==="outset"&&b(J,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:a.id,children:a.callToAction}),h==="inset"&&P(we,{children:[P("div",{className:"RemoteFlows__FieldSetField__Header",id:W,"data-state":T?"expanded":"collapsed","aria-expanded":T,children:[b("h3",{className:_("RemoteFlows__FieldSetField__Title"),children:e}),u?.toggle?.enabled&&b(ye,{isExpanded:T,onToggle:he,"aria-expanded":T,"aria-controls":V,"aria-label":`${T?"Hide":"Show"} ${e}`,className:_("RemoteFlows__FieldSetField__Toggle",u.toggle?.className),children:T?u.toggle.labels?.collapse??"Remove":u.toggle.labels?.expand??"Define"})]}),a?.callToAction&&a?.id&&b(J,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:a.id,children:a.callToAction})]}),T&&P("div",{id:V,"aria-labelledby":W,role:"region",children:[l?b("div",{className:"mb-5 RemoteFlows__FieldSetField__Description",dangerouslySetInnerHTML:{__html:H(l)}}):null,P("div",{className:"grid gap-4",children:[i.map(o=>{if(o.calculateDynamicProperties&&(o={...o,...o.calculateDynamicProperties(E,o)||{}}),o.isVisible===!1||o.deprecated)return null;let $=o.type;if($==="fieldset")return b(Ce,{...o,name:`${r?o.name:`${t}.${o.name}`}`,components:s},`${r?o.name:`${t}.${o.name}`}`);if($==="fieldset-flat")return b(Ce,{...o,name:`${r?o.name:`${t}.${o.name}`}`,components:s,isFlatFieldset:!0},`${r?o.name:`${t}.${o.name}`}`);let R=A[$];if(o.Component){let{Component:v}=o;return P(fe,{children:[b(v,{setValue:w=>S(r?o.name:`${t}.${o.name}`,w),...o}),o.statement?b(N,{...o.statement}):null,o.extra?o.extra:null]},`${r?o.name:`${t}.${o.name}`}`)}return R?($==="select"&&o.multiple&&(R=A["multi-select"]),P(fe,{children:[b(R,{...o,name:`${r?o.name:`${t}.${o.name}`}`,component:s?.[$]}),o.statement?b(N,{...o.statement}):null,o.extra?o.extra:null]},`${r?o.name:`${t}.${o.name}`}`)):P("p",{className:"error",children:["Field type ",$," not supported"]})}),c||null,d?b(N,{...d}):null]})]})]})}n(Ce,"FieldSetField");export{A as a,Ce as b};
2
- //# sourceMappingURL=chunk-UTLIN5S6.js.map