@remoteoss/remote-flows 1.24.1 → 1.26.0

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 (502) hide show
  1. package/dist/ButtonDefault-EPOEMC2J.js +2 -0
  2. package/dist/CheckboxFieldDefault-SQULI7DO.js +2 -0
  3. package/dist/CountryFieldDefault-4YHZACZ5.js +2 -0
  4. package/dist/DatePickerFieldDefault-B7WY5H6M.js +2 -0
  5. package/dist/DrawerDefault-WN7Z4LY7.js +2 -0
  6. package/dist/EmailFieldDefault-LTDNKVUW.js +2 -0
  7. package/dist/FieldsetToggleButtonDefault-4RZ3GTDF.js +2 -0
  8. package/dist/FileUploadFieldDefault-HSLW6SHB.js +2 -0
  9. package/dist/MultiSelectFieldDefault-GSJWVA5H.js +2 -0
  10. package/dist/NumberFieldDefault-NVOVVUNK.js +2 -0
  11. package/dist/RadioGroupFieldDefault-G637DHSW.js +2 -0
  12. package/dist/SelectFieldDefault-WU4CDEZD.js +2 -0
  13. package/dist/StatementDefault-T3RCCUE5.js +2 -0
  14. package/dist/TableFieldDefault-S5XRYF36.js +2 -0
  15. package/dist/TelFieldDefault-D5EW44ZU.js +2 -0
  16. package/dist/TextAreaFieldDefault-32E5FGS7.js +2 -0
  17. package/dist/TextFieldDefault-FCVIHZTV.js +2 -0
  18. package/dist/WorkScheduleFieldDefault-5JZPKI2P.js +2 -0
  19. package/dist/ZendeskDrawerDefault-WQ32QQVE.js +2 -0
  20. package/dist/ZendeskDrawerDefault-WQ32QQVE.js.map +1 -0
  21. package/dist/chunk-2P4RPBIO.js +2 -0
  22. package/dist/{chunk-ECGWCDC3.js.map → chunk-2P4RPBIO.js.map} +1 -1
  23. package/dist/{chunk-BYDQHL6O.js → chunk-2UZ72KAQ.js} +2 -2
  24. package/dist/{chunk-ADTGWDQ7.js → chunk-33IPP266.js} +2 -2
  25. package/dist/{chunk-UJXUKEQU.js → chunk-36NGPS63.js} +2 -2
  26. package/dist/{chunk-OQ5WZBDA.js → chunk-3SECILYU.js} +2 -2
  27. package/dist/{chunk-C4MRFGQG.js → chunk-3VWXALRD.js} +2 -2
  28. package/dist/{chunk-IJ2BGCAF.js → chunk-45K26OSG.js} +2 -2
  29. package/dist/{chunk-IJ2BGCAF.js.map → chunk-45K26OSG.js.map} +1 -1
  30. package/dist/chunk-4EDPYN5F.js +2 -0
  31. package/dist/chunk-4EDPYN5F.js.map +1 -0
  32. package/dist/{chunk-VB6KFDBL.js → chunk-5EDCZGZV.js} +2 -2
  33. package/dist/{chunk-6QEF52IP.js → chunk-5EHJ5HTV.js} +2 -2
  34. package/dist/{chunk-YOFBRZUZ.js → chunk-5F5BHJQO.js} +2 -2
  35. package/dist/chunk-5F5H7LZT.js +2 -0
  36. package/dist/chunk-5F5H7LZT.js.map +1 -0
  37. package/dist/chunk-626FTNKA.js +2 -0
  38. package/dist/chunk-626FTNKA.js.map +1 -0
  39. package/dist/{chunk-3DMWQJ5W.js → chunk-64AJX2DH.js} +2 -2
  40. package/dist/chunk-6I5FRZSX.js +2 -0
  41. package/dist/{chunk-K5Y67GIG.js.map → chunk-6I5FRZSX.js.map} +1 -1
  42. package/dist/{chunk-MSBCYMSH.js → chunk-6SDLOAEO.js} +2 -2
  43. package/dist/{chunk-TNN3W5TU.js → chunk-6Y4QJ7WK.js} +2 -2
  44. package/dist/chunk-72RFYT5Y.js +2 -0
  45. package/dist/chunk-72RFYT5Y.js.map +1 -0
  46. package/dist/{chunk-L3LOATSG.js → chunk-75P5LUKA.js} +2 -2
  47. package/dist/{chunk-56UXOD27.js → chunk-7N2A2ZJ5.js} +2 -2
  48. package/dist/{chunk-H5PRUDCX.js → chunk-7VKV5G6N.js} +2 -2
  49. package/dist/{chunk-FAIEJW57.js → chunk-7X56CYUV.js} +2 -2
  50. package/dist/chunk-7X56CYUV.js.map +1 -0
  51. package/dist/chunk-7Z4MWUCV.js +2 -0
  52. package/dist/{chunk-JI5PQLWS.js.map → chunk-7Z4MWUCV.js.map} +1 -1
  53. package/dist/{chunk-SNECOPBD.js → chunk-ACKYD4QC.js} +2 -2
  54. package/dist/{chunk-G5O2CM6V.js → chunk-AMSYQQG7.js} +2 -2
  55. package/dist/{chunk-AS77PXWM.js → chunk-AXGWQVCT.js} +2 -2
  56. package/dist/{chunk-NAMR4DA5.js → chunk-B5UGFNCU.js} +2 -2
  57. package/dist/{chunk-WD2JGIDK.js → chunk-BAE2OWEH.js} +2 -2
  58. package/dist/{chunk-LSVH4U4W.js → chunk-BAKE7YEE.js} +2 -2
  59. package/dist/chunk-BFSBZTDB.js +2 -0
  60. package/dist/{chunk-EIVCBH53.js.map → chunk-BFSBZTDB.js.map} +1 -1
  61. package/dist/{chunk-2AYGZ4RY.js → chunk-BI3PHE5N.js} +2 -2
  62. package/dist/{chunk-7BGANM2R.js → chunk-BMLTMXEK.js} +2 -2
  63. package/dist/{chunk-4FMQTOXJ.js → chunk-BS4A6UYL.js} +2 -2
  64. package/dist/{chunk-2V4CTIAG.js → chunk-BTP3NN3N.js} +2 -2
  65. package/dist/{chunk-SXKIRVA2.js → chunk-C6ARUHCB.js} +2 -2
  66. package/dist/chunk-CEIDSIMA.js +2 -0
  67. package/dist/chunk-CEIDSIMA.js.map +1 -0
  68. package/dist/chunk-CLAVZQBC.js +2 -0
  69. package/dist/chunk-CLAVZQBC.js.map +1 -0
  70. package/dist/chunk-CUSAI2ZT.js +2 -0
  71. package/dist/chunk-CUSAI2ZT.js.map +1 -0
  72. package/dist/{chunk-KKMW7Q42.js → chunk-DEVQ2NNK.js} +2 -2
  73. package/dist/{chunk-42R2H2DW.js → chunk-DN6BXTAC.js} +1 -1
  74. package/dist/chunk-DN6BXTAC.js.map +1 -0
  75. package/dist/{chunk-SNBAM7SA.js → chunk-DYNVJFJH.js} +2 -2
  76. package/dist/{chunk-KXT6ACFL.js → chunk-EC6ZM3SX.js} +2 -2
  77. package/dist/chunk-ERY43GUW.js +2 -0
  78. package/dist/chunk-ERY43GUW.js.map +1 -0
  79. package/dist/chunk-FFVTWWGX.js +2 -0
  80. package/dist/chunk-FFVTWWGX.js.map +1 -0
  81. package/dist/{chunk-SADMJJDB.js → chunk-FIM36WNY.js} +2 -2
  82. package/dist/{chunk-6JTHV4QS.js → chunk-FOBUW3RN.js} +2 -2
  83. package/dist/{chunk-TQXCLXWH.js → chunk-FTC4EFBO.js} +2 -2
  84. package/dist/{chunk-NKMO2WW3.js → chunk-FZO24P53.js} +2 -2
  85. package/dist/{chunk-C32W6TCT.js → chunk-FZVUO3UU.js} +2 -2
  86. package/dist/chunk-GCPDTL2M.js +2 -0
  87. package/dist/chunk-GCPDTL2M.js.map +1 -0
  88. package/dist/{chunk-VY6W6W6F.js → chunk-GHYCSTSK.js} +2 -2
  89. package/dist/{chunk-SXM3GJ5M.js → chunk-HMVU7HJL.js} +2 -2
  90. package/dist/{chunk-QLYFMDLB.js → chunk-I2DXGO23.js} +2 -2
  91. package/dist/{chunk-K4YQQMHD.js → chunk-IK27ZFUU.js} +2 -2
  92. package/dist/{chunk-CKVI2UDU.js → chunk-INV4YWPR.js} +2 -2
  93. package/dist/{chunk-7SO6WCYM.js → chunk-IY3ASS7L.js} +2 -2
  94. package/dist/{chunk-JF3KLAB5.js → chunk-JFD2OJ6L.js} +2 -2
  95. package/dist/{chunk-NAF6LRSS.js → chunk-JMDINYDB.js} +2 -2
  96. package/dist/{chunk-RDYN6W2A.js → chunk-JWP4HAIS.js} +2 -2
  97. package/dist/{chunk-R4X2WQXX.js → chunk-JXWFFVQO.js} +2 -2
  98. package/dist/{chunk-PZAYG2DF.js → chunk-K56VMRZ5.js} +2 -2
  99. package/dist/chunk-KFYWUBRS.js +2 -0
  100. package/dist/{chunk-LNV36S6D.js.map → chunk-KFYWUBRS.js.map} +1 -1
  101. package/dist/{chunk-2K2RK7RF.js → chunk-KJMPEOZ7.js} +2 -2
  102. package/dist/{chunk-KM7CQTD5.js → chunk-KKCYP5TA.js} +2 -2
  103. package/dist/{chunk-KM7CQTD5.js.map → chunk-KKCYP5TA.js.map} +1 -1
  104. package/dist/chunk-KLN2FG5Y.js +2 -0
  105. package/dist/{chunk-JTMJKRH7.js.map → chunk-KLN2FG5Y.js.map} +1 -1
  106. package/dist/chunk-KMBA73YG.js +2 -0
  107. package/dist/chunk-KMBA73YG.js.map +1 -0
  108. package/dist/{chunk-L5DII4MV.js → chunk-KVMWDA6O.js} +2 -2
  109. package/dist/{chunk-DXIJUMLU.js → chunk-LBJAKZ6V.js} +2 -2
  110. package/dist/{chunk-VWBA3U4U.js → chunk-LFYDEIZG.js} +2 -2
  111. package/dist/chunk-LX3JPBUV.js +2 -0
  112. package/dist/{chunk-YMJ3HQTG.js.map → chunk-LX3JPBUV.js.map} +1 -1
  113. package/dist/{chunk-HIFEVMKP.js → chunk-NORWRQQM.js} +2 -2
  114. package/dist/chunk-NUD662HZ.js +2 -0
  115. package/dist/{chunk-TNYFIB6U.js.map → chunk-NUD662HZ.js.map} +1 -1
  116. package/dist/{chunk-HNCOYMS5.js → chunk-O6H23YQW.js} +2 -2
  117. package/dist/chunk-OCTM6K3V.js +2 -0
  118. package/dist/{chunk-6GCLDEJP.js.map → chunk-OCTM6K3V.js.map} +1 -1
  119. package/dist/{chunk-RAH453TV.js → chunk-OJTYP5W7.js} +2 -2
  120. package/dist/chunk-OSQ6VUDM.js +2 -0
  121. package/dist/chunk-OSQ6VUDM.js.map +1 -0
  122. package/dist/{chunk-VPSESR6G.js → chunk-OXCSFW3F.js} +2 -2
  123. package/dist/{chunk-T4YYYCSD.js → chunk-P4TKMCSQ.js} +2 -2
  124. package/dist/chunk-P4TKMCSQ.js.map +1 -0
  125. package/dist/chunk-POKPAJNL.js +2 -0
  126. package/dist/{chunk-B4E43MXD.js.map → chunk-POKPAJNL.js.map} +1 -1
  127. package/dist/{chunk-AYC6DTFV.js → chunk-PX6B2DBO.js} +2 -2
  128. package/dist/{chunk-BNQFPYNQ.js → chunk-PZFFXEI3.js} +2 -2
  129. package/dist/{chunk-7QXULBD7.js → chunk-QLJMIWS4.js} +2 -2
  130. package/dist/chunk-R47Q7R6C.js +8 -0
  131. package/dist/chunk-R47Q7R6C.js.map +1 -0
  132. package/dist/{chunk-NNFWLL7F.js → chunk-R5WFXN2Z.js} +2 -2
  133. package/dist/{chunk-UQBKFWUI.js → chunk-R7WSWTCF.js} +2 -2
  134. package/dist/{chunk-XBPTFEGC.js → chunk-RD5FPT3Y.js} +2 -2
  135. package/dist/{chunk-JQJBDHAL.js → chunk-RPCS3K2I.js} +2 -2
  136. package/dist/{chunk-H5QXOIKS.js → chunk-RRZ2GPQS.js} +2 -2
  137. package/dist/{chunk-YWOJ4NKF.js → chunk-RUYVQ6R6.js} +2 -2
  138. package/dist/{chunk-7V2QPZ2F.js → chunk-SJVCXKRO.js} +2 -2
  139. package/dist/{chunk-VK7T332E.js → chunk-SP2V52RP.js} +2 -2
  140. package/dist/chunk-T4Y4D743.js +2 -0
  141. package/dist/chunk-T4Y4D743.js.map +1 -0
  142. package/dist/{chunk-MSEHAEEK.js → chunk-TFJOJCCS.js} +2 -2
  143. package/dist/chunk-TIJRONPS.js +2 -0
  144. package/dist/chunk-TIJRONPS.js.map +1 -0
  145. package/dist/{chunk-BZAO32QW.js → chunk-TUPZTWGP.js} +2 -2
  146. package/dist/chunk-TVBZT6FA.js +2 -0
  147. package/dist/chunk-TVBZT6FA.js.map +1 -0
  148. package/dist/chunk-TXEONNPV.js +2 -0
  149. package/dist/chunk-TXEONNPV.js.map +1 -0
  150. package/dist/{chunk-WRRTZ2AL.js → chunk-UBNSYRKM.js} +2 -2
  151. package/dist/{chunk-3C6N7DK6.js → chunk-UN4RAIAR.js} +2 -2
  152. package/dist/{chunk-AS6KFUXS.js → chunk-UZNF4JV3.js} +2 -2
  153. package/dist/{chunk-3BBQDNZD.js → chunk-V5OIMFSH.js} +2 -2
  154. package/dist/{chunk-7ZFZYZSP.js → chunk-VDVWAYXP.js} +2 -2
  155. package/dist/{chunk-7G5JSUZU.js → chunk-VHAJRKCI.js} +2 -2
  156. package/dist/{chunk-OK2NP3L5.js → chunk-VLVKKSJP.js} +2 -2
  157. package/dist/{chunk-OK2NP3L5.js.map → chunk-VLVKKSJP.js.map} +1 -1
  158. package/dist/{chunk-BAMGHBLT.js → chunk-VSXPCSKU.js} +2 -2
  159. package/dist/{chunk-UMVA4SIV.js → chunk-W2ZXKNL4.js} +2 -2
  160. package/dist/{chunk-MP3VDCI7.js → chunk-XADVV6OP.js} +2 -2
  161. package/dist/{chunk-R3BBN7TV.js → chunk-XHZHFM2J.js} +2 -2
  162. package/dist/{chunk-W6OOI5NF.js → chunk-XUT44QU6.js} +2 -2
  163. package/dist/{chunk-GOTY4N6S.js → chunk-XXXLKG43.js} +2 -2
  164. package/dist/{chunk-547UHEDI.js → chunk-YYMGZZTO.js} +2 -2
  165. package/dist/{chunk-MG4PHNSS.js → chunk-ZS7YCDY6.js} +2 -2
  166. package/dist/{chunk-JKB4KOVF.js → chunk-ZYAMVSAL.js} +2 -2
  167. package/dist/default-components.d.ts +2 -3
  168. package/dist/default-components.js +1 -1
  169. package/dist/default-components.js.map +1 -1
  170. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  171. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  172. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -4
  173. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  174. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  175. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  176. package/dist/flows/ContractAmendment/context.d.ts +3 -4
  177. package/dist/flows/ContractAmendment/hooks.d.ts +3 -4
  178. package/dist/flows/ContractAmendment/hooks.js +1 -1
  179. package/dist/flows/ContractAmendment/index.d.ts +3 -4
  180. package/dist/flows/ContractAmendment/index.js +1 -1
  181. package/dist/flows/ContractAmendment/types.d.ts +2 -3
  182. package/dist/flows/ContractAmendment/utils.d.ts +2 -3
  183. package/dist/flows/ContractAmendment/utils.js +1 -1
  184. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -6
  185. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  186. package/dist/flows/ContractorOnboarding/api.d.ts +3 -4
  187. package/dist/flows/ContractorOnboarding/api.js +1 -1
  188. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -5
  189. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  190. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -6
  191. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  192. package/dist/flows/ContractorOnboarding/components/ContractPreviewHeader.d.ts +2 -3
  193. package/dist/flows/ContractorOnboarding/components/ContractPreviewStatement.d.ts +2 -3
  194. package/dist/flows/ContractorOnboarding/components/ContractPreviewStatement.js +1 -1
  195. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -6
  196. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  197. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -6
  198. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  199. package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.d.ts +5 -6
  200. package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.js +1 -1
  201. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -4
  202. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  203. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -6
  204. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  205. package/dist/flows/ContractorOnboarding/components/SaveDraftButton.d.ts +3 -4
  206. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -5
  207. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  208. package/dist/flows/ContractorOnboarding/components/StatementOfWorkDisclaimer.js +1 -1
  209. package/dist/flows/ContractorOnboarding/context.d.ts +6 -7
  210. package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -6
  211. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  212. package/dist/flows/ContractorOnboarding/index.d.ts +5 -6
  213. package/dist/flows/ContractorOnboarding/index.js +1 -1
  214. package/dist/flows/ContractorOnboarding/jsfModify.d.ts +5 -6
  215. package/dist/flows/ContractorOnboarding/jsfModify.js +1 -1
  216. package/dist/flows/ContractorOnboarding/types.d.ts +5 -6
  217. package/dist/flows/ContractorOnboarding/utils.d.ts +4 -5
  218. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -4
  219. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  220. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -4
  221. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  222. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  223. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  224. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -3
  225. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  226. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -3
  227. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.js +1 -1
  228. package/dist/flows/CostCalculator/api.d.ts +2 -3
  229. package/dist/flows/CostCalculator/api.js +1 -1
  230. package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -3
  231. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  232. package/dist/flows/CostCalculator/context.d.ts +3 -4
  233. package/dist/flows/CostCalculator/hooks.d.ts +3 -4
  234. package/dist/flows/CostCalculator/hooks.js +1 -1
  235. package/dist/flows/CostCalculator/index.d.ts +3 -4
  236. package/dist/flows/CostCalculator/index.js +1 -1
  237. package/dist/flows/CostCalculator/types.d.ts +2 -3
  238. package/dist/flows/CostCalculator/utils.d.ts +3 -4
  239. package/dist/flows/CostCalculator/utils.js +1 -1
  240. package/dist/flows/CreateCompany/CreateCompany.d.ts +4 -5
  241. package/dist/flows/CreateCompany/CreateCompany.js +1 -1
  242. package/dist/flows/CreateCompany/api.d.ts +2 -3
  243. package/dist/flows/CreateCompany/api.js +1 -1
  244. package/dist/flows/CreateCompany/components/AddressDetailsStep.d.ts +4 -5
  245. package/dist/flows/CreateCompany/components/AddressDetailsStep.js +1 -1
  246. package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.d.ts +4 -5
  247. package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.js +1 -1
  248. package/dist/flows/CreateCompany/components/CreateCompanyForm.d.ts +2 -3
  249. package/dist/flows/CreateCompany/components/CreateCompanyForm.js +1 -1
  250. package/dist/flows/CreateCompany/context.d.ts +4 -5
  251. package/dist/flows/CreateCompany/hooks.d.ts +4 -5
  252. package/dist/flows/CreateCompany/hooks.js +1 -1
  253. package/dist/flows/CreateCompany/index.d.ts +4 -5
  254. package/dist/flows/CreateCompany/index.js +1 -1
  255. package/dist/flows/CreateCompany/types.d.ts +4 -5
  256. package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -5
  257. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  258. package/dist/flows/Onboarding/api.d.ts +5 -9
  259. package/dist/flows/Onboarding/api.js +1 -1
  260. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -3
  261. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  262. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -5
  263. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  264. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -5
  265. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  266. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -5
  267. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  268. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -5
  269. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  270. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -4
  271. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  272. package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -5
  273. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -4
  274. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -5
  275. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  276. package/dist/flows/Onboarding/context.d.ts +14 -8
  277. package/dist/flows/Onboarding/hooks.d.ts +4 -5
  278. package/dist/flows/Onboarding/hooks.js +1 -1
  279. package/dist/flows/Onboarding/index.d.ts +4 -5
  280. package/dist/flows/Onboarding/index.js +1 -1
  281. package/dist/flows/Onboarding/types.d.ts +4 -5
  282. package/dist/flows/Onboarding/utils.d.ts +4 -5
  283. package/dist/flows/Onboarding/utils.js +1 -1
  284. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -5
  285. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  286. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -5
  287. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  288. package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -5
  289. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  290. package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -5
  291. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  292. package/dist/flows/Termination/TerminationFlow.d.ts +4 -5
  293. package/dist/flows/Termination/TerminationFlow.js +1 -1
  294. package/dist/flows/Termination/TerminationForm.d.ts +4 -5
  295. package/dist/flows/Termination/TerminationForm.js +1 -1
  296. package/dist/flows/Termination/api.d.ts +5 -6
  297. package/dist/flows/Termination/api.js +1 -1
  298. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation.js +1 -1
  299. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  300. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +6 -7
  301. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  302. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +6 -7
  303. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  304. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +6 -7
  305. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  306. package/dist/flows/Termination/components/TerminationReasonsDetailContent/TerminationReasonsDetailContent.js +1 -1
  307. package/dist/flows/Termination/context.d.ts +4 -5
  308. package/dist/flows/Termination/hooks.d.ts +4 -5
  309. package/dist/flows/Termination/hooks.js +1 -1
  310. package/dist/flows/Termination/index.d.ts +6 -7
  311. package/dist/flows/Termination/index.js +1 -1
  312. package/dist/flows/Termination/json-schemas/schema.d.ts +7 -8
  313. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  314. package/dist/flows/Termination/types.d.ts +4 -5
  315. package/dist/flows/Termination/utils.d.ts +4 -5
  316. package/dist/flows/Termination/utils.js +1 -1
  317. package/dist/flows/types.d.ts +2 -3
  318. package/dist/flows/utils.d.ts +6 -2
  319. package/dist/flows/utils.js +1 -1
  320. package/dist/index.css +2 -2
  321. package/dist/index.css.map +1 -1
  322. package/dist/index.d.ts +11 -12
  323. package/dist/index.js +2 -2
  324. package/dist/index.js.map +1 -1
  325. package/dist/internals.d.ts +6 -7
  326. package/dist/internals.js +1 -1
  327. package/dist/{mutations-BsydWn3-.d.ts → mutations-BlHJKh7X.d.ts} +1 -1
  328. package/dist/{remoteFlows-BVt9wH8Z.d.ts → remoteFlows-BgpcnCNA.d.ts} +44 -4
  329. package/dist/styles.css +2 -2
  330. package/dist/styles.css.map +1 -1
  331. package/dist/{types-BUI5G3ML.d.ts → types-BBgv8INf.d.ts} +6 -6
  332. package/dist/{types-C0ri3b3L.d.ts → types-CRnEmzMD.d.ts} +1 -1
  333. package/dist/{types-BfQMv-8p.d.ts → types-DEzrQ-MU.d.ts} +2 -2
  334. package/dist/{types-uW0BsP56.d.ts → types-nfUNaXC-.d.ts} +3 -3
  335. package/dist/{types-C0m9mu0v.d.ts → types-x02L1Qo9.d.ts} +41 -11
  336. package/dist/{types.gen-Oz2Tvvr6.d.ts → types.gen-Dgw1W-SB.d.ts} +74 -21
  337. package/dist/{utils-Db2G1Kxo.d.ts → utils-Dg9zSNDT.d.ts} +1 -1
  338. package/package.json +31 -38
  339. package/dist/ButtonDefault-2YV2Z474.js +0 -2
  340. package/dist/CheckboxFieldDefault-55JIXW4D.js +0 -2
  341. package/dist/CountryFieldDefault-NX5GNCKS.js +0 -2
  342. package/dist/DatePickerFieldDefault-PRJ4Z72O.js +0 -2
  343. package/dist/DrawerDefault-AAUS7T5W.js +0 -2
  344. package/dist/EmailFieldDefault-TFQ5SQVC.js +0 -2
  345. package/dist/FieldsetToggleButtonDefault-MFLN2WWT.js +0 -2
  346. package/dist/FileUploadFieldDefault-7ETO2SEZ.js +0 -2
  347. package/dist/MultiSelectFieldDefault-5TL5SL7W.js +0 -2
  348. package/dist/NumberFieldDefault-L7J22NRQ.js +0 -2
  349. package/dist/RadioGroupFieldDefault-B2ZRFHJ4.js +0 -2
  350. package/dist/SelectFieldDefault-AT6LLZNX.js +0 -2
  351. package/dist/StatementDefault-DORMITL7.js +0 -2
  352. package/dist/TableFieldDefault-URJVK7YR.js +0 -2
  353. package/dist/TextAreaFieldDefault-2TV3WHKH.js +0 -2
  354. package/dist/TextFieldDefault-2GEILZPU.js +0 -2
  355. package/dist/WorkScheduleFieldDefault-XH4AEXSM.js +0 -2
  356. package/dist/ZendeskDrawerDefault-A5PVWI4R.js +0 -2
  357. package/dist/chunk-3NESYBEJ.js +0 -2
  358. package/dist/chunk-3NESYBEJ.js.map +0 -1
  359. package/dist/chunk-42R2H2DW.js.map +0 -1
  360. package/dist/chunk-6GCLDEJP.js +0 -2
  361. package/dist/chunk-6H4634RG.js +0 -2
  362. package/dist/chunk-6H4634RG.js.map +0 -1
  363. package/dist/chunk-B4E43MXD.js +0 -2
  364. package/dist/chunk-BI4RFXFL.js +0 -2
  365. package/dist/chunk-BI4RFXFL.js.map +0 -1
  366. package/dist/chunk-CWAFRJAQ.js +0 -2
  367. package/dist/chunk-CWAFRJAQ.js.map +0 -1
  368. package/dist/chunk-D5AO6SOM.js +0 -2
  369. package/dist/chunk-D5AO6SOM.js.map +0 -1
  370. package/dist/chunk-DZXU45AS.js +0 -2
  371. package/dist/chunk-DZXU45AS.js.map +0 -1
  372. package/dist/chunk-ECGWCDC3.js +0 -2
  373. package/dist/chunk-EIVCBH53.js +0 -2
  374. package/dist/chunk-FAIEJW57.js.map +0 -1
  375. package/dist/chunk-H2RAK6F7.js +0 -6
  376. package/dist/chunk-H2RAK6F7.js.map +0 -1
  377. package/dist/chunk-HDH5PEOK.js +0 -2
  378. package/dist/chunk-HDH5PEOK.js.map +0 -1
  379. package/dist/chunk-JI5PQLWS.js +0 -2
  380. package/dist/chunk-JTMJKRH7.js +0 -2
  381. package/dist/chunk-K5Y67GIG.js +0 -2
  382. package/dist/chunk-LNV36S6D.js +0 -2
  383. package/dist/chunk-LXOYWRNU.js +0 -2
  384. package/dist/chunk-LXOYWRNU.js.map +0 -1
  385. package/dist/chunk-OWUINMZP.js +0 -2
  386. package/dist/chunk-OWUINMZP.js.map +0 -1
  387. package/dist/chunk-T4YYYCSD.js.map +0 -1
  388. package/dist/chunk-TNYFIB6U.js +0 -2
  389. package/dist/chunk-UMLRTS3B.js +0 -2
  390. package/dist/chunk-UMLRTS3B.js.map +0 -1
  391. package/dist/chunk-UOA5WU4S.js +0 -2
  392. package/dist/chunk-UOA5WU4S.js.map +0 -1
  393. package/dist/chunk-VIGKOVHP.js +0 -2
  394. package/dist/chunk-VIGKOVHP.js.map +0 -1
  395. package/dist/chunk-WFZGKBFS.js +0 -2
  396. package/dist/chunk-WFZGKBFS.js.map +0 -1
  397. package/dist/chunk-X6ZAR7ZL.js +0 -2
  398. package/dist/chunk-X6ZAR7ZL.js.map +0 -1
  399. package/dist/chunk-XGRFWXUU.js +0 -2
  400. package/dist/chunk-XGRFWXUU.js.map +0 -1
  401. package/dist/chunk-YMJ3HQTG.js +0 -2
  402. package/dist/chunk-Z5WMKCRJ.js +0 -2
  403. package/dist/chunk-Z5WMKCRJ.js.map +0 -1
  404. package/dist/types-ZWIpiFgj.d.ts +0 -4
  405. /package/dist/{ButtonDefault-2YV2Z474.js.map → ButtonDefault-EPOEMC2J.js.map} +0 -0
  406. /package/dist/{CheckboxFieldDefault-55JIXW4D.js.map → CheckboxFieldDefault-SQULI7DO.js.map} +0 -0
  407. /package/dist/{CountryFieldDefault-NX5GNCKS.js.map → CountryFieldDefault-4YHZACZ5.js.map} +0 -0
  408. /package/dist/{DatePickerFieldDefault-PRJ4Z72O.js.map → DatePickerFieldDefault-B7WY5H6M.js.map} +0 -0
  409. /package/dist/{DrawerDefault-AAUS7T5W.js.map → DrawerDefault-WN7Z4LY7.js.map} +0 -0
  410. /package/dist/{EmailFieldDefault-TFQ5SQVC.js.map → EmailFieldDefault-LTDNKVUW.js.map} +0 -0
  411. /package/dist/{FieldsetToggleButtonDefault-MFLN2WWT.js.map → FieldsetToggleButtonDefault-4RZ3GTDF.js.map} +0 -0
  412. /package/dist/{FileUploadFieldDefault-7ETO2SEZ.js.map → FileUploadFieldDefault-HSLW6SHB.js.map} +0 -0
  413. /package/dist/{MultiSelectFieldDefault-5TL5SL7W.js.map → MultiSelectFieldDefault-GSJWVA5H.js.map} +0 -0
  414. /package/dist/{NumberFieldDefault-L7J22NRQ.js.map → NumberFieldDefault-NVOVVUNK.js.map} +0 -0
  415. /package/dist/{RadioGroupFieldDefault-B2ZRFHJ4.js.map → RadioGroupFieldDefault-G637DHSW.js.map} +0 -0
  416. /package/dist/{SelectFieldDefault-AT6LLZNX.js.map → SelectFieldDefault-WU4CDEZD.js.map} +0 -0
  417. /package/dist/{StatementDefault-DORMITL7.js.map → StatementDefault-T3RCCUE5.js.map} +0 -0
  418. /package/dist/{TableFieldDefault-URJVK7YR.js.map → TableFieldDefault-S5XRYF36.js.map} +0 -0
  419. /package/dist/{TextAreaFieldDefault-2TV3WHKH.js.map → TelFieldDefault-D5EW44ZU.js.map} +0 -0
  420. /package/dist/{TextFieldDefault-2GEILZPU.js.map → TextAreaFieldDefault-32E5FGS7.js.map} +0 -0
  421. /package/dist/{WorkScheduleFieldDefault-XH4AEXSM.js.map → TextFieldDefault-FCVIHZTV.js.map} +0 -0
  422. /package/dist/{ZendeskDrawerDefault-A5PVWI4R.js.map → WorkScheduleFieldDefault-5JZPKI2P.js.map} +0 -0
  423. /package/dist/{chunk-BYDQHL6O.js.map → chunk-2UZ72KAQ.js.map} +0 -0
  424. /package/dist/{chunk-ADTGWDQ7.js.map → chunk-33IPP266.js.map} +0 -0
  425. /package/dist/{chunk-UJXUKEQU.js.map → chunk-36NGPS63.js.map} +0 -0
  426. /package/dist/{chunk-OQ5WZBDA.js.map → chunk-3SECILYU.js.map} +0 -0
  427. /package/dist/{chunk-C4MRFGQG.js.map → chunk-3VWXALRD.js.map} +0 -0
  428. /package/dist/{chunk-VB6KFDBL.js.map → chunk-5EDCZGZV.js.map} +0 -0
  429. /package/dist/{chunk-6QEF52IP.js.map → chunk-5EHJ5HTV.js.map} +0 -0
  430. /package/dist/{chunk-YOFBRZUZ.js.map → chunk-5F5BHJQO.js.map} +0 -0
  431. /package/dist/{chunk-3DMWQJ5W.js.map → chunk-64AJX2DH.js.map} +0 -0
  432. /package/dist/{chunk-MSBCYMSH.js.map → chunk-6SDLOAEO.js.map} +0 -0
  433. /package/dist/{chunk-TNN3W5TU.js.map → chunk-6Y4QJ7WK.js.map} +0 -0
  434. /package/dist/{chunk-L3LOATSG.js.map → chunk-75P5LUKA.js.map} +0 -0
  435. /package/dist/{chunk-56UXOD27.js.map → chunk-7N2A2ZJ5.js.map} +0 -0
  436. /package/dist/{chunk-H5PRUDCX.js.map → chunk-7VKV5G6N.js.map} +0 -0
  437. /package/dist/{chunk-SNECOPBD.js.map → chunk-ACKYD4QC.js.map} +0 -0
  438. /package/dist/{chunk-G5O2CM6V.js.map → chunk-AMSYQQG7.js.map} +0 -0
  439. /package/dist/{chunk-AS77PXWM.js.map → chunk-AXGWQVCT.js.map} +0 -0
  440. /package/dist/{chunk-NAMR4DA5.js.map → chunk-B5UGFNCU.js.map} +0 -0
  441. /package/dist/{chunk-WD2JGIDK.js.map → chunk-BAE2OWEH.js.map} +0 -0
  442. /package/dist/{chunk-LSVH4U4W.js.map → chunk-BAKE7YEE.js.map} +0 -0
  443. /package/dist/{chunk-2AYGZ4RY.js.map → chunk-BI3PHE5N.js.map} +0 -0
  444. /package/dist/{chunk-7BGANM2R.js.map → chunk-BMLTMXEK.js.map} +0 -0
  445. /package/dist/{chunk-4FMQTOXJ.js.map → chunk-BS4A6UYL.js.map} +0 -0
  446. /package/dist/{chunk-2V4CTIAG.js.map → chunk-BTP3NN3N.js.map} +0 -0
  447. /package/dist/{chunk-SXKIRVA2.js.map → chunk-C6ARUHCB.js.map} +0 -0
  448. /package/dist/{chunk-KKMW7Q42.js.map → chunk-DEVQ2NNK.js.map} +0 -0
  449. /package/dist/{chunk-SNBAM7SA.js.map → chunk-DYNVJFJH.js.map} +0 -0
  450. /package/dist/{chunk-KXT6ACFL.js.map → chunk-EC6ZM3SX.js.map} +0 -0
  451. /package/dist/{chunk-SADMJJDB.js.map → chunk-FIM36WNY.js.map} +0 -0
  452. /package/dist/{chunk-6JTHV4QS.js.map → chunk-FOBUW3RN.js.map} +0 -0
  453. /package/dist/{chunk-TQXCLXWH.js.map → chunk-FTC4EFBO.js.map} +0 -0
  454. /package/dist/{chunk-NKMO2WW3.js.map → chunk-FZO24P53.js.map} +0 -0
  455. /package/dist/{chunk-C32W6TCT.js.map → chunk-FZVUO3UU.js.map} +0 -0
  456. /package/dist/{chunk-VY6W6W6F.js.map → chunk-GHYCSTSK.js.map} +0 -0
  457. /package/dist/{chunk-SXM3GJ5M.js.map → chunk-HMVU7HJL.js.map} +0 -0
  458. /package/dist/{chunk-QLYFMDLB.js.map → chunk-I2DXGO23.js.map} +0 -0
  459. /package/dist/{chunk-K4YQQMHD.js.map → chunk-IK27ZFUU.js.map} +0 -0
  460. /package/dist/{chunk-CKVI2UDU.js.map → chunk-INV4YWPR.js.map} +0 -0
  461. /package/dist/{chunk-7SO6WCYM.js.map → chunk-IY3ASS7L.js.map} +0 -0
  462. /package/dist/{chunk-JF3KLAB5.js.map → chunk-JFD2OJ6L.js.map} +0 -0
  463. /package/dist/{chunk-NAF6LRSS.js.map → chunk-JMDINYDB.js.map} +0 -0
  464. /package/dist/{chunk-RDYN6W2A.js.map → chunk-JWP4HAIS.js.map} +0 -0
  465. /package/dist/{chunk-R4X2WQXX.js.map → chunk-JXWFFVQO.js.map} +0 -0
  466. /package/dist/{chunk-PZAYG2DF.js.map → chunk-K56VMRZ5.js.map} +0 -0
  467. /package/dist/{chunk-2K2RK7RF.js.map → chunk-KJMPEOZ7.js.map} +0 -0
  468. /package/dist/{chunk-L5DII4MV.js.map → chunk-KVMWDA6O.js.map} +0 -0
  469. /package/dist/{chunk-DXIJUMLU.js.map → chunk-LBJAKZ6V.js.map} +0 -0
  470. /package/dist/{chunk-VWBA3U4U.js.map → chunk-LFYDEIZG.js.map} +0 -0
  471. /package/dist/{chunk-HIFEVMKP.js.map → chunk-NORWRQQM.js.map} +0 -0
  472. /package/dist/{chunk-HNCOYMS5.js.map → chunk-O6H23YQW.js.map} +0 -0
  473. /package/dist/{chunk-RAH453TV.js.map → chunk-OJTYP5W7.js.map} +0 -0
  474. /package/dist/{chunk-VPSESR6G.js.map → chunk-OXCSFW3F.js.map} +0 -0
  475. /package/dist/{chunk-AYC6DTFV.js.map → chunk-PX6B2DBO.js.map} +0 -0
  476. /package/dist/{chunk-BNQFPYNQ.js.map → chunk-PZFFXEI3.js.map} +0 -0
  477. /package/dist/{chunk-7QXULBD7.js.map → chunk-QLJMIWS4.js.map} +0 -0
  478. /package/dist/{chunk-NNFWLL7F.js.map → chunk-R5WFXN2Z.js.map} +0 -0
  479. /package/dist/{chunk-UQBKFWUI.js.map → chunk-R7WSWTCF.js.map} +0 -0
  480. /package/dist/{chunk-XBPTFEGC.js.map → chunk-RD5FPT3Y.js.map} +0 -0
  481. /package/dist/{chunk-JQJBDHAL.js.map → chunk-RPCS3K2I.js.map} +0 -0
  482. /package/dist/{chunk-H5QXOIKS.js.map → chunk-RRZ2GPQS.js.map} +0 -0
  483. /package/dist/{chunk-YWOJ4NKF.js.map → chunk-RUYVQ6R6.js.map} +0 -0
  484. /package/dist/{chunk-7V2QPZ2F.js.map → chunk-SJVCXKRO.js.map} +0 -0
  485. /package/dist/{chunk-VK7T332E.js.map → chunk-SP2V52RP.js.map} +0 -0
  486. /package/dist/{chunk-MSEHAEEK.js.map → chunk-TFJOJCCS.js.map} +0 -0
  487. /package/dist/{chunk-BZAO32QW.js.map → chunk-TUPZTWGP.js.map} +0 -0
  488. /package/dist/{chunk-WRRTZ2AL.js.map → chunk-UBNSYRKM.js.map} +0 -0
  489. /package/dist/{chunk-3C6N7DK6.js.map → chunk-UN4RAIAR.js.map} +0 -0
  490. /package/dist/{chunk-AS6KFUXS.js.map → chunk-UZNF4JV3.js.map} +0 -0
  491. /package/dist/{chunk-3BBQDNZD.js.map → chunk-V5OIMFSH.js.map} +0 -0
  492. /package/dist/{chunk-7ZFZYZSP.js.map → chunk-VDVWAYXP.js.map} +0 -0
  493. /package/dist/{chunk-7G5JSUZU.js.map → chunk-VHAJRKCI.js.map} +0 -0
  494. /package/dist/{chunk-BAMGHBLT.js.map → chunk-VSXPCSKU.js.map} +0 -0
  495. /package/dist/{chunk-UMVA4SIV.js.map → chunk-W2ZXKNL4.js.map} +0 -0
  496. /package/dist/{chunk-MP3VDCI7.js.map → chunk-XADVV6OP.js.map} +0 -0
  497. /package/dist/{chunk-R3BBN7TV.js.map → chunk-XHZHFM2J.js.map} +0 -0
  498. /package/dist/{chunk-W6OOI5NF.js.map → chunk-XUT44QU6.js.map} +0 -0
  499. /package/dist/{chunk-GOTY4N6S.js.map → chunk-XXXLKG43.js.map} +0 -0
  500. /package/dist/{chunk-547UHEDI.js.map → chunk-YYMGZZTO.js.map} +0 -0
  501. /package/dist/{chunk-MG4PHNSS.js.map → chunk-ZS7YCDY6.js.map} +0 -0
  502. /package/dist/{chunk-JKB4KOVF.js.map → chunk-ZYAMVSAL.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{b as u}from"./chunk-PGWKJ6FK.js";import{b as p}from"./chunk-LNV36S6D.js";import{a as F}from"./chunk-BI4RFXFL.js";import{f as l,h as c}from"./chunk-CWAFRJAQ.js";import{b as f}from"./chunk-X6ZAR7ZL.js";import{a}from"./chunk-P37U34EQ.js";import{useEffect as y}from"react";import{jsx as S}from"react/jsx-runtime";import{createElement as O}from"react";function x({defaultValues:m,onSubmit:b,components:g}){let{formId:E,onboardingBag:o}=u(),k=p(o.handleValidation),n=l({resolver:k,defaultValues:m,shouldUnregister:!1,mode:"onBlur"});y(()=>{o.employmentId&&o?.checkFieldUpdates(n.getValues())},[]),y(()=>{let t=n?.watch(e=>{Object.keys(e).some(s=>e[s]!==m[s])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let w=a(async(t,e)=>{let i=e?.nativeEvent;if(i?.isDraftSubmission){let{onSuccess:s,onError:d}=i.draftCallbacks;try{let r=await o.onSubmit(t);if(r?.data)s?.();else if(r?.error){let h=o.stepState.currentStep.name,P=o.meta?.fields?.[h],B=f(r?.fieldErrors||[],P);d?.({error:r.error,rawError:r.rawError,fieldErrors:B})}}catch(r){d?.({error:r,rawError:r,fieldErrors:[]})}}else await b(t)},"handleSubmit");return O(c,{...n,key:`form-${o.stepState.currentStep.name}`},S("form",{id:E,onSubmit:n.handleSubmit(w),className:"space-y-4 RemoteFlows__OnboardingForm",children:S(F,{components:g,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})}))}a(x,"OnboardingForm");export{x as a};
2
- //# sourceMappingURL=chunk-RDYN6W2A.js.map
1
+ import{b as u}from"./chunk-PGWKJ6FK.js";import{b as p}from"./chunk-KFYWUBRS.js";import{a as F}from"./chunk-4EDPYN5F.js";import{f as l,h as c}from"./chunk-72RFYT5Y.js";import{b as f}from"./chunk-OSQ6VUDM.js";import{a}from"./chunk-P37U34EQ.js";import{useEffect as y}from"react";import{jsx as S}from"react/jsx-runtime";import{createElement as O}from"react";function x({defaultValues:m,onSubmit:b,components:g}){let{formId:E,onboardingBag:o}=u(),k=p(o.handleValidation),n=l({resolver:k,defaultValues:m,shouldUnregister:!1,mode:"onBlur"});y(()=>{o.employmentId&&o?.checkFieldUpdates(n.getValues())},[]),y(()=>{let t=n?.watch(e=>{Object.keys(e).some(s=>e[s]!==m[s])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let w=a(async(t,e)=>{let i=e?.nativeEvent;if(i?.isDraftSubmission){let{onSuccess:s,onError:d}=i.draftCallbacks;try{let r=await o.onSubmit(t);if(r?.data)s?.();else if(r?.error){let h=o.stepState.currentStep.name,P=o.meta?.fields?.[h],B=f(r?.fieldErrors||[],P);d?.({error:r.error,rawError:r.rawError,fieldErrors:B})}}catch(r){d?.({error:r,rawError:r,fieldErrors:[]})}}else await b(t)},"handleSubmit");return O(c,{...n,key:`form-${o.stepState.currentStep.name}`},S("form",{id:E,onSubmit:n.handleSubmit(w),className:"space-y-4 RemoteFlows__OnboardingForm",children:S(F,{components:g,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})}))}a(x,"OnboardingForm");export{x as a};
2
+ //# sourceMappingURL=chunk-JWP4HAIS.js.map
@@ -1,2 +1,2 @@
1
- import{a as o}from"./chunk-VIGKOVHP.js";import*as t from"react";import*as e from"@radix-ui/react-checkbox";import{Check as s}from"lucide-react";import{jsx as i}from"react/jsx-runtime";var m=t.forwardRef(({className:r,...c},a)=>i(e.Root,{ref:a,className:o("peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary",r),...c,children:i(e.Indicator,{className:o("flex items-center justify-center text-current"),children:i(s,{className:"h-4 w-4"})})}));m.displayName=e.Root.displayName;export{m as a};
2
- //# sourceMappingURL=chunk-R4X2WQXX.js.map
1
+ import{c as o}from"./chunk-OSQ6VUDM.js";import*as t from"react";import*as e from"@radix-ui/react-checkbox";import{Check as s}from"lucide-react";import{jsx as i}from"react/jsx-runtime";var m=t.forwardRef(({className:r,...c},a)=>i(e.Root,{ref:a,className:o("peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary",r),...c,children:i(e.Indicator,{className:o("flex items-center justify-center text-current"),children:i(s,{className:"h-4 w-4"})})}));m.displayName=e.Root.displayName;export{m as a};
2
+ //# sourceMappingURL=chunk-JXWFFVQO.js.map
@@ -1,2 +1,2 @@
1
- import{a as d,b as w}from"./chunk-VB6KFDBL.js";import{a as g}from"./chunk-MSEHAEEK.js";import{a as E}from"./chunk-NAF6LRSS.js";import{e as C}from"./chunk-D5AO6SOM.js";import{P as F,e as _,z as P}from"./chunk-H2RAK6F7.js";import{a as h}from"./chunk-X6ZAR7ZL.js";import{a as j}from"./chunk-TSPDJUGG.js";import{d as c}from"./chunk-KQPDXXG3.js";import{a as e}from"./chunk-P37U34EQ.js";import{useMutation as b,useQuery as I}from"@tanstack/react-query";var B=e(({countryCode:n,employment:r,fieldValues:a,options:t})=>{let{client:u}=c(),m=t?.jsonSchemaVersion?.contract_amendments?{json_schema_version:t.jsonSchemaVersion.contract_amendments}:{};return I({queryKey:["contract-amendment-schema"],retry:!1,queryFn:e(async()=>{let o=await _({client:u,headers:{Authorization:""},query:{employment_id:r?.id,country_code:n,...m}});if(o.error||!o.data)throw new Error("Failed to fetch contract amendment schema");return o},"queryFn"),enabled:!!r,select:e(({data:o})=>{let l=o?.data||{};return E(l,a,t)},"select")})},"useContractAmendmentSchemaQuery"),J=e(n=>{let{client:r}=c(),a=n?.jsonSchemaVersion?.contract_amendments?{json_schema_version:n.jsonSchemaVersion.contract_amendments}:{};return b({mutationFn:e(t=>P({client:r,headers:{Authorization:""},body:t,query:{...a}}),"mutationFn")})},"useCreateContractAmendmentMutation"),K=e(n=>{let{client:r}=c(),a=n?.jsonSchemaVersion?.contract_amendments?{json_schema_version:n.jsonSchemaVersion.contract_amendments}:{};return b({mutationFn:e(t=>F({client:r,headers:{Authorization:""},body:t,query:{...a}}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),te=e(({employmentId:n,countryCode:r,options:a})=>{let{fieldValues:t,setFieldValues:u,stepState:m,nextStep:o,previousStep:l}=j(d),{data:i,isLoading:v,isError:q,error:Q}=g({employmentId:n,queryParams:{exclude_files:!0}}),{data:s,isLoading:L,isError:M,error:T}=B({employment:i,countryCode:r,fieldValues:{...m.values?.[m.currentStep.name],...t},options:a}),k=w(i,s?.fields),S=J(a),A=K(a);async function x(p){let f=await C(p,s?.fields||[],{isPartialValidation:!1}),V={employment_id:i?.id,amendment_contract_id:i?.active_contract_id,contract_amendment:{...f}};switch(m.currentStep.name){case d.form.name:{let{mutateAsync:y}=h(A),H=await y(V);return o(),H}case d.confirmation_form.name:{let{mutateAsync:y}=h(S);return y(V)}default:throw new Error("Invalid step state")}}e(x,"onSubmit");async function z(p){if(s){let f=await C(p,s?.fields);return s?.handleValidation(f)}return null}e(z,"handleValidation");function O(){l()}return e(O,"back"),{stepState:m,fields:s?.fields||[],isLoading:v||L,isError:q||M,error:Q||T,isSubmitting:A.isPending||S.isPending,initialValues:k,values:t,handleValidation:z,checkFieldUpdates:u,onSubmit:x,back:O}},"useContractAmendment");export{te as a};
2
- //# sourceMappingURL=chunk-PZAYG2DF.js.map
1
+ import{a as d,b as w}from"./chunk-5EDCZGZV.js";import{a as g}from"./chunk-TFJOJCCS.js";import{a as E}from"./chunk-JMDINYDB.js";import{e as C}from"./chunk-FFVTWWGX.js";import{P as F,e as _,z as P}from"./chunk-R47Q7R6C.js";import{a as h}from"./chunk-OSQ6VUDM.js";import{a as j}from"./chunk-TSPDJUGG.js";import{d as c}from"./chunk-KQPDXXG3.js";import{a as e}from"./chunk-P37U34EQ.js";import{useMutation as b,useQuery as I}from"@tanstack/react-query";var B=e(({countryCode:n,employment:r,fieldValues:a,options:t})=>{let{client:u}=c(),m=t?.jsonSchemaVersion?.contract_amendments?{json_schema_version:t.jsonSchemaVersion.contract_amendments}:{};return I({queryKey:["contract-amendment-schema"],retry:!1,queryFn:e(async()=>{let o=await _({client:u,headers:{Authorization:""},query:{employment_id:r?.id,country_code:n,...m}});if(o.error||!o.data)throw new Error("Failed to fetch contract amendment schema");return o},"queryFn"),enabled:!!r,select:e(({data:o})=>{let l=o?.data||{};return E(l,a,t)},"select")})},"useContractAmendmentSchemaQuery"),J=e(n=>{let{client:r}=c(),a=n?.jsonSchemaVersion?.contract_amendments?{json_schema_version:n.jsonSchemaVersion.contract_amendments}:{};return b({mutationFn:e(t=>P({client:r,headers:{Authorization:""},body:t,query:{...a}}),"mutationFn")})},"useCreateContractAmendmentMutation"),K=e(n=>{let{client:r}=c(),a=n?.jsonSchemaVersion?.contract_amendments?{json_schema_version:n.jsonSchemaVersion.contract_amendments}:{};return b({mutationFn:e(t=>F({client:r,headers:{Authorization:""},body:t,query:{...a}}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),te=e(({employmentId:n,countryCode:r,options:a})=>{let{fieldValues:t,setFieldValues:u,stepState:m,nextStep:o,previousStep:l}=j(d),{data:i,isLoading:v,isError:q,error:Q}=g({employmentId:n,queryParams:{exclude_files:!0}}),{data:s,isLoading:L,isError:M,error:T}=B({employment:i,countryCode:r,fieldValues:{...m.values?.[m.currentStep.name],...t},options:a}),k=w(i,s?.fields),S=J(a),A=K(a);async function x(p){let f=await C(p,s?.fields||[],{isPartialValidation:!1}),V={employment_id:i?.id,amendment_contract_id:i?.active_contract_id,contract_amendment:{...f}};switch(m.currentStep.name){case d.form.name:{let{mutateAsync:y}=h(A),H=await y(V);return o(),H}case d.confirmation_form.name:{let{mutateAsync:y}=h(S);return y(V)}default:throw new Error("Invalid step state")}}e(x,"onSubmit");async function z(p){if(s){let f=await C(p,s?.fields);return s?.handleValidation(f)}return null}e(z,"handleValidation");function O(){l()}return e(O,"back"),{stepState:m,fields:s?.fields||[],isLoading:v||L,isError:q||M,error:Q||T,isSubmitting:A.isPending||S.isPending,initialValues:k,values:t,handleValidation:z,checkFieldUpdates:u,onSubmit:x,back:O}},"useContractAmendment");export{te as a};
2
+ //# sourceMappingURL=chunk-K56VMRZ5.js.map
@@ -0,0 +1,2 @@
1
+ import{a as i}from"./chunk-P37U34EQ.js";function u(t){return t.inner.reduce((r,e)=>({...r,[e.path]:{type:e.type??"validation",message:e.message}}),{})}i(u,"iterateErrors");function l(t,s=""){return Object.entries(t||{}).reduce((r,[e,o])=>{let n=s?`${s}.${e}`:e;if(typeof o=="object"&&o!==null&&!Array.isArray(o))return{...r,...l(o,n)};let a=typeof o=="string"?o:JSON.stringify(o);return r[n]={type:"validation",message:a},r[`${n}.value`]={type:"validation",message:a},r},{})}i(l,"iterateFormErrors");var d=i(t=>async s=>{let r=await t(s);if(!r)return{values:s,errors:{}};let e="formErrors"in r?r.formErrors:void 0;if(Object.keys(e||{}).length>0){let o=l(e);return{values:{},errors:o}}return{values:s,errors:{}}},"useJsonSchemasValidationFormResolver");export{u as a,d as b};
2
+ //# sourceMappingURL=chunk-KFYWUBRS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/form/validationResolver.ts"],"sourcesContent":["import { FieldErrors, FieldValues, Resolver } from 'react-hook-form';\nimport type { ValidationError } from 'yup';\nimport type {\n FormErrors,\n ValidationResult,\n} from '@remoteoss/remote-json-schema-form-kit';\n\n// TODO: deprecated only used in the CostCalculatorFlow as we're using yup there\nexport function iterateErrors(error: ValidationError) {\n const errors = (error as ValidationError).inner.reduce(\n (\n allErrors: Record<string, { type: string; message: string }>,\n currentError: ValidationError,\n ) => {\n return {\n ...allErrors,\n [currentError.path as string]: {\n type: currentError.type ?? 'validation',\n message: currentError.message,\n },\n };\n },\n {} as Record<string, { type: string; message: string }>,\n );\n\n return errors;\n}\n\nexport function iterateFormErrors(\n formErrors?: FormErrors,\n parentPath = '',\n): FieldErrors {\n return Object.entries(formErrors || {}).reduce(\n (allErrors: FieldErrors, [fieldName, message]) => {\n const fullPath = parentPath ? `${parentPath}.${fieldName}` : fieldName;\n\n // If message is a nested object, recurse\n if (\n typeof message === 'object' &&\n message !== null &&\n !Array.isArray(message)\n ) {\n return {\n ...allErrors,\n ...iterateFormErrors(message as FormErrors, fullPath),\n };\n }\n\n // Extract the error message string from various payload formats\n const messageString =\n typeof message === 'string' ? message : JSON.stringify(message);\n\n allErrors[fullPath] = {\n type: 'validation',\n message: messageString,\n };\n\n // Also add errors for nested variants (.value and .filter) in case the field is nested\n allErrors[`${fullPath}.value`] = {\n type: 'validation',\n message: messageString,\n };\n\n return allErrors;\n },\n {} as FieldErrors,\n );\n}\n\nexport const useJsonSchemasValidationFormResolver = <\n T extends FieldValues = FieldValues,\n>(\n handleValidation: (data: T) => Promise<ValidationResult | null>,\n): Resolver<T> => {\n return async (data: T) => {\n const result = await handleValidation(data);\n\n // Handle null case - return no errors\n if (!result) {\n return {\n values: data,\n errors: {},\n };\n }\n\n const formErrors = 'formErrors' in result ? result.formErrors : undefined;\n\n if (Object.keys(formErrors || {}).length > 0) {\n const errors = iterateFormErrors(formErrors);\n return {\n values: {} as T,\n errors: errors as FieldErrors<T>,\n };\n }\n return {\n values: data,\n errors: {},\n };\n };\n};\n"],"mappings":"wCAQO,SAASA,EAAcC,EAAwB,CAiBpD,OAhBgBA,EAA0B,MAAM,OAC9C,CACEC,EACAC,KAEO,CACL,GAAGD,EACH,CAACC,EAAa,IAAc,EAAG,CAC7B,KAAMA,EAAa,MAAQ,aAC3B,QAASA,EAAa,OACxB,CACF,GAEF,CAAC,CACH,CAGF,CAlBgBC,EAAAJ,EAAA,iBAoBT,SAASK,EACdC,EACAC,EAAa,GACA,CACb,OAAO,OAAO,QAAQD,GAAc,CAAC,CAAC,EAAE,OACtC,CAACJ,EAAwB,CAACM,EAAWC,CAAO,IAAM,CAChD,IAAMC,EAAWH,EAAa,GAAGA,CAAU,IAAIC,CAAS,GAAKA,EAG7D,GACE,OAAOC,GAAY,UACnBA,IAAY,MACZ,CAAC,MAAM,QAAQA,CAAO,EAEtB,MAAO,CACL,GAAGP,EACH,GAAGG,EAAkBI,EAAuBC,CAAQ,CACtD,EAIF,IAAMC,EACJ,OAAOF,GAAY,SAAWA,EAAU,KAAK,UAAUA,CAAO,EAEhE,OAAAP,EAAUQ,CAAQ,EAAI,CACpB,KAAM,aACN,QAASC,CACX,EAGAT,EAAU,GAAGQ,CAAQ,QAAQ,EAAI,CAC/B,KAAM,aACN,QAASC,CACX,EAEOT,CACT,EACA,CAAC,CACH,CACF,CAvCgBE,EAAAC,EAAA,qBAyCT,IAAMO,EAAuCR,EAGlDS,GAEO,MAAOC,GAAY,CACxB,IAAMC,EAAS,MAAMF,EAAiBC,CAAI,EAG1C,GAAI,CAACC,EACH,MAAO,CACL,OAAQD,EACR,OAAQ,CAAC,CACX,EAGF,IAAMR,EAAa,eAAgBS,EAASA,EAAO,WAAa,OAEhE,GAAI,OAAO,KAAKT,GAAc,CAAC,CAAC,EAAE,OAAS,EAAG,CAC5C,IAAMU,EAASX,EAAkBC,CAAU,EAC3C,MAAO,CACL,OAAQ,CAAC,EACT,OAAQU,CACV,CACF,CACA,MAAO,CACL,OAAQF,EACR,OAAQ,CAAC,CACX,CACF,EA7BkD","names":["iterateErrors","error","allErrors","currentError","__name","iterateFormErrors","formErrors","parentPath","fieldName","message","fullPath","messageString","useJsonSchemasValidationFormResolver","handleValidation","data","result","errors"]}
1
+ {"version":3,"sources":["../src/components/form/validationResolver.ts"],"sourcesContent":["import { FieldErrors, FieldValues, Resolver } from 'react-hook-form';\nimport type { ValidationError } from 'yup';\nimport type {\n FormErrors,\n ValidationResult,\n} from '@remoteoss/remote-json-schema-form-kit';\n\n// TODO: deprecated only used in the CostCalculatorFlow as we're using yup there\nexport function iterateErrors(error: ValidationError) {\n const errors = (error as ValidationError).inner.reduce(\n (\n allErrors: Record<string, { type: string; message: string }>,\n currentError: ValidationError,\n ) => {\n return {\n ...allErrors,\n [currentError.path as string]: {\n type: currentError.type ?? 'validation',\n message: currentError.message,\n },\n };\n },\n {} as Record<string, { type: string; message: string }>,\n );\n\n return errors;\n}\n\nexport function iterateFormErrors(\n formErrors?: FormErrors,\n parentPath = '',\n): FieldErrors {\n return Object.entries(formErrors || {}).reduce(\n (allErrors: FieldErrors, [fieldName, message]) => {\n const fullPath = parentPath ? `${parentPath}.${fieldName}` : fieldName;\n\n // If message is a nested object, recurse\n if (\n typeof message === 'object' &&\n message !== null &&\n !Array.isArray(message)\n ) {\n return {\n ...allErrors,\n ...iterateFormErrors(message as FormErrors, fullPath),\n };\n }\n\n // Extract the error message string from various payload formats\n const messageString =\n typeof message === 'string' ? message : JSON.stringify(message);\n\n allErrors[fullPath] = {\n type: 'validation',\n message: messageString,\n };\n\n // Also add errors for nested variants (.value and .filter) in case the field is nested\n allErrors[`${fullPath}.value`] = {\n type: 'validation',\n message: messageString,\n };\n\n return allErrors;\n },\n {} as FieldErrors,\n );\n}\n\nexport const useJsonSchemasValidationFormResolver = <\n T extends FieldValues = FieldValues,\n>(\n handleValidation: (data: T) => Promise<ValidationResult | null>,\n): Resolver<T> => {\n return async (data: T) => {\n const result = await handleValidation(data);\n\n // Handle null case - return no errors\n if (!result) {\n return {\n values: data,\n errors: {} as Record<string, never>,\n };\n }\n\n const formErrors = 'formErrors' in result ? result.formErrors : undefined;\n\n if (Object.keys(formErrors || {}).length > 0) {\n const errors = iterateFormErrors(formErrors);\n return {\n values: {} as Record<string, never>,\n errors: errors as FieldErrors<T>,\n };\n }\n return {\n values: data,\n errors: {} as Record<string, never>,\n };\n };\n};\n"],"mappings":"wCAQO,SAASA,EAAcC,EAAwB,CAiBpD,OAhBgBA,EAA0B,MAAM,OAC9C,CACEC,EACAC,KAEO,CACL,GAAGD,EACH,CAACC,EAAa,IAAc,EAAG,CAC7B,KAAMA,EAAa,MAAQ,aAC3B,QAASA,EAAa,OACxB,CACF,GAEF,CAAC,CACH,CAGF,CAlBgBC,EAAAJ,EAAA,iBAoBT,SAASK,EACdC,EACAC,EAAa,GACA,CACb,OAAO,OAAO,QAAQD,GAAc,CAAC,CAAC,EAAE,OACtC,CAACJ,EAAwB,CAACM,EAAWC,CAAO,IAAM,CAChD,IAAMC,EAAWH,EAAa,GAAGA,CAAU,IAAIC,CAAS,GAAKA,EAG7D,GACE,OAAOC,GAAY,UACnBA,IAAY,MACZ,CAAC,MAAM,QAAQA,CAAO,EAEtB,MAAO,CACL,GAAGP,EACH,GAAGG,EAAkBI,EAAuBC,CAAQ,CACtD,EAIF,IAAMC,EACJ,OAAOF,GAAY,SAAWA,EAAU,KAAK,UAAUA,CAAO,EAEhE,OAAAP,EAAUQ,CAAQ,EAAI,CACpB,KAAM,aACN,QAASC,CACX,EAGAT,EAAU,GAAGQ,CAAQ,QAAQ,EAAI,CAC/B,KAAM,aACN,QAASC,CACX,EAEOT,CACT,EACA,CAAC,CACH,CACF,CAvCgBE,EAAAC,EAAA,qBAyCT,IAAMO,EAAuCR,EAGlDS,GAEO,MAAOC,GAAY,CACxB,IAAMC,EAAS,MAAMF,EAAiBC,CAAI,EAG1C,GAAI,CAACC,EACH,MAAO,CACL,OAAQD,EACR,OAAQ,CAAC,CACX,EAGF,IAAMR,EAAa,eAAgBS,EAASA,EAAO,WAAa,OAEhE,GAAI,OAAO,KAAKT,GAAc,CAAC,CAAC,EAAE,OAAS,EAAG,CAC5C,IAAMU,EAASX,EAAkBC,CAAU,EAC3C,MAAO,CACL,OAAQ,CAAC,EACT,OAAQU,CACV,CACF,CACA,MAAO,CACL,OAAQF,EACR,OAAQ,CAAC,CACX,CACF,EA7BkD","names":["iterateErrors","error","allErrors","currentError","__name","iterateFormErrors","formErrors","parentPath","fieldName","message","fullPath","messageString","useJsonSchemasValidationFormResolver","handleValidation","data","result","errors"]}
@@ -1,2 +1,2 @@
1
- import{a as s}from"./chunk-WFZGKBFS.js";import{b as e}from"./chunk-Q3ALCPJN.js";import{k as t}from"./chunk-VIGKOVHP.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as u}from"react/jsx-runtime";function E({components:l,onSubmit:p,onSuccess:c,onError:m}){let{contractorOnboardingBag:r}=e(),d=i(async a=>{try{let n=await r.parseFormValues(a);await p?.(n);let o=await r.onSubmit(a);if(o?.data){await c?.(o?.data),r?.next();return}}catch(n){let o=t(n,r.meta?.fields?.pricing_plan);m?.(o)}},"handleSubmit"),P=r.stepState.values?.pricing_plan||r.initialValues.pricing_plan;return u(s,{components:l,defaultValues:P,onSubmit:d})}i(E,"PricingPlanStep");export{E as a};
2
- //# sourceMappingURL=chunk-2K2RK7RF.js.map
1
+ import{a as s}from"./chunk-T4Y4D743.js";import{b as e}from"./chunk-Q3ALCPJN.js";import{m as t}from"./chunk-OSQ6VUDM.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as u}from"react/jsx-runtime";function E({components:l,onSubmit:p,onSuccess:c,onError:m}){let{contractorOnboardingBag:r}=e(),d=i(async a=>{try{let n=await r.parseFormValues(a);await p?.(n);let o=await r.onSubmit(a);if(o?.data){await c?.(o?.data),r?.next();return}}catch(n){let o=t(n,r.meta?.fields?.pricing_plan);m?.(o)}},"handleSubmit"),P=r.stepState.values?.pricing_plan||r.initialValues.pricing_plan;return u(s,{components:l,defaultValues:P,onSubmit:d})}i(E,"PricingPlanStep");export{E as a};
2
+ //# sourceMappingURL=chunk-KJMPEOZ7.js.map
@@ -1,2 +1,2 @@
1
- import{c as d,d as S}from"./chunk-IJ2BGCAF.js";import{a as f}from"./chunk-KSHK3ZPX.js";import{a as u}from"./chunk-HN5HLFTB.js";import{b as C}from"./chunk-LNV36S6D.js";import{f as y}from"./chunk-CWAFRJAQ.js";import{a as o}from"./chunk-P37U34EQ.js";import{useEffect as T,useId as U,useState as I}from"react";import{jsx as k}from"react/jsx-runtime";var l=o((n,e,r)=>r&&r[e]?r[e]:n[e]?n[e]/100:0,"getDefaultManagementFee"),A=o((n,e,r,g)=>!e&&!r?.management_fee&&n?l(u,n,g):e&&!r?.management_fee?"":r?.management_fee,"getManagementFee"),W=o(({estimationOptions:n=d,defaultValues:e={countryRegionSlug:"",regionSlug:"",currencySlug:"",salary:"",benefits:{},management:{management_fee:""}},options:r,render:g,version:_="standard"})=>{let p=U(),[R,m]=I("USD"),F=o(s=>{m(s);let a=l(u,s,n.managementFees);a&&c.setValue("management.management_fee",a.toString())},"onCurrencyChange"),t=S({defaultRegion:e.countryRegionSlug,defaultCurrency:e.currencySlug,defaultSalary:e.salary,estimationOptions:n,version:_,options:{...r,onCurrencyChange:F}}),K=C(t.handleValidation),b=A(R,e.currencySlug,e.management,n.managementFees),{countryRegionSlug:v,currencySlug:h,salary:D,benefits:P,hiringBudget:B,age:E,contractDurationType:M,regionSlug:w,...x}=e,c=y({resolver:K,defaultValues:{country:v,currency:h,region:w,salary:D,salary_conversion:"",salary_converted:void 0,hiring_budget:B||"employee_annual_salary",age:E,contract_duration_type:M,management:{management_fee:b?.toString()||""},benefits:P,estimation_title:n.title,...x},shouldUnregister:!1,mode:"onBlur"});return T(()=>{if(e.currencySlug&&t.currencies&&n.includeManagementFee&&!e.management?.management_fee){let a=t.currencies.find(i=>i.value===e.currencySlug)?.label;if(a){m(a);let i=l(u,a,n.managementFees);c.setValue("management.management_fee",i?.toString()||"")}}},[e.currencySlug,t.currencies,n.includeManagementFee,n.managementFees,e.management?.management_fee,c]),k(f.Provider,{value:{form:c,formId:p,costCalculatorBag:t},children:g(t)})},"CostCalculatorFlow");export{W as a};
2
- //# sourceMappingURL=chunk-KM7CQTD5.js.map
1
+ import{c as d,d as S}from"./chunk-45K26OSG.js";import{a as f}from"./chunk-KSHK3ZPX.js";import{a as u}from"./chunk-HN5HLFTB.js";import{b as C}from"./chunk-KFYWUBRS.js";import{f as y}from"./chunk-72RFYT5Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{useEffect as T,useId as U,useState as I}from"react";import{jsx as k}from"react/jsx-runtime";var l=o((n,e,r)=>r&&r[e]?r[e]:n[e]?n[e]/100:0,"getDefaultManagementFee"),A=o((n,e,r,g)=>!e&&!r?.management_fee&&n?l(u,n,g):e&&!r?.management_fee?"":r?.management_fee,"getManagementFee"),W=o(({estimationOptions:n=d,defaultValues:e={countryRegionSlug:"",regionSlug:"",currencySlug:"",salary:"",benefits:{},management:{management_fee:""}},options:r,render:g,version:_="standard"})=>{let p=U(),[R,m]=I("USD"),F=o(s=>{m(s);let a=l(u,s,n.managementFees);a&&c.setValue("management.management_fee",a.toString())},"onCurrencyChange"),t=S({defaultRegion:e.countryRegionSlug,defaultCurrency:e.currencySlug,defaultSalary:e.salary,estimationOptions:n,version:_,options:{...r,onCurrencyChange:F}}),K=C(t.handleValidation),b=A(R,e.currencySlug,e.management,n.managementFees),{countryRegionSlug:v,currencySlug:h,salary:D,benefits:P,hiringBudget:B,age:E,contractDurationType:M,regionSlug:w,...x}=e,c=y({resolver:K,defaultValues:{country:v,currency:h,region:w,salary:D,salary_conversion:"",salary_converted:void 0,hiring_budget:B||"employee_annual_salary",age:E,contract_duration_type:M,management:{management_fee:b?.toString()||""},benefits:P,estimation_title:n.title,...x},shouldUnregister:!1,mode:"onBlur"});return T(()=>{if(e.currencySlug&&t.currencies&&n.includeManagementFee&&!e.management?.management_fee){let a=t.currencies.find(i=>i.value===e.currencySlug)?.label;if(a){m(a);let i=l(u,a,n.managementFees);c.setValue("management.management_fee",i?.toString()||"")}}},[e.currencySlug,t.currencies,n.includeManagementFee,n.managementFees,e.management?.management_fee,c]),k(f.Provider,{value:{form:c,formId:p,costCalculatorBag:t},children:g(t)})},"CostCalculatorFlow");export{W as a};
2
+ //# sourceMappingURL=chunk-KKCYP5TA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import React, { useEffect, useId, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/validationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n CostCalculatorVersion,\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n CurrencyKey,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\n\nexport type CostCalculatorFlowProps = {\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues?: Partial<\n {\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n /**\n * Default value for the benefits field.\n */\n benefits: Record<string, string>;\n /**\n * Default value for the hiring budget field\n */\n hiringBudget: string;\n /**\n * Default value for the age field.\n */\n age: number;\n /**\n * Default value for the contract duration type field.\n */\n contractDurationType: 'fixed' | 'indefinite';\n /**\n * Default value for the management fee field.\n */\n management: {\n management_fee: string;\n };\n /**\n * Default value for the region field.\n */\n regionSlug: string;\n } & Record<string, unknown>\n >;\n options?: UseCostCalculatorOptions;\n render: (\n costCalculatorBag: ReturnType<typeof useCostCalculator>,\n ) => React.ReactNode;\n /**\n * Whether to include annual_gross_salary in the estimation payload\n */\n version?: CostCalculatorVersion;\n};\n\nconst getDefaultManagementFee = (\n baseRates: Record<CurrencyKey, number>,\n currency: CurrencyKey,\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (managementFees && managementFees[currency]) {\n return managementFees[currency];\n }\n if (baseRates[currency]) {\n return baseRates[currency] / 100;\n }\n return 0;\n};\n\nconst getManagementFee = (\n currency: CurrencyKey,\n currencySlug?: string,\n management?: { management_fee: string },\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (!currencySlug && !management?.management_fee && currency) {\n return getDefaultManagementFee(BASE_RATES, currency, managementFees);\n }\n if (currencySlug && !management?.management_fee) {\n return '';\n }\n\n return management?.management_fee;\n};\n\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n regionSlug: '',\n currencySlug: '',\n salary: '',\n benefits: {},\n management: {\n management_fee: '',\n },\n },\n options,\n render,\n version = 'standard',\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const [currency, setCurrency] = useState<CurrencyKey>('USD');\n const onCurrencyChange = (currency: string) => {\n setCurrency(currency as CurrencyKey);\n const managementFee = getDefaultManagementFee(\n BASE_RATES,\n currency as CurrencyKey,\n estimationOptions.managementFees,\n );\n if (managementFee) {\n form.setValue('management.management_fee', managementFee.toString());\n }\n };\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n defaultCurrency: defaultValues.currencySlug,\n defaultSalary: defaultValues.salary,\n estimationOptions,\n version,\n options: {\n ...options,\n onCurrencyChange: onCurrencyChange,\n },\n });\n const resolver = useJsonSchemasValidationFormResolver(\n costCalculatorBag.handleValidation,\n );\n\n const defaultManagementFee = getManagementFee(\n currency,\n defaultValues.currencySlug,\n defaultValues.management,\n estimationOptions.managementFees,\n );\n\n const {\n countryRegionSlug,\n currencySlug,\n salary,\n benefits,\n hiringBudget,\n age,\n contractDurationType,\n regionSlug,\n ...formDefaultValues\n } = defaultValues;\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: countryRegionSlug,\n currency: currencySlug,\n region: regionSlug,\n salary: salary,\n salary_conversion: '',\n salary_converted: undefined,\n hiring_budget: hiringBudget || 'employee_annual_salary',\n age: age,\n contract_duration_type: contractDurationType,\n management: {\n management_fee: defaultManagementFee?.toString() || '',\n },\n benefits: benefits,\n estimation_title: estimationOptions.title,\n ...formDefaultValues,\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n if (\n defaultValues.currencySlug &&\n costCalculatorBag.currencies &&\n estimationOptions.includeManagementFee &&\n !defaultValues.management?.management_fee\n ) {\n const currencyData = costCalculatorBag.currencies.find(\n (currency) => currency.value === defaultValues.currencySlug,\n );\n const currencyCode = currencyData?.label;\n if (currencyCode) {\n setCurrency(currencyCode as CurrencyKey);\n const defaultManagementFee = getDefaultManagementFee(\n BASE_RATES,\n currencyCode as CurrencyKey,\n estimationOptions.managementFees,\n );\n form.setValue(\n 'management.management_fee',\n defaultManagementFee?.toString() || '',\n );\n }\n }\n }, [\n defaultValues.currencySlug,\n costCalculatorBag.currencies,\n estimationOptions.includeManagementFee,\n estimationOptions.managementFees,\n defaultValues.management?.management_fee,\n form,\n ]);\n\n return (\n <CostCalculatorContext.Provider\n value={{\n form,\n formId: formId,\n costCalculatorBag,\n }}\n >\n {render(costCalculatorBag)}\n </CostCalculatorContext.Provider>\n );\n};\n"],"mappings":"uPAAA,OAAgB,aAAAA,EAAW,SAAAC,EAAO,YAAAC,MAAgB,QAkO9C,cAAAC,MAAA,oBAtJJ,IAAMC,EAA0BC,EAAA,CAC9BC,EACAC,EACAC,IAEIA,GAAkBA,EAAeD,CAAQ,EACpCC,EAAeD,CAAQ,EAE5BD,EAAUC,CAAQ,EACbD,EAAUC,CAAQ,EAAI,IAExB,EAXuB,2BAc1BE,EAAmBJ,EAAA,CACvBE,EACAG,EACAC,EACAH,IAEI,CAACE,GAAgB,CAACC,GAAY,gBAAkBJ,EAC3CH,EAAwBQ,EAAYL,EAAUC,CAAc,EAEjEE,GAAgB,CAACC,GAAY,eACxB,GAGFA,GAAY,eAbI,oBAgBZE,EAAqBR,EAAA,CAAC,CACjC,kBAAAS,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,WAAY,GACZ,aAAc,GACd,OAAQ,GACR,SAAU,CAAC,EACX,WAAY,CACV,eAAgB,EAClB,CACF,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,UACZ,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACf,CAACd,EAAUe,CAAW,EAAIC,EAAsB,KAAK,EACrDC,EAAmBnB,EAACE,GAAqB,CAC7Ce,EAAYf,CAAuB,EACnC,IAAMkB,EAAgBrB,EACpBQ,EACAL,EACAO,EAAkB,cACpB,EACIW,GACFC,EAAK,SAAS,4BAA6BD,EAAc,SAAS,CAAC,CAEvE,EAVyB,oBAWnBE,EAAoBC,EAAkB,CAC1C,cAAeZ,EAAc,kBAC7B,gBAAiBA,EAAc,aAC/B,cAAeA,EAAc,OAC7B,kBAAAF,EACA,QAAAK,EACA,QAAS,CACP,GAAGF,EACH,iBAAkBO,CACpB,CACF,CAAC,EACKK,EAAWC,EACfH,EAAkB,gBACpB,EAEMI,EAAuBtB,EAC3BF,EACAS,EAAc,aACdA,EAAc,WACdF,EAAkB,cACpB,EAEM,CACJ,kBAAAkB,EACA,aAAAtB,EACA,OAAAuB,EACA,SAAAC,EACA,aAAAC,EACA,IAAAC,EACA,qBAAAC,EACA,WAAAC,EACA,GAAGC,CACL,EAAIvB,EAEEU,EAAOc,EAAQ,CACnB,SAAAX,EACA,cAAe,CACb,QAASG,EACT,SAAUtB,EACV,OAAQ4B,EACR,OAAQL,EACR,kBAAmB,GACnB,iBAAkB,OAClB,cAAeE,GAAgB,yBAC/B,IAAKC,EACL,uBAAwBC,EACxB,WAAY,CACV,eAAgBN,GAAsB,SAAS,GAAK,EACtD,EACA,SAAUG,EACV,iBAAkBpB,EAAkB,MACpC,GAAGyB,CACL,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OAAAE,EAAU,IAAM,CACd,GACEzB,EAAc,cACdW,EAAkB,YAClBb,EAAkB,sBAClB,CAACE,EAAc,YAAY,eAC3B,CAIA,IAAM0B,EAHef,EAAkB,WAAW,KAC/CpB,GAAaA,EAAS,QAAUS,EAAc,YACjD,GACmC,MACnC,GAAI0B,EAAc,CAChBpB,EAAYoB,CAA2B,EACvC,IAAMX,EAAuB3B,EAC3BQ,EACA8B,EACA5B,EAAkB,cACpB,EACAY,EAAK,SACH,4BACAK,GAAsB,SAAS,GAAK,EACtC,CACF,CACF,CACF,EAAG,CACDf,EAAc,aACdW,EAAkB,WAClBb,EAAkB,qBAClBA,EAAkB,eAClBE,EAAc,YAAY,eAC1BU,CACF,CAAC,EAGCvB,EAACwC,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAjB,EACA,OAAQN,EACR,kBAAAO,CACF,EAEC,SAAAT,EAAOS,CAAiB,EAC3B,CAEJ,EAlIkC","names":["useEffect","useId","useState","jsx","getDefaultManagementFee","__name","baseRates","currency","managementFees","getManagementFee","currencySlug","management","BASE_RATES","CostCalculatorFlow","estimationOptions","defaultEstimationOptions","defaultValues","options","render","version","formId","useId","setCurrency","useState","onCurrencyChange","managementFee","form","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","defaultManagementFee","countryRegionSlug","salary","benefits","hiringBudget","age","contractDurationType","regionSlug","formDefaultValues","useForm","useEffect","currencyCode","CostCalculatorContext"]}
1
+ {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import React, { useEffect, useId, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/validationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n CostCalculatorVersion,\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n CurrencyKey,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\n\nexport type CostCalculatorFlowProps = {\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues?: Partial<\n {\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n /**\n * Default value for the benefits field.\n */\n benefits: Record<string, string>;\n /**\n * Default value for the hiring budget field\n */\n hiringBudget: string;\n /**\n * Default value for the age field.\n */\n age: number;\n /**\n * Default value for the contract duration type field.\n */\n contractDurationType: 'fixed' | 'indefinite';\n /**\n * Default value for the management fee field.\n */\n management: {\n management_fee: string;\n };\n /**\n * Default value for the region field.\n */\n regionSlug: string;\n } & Record<string, unknown>\n >;\n options?: UseCostCalculatorOptions;\n render: (\n costCalculatorBag: ReturnType<typeof useCostCalculator>,\n ) => React.ReactNode;\n /**\n * Whether to include annual_gross_salary in the estimation payload\n */\n version?: CostCalculatorVersion;\n};\n\nconst getDefaultManagementFee = (\n baseRates: Record<CurrencyKey, number>,\n currency: CurrencyKey,\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (managementFees && managementFees[currency]) {\n return managementFees[currency];\n }\n if (baseRates[currency]) {\n return baseRates[currency] / 100;\n }\n return 0;\n};\n\nconst getManagementFee = (\n currency: CurrencyKey,\n currencySlug?: string,\n management?: { management_fee: string },\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (!currencySlug && !management?.management_fee && currency) {\n return getDefaultManagementFee(BASE_RATES, currency, managementFees);\n }\n if (currencySlug && !management?.management_fee) {\n return '';\n }\n\n return management?.management_fee;\n};\n\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n regionSlug: '',\n currencySlug: '',\n salary: '',\n benefits: {},\n management: {\n management_fee: '',\n },\n },\n options,\n render,\n version = 'standard',\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const [currency, setCurrency] = useState<CurrencyKey>('USD');\n const onCurrencyChange = (currency: string) => {\n setCurrency(currency as CurrencyKey);\n const managementFee = getDefaultManagementFee(\n BASE_RATES,\n currency as CurrencyKey,\n estimationOptions.managementFees,\n );\n if (managementFee) {\n form.setValue('management.management_fee', managementFee.toString());\n }\n };\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n defaultCurrency: defaultValues.currencySlug,\n defaultSalary: defaultValues.salary,\n estimationOptions,\n version,\n options: {\n ...options,\n onCurrencyChange: onCurrencyChange,\n },\n });\n const resolver = useJsonSchemasValidationFormResolver(\n costCalculatorBag.handleValidation,\n );\n\n const defaultManagementFee = getManagementFee(\n currency,\n defaultValues.currencySlug,\n defaultValues.management,\n estimationOptions.managementFees,\n );\n\n const {\n countryRegionSlug,\n currencySlug,\n salary,\n benefits,\n hiringBudget,\n age,\n contractDurationType,\n regionSlug,\n ...formDefaultValues\n } = defaultValues;\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: countryRegionSlug,\n currency: currencySlug,\n region: regionSlug,\n salary: salary,\n salary_conversion: '',\n salary_converted: undefined,\n hiring_budget: hiringBudget || 'employee_annual_salary',\n age: age,\n contract_duration_type: contractDurationType,\n management: {\n management_fee: defaultManagementFee?.toString() || '',\n },\n benefits: benefits,\n estimation_title: estimationOptions.title,\n ...formDefaultValues,\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n if (\n defaultValues.currencySlug &&\n costCalculatorBag.currencies &&\n estimationOptions.includeManagementFee &&\n !defaultValues.management?.management_fee\n ) {\n const currencyData = costCalculatorBag.currencies.find(\n (currency) => currency.value === defaultValues.currencySlug,\n );\n const currencyCode = currencyData?.label;\n if (currencyCode) {\n // WE NEED TO FIX: react-hooks/set-state-in-effect - Calling setState synchronously within an effect can trigger cascading renders\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setCurrency(currencyCode as CurrencyKey);\n const defaultManagementFee = getDefaultManagementFee(\n BASE_RATES,\n currencyCode as CurrencyKey,\n estimationOptions.managementFees,\n );\n form.setValue(\n 'management.management_fee',\n defaultManagementFee?.toString() || '',\n );\n }\n }\n }, [\n defaultValues.currencySlug,\n costCalculatorBag.currencies,\n estimationOptions.includeManagementFee,\n estimationOptions.managementFees,\n defaultValues.management?.management_fee,\n form,\n ]);\n\n return (\n <CostCalculatorContext.Provider\n value={{\n form,\n formId: formId,\n costCalculatorBag,\n }}\n >\n {render(costCalculatorBag)}\n </CostCalculatorContext.Provider>\n );\n};\n"],"mappings":"uPAAA,OAAgB,aAAAA,EAAW,SAAAC,EAAO,YAAAC,MAAgB,QAoO9C,cAAAC,MAAA,oBAxJJ,IAAMC,EAA0BC,EAAA,CAC9BC,EACAC,EACAC,IAEIA,GAAkBA,EAAeD,CAAQ,EACpCC,EAAeD,CAAQ,EAE5BD,EAAUC,CAAQ,EACbD,EAAUC,CAAQ,EAAI,IAExB,EAXuB,2BAc1BE,EAAmBJ,EAAA,CACvBE,EACAG,EACAC,EACAH,IAEI,CAACE,GAAgB,CAACC,GAAY,gBAAkBJ,EAC3CH,EAAwBQ,EAAYL,EAAUC,CAAc,EAEjEE,GAAgB,CAACC,GAAY,eACxB,GAGFA,GAAY,eAbI,oBAgBZE,EAAqBR,EAAA,CAAC,CACjC,kBAAAS,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,WAAY,GACZ,aAAc,GACd,OAAQ,GACR,SAAU,CAAC,EACX,WAAY,CACV,eAAgB,EAClB,CACF,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,UACZ,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACf,CAACd,EAAUe,CAAW,EAAIC,EAAsB,KAAK,EACrDC,EAAmBnB,EAACE,GAAqB,CAC7Ce,EAAYf,CAAuB,EACnC,IAAMkB,EAAgBrB,EACpBQ,EACAL,EACAO,EAAkB,cACpB,EACIW,GACFC,EAAK,SAAS,4BAA6BD,EAAc,SAAS,CAAC,CAEvE,EAVyB,oBAWnBE,EAAoBC,EAAkB,CAC1C,cAAeZ,EAAc,kBAC7B,gBAAiBA,EAAc,aAC/B,cAAeA,EAAc,OAC7B,kBAAAF,EACA,QAAAK,EACA,QAAS,CACP,GAAGF,EACH,iBAAkBO,CACpB,CACF,CAAC,EACKK,EAAWC,EACfH,EAAkB,gBACpB,EAEMI,EAAuBtB,EAC3BF,EACAS,EAAc,aACdA,EAAc,WACdF,EAAkB,cACpB,EAEM,CACJ,kBAAAkB,EACA,aAAAtB,EACA,OAAAuB,EACA,SAAAC,EACA,aAAAC,EACA,IAAAC,EACA,qBAAAC,EACA,WAAAC,EACA,GAAGC,CACL,EAAIvB,EAEEU,EAAOc,EAAQ,CACnB,SAAAX,EACA,cAAe,CACb,QAASG,EACT,SAAUtB,EACV,OAAQ4B,EACR,OAAQL,EACR,kBAAmB,GACnB,iBAAkB,OAClB,cAAeE,GAAgB,yBAC/B,IAAKC,EACL,uBAAwBC,EACxB,WAAY,CACV,eAAgBN,GAAsB,SAAS,GAAK,EACtD,EACA,SAAUG,EACV,iBAAkBpB,EAAkB,MACpC,GAAGyB,CACL,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OAAAE,EAAU,IAAM,CACd,GACEzB,EAAc,cACdW,EAAkB,YAClBb,EAAkB,sBAClB,CAACE,EAAc,YAAY,eAC3B,CAIA,IAAM0B,EAHef,EAAkB,WAAW,KAC/CpB,GAAaA,EAAS,QAAUS,EAAc,YACjD,GACmC,MACnC,GAAI0B,EAAc,CAGhBpB,EAAYoB,CAA2B,EACvC,IAAMX,EAAuB3B,EAC3BQ,EACA8B,EACA5B,EAAkB,cACpB,EACAY,EAAK,SACH,4BACAK,GAAsB,SAAS,GAAK,EACtC,CACF,CACF,CACF,EAAG,CACDf,EAAc,aACdW,EAAkB,WAClBb,EAAkB,qBAClBA,EAAkB,eAClBE,EAAc,YAAY,eAC1BU,CACF,CAAC,EAGCvB,EAACwC,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAjB,EACA,OAAQN,EACR,kBAAAO,CACF,EAEC,SAAAT,EAAOS,CAAiB,EAC3B,CAEJ,EApIkC","names":["useEffect","useId","useState","jsx","getDefaultManagementFee","__name","baseRates","currency","managementFees","getManagementFee","currencySlug","management","BASE_RATES","CostCalculatorFlow","estimationOptions","defaultEstimationOptions","defaultValues","options","render","version","formId","useId","setCurrency","useState","onCurrencyChange","managementFee","form","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","defaultManagementFee","countryRegionSlug","salary","benefits","hiringBudget","age","contractDurationType","regionSlug","formDefaultValues","useForm","useEffect","currencyCode","CostCalculatorContext"]}
@@ -0,0 +1,2 @@
1
+ import{a as Wt,b as ee,c as ie,d as ne,e as re,f as oe,h as ae,i as se,j as ce,k as le,l as ue,m as de,n as pe,o as me,p as fe,q as ye,r as _e,s as ge,t as be}from"./chunk-NUD662HZ.js";import{a as Se,b as Ce,c as we}from"./chunk-SP2V52RP.js";import{a as zt,b as Xt,f as Yt,g as Zt,h as te}from"./chunk-AHRG5QCS.js";import{a as $,b as nt,c as _,d as $t,g as Ht}from"./chunk-PX5PE6GX.js";import{a as Kt}from"./chunk-TFJOJCCS.js";import{e as Jt,g as Nt,h as Ut}from"./chunk-TXEONNPV.js";import{a as Qt,e as y,f as D}from"./chunk-FFVTWWGX.js";import{L as xt}from"./chunk-R47Q7R6C.js";import{a as b,j as P,k as R}from"./chunk-OSQ6VUDM.js";import{a as Gt}from"./chunk-TSPDJUGG.js";import{d as jt}from"./chunk-KQPDXXG3.js";import{a as u}from"./chunk-P37U34EQ.js";import{useEffect as T,useMemo as a,useRef as Pe,useState as q}from"react";import ve from"lodash.omit";import{useQuery as _i}from"@tanstack/react-query";var gi=u(()=>{let{client:L}=jt(),{data:A}=ee(),l=ie(A)?A?.company?.id??"":"";return _i({queryKey:["legal-entities",l],queryFn:u(()=>xt({client:L,path:{company_id:l},query:{page_size:100}}),"queryFn"),select:u(H=>H.data?.data?.legal_entities,"select"),enabled:!!l})},"useLegalEntities"),he=u(()=>{let{data:L}=gi();return L?.find(A=>A.is_default)},"useDefaultLegalEntity");var bi={select_country:null,basic_information:"employment_basic_information",contract_details:null,eligibility_questionnaire:null,pricing_plan:null,contract_preview:null,review:null},Si={employment_basic_information:"basic_information"},$i=u(({countryCode:L,externalId:A,employmentId:l,skipSteps:H,options:p,initialValues:d})=>{let Ee=p?.excludeProducts||[],ft=Pe(p?.onContractReviewed);T(()=>{ft.current=p?.onContractReviewed},[p?.onContractReviewed]);let[c,yt]=q(L||null),[r,Fe]=q(l),[v,_t]=q(void 0),W=Pe({select_country:{},basic_information:{},contract_details:{},contract_preview:{},pricing_plan:{},eligibility_questionnaire:{}}),[z,Ve]=q(void 0),[gt,X]=q(!1),[bt,Oe]=q(!0),[rt,St]=q(null),{steps:Me,stepsArray:Ie}=a(()=>zt({includeSelectCountry:!H?.includes("select_country"),includeEligibilityQuestionnaire:gt,includeContractPreview:bt}),[gt,bt,H]),{fieldValues:s,stepState:e,setFieldValues:Ct,previousStep:Re,nextStep:De,goToStep:B,setStepValues:wt}=Gt(Me);T(()=>{rt&&(B(rt),St(null))},[rt,B]);let{data:o,isLoading:Te,refetch:ht}=Kt({employmentId:r,queryParams:{exclude_files:!0}}),qe=he(),{status:k}=o||{},S=k&&Yt.includes(k),Ae=k&&!Zt.includes(k),ke=a(()=>k==="invited"?"invited":"not_invited",[k]),Pt=Nt(),vt=Ut(c,p),ot=se(),Et=Wt(),{mutateAsync:Ft}=ue(ot,Et,s),Vt=fe(),Ot=ye(),{mutateAsyncOrThrow:Le}=b(vt),Mt=re(),It=ae(),Rt=_e(),{mutateAsyncOrThrow:Be}=b(Pt),{mutateAsyncOrThrow:xe}=b(ot),{mutateAsyncOrThrow:je}=b(Mt),{mutateAsyncOrThrow:Dt}=b(It),{mutateAsyncOrThrow:Qe}=b(Vt),{mutateAsyncOrThrow:Tt}=b(Ot),{mutateAsyncOrThrow:Je}=b(Rt);l&&o?.country?.code&&!c&&yt(o.country.code);let{selectCountryForm:Y,isLoading:Ne,countries:qt}=ge({jsfModify:p?.jsfModify?.select_country}),at=a(()=>qt?.find(t=>t.value===c),[qt,c]),Ue=a(()=>at?.label,[at]),Ke=e.currentStep.name==="pricing_plan"||!!l&&S,{form:E,isLoading:Ge,contractorSubscriptions:Z,refetch:st,isEligibilityQuestionnaireBlocked:x}=le(r,at,{jsonSchemaVersion:p?.jsonSchemaVersion,queryOptions:{enabled:Ke},excludeProducts:Ee,jsfModify:p?.jsfModify?.pricing_plan}),F=a(()=>!!Z?.find(t=>t.product.short_name==="COR")?.eligibility_questionnaire?.submitted_at,[Z]);T(()=>{if(F){X(!1);return}else X(z===_)},[F,z]),T(()=>{let t=o?.contractor_type==="cor";Oe(!t)},[o?.contractor_type]);let tt=a(()=>Z?.find(t=>t.product.short_name==="COR")?.eligibility_questionnaire?.responses,[Z]),$e=bi[e.currentStep.name]||"contractor_basic_information",He=Si[$e],We=o?.[He]||{},ze=u(({form:t,options:n={},query:f={}})=>{let g=Object.keys(s).length>0?{...d,...e.values?.[e.currentStep.name],...s}:{...d,...We};return Jt({countryCode:c,form:t,fieldValues:g,query:f,options:{...n,queryOptions:{enabled:n.queryOptions?.enabled??!0}}})},"useJSONSchema"),Xe=!!(c&&(e.currentStep.name==="basic_information"||l)),Ye=!!(c==="GBR"&&l&&e.currentStep.name==="basic_information"),{data:j,isLoading:Ze}=de(l,{enabled:Ye}),{data:et,isLoading:ti}=pe(r,{enabled:!!r});T(()=>{et&&et.length>0&&!v&&_t(et[0].id)},[et,v]);let{data:C,isLoading:ei}=ze({form:"contractor_basic_information",options:{jsfModify:Ce(c,Ue,p),queryOptions:{enabled:Xe}}}),ii=a(()=>Xt(o?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date),[o?.basic_information?.provisional_start_date,s?.service_duration?.provisional_start_date]),m=a(()=>{let t={standard:$,plus:nt,cor:_};if(s.subscription)return s.subscription;let n=e.values?.pricing_plan?.subscription;return n&&!x?n:F&&!x?_:x&&F?$:t[o?.contractor_type]||$},[s,e.values,F,o?.contractor_type,x]);T(()=>{m&&m!==z&&Ve(m)},[m,z]);let ni=a(()=>({...tt,...d,...e.values?.eligibility_questionnaire,...s}),[tt,d,e.values?.eligibility_questionnaire,s]),ri=a(()=>m===_&&e.currentStep.name==="eligibility_questionnaire"||!!l&&S&&m===_,[m,e.currentStep.name,l,S]),{data:V,isLoading:oi}=me({options:{queryOptions:{enabled:ri},jsfModify:p?.jsfModify?.eligibility_questionnaire},fieldValues:ni}),ai=!!(c&&e.currentStep.name==="contract_details"||S),{data:w,isLoading:si}=be({countryCode:c,fieldValues:s,employmentId:r,options:{queryOptions:{enabled:ai},jsfModify:Se(p?.jsfModify?.contract_details,ii,m,s,m===_)}}),ci=a(()=>e.currentStep.name==="contract_preview"||!!l&&S,[e.currentStep.name,l,S]),{data:O}=ne({fieldValues:s,options:{queryOptions:{enabled:ci},jsfModify:we(p,s)}}),{data:ct,isLoading:li}=oe({employmentId:r,contractDocumentId:v,options:{queryOptions:{enabled:!!v}}}),i=a(()=>({select_country:Y?.fields||[],basic_information:C?.fields||[],pricing_plan:E?.fields||[],eligibility_questionnaire:V?.fields||[],contract_details:w?.fields||[],contract_preview:O?.fields||[],review:[]}),[Y?.fields,C?.fields,E?.fields,w?.fields,O?.fields,V?.fields]),ui={select_country:null,basic_information:C?.meta["x-jsf-fieldsets"],pricing_plan:null,contract_details:w?.meta["x-jsf-fieldsets"],eligibility_questionnaire:null,contract_preview:null,review:null},{country:di,basic_information:it={},contract_details:At={}}=o||{},kt=di?.code,Q=a(()=>D(i.select_country,{country:c||kt||""}),[i.select_country,c,kt]),lt=a(()=>j?.content?Qt(j.content,j.name):null,[j?.content,j?.name]),J=a(()=>{let t={...d,...it,ir35:o?.contract_details?.ir_35,nationality_status:o?.contract_details?.nationality,...lt&&{ir35_sds_file:[lt]}};return D(i.basic_information,t)},[d,it,o?.contract_details?.ir_35,o?.contract_details?.nationality,lt,i.basic_information]),N=a(()=>{let n={...{service_duration:{provisional_start_date:it.provisional_start_date}},...d,...At};return D(i.contract_details,n)},[i.contract_details,At,d,it]),U=a(()=>{let t=ct?.contract_document?.signatories?.find(f=>f.type==="company"),n={...d,signature:t?.signature};return D(i.contract_preview,n)},[i.contract_preview,d,ct]),K=a(()=>{let n={...{subscription:m},...d};return D(i.pricing_plan,n)},[i.pricing_plan,d,m]),G=a(()=>{let t={...d,...tt};return D(i.eligibility_questionnaire,t)},[i.eligibility_questionnaire,d,tt]),pi=a(()=>({select_country:Q,basic_information:J,contract_details:N,contract_preview:U,pricing_plan:K,eligibility_questionnaire:G}),[Q,J,N,U,K,G]),ut=!!(l&&S&&e.currentStep.name!=="review"),dt=Ne||ei||Te||si||Ge||li||Ze||ti||oi,Lt=a(()=>{let n=o?.contractor_type==="cor"||i.contract_preview.length>0;return!!(ut&&!dt&&v&&i.basic_information.length>0&&i.contract_details.length>0&&n)},[ut,dt,v,i.basic_information.length,i.contract_details.length,i.contract_preview.length,o?.contractor_type]);T(()=>{Lt&&(W.current={select_country:P(Q,i.select_country),basic_information:P(J,i.basic_information),contract_details:P(N,i.contract_details),contract_preview:P(U,i.contract_preview),pricing_plan:P(K,i.pricing_plan),eligibility_questionnaire:P(G,i.eligibility_questionnaire)},wt({select_country:Q,basic_information:J,contract_details:N,contract_preview:U,pricing_plan:K,eligibility_questionnaire:G,review:{}}),B("review"))},[Lt,B,Q,J,N,wt,i.select_country,i.basic_information,i.contract_details,i.pricing_plan,K,i.contract_preview,U,i.eligibility_questionnaire,G]);let mi=u(t=>{B(t)},"goTo"),Bt=u(async t=>Y&&e.currentStep.name==="select_country"?t:C&&e.currentStep.name==="basic_information"?await y(t,C?.fields,{isPartialValidation:!1}):w&&e.currentStep.name==="contract_details"?await y(t,w?.fields,{isPartialValidation:!1}):O&&e.currentStep.name==="contract_preview"?await y(t,O?.fields,{isPartialValidation:!1}):E&&e.currentStep.name==="pricing_plan"?await y(t,E?.fields,{isPartialValidation:!1}):V&&e.currentStep.name==="eligibility_questionnaire"?await y(t,V?.fields,{isPartialValidation:!1}):{},"parseFormValues"),fi=u(t=>{let n=t?.rawError?.error?.errors?.services_and_deliverables;return n?.source===Ht?{error:n.error,source:n.source,skippable:n.skippable}:null},"extractAiValidationError");async function yi(t){let n=e.currentStep.name;n in W.current&&(W.current[n]=P(t,i[n]));let f=await Bt(t);switch(e.currentStep.name){case"select_country":return yt(f.country),Promise.resolve({data:{countryCode:f.country}});case"basic_information":{let M=!r&&c,g=r&&c&&o?.country&&o?.country.code!==c;if(M||g){let I={basic_information:ve(f,"nationality_status","ir35","ir35_sds_file"),type:"contractor",country_code:c,external_id:A},pt=await Be(I),mt=pt?.data?.employment?.id;if(!mt)throw R("Employment ID not found");return await Ft({employmentId:mt}),Fe(mt),pt}else if(r){let h=ve(f,"nationality_status","ir35","ir35_sds_file");return await Ft({employmentId:r}),Le({employmentId:r,basic_information:h})}return}case"contract_details":{let M=s.services_and_deliverables_error_skippable===!0,g={contract_document:f,skip_ai_checks:M};try{let h=await xe({employmentId:r,payload:g}),I=h?.data?.contract_document?.id;if(!I)throw R("Contract document ID not found");return _t(I),h}catch(h){let I=fi(h);throw I&&Ct({...t,services_and_deliverables_ai_warning:te(m===_),services_and_deliverables_error_skippable:I.skippable}),h}}case"contract_preview":return await je({employmentId:r,contractDocumentId:v,payload:{signature:f.signature}});case"pricing_plan":{if(x&&[_,nt].includes(t.subscription))throw R(`This individual is not eligible for ${ce[t.subscription]}.`);if(t.subscription===$t)return Promise.resolve({data:{subscription:t.subscription}});if(F&&t.subscription!==_)try{await Je({employmentId:r}),await st()}catch(g){if(g?.response?.status!==404)throw g;await st()}if(t.subscription==$)return Dt({employmentId:r,payload:{operation:"downgrade"}});if(t.subscription==nt)return Dt({employmentId:r,payload:{operation:"upgrade"}});if(t.subscription==_)return F&&o?.contractor_type!=="cor"?Tt({employmentId:r}):Promise.resolve({data:{subscription:t.subscription}});throw R("invalid selection")}case"eligibility_questionnaire":try{if((await Qe({employmentId:r,payload:f}))?.data?.is_blocking)throw X(!1),St("pricing_plan"),R("This individual is not eligible for Contractor of Record.");return await Tt({employmentId:r})}finally{await st()}default:throw R("Invalid step state")}}return u(yi,"onSubmit"),{isLoading:dt||ut,fieldValues:s,stepState:e,checkFieldUpdates:Ct,markContractAsReviewed:u(()=>{ft.current?.()},"markContractAsReviewed"),back:Re,next:u(()=>{r&&ht(),De()},"handleNextStep"),goTo:mi,onSubmit:yi,fields:i[e.currentStep.name],meta:{fields:W.current,fieldsets:ui[e.currentStep.name]},parseFormValues:Bt,canSkipAiValidation:s.services_and_deliverables_error_skippable===!0,handleValidation:u(async t=>{if(e.currentStep.name==="select_country")return Y.handleValidation(t);if(C&&e.currentStep.name==="basic_information"){let n=await y(t,C?.fields,{isPartialValidation:!1});return C?.handleValidation(n)}if(w&&e.currentStep.name==="contract_details"){let n=await y(t,w?.fields,{isPartialValidation:!1});return w?.handleValidation(n)}if(O&&e.currentStep.name==="contract_preview"){let n=await y(t,O?.fields,{isPartialValidation:!0});return O?.handleValidation(n)}if(E&&e.currentStep.name==="pricing_plan"){let n=await y(t,E?.fields,{isPartialValidation:!1});return E?.handleValidation(n)}if(V&&e.currentStep.name==="eligibility_questionnaire"){let n=await y(t,V?.fields,{isPartialValidation:!1});return V?.handleValidation(n)}return null},"handleValidation"),initialValues:pi,employmentId:r,refetchEmployment:ht,isSubmitting:Pt.isPending||vt.isPending||ot.isPending||Mt.isPending||It.isPending||Et.isPending||Vt.isPending||Ot.isPending||Rt.isPending,documentPreviewPdf:ct,canInvite:Ae,isEmploymentReadOnly:S,invitedStatus:ke,employment:o,defaultLegalEntity:qe,steps:Ie}},"useContractorOnboarding");export{$i as a};
2
+ //# sourceMappingURL=chunk-KLN2FG5Y.js.map
@@ -1 +1 @@
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":"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","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
+ {"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, visible: boolean, 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":"ovBAAA,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,IACCqB,EAAU,YAAY,OAAS,qBACtB7B,IAGN0G,GAAoB,GACxBlG,IAAwB,OACxBR,GACA6B,EAAU,YAAY,OAAS,qBAG3B,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,oBACjCc,GAGI,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,GACA2C,GACAd,EAAU,YAAY,OAAS,UAG3BgI,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,IACA,CAACC,IACOhJ,GACR8H,EAAW,kBAAkB,OAAS,GACtCA,EAAW,iBAAiB,OAAS,GACrCoB,EAEJ,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"]}
@@ -0,0 +1,2 @@
1
+ import{b as r}from"./chunk-XADVV6OP.js";import{c as v}from"./chunk-OSQ6VUDM.js";import{a as i}from"./chunk-P37U34EQ.js";import{useState as E,useRef as N,useEffect as k}from"react";import{Upload as B,X as M}from"lucide-react";import{jsx as t,jsxs as o}from"react/jsx-runtime";var U=i(l=>l?l.split(",").map(m=>m.trim().toUpperCase()).join(", "):null,"getAcceptedFormats");function w({onChange:l,className:m,multiple:p,accept:f,files:s,id:h}){let d=N(void 0),[a,c]=E(s||[]),u=N(null);k(()=>{s&&s!==d.current&&(d.current=s,c(s))},[s]);let F=i(e=>{e.preventDefault(),u.current?.click()},"handleClick"),y=i(e=>{if(e.target.files&&e.target.files.length>0){let n=Array.from(e.target.files);c([...a,...n]),l([...a,...n])}},"handleChange"),C=i(e=>{c(n=>n.filter(R=>R.name!==e.name)),l(a.filter(n=>n.name!==e.name))},"onRemoveFile"),g=U(f);return o("div",{className:v("flex flex-col items-start gap-4",m),children:[t("input",{type:"file",ref:u,id:h,onChange:y,className:"hidden","aria-label":"File upload",multiple:p,accept:f}),o(r,{type:"button",onClick:F,className:"gap-2",children:[t(B,{className:"h-4 w-4"}),"Choose File"]}),g&&o("div",{className:"text-sm text-gray-600",children:["Accepted formats:"," ",t("span",{className:"font-medium",children:g})]}),a.length===0&&t("div",{className:"text-sm",children:p?t("span",{className:"font-medium",children:"No files selected. You can select multiple files"}):t("span",{className:"font-medium",children:"No file selected."})}),a.length>0&&a.map((e,n)=>o("div",{className:"text-sm flex items-center gap-2",children:["Selected file: ",t("span",{className:"font-medium",children:e.name})," (",Math.round(e.size/1024)," KB)",t(r,{type:"button",variant:"ghost",onClick:()=>C(e),children:t(M,{})})]},n))]})}i(w,"FileUploader");export{w as a};
2
+ //# sourceMappingURL=chunk-KMBA73YG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/file-uploader.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '@/src/components/ui/button';\nimport { Upload, X } from 'lucide-react';\nimport { cn } from '@/src/lib/utils';\n\n// Convert accept string to readable format (e.g., \".pdf, .doc\" -> \"PDF, DOC\")\nconst getAcceptedFormats = (accept?: string) => {\n if (!accept) return null;\n return accept\n .split(',')\n .map((ext) => ext.trim().toUpperCase())\n .join(', ');\n};\n\ntype FileUploaderProps = {\n onChange: (files: File[]) => void;\n className?: string;\n multiple?: boolean;\n accept?: string;\n files?: File[];\n id?: string;\n};\n\nexport function FileUploader({\n onChange,\n className,\n multiple,\n accept,\n files: externalFiles,\n id,\n}: FileUploaderProps) {\n const syncedRef = useRef<File[] | undefined>(undefined);\n\n const [files, setFiles] = useState<File[]>(externalFiles || []);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (externalFiles && externalFiles !== syncedRef.current) {\n syncedRef.current = externalFiles;\n // effect is okay here, we just track with a ref to avoid unnecessary re-renders\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setFiles(externalFiles);\n }\n }, [externalFiles]);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const newFiles = Array.from(e.target.files);\n\n setFiles([...files, ...newFiles]);\n onChange([...files, ...newFiles]);\n }\n };\n\n const onRemoveFile = (file: File) => {\n setFiles((prevFiles) => prevFiles.filter((f) => f.name !== file.name));\n onChange(files.filter((f) => f.name !== file.name));\n };\n\n const acceptedFormats = getAcceptedFormats(accept);\n\n return (\n <div className={cn('flex flex-col items-start gap-4', className)}>\n <input\n type='file'\n ref={inputRef}\n id={id}\n onChange={handleChange}\n className='hidden'\n aria-label='File upload'\n multiple={multiple}\n accept={accept}\n />\n <Button type='button' onClick={handleClick} className='gap-2'>\n <Upload className='h-4 w-4' />\n Choose File\n </Button>\n {acceptedFormats && (\n <div className='text-sm text-gray-600'>\n Accepted formats:{' '}\n <span className='font-medium'>{acceptedFormats}</span>\n </div>\n )}\n {files.length === 0 && (\n <div className='text-sm'>\n {!multiple ? (\n <span className='font-medium'>No file selected.</span>\n ) : (\n <span className='font-medium'>\n No files selected. You can select multiple files\n </span>\n )}\n </div>\n )}\n {files.length > 0 &&\n files.map((file, index) => (\n <div key={index} className='text-sm flex items-center gap-2'>\n Selected file: <span className='font-medium'>{file.name}</span> (\n {Math.round(file.size / 1024)} KB)\n <Button\n type='button'\n variant='ghost'\n onClick={() => onRemoveFile(file)}\n >\n <X />\n </Button>\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"wHAAA,OAAgB,YAAAA,EAAU,UAAAC,EAAQ,aAAAC,MAAiB,QAEnD,OAAS,UAAAC,EAAQ,KAAAC,MAAS,eAkEpB,cAAAC,EAUA,QAAAC,MAVA,oBA9DN,IAAMC,EAAqBC,EAACC,GACrBA,EACEA,EACJ,MAAM,GAAG,EACT,IAAKC,GAAQA,EAAI,KAAK,EAAE,YAAY,CAAC,EACrC,KAAK,IAAI,EAJQ,KADK,sBAiBpB,SAASC,EAAa,CAC3B,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,OAAAL,EACA,MAAOM,EACP,GAAAC,CACF,EAAsB,CACpB,IAAMC,EAAYC,EAA2B,MAAS,EAEhD,CAACC,EAAOC,CAAQ,EAAIC,EAAiBN,GAAiB,CAAC,CAAC,EACxDO,EAAWJ,EAAyB,IAAI,EAE9CK,EAAU,IAAM,CACVR,GAAiBA,IAAkBE,EAAU,UAC/CA,EAAU,QAAUF,EAGpBK,EAASL,CAAa,EAE1B,EAAG,CAACA,CAAa,CAAC,EAElB,IAAMS,EAAchB,EAAC,GAA2C,CAC9D,EAAE,eAAe,EACjBc,EAAS,SAAS,MAAM,CAC1B,EAHoB,eAKdG,EAAejB,EAAC,GAA2C,CAC/D,GAAI,EAAE,OAAO,OAAS,EAAE,OAAO,MAAM,OAAS,EAAG,CAC/C,IAAMkB,EAAW,MAAM,KAAK,EAAE,OAAO,KAAK,EAE1CN,EAAS,CAAC,GAAGD,EAAO,GAAGO,CAAQ,CAAC,EAChCd,EAAS,CAAC,GAAGO,EAAO,GAAGO,CAAQ,CAAC,CAClC,CACF,EAPqB,gBASfC,EAAenB,EAACoB,GAAe,CACnCR,EAAUS,GAAcA,EAAU,OAAQC,GAAMA,EAAE,OAASF,EAAK,IAAI,CAAC,EACrEhB,EAASO,EAAM,OAAQW,GAAMA,EAAE,OAASF,EAAK,IAAI,CAAC,CACpD,EAHqB,gBAKfG,EAAkBxB,EAAmBE,CAAM,EAEjD,OACEH,EAAC,OAAI,UAAW0B,EAAG,kCAAmCnB,CAAS,EAC7D,UAAAR,EAAC,SACC,KAAK,OACL,IAAKiB,EACL,GAAIN,EACJ,SAAUS,EACV,UAAU,SACV,aAAW,cACX,SAAUX,EACV,OAAQL,EACV,EACAH,EAAC2B,EAAA,CAAO,KAAK,SAAS,QAAST,EAAa,UAAU,QACpD,UAAAnB,EAAC6B,EAAA,CAAO,UAAU,UAAU,EAAE,eAEhC,EACCH,GACCzB,EAAC,OAAI,UAAU,wBAAwB,8BACnB,IAClBD,EAAC,QAAK,UAAU,cAAe,SAAA0B,EAAgB,GACjD,EAEDZ,EAAM,SAAW,GAChBd,EAAC,OAAI,UAAU,UACZ,SAACS,EAGAT,EAAC,QAAK,UAAU,cAAc,4DAE9B,EAJAA,EAAC,QAAK,UAAU,cAAc,6BAAiB,EAMnD,EAEDc,EAAM,OAAS,GACdA,EAAM,IAAI,CAACS,EAAMO,IACf7B,EAAC,OAAgB,UAAU,kCAAkC,4BAC5CD,EAAC,QAAK,UAAU,cAAe,SAAAuB,EAAK,KAAK,EAAO,KAC9D,KAAK,MAAMA,EAAK,KAAO,IAAI,EAAE,OAC9BvB,EAAC4B,EAAA,CACC,KAAK,SACL,QAAQ,QACR,QAAS,IAAMN,EAAaC,CAAI,EAEhC,SAAAvB,EAAC+B,EAAA,EAAE,EACL,IATQD,CAUV,CACD,GACL,CAEJ,CA5FgB3B,EAAAG,EAAA","names":["useState","useRef","useEffect","Upload","X","jsx","jsxs","getAcceptedFormats","__name","accept","ext","FileUploader","onChange","className","multiple","externalFiles","id","syncedRef","useRef","files","setFiles","useState","inputRef","useEffect","handleClick","handleChange","newFiles","onRemoveFile","file","prevFiles","f","acceptedFormats","cn","Button","Upload","index","X"]}
@@ -1,2 +1,2 @@
1
- import{e as f}from"./chunk-DFJNVGK4.js";import{b as i}from"./chunk-RAH453TV.js";import{a as s}from"./chunk-P37U34EQ.js";import{endOfMonth as u,isAfter as d,isBefore as y,parseISO as p,startOfDay as _,setDate as h,isFuture as T,differenceInHours as M,endOfDay as g,differenceInDays as w}from"date-fns";var m={MONTHLY:"monthly",SEMI_MONTHLY:"bi_monthly",BI_WEEKLY:"bi_weekly"};var I={employee_communication:{index:0,name:"employee_communication"},termination_details:{index:1,name:"termination_details"},paid_time_off:{index:2,name:"paid_time_off"},additional_information:{index:3,name:"additional_information"}},O=s(n=>{let e=new Date,t=h(e,15),o=_(e),l=_(t),c=n?.cycle_frequency,a=n?.cycles?.filter(r=>r.input_cutoff_date&&p(r.input_cutoff_date).getMonth()===e.getMonth())?.map(r=>p(r.input_cutoff_date));if(!a?.length)return e;switch(c){case m.MONTHLY:return d(o,a[0])?u(e):e;case m.SEMI_MONTHLY:return d(o,a[1])?u(e):d(o,a[0])&&y(o,l)?t:e;default:return e}},"calculateMinTerminationDate"),v=s(({minTerminationDate:n,isEmployeeInProbationPeriod:e,selectedDate:t})=>{let o=T(n),l=t&&M(g(t),new Date)<48;return t&&w(t,new Date)>=30||!t&&!o?null:o&&!e?i({description:`The next available termination dates are ${f(n)} and later. We've already processed the employee's payments until then.`,severity:"info"}):o&&e?i({description:"This payroll period's cut-off has passed. While you can offboard the employee after the cut-off, their payment may have already processed. If that's the case, we'll try to recover the payment. But if that isn't possible, we'll send you an invoice for the amount.",severity:"info"}):l?i({description:"Requests made with less than 48 hours' notice are subject to changes due to the country-specific offboarding laws and case details. If changes are needed, your specialist will guide you accordingly.",severity:"info"}):i({description:"Termination dates depend on payroll cutoffs, local laws, and case details. We'll aim for your proposed date but it's possible it will need to change. After you submit your request, a specialist will reach out and guide you through the process.",severity:"info"})},"calculateProposedTerminationDateStatement");function E(n,e){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...n,...e?{termination_reason:"cancellation_before_start_date"}:{}}}s(E,"buildInitialValues");export{I as a,O as b,v as c,E as d};
2
- //# sourceMappingURL=chunk-L5DII4MV.js.map
1
+ import{e as f}from"./chunk-DFJNVGK4.js";import{b as i}from"./chunk-OJTYP5W7.js";import{a as s}from"./chunk-P37U34EQ.js";import{endOfMonth as u,isAfter as d,isBefore as y,parseISO as p,startOfDay as _,setDate as h,isFuture as T,differenceInHours as M,endOfDay as g,differenceInDays as w}from"date-fns";var m={MONTHLY:"monthly",SEMI_MONTHLY:"bi_monthly",BI_WEEKLY:"bi_weekly"};var I={employee_communication:{index:0,name:"employee_communication"},termination_details:{index:1,name:"termination_details"},paid_time_off:{index:2,name:"paid_time_off"},additional_information:{index:3,name:"additional_information"}},O=s(n=>{let e=new Date,t=h(e,15),o=_(e),l=_(t),c=n?.cycle_frequency,a=n?.cycles?.filter(r=>r.input_cutoff_date&&p(r.input_cutoff_date).getMonth()===e.getMonth())?.map(r=>p(r.input_cutoff_date));if(!a?.length)return e;switch(c){case m.MONTHLY:return d(o,a[0])?u(e):e;case m.SEMI_MONTHLY:return d(o,a[1])?u(e):d(o,a[0])&&y(o,l)?t:e;default:return e}},"calculateMinTerminationDate"),v=s(({minTerminationDate:n,isEmployeeInProbationPeriod:e,selectedDate:t})=>{let o=T(n),l=t&&M(g(t),new Date)<48;return t&&w(t,new Date)>=30||!t&&!o?null:o&&!e?i({description:`The next available termination dates are ${f(n)} and later. We've already processed the employee's payments until then.`,severity:"info"}):o&&e?i({description:"This payroll period's cut-off has passed. While you can offboard the employee after the cut-off, their payment may have already processed. If that's the case, we'll try to recover the payment. But if that isn't possible, we'll send you an invoice for the amount.",severity:"info"}):l?i({description:"Requests made with less than 48 hours' notice are subject to changes due to the country-specific offboarding laws and case details. If changes are needed, your specialist will guide you accordingly.",severity:"info"}):i({description:"Termination dates depend on payroll cutoffs, local laws, and case details. We'll aim for your proposed date but it's possible it will need to change. After you submit your request, a specialist will reach out and guide you through the process.",severity:"info"})},"calculateProposedTerminationDateStatement");function E(n,e){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...n,...e?{termination_reason:"cancellation_before_start_date"}:{}}}s(E,"buildInitialValues");export{I as a,O as b,v as c,E as d};
2
+ //# sourceMappingURL=chunk-KVMWDA6O.js.map
@@ -1,2 +1,2 @@
1
- import{a as l}from"./chunk-VIGKOVHP.js";import{a as r}from"./chunk-P37U34EQ.js";import*as e from"@radix-ui/react-select";import{CheckIcon as m,ChevronDownIcon as s,ChevronUpIcon as d}from"lucide-react";import{jsx as t,jsxs as n}from"react/jsx-runtime";function S({...i}){return t(e.Root,{"data-slot":"select",...i})}r(S,"Select");function P({...i}){return t(e.Group,{"data-slot":"select-group",...i})}r(P,"SelectGroup");function g({...i}){return t(e.Value,{"data-slot":"select-value",...i})}r(g,"SelectValue");function x({className:i,children:o,...a}){return n(e.Trigger,{"data-slot":"select-trigger",className:l("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",i),...a,children:[o,t(e.Icon,{asChild:!0,className:"absolute right-4",children:t(s,{className:"size-4"})})]})}r(x,"SelectTrigger");function b({className:i,children:o,position:a="popper",...c}){return t(e.Portal,{children:n(e.Content,{"data-slot":"select-content",className:l("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",i),position:a,...c,children:[t(p,{}),t(e.Viewport,{className:l(a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:o}),t(u,{})]})})}r(b,"SelectContent");function y({className:i,children:o,...a}){return n(e.Item,{"data-slot":"select-item",className:l("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",i),...a,children:[t(e.ItemText,{children:o}),t("span",{className:"flex size-3.5 items-center justify-center",children:t(e.ItemIndicator,{children:t(m,{className:"size-4"})})})]})}r(y,"SelectItem");function p({className:i,...o}){return t(e.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:l("flex cursor-default items-center justify-center py-1",i),...o,children:t(d,{className:"size-4"})})}r(p,"SelectScrollUpButton");function u({className:i,...o}){return t(e.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:l("flex cursor-default items-center justify-center py-1",i),...o,children:t(s,{className:"size-4"})})}r(u,"SelectScrollDownButton");export{S as a,P as b,g as c,x as d,b as e,y as f};
2
- //# sourceMappingURL=chunk-DXIJUMLU.js.map
1
+ import{c as l}from"./chunk-OSQ6VUDM.js";import{a as r}from"./chunk-P37U34EQ.js";import*as e from"@radix-ui/react-select";import{CheckIcon as m,ChevronDownIcon as s,ChevronUpIcon as d}from"lucide-react";import{jsx as t,jsxs as n}from"react/jsx-runtime";function S({...i}){return t(e.Root,{"data-slot":"select",...i})}r(S,"Select");function P({...i}){return t(e.Group,{"data-slot":"select-group",...i})}r(P,"SelectGroup");function g({...i}){return t(e.Value,{"data-slot":"select-value",...i})}r(g,"SelectValue");function x({className:i,children:o,...a}){return n(e.Trigger,{"data-slot":"select-trigger",className:l("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",i),...a,children:[o,t(e.Icon,{asChild:!0,className:"absolute right-4",children:t(s,{className:"size-4"})})]})}r(x,"SelectTrigger");function b({className:i,children:o,position:a="popper",...c}){return t(e.Portal,{children:n(e.Content,{"data-slot":"select-content",className:l("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",i),position:a,...c,children:[t(p,{}),t(e.Viewport,{className:l(a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:o}),t(u,{})]})})}r(b,"SelectContent");function y({className:i,children:o,...a}){return n(e.Item,{"data-slot":"select-item",className:l("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",i),...a,children:[t(e.ItemText,{children:o}),t("span",{className:"flex size-3.5 items-center justify-center",children:t(e.ItemIndicator,{children:t(m,{className:"size-4"})})})]})}r(y,"SelectItem");function p({className:i,...o}){return t(e.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:l("flex cursor-default items-center justify-center py-1",i),...o,children:t(d,{className:"size-4"})})}r(p,"SelectScrollUpButton");function u({className:i,...o}){return t(e.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:l("flex cursor-default items-center justify-center py-1",i),...o,children:t(s,{className:"size-4"})})}r(u,"SelectScrollDownButton");export{S as a,P as b,g as c,x as d,b as e,y as f};
2
+ //# sourceMappingURL=chunk-LBJAKZ6V.js.map