@remoteoss/remote-flows 0.32.0 → 1.0.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 (359) hide show
  1. package/README.md +8 -9
  2. package/dist/chunk-2CBUBDUV.js +2 -0
  3. package/dist/chunk-2CBUBDUV.js.map +1 -0
  4. package/dist/chunk-2EJ4BAUK.js +2 -0
  5. package/dist/chunk-2EJ4BAUK.js.map +1 -0
  6. package/dist/{chunk-ENW4DCDU.js → chunk-2Q4L4WH7.js} +2 -2
  7. package/dist/chunk-2QOLV5T5.js +2 -0
  8. package/dist/chunk-2QOLV5T5.js.map +1 -0
  9. package/dist/{chunk-5KZXFQLZ.js → chunk-2S376WY7.js} +2 -2
  10. package/dist/{chunk-COBQ4WSJ.js → chunk-34TXLVDI.js} +2 -2
  11. package/dist/{chunk-5P7INAU2.js → chunk-3UM34N4C.js} +1 -1
  12. package/dist/chunk-3UM34N4C.js.map +1 -0
  13. package/dist/{chunk-5CVD5WZZ.js → chunk-3XOHQ7Y7.js} +2 -2
  14. package/dist/chunk-4A2UD4KX.js +2 -0
  15. package/dist/chunk-4A2UD4KX.js.map +1 -0
  16. package/dist/{chunk-2W2XD7ZY.js → chunk-5BY7HOJB.js} +2 -2
  17. package/dist/{chunk-ID3ZF7QT.js → chunk-62HGJVHQ.js} +2 -2
  18. package/dist/{chunk-P5WUODPR.js → chunk-65H2G43I.js} +2 -2
  19. package/dist/{chunk-DPY77ASH.js → chunk-66L7BKYM.js} +2 -2
  20. package/dist/{chunk-OIN3HGOQ.js → chunk-677KTHPH.js} +2 -2
  21. package/dist/{chunk-K2BWF2HC.js → chunk-6PT55OGW.js} +2 -2
  22. package/dist/chunk-6PT55OGW.js.map +1 -0
  23. package/dist/{chunk-HBHVB56P.js → chunk-7CLHPFPZ.js} +2 -2
  24. package/dist/{chunk-HO2TIG7R.js → chunk-7HSSHSYK.js} +2 -2
  25. package/dist/chunk-7JQFGVWI.js +2 -0
  26. package/dist/chunk-7JQFGVWI.js.map +1 -0
  27. package/dist/{chunk-LQAHRGU4.js → chunk-7LRY5QTK.js} +2 -2
  28. package/dist/{chunk-EM5UYWUQ.js → chunk-A7BBVCMY.js} +2 -2
  29. package/dist/chunk-BTUON37L.js +2 -0
  30. package/dist/chunk-BTUON37L.js.map +1 -0
  31. package/dist/chunk-CN3GXYLK.js +2 -0
  32. package/dist/{chunk-DZ2R72O5.js.map → chunk-CN3GXYLK.js.map} +1 -1
  33. package/dist/chunk-D3ZE5TO6.js +2 -0
  34. package/dist/chunk-D3ZE5TO6.js.map +1 -0
  35. package/dist/{chunk-UJKTTTGB.js → chunk-DBGYYVFL.js} +2 -2
  36. package/dist/{chunk-WW5UCMQZ.js → chunk-EAJ7JLBL.js} +2 -2
  37. package/dist/chunk-EAJ7JLBL.js.map +1 -0
  38. package/dist/{chunk-UPXJJBXZ.js → chunk-ED6E3V2E.js} +2 -2
  39. package/dist/{chunk-ZQ6MG635.js → chunk-FEB3W622.js} +2 -2
  40. package/dist/chunk-FGBEOUQK.js +1 -0
  41. package/dist/{chunk-MZB24YJP.js → chunk-FIXHXJGN.js} +2 -2
  42. package/dist/{chunk-EKKRQI6B.js → chunk-GGQFBP37.js} +2 -2
  43. package/dist/{chunk-WJ6YJFD4.js → chunk-HBYHRMST.js} +2 -2
  44. package/dist/{chunk-FRTJ4KWA.js → chunk-HKCDMC3H.js} +2 -2
  45. package/dist/{chunk-QIVDIOJG.js → chunk-I4XJ764Y.js} +2 -2
  46. package/dist/{chunk-SHP4ULHS.js → chunk-IHYMZJ4W.js} +2 -2
  47. package/dist/{chunk-6FWFRVQE.js → chunk-ISQ6I4HJ.js} +2 -2
  48. package/dist/chunk-KSNOQWVU.js +2 -0
  49. package/dist/{chunk-7YQAVDVX.js.map → chunk-KSNOQWVU.js.map} +1 -1
  50. package/dist/chunk-L2GTD44Y.js +2 -0
  51. package/dist/chunk-L2GTD44Y.js.map +1 -0
  52. package/dist/{chunk-L3D2AK3X.js → chunk-LDZWM4VX.js} +2 -2
  53. package/dist/{chunk-HZDCZFR5.js → chunk-LIF7X2AH.js} +2 -2
  54. package/dist/{chunk-5AG4K2EA.js → chunk-LLJWEHDJ.js} +2 -2
  55. package/dist/{chunk-TWVFLXVF.js → chunk-M37LWACT.js} +2 -2
  56. package/dist/{chunk-TWVFLXVF.js.map → chunk-M37LWACT.js.map} +1 -1
  57. package/dist/{chunk-IUEXOXFA.js → chunk-M3EBUSNT.js} +2 -2
  58. package/dist/chunk-M5WQNNAT.js +2 -0
  59. package/dist/{chunk-LV5R6H3D.js.map → chunk-M5WQNNAT.js.map} +1 -1
  60. package/dist/{chunk-TWIUL2P3.js → chunk-MOG7GUQB.js} +2 -2
  61. package/dist/{chunk-ANGJCT4I.js → chunk-MPV22ALR.js} +2 -2
  62. package/dist/{chunk-U4JVXNOG.js → chunk-ORIJ6E2J.js} +2 -2
  63. package/dist/chunk-OVTCRVTZ.js +2 -0
  64. package/dist/{chunk-76DHIEN7.js.map → chunk-OVTCRVTZ.js.map} +1 -1
  65. package/dist/{chunk-XPL5XOQ4.js → chunk-PABPITPH.js} +2 -2
  66. package/dist/{chunk-DPWL4KNA.js → chunk-RD27ZSYF.js} +2 -2
  67. package/dist/chunk-RD27ZSYF.js.map +1 -0
  68. package/dist/chunk-RIA5Z6I3.js +2 -0
  69. package/dist/{chunk-IHNYOUXP.js.map → chunk-RIA5Z6I3.js.map} +1 -1
  70. package/dist/{chunk-CW3MAP5L.js → chunk-RSH5MZY3.js} +2 -2
  71. package/dist/{chunk-OW5QGJD4.js → chunk-S2BJGON2.js} +2 -2
  72. package/dist/{chunk-5ZR7EFPY.js → chunk-SHK2UKLD.js} +2 -2
  73. package/dist/chunk-SS6RX52D.js +2 -0
  74. package/dist/chunk-SS6RX52D.js.map +1 -0
  75. package/dist/chunk-STSTF3AT.js +2 -0
  76. package/dist/chunk-STSTF3AT.js.map +1 -0
  77. package/dist/{chunk-6VRUYYUV.js → chunk-U5WVXSGT.js} +2 -2
  78. package/dist/chunk-UK5HHMPM.js +2 -0
  79. package/dist/chunk-UK5HHMPM.js.map +1 -0
  80. package/dist/chunk-UQMGBXCI.js +2 -0
  81. package/dist/chunk-UQMGBXCI.js.map +1 -0
  82. package/dist/chunk-W5M5HLWF.js +2 -0
  83. package/dist/chunk-W5M5HLWF.js.map +1 -0
  84. package/dist/{chunk-SO3YQ4WT.js → chunk-WRNHET4F.js} +2 -2
  85. package/dist/chunk-XOA7GG4P.js +2 -0
  86. package/dist/{chunk-X6CD3FMG.js → chunk-YCILXVJU.js} +2 -2
  87. package/dist/chunk-YHR7BPYU.js +2 -0
  88. package/dist/chunk-YHR7BPYU.js.map +1 -0
  89. package/dist/chunk-ZJSWK3Y7.js +2 -0
  90. package/dist/chunk-ZJSWK3Y7.js.map +1 -0
  91. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  92. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  93. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +2 -2
  94. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  95. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  96. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  97. package/dist/flows/ContractAmendment/context.d.ts +4 -4
  98. package/dist/flows/ContractAmendment/hooks.d.ts +4 -4
  99. package/dist/flows/ContractAmendment/hooks.js +1 -1
  100. package/dist/flows/ContractAmendment/index.d.ts +2 -2
  101. package/dist/flows/ContractAmendment/index.js +1 -1
  102. package/dist/flows/ContractAmendment/utils.js +1 -1
  103. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +4 -4
  104. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  105. package/dist/flows/ContractorOnboarding/api.d.ts +1 -1
  106. package/dist/flows/ContractorOnboarding/api.js +1 -1
  107. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +3 -3
  108. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  109. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +4 -4
  110. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  111. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +4 -4
  112. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  113. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +4 -4
  114. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  115. package/dist/flows/ContractorOnboarding/components/OnboardingBack.js +1 -1
  116. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +2 -2
  117. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  118. package/dist/flows/ContractorOnboarding/components/OnboardingSubmit.js +1 -1
  119. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +4 -4
  120. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  121. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +3 -3
  122. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  123. package/dist/flows/ContractorOnboarding/context.d.ts +7 -7
  124. package/dist/flows/ContractorOnboarding/hooks.d.ts +4 -4
  125. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  126. package/dist/flows/ContractorOnboarding/index.d.ts +4 -4
  127. package/dist/flows/ContractorOnboarding/index.js +1 -1
  128. package/dist/flows/ContractorOnboarding/types.d.ts +4 -4
  129. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +2 -2
  130. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  131. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +2 -2
  132. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  133. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  134. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  135. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  136. package/dist/flows/CostCalculator/components/SalaryField.d.ts +1 -1
  137. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  138. package/dist/flows/CostCalculator/context.d.ts +3 -3
  139. package/dist/flows/CostCalculator/hooks.d.ts +3 -3
  140. package/dist/flows/CostCalculator/hooks.js +1 -1
  141. package/dist/flows/CostCalculator/index.d.ts +2 -5
  142. package/dist/flows/CostCalculator/index.js +1 -1
  143. package/dist/flows/CostCalculator/utils.d.ts +2 -2
  144. package/dist/flows/CostCalculator/utils.js +1 -1
  145. package/dist/flows/Onboarding/OnboardingFlow.d.ts +3 -3
  146. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  147. package/dist/flows/Onboarding/api.d.ts +3 -3
  148. package/dist/flows/Onboarding/api.js +1 -1
  149. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +1 -1
  150. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  151. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +3 -3
  152. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  153. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +3 -3
  154. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  155. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +3 -3
  156. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  157. package/dist/flows/Onboarding/components/OnboardingBack.js +1 -1
  158. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +3 -3
  159. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  160. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +2 -2
  161. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  162. package/dist/flows/Onboarding/components/OnboardingSubmit.js +1 -1
  163. package/dist/flows/Onboarding/components/ReviewStep.d.ts +3 -3
  164. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +2 -2
  165. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +3 -3
  166. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  167. package/dist/flows/Onboarding/context.d.ts +6 -6
  168. package/dist/flows/Onboarding/hooks.d.ts +3 -3
  169. package/dist/flows/Onboarding/hooks.js +1 -1
  170. package/dist/flows/Onboarding/index.d.ts +3 -3
  171. package/dist/flows/Onboarding/index.js +1 -1
  172. package/dist/flows/Onboarding/types.d.ts +3 -3
  173. package/dist/flows/Onboarding/utils.d.ts +3 -3
  174. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +3 -3
  175. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  176. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +3 -3
  177. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  178. package/dist/flows/Termination/PaidTimeOffForm.d.ts +3 -3
  179. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  180. package/dist/flows/Termination/TerminationBack.js +1 -1
  181. package/dist/flows/Termination/TerminationDetailsForm.d.ts +3 -3
  182. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  183. package/dist/flows/Termination/TerminationFlow.d.ts +3 -3
  184. package/dist/flows/Termination/TerminationFlow.js +1 -1
  185. package/dist/flows/Termination/TerminationForm.d.ts +3 -3
  186. package/dist/flows/Termination/TerminationForm.js +1 -1
  187. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  188. package/dist/flows/Termination/api.d.ts +4 -4
  189. package/dist/flows/Termination/api.js +1 -1
  190. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  191. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +4 -4
  192. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  193. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +4 -4
  194. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  195. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +4 -4
  196. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  197. package/dist/flows/Termination/context.d.ts +6 -6
  198. package/dist/flows/Termination/hooks.d.ts +3 -3
  199. package/dist/flows/Termination/hooks.js +1 -1
  200. package/dist/flows/Termination/index.d.ts +4 -4
  201. package/dist/flows/Termination/index.js +1 -1
  202. package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
  203. package/dist/flows/Termination/json-schemas/schema.d.ts +3 -3
  204. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  205. package/dist/flows/Termination/types.d.ts +3 -3
  206. package/dist/flows/Termination/utils.d.ts +3 -3
  207. package/dist/index.css +1 -1
  208. package/dist/index.css.map +1 -1
  209. package/dist/index.d.ts +32 -11
  210. package/dist/index.js +1 -1
  211. package/dist/index.js.map +1 -1
  212. package/dist/internals.d.ts +1 -1
  213. package/dist/internals.js +1 -1
  214. package/dist/{mutations-Cdk0PM78.d.ts → mutations-Dj5OTaG_.d.ts} +1 -1
  215. package/dist/{remoteFlows-DUivEPPh.d.ts → remoteFlows-CJkEwDeI.d.ts} +0 -7
  216. package/dist/{types-BZBdCzER.d.ts → types-CrBx80W2.d.ts} +5 -5
  217. package/dist/{types-C-X7siUr.d.ts → types-CzuydJIU.d.ts} +4 -4
  218. package/dist/{types-pohqJTkr.d.ts → types-o2Z9IpsO.d.ts} +6 -6
  219. package/dist/utils-CjDMg_Yr.d.ts +22 -0
  220. package/package.json +1 -2
  221. package/dist/ZendeskTriggerButton-Dditzyfj.d.ts +0 -47
  222. package/dist/chunk-3A47R5RQ.js +0 -2
  223. package/dist/chunk-3A47R5RQ.js.map +0 -1
  224. package/dist/chunk-5OZPBBXS.js +0 -2
  225. package/dist/chunk-5OZPBBXS.js.map +0 -1
  226. package/dist/chunk-5P7INAU2.js.map +0 -1
  227. package/dist/chunk-76DHIEN7.js +0 -2
  228. package/dist/chunk-7CJX7I3M.js +0 -2
  229. package/dist/chunk-7CJX7I3M.js.map +0 -1
  230. package/dist/chunk-7R347KBY.js +0 -2
  231. package/dist/chunk-7R347KBY.js.map +0 -1
  232. package/dist/chunk-7YQAVDVX.js +0 -2
  233. package/dist/chunk-AM2IRFHQ.js +0 -2
  234. package/dist/chunk-AM2IRFHQ.js.map +0 -1
  235. package/dist/chunk-B6IVJUEH.js +0 -2
  236. package/dist/chunk-B6IVJUEH.js.map +0 -1
  237. package/dist/chunk-BCXRPHWY.js +0 -2
  238. package/dist/chunk-BCXRPHWY.js.map +0 -1
  239. package/dist/chunk-DPWL4KNA.js.map +0 -1
  240. package/dist/chunk-DXFA52BU.js +0 -2
  241. package/dist/chunk-DXFA52BU.js.map +0 -1
  242. package/dist/chunk-DXIO72S4.js +0 -2
  243. package/dist/chunk-DXIO72S4.js.map +0 -1
  244. package/dist/chunk-DYB3RWP7.js +0 -20
  245. package/dist/chunk-DYB3RWP7.js.map +0 -1
  246. package/dist/chunk-DZ2R72O5.js +0 -2
  247. package/dist/chunk-E4CABUTS.js +0 -2
  248. package/dist/chunk-E4CABUTS.js.map +0 -1
  249. package/dist/chunk-GCJCNDJ3.js +0 -2
  250. package/dist/chunk-GCJCNDJ3.js.map +0 -1
  251. package/dist/chunk-GKD2WI2W.js +0 -2
  252. package/dist/chunk-GKD2WI2W.js.map +0 -1
  253. package/dist/chunk-GOGPCCBS.js +0 -2
  254. package/dist/chunk-GOGPCCBS.js.map +0 -1
  255. package/dist/chunk-HPHWQU34.js +0 -2
  256. package/dist/chunk-HPHWQU34.js.map +0 -1
  257. package/dist/chunk-IHNYOUXP.js +0 -2
  258. package/dist/chunk-K2BWF2HC.js.map +0 -1
  259. package/dist/chunk-LV5R6H3D.js +0 -2
  260. package/dist/chunk-M2CI2UDK.js +0 -2
  261. package/dist/chunk-M2CI2UDK.js.map +0 -1
  262. package/dist/chunk-MQWVZSGH.js +0 -2
  263. package/dist/chunk-MQWVZSGH.js.map +0 -1
  264. package/dist/chunk-OKM7DRCF.js +0 -2
  265. package/dist/chunk-P7JZC65P.js +0 -2
  266. package/dist/chunk-P7JZC65P.js.map +0 -1
  267. package/dist/chunk-Q4BKFSTW.js +0 -2
  268. package/dist/chunk-Q4BKFSTW.js.map +0 -1
  269. package/dist/chunk-QWJFYQK3.js +0 -2
  270. package/dist/chunk-QWJFYQK3.js.map +0 -1
  271. package/dist/chunk-SPQO42TA.js +0 -2
  272. package/dist/chunk-SPQO42TA.js.map +0 -1
  273. package/dist/chunk-SRRY72CZ.js +0 -2
  274. package/dist/chunk-SRRY72CZ.js.map +0 -1
  275. package/dist/chunk-THMWKOHC.js +0 -2
  276. package/dist/chunk-THMWKOHC.js.map +0 -1
  277. package/dist/chunk-WBRWVTZK.js +0 -2
  278. package/dist/chunk-WBRWVTZK.js.map +0 -1
  279. package/dist/chunk-WMPKW7HC.js +0 -2
  280. package/dist/chunk-WMPKW7HC.js.map +0 -1
  281. package/dist/chunk-WW5UCMQZ.js.map +0 -1
  282. package/dist/chunk-WXUIXZ7P.js +0 -2
  283. package/dist/chunk-WXUIXZ7P.js.map +0 -1
  284. package/dist/chunk-YDJVQRND.js +0 -2
  285. package/dist/chunk-YDJVQRND.js.map +0 -1
  286. package/dist/chunk-Z3BMF4BO.js +0 -1
  287. package/dist/chunk-ZE3YT3Q6.js +0 -2
  288. package/dist/chunk-ZE3YT3Q6.js.map +0 -1
  289. package/dist/chunk-ZSCKSEAA.js +0 -2
  290. package/dist/chunk-ZSCKSEAA.js.map +0 -1
  291. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.d.ts +0 -8
  292. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.js +0 -2
  293. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.js.map +0 -1
  294. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.d.ts +0 -16
  295. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +0 -2
  296. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js.map +0 -1
  297. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.d.ts +0 -16
  298. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +0 -2
  299. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js.map +0 -1
  300. package/dist/flows/CostCalculator/Results/CostCalculatorExtraStatutoryPaymentsBreakdown.d.ts +0 -16
  301. package/dist/flows/CostCalculator/Results/CostCalculatorExtraStatutoryPaymentsBreakdown.js +0 -2
  302. package/dist/flows/CostCalculator/Results/CostCalculatorExtraStatutoryPaymentsBreakdown.js.map +0 -1
  303. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.d.ts +0 -10
  304. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +0 -2
  305. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js.map +0 -1
  306. package/dist/flows/CostCalculator/Results/CostCalculatorIndirectTax.d.ts +0 -9
  307. package/dist/flows/CostCalculator/Results/CostCalculatorIndirectTax.js +0 -2
  308. package/dist/flows/CostCalculator/Results/CostCalculatorIndirectTax.js.map +0 -1
  309. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +0 -19
  310. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +0 -2
  311. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js.map +0 -1
  312. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.d.ts +0 -13
  313. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js +0 -2
  314. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js.map +0 -1
  315. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.d.ts +0 -9
  316. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js +0 -2
  317. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js.map +0 -1
  318. package/dist/flows/CostCalculator/disclaimerUtils.d.ts +0 -10
  319. package/dist/flows/CostCalculator/disclaimerUtils.js +0 -2
  320. package/dist/flows/CostCalculator/disclaimerUtils.js.map +0 -1
  321. /package/dist/{chunk-ENW4DCDU.js.map → chunk-2Q4L4WH7.js.map} +0 -0
  322. /package/dist/{chunk-5KZXFQLZ.js.map → chunk-2S376WY7.js.map} +0 -0
  323. /package/dist/{chunk-COBQ4WSJ.js.map → chunk-34TXLVDI.js.map} +0 -0
  324. /package/dist/{chunk-5CVD5WZZ.js.map → chunk-3XOHQ7Y7.js.map} +0 -0
  325. /package/dist/{chunk-2W2XD7ZY.js.map → chunk-5BY7HOJB.js.map} +0 -0
  326. /package/dist/{chunk-ID3ZF7QT.js.map → chunk-62HGJVHQ.js.map} +0 -0
  327. /package/dist/{chunk-P5WUODPR.js.map → chunk-65H2G43I.js.map} +0 -0
  328. /package/dist/{chunk-DPY77ASH.js.map → chunk-66L7BKYM.js.map} +0 -0
  329. /package/dist/{chunk-OIN3HGOQ.js.map → chunk-677KTHPH.js.map} +0 -0
  330. /package/dist/{chunk-HBHVB56P.js.map → chunk-7CLHPFPZ.js.map} +0 -0
  331. /package/dist/{chunk-HO2TIG7R.js.map → chunk-7HSSHSYK.js.map} +0 -0
  332. /package/dist/{chunk-LQAHRGU4.js.map → chunk-7LRY5QTK.js.map} +0 -0
  333. /package/dist/{chunk-EM5UYWUQ.js.map → chunk-A7BBVCMY.js.map} +0 -0
  334. /package/dist/{chunk-UJKTTTGB.js.map → chunk-DBGYYVFL.js.map} +0 -0
  335. /package/dist/{chunk-UPXJJBXZ.js.map → chunk-ED6E3V2E.js.map} +0 -0
  336. /package/dist/{chunk-ZQ6MG635.js.map → chunk-FEB3W622.js.map} +0 -0
  337. /package/dist/{chunk-Z3BMF4BO.js.map → chunk-FGBEOUQK.js.map} +0 -0
  338. /package/dist/{chunk-MZB24YJP.js.map → chunk-FIXHXJGN.js.map} +0 -0
  339. /package/dist/{chunk-EKKRQI6B.js.map → chunk-GGQFBP37.js.map} +0 -0
  340. /package/dist/{chunk-WJ6YJFD4.js.map → chunk-HBYHRMST.js.map} +0 -0
  341. /package/dist/{chunk-FRTJ4KWA.js.map → chunk-HKCDMC3H.js.map} +0 -0
  342. /package/dist/{chunk-QIVDIOJG.js.map → chunk-I4XJ764Y.js.map} +0 -0
  343. /package/dist/{chunk-SHP4ULHS.js.map → chunk-IHYMZJ4W.js.map} +0 -0
  344. /package/dist/{chunk-6FWFRVQE.js.map → chunk-ISQ6I4HJ.js.map} +0 -0
  345. /package/dist/{chunk-L3D2AK3X.js.map → chunk-LDZWM4VX.js.map} +0 -0
  346. /package/dist/{chunk-HZDCZFR5.js.map → chunk-LIF7X2AH.js.map} +0 -0
  347. /package/dist/{chunk-5AG4K2EA.js.map → chunk-LLJWEHDJ.js.map} +0 -0
  348. /package/dist/{chunk-IUEXOXFA.js.map → chunk-M3EBUSNT.js.map} +0 -0
  349. /package/dist/{chunk-TWIUL2P3.js.map → chunk-MOG7GUQB.js.map} +0 -0
  350. /package/dist/{chunk-ANGJCT4I.js.map → chunk-MPV22ALR.js.map} +0 -0
  351. /package/dist/{chunk-U4JVXNOG.js.map → chunk-ORIJ6E2J.js.map} +0 -0
  352. /package/dist/{chunk-XPL5XOQ4.js.map → chunk-PABPITPH.js.map} +0 -0
  353. /package/dist/{chunk-CW3MAP5L.js.map → chunk-RSH5MZY3.js.map} +0 -0
  354. /package/dist/{chunk-OW5QGJD4.js.map → chunk-S2BJGON2.js.map} +0 -0
  355. /package/dist/{chunk-5ZR7EFPY.js.map → chunk-SHK2UKLD.js.map} +0 -0
  356. /package/dist/{chunk-6VRUYYUV.js.map → chunk-U5WVXSGT.js.map} +0 -0
  357. /package/dist/{chunk-SO3YQ4WT.js.map → chunk-WRNHET4F.js.map} +0 -0
  358. /package/dist/{chunk-OKM7DRCF.js.map → chunk-XOA7GG4P.js.map} +0 -0
  359. /package/dist/{chunk-X6CD3FMG.js.map → chunk-YCILXVJU.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/utils.ts","../src/flows/CostCalculator/hooks.tsx"],"sourcesContent":["import type {\n CostCalculatorEmploymentParam,\n CostCalculatorEstimateParams,\n} from '@/src/client';\n\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { AnyObjectSchema, number, object } from 'yup';\nimport { CostCalculatorVersion, defaultEstimationOptions } from './hooks';\nimport type {\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n CurrencyKey,\n} from './types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\n\n/**\n * Build the validation schema for the form.\n * @returns\n */\nexport function buildValidationSchema(\n fields: $TSFixMe[],\n employerBillingCurrency: string,\n includeEstimationTitle?: boolean,\n) {\n const fieldsSchema = fields.reduce<Record<string, AnyObjectSchema>>(\n (fieldsSchemaAcc, field) => {\n // Special handling for salary fields\n if (field.name === 'salary' || field.name === 'salary_conversion') {\n fieldsSchemaAcc[field.name] = (field.schema as AnyObjectSchema).when(\n 'salary_converted',\n {\n is: (val: string | null) => val === field.name,\n then: (schema) => schema.required('Required field'),\n otherwise: (schema) => schema.optional(),\n },\n );\n } else if (field.name === 'management') {\n fieldsSchemaAcc[field.name] = object({\n management_fee: number()\n .transform((value) => {\n return isNaN(value) ? undefined : value;\n })\n .min(0, 'Management fee must be greater than or equal to 0')\n .max(\n employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD,\n () => {\n const maxValue = employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD;\n const displayValue = maxValue / 100;\n return `Management fee cannot exceed ${displayValue} ${employerBillingCurrency}`;\n },\n ),\n });\n } else if (field.name === 'estimation_title' && includeEstimationTitle) {\n // Make estimation_title required when includeEstimationTitle is true\n fieldsSchemaAcc[field.name] = (\n field.schema as AnyObjectSchema\n ).required('Required field');\n } else {\n fieldsSchemaAcc[field.name] = field.schema as AnyObjectSchema;\n }\n return fieldsSchemaAcc;\n },\n {},\n );\n return object(fieldsSchema) as AnyObjectSchema;\n}\n\n/**\n * Format the benefits to the expected format by the API.\n * @param benefits\n * @returns\n */\nfunction formatBenefits(benefits: Record<string, string>) {\n const needle = 'benefit-';\n return Object.keys(benefits).reduce<\n Array<{ benefit_group_slug: string; benefit_tier_slug: string }>\n >((acc, key) => {\n const benefitTierSlug = benefits[key];\n if (benefitTierSlug === 'none') {\n return acc;\n }\n const benefitGroupSlug = key.replace(needle, '');\n const benefitEntry = {\n benefit_group_slug: benefitGroupSlug,\n benefit_tier_slug: benefitTierSlug,\n };\n return [...acc, benefitEntry];\n }, []);\n}\n\nfunction mapValueToEmployment(\n value: CostCalculatorEstimationSubmitValues,\n estimationOptions: CostCalculatorEstimationOptions,\n version: CostCalculatorVersion,\n): CostCalculatorEmploymentParam {\n const managementFee = Number(value.management?.management_fee);\n const currencyCode = value.currency_code;\n\n const base: CostCalculatorEmploymentParam = {\n region_slug: value.region || value.country,\n employment_term: value.contract_duration_type ?? 'fixed',\n title: value.estimation_title || estimationOptions.title,\n age: value.age ?? undefined,\n ...(value.benefits && { benefits: formatBenefits(value.benefits) }),\n ...(estimationOptions.includeManagementFee &&\n managementFee && {\n discount: {\n quoted_amount: estimationOptions.showManagementFee\n ? managementFee\n : BASE_RATES[currencyCode as keyof typeof BASE_RATES] ||\n BASE_RATES.USD,\n text: '',\n },\n }),\n };\n\n return {\n ...base,\n ...getSalaryFields(value, version),\n };\n}\n\nfunction getSalaryFields(\n value: CostCalculatorEstimationSubmitValues,\n version: CostCalculatorVersion,\n): Partial<CostCalculatorEmploymentParam> {\n const isMarketing =\n version === 'marketing' || value.salary_converted === 'salary_conversion';\n const isStandard =\n version === 'standard' && value.salary_converted === 'salary';\n const useHiringBudget = value.hiring_budget === 'my_hiring_budget';\n\n if (isMarketing) {\n const useEmployerCurrency = value.salary_converted === 'salary_conversion';\n return useHiringBudget\n ? {\n annual_total_cost_in_employer_currency: value.salary,\n }\n : {\n [useEmployerCurrency\n ? 'annual_gross_salary_in_employer_currency'\n : 'annual_gross_salary']: value.salary,\n };\n }\n\n if (isStandard) {\n return useHiringBudget\n ? {\n annual_total_cost: value.salary,\n }\n : {\n annual_gross_salary: value.salary,\n };\n }\n\n return {};\n}\n\n/**\n * Build the payload for the cost calculator estimation.\n * @param values\n * @param estimationOptions\n * @returns\n */\nexport function buildPayload(\n values:\n | CostCalculatorEstimationSubmitValues\n | CostCalculatorEstimationSubmitValues[],\n estimationOptions: CostCalculatorEstimationOptions = defaultEstimationOptions,\n version: CostCalculatorVersion = 'standard',\n): CostCalculatorEstimateParams {\n const employments = Array.isArray(values) ? values : [values];\n\n if (employments.length === 0) {\n throw new Error('At least one employment value is required');\n }\n\n if (employments.length > 1) {\n const currencies = new Set(employments.map((v) => v.currency));\n if (currencies.size > 1) {\n console.warn(\n 'Multiple currencies detected in array. Using currency from first employment.',\n );\n }\n }\n\n return {\n employer_currency_slug: employments[0].currency,\n include_benefits: estimationOptions.includeBenefits,\n include_cost_breakdowns: estimationOptions.includeCostBreakdowns,\n include_premium_benefits: estimationOptions.includePremiumBenefits,\n include_management_fee: estimationOptions.includeManagementFee,\n employments: employments.map((value) =>\n mapValueToEmployment(value, estimationOptions, version),\n ),\n };\n}\n","import { MinimalRegion } from '@/src/client';\nimport { jsonSchema } from '@/src/flows/CostCalculator/jsonSchema';\nimport type {\n CostCalculatorEstimationFormValues,\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport type { JSFModify } from '@/src/flows/types';\n\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { iterateErrors } from '@/src/components/form/validationResolver';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { string, ValidationError } from 'yup';\nimport { buildPayload, buildValidationSchema } from './utils';\nimport {\n useCompanyCurrencies,\n useCostCalculatorCountries,\n useCostCalculatorEstimation,\n useRegionFields,\n} from '@/src/flows/CostCalculator/api';\nimport { $TSFixMe, JSFField, Meta } from '@/src/types/remoteFlows';\nimport { SalaryField } from '@/src/flows/CostCalculator/components/SalaryField';\nimport {\n FieldSetField,\n FieldSetProps,\n} from '@/src/components/form/fields/FieldSetField';\nimport { mutationToPromise } from '@/src/lib/mutations';\nexport type CostCalculatorVersion = 'standard' | 'marketing';\n\ntype CostCalculatorCountry = {\n value: string;\n label: string;\n childRegions: MinimalRegion[];\n hasAdditionalFields: boolean | undefined;\n regionSlug: string;\n currency: string;\n};\n\ntype JSFValidationError = {\n formErrors: Record<\n string,\n {\n type: string;\n message: string;\n }\n >;\n yupError: ValidationError;\n};\n\nexport const defaultEstimationOptions: CostCalculatorEstimationOptions = {\n title: 'Estimation',\n includeBenefits: false,\n includeCostBreakdowns: false,\n includePremiumBenefits: false,\n enableCurrencyConversion: false,\n includeEstimationTitle: false,\n includeManagementFee: false,\n};\n\ntype UseCostCalculatorParams = {\n /**\n * The default region slug to preselect a country and a region.\n */\n defaultRegion?: string;\n /**\n * The default currency slug to preselect a currency.\n */\n defaultCurrency?: string;\n\n /**\n * The default salary to preselect a salary.\n */\n defaultSalary?: string;\n /**\n * The estimation options.\n */\n estimationOptions: CostCalculatorEstimationOptions;\n options?: UseCostCalculatorOptions;\n version?: CostCalculatorVersion;\n};\n\nconst useStaticSchema = (options?: { jsfModify?: JSFModify }) => {\n const { schema: jsonSchemaModified } = modify(\n jsonSchema.data.schema,\n options?.jsfModify || {},\n );\n\n return createHeadlessForm(jsonSchemaModified);\n};\n\ntype HiringBudget = 'my_hiring_budget' | 'employee_annual_salary';\n\nfunction getSalaryTitle(\n salaryField: unknown,\n hiringBudget?: HiringBudget,\n): string {\n if (\n typeof salaryField === 'object' &&\n salaryField !== null &&\n 'title' in salaryField\n ) {\n const title = (salaryField as { title?: string }).title;\n if (title) return title;\n }\n return hiringBudget === 'my_hiring_budget'\n ? 'Hiring budget'\n : \"Employee's annual salary\";\n}\n\n/**\n * Hook to use the cost calculator.\n */\nexport const useCostCalculator = (\n {\n defaultRegion,\n defaultCurrency,\n defaultSalary,\n estimationOptions,\n options,\n version,\n }: UseCostCalculatorParams = {\n estimationOptions: defaultEstimationOptions,\n },\n) => {\n const fieldsMetaRef = useRef<{\n fields: Meta;\n }>({\n fields: {},\n });\n const [selectedRegion, setSelectedRegion] = useState<string | undefined>(\n defaultRegion,\n );\n const [selectedCountry, setSelectedCountry] =\n useState<CostCalculatorCountry>();\n const [employerBillingCurrency, setEmployerBillingCurrency] = useState<\n string | undefined\n >();\n const [hiringBudget, setHiringBudget] = useState<HiringBudget>();\n const { data: countries, isLoading: isLoadingCountries } =\n useCostCalculatorCountries({\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n });\n const { data: currencies, isLoading: isLoadingCurrencies } =\n useCompanyCurrencies();\n\n const jsonSchemaRegionSlug = selectedRegion || selectedCountry?.value;\n\n const { data: jsonSchemaRegionFields, isLoading: isLoadingRegionFields } =\n useRegionFields(jsonSchemaRegionSlug, {\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n options,\n });\n const costCalculatorEstimationMutation = useCostCalculatorEstimation();\n const { mutateAsync: costCalculatorEstimationMutationAsync } =\n mutationToPromise(costCalculatorEstimationMutation);\n const employeeBillingCurrency = selectedCountry?.currency;\n\n const salaryField = options?.jsfModify?.fields?.salary;\n const salaryFieldPresentation =\n salaryField &&\n typeof salaryField === 'object' &&\n 'presentation' in salaryField\n ? (\n salaryField as {\n presentation?: {\n salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const getCurrencies = useCallback(() => {\n const shouldSwapOrder =\n employeeBillingCurrency && employerBillingCurrency\n ? employeeBillingCurrency !== employerBillingCurrency\n : false;\n\n if (employeeBillingCurrency !== employerBillingCurrency) {\n return {\n from: employerBillingCurrency,\n to: employeeBillingCurrency,\n shouldSwapOrder,\n };\n }\n\n return {\n from: employeeBillingCurrency,\n to: employerBillingCurrency,\n shouldSwapOrder,\n };\n }, [employeeBillingCurrency, employerBillingCurrency]);\n\n const showManagementField = estimationOptions.showManagementFee;\n const showEstimationTitleField = estimationOptions.includeEstimationTitle;\n const customFields = useMemo(() => {\n const { from, to, shouldSwapOrder } = getCurrencies();\n const salaryTitle = getSalaryTitle(salaryField, hiringBudget);\n\n return {\n fields: {\n salary: {\n ...salaryField,\n title: salaryTitle,\n presentation: {\n salary_conversion_properties: {\n label:\n salaryFieldPresentation?.salary_conversion_properties?.label,\n description:\n salaryFieldPresentation?.salary_conversion_properties\n ?.description,\n },\n currencies: { from, to },\n Component: (\n props: JSFField & { currencies: { from: string; to: string } },\n ) => {\n return (\n <SalaryField\n {...props}\n shouldSwapOrder={shouldSwapOrder}\n conversionType={\n version === 'marketing' ? 'no_spread' : 'spread'\n }\n defaultValue={defaultSalary}\n />\n );\n },\n },\n },\n hiring_budget: {\n ...options?.jsfModify?.fields?.hiring_budget,\n presentation: {\n hidden: version == 'marketing',\n },\n },\n management: {\n ...options?.jsfModify?.fields?.management,\n properties: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)?.properties,\n management_fee: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)\n ?.properties?.management_fee,\n 'x-jsf-presentation': {\n inputType: 'money',\n additionalProps: {\n currency: employerBillingCurrency || 'USD',\n },\n },\n },\n },\n presentation: {\n ...(typeof options?.jsfModify?.fields?.management === 'object'\n ? (\n options?.jsfModify?.fields?.management as Record<\n string,\n $TSFixMe\n >\n )['x-jsf-presentation']\n : {}),\n hidden: !showManagementField,\n Component: (props: FieldSetProps) => {\n return (\n <FieldSetField\n {...props}\n variant='inset'\n features={{\n toggle: {\n enabled: true,\n stateField: 'management._expanded',\n labels: {\n expand: 'Define',\n collapse: 'Remove',\n },\n },\n }}\n />\n );\n },\n },\n },\n estimation_title: {\n ...options?.jsfModify?.fields?.estimation_title,\n 'x-jsf-presentation': {\n hidden: !showEstimationTitleField,\n },\n },\n },\n };\n }, [\n getCurrencies,\n salaryField,\n hiringBudget,\n salaryFieldPresentation?.salary_conversion_properties?.label,\n salaryFieldPresentation?.salary_conversion_properties?.description,\n options?.jsfModify?.fields?.hiring_budget,\n options?.jsfModify?.fields?.management,\n options?.jsfModify?.fields?.estimation_title,\n version,\n employerBillingCurrency,\n showManagementField,\n showEstimationTitleField,\n defaultSalary,\n ]);\n\n const fieldsJSONSchema = useStaticSchema({\n jsfModify: {\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n });\n\n useEffect(() => {\n // Initialize selectedCountry from defaultRegion\n if (defaultRegion && countries) {\n const defaultCountry = countries.find(\n ({ value }) => value === defaultRegion,\n );\n if (defaultCountry) {\n setSelectedCountry(defaultCountry);\n }\n }\n }, [defaultRegion, countries]);\n\n useEffect(() => {\n // Initialize selectedCurrency from defaultCurrency\n if (defaultCurrency && currencies) {\n const defaultCurrencyObj = currencies.find(\n ({ value }) => value === defaultCurrency,\n );\n if (defaultCurrencyObj) {\n setEmployerBillingCurrency(defaultCurrencyObj.label);\n }\n }\n }, [defaultCurrency, currencies]);\n\n /**\n * Submit the estimation form with the given values.\n * @param values\n */\n async function onSubmit(values: CostCalculatorEstimationSubmitValues) {\n return costCalculatorEstimationMutationAsync(\n buildPayload(values, estimationOptions, version),\n );\n }\n\n /**\n * If the selected country has no child regions and has additional fields,\n * set the current region to the country's region slug and fetch the region fields.\n * @param country\n */\n function onCountryChange(country: string) {\n const currentCountry = countries?.find(({ value }) => value === country);\n\n if (\n currentCountry &&\n currentCountry.childRegions.length === 0 &&\n currentCountry.hasAdditionalFields\n ) {\n setSelectedRegion(currentCountry.regionSlug);\n } else {\n setSelectedRegion(undefined);\n }\n setSelectedCountry(currentCountry);\n }\n\n /**\n * Update the selected region and fetch the region fields.\n * @param region\n */\n function onRegionChange(region: string) {\n setSelectedRegion(region);\n }\n\n function onHiringBudgetChange(event: React.ChangeEvent<HTMLInputElement>) {\n setHiringBudget(event.target.value as HiringBudget);\n }\n\n function onChangeCurrency(currency: string) {\n const selectedCurrency = currencies?.find(\n (c) => c.value === currency,\n )?.label;\n setEmployerBillingCurrency(selectedCurrency);\n options?.onCurrencyChange?.(selectedCurrency || '');\n }\n\n const regionField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'region',\n );\n\n if (regionField) {\n const regions =\n selectedCountry?.childRegions.map((region) => ({\n value: region.slug,\n label: region.name,\n })) ?? [];\n regionField.options = regions;\n regionField.isVisible = regions.length > 0;\n regionField.required = regions.length > 0;\n regionField.onChange = onRegionChange;\n regionField.schema =\n regions.length > 0\n ? string()\n .transform((value) => (typeof value === 'string' ? value : ''))\n .required('Region is required')\n : string();\n }\n\n if (currencies) {\n const currencyField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'currency',\n );\n if (currencyField) {\n currencyField.options = currencies;\n currencyField.onChange = onChangeCurrency;\n }\n }\n\n const hiringBudgetField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'hiring_budget',\n );\n if (hiringBudgetField) {\n hiringBudgetField.onChange = onHiringBudgetChange;\n }\n\n if (countries) {\n const countryField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n countryField.onChange = onCountryChange;\n }\n }\n\n const resetForm = () => {\n setSelectedCountry(undefined);\n setSelectedRegion(defaultRegion);\n };\n\n const allFields = [\n ...fieldsJSONSchema.fields.filter((field) => field.name !== 'management'),\n ...(jsonSchemaRegionFields?.fields || []),\n ...fieldsJSONSchema.fields.filter((field) => field.name === 'management'),\n ];\n\n const validationSchema = buildValidationSchema(\n fieldsJSONSchema.fields,\n employerBillingCurrency || 'USD',\n estimationOptions.includeEstimationTitle,\n );\n\n async function handleValidation(values: CostCalculatorEstimationFormValues) {\n let errors: JSFValidationError | null = null;\n\n options?.onValidation?.(values);\n const parsedValues = parseJSFToValidate(values, allFields);\n\n // 1. validate static fields first using Yup validate function\n try {\n await validationSchema.validate(parsedValues, {\n abortEarly: false,\n });\n errors = {\n formErrors: {},\n yupError: new ValidationError([], values),\n };\n } catch (error) {\n const iterateResult = iterateErrors(error as ValidationError);\n\n errors = {\n // convert the errors to a format that can be used in the form\n formErrors: Object.entries(iterateResult).reduce(\n (acc, [key, value]) => ({ ...acc, [key]: value.message }),\n {},\n ),\n yupError: error as ValidationError,\n };\n }\n\n // 2. validate json schema fields using the handleValidation (from json-schema-form)\n const handleValidationResult =\n jsonSchemaRegionFields?.handleValidation(parsedValues);\n\n // 3. combine the errors from both validations\n const combinedInnerErrors = [\n ...(errors?.yupError.inner || []),\n ...(handleValidationResult?.yupError?.inner || []),\n ];\n const combinedValues = {\n ...(errors?.yupError?.value || {}),\n ...(handleValidationResult?.yupError?.value || {}),\n };\n\n return {\n formErrors: {\n ...(errors?.formErrors || {}),\n ...(handleValidationResult?.formErrors || {}),\n },\n yupError: new ValidationError(combinedInnerErrors, combinedValues),\n };\n }\n\n return {\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState: {\n current: 0,\n total: 1,\n isLastStep: true,\n },\n /**\n * Array of form fields from the cost calculator schema + dynamic region fields like benefits, age, etc.\n */\n fields: allFields,\n /**\n * Validation schema for the cost calculator form\n */\n validationSchema,\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 values: CostCalculatorEstimationFormValues,\n ): CostCalculatorEstimationSubmitValues => {\n const {\n country,\n region,\n currency,\n salary_converted,\n hiring_budget,\n salary_conversion,\n management,\n estimation_title,\n ...rest\n } = values;\n\n // If the salary has been converted, we take the one the user has inputted\n let salary = values.salary;\n if (salary_converted === 'salary_conversion') {\n salary = salary_conversion;\n }\n\n const jsonSchemaStaticFieldValues = {\n country,\n region,\n salary,\n salary_converted,\n salary_conversion,\n hiring_budget,\n currency,\n management,\n estimation_title,\n };\n\n const parsedStaticFields = parseJSFToValidate(\n jsonSchemaStaticFieldValues,\n fieldsJSONSchema.fields,\n );\n\n const parsedRegionFields = parseJSFToValidate(\n rest,\n jsonSchemaRegionFields?.fields || [],\n );\n\n const additionalFields = {\n currency_code: currencies?.find((c) => c.value === currency)?.label,\n };\n\n return {\n ...parsedStaticFields,\n ...parsedRegionFields,\n ...additionalFields,\n } as CostCalculatorEstimationSubmitValues;\n },\n /**\n * Function to handle validation of the cost calculator form\n * @param values - Form values to validate\n * @returns Validation result\n */\n handleValidation,\n /**\n * Whether the cost calculator form is currently being submitted\n */\n isSubmitting: costCalculatorEstimationMutation.isPending,\n /**\n * Whether the cost calculator form is currently loading\n */\n isLoading:\n isLoadingCountries && isLoadingCurrencies && isLoadingRegionFields,\n /**\n * Function to submit the cost calculator form\n */\n onSubmit,\n /**\n * Function to reset the cost calculator form\n */\n resetForm,\n\n /**\n * Currencies data useful to get the currency if you have a currencySlug\n */\n currencies,\n\n /**\n * Fields metadata\n */\n meta: {\n fields: fieldsMetaRef.current?.fields,\n },\n };\n};\n"],"mappings":"6XAMA,OAA0B,UAAAA,GAAQ,UAAAC,OAAc,MCMhD,OAAS,sBAAAC,GAAoB,UAAAC,OAAc,8BAC3C,OAAS,eAAAC,GAAa,aAAAC,GAAW,WAAAC,GAAS,UAAAC,GAAQ,YAAAC,MAAgB,QAClE,OAAS,UAAAC,GAAQ,mBAAAC,OAAuB,MA+MxB,cAAAC,OAAA,oBA1KT,IAAMC,EAA4D,CACvE,MAAO,aACP,gBAAiB,GACjB,sBAAuB,GACvB,uBAAwB,GACxB,yBAA0B,GAC1B,uBAAwB,GACxB,qBAAsB,EACxB,EAwBMC,GAAkBC,EAACC,GAAwC,CAC/D,GAAM,CAAE,OAAQC,CAAmB,EAAIC,GACrCC,EAAW,KAAK,OAChBH,GAAS,WAAa,CAAC,CACzB,EAEA,OAAOI,GAAmBH,CAAkB,CAC9C,EAPwB,mBAWxB,SAASI,GACPC,EACAC,EACQ,CACR,GACE,OAAOD,GAAgB,UACvBA,IAAgB,MAChB,UAAWA,EACX,CACA,IAAME,EAASF,EAAmC,MAClD,GAAIE,EAAO,OAAOA,CACpB,CACA,OAAOD,IAAiB,mBACpB,gBACA,0BACN,CAfSR,EAAAM,GAAA,kBAoBF,IAAMI,GAAoBV,EAAA,CAC/B,CACE,cAAAW,EACA,gBAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,QAAAb,EACA,QAAAc,CACF,EAA6B,CAC3B,kBAAmBjB,CACrB,IACG,CACH,IAAMkB,EAAgBC,GAEnB,CACD,OAAQ,CAAC,CACX,CAAC,EACK,CAACC,EAAgBC,CAAiB,EAAIC,EAC1CT,CACF,EACM,CAACU,EAAiBC,CAAkB,EACxCF,EAAgC,EAC5B,CAACG,EAAyBC,CAA0B,EAAIJ,EAE5D,EACI,CAACZ,EAAciB,EAAe,EAAIL,EAAuB,EACzD,CAAE,KAAMM,EAAW,UAAWC,EAAmB,EACrDC,EAA2B,CACzB,uBAAwBd,EAAkB,sBAC5C,CAAC,EACG,CAAE,KAAMe,EAAY,UAAWC,EAAoB,EACvDC,EAAqB,EAEjBC,GAAuBd,GAAkBG,GAAiB,MAE1D,CAAE,KAAMY,EAAwB,UAAWC,EAAsB,EACrEC,EAAgBH,GAAsB,CACpC,uBAAwBlB,EAAkB,uBAC1C,QAAAb,CACF,CAAC,EACGmC,EAAmCC,EAA4B,EAC/D,CAAE,YAAaC,EAAsC,EACzDC,EAAkBH,CAAgC,EAC9CI,EAA0BnB,GAAiB,SAE3Cd,EAAcN,GAAS,WAAW,QAAQ,OAC1CwC,EACJlC,GACA,OAAOA,GAAgB,UACvB,iBAAkBA,EAEZA,EAQA,aACF,OAEAmC,EAAgBC,GAAY,IAAM,CACtC,IAAMC,EACJJ,GAA2BjB,EACvBiB,IAA4BjB,EAC5B,GAEN,OAAIiB,IAA4BjB,EACvB,CACL,KAAMA,EACN,GAAIiB,EACJ,gBAAAI,CACF,EAGK,CACL,KAAMJ,EACN,GAAIjB,EACJ,gBAAAqB,CACF,CACF,EAAG,CAACJ,EAAyBjB,CAAuB,CAAC,EAE/CsB,EAAsB/B,EAAkB,kBACxCgC,EAA2BhC,EAAkB,uBAC7CiC,GAAeC,GAAQ,IAAM,CACjC,GAAM,CAAE,KAAAC,EAAM,GAAAC,EAAI,gBAAAN,CAAgB,EAAIF,EAAc,EAC9CS,EAAc7C,GAAeC,EAAaC,CAAY,EAE5D,MAAO,CACL,OAAQ,CACN,OAAQ,CACN,GAAGD,EACH,MAAO4C,EACP,aAAc,CACZ,6BAA8B,CAC5B,MACEV,GAAyB,8BAA8B,MACzD,YACEA,GAAyB,8BACrB,WACR,EACA,WAAY,CAAE,KAAAQ,EAAM,GAAAC,CAAG,EACvB,UAAWlD,EACToD,GAGEvD,GAACwD,EAAA,CACE,GAAGD,EACJ,gBAAiBR,EACjB,eACE7B,IAAY,YAAc,YAAc,SAE1C,aAAcF,EAChB,EAXO,YAcb,CACF,EACA,cAAe,CACb,GAAGZ,GAAS,WAAW,QAAQ,cAC/B,aAAc,CACZ,OAAQc,GAAW,WACrB,CACF,EACA,WAAY,CACV,GAAGd,GAAS,WAAW,QAAQ,WAC/B,WAAY,CACV,GAAIA,GAAS,WAAW,QAAQ,YAAyB,WACzD,eAAgB,CACd,GAAIA,GAAS,WAAW,QAAQ,YAC5B,YAAY,eAChB,qBAAsB,CACpB,UAAW,QACX,gBAAiB,CACf,SAAUsB,GAA2B,KACvC,CACF,CACF,CACF,EACA,aAAc,CACZ,GAAI,OAAOtB,GAAS,WAAW,QAAQ,YAAe,UAEhDA,GAAS,WAAW,QAAQ,YAI5B,oBAAoB,EACtB,CAAC,EACL,OAAQ,CAAC4C,EACT,UAAW7C,EAACoD,GAERvD,GAACyD,EAAA,CACE,GAAGF,EACJ,QAAQ,QACR,SAAU,CACR,OAAQ,CACN,QAAS,GACT,WAAY,uBACZ,OAAQ,CACN,OAAQ,SACR,SAAU,QACZ,CACF,CACF,EACF,EAfO,YAkBb,CACF,EACA,iBAAkB,CAChB,GAAGnD,GAAS,WAAW,QAAQ,iBAC/B,qBAAsB,CACpB,OAAQ,CAAC6C,CACX,CACF,CACF,CACF,CACF,EAAG,CACDJ,EACAnC,EACAC,EACAiC,GAAyB,8BAA8B,MACvDA,GAAyB,8BAA8B,YACvDxC,GAAS,WAAW,QAAQ,cAC5BA,GAAS,WAAW,QAAQ,WAC5BA,GAAS,WAAW,QAAQ,iBAC5Bc,EACAQ,EACAsB,EACAC,EACAjC,CACF,CAAC,EAEK0C,EAAmBxD,GAAgB,CACvC,UAAW,CACT,OAAQ,CACN,GAAGE,GAAS,WAAW,OACvB,GAAG8C,IAAc,MACnB,CACF,CACF,CAAC,EAEDS,GAAU,IAAM,CAEd,GAAI7C,GAAiBe,EAAW,CAC9B,IAAM+B,EAAiB/B,EAAU,KAC/B,CAAC,CAAE,MAAAgC,CAAM,IAAMA,IAAU/C,CAC3B,EACI8C,GACFnC,EAAmBmC,CAAc,CAErC,CACF,EAAG,CAAC9C,EAAee,CAAS,CAAC,EAE7B8B,GAAU,IAAM,CAEd,GAAI5C,GAAmBiB,EAAY,CACjC,IAAM8B,EAAqB9B,EAAW,KACpC,CAAC,CAAE,MAAA6B,CAAM,IAAMA,IAAU9C,CAC3B,EACI+C,GACFnC,EAA2BmC,EAAmB,KAAK,CAEvD,CACF,EAAG,CAAC/C,EAAiBiB,CAAU,CAAC,EAMhC,eAAe+B,GAASC,EAA8C,CACpE,OAAOvB,GACLwB,GAAaD,EAAQ/C,EAAmBC,CAAO,CACjD,CACF,CAJef,EAAA4D,GAAA,YAWf,SAASG,GAAgBC,EAAiB,CACxC,IAAMC,EAAiBvC,GAAW,KAAK,CAAC,CAAE,MAAAgC,CAAM,IAAMA,IAAUM,CAAO,EAGrEC,GACAA,EAAe,aAAa,SAAW,GACvCA,EAAe,oBAEf9C,EAAkB8C,EAAe,UAAU,EAE3C9C,EAAkB,MAAS,EAE7BG,EAAmB2C,CAAc,CACnC,CAbSjE,EAAA+D,GAAA,mBAmBT,SAASG,GAAeC,EAAgB,CACtChD,EAAkBgD,CAAM,CAC1B,CAFSnE,EAAAkE,GAAA,kBAIT,SAASE,GAAqBC,EAA4C,CACxE5C,GAAgB4C,EAAM,OAAO,KAAqB,CACpD,CAFSrE,EAAAoE,GAAA,wBAIT,SAASE,GAAiBC,EAAkB,CAC1C,IAAMC,EAAmB3C,GAAY,KAClC4C,GAAMA,EAAE,QAAUF,CACrB,GAAG,MACH/C,EAA2BgD,CAAgB,EAC3CvE,GAAS,mBAAmBuE,GAAoB,EAAE,CACpD,CANSxE,EAAAsE,GAAA,oBAQT,IAAMI,EAAcnB,EAAiB,OAAO,KACzCoB,GAAUA,EAAM,OAAS,QAC5B,EAEA,GAAID,EAAa,CACf,IAAME,EACJvD,GAAiB,aAAa,IAAK8C,IAAY,CAC7C,MAAOA,EAAO,KACd,MAAOA,EAAO,IAChB,EAAE,GAAK,CAAC,EACVO,EAAY,QAAUE,EACtBF,EAAY,UAAYE,EAAQ,OAAS,EACzCF,EAAY,SAAWE,EAAQ,OAAS,EACxCF,EAAY,SAAWR,GACvBQ,EAAY,OACVE,EAAQ,OAAS,EACbC,GAAO,EACJ,UAAWnB,GAAW,OAAOA,GAAU,SAAWA,EAAQ,EAAG,EAC7D,SAAS,oBAAoB,EAChCmB,GAAO,CACf,CAEA,GAAIhD,EAAY,CACd,IAAMiD,EAAgBvB,EAAiB,OAAO,KAC3CoB,GAAUA,EAAM,OAAS,UAC5B,EACIG,IACFA,EAAc,QAAUjD,EACxBiD,EAAc,SAAWR,GAE7B,CAEA,IAAMS,EAAoBxB,EAAiB,OAAO,KAC/CoB,GAAUA,EAAM,OAAS,eAC5B,EAKA,GAJII,IACFA,EAAkB,SAAWX,IAG3B1C,EAAW,CACb,IAAMsD,EAAezB,EAAiB,OAAO,KAC1CoB,GAAUA,EAAM,OAAS,SAC5B,EACIK,IACFA,EAAa,QAAUtD,EACvBsD,EAAa,SAAWjB,GAE5B,CAEA,IAAMkB,GAAYjF,EAAA,IAAM,CACtBsB,EAAmB,MAAS,EAC5BH,EAAkBR,CAAa,CACjC,EAHkB,aAKZuE,EAAY,CAChB,GAAG3B,EAAiB,OAAO,OAAQoB,GAAUA,EAAM,OAAS,YAAY,EACxE,GAAI1C,GAAwB,QAAU,CAAC,EACvC,GAAGsB,EAAiB,OAAO,OAAQoB,GAAUA,EAAM,OAAS,YAAY,CAC1E,EAEMQ,EAAmBC,GACvB7B,EAAiB,OACjBhC,GAA2B,MAC3BT,EAAkB,sBACpB,EAEA,eAAeuE,GAAiBxB,EAA4C,CAC1E,IAAIyB,EAAoC,KAExCrF,GAAS,eAAe4D,CAAM,EAC9B,IAAM0B,EAAeC,EAAmB3B,EAAQqB,CAAS,EAGzD,GAAI,CACF,MAAMC,EAAiB,SAASI,EAAc,CAC5C,WAAY,EACd,CAAC,EACDD,EAAS,CACP,WAAY,CAAC,EACb,SAAU,IAAIG,GAAgB,CAAC,EAAG5B,CAAM,CAC1C,CACF,OAAS6B,EAAO,CACd,IAAMC,EAAgBC,EAAcF,CAAwB,EAE5DJ,EAAS,CAEP,WAAY,OAAO,QAAQK,CAAa,EAAE,OACxC,CAACE,EAAK,CAACC,EAAKpC,CAAK,KAAO,CAAE,GAAGmC,EAAK,CAACC,CAAG,EAAGpC,EAAM,OAAQ,GACvD,CAAC,CACH,EACA,SAAUgC,CACZ,CACF,CAGA,IAAMK,EACJ9D,GAAwB,iBAAiBsD,CAAY,EAGjDS,EAAsB,CAC1B,GAAIV,GAAQ,SAAS,OAAS,CAAC,EAC/B,GAAIS,GAAwB,UAAU,OAAS,CAAC,CAClD,EACME,EAAiB,CACrB,GAAIX,GAAQ,UAAU,OAAS,CAAC,EAChC,GAAIS,GAAwB,UAAU,OAAS,CAAC,CAClD,EAEA,MAAO,CACL,WAAY,CACV,GAAIT,GAAQ,YAAc,CAAC,EAC3B,GAAIS,GAAwB,YAAc,CAAC,CAC7C,EACA,SAAU,IAAIN,GAAgBO,EAAqBC,CAAc,CACnE,CACF,CAjDe,OAAAjG,EAAAqF,GAAA,oBAmDR,CAIL,UAAW,CACT,QAAS,EACT,MAAO,EACP,WAAY,EACd,EAIA,OAAQH,EAIR,iBAAAC,EAMA,gBAAiBnF,EACf6D,GACyC,CACzC,GAAM,CACJ,QAAAG,EACA,OAAAG,EACA,SAAAI,EACA,iBAAA2B,EACA,cAAAC,EACA,kBAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,GAAGC,CACL,EAAI1C,EAGA2C,EAAS3C,EAAO,OAChBqC,IAAqB,sBACvBM,EAASJ,GAeX,IAAMK,GAAqBjB,EAZS,CAClC,QAAAxB,EACA,OAAAG,EACA,OAAAqC,EACA,iBAAAN,EACA,kBAAAE,EACA,cAAAD,EACA,SAAA5B,EACA,WAAA8B,EACA,iBAAAC,CACF,EAIE/C,EAAiB,MACnB,EAEMmD,GAAqBlB,EACzBe,EACAtE,GAAwB,QAAU,CAAC,CACrC,EAEM0E,GAAmB,CACvB,cAAe9E,GAAY,KAAM4C,IAAMA,GAAE,QAAUF,CAAQ,GAAG,KAChE,EAEA,MAAO,CACL,GAAGkC,GACH,GAAGC,GACH,GAAGC,EACL,CACF,EApDiB,mBA0DjB,iBAAAtB,GAIA,aAAcjD,EAAiC,UAI/C,UACET,IAAsBG,IAAuBI,GAI/C,SAAA0B,GAIA,UAAAqB,GAKA,WAAApD,EAKA,KAAM,CACJ,OAAQb,EAAc,SAAS,MACjC,CACF,CACF,EAzfiC,qBD/F1B,SAAS4F,GACdC,EACAC,EACAC,EACA,CACA,IAAMC,EAAeH,EAAO,OAC1B,CAACI,EAAiBC,KAEZA,EAAM,OAAS,UAAYA,EAAM,OAAS,oBAC5CD,EAAgBC,EAAM,IAAI,EAAKA,EAAM,OAA2B,KAC9D,mBACA,CACE,GAAIC,EAACC,GAAuBA,IAAQF,EAAM,KAAtC,MACJ,KAAMC,EAACE,GAAWA,EAAO,SAAS,gBAAgB,EAA5C,QACN,UAAWF,EAACE,GAAWA,EAAO,SAAS,EAA5B,YACb,CACF,EACSH,EAAM,OAAS,aACxBD,EAAgBC,EAAM,IAAI,EAAII,GAAO,CACnC,eAAgBC,GAAO,EACpB,UAAWC,GACH,MAAMA,CAAK,EAAI,OAAYA,CACnC,EACA,IAAI,EAAG,mDAAmD,EAC1D,IACCV,EACIW,EAAWX,CAAsC,EACjDW,EAAW,IACf,IAKS,iCAJUX,EACbW,EAAWX,CAAsC,EACjDW,EAAW,KACiB,GACmB,IAAIX,CAAuB,EAElF,CACJ,CAAC,EACQI,EAAM,OAAS,oBAAsBH,EAE9CE,EAAgBC,EAAM,IAAI,EACxBA,EAAM,OACN,SAAS,gBAAgB,EAE3BD,EAAgBC,EAAM,IAAI,EAAIA,EAAM,OAE/BD,GAET,CAAC,CACH,EACA,OAAOK,GAAON,CAAY,CAC5B,CAlDgBG,EAAAP,GAAA,yBAyDhB,SAASc,GAAeC,EAAkC,CACxD,IAAMC,EAAS,WACf,OAAO,OAAO,KAAKD,CAAQ,EAAE,OAE3B,CAACE,EAAKC,IAAQ,CACd,IAAMC,EAAkBJ,EAASG,CAAG,EACpC,GAAIC,IAAoB,OACtB,OAAOF,EAGT,IAAMG,EAAe,CACnB,mBAFuBF,EAAI,QAAQF,EAAQ,EAAE,EAG7C,kBAAmBG,CACrB,EACA,MAAO,CAAC,GAAGF,EAAKG,CAAY,CAC9B,EAAG,CAAC,CAAC,CACP,CAhBSb,EAAAO,GAAA,kBAkBT,SAASO,GACPT,EACAU,EACAC,EAC+B,CAC/B,IAAMC,EAAgB,OAAOZ,EAAM,YAAY,cAAc,EACvDa,EAAeb,EAAM,cAoB3B,MAAO,CACL,GAnB0C,CAC1C,YAAaA,EAAM,QAAUA,EAAM,QACnC,gBAAiBA,EAAM,wBAA0B,QACjD,MAAOA,EAAM,kBAAoBU,EAAkB,MACnD,IAAKV,EAAM,KAAO,OAClB,GAAIA,EAAM,UAAY,CAAE,SAAUE,GAAeF,EAAM,QAAQ,CAAE,EACjE,GAAIU,EAAkB,sBACpBE,GAAiB,CACf,SAAU,CACR,cAAeF,EAAkB,kBAC7BE,EACAX,EAAWY,CAAuC,GAClDZ,EAAW,IACf,KAAM,EACR,CACF,CACJ,EAIE,GAAGa,GAAgBd,EAAOW,CAAO,CACnC,CACF,CA9BShB,EAAAc,GAAA,wBAgCT,SAASK,GACPd,EACAW,EACwC,CACxC,IAAMI,EACJJ,IAAY,aAAeX,EAAM,mBAAqB,oBAClDgB,EACJL,IAAY,YAAcX,EAAM,mBAAqB,SACjDiB,EAAkBjB,EAAM,gBAAkB,mBAEhD,GAAIe,EAAa,CACf,IAAMG,EAAsBlB,EAAM,mBAAqB,oBACvD,OAAOiB,EACH,CACE,uCAAwCjB,EAAM,MAChD,EACA,CACE,CAACkB,EACG,2CACA,qBAAqB,EAAGlB,EAAM,MACpC,CACN,CAEA,OAAIgB,EACKC,EACH,CACE,kBAAmBjB,EAAM,MAC3B,EACA,CACE,oBAAqBA,EAAM,MAC7B,EAGC,CAAC,CACV,CAlCSL,EAAAmB,GAAA,mBA0CF,SAASK,GACdC,EAGAV,EAAqDW,EACrDV,EAAiC,WACH,CAC9B,IAAMW,EAAc,MAAM,QAAQF,CAAM,EAAIA,EAAS,CAACA,CAAM,EAE5D,GAAIE,EAAY,SAAW,EACzB,MAAM,IAAI,MAAM,2CAA2C,EAG7D,OAAIA,EAAY,OAAS,GACJ,IAAI,IAAIA,EAAY,IAAKC,GAAMA,EAAE,QAAQ,CAAC,EAC9C,KAAO,GACpB,QAAQ,KACN,8EACF,EAIG,CACL,uBAAwBD,EAAY,CAAC,EAAE,SACvC,iBAAkBZ,EAAkB,gBACpC,wBAAyBA,EAAkB,sBAC3C,yBAA0BA,EAAkB,uBAC5C,uBAAwBA,EAAkB,qBAC1C,YAAaY,EAAY,IAAKtB,GAC5BS,GAAqBT,EAAOU,EAAmBC,CAAO,CACxD,CACF,CACF,CAhCgBhB,EAAAwB,GAAA","names":["number","object","createHeadlessForm","modify","useCallback","useEffect","useMemo","useRef","useState","string","ValidationError","jsx","defaultEstimationOptions","useStaticSchema","__name","options","jsonSchemaModified","modify","jsonSchema","createHeadlessForm","getSalaryTitle","salaryField","hiringBudget","title","useCostCalculator","defaultRegion","defaultCurrency","defaultSalary","estimationOptions","version","fieldsMetaRef","useRef","selectedRegion","setSelectedRegion","useState","selectedCountry","setSelectedCountry","employerBillingCurrency","setEmployerBillingCurrency","setHiringBudget","countries","isLoadingCountries","useCostCalculatorCountries","currencies","isLoadingCurrencies","useCompanyCurrencies","jsonSchemaRegionSlug","jsonSchemaRegionFields","isLoadingRegionFields","useRegionFields","costCalculatorEstimationMutation","useCostCalculatorEstimation","costCalculatorEstimationMutationAsync","mutationToPromise","employeeBillingCurrency","salaryFieldPresentation","getCurrencies","useCallback","shouldSwapOrder","showManagementField","showEstimationTitleField","customFields","useMemo","from","to","salaryTitle","props","SalaryField","FieldSetField","fieldsJSONSchema","useEffect","defaultCountry","value","defaultCurrencyObj","onSubmit","values","buildPayload","onCountryChange","country","currentCountry","onRegionChange","region","onHiringBudgetChange","event","onChangeCurrency","currency","selectedCurrency","c","regionField","field","regions","string","currencyField","hiringBudgetField","countryField","resetForm","allFields","validationSchema","buildValidationSchema","handleValidation","errors","parsedValues","parseJSFToValidate","ValidationError","error","iterateResult","iterateErrors","acc","key","handleValidationResult","combinedInnerErrors","combinedValues","salary_converted","hiring_budget","salary_conversion","management","estimation_title","rest","salary","parsedStaticFields","parsedRegionFields","additionalFields","buildValidationSchema","fields","employerBillingCurrency","includeEstimationTitle","fieldsSchema","fieldsSchemaAcc","field","__name","val","schema","object","number","value","BASE_RATES","formatBenefits","benefits","needle","acc","key","benefitTierSlug","benefitEntry","mapValueToEmployment","estimationOptions","version","managementFee","currencyCode","getSalaryFields","isMarketing","isStandard","useHiringBudget","useEmployerCurrency","buildPayload","values","defaultEstimationOptions","employments","v"]}
1
+ {"version":3,"sources":["../src/flows/CostCalculator/utils.ts","../src/flows/CostCalculator/hooks.tsx"],"sourcesContent":["import type {\n CostCalculatorEmploymentParam,\n CostCalculatorEstimateParams,\n} from '@/src/client';\n\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { AnyObjectSchema, number, object } from 'yup';\nimport { CostCalculatorVersion, defaultEstimationOptions } from './hooks';\nimport type {\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n CurrencyKey,\n} from './types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\n\n/**\n * Build the validation schema for the form.\n * @returns\n */\nexport function buildValidationSchema(\n fields: $TSFixMe[],\n employerBillingCurrency: string,\n includeEstimationTitle?: boolean,\n) {\n const fieldsSchema = fields.reduce<Record<string, AnyObjectSchema>>(\n (fieldsSchemaAcc, field) => {\n // Special handling for salary fields\n if (field.name === 'salary' || field.name === 'salary_conversion') {\n fieldsSchemaAcc[field.name] = (field.schema as AnyObjectSchema).when(\n 'salary_converted',\n {\n is: (val: string | null) => val === field.name,\n then: (schema) => schema.required('Required field'),\n otherwise: (schema) => schema.optional(),\n },\n );\n } else if (field.name === 'management') {\n fieldsSchemaAcc[field.name] = object({\n management_fee: number()\n .transform((value) => {\n return isNaN(value) ? undefined : value;\n })\n .min(0, 'Management fee must be greater than or equal to 0')\n .max(\n employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD,\n () => {\n const maxValue = employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD;\n const displayValue = maxValue / 100;\n return `Management fee cannot exceed ${displayValue} ${employerBillingCurrency}`;\n },\n ),\n });\n } else if (field.name === 'estimation_title' && includeEstimationTitle) {\n // Make estimation_title required when includeEstimationTitle is true\n fieldsSchemaAcc[field.name] = (\n field.schema as AnyObjectSchema\n ).required('Required field');\n } else {\n fieldsSchemaAcc[field.name] = field.schema as AnyObjectSchema;\n }\n return fieldsSchemaAcc;\n },\n {},\n );\n return object(fieldsSchema) as AnyObjectSchema;\n}\n\n/**\n * Format the benefits to the expected format by the API.\n * @param benefits\n * @returns\n */\nfunction formatBenefits(benefits: Record<string, string>) {\n const needle = 'benefit-';\n return Object.keys(benefits).reduce<\n Array<{ benefit_group_slug: string; benefit_tier_slug: string }>\n >((acc, key) => {\n const benefitTierSlug = benefits[key];\n if (benefitTierSlug === 'none') {\n return acc;\n }\n const benefitGroupSlug = key.replace(needle, '');\n const benefitEntry = {\n benefit_group_slug: benefitGroupSlug,\n benefit_tier_slug: benefitTierSlug,\n };\n return [...acc, benefitEntry];\n }, []);\n}\n\nfunction mapValueToEmployment(\n value: CostCalculatorEstimationSubmitValues,\n estimationOptions: CostCalculatorEstimationOptions,\n version: CostCalculatorVersion,\n): CostCalculatorEmploymentParam {\n const managementFee = Number(value.management?.management_fee);\n const currencyCode = value.currency_code;\n\n const base: CostCalculatorEmploymentParam = {\n region_slug: value.region || value.country,\n employment_term: value.contract_duration_type ?? 'fixed',\n title: value.estimation_title || estimationOptions.title,\n age: value.age ?? undefined,\n ...(value.benefits && { benefits: formatBenefits(value.benefits) }),\n ...(estimationOptions.includeManagementFee &&\n managementFee && {\n discount: {\n quoted_amount: estimationOptions.showManagementFee\n ? managementFee\n : BASE_RATES[currencyCode as keyof typeof BASE_RATES] ||\n BASE_RATES.USD,\n text: '',\n },\n }),\n };\n\n return {\n ...base,\n ...getSalaryFields(value, version),\n };\n}\n\nfunction getSalaryFields(\n value: CostCalculatorEstimationSubmitValues,\n version: CostCalculatorVersion,\n): Partial<CostCalculatorEmploymentParam> {\n const isMarketing =\n version === 'marketing' || value.salary_converted === 'salary_conversion';\n const isStandard =\n version === 'standard' && value.salary_converted === 'salary';\n const useHiringBudget = value.hiring_budget === 'my_hiring_budget';\n\n if (isMarketing) {\n const useEmployerCurrency = value.salary_converted === 'salary_conversion';\n return useHiringBudget\n ? {\n annual_total_cost_in_employer_currency: value.salary,\n }\n : {\n [useEmployerCurrency\n ? 'annual_gross_salary_in_employer_currency'\n : 'annual_gross_salary']: value.salary,\n };\n }\n\n if (isStandard) {\n return useHiringBudget\n ? {\n annual_total_cost: value.salary,\n }\n : {\n annual_gross_salary: value.salary,\n };\n }\n\n return {};\n}\n\n/**\n * Build the payload for the cost calculator estimation.\n * @param values\n * @param estimationOptions\n * @returns\n */\nexport function buildPayload(\n values:\n | CostCalculatorEstimationSubmitValues\n | CostCalculatorEstimationSubmitValues[],\n estimationOptions: CostCalculatorEstimationOptions = defaultEstimationOptions,\n version: CostCalculatorVersion = 'standard',\n): CostCalculatorEstimateParams {\n const employments = Array.isArray(values) ? values : [values];\n\n if (employments.length === 0) {\n throw new Error('At least one employment value is required');\n }\n\n if (employments.length > 1) {\n const currencies = new Set(employments.map((v) => v.currency));\n if (currencies.size > 1) {\n console.warn(\n 'Multiple currencies detected in array. Using currency from first employment.',\n );\n }\n }\n\n return {\n employer_currency_slug: employments[0].currency,\n include_benefits: estimationOptions.includeBenefits,\n include_cost_breakdowns: estimationOptions.includeCostBreakdowns,\n include_premium_benefits: estimationOptions.includePremiumBenefits,\n include_management_fee: estimationOptions.includeManagementFee,\n employments: employments.map((value) =>\n mapValueToEmployment(value, estimationOptions, version),\n ),\n };\n}\n","import { MinimalRegion } from '@/src/client';\nimport { jsonSchema } from '@/src/flows/CostCalculator/jsonSchema';\nimport type {\n CostCalculatorEstimationFormValues,\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport type { JSFModify } from '@/src/flows/types';\n\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { iterateErrors } from '@/src/components/form/validationResolver';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { string, ValidationError } from 'yup';\nimport { buildPayload, buildValidationSchema } from './utils';\nimport {\n useCompanyCurrencies,\n useCostCalculatorCountries,\n useCostCalculatorEstimation,\n useRegionFields,\n} from '@/src/flows/CostCalculator/api';\nimport { $TSFixMe, JSFField, Meta } from '@/src/types/remoteFlows';\nimport { SalaryField } from '@/src/flows/CostCalculator/components/SalaryField';\nimport {\n FieldSetField,\n FieldSetProps,\n} from '@/src/components/form/fields/FieldSetField';\nimport { mutationToPromise } from '@/src/lib/mutations';\nexport type CostCalculatorVersion = 'standard' | 'marketing';\n\ntype CostCalculatorCountry = {\n value: string;\n label: string;\n childRegions: MinimalRegion[];\n hasAdditionalFields: boolean | undefined;\n regionSlug: string;\n currency: string;\n};\n\ntype JSFValidationError = {\n formErrors: Record<\n string,\n {\n type: string;\n message: string;\n }\n >;\n yupError: ValidationError;\n};\n\nexport const defaultEstimationOptions: CostCalculatorEstimationOptions = {\n title: 'Estimation',\n includeBenefits: false,\n includeCostBreakdowns: false,\n includePremiumBenefits: false,\n enableCurrencyConversion: false,\n includeEstimationTitle: false,\n includeManagementFee: false,\n};\n\ntype UseCostCalculatorParams = {\n /**\n * The default region slug to preselect a country and a region.\n */\n defaultRegion?: string;\n /**\n * The default currency slug to preselect a currency.\n */\n defaultCurrency?: string;\n\n /**\n * The default salary to preselect a salary.\n */\n defaultSalary?: string;\n /**\n * The estimation options.\n */\n estimationOptions: CostCalculatorEstimationOptions;\n options?: UseCostCalculatorOptions;\n version?: CostCalculatorVersion;\n};\n\nconst useStaticSchema = (options?: { jsfModify?: JSFModify }) => {\n const { schema: jsonSchemaModified } = modify(\n jsonSchema.data.schema,\n options?.jsfModify || {},\n );\n\n return createHeadlessForm(jsonSchemaModified);\n};\n\ntype HiringBudget = 'my_hiring_budget' | 'employee_annual_salary';\n\nfunction getSalaryTitle(\n salaryField: unknown,\n hiringBudget?: HiringBudget,\n): string {\n if (\n typeof salaryField === 'object' &&\n salaryField !== null &&\n 'title' in salaryField\n ) {\n const title = (salaryField as { title?: string }).title;\n if (title) return title;\n }\n return hiringBudget === 'my_hiring_budget'\n ? 'Hiring budget'\n : \"Employee's annual salary\";\n}\n\n/**\n * Hook to use the cost calculator.\n */\nexport const useCostCalculator = (\n {\n defaultRegion,\n defaultCurrency,\n defaultSalary,\n estimationOptions,\n options,\n version,\n }: UseCostCalculatorParams = {\n estimationOptions: defaultEstimationOptions,\n },\n) => {\n const fieldsMetaRef = useRef<{\n fields: Meta;\n }>({\n fields: {},\n });\n const [selectedRegion, setSelectedRegion] = useState<string | undefined>(\n defaultRegion,\n );\n const [selectedCountry, setSelectedCountry] =\n useState<CostCalculatorCountry>();\n const [employerBillingCurrency, setEmployerBillingCurrency] = useState<\n string | undefined\n >();\n const [hiringBudget, setHiringBudget] = useState<HiringBudget>();\n const { data: countries, isLoading: isLoadingCountries } =\n useCostCalculatorCountries({\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n });\n const { data: currencies, isLoading: isLoadingCurrencies } =\n useCompanyCurrencies();\n\n const jsonSchemaRegionSlug = selectedRegion || selectedCountry?.value;\n\n const { data: jsonSchemaRegionFields, isLoading: isLoadingRegionFields } =\n useRegionFields(jsonSchemaRegionSlug, {\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n options,\n });\n const costCalculatorEstimationMutation = useCostCalculatorEstimation();\n const { mutateAsync: costCalculatorEstimationMutationAsync } =\n mutationToPromise(costCalculatorEstimationMutation);\n const employeeBillingCurrency = selectedCountry?.currency;\n\n const salaryField = options?.jsfModify?.fields?.salary;\n const salaryFieldPresentation =\n salaryField &&\n typeof salaryField === 'object' &&\n 'presentation' in salaryField\n ? (\n salaryField as {\n presentation?: {\n salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const getCurrencies = useCallback(() => {\n const shouldSwapOrder =\n employeeBillingCurrency && employerBillingCurrency\n ? employeeBillingCurrency !== employerBillingCurrency\n : false;\n\n if (employeeBillingCurrency !== employerBillingCurrency) {\n return {\n from: employerBillingCurrency,\n to: employeeBillingCurrency,\n shouldSwapOrder,\n };\n }\n\n return {\n from: employeeBillingCurrency,\n to: employerBillingCurrency,\n shouldSwapOrder,\n };\n }, [employeeBillingCurrency, employerBillingCurrency]);\n\n const showManagementField = estimationOptions.showManagementFee;\n const showEstimationTitleField = estimationOptions.includeEstimationTitle;\n const customFields = useMemo(() => {\n const { from, to, shouldSwapOrder } = getCurrencies();\n const salaryTitle = getSalaryTitle(salaryField, hiringBudget);\n\n return {\n fields: {\n salary: {\n ...salaryField,\n title: salaryTitle,\n presentation: {\n salary_conversion_properties: {\n label:\n salaryFieldPresentation?.salary_conversion_properties?.label,\n description:\n salaryFieldPresentation?.salary_conversion_properties\n ?.description,\n },\n currencies: { from, to },\n Component: (\n props: JSFField & { currencies: { from: string; to: string } },\n ) => {\n return (\n <SalaryField\n {...props}\n shouldSwapOrder={shouldSwapOrder}\n conversionType={\n version === 'marketing' ? 'no_spread' : 'spread'\n }\n defaultValue={defaultSalary}\n />\n );\n },\n },\n },\n hiring_budget: {\n ...options?.jsfModify?.fields?.hiring_budget,\n presentation: {\n hidden: version == 'marketing',\n },\n },\n management: {\n ...options?.jsfModify?.fields?.management,\n properties: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)?.properties,\n management_fee: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)\n ?.properties?.management_fee,\n 'x-jsf-presentation': {\n inputType: 'money',\n additionalProps: {\n currency: employerBillingCurrency || 'USD',\n },\n },\n },\n },\n presentation: {\n ...(typeof options?.jsfModify?.fields?.management === 'object'\n ? (\n options?.jsfModify?.fields?.management as Record<\n string,\n $TSFixMe\n >\n )['x-jsf-presentation']\n : {}),\n hidden: !showManagementField,\n Component: (props: FieldSetProps) => {\n return (\n <FieldSetField\n {...props}\n variant='inset'\n features={{\n toggle: {\n enabled: true,\n stateField: 'management._expanded',\n labels: {\n expand: 'Define',\n collapse: 'Remove',\n },\n },\n }}\n />\n );\n },\n },\n },\n estimation_title: {\n ...options?.jsfModify?.fields?.estimation_title,\n 'x-jsf-presentation': {\n hidden: !showEstimationTitleField,\n },\n },\n },\n };\n }, [\n getCurrencies,\n salaryField,\n hiringBudget,\n salaryFieldPresentation?.salary_conversion_properties?.label,\n salaryFieldPresentation?.salary_conversion_properties?.description,\n options?.jsfModify?.fields?.hiring_budget,\n options?.jsfModify?.fields?.management,\n options?.jsfModify?.fields?.estimation_title,\n version,\n employerBillingCurrency,\n showManagementField,\n showEstimationTitleField,\n defaultSalary,\n ]);\n\n const fieldsJSONSchema = useStaticSchema({\n jsfModify: {\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n });\n\n useEffect(() => {\n // Initialize selectedCountry from defaultRegion\n if (defaultRegion && countries) {\n const defaultCountry = countries.find(\n ({ value }) => value === defaultRegion,\n );\n if (defaultCountry) {\n setSelectedCountry(defaultCountry);\n }\n }\n }, [defaultRegion, countries]);\n\n useEffect(() => {\n // Initialize selectedCurrency from defaultCurrency\n if (defaultCurrency && currencies) {\n const defaultCurrencyObj = currencies.find(\n ({ value }) => value === defaultCurrency,\n );\n if (defaultCurrencyObj) {\n setEmployerBillingCurrency(defaultCurrencyObj.label);\n }\n }\n }, [defaultCurrency, currencies]);\n\n /**\n * Submit the estimation form with the given values.\n * @param values\n */\n async function onSubmit(values: CostCalculatorEstimationSubmitValues) {\n return costCalculatorEstimationMutationAsync(\n buildPayload(values, estimationOptions, version),\n );\n }\n\n /**\n * If the selected country has no child regions and has additional fields,\n * set the current region to the country's region slug and fetch the region fields.\n * @param country\n */\n function onCountryChange(country: string) {\n const currentCountry = countries?.find(({ value }) => value === country);\n\n if (\n currentCountry &&\n currentCountry.childRegions.length === 0 &&\n currentCountry.hasAdditionalFields\n ) {\n setSelectedRegion(currentCountry.regionSlug);\n } else {\n setSelectedRegion(undefined);\n }\n setSelectedCountry(currentCountry);\n }\n\n /**\n * Update the selected region and fetch the region fields.\n * @param region\n */\n function onRegionChange(region: string) {\n setSelectedRegion(region);\n }\n\n function onHiringBudgetChange(event: React.ChangeEvent<HTMLInputElement>) {\n setHiringBudget(event.target.value as HiringBudget);\n }\n\n function onChangeCurrency(currency: string) {\n const selectedCurrency = currencies?.find(\n (c) => c.value === currency,\n )?.label;\n setEmployerBillingCurrency(selectedCurrency);\n options?.onCurrencyChange?.(selectedCurrency || '');\n }\n\n const regionField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'region',\n );\n\n if (regionField) {\n const regions =\n selectedCountry?.childRegions.map((region) => ({\n value: region.slug,\n label: region.name,\n })) ?? [];\n regionField.options = regions;\n regionField.isVisible = regions.length > 0;\n regionField.required = regions.length > 0;\n regionField.onChange = onRegionChange;\n regionField.schema =\n regions.length > 0\n ? string()\n .transform((value) => (typeof value === 'string' ? value : ''))\n .required('Region is required')\n : string();\n }\n\n if (currencies) {\n const currencyField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'currency',\n );\n if (currencyField) {\n currencyField.options = currencies;\n currencyField.onChange = onChangeCurrency;\n }\n }\n\n const hiringBudgetField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'hiring_budget',\n );\n if (hiringBudgetField) {\n hiringBudgetField.onChange = onHiringBudgetChange;\n }\n\n if (countries) {\n const countryField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n countryField.onChange = onCountryChange;\n }\n }\n\n const resetForm = () => {\n setSelectedCountry(undefined);\n setSelectedRegion(defaultRegion);\n };\n\n const allFields = [\n ...fieldsJSONSchema.fields.filter((field) => field.name !== 'management'),\n ...(jsonSchemaRegionFields?.fields || []),\n ...fieldsJSONSchema.fields.filter((field) => field.name === 'management'),\n ];\n\n const validationSchema = buildValidationSchema(\n fieldsJSONSchema.fields,\n employerBillingCurrency || 'USD',\n estimationOptions.includeEstimationTitle,\n );\n\n async function handleValidation(values: CostCalculatorEstimationFormValues) {\n let errors: JSFValidationError | null = null;\n\n options?.onValidation?.(values);\n const parsedValues = await parseJSFToValidate(values, allFields);\n\n // 1. validate static fields first using Yup validate function\n try {\n await validationSchema.validate(parsedValues, {\n abortEarly: false,\n });\n errors = {\n formErrors: {},\n yupError: new ValidationError([], values),\n };\n } catch (error) {\n const iterateResult = iterateErrors(error as ValidationError);\n\n errors = {\n // convert the errors to a format that can be used in the form\n formErrors: Object.entries(iterateResult).reduce(\n (acc, [key, value]) => ({ ...acc, [key]: value.message }),\n {},\n ),\n yupError: error as ValidationError,\n };\n }\n\n // 2. validate json schema fields using the handleValidation (from json-schema-form)\n const handleValidationResult =\n jsonSchemaRegionFields?.handleValidation(parsedValues);\n\n // 3. combine the errors from both validations\n const combinedInnerErrors = [\n ...(errors?.yupError.inner || []),\n ...(handleValidationResult?.yupError?.inner || []),\n ];\n const combinedValues = {\n ...(errors?.yupError?.value || {}),\n ...(handleValidationResult?.yupError?.value || {}),\n };\n\n return {\n formErrors: {\n ...(errors?.formErrors || {}),\n ...(handleValidationResult?.formErrors || {}),\n },\n yupError: new ValidationError(combinedInnerErrors, combinedValues),\n };\n }\n\n return {\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState: {\n current: 0,\n total: 1,\n isLastStep: true,\n },\n /**\n * Array of form fields from the cost calculator schema + dynamic region fields like benefits, age, etc.\n */\n fields: allFields,\n /**\n * Validation schema for the cost calculator form\n */\n validationSchema,\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues: async (\n values: CostCalculatorEstimationFormValues,\n ): Promise<CostCalculatorEstimationSubmitValues> => {\n const {\n country,\n region,\n currency,\n salary_converted,\n hiring_budget,\n salary_conversion,\n management,\n estimation_title,\n ...rest\n } = values;\n\n // If the salary has been converted, we take the one the user has inputted\n let salary = values.salary;\n if (salary_converted === 'salary_conversion') {\n salary = salary_conversion;\n }\n\n const jsonSchemaStaticFieldValues = {\n country,\n region,\n salary,\n salary_converted,\n salary_conversion,\n hiring_budget,\n currency,\n management,\n estimation_title,\n };\n\n const parsedStaticFields = await parseJSFToValidate(\n jsonSchemaStaticFieldValues,\n fieldsJSONSchema.fields,\n );\n\n const parsedRegionFields = await parseJSFToValidate(\n rest,\n jsonSchemaRegionFields?.fields || [],\n );\n\n const additionalFields = {\n currency_code: currencies?.find((c) => c.value === currency)?.label,\n };\n\n return {\n ...parsedStaticFields,\n ...parsedRegionFields,\n ...additionalFields,\n } as CostCalculatorEstimationSubmitValues;\n },\n /**\n * Function to handle validation of the cost calculator form\n * @param values - Form values to validate\n * @returns Validation result\n */\n handleValidation,\n /**\n * Whether the cost calculator form is currently being submitted\n */\n isSubmitting: costCalculatorEstimationMutation.isPending,\n /**\n * Whether the cost calculator form is currently loading\n */\n isLoading:\n isLoadingCountries && isLoadingCurrencies && isLoadingRegionFields,\n /**\n * Function to submit the cost calculator form\n */\n onSubmit,\n /**\n * Function to reset the cost calculator form\n */\n resetForm,\n\n /**\n * Currencies data useful to get the currency if you have a currencySlug\n */\n currencies,\n\n /**\n * Fields metadata\n */\n meta: {\n fields: fieldsMetaRef.current?.fields,\n },\n };\n};\n"],"mappings":"6XAMA,OAA0B,UAAAA,GAAQ,UAAAC,OAAc,MCMhD,OAAS,sBAAAC,GAAoB,UAAAC,OAAc,8BAC3C,OAAS,eAAAC,GAAa,aAAAC,GAAW,WAAAC,GAAS,UAAAC,GAAQ,YAAAC,MAAgB,QAClE,OAAS,UAAAC,GAAQ,mBAAAC,OAAuB,MA+MxB,cAAAC,OAAA,oBA1KT,IAAMC,EAA4D,CACvE,MAAO,aACP,gBAAiB,GACjB,sBAAuB,GACvB,uBAAwB,GACxB,yBAA0B,GAC1B,uBAAwB,GACxB,qBAAsB,EACxB,EAwBMC,GAAkBC,EAACC,GAAwC,CAC/D,GAAM,CAAE,OAAQC,CAAmB,EAAIC,GACrCC,EAAW,KAAK,OAChBH,GAAS,WAAa,CAAC,CACzB,EAEA,OAAOI,GAAmBH,CAAkB,CAC9C,EAPwB,mBAWxB,SAASI,GACPC,EACAC,EACQ,CACR,GACE,OAAOD,GAAgB,UACvBA,IAAgB,MAChB,UAAWA,EACX,CACA,IAAME,EAASF,EAAmC,MAClD,GAAIE,EAAO,OAAOA,CACpB,CACA,OAAOD,IAAiB,mBACpB,gBACA,0BACN,CAfSR,EAAAM,GAAA,kBAoBF,IAAMI,GAAoBV,EAAA,CAC/B,CACE,cAAAW,EACA,gBAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,QAAAb,EACA,QAAAc,CACF,EAA6B,CAC3B,kBAAmBjB,CACrB,IACG,CACH,IAAMkB,EAAgBC,GAEnB,CACD,OAAQ,CAAC,CACX,CAAC,EACK,CAACC,EAAgBC,CAAiB,EAAIC,EAC1CT,CACF,EACM,CAACU,EAAiBC,CAAkB,EACxCF,EAAgC,EAC5B,CAACG,EAAyBC,CAA0B,EAAIJ,EAE5D,EACI,CAACZ,EAAciB,EAAe,EAAIL,EAAuB,EACzD,CAAE,KAAMM,EAAW,UAAWC,EAAmB,EACrDC,EAA2B,CACzB,uBAAwBd,EAAkB,sBAC5C,CAAC,EACG,CAAE,KAAMe,EAAY,UAAWC,EAAoB,EACvDC,EAAqB,EAEjBC,GAAuBd,GAAkBG,GAAiB,MAE1D,CAAE,KAAMY,EAAwB,UAAWC,EAAsB,EACrEC,EAAgBH,GAAsB,CACpC,uBAAwBlB,EAAkB,uBAC1C,QAAAb,CACF,CAAC,EACGmC,EAAmCC,EAA4B,EAC/D,CAAE,YAAaC,EAAsC,EACzDC,EAAkBH,CAAgC,EAC9CI,EAA0BnB,GAAiB,SAE3Cd,EAAcN,GAAS,WAAW,QAAQ,OAC1CwC,EACJlC,GACA,OAAOA,GAAgB,UACvB,iBAAkBA,EAEZA,EAQA,aACF,OAEAmC,EAAgBC,GAAY,IAAM,CACtC,IAAMC,EACJJ,GAA2BjB,EACvBiB,IAA4BjB,EAC5B,GAEN,OAAIiB,IAA4BjB,EACvB,CACL,KAAMA,EACN,GAAIiB,EACJ,gBAAAI,CACF,EAGK,CACL,KAAMJ,EACN,GAAIjB,EACJ,gBAAAqB,CACF,CACF,EAAG,CAACJ,EAAyBjB,CAAuB,CAAC,EAE/CsB,EAAsB/B,EAAkB,kBACxCgC,EAA2BhC,EAAkB,uBAC7CiC,GAAeC,GAAQ,IAAM,CACjC,GAAM,CAAE,KAAAC,EAAM,GAAAC,EAAI,gBAAAN,CAAgB,EAAIF,EAAc,EAC9CS,EAAc7C,GAAeC,EAAaC,CAAY,EAE5D,MAAO,CACL,OAAQ,CACN,OAAQ,CACN,GAAGD,EACH,MAAO4C,EACP,aAAc,CACZ,6BAA8B,CAC5B,MACEV,GAAyB,8BAA8B,MACzD,YACEA,GAAyB,8BACrB,WACR,EACA,WAAY,CAAE,KAAAQ,EAAM,GAAAC,CAAG,EACvB,UAAWlD,EACToD,GAGEvD,GAACwD,EAAA,CACE,GAAGD,EACJ,gBAAiBR,EACjB,eACE7B,IAAY,YAAc,YAAc,SAE1C,aAAcF,EAChB,EAXO,YAcb,CACF,EACA,cAAe,CACb,GAAGZ,GAAS,WAAW,QAAQ,cAC/B,aAAc,CACZ,OAAQc,GAAW,WACrB,CACF,EACA,WAAY,CACV,GAAGd,GAAS,WAAW,QAAQ,WAC/B,WAAY,CACV,GAAIA,GAAS,WAAW,QAAQ,YAAyB,WACzD,eAAgB,CACd,GAAIA,GAAS,WAAW,QAAQ,YAC5B,YAAY,eAChB,qBAAsB,CACpB,UAAW,QACX,gBAAiB,CACf,SAAUsB,GAA2B,KACvC,CACF,CACF,CACF,EACA,aAAc,CACZ,GAAI,OAAOtB,GAAS,WAAW,QAAQ,YAAe,UAEhDA,GAAS,WAAW,QAAQ,YAI5B,oBAAoB,EACtB,CAAC,EACL,OAAQ,CAAC4C,EACT,UAAW7C,EAACoD,GAERvD,GAACyD,EAAA,CACE,GAAGF,EACJ,QAAQ,QACR,SAAU,CACR,OAAQ,CACN,QAAS,GACT,WAAY,uBACZ,OAAQ,CACN,OAAQ,SACR,SAAU,QACZ,CACF,CACF,EACF,EAfO,YAkBb,CACF,EACA,iBAAkB,CAChB,GAAGnD,GAAS,WAAW,QAAQ,iBAC/B,qBAAsB,CACpB,OAAQ,CAAC6C,CACX,CACF,CACF,CACF,CACF,EAAG,CACDJ,EACAnC,EACAC,EACAiC,GAAyB,8BAA8B,MACvDA,GAAyB,8BAA8B,YACvDxC,GAAS,WAAW,QAAQ,cAC5BA,GAAS,WAAW,QAAQ,WAC5BA,GAAS,WAAW,QAAQ,iBAC5Bc,EACAQ,EACAsB,EACAC,EACAjC,CACF,CAAC,EAEK0C,EAAmBxD,GAAgB,CACvC,UAAW,CACT,OAAQ,CACN,GAAGE,GAAS,WAAW,OACvB,GAAG8C,IAAc,MACnB,CACF,CACF,CAAC,EAEDS,GAAU,IAAM,CAEd,GAAI7C,GAAiBe,EAAW,CAC9B,IAAM+B,EAAiB/B,EAAU,KAC/B,CAAC,CAAE,MAAAgC,CAAM,IAAMA,IAAU/C,CAC3B,EACI8C,GACFnC,EAAmBmC,CAAc,CAErC,CACF,EAAG,CAAC9C,EAAee,CAAS,CAAC,EAE7B8B,GAAU,IAAM,CAEd,GAAI5C,GAAmBiB,EAAY,CACjC,IAAM8B,EAAqB9B,EAAW,KACpC,CAAC,CAAE,MAAA6B,CAAM,IAAMA,IAAU9C,CAC3B,EACI+C,GACFnC,EAA2BmC,EAAmB,KAAK,CAEvD,CACF,EAAG,CAAC/C,EAAiBiB,CAAU,CAAC,EAMhC,eAAe+B,GAASC,EAA8C,CACpE,OAAOvB,GACLwB,GAAaD,EAAQ/C,EAAmBC,CAAO,CACjD,CACF,CAJef,EAAA4D,GAAA,YAWf,SAASG,GAAgBC,EAAiB,CACxC,IAAMC,EAAiBvC,GAAW,KAAK,CAAC,CAAE,MAAAgC,CAAM,IAAMA,IAAUM,CAAO,EAGrEC,GACAA,EAAe,aAAa,SAAW,GACvCA,EAAe,oBAEf9C,EAAkB8C,EAAe,UAAU,EAE3C9C,EAAkB,MAAS,EAE7BG,EAAmB2C,CAAc,CACnC,CAbSjE,EAAA+D,GAAA,mBAmBT,SAASG,GAAeC,EAAgB,CACtChD,EAAkBgD,CAAM,CAC1B,CAFSnE,EAAAkE,GAAA,kBAIT,SAASE,GAAqBC,EAA4C,CACxE5C,GAAgB4C,EAAM,OAAO,KAAqB,CACpD,CAFSrE,EAAAoE,GAAA,wBAIT,SAASE,GAAiBC,EAAkB,CAC1C,IAAMC,EAAmB3C,GAAY,KAClC4C,GAAMA,EAAE,QAAUF,CACrB,GAAG,MACH/C,EAA2BgD,CAAgB,EAC3CvE,GAAS,mBAAmBuE,GAAoB,EAAE,CACpD,CANSxE,EAAAsE,GAAA,oBAQT,IAAMI,EAAcnB,EAAiB,OAAO,KACzCoB,GAAUA,EAAM,OAAS,QAC5B,EAEA,GAAID,EAAa,CACf,IAAME,EACJvD,GAAiB,aAAa,IAAK8C,IAAY,CAC7C,MAAOA,EAAO,KACd,MAAOA,EAAO,IAChB,EAAE,GAAK,CAAC,EACVO,EAAY,QAAUE,EACtBF,EAAY,UAAYE,EAAQ,OAAS,EACzCF,EAAY,SAAWE,EAAQ,OAAS,EACxCF,EAAY,SAAWR,GACvBQ,EAAY,OACVE,EAAQ,OAAS,EACbC,GAAO,EACJ,UAAWnB,GAAW,OAAOA,GAAU,SAAWA,EAAQ,EAAG,EAC7D,SAAS,oBAAoB,EAChCmB,GAAO,CACf,CAEA,GAAIhD,EAAY,CACd,IAAMiD,EAAgBvB,EAAiB,OAAO,KAC3CoB,GAAUA,EAAM,OAAS,UAC5B,EACIG,IACFA,EAAc,QAAUjD,EACxBiD,EAAc,SAAWR,GAE7B,CAEA,IAAMS,EAAoBxB,EAAiB,OAAO,KAC/CoB,GAAUA,EAAM,OAAS,eAC5B,EAKA,GAJII,IACFA,EAAkB,SAAWX,IAG3B1C,EAAW,CACb,IAAMsD,EAAezB,EAAiB,OAAO,KAC1CoB,GAAUA,EAAM,OAAS,SAC5B,EACIK,IACFA,EAAa,QAAUtD,EACvBsD,EAAa,SAAWjB,GAE5B,CAEA,IAAMkB,GAAYjF,EAAA,IAAM,CACtBsB,EAAmB,MAAS,EAC5BH,EAAkBR,CAAa,CACjC,EAHkB,aAKZuE,EAAY,CAChB,GAAG3B,EAAiB,OAAO,OAAQoB,GAAUA,EAAM,OAAS,YAAY,EACxE,GAAI1C,GAAwB,QAAU,CAAC,EACvC,GAAGsB,EAAiB,OAAO,OAAQoB,GAAUA,EAAM,OAAS,YAAY,CAC1E,EAEMQ,EAAmBC,GACvB7B,EAAiB,OACjBhC,GAA2B,MAC3BT,EAAkB,sBACpB,EAEA,eAAeuE,GAAiBxB,EAA4C,CAC1E,IAAIyB,EAAoC,KAExCrF,GAAS,eAAe4D,CAAM,EAC9B,IAAM0B,EAAe,MAAMC,EAAmB3B,EAAQqB,CAAS,EAG/D,GAAI,CACF,MAAMC,EAAiB,SAASI,EAAc,CAC5C,WAAY,EACd,CAAC,EACDD,EAAS,CACP,WAAY,CAAC,EACb,SAAU,IAAIG,GAAgB,CAAC,EAAG5B,CAAM,CAC1C,CACF,OAAS6B,EAAO,CACd,IAAMC,EAAgBC,EAAcF,CAAwB,EAE5DJ,EAAS,CAEP,WAAY,OAAO,QAAQK,CAAa,EAAE,OACxC,CAACE,EAAK,CAACC,EAAKpC,CAAK,KAAO,CAAE,GAAGmC,EAAK,CAACC,CAAG,EAAGpC,EAAM,OAAQ,GACvD,CAAC,CACH,EACA,SAAUgC,CACZ,CACF,CAGA,IAAMK,EACJ9D,GAAwB,iBAAiBsD,CAAY,EAGjDS,EAAsB,CAC1B,GAAIV,GAAQ,SAAS,OAAS,CAAC,EAC/B,GAAIS,GAAwB,UAAU,OAAS,CAAC,CAClD,EACME,EAAiB,CACrB,GAAIX,GAAQ,UAAU,OAAS,CAAC,EAChC,GAAIS,GAAwB,UAAU,OAAS,CAAC,CAClD,EAEA,MAAO,CACL,WAAY,CACV,GAAIT,GAAQ,YAAc,CAAC,EAC3B,GAAIS,GAAwB,YAAc,CAAC,CAC7C,EACA,SAAU,IAAIN,GAAgBO,EAAqBC,CAAc,CACnE,CACF,CAjDe,OAAAjG,EAAAqF,GAAA,oBAmDR,CAIL,UAAW,CACT,QAAS,EACT,MAAO,EACP,WAAY,EACd,EAIA,OAAQH,EAIR,iBAAAC,EAMA,gBAAiBnF,EAAA,MACf6D,GACkD,CAClD,GAAM,CACJ,QAAAG,EACA,OAAAG,EACA,SAAAI,EACA,iBAAA2B,EACA,cAAAC,EACA,kBAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,GAAGC,CACL,EAAI1C,EAGA2C,EAAS3C,EAAO,OAChBqC,IAAqB,sBACvBM,EAASJ,GAeX,IAAMK,GAAqB,MAAMjB,EAZG,CAClC,QAAAxB,EACA,OAAAG,EACA,OAAAqC,EACA,iBAAAN,EACA,kBAAAE,EACA,cAAAD,EACA,SAAA5B,EACA,WAAA8B,EACA,iBAAAC,CACF,EAIE/C,EAAiB,MACnB,EAEMmD,GAAqB,MAAMlB,EAC/Be,EACAtE,GAAwB,QAAU,CAAC,CACrC,EAEM0E,GAAmB,CACvB,cAAe9E,GAAY,KAAM4C,IAAMA,GAAE,QAAUF,CAAQ,GAAG,KAChE,EAEA,MAAO,CACL,GAAGkC,GACH,GAAGC,GACH,GAAGC,EACL,CACF,EApDiB,mBA0DjB,iBAAAtB,GAIA,aAAcjD,EAAiC,UAI/C,UACET,IAAsBG,IAAuBI,GAI/C,SAAA0B,GAIA,UAAAqB,GAKA,WAAApD,EAKA,KAAM,CACJ,OAAQb,EAAc,SAAS,MACjC,CACF,CACF,EAzfiC,qBD/F1B,SAAS4F,GACdC,EACAC,EACAC,EACA,CACA,IAAMC,EAAeH,EAAO,OAC1B,CAACI,EAAiBC,KAEZA,EAAM,OAAS,UAAYA,EAAM,OAAS,oBAC5CD,EAAgBC,EAAM,IAAI,EAAKA,EAAM,OAA2B,KAC9D,mBACA,CACE,GAAIC,EAACC,GAAuBA,IAAQF,EAAM,KAAtC,MACJ,KAAMC,EAACE,GAAWA,EAAO,SAAS,gBAAgB,EAA5C,QACN,UAAWF,EAACE,GAAWA,EAAO,SAAS,EAA5B,YACb,CACF,EACSH,EAAM,OAAS,aACxBD,EAAgBC,EAAM,IAAI,EAAII,GAAO,CACnC,eAAgBC,GAAO,EACpB,UAAWC,GACH,MAAMA,CAAK,EAAI,OAAYA,CACnC,EACA,IAAI,EAAG,mDAAmD,EAC1D,IACCV,EACIW,EAAWX,CAAsC,EACjDW,EAAW,IACf,IAKS,iCAJUX,EACbW,EAAWX,CAAsC,EACjDW,EAAW,KACiB,GACmB,IAAIX,CAAuB,EAElF,CACJ,CAAC,EACQI,EAAM,OAAS,oBAAsBH,EAE9CE,EAAgBC,EAAM,IAAI,EACxBA,EAAM,OACN,SAAS,gBAAgB,EAE3BD,EAAgBC,EAAM,IAAI,EAAIA,EAAM,OAE/BD,GAET,CAAC,CACH,EACA,OAAOK,GAAON,CAAY,CAC5B,CAlDgBG,EAAAP,GAAA,yBAyDhB,SAASc,GAAeC,EAAkC,CACxD,IAAMC,EAAS,WACf,OAAO,OAAO,KAAKD,CAAQ,EAAE,OAE3B,CAACE,EAAKC,IAAQ,CACd,IAAMC,EAAkBJ,EAASG,CAAG,EACpC,GAAIC,IAAoB,OACtB,OAAOF,EAGT,IAAMG,EAAe,CACnB,mBAFuBF,EAAI,QAAQF,EAAQ,EAAE,EAG7C,kBAAmBG,CACrB,EACA,MAAO,CAAC,GAAGF,EAAKG,CAAY,CAC9B,EAAG,CAAC,CAAC,CACP,CAhBSb,EAAAO,GAAA,kBAkBT,SAASO,GACPT,EACAU,EACAC,EAC+B,CAC/B,IAAMC,EAAgB,OAAOZ,EAAM,YAAY,cAAc,EACvDa,EAAeb,EAAM,cAoB3B,MAAO,CACL,GAnB0C,CAC1C,YAAaA,EAAM,QAAUA,EAAM,QACnC,gBAAiBA,EAAM,wBAA0B,QACjD,MAAOA,EAAM,kBAAoBU,EAAkB,MACnD,IAAKV,EAAM,KAAO,OAClB,GAAIA,EAAM,UAAY,CAAE,SAAUE,GAAeF,EAAM,QAAQ,CAAE,EACjE,GAAIU,EAAkB,sBACpBE,GAAiB,CACf,SAAU,CACR,cAAeF,EAAkB,kBAC7BE,EACAX,EAAWY,CAAuC,GAClDZ,EAAW,IACf,KAAM,EACR,CACF,CACJ,EAIE,GAAGa,GAAgBd,EAAOW,CAAO,CACnC,CACF,CA9BShB,EAAAc,GAAA,wBAgCT,SAASK,GACPd,EACAW,EACwC,CACxC,IAAMI,EACJJ,IAAY,aAAeX,EAAM,mBAAqB,oBAClDgB,EACJL,IAAY,YAAcX,EAAM,mBAAqB,SACjDiB,EAAkBjB,EAAM,gBAAkB,mBAEhD,GAAIe,EAAa,CACf,IAAMG,EAAsBlB,EAAM,mBAAqB,oBACvD,OAAOiB,EACH,CACE,uCAAwCjB,EAAM,MAChD,EACA,CACE,CAACkB,EACG,2CACA,qBAAqB,EAAGlB,EAAM,MACpC,CACN,CAEA,OAAIgB,EACKC,EACH,CACE,kBAAmBjB,EAAM,MAC3B,EACA,CACE,oBAAqBA,EAAM,MAC7B,EAGC,CAAC,CACV,CAlCSL,EAAAmB,GAAA,mBA0CF,SAASK,GACdC,EAGAV,EAAqDW,EACrDV,EAAiC,WACH,CAC9B,IAAMW,EAAc,MAAM,QAAQF,CAAM,EAAIA,EAAS,CAACA,CAAM,EAE5D,GAAIE,EAAY,SAAW,EACzB,MAAM,IAAI,MAAM,2CAA2C,EAG7D,OAAIA,EAAY,OAAS,GACJ,IAAI,IAAIA,EAAY,IAAKC,GAAMA,EAAE,QAAQ,CAAC,EAC9C,KAAO,GACpB,QAAQ,KACN,8EACF,EAIG,CACL,uBAAwBD,EAAY,CAAC,EAAE,SACvC,iBAAkBZ,EAAkB,gBACpC,wBAAyBA,EAAkB,sBAC3C,yBAA0BA,EAAkB,uBAC5C,uBAAwBA,EAAkB,qBAC1C,YAAaY,EAAY,IAAKtB,GAC5BS,GAAqBT,EAAOU,EAAmBC,CAAO,CACxD,CACF,CACF,CAhCgBhB,EAAAwB,GAAA","names":["number","object","createHeadlessForm","modify","useCallback","useEffect","useMemo","useRef","useState","string","ValidationError","jsx","defaultEstimationOptions","useStaticSchema","__name","options","jsonSchemaModified","modify","jsonSchema","createHeadlessForm","getSalaryTitle","salaryField","hiringBudget","title","useCostCalculator","defaultRegion","defaultCurrency","defaultSalary","estimationOptions","version","fieldsMetaRef","useRef","selectedRegion","setSelectedRegion","useState","selectedCountry","setSelectedCountry","employerBillingCurrency","setEmployerBillingCurrency","setHiringBudget","countries","isLoadingCountries","useCostCalculatorCountries","currencies","isLoadingCurrencies","useCompanyCurrencies","jsonSchemaRegionSlug","jsonSchemaRegionFields","isLoadingRegionFields","useRegionFields","costCalculatorEstimationMutation","useCostCalculatorEstimation","costCalculatorEstimationMutationAsync","mutationToPromise","employeeBillingCurrency","salaryFieldPresentation","getCurrencies","useCallback","shouldSwapOrder","showManagementField","showEstimationTitleField","customFields","useMemo","from","to","salaryTitle","props","SalaryField","FieldSetField","fieldsJSONSchema","useEffect","defaultCountry","value","defaultCurrencyObj","onSubmit","values","buildPayload","onCountryChange","country","currentCountry","onRegionChange","region","onHiringBudgetChange","event","onChangeCurrency","currency","selectedCurrency","c","regionField","field","regions","string","currencyField","hiringBudgetField","countryField","resetForm","allFields","validationSchema","buildValidationSchema","handleValidation","errors","parsedValues","parseJSFToValidate","ValidationError","error","iterateResult","iterateErrors","acc","key","handleValidationResult","combinedInnerErrors","combinedValues","salary_converted","hiring_budget","salary_conversion","management","estimation_title","rest","salary","parsedStaticFields","parsedRegionFields","additionalFields","buildValidationSchema","fields","employerBillingCurrency","includeEstimationTitle","fieldsSchema","fieldsSchemaAcc","field","__name","val","schema","object","number","value","BASE_RATES","formatBenefits","benefits","needle","acc","key","benefitTierSlug","benefitEntry","mapValueToEmployment","estimationOptions","version","managementFee","currencyCode","getSalaryFields","isMarketing","isStandard","useHiringBudget","useEmployerCurrency","buildPayload","values","defaultEstimationOptions","employments","v"]}
@@ -0,0 +1,2 @@
1
+ import{f as n,g as a}from"./chunk-CNDSIADP.js";import{c as m}from"./chunk-2EJ4BAUK.js";import{b as i}from"./chunk-TVZAFTPT.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as s}from"react/jsx-runtime";function R({onSubmit:d,onError:c,onSuccess:l}){let{contractAmendment:{stepState:u,isSubmitting:f,onSubmit:C,fields:p},formId:A}=i(),e=n({defaultValues:u.values?.form}),F=o(async r=>{let S=await m(r,p,{isPartialValidation:!1});await d?.(S);let t=await C(r);t.error?c?.(t.error):await l?.(t.data)},"handleSubmit");return f?null:s(a,{...e,children:s("form",{id:A,onSubmit:e.handleSubmit(F),className:"RemoteFlows__ContractAmendmentConfirmationForm"})})}o(R,"ContractAmendmentConfirmationForm");export{R as a};
2
+ //# sourceMappingURL=chunk-L2GTD44Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/ContractAmendment/ContractAmendmentConfirmationForm.tsx"],"sourcesContent":["import {\n ContractAmendmentResponse,\n PostCreateContractAmendmentError,\n} from '@/src/client';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { Form } from '@/src/components/ui/form';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { useContractAmendmentContext } from './context';\n\ntype ContractAmendmentConfirmationFormProps = {\n /**\n * Callback function to be called when the contract amendment form is submitted.\n * This function is called before the contract amendment is submitted.\n * It can be used to perform any additional validation or processing before\n * the contract amendment is submitted.\n * @param values\n * @returns\n */\n onSubmit?: (values: FieldValues) => void | Promise<void>;\n /**\n * Callback function to be called when the contract amendment fails.\n * @param error\n * @returns\n */\n onError?: (error: PostCreateContractAmendmentError) => void;\n /**\n * Callback function to be called when the contract amendment is successfully submitted.\n * @param data\n * @returns\n */\n onSuccess?: (data: ContractAmendmentResponse) => void | Promise<void>;\n};\n\nexport function ContractAmendmentConfirmationForm({\n onSubmit,\n onError,\n onSuccess,\n}: ContractAmendmentConfirmationFormProps) {\n const {\n contractAmendment: {\n stepState,\n isSubmitting,\n onSubmit: submitContractAmendment,\n fields,\n },\n formId,\n } = useContractAmendmentContext();\n const form = useForm({\n defaultValues: stepState.values?.form,\n });\n\n const handleSubmit = async (values: FieldValues) => {\n const parsedValues = await parseJSFToValidate(values, fields, {\n isPartialValidation: false,\n });\n await onSubmit?.(parsedValues);\n\n const contractAmendmentResult = await submitContractAmendment(values);\n\n if (contractAmendmentResult.error) {\n onError?.(\n contractAmendmentResult.error as PostCreateContractAmendmentError,\n );\n } else {\n await onSuccess?.(\n contractAmendmentResult.data as ContractAmendmentResponse,\n );\n }\n };\n\n // Ensure that step\n if (isSubmitting) {\n return null;\n }\n\n return (\n <Form {...form}>\n <form\n id={formId}\n onSubmit={form.handleSubmit(handleSubmit)}\n className='RemoteFlows__ContractAmendmentConfirmationForm'\n ></form>\n </Form>\n );\n}\n"],"mappings":"uKA6EM,cAAAA,MAAA,oBA5CC,SAASC,EAAkC,CAChD,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA2C,CACzC,GAAM,CACJ,kBAAmB,CACjB,UAAAC,EACA,aAAAC,EACA,SAAUC,EACV,OAAAC,CACF,EACA,OAAAC,CACF,EAAIC,EAA4B,EAC1BC,EAAOC,EAAQ,CACnB,cAAeP,EAAU,QAAQ,IACnC,CAAC,EAEKQ,EAAeC,EAAA,MAAOC,GAAwB,CAClD,IAAMC,EAAe,MAAMC,EAAmBF,EAAQP,EAAQ,CAC5D,oBAAqB,EACvB,CAAC,EACD,MAAMN,IAAWc,CAAY,EAE7B,IAAME,EAA0B,MAAMX,EAAwBQ,CAAM,EAEhEG,EAAwB,MAC1Bf,IACEe,EAAwB,KAC1B,EAEA,MAAMd,IACJc,EAAwB,IAC1B,CAEJ,EAjBqB,gBAoBrB,OAAIZ,EACK,KAIPN,EAACmB,EAAA,CAAM,GAAGR,EACR,SAAAX,EAAC,QACC,GAAIS,EACJ,SAAUE,EAAK,aAAaE,CAAY,EACxC,UAAU,iDACX,EACH,CAEJ,CAnDgBC,EAAAb,EAAA","names":["jsx","ContractAmendmentConfirmationForm","onSubmit","onError","onSuccess","stepState","isSubmitting","submitContractAmendment","fields","formId","useContractAmendmentContext","form","useForm","handleSubmit","__name","values","parsedValues","parseJSFToValidate","contractAmendmentResult","Form"]}
@@ -1,2 +1,2 @@
1
- import{b as g}from"./chunk-PGWKJ6FK.js";import{d as f,e as w}from"./chunk-5KZXFQLZ.js";import{a as m}from"./chunk-2YTBWEC7.js";import{b as E}from"./chunk-WVDTHFGS.js";import{b as y}from"./chunk-3ZWDIEEM.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as R}from"react/jsx-runtime";function A({onSubmit:S,onSuccess:d,onError:o,render:u,...r}){let{components:I}=y(),{onboardingBag:t,setCreditScore:c}=g(),n=f(),i=w(),{mutateAsync:b}=m(n),{mutateAsync:_}=m(i),l=a(async()=>{try{if(await S?.(),t.creditRiskStatus==="deposit_required"&&t.employmentId&&t.employment?.status&&!t.isEmploymentReadOnly){let e=await _({employment_slug:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"created_awaiting_reserve"}),c?.(s=>({...s,showReserveInvoice:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}else if(t.employmentId){let e=await b({employment_id:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"invited"}),c?.(s=>({...s,showInviteSuccessful:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}}catch(e){o?.({error:e,rawError:e,fieldErrors:[]})}},"handleSubmit"),p=t.creditRiskStatus==="deposit_required"&&t.employment?.status&&!t.isEmploymentReadOnly,v=I?.button;return v?R(v,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:e=>{l(),r.onClick?.(e)},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})}):R(E,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:()=>{l()},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})})}a(A,"OnboardingInvite");export{A as a};
2
- //# sourceMappingURL=chunk-L3D2AK3X.js.map
1
+ import{b as g}from"./chunk-PGWKJ6FK.js";import{d as f,e as w}from"./chunk-2S376WY7.js";import{a as m}from"./chunk-2YTBWEC7.js";import{b as y}from"./chunk-3ZWDIEEM.js";import{b as E}from"./chunk-WVDTHFGS.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as R}from"react/jsx-runtime";function A({onSubmit:S,onSuccess:d,onError:o,render:u,...r}){let{components:I}=y(),{onboardingBag:t,setCreditScore:c}=g(),n=f(),i=w(),{mutateAsync:b}=m(n),{mutateAsync:_}=m(i),l=a(async()=>{try{if(await S?.(),t.creditRiskStatus==="deposit_required"&&t.employmentId&&t.employment?.status&&!t.isEmploymentReadOnly){let e=await _({employment_slug:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"created_awaiting_reserve"}),c?.(s=>({...s,showReserveInvoice:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}else if(t.employmentId){let e=await b({employment_id:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"invited"}),c?.(s=>({...s,showInviteSuccessful:!0})),t.refetchEmployment();return}e.error&&o?.({error:e.error,rawError:e.rawError,fieldErrors:[]})}}catch(e){o?.({error:e,rawError:e,fieldErrors:[]})}},"handleSubmit"),p=t.creditRiskStatus==="deposit_required"&&t.employment?.status&&!t.isEmploymentReadOnly,v=I?.button;return v?R(v,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:e=>{l(),r.onClick?.(e)},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})}):R(E,{...r,disabled:n.isPending||i.isPending||r.disabled,onClick:()=>{l()},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})})}a(A,"OnboardingInvite");export{A as a};
2
+ //# sourceMappingURL=chunk-LDZWM4VX.js.map
@@ -1,2 +1,2 @@
1
- import{b as y}from"./chunk-PGWKJ6FK.js";import{b as c}from"./chunk-5P7INAU2.js";import{a as F}from"./chunk-WJ6YJFD4.js";import{b as u}from"./chunk-2YTBWEC7.js";import{f,g as p}from"./chunk-CNDSIADP.js";import{a as m}from"./chunk-P37U34EQ.js";import{useEffect as S}from"react";import{jsx as b}from"react/jsx-runtime";import{createElement as V}from"react";function U({defaultValues:d,onSubmit:g,components:E}){let{formId:k,onboardingBag:o}=y(),w=c(o.handleValidation),r=f({resolver:w,defaultValues:d,shouldUnregister:!1,mode:"onBlur"});S(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]),S(()=>{let t=r?.watch(e=>{Object.keys(e).some(i=>e[i]!==d[i])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let h=m(async(t,e)=>{let s=e?.nativeEvent;if(s?.isDraftSubmission){let{onSuccess:i,onError:l}=s.draftCallbacks;try{if(!await r.trigger())return;let n=await o.onSubmit(t);if(n?.data)i?.();else if(n?.error){let B=o.stepState.currentStep.name,P=o.meta?.fields?.[B],O=u(n?.fieldErrors||[],P);l?.({error:n.error,rawError:n.rawError,fieldErrors:O})}}catch(a){l?.({error:a,rawError:a,fieldErrors:[]})}}else g(t)},"handleSubmit");return V(p,{...r,key:`form-${o.stepState.currentStep.name}`},b("form",{id:k,onSubmit:r.handleSubmit(h),className:"space-y-4 RemoteFlows__OnboardingForm",children:b(F,{components:E,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})}))}m(U,"OnboardingForm");export{U as a};
2
- //# sourceMappingURL=chunk-HZDCZFR5.js.map
1
+ import{b as y}from"./chunk-PGWKJ6FK.js";import{a as F}from"./chunk-HBYHRMST.js";import{b as c}from"./chunk-3UM34N4C.js";import{b as u}from"./chunk-2YTBWEC7.js";import{f,g as p}from"./chunk-CNDSIADP.js";import{a as m}from"./chunk-P37U34EQ.js";import{useEffect as S}from"react";import{jsx as b}from"react/jsx-runtime";import{createElement as V}from"react";function U({defaultValues:d,onSubmit:g,components:E}){let{formId:k,onboardingBag:o}=y(),w=c(o.handleValidation),r=f({resolver:w,defaultValues:d,shouldUnregister:!1,mode:"onBlur"});S(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]),S(()=>{let t=r?.watch(e=>{Object.keys(e).some(i=>e[i]!==d[i])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let h=m(async(t,e)=>{let s=e?.nativeEvent;if(s?.isDraftSubmission){let{onSuccess:i,onError:l}=s.draftCallbacks;try{if(!await r.trigger())return;let n=await o.onSubmit(t);if(n?.data)i?.();else if(n?.error){let B=o.stepState.currentStep.name,P=o.meta?.fields?.[B],O=u(n?.fieldErrors||[],P);l?.({error:n.error,rawError:n.rawError,fieldErrors:O})}}catch(a){l?.({error:a,rawError:a,fieldErrors:[]})}}else g(t)},"handleSubmit");return V(p,{...r,key:`form-${o.stepState.currentStep.name}`},b("form",{id:k,onSubmit:r.handleSubmit(h),className:"space-y-4 RemoteFlows__OnboardingForm",children:b(F,{components:E,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})}))}m(U,"OnboardingForm");export{U as a};
2
+ //# sourceMappingURL=chunk-LIF7X2AH.js.map
@@ -1,2 +1,2 @@
1
- import{b as e}from"./chunk-MZB24YJP.js";import{a as n}from"./chunk-P37U34EQ.js";import{jsx as o,jsxs as t}from"react/jsx-runtime";var a=n(({involuntaryOffboardingServiceChargeZendeskId:r,reconciliationInvoiceZendeskId:i})=>t("p",{className:"RemoteFlows__AcknowledgeInformationFees text-xs text-[#71717A]",children:["You'll receive an"," ",o(e,{zendeskId:r,className:"align-baseline",children:"involuntary offboarding service charge \u2197"})," ","on your"," ",o(e,{zendeskId:i,children:"reconciliation invoice \u2197"})]}),"AcknowledgeInformationFees");export{a};
2
- //# sourceMappingURL=chunk-5AG4K2EA.js.map
1
+ import{b as e}from"./chunk-FIXHXJGN.js";import{a as n}from"./chunk-P37U34EQ.js";import{jsx as o,jsxs as t}from"react/jsx-runtime";var a=n(({involuntaryOffboardingServiceChargeZendeskId:r,reconciliationInvoiceZendeskId:i})=>t("p",{className:"RemoteFlows__AcknowledgeInformationFees text-xs text-[#71717A]",children:["You'll receive an"," ",o(e,{zendeskId:r,className:"align-baseline",children:"involuntary offboarding service charge \u2197"})," ","on your"," ",o(e,{zendeskId:i,children:"reconciliation invoice \u2197"})]}),"AcknowledgeInformationFees");export{a};
2
+ //# sourceMappingURL=chunk-LLJWEHDJ.js.map
@@ -1,2 +1,2 @@
1
- import{a as b}from"./chunk-2W2XD7ZY.js";import{b as P}from"./chunk-TOA3JILU.js";import{b as g}from"./chunk-2YTBWEC7.js";import{b as m}from"./chunk-WVDTHFGS.js";import{a}from"./chunk-P37U34EQ.js";import{useState as f,useMemo as S}from"react";import{Document as k,Page as C,pdfjs as x}from"react-pdf";import{jsx as r,jsxs as i}from"react/jsx-runtime";x.GlobalWorkerOptions.workerSrc=`//unpkg.com/pdfjs-dist@${x.version}/build/pdf.worker.min.mjs`;function N({base64Data:c,fileName:l="document.pdf"}){let[n,t]=f(0),[s,u]=f(1),[p,o]=f(!0),[d,w]=f(""),v=S(()=>{if(!c)return"";let e=c.trim();return e.startsWith("data:application/pdf;base64,")||e.startsWith("data:")?e:`data:application/pdf;base64,${e}`},[c]),h=a(({numPages:e})=>{t(e),o(!1),w("")},"onDocumentLoadSuccess"),y=a(e=>{console.error("Error loading PDF:",e),w("Failed to load PDF document"),o(!1)},"onDocumentLoadError"),E=a(()=>{u(e=>Math.max(1,e-1))},"goToPrevPage"),D=a(()=>{u(e=>Math.min(n,e+1))},"goToNextPage");return v?i("div",{className:"w-full space-y-4",children:[i("div",{children:[i("div",{className:"flex justify-center items-center min-h-[600px] p-4 bg-gray-50",children:[p&&i("div",{className:"text-center",children:[r("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-gray-900 mx-auto mb-4"}),r("p",{className:"text-gray-600",children:"Loading PDF..."})]}),d&&i("div",{className:"text-center space-y-4",children:[r("p",{className:"text-red-600",children:d}),r(m,{asChild:!0,children:r("a",{href:v,download:l,children:"Download PDF Instead"})})]}),!d&&r(k,{file:v,onLoadSuccess:h,onLoadError:y,loading:"",className:"flex flex-col items-center",children:r(C,{pageNumber:s,renderTextLayer:!0,renderAnnotationLayer:!0,className:"shadow-lg",width:Math.min(window.innerWidth-100,800)})})]}),n>0&&!d&&r("div",{className:"border-t bg-white px-4 py-3",children:i("div",{className:"flex items-center justify-between",children:[r(m,{onClick:E,disabled:s<=1,variant:"outline",size:"sm",children:"\u2190 Previous"}),i("div",{className:"text-sm text-gray-600",children:["Page ",s," of ",n]}),r(m,{onClick:D,disabled:s>=n,variant:"outline",size:"sm",children:"Next \u2192"})]})})]}),i("div",{className:"flex justify-between items-center text-sm",children:[r("p",{className:"text-gray-600",children:l}),r(m,{variant:"link",size:"link",asChild:!0,children:i("a",{href:v,download:l,className:"flex items-center gap-1",children:[r("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})}),"Download PDF"]})})]})]}):r("div",{className:"w-full border rounded p-8 text-center bg-gray-50",children:r("p",{className:"text-gray-500",children:"No PDF data available"})})}a(N,"PDFPreview");import{jsx as F,jsxs as L}from"react/jsx-runtime";function I({onSubmit:c,onSuccess:l,onError:n}){let{contractorOnboardingBag:t}=P(),s=a(async p=>{try{await c?.(t.parseFormValues(p));let o=await t.onSubmit(p);if(o?.data){await l?.(o?.data),t?.next();return}if(o?.error){let d=g(o?.fieldErrors||[],t.meta?.fields?.contract_preview);n?.({error:o?.error,rawError:o?.rawError,fieldErrors:d})}}catch(o){n?.({error:o,rawError:o,fieldErrors:[]})}},"handleSubmit"),u=t.stepState.values?.contract_preview||t.initialValues.contract_preview;return L("div",{className:"space-y-4",children:[F(N,{base64Data:t.documentPreviewPdf?.contract_document.content}),F(b,{defaultValues:u,onSubmit:s})]})}a(I,"ContractPreviewStep");export{I as a};
2
- //# sourceMappingURL=chunk-TWVFLXVF.js.map
1
+ import{a as b}from"./chunk-5BY7HOJB.js";import{b as P}from"./chunk-TOA3JILU.js";import{b as g}from"./chunk-2YTBWEC7.js";import{b as m}from"./chunk-WVDTHFGS.js";import{a}from"./chunk-P37U34EQ.js";import{useState as w,useMemo as S}from"react";import{Document as k,Page as C,pdfjs as x}from"react-pdf";import{jsx as r,jsxs as i}from"react/jsx-runtime";x.GlobalWorkerOptions.workerSrc=`//unpkg.com/pdfjs-dist@${x.version}/build/pdf.worker.min.mjs`;function N({base64Data:c,fileName:l="document.pdf"}){let[n,t]=w(0),[d,u]=w(1),[p,s]=w(!0),[o,v]=w(""),f=S(()=>{if(!c)return"";let e=c.trim();return e.startsWith("data:application/pdf;base64,")||e.startsWith("data:")?e:`data:application/pdf;base64,${e}`},[c]),h=a(({numPages:e})=>{t(e),s(!1),v("")},"onDocumentLoadSuccess"),y=a(e=>{console.error("Error loading PDF:",e),v("Failed to load PDF document"),s(!1)},"onDocumentLoadError"),E=a(()=>{u(e=>Math.max(1,e-1))},"goToPrevPage"),D=a(()=>{u(e=>Math.min(n,e+1))},"goToNextPage");return f?i("div",{className:"w-full space-y-4",children:[i("div",{children:[i("div",{className:"flex justify-center items-center min-h-[600px] p-4 bg-gray-50",children:[p&&i("div",{className:"text-center",children:[r("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-gray-900 mx-auto mb-4"}),r("p",{className:"text-gray-600",children:"Loading PDF..."})]}),o&&i("div",{className:"text-center space-y-4",children:[r("p",{className:"text-red-600",children:o}),r(m,{asChild:!0,children:r("a",{href:f,download:l,children:"Download PDF Instead"})})]}),!o&&r(k,{file:f,onLoadSuccess:h,onLoadError:y,loading:"",className:"flex flex-col items-center",children:r(C,{pageNumber:d,renderTextLayer:!0,renderAnnotationLayer:!0,className:"shadow-lg",width:Math.min(window.innerWidth-100,800)})})]}),n>0&&!o&&r("div",{className:"border-t bg-white px-4 py-3",children:i("div",{className:"flex items-center justify-between",children:[r(m,{onClick:E,disabled:d<=1,variant:"outline",size:"sm",children:"\u2190 Previous"}),i("div",{className:"text-sm text-gray-600",children:["Page ",d," of ",n]}),r(m,{onClick:D,disabled:d>=n,variant:"outline",size:"sm",children:"Next \u2192"})]})})]}),i("div",{className:"flex justify-between items-center text-sm",children:[r("p",{className:"text-gray-600",children:l}),r(m,{variant:"link",size:"link",asChild:!0,children:i("a",{href:f,download:l,className:"flex items-center gap-1",children:[r("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:r("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})}),"Download PDF"]})})]})]}):r("div",{className:"w-full border rounded p-8 text-center bg-gray-50",children:r("p",{className:"text-gray-500",children:"No PDF data available"})})}a(N,"PDFPreview");import{jsx as F,jsxs as L}from"react/jsx-runtime";function I({onSubmit:c,onSuccess:l,onError:n}){let{contractorOnboardingBag:t}=P(),d=a(async p=>{try{let s=await t.parseFormValues(p);await c?.(s);let o=await t.onSubmit(p);if(o?.data){await l?.(o?.data),t?.next();return}if(o?.error){let v=g(o?.fieldErrors||[],t.meta?.fields?.contract_preview);n?.({error:o?.error,rawError:o?.rawError,fieldErrors:v})}}catch(s){n?.({error:s,rawError:s,fieldErrors:[]})}},"handleSubmit"),u=t.stepState.values?.contract_preview||t.initialValues.contract_preview;return L("div",{className:"space-y-4",children:[F(N,{base64Data:t.documentPreviewPdf?.contract_document.content}),F(b,{defaultValues:u,onSubmit:d})]})}a(I,"ContractPreviewStep");export{I as a};
2
+ //# sourceMappingURL=chunk-M37LWACT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/shared/pdf-preview/PdfPreview.tsx","../src/flows/ContractorOnboarding/components/ContractPreviewStep.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { Button } from '@/src/components/ui/button';\n\n// Configure the worker\npdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\ninterface PDFPreviewProps {\n base64Data: string;\n fileName?: string;\n}\n\nexport function PDFPreview({\n base64Data,\n fileName = 'document.pdf',\n}: PDFPreviewProps) {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [error, setError] = useState<string>('');\n\n const pdfDataUri = useMemo(() => {\n if (!base64Data) return '';\n\n const cleanedData = base64Data.trim();\n\n if (cleanedData.startsWith('data:application/pdf;base64,')) {\n return cleanedData;\n }\n\n if (cleanedData.startsWith('data:')) {\n return cleanedData;\n }\n\n return `data:application/pdf;base64,${cleanedData}`;\n }, [base64Data]);\n\n const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => {\n setNumPages(numPages);\n setIsLoading(false);\n setError('');\n };\n\n const onDocumentLoadError = (error: Error) => {\n console.error('Error loading PDF:', error);\n setError('Failed to load PDF document');\n setIsLoading(false);\n };\n\n const goToPrevPage = () => {\n setPageNumber((prev) => Math.max(1, prev - 1));\n };\n\n const goToNextPage = () => {\n setPageNumber((prev) => Math.min(numPages, prev + 1));\n };\n\n if (!pdfDataUri) {\n return (\n <div className='w-full border rounded p-8 text-center bg-gray-50'>\n <p className='text-gray-500'>No PDF data available</p>\n </div>\n );\n }\n\n return (\n <div className='w-full space-y-4'>\n <div>\n {/* PDF Viewer */}\n <div className='flex justify-center items-center min-h-[600px] p-4 bg-gray-50'>\n {isLoading && (\n <div className='text-center'>\n <div className='animate-spin rounded-full h-12 w-12 border-b-2 border-gray-900 mx-auto mb-4'></div>\n <p className='text-gray-600'>Loading PDF...</p>\n </div>\n )}\n\n {error && (\n <div className='text-center space-y-4'>\n <p className='text-red-600'>{error}</p>\n <Button asChild>\n <a href={pdfDataUri} download={fileName}>\n Download PDF Instead\n </a>\n </Button>\n </div>\n )}\n\n {!error && (\n <Document\n file={pdfDataUri}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=''\n className='flex flex-col items-center'\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className='shadow-lg'\n width={Math.min(window.innerWidth - 100, 800)}\n />\n </Document>\n )}\n </div>\n\n {/* Navigation Controls */}\n {numPages > 0 && !error && (\n <div className='border-t bg-white px-4 py-3'>\n <div className='flex items-center justify-between'>\n <Button\n onClick={goToPrevPage}\n disabled={pageNumber <= 1}\n variant='outline'\n size='sm'\n >\n ← Previous\n </Button>\n\n <div className='text-sm text-gray-600'>\n Page {pageNumber} of {numPages}\n </div>\n\n <Button\n onClick={goToNextPage}\n disabled={pageNumber >= numPages}\n variant='outline'\n size='sm'\n >\n Next →\n </Button>\n </div>\n </div>\n )}\n </div>\n\n {/* Download Link */}\n <div className='flex justify-between items-center text-sm'>\n <p className='text-gray-600'>{fileName}</p>\n <Button variant='link' size='link' asChild>\n <a\n href={pdfDataUri}\n download={fileName}\n className='flex items-center gap-1'\n >\n <svg\n className='w-4 h-4'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4'\n />\n </svg>\n Download PDF\n </a>\n </Button>\n </div>\n </div>\n );\n}\n","import { useContractorOnboardingContext } from '@/src/flows/ContractorOnboarding/context';\nimport { PDFPreview } from '@/src/components/shared/pdf-preview/PdfPreview';\nimport { ContractorOnboardingForm } from '@/src/flows/ContractorOnboarding/components/ContractorOnboardingForm';\nimport {\n NormalizedFieldError,\n normalizeFieldErrors,\n} from '@/src/lib/mutations';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n ContractPreviewFormPayload,\n ContractPreviewResponse,\n} from '@/src/flows/ContractorOnboarding/types';\n\ntype ContractPreviewStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: ContractPreviewFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: ContractPreviewResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function ContractPreviewStep({\n onSubmit,\n onSuccess,\n onError,\n}: ContractPreviewStepProps) {\n const { contractorOnboardingBag } = useContractorOnboardingContext();\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n await onSubmit?.(\n contractorOnboardingBag.parseFormValues(payload) as $TSFixMe, // TODO: add type\n );\n const response = await contractorOnboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as $TSFixMe); // TODO: add type\n contractorOnboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n contractorOnboardingBag.meta?.fields?.contract_preview,\n );\n\n onError?.({\n error: response?.error,\n rawError: response?.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const initialValues =\n contractorOnboardingBag.stepState.values?.contract_preview ||\n contractorOnboardingBag.initialValues.contract_preview;\n\n return (\n <div className='space-y-4'>\n <PDFPreview\n base64Data={\n contractorOnboardingBag.documentPreviewPdf?.contract_document\n .content as unknown as string\n }\n />\n <ContractorOnboardingForm\n defaultValues={initialValues}\n onSubmit={handleSubmit}\n />\n </div>\n );\n}\n"],"mappings":"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","names":["useState","useMemo","Document","Page","pdfjs","jsx","jsxs","pdfjs","PDFPreview","base64Data","fileName","numPages","setNumPages","useState","pageNumber","setPageNumber","isLoading","setIsLoading","error","setError","pdfDataUri","useMemo","cleanedData","onDocumentLoadSuccess","__name","onDocumentLoadError","goToPrevPage","prev","goToNextPage","Button","Document","Page","jsx","jsxs","ContractPreviewStep","onSubmit","onSuccess","onError","contractorOnboardingBag","useContractorOnboardingContext","handleSubmit","__name","payload","response","normalizedFieldErrors","normalizeFieldErrors","error","initialValues","PDFPreview","ContractorOnboardingForm"]}
1
+ {"version":3,"sources":["../src/components/shared/pdf-preview/PdfPreview.tsx","../src/flows/ContractorOnboarding/components/ContractPreviewStep.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { Button } from '@/src/components/ui/button';\n\n// Configure the worker\npdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\ninterface PDFPreviewProps {\n base64Data: string;\n fileName?: string;\n}\n\nexport function PDFPreview({\n base64Data,\n fileName = 'document.pdf',\n}: PDFPreviewProps) {\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState<number>(1);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [error, setError] = useState<string>('');\n\n const pdfDataUri = useMemo(() => {\n if (!base64Data) return '';\n\n const cleanedData = base64Data.trim();\n\n if (cleanedData.startsWith('data:application/pdf;base64,')) {\n return cleanedData;\n }\n\n if (cleanedData.startsWith('data:')) {\n return cleanedData;\n }\n\n return `data:application/pdf;base64,${cleanedData}`;\n }, [base64Data]);\n\n const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => {\n setNumPages(numPages);\n setIsLoading(false);\n setError('');\n };\n\n const onDocumentLoadError = (error: Error) => {\n console.error('Error loading PDF:', error);\n setError('Failed to load PDF document');\n setIsLoading(false);\n };\n\n const goToPrevPage = () => {\n setPageNumber((prev) => Math.max(1, prev - 1));\n };\n\n const goToNextPage = () => {\n setPageNumber((prev) => Math.min(numPages, prev + 1));\n };\n\n if (!pdfDataUri) {\n return (\n <div className='w-full border rounded p-8 text-center bg-gray-50'>\n <p className='text-gray-500'>No PDF data available</p>\n </div>\n );\n }\n\n return (\n <div className='w-full space-y-4'>\n <div>\n {/* PDF Viewer */}\n <div className='flex justify-center items-center min-h-[600px] p-4 bg-gray-50'>\n {isLoading && (\n <div className='text-center'>\n <div className='animate-spin rounded-full h-12 w-12 border-b-2 border-gray-900 mx-auto mb-4'></div>\n <p className='text-gray-600'>Loading PDF...</p>\n </div>\n )}\n\n {error && (\n <div className='text-center space-y-4'>\n <p className='text-red-600'>{error}</p>\n <Button asChild>\n <a href={pdfDataUri} download={fileName}>\n Download PDF Instead\n </a>\n </Button>\n </div>\n )}\n\n {!error && (\n <Document\n file={pdfDataUri}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n loading=''\n className='flex flex-col items-center'\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n className='shadow-lg'\n width={Math.min(window.innerWidth - 100, 800)}\n />\n </Document>\n )}\n </div>\n\n {/* Navigation Controls */}\n {numPages > 0 && !error && (\n <div className='border-t bg-white px-4 py-3'>\n <div className='flex items-center justify-between'>\n <Button\n onClick={goToPrevPage}\n disabled={pageNumber <= 1}\n variant='outline'\n size='sm'\n >\n ← Previous\n </Button>\n\n <div className='text-sm text-gray-600'>\n Page {pageNumber} of {numPages}\n </div>\n\n <Button\n onClick={goToNextPage}\n disabled={pageNumber >= numPages}\n variant='outline'\n size='sm'\n >\n Next →\n </Button>\n </div>\n </div>\n )}\n </div>\n\n {/* Download Link */}\n <div className='flex justify-between items-center text-sm'>\n <p className='text-gray-600'>{fileName}</p>\n <Button variant='link' size='link' asChild>\n <a\n href={pdfDataUri}\n download={fileName}\n className='flex items-center gap-1'\n >\n <svg\n className='w-4 h-4'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4'\n />\n </svg>\n Download PDF\n </a>\n </Button>\n </div>\n </div>\n );\n}\n","import { useContractorOnboardingContext } from '@/src/flows/ContractorOnboarding/context';\nimport { PDFPreview } from '@/src/components/shared/pdf-preview/PdfPreview';\nimport { ContractorOnboardingForm } from '@/src/flows/ContractorOnboarding/components/ContractorOnboardingForm';\nimport {\n NormalizedFieldError,\n normalizeFieldErrors,\n} from '@/src/lib/mutations';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n ContractPreviewFormPayload,\n ContractPreviewResponse,\n} from '@/src/flows/ContractorOnboarding/types';\n\ntype ContractPreviewStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: ContractPreviewFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: ContractPreviewResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function ContractPreviewStep({\n onSubmit,\n onSuccess,\n onError,\n}: ContractPreviewStepProps) {\n const { contractorOnboardingBag } = useContractorOnboardingContext();\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n const parsedValues =\n await contractorOnboardingBag.parseFormValues(payload);\n await onSubmit?.(parsedValues as $TSFixMe);\n const response = await contractorOnboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as $TSFixMe); // TODO: add type\n contractorOnboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n contractorOnboardingBag.meta?.fields?.contract_preview,\n );\n\n onError?.({\n error: response?.error,\n rawError: response?.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const initialValues =\n contractorOnboardingBag.stepState.values?.contract_preview ||\n contractorOnboardingBag.initialValues.contract_preview;\n\n return (\n <div className='space-y-4'>\n <PDFPreview\n base64Data={\n contractorOnboardingBag.documentPreviewPdf?.contract_document\n .content as unknown as string\n }\n />\n <ContractorOnboardingForm\n defaultValues={initialValues}\n onSubmit={handleSubmit}\n />\n </div>\n );\n}\n"],"mappings":"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","names":["useState","useMemo","Document","Page","pdfjs","jsx","jsxs","pdfjs","PDFPreview","base64Data","fileName","numPages","setNumPages","useState","pageNumber","setPageNumber","isLoading","setIsLoading","error","setError","pdfDataUri","useMemo","cleanedData","onDocumentLoadSuccess","__name","onDocumentLoadError","goToPrevPage","prev","goToNextPage","Button","Document","Page","jsx","jsxs","ContractPreviewStep","onSubmit","onSuccess","onError","contractorOnboardingBag","useContractorOnboardingContext","handleSubmit","__name","payload","parsedValues","response","normalizedFieldErrors","normalizeFieldErrors","error","initialValues","PDFPreview","ContractorOnboardingForm"]}
@@ -1,2 +1,2 @@
1
- import{a as m,b as s}from"./chunk-U4JVXNOG.js";import{c as t,d as i}from"./chunk-A477TZFC.js";import{a as o}from"./chunk-P37U34EQ.js";import{useState as T}from"react";var k=o(({proposedTerminationDate:e,employeeName:f,employmentId:a,employment:r,render:y})=>{let[n,d]=T(!1),u=i({employmentId:a}),l=new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}),c=t({employmentId:a,options:{enabled:n}}),p=m({employmentId:a,date:e}),D=s({employmentId:a,proposedTerminationDate:e,employment:r});return y({leavePoliciesSummaryQuery:u,timeoffQuery:c||{data:{bookedDays:0,timeoffs:[]}},bookedTimeBeforeAndAfterTerminationQuery:p,formattedProposedTerminationDate:l,employeeName:f,proposedTerminationDate:e,summaryData:D??{data:{entitledDays:"0 days",bookedDays:"0 days",usedDays:"0 days",approvedDaysBeforeTermination:"0 days",approvedDaysAfterTermination:"0 days",remainingDays:"0 days",isUnlimitedPto:!1},isLoading:!1,isError:!1,error:null},employment:r,open:n,onOpenChange:o(()=>{d(P=>!P)},"onOpenChange")})},"PaidTimeOffContainer");export{k as a};
2
- //# sourceMappingURL=chunk-IUEXOXFA.js.map
1
+ import{a as m,b as s}from"./chunk-ORIJ6E2J.js";import{c as t,d as i}from"./chunk-A477TZFC.js";import{a as o}from"./chunk-P37U34EQ.js";import{useState as T}from"react";var k=o(({proposedTerminationDate:e,employeeName:f,employmentId:a,employment:r,render:y})=>{let[n,d]=T(!1),u=i({employmentId:a}),l=new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}),c=t({employmentId:a,options:{enabled:n}}),p=m({employmentId:a,date:e}),D=s({employmentId:a,proposedTerminationDate:e,employment:r});return y({leavePoliciesSummaryQuery:u,timeoffQuery:c||{data:{bookedDays:0,timeoffs:[]}},bookedTimeBeforeAndAfterTerminationQuery:p,formattedProposedTerminationDate:l,employeeName:f,proposedTerminationDate:e,summaryData:D??{data:{entitledDays:"0 days",bookedDays:"0 days",usedDays:"0 days",approvedDaysBeforeTermination:"0 days",approvedDaysAfterTermination:"0 days",remainingDays:"0 days",isUnlimitedPto:!1},isLoading:!1,isError:!1,error:null},employment:r,open:n,onOpenChange:o(()=>{d(P=>!P)},"onOpenChange")})},"PaidTimeOffContainer");export{k as a};
2
+ //# sourceMappingURL=chunk-M3EBUSNT.js.map
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./chunk-3XOHQ7Y7.js";import{b as a}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as m}from"react/jsx-runtime";function p({onSubmit:n}){let{terminationBag:i}=a();return m(t,{onSubmit:o(async e=>{let r=await i?.parseFormValues(e);await n?.(r),i?.next()},"handleSubmit")})}o(p,"TerminationDetailsForm");export{p as a};
2
+ //# sourceMappingURL=chunk-M5WQNNAT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/Termination/TerminationDetailsForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport {\n TerminationDetailsFormValues,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype TerminationDetailsFormProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: TerminationDetailsFormValues) => void | Promise<void>;\n};\n\nexport function TerminationDetailsForm({\n onSubmit,\n}: TerminationDetailsFormProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n await onSubmit?.(\n terminationBag?.parseFormValues(values) as TerminationDetailsFormValues,\n );\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHAyBS,cAAAA,MAAA,oBAXF,SAASC,EAAuB,CACrC,SAAAC,CACF,EAAgC,CAC9B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAQjD,OAAOJ,EAACK,EAAA,CAAgB,SAPHC,EAAA,MAAOC,GAAkC,CAC5D,MAAML,IACJC,GAAgB,gBAAgBI,CAAM,CACxC,EACAJ,GAAgB,KAAK,CACvB,EALqB,gBAO2B,CAClD,CAZgBG,EAAAL,EAAA","names":["jsx","TerminationDetailsForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values"]}
1
+ {"version":3,"sources":["../src/flows/Termination/TerminationDetailsForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport {\n TerminationDetailsFormValues,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype TerminationDetailsFormProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: TerminationDetailsFormValues) => void | Promise<void>;\n};\n\nexport function TerminationDetailsForm({\n onSubmit,\n}: TerminationDetailsFormProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n const parsedValues = await terminationBag?.parseFormValues(values);\n await onSubmit?.(parsedValues as TerminationDetailsFormValues);\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHAwBS,cAAAA,MAAA,oBAVF,SAASC,EAAuB,CACrC,SAAAC,CACF,EAAgC,CAC9B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAOjD,OAAOJ,EAACK,EAAA,CAAgB,SANHC,EAAA,MAAOC,GAAkC,CAC5D,IAAMC,EAAe,MAAML,GAAgB,gBAAgBI,CAAM,EACjE,MAAML,IAAWM,CAA4C,EAC7DL,GAAgB,KAAK,CACvB,EAJqB,gBAM2B,CAClD,CAXgBG,EAAAL,EAAA","names":["jsx","TerminationDetailsForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values","parsedValues"]}
@@ -1,2 +1,2 @@
1
- import{a as i}from"./chunk-43WMZDDH.js";import{a as s}from"./chunk-P37U34EQ.js";import*as n from"react";import{Drawer as r}from"vaul";import{jsx as a,jsxs as l}from"react/jsx-runtime";var d=s(({shouldScaleBackground:e=!0,...t})=>a(r.Root,{shouldScaleBackground:e,...t}),"Drawer");d.displayName="Drawer";var N=r.Trigger,f=r.Portal,P=r.Close,m=n.forwardRef(({className:e,...t},o)=>a(r.Overlay,{ref:o,className:i("fixed inset-0 z-50 bg-black/80",e),...t}));m.displayName=r.Overlay.displayName;var D=n.forwardRef(({className:e,children:t,showHandle:o=!0,...c},p)=>l(f,{children:[a(m,{}),l(r.Content,{ref:p,className:i("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",e),...c,children:[o&&a("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),t]})]}));D.displayName="DrawerContent";var w=s(({className:e,...t})=>a("div",{className:i("grid gap-1.5 p-4 text-center sm:text-left",e),...t}),"DrawerHeader");w.displayName="DrawerHeader";var R=s(({className:e,...t})=>a("div",{className:i("mt-auto flex flex-col gap-2 p-4",e),...t}),"DrawerFooter");R.displayName="DrawerFooter";var u=n.forwardRef(({className:e,...t},o)=>a(r.Title,{ref:o,className:i("text-lg font-semibold leading-none tracking-tight",e),...t}));u.displayName=r.Title.displayName;var g=n.forwardRef(({className:e,...t},o)=>a(r.Description,{ref:o,className:i("text-sm text-muted-foreground",e),...t}));g.displayName=r.Description.displayName;export{d as a,N as b,P as c,D as d,w as e,u as f,g};
2
- //# sourceMappingURL=chunk-TWIUL2P3.js.map
1
+ import{a as i}from"./chunk-43WMZDDH.js";import{a as s}from"./chunk-P37U34EQ.js";import*as n from"react";import{Drawer as r}from"vaul";import{jsx as a,jsxs as l}from"react/jsx-runtime";var d=s(({shouldScaleBackground:e=!0,...t})=>a(r.Root,{shouldScaleBackground:e,...t}),"Drawer");d.displayName="Drawer";var N=r.Trigger,f=r.Portal,P=r.Close,m=n.forwardRef(({className:e,...t},o)=>a(r.Overlay,{ref:o,className:i("fixed inset-0 z-50 bg-black/80",e),...t}));m.displayName=r.Overlay.displayName;var D=n.forwardRef(({className:e,children:t,showHandle:o=!0,...c},p)=>l(f,{children:[a(m,{}),l(r.Content,{ref:p,className:i("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",e),...c,children:[o&&a("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),t]})]}));D.displayName="DrawerContent";var w=s(({className:e,...t})=>a("div",{className:i("grid gap-1.5 p-4 text-center sm:text-left",e),...t}),"DrawerHeader");w.displayName="DrawerHeader";var R=s(({className:e,...t})=>a("div",{className:i("mt-auto flex flex-col gap-2 p-4",e),...t}),"DrawerFooter");R.displayName="DrawerFooter";var u=n.forwardRef(({className:e,...t},o)=>a(r.Title,{ref:o,className:i("text-lg font-semibold leading-none tracking-tight",e),...t}));u.displayName=r.Title.displayName;var g=n.forwardRef(({className:e,...t},o)=>a(r.Description,{ref:o,className:i("text-sm text-muted-foreground",e),...t}));g.displayName=r.Description.displayName;export{d as a,N as b,D as c,w as d,u as e,g as f};
2
+ //# sourceMappingURL=chunk-MOG7GUQB.js.map
@@ -1,2 +1,2 @@
1
- import{b as l}from"./chunk-KSHK3ZPX.js";import{b as C}from"./chunk-WVDTHFGS.js";import{b as i}from"./chunk-3ZWDIEEM.js";import{a as c}from"./chunk-43WMZDDH.js";import{a as u}from"./chunk-P37U34EQ.js";import{jsx as a}from"react/jsx-runtime";function R({children:e,...t}){let{form:r,formId:n,costCalculatorBag:s}=l(),{components:f}=i(),m=f?.button;return m?a(m,{...t,type:"reset",form:n,onClick:o=>{s?.resetForm(),r.reset(),t.onClick?.(o)},children:e}):a(C,{...t,type:"reset",className:c("RemoteFlows__CostCalculatorForm__ResetButton",t.className),form:n,onClick:o=>{s?.resetForm(),r.reset(),t.onClick?.(o)},children:e})}u(R,"CostCalculatorResetButton");export{R as a};
2
- //# sourceMappingURL=chunk-ANGJCT4I.js.map
1
+ import{b as l}from"./chunk-KSHK3ZPX.js";import{b as i}from"./chunk-3ZWDIEEM.js";import{b as C}from"./chunk-WVDTHFGS.js";import{a as c}from"./chunk-43WMZDDH.js";import{a as u}from"./chunk-P37U34EQ.js";import{jsx as a}from"react/jsx-runtime";function R({children:e,...t}){let{form:r,formId:n,costCalculatorBag:s}=l(),{components:f}=i(),m=f?.button;return m?a(m,{...t,type:"reset",form:n,onClick:o=>{s?.resetForm(),r.reset(),t.onClick?.(o)},children:e}):a(C,{...t,type:"reset",className:c("RemoteFlows__CostCalculatorForm__ResetButton",t.className),form:n,onClick:o=>{s?.resetForm(),r.reset(),t.onClick?.(o)},children:e})}u(R,"CostCalculatorResetButton");export{R as a};
2
+ //# sourceMappingURL=chunk-MPV22ALR.js.map
@@ -1,2 +1,2 @@
1
- import{a as h}from"./chunk-OKM7DRCF.js";import{a as g}from"./chunk-XFD3ULUF.js";import{a as m,b as d,c as T,d as b}from"./chunk-DFJNVGK4.js";import{b as p,d as D}from"./chunk-A477TZFC.js";import{b as y}from"./chunk-AA7QB3QQ.js";import{d as c}from"./chunk-3ZWDIEEM.js";import{a as s}from"./chunk-P37U34EQ.js";import{createHeadlessForm as E,modify as C}from"@remoteoss/json-schema-form";import{useMutation as O,useQuery as P}from"@tanstack/react-query";function V(o){return Object.entries(o).reduce((t,[a,r])=>({...t,[a]:T(r)}),{})}s(V,"formatTimeoffValues");function x(o){let t=o?.contract_details?.available_pto,a=o?.contract_details?.available_pto_type;return o?.country?.code==="USA"&&a==="unlimited"?{value:t===0?20:t}:a==="unlimited"&&t>0?{value:t}:{value:t}}s(x,"getMinimumStatutoryDays");function F(o,t){let a=0,r=0;return o.forEach(e=>{e.timeoff_days?.forEach(n=>{new Date(n.day)<=t?a+=n.hours||0:r+=n.hours||0})}),{before:a,after:r}}s(F,"getAllTimeoffHoursBeforeDate");var Q=s(({employmentId:o,date:t,options:a})=>p({employmentId:o,timeoffType:"paid_time_off",status:"approved",options:{enabled:a?.enabled,select:s(r=>{let{before:e,after:n}=F(r?.data?.timeoffs||[],new Date(t));return{bookedDaysBeforeTermination:d(e),bookedDaysAfterTermination:d(n)}},"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery"),G=s(({employmentId:o,proposedTerminationDate:t,employment:a})=>{let{value:r=0}=x(a),e=D({employmentId:o}),n=Q({employmentId:o,date:t}),i=e.data?.data?.[0].annual_entitlement.type==="limited"?{days:e.data?.data?.[0].annual_entitlement.days,hours:e.data?.data?.[0].annual_entitlement.hours}:{days:r,hours:0},u={days:e.data?.data?.[0].booked.days||0,hours:e.data?.data?.[0].booked.hours||0},f=e.data?.data?.[0].current_entitlement.type==="limited"?{days:e.data?.data?.[0].current_entitlement.days||0,hours:e.data?.data?.[0].current_entitlement.hours||0}:{days:r,hours:0},l={days:e.data?.data?.[0].used.days||0,hours:e.data?.data?.[0].used.hours||0},v=n.data?.bookedDaysBeforeTermination||{days:0,hours:0},_=n.data?.bookedDaysAfterTermination||{days:0,hours:0},k=m(f.days,f.hours),A=m(l.days,l.hours),B=m(u.days,u.hours),H=k-A-B,S=b(d(H));return{data:{...V({entitledDays:i,bookedDays:u,usedDays:l,approvedDaysBeforeTermination:v,approvedDaysAfterTermination:_,remainingDays:S,currentEntitlementDays:f}),isUnlimitedPto:a?.contract_details?.available_pto_type==="unlimited"},isLoading:e.isLoading||n.isLoading,isError:e.isError||n.isError,error:e.error||n.error}},"useSummaryTimeOffDataQuery"),W=s(()=>{let{client:o}=c();return O({mutationFn:s(t=>y({client:o,body:t}),"mutationFn")})},"useCreateTermination"),X=s(({formValues:o,jsfModify:t,step:a})=>P({queryKey:["rmt-flows-termination-schema",a],queryFn:s(()=>h[a]??g,"queryFn"),select:s(({data:r})=>{let e=r?.schema||{};if(t){let{schema:i}=C(e,t);e=i}return E(e||{},{initialValues:o||{}})},"select")}),"useTerminationSchema");export{Q as a,G as b,W as c,X as d};
2
- //# sourceMappingURL=chunk-U4JVXNOG.js.map
1
+ import{a as h}from"./chunk-XOA7GG4P.js";import{a as g}from"./chunk-XFD3ULUF.js";import{a as m,b as d,c as T,d as b}from"./chunk-DFJNVGK4.js";import{b as p,d as D}from"./chunk-A477TZFC.js";import{b as y}from"./chunk-AA7QB3QQ.js";import{d as c}from"./chunk-3ZWDIEEM.js";import{a as s}from"./chunk-P37U34EQ.js";import{createHeadlessForm as E,modify as C}from"@remoteoss/json-schema-form";import{useMutation as O,useQuery as P}from"@tanstack/react-query";function V(o){return Object.entries(o).reduce((t,[a,r])=>({...t,[a]:T(r)}),{})}s(V,"formatTimeoffValues");function x(o){let t=o?.contract_details?.available_pto,a=o?.contract_details?.available_pto_type;return o?.country?.code==="USA"&&a==="unlimited"?{value:t===0?20:t}:a==="unlimited"&&t>0?{value:t}:{value:t}}s(x,"getMinimumStatutoryDays");function F(o,t){let a=0,r=0;return o.forEach(e=>{e.timeoff_days?.forEach(n=>{new Date(n.day)<=t?a+=n.hours||0:r+=n.hours||0})}),{before:a,after:r}}s(F,"getAllTimeoffHoursBeforeDate");var Q=s(({employmentId:o,date:t,options:a})=>p({employmentId:o,timeoffType:"paid_time_off",status:"approved",options:{enabled:a?.enabled,select:s(r=>{let{before:e,after:n}=F(r?.data?.timeoffs||[],new Date(t));return{bookedDaysBeforeTermination:d(e),bookedDaysAfterTermination:d(n)}},"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery"),G=s(({employmentId:o,proposedTerminationDate:t,employment:a})=>{let{value:r=0}=x(a),e=D({employmentId:o}),n=Q({employmentId:o,date:t}),i=e.data?.data?.[0].annual_entitlement.type==="limited"?{days:e.data?.data?.[0].annual_entitlement.days,hours:e.data?.data?.[0].annual_entitlement.hours}:{days:r,hours:0},u={days:e.data?.data?.[0].booked.days||0,hours:e.data?.data?.[0].booked.hours||0},f=e.data?.data?.[0].current_entitlement.type==="limited"?{days:e.data?.data?.[0].current_entitlement.days||0,hours:e.data?.data?.[0].current_entitlement.hours||0}:{days:r,hours:0},l={days:e.data?.data?.[0].used.days||0,hours:e.data?.data?.[0].used.hours||0},v=n.data?.bookedDaysBeforeTermination||{days:0,hours:0},_=n.data?.bookedDaysAfterTermination||{days:0,hours:0},k=m(f.days,f.hours),A=m(l.days,l.hours),B=m(u.days,u.hours),H=k-A-B,S=b(d(H));return{data:{...V({entitledDays:i,bookedDays:u,usedDays:l,approvedDaysBeforeTermination:v,approvedDaysAfterTermination:_,remainingDays:S,currentEntitlementDays:f}),isUnlimitedPto:a?.contract_details?.available_pto_type==="unlimited"},isLoading:e.isLoading||n.isLoading,isError:e.isError||n.isError,error:e.error||n.error}},"useSummaryTimeOffDataQuery"),W=s(()=>{let{client:o}=c();return O({mutationFn:s(t=>y({client:o,body:t}),"mutationFn")})},"useCreateTermination"),X=s(({formValues:o,jsfModify:t,step:a})=>P({queryKey:["rmt-flows-termination-schema",a],queryFn:s(()=>h[a]??g,"queryFn"),select:s(({data:r})=>{let e=r?.schema||{};if(t){let{schema:i}=C(e,t);e=i}return E(e||{},{initialValues:o||{}})},"select")}),"useTerminationSchema");export{Q as a,G as b,W as c,X as d};
2
+ //# sourceMappingURL=chunk-ORIJ6E2J.js.map
@@ -0,0 +1,2 @@
1
+ import{a as n}from"./chunk-3XOHQ7Y7.js";import{b as i}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as r}from"react/jsx-runtime";function p({onSubmit:e}){let{terminationBag:m}=i();return r(n,{onSubmit:o(async a=>{let t=await m?.parseFormValues(a);await e?.(t),m?.next()},"handleSubmit")})}o(p,"EmployeeCommunicationForm");export{p as a};
2
+ //# sourceMappingURL=chunk-OVTCRVTZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/Termination/EmployeeComunicationForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport {\n EmployeeCommunicationFormValues,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype EmployeeComunicationProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: EmployeeCommunicationFormValues) => void | Promise<void>;\n};\n\nexport function EmployeeCommunicationForm({\n onSubmit,\n}: EmployeeComunicationProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n await onSubmit?.(\n terminationBag?.parseFormValues(\n values,\n ) as EmployeeCommunicationFormValues,\n );\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHA2BS,cAAAA,MAAA,oBAbF,SAASC,EAA0B,CACxC,SAAAC,CACF,EAA8B,CAC5B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAUjD,OAAOJ,EAACK,EAAA,CAAgB,SATHC,EAAA,MAAOC,GAAkC,CAC5D,MAAML,IACJC,GAAgB,gBACdI,CACF,CACF,EACAJ,GAAgB,KAAK,CACvB,EAPqB,gBAS2B,CAClD,CAdgBG,EAAAL,EAAA","names":["jsx","EmployeeCommunicationForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values"]}
1
+ {"version":3,"sources":["../src/flows/Termination/EmployeeComunicationForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport {\n EmployeeCommunicationFormValues,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype EmployeeComunicationProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: EmployeeCommunicationFormValues) => void | Promise<void>;\n};\n\nexport function EmployeeCommunicationForm({\n onSubmit,\n}: EmployeeComunicationProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n const parsedValues = await terminationBag?.parseFormValues(values);\n await onSubmit?.(parsedValues as EmployeeCommunicationFormValues);\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHAwBS,cAAAA,MAAA,oBAVF,SAASC,EAA0B,CACxC,SAAAC,CACF,EAA8B,CAC5B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAOjD,OAAOJ,EAACK,EAAA,CAAgB,SANHC,EAAA,MAAOC,GAAkC,CAC5D,IAAMC,EAAe,MAAML,GAAgB,gBAAgBI,CAAM,EACjE,MAAML,IAAWM,CAA+C,EAChEL,GAAgB,KAAK,CACvB,EAJqB,gBAM2B,CAClD,CAXgBG,EAAAL,EAAA","names":["jsx","EmployeeCommunicationForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values","parsedValues"]}
@@ -1,2 +1,2 @@
1
- import{a as j}from"./chunk-AP56UUME.js";import{a as x}from"./chunk-R2MHAPWD.js";import{c as P}from"./chunk-3UDG4IJO.js";import{b as D}from"./chunk-Z5WMKCRJ.js";import{C as F,H as q,I as _,e as S,k as g,m as h}from"./chunk-AA7QB3QQ.js";import{d as s}from"./chunk-3ZWDIEEM.js";import{a as C}from"./chunk-WXUIXZ7P.js";import{b as O}from"./chunk-43WMZDDH.js";import{a as e}from"./chunk-P37U34EQ.js";import{createHeadlessForm as f,modify as M}from"@remoteoss/json-schema-form";import{useMutation as b,useQuery as y}from"@tanstack/react-query";var H=e(({fieldValues:n,options:o})=>y({queryKey:["contract-document-signature"],queryFn:e(async()=>f(x,{initialValues:n}),"queryFn"),enabled:o?.queryOptions?.enabled}),"useGetContractDocumentSignatureSchema"),z=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,contractDocumentId:t,payload:r})=>q({client:n,body:r,path:{employment_id:o,contract_document_id:t}}),"mutationFn")})},"useSignContractDocument"),A=e(({employmentId:n,contractDocumentId:o,options:t})=>{let{client:r}=s();return y({queryKey:["contract-document",n,o],queryFn:e(async()=>h({client:r,path:{employment_id:n,id:o}}),"queryFn"),enabled:t?.queryOptions?.enabled,select:e(({data:u})=>u?.data,"select")})},"useGetShowContractDocument"),V=e(({employmentId:n,options:o})=>{let{client:t}=s();return y({queryKey:["contractor-subscriptions",n],queryFn:e(async()=>g({client:t,path:{employment_id:n}}),"queryFn"),enabled:o?.queryOptions?.enabled,select:e(({data:r})=>r?.data,"select")})},"useGetContractorSubscriptions"),E=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,payload:t})=>_({client:n,body:t,path:{employment_id:o}}),"mutationFn")})},"usePostManageContractorSubscriptions"),N=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,payload:t})=>F({client:n,body:t,path:{employment_id:o}}),"mutationFn")})},"useCreateContractorContractDocument"),U=e(({countryCode:n,fieldValues:o,options:t})=>{let r=t?.jsonSchemaVersion?.contractor_contract_details_form_schema?{json_schema_version:t.jsonSchemaVersion.contractor_contract_details_form_schema}:{},{client:u}=s();return y({queryKey:["contractor-onboarding-details-schema",n],retry:!1,queryFn:e(async()=>S({client:u,path:{country_code:n},query:{...r}}),"queryFn"),enabled:t?.queryOptions?.enabled,select:e(({data:m})=>{let i=m?.data?.schema||{};if(t&&t.jsfModify){let{schema:c}=M(i,t.jsfModify);i=c}let a=D(i.properties||{},"money").reduce((c,p)=>(c[p]=C(o[p]),c),{}),d={...o,...a};return{meta:{"x-jsf-fieldsets":i["x-jsf-fieldsets"]},...f(i,{initialValues:d})}},"select")})},"useContractorOnboardingDetailsSchema"),W=e((n,o)=>{let{data:t,isLoading:r}=V({employmentId:n,options:{queryOptions:o?.queryOptions}}),{schema:u}=M(j.data.schema,o?.jsfModify||{}),m=f(u);if(t){let i=m.fields.find(l=>l.name==="subscription");if(i){let l=t.filter(a=>a.product.identifier!==P).map(a=>{let d="";a.price.amount&&(d=O(a.price.amount,a.currency.symbol));let c=`${a.product.name} - ${d}`,p=a.product.identifier;return{label:c,value:p}});i.options=l}}return{isLoading:r,form:m}},"useContractorSubscriptionSchemaField");export{H as a,z as b,A as c,V as d,E as e,N as f,U as g,W as h};
2
- //# sourceMappingURL=chunk-XPL5XOQ4.js.map
1
+ import{a as j}from"./chunk-AP56UUME.js";import{a as x}from"./chunk-R2MHAPWD.js";import{c as P}from"./chunk-3UDG4IJO.js";import{b as D}from"./chunk-Z5WMKCRJ.js";import{C as F,H as q,I as _,e as S,k as g,m as h}from"./chunk-AA7QB3QQ.js";import{d as s}from"./chunk-3ZWDIEEM.js";import{a as C}from"./chunk-2EJ4BAUK.js";import{b as O}from"./chunk-43WMZDDH.js";import{a as e}from"./chunk-P37U34EQ.js";import{createHeadlessForm as f,modify as M}from"@remoteoss/json-schema-form";import{useMutation as b,useQuery as y}from"@tanstack/react-query";var H=e(({fieldValues:n,options:o})=>y({queryKey:["contract-document-signature"],queryFn:e(async()=>f(x,{initialValues:n}),"queryFn"),enabled:o?.queryOptions?.enabled}),"useGetContractDocumentSignatureSchema"),z=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,contractDocumentId:t,payload:r})=>q({client:n,body:r,path:{employment_id:o,contract_document_id:t}}),"mutationFn")})},"useSignContractDocument"),A=e(({employmentId:n,contractDocumentId:o,options:t})=>{let{client:r}=s();return y({queryKey:["contract-document",n,o],queryFn:e(async()=>h({client:r,path:{employment_id:n,id:o}}),"queryFn"),enabled:t?.queryOptions?.enabled,select:e(({data:u})=>u?.data,"select")})},"useGetShowContractDocument"),V=e(({employmentId:n,options:o})=>{let{client:t}=s();return y({queryKey:["contractor-subscriptions",n],queryFn:e(async()=>g({client:t,path:{employment_id:n}}),"queryFn"),enabled:o?.queryOptions?.enabled,select:e(({data:r})=>r?.data,"select")})},"useGetContractorSubscriptions"),E=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,payload:t})=>_({client:n,body:t,path:{employment_id:o}}),"mutationFn")})},"usePostManageContractorSubscriptions"),N=e(()=>{let{client:n}=s();return b({mutationFn:e(async({employmentId:o,payload:t})=>F({client:n,body:t,path:{employment_id:o}}),"mutationFn")})},"useCreateContractorContractDocument"),U=e(({countryCode:n,fieldValues:o,options:t})=>{let r=t?.jsonSchemaVersion?.contractor_contract_details_form_schema?{json_schema_version:t.jsonSchemaVersion.contractor_contract_details_form_schema}:{},{client:u}=s();return y({queryKey:["contractor-onboarding-details-schema",n],retry:!1,queryFn:e(async()=>S({client:u,path:{country_code:n},query:{...r}}),"queryFn"),enabled:t?.queryOptions?.enabled,select:e(({data:m})=>{let i=m?.data?.schema||{};if(t&&t.jsfModify){let{schema:c}=M(i,t.jsfModify);i=c}let a=D(i.properties||{},"money").reduce((c,p)=>(c[p]=C(o[p]),c),{}),d={...o,...a};return{meta:{"x-jsf-fieldsets":i["x-jsf-fieldsets"]},...f(i,{initialValues:d})}},"select")})},"useContractorOnboardingDetailsSchema"),W=e((n,o)=>{let{data:t,isLoading:r}=V({employmentId:n,options:{queryOptions:o?.queryOptions}}),{schema:u}=M(j.data.schema,o?.jsfModify||{}),m=f(u);if(t){let i=m.fields.find(l=>l.name==="subscription");if(i){let l=t.filter(a=>a.product.identifier!==P).map(a=>{let d="";a.price.amount&&(d=O(a.price.amount,a.currency.symbol));let c=`${a.product.name} - ${d}`,p=a.product.identifier;return{label:c,value:p}});i.options=l}}return{isLoading:r,form:m}},"useContractorSubscriptionSchemaField");export{H as a,z as b,A as c,V as d,E as e,N as f,U as g,W as h};
2
+ //# sourceMappingURL=chunk-PABPITPH.js.map
@@ -1,2 +1,2 @@
1
- import{a as n,b as i}from"./chunk-MZB24YJP.js";import{a as e}from"./chunk-43WMZDDH.js";import{a as o}from"./chunk-P37U34EQ.js";import{Fragment as s,jsx as t,jsxs as m}from"react/jsx-runtime";var r=["You submit your termination request.","We review your request along with the employment agreement, local labor laws, and any collective bargaining agreements in place.","A lifecycle specialist contacts you if they need additional details. Sometimes they will request a call.","Depending on the country-specific laws and the terms of the employment agreement, we may need to seek additional legal advice. We\u2019ll let you know if there are additional charges before proceeding.","Terms and conditions for the termination are finalized.","You verbally communicate the termination to the employee.","We share termination documents with the employee.","The employee signs the termination documents if required.","We process the final salary and offboard the employee."],h=o(()=>m(s,{children:[t("h3",{className:e("RemoteFlows__TerminationDialogInfoContent__Title"),children:"Please read carefully before you continue"}),t("p",{className:e("RemoteFlows__TerminationDialogInfoContent__Description"),children:"Please do not inform the employee of the termination. We'll lead communication with them after you submit this form and we finalize the termination terms."}),t("p",{className:e("RemoteFlows__TerminationDialogInfoContent__Description RemoteFlows__TerminationDialogInfoContent__FollowUpDescription"),children:"If you already informed them, that's okay. We'll ask for the details regarding that communication and take it from there."}),t(i,{className:e("RemoteFlows__TerminationDialogInfoContent__ZendeskTriggerButton text-sm"),zendeskId:n.terminationEmployeeCommunication,children:"Learn more about employee communication"}),t("h3",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessTitle"),children:"The termination process"}),t("ul",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessList list-disc list-inside"),children:r.map((a,l)=>t("li",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessListItem"),children:a},l))})]}),"TerminationDialogInfoContent");export{h as a};
2
- //# sourceMappingURL=chunk-DPWL4KNA.js.map
1
+ import{a as n,b as i}from"./chunk-FIXHXJGN.js";import{a as e}from"./chunk-43WMZDDH.js";import{a as o}from"./chunk-P37U34EQ.js";import{Fragment as m,jsx as t,jsxs as s}from"react/jsx-runtime";var r=["You submit your termination request.","We review your request along with the employment agreement, local labor laws, and any collective bargaining agreements in place.","A lifecycle specialist contacts you if they need additional details. Sometimes they will request a call.","Depending on the country-specific laws and the terms of the employment agreement, we may need to seek additional legal advice. We\u2019ll let you know if there are additional charges before proceeding.","Terms and conditions for the termination are finalized.","You verbally communicate the termination to the employee.","We share termination documents with the employee.","The employee signs the termination documents if required.","We process the final salary and offboard the employee."],h=o(()=>s(m,{children:[t("h3",{className:e("RemoteFlows__TerminationDialogInfoContent__Title"),children:"Please read carefully before you continue"}),t("p",{className:e("RemoteFlows__TerminationDialogInfoContent__Description"),children:"Please do not inform the employee of the termination. We'll lead communication with them after you submit this form and we finalize the termination terms."}),t("p",{className:e("RemoteFlows__TerminationDialogInfoContent__Description RemoteFlows__TerminationDialogInfoContent__FollowUpDescription"),children:"If you already informed them, that's okay. We'll ask for the details regarding that communication and take it from there."}),t(i,{className:e("RemoteFlows__TerminationDialogInfoContent__ZendeskTriggerButton text-sm"),zendeskId:n.terminationEmployeeCommunication,children:"Learn more about employee communication"}),t("h3",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessTitle"),children:"The termination process"}),t("ul",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessList list-disc list-inside"),children:r.map((a,l)=>t("li",{className:e("RemoteFlows__TerminationDialogInfoContent__ProcessListItem"),children:a},l))})]}),"TerminationDialogInfoContent");export{h as a};
2
+ //# sourceMappingURL=chunk-RD27ZSYF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.tsx"],"sourcesContent":["import { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { cn } from '@/src/internals';\n\nconst terminationSteps = [\n 'You submit your termination request.',\n 'We review your request along with the employment agreement, local labor laws, and any collective bargaining agreements in place.',\n 'A lifecycle specialist contacts you if they need additional details. Sometimes they will request a call.',\n 'Depending on the country-specific laws and the terms of the employment agreement, we may need to seek additional legal advice. We’ll let you know if there are additional charges before proceeding.',\n 'Terms and conditions for the termination are finalized.',\n 'You verbally communicate the termination to the employee.',\n 'We share termination documents with the employee.',\n 'The employee signs the termination documents if required.',\n 'We process the final salary and offboard the employee.',\n];\n\nexport const TerminationDialogInfoContent = () => {\n return (\n <>\n <h3 className={cn('RemoteFlows__TerminationDialogInfoContent__Title')}>\n Please read carefully before you continue\n </h3>\n <p\n className={cn('RemoteFlows__TerminationDialogInfoContent__Description')}\n >\n Please do not inform the employee of the termination. We'll lead\n communication with them after you submit this form and we finalize the\n termination terms.\n </p>\n <p\n className={cn(\n 'RemoteFlows__TerminationDialogInfoContent__Description RemoteFlows__TerminationDialogInfoContent__FollowUpDescription',\n )}\n >\n If you already informed them, that's okay. We'll ask for the details\n regarding that communication and take it from there.\n </p>\n\n <ZendeskTriggerButton\n className={cn(\n 'RemoteFlows__TerminationDialogInfoContent__ZendeskTriggerButton text-sm',\n )}\n zendeskId={zendeskArticles.terminationEmployeeCommunication}\n >\n Learn more about employee communication\n </ZendeskTriggerButton>\n\n <h3\n className={cn(\n 'RemoteFlows__TerminationDialogInfoContent__ProcessTitle',\n )}\n >\n The termination process\n </h3>\n\n <ul\n className={cn(\n 'RemoteFlows__TerminationDialogInfoContent__ProcessList list-disc list-inside',\n )}\n >\n {terminationSteps.map((step, index) => (\n <li\n key={index}\n className={cn(\n 'RemoteFlows__TerminationDialogInfoContent__ProcessListItem',\n )}\n >\n {step}\n </li>\n ))}\n </ul>\n </>\n );\n};\n"],"mappings":"+HAkBI,mBAAAA,EACE,OAAAC,EADF,QAAAC,MAAA,oBAdJ,IAAMC,EAAmB,CACvB,uCACA,mIACA,2GACA,4MACA,0DACA,4DACA,oDACA,4DACA,wDACF,EAEaC,EAA+BC,EAAA,IAExCH,EAAAF,EAAA,CACE,UAAAC,EAAC,MAAG,UAAWK,EAAG,kDAAkD,EAAG,qDAEvE,EACAL,EAAC,KACC,UAAWK,EAAG,wDAAwD,EACvE,sKAID,EACAL,EAAC,KACC,UAAWK,EACT,uHACF,EACD,qIAGD,EAEAL,EAACM,EAAA,CACC,UAAWD,EACT,yEACF,EACA,UAAWE,EAAgB,iCAC5B,mDAED,EAEAP,EAAC,MACC,UAAWK,EACT,yDACF,EACD,mCAED,EAEAL,EAAC,MACC,UAAWK,EACT,8EACF,EAEC,SAAAH,EAAiB,IAAI,CAACM,EAAMC,IAC3BT,EAAC,MAEC,UAAWK,EACT,4DACF,EAEC,SAAAG,GALIC,CAMP,CACD,EACH,GACF,EAvDwC","names":["Fragment","jsx","jsxs","terminationSteps","TerminationDialogInfoContent","__name","cn","ZendeskTriggerButton","zendeskArticles","step","index"]}
@@ -0,0 +1,2 @@
1
+ import{a as F}from"./chunk-HBYHRMST.js";import{b as u}from"./chunk-3UM34N4C.js";import{f as l,g as p}from"./chunk-CNDSIADP.js";import{c as f}from"./chunk-2EJ4BAUK.js";import{b as _}from"./chunk-TVZAFTPT.js";import{a as r}from"./chunk-P37U34EQ.js";import{useEffect as w}from"react";import{jsx as a}from"react/jsx-runtime";var R=["effective_date","reason_for_change","reason_for_change_description","additional_comments","additional_comments_toggle"];function x({onSubmit:b,onError:m,onSuccess:A}){let{formId:C,contractAmendment:{checkFieldUpdates:h,fields:s,onSubmit:S,stepState:g,initialValues:i,handleValidation:y}}=_(),V=u(y),e=l({resolver:V,defaultValues:g.values?.form||i,shouldUnregister:!0,mode:"onBlur"});w(()=>{let t=e?.watch(o=>{(Object.keys(e.formState.dirtyFields).length>0||e.formState.isDirty)&&h(o)});return()=>t?.unsubscribe()},[]);let v=r(async t=>{let o=!1;for(let[c,P]of Object.entries(t))if(!R.includes(c)&&i[c]!==P){o=!0;break}if(!o)return m?.({message:"no_changes_detected_contract_details"});let d=await f(t,s,{isPartialValidation:!1});await b?.(d);let n=await S(t);n.error?m?.(n.error):await A?.(n.data)},"handleSubmit");return a(p,{...e,children:a("form",{id:C,"data-testid":"contract-amendment-form",onSubmit:e.handleSubmit(v),className:"space-y-4 RemoteFlows__ContractAmendmentForm",children:a(F,{fields:s})})})}r(x,"ContractAmendmentForm");export{x as a};
2
+ //# sourceMappingURL=chunk-RIA5Z6I3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/ContractAmendment/ContractAmendmentForm.tsx"],"sourcesContent":["import {\n ContractAmendmentAutomatableResponse,\n PostAutomatableContractAmendmentError,\n} from '@/src/client';\nimport { JSONSchemaFormFields } from '@/src/components/form/JSONSchemaForm';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/validationResolver';\nimport { Form } from '@/src/components/ui/form';\nimport { useEffect } from 'react';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { useContractAmendmentContext } from './context';\n\ntype ContractAmendmentFormProps = {\n /**\n * Callback function to be called when the contract amendment form is submitted.\n * This function is called before the contract amendment is submitted.\n * It can be used to perform any additional validation or processing before\n * the contract amendment is submitted.\n * @param values\n * @returns\n */\n onSubmit?: (values: FieldValues) => void | Promise<void>;\n /**\n * Callback function to be called when the contract amendment fails.\n * @param error\n * @returns\n */\n onError?: (\n error:\n | PostAutomatableContractAmendmentError\n | { message: 'no_changes_detected_contract_details' },\n ) => void;\n /**\n * Callback function to be called when the contract amendment is successfully submitted.\n * This function is called after the contract amendment is submitted.\n * @param data\n * @returns\n */\n onSuccess?: (\n data: ContractAmendmentAutomatableResponse,\n ) => void | Promise<void>;\n};\n\nconst commonFields = [\n 'effective_date',\n 'reason_for_change',\n 'reason_for_change_description',\n 'additional_comments',\n 'additional_comments_toggle',\n] as const;\n\ntype CommonFields = (typeof commonFields)[number];\n\nexport function ContractAmendmentForm({\n onSubmit,\n onError,\n onSuccess,\n}: ContractAmendmentFormProps) {\n const {\n formId,\n contractAmendment: {\n checkFieldUpdates,\n fields,\n onSubmit: submitContractAmendment,\n stepState,\n initialValues,\n handleValidation,\n },\n } = useContractAmendmentContext();\n\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues:\n // stepState.values is used as defaultValues for the form when the form is\n // rendered when clicking on the back button after the user has submitted the form\n // and the confirmation form is displayed.\n // This is because the form is unmounted when the user submits the form.\n stepState.values?.form || initialValues,\n shouldUnregister: true,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n const subscription = form?.watch((values) => {\n const isFormDirty =\n Object.keys(form.formState.dirtyFields).length > 0 ||\n form.formState.isDirty;\n if (isFormDirty) {\n checkFieldUpdates(values);\n }\n });\n return () => subscription?.unsubscribe();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleSubmit = async (values: FieldValues) => {\n let hasContractDetailsChanges = false;\n for (const [key, value] of Object.entries(values)) {\n if (\n !commonFields.includes(key as CommonFields) &&\n // @ts-expect-error error\n initialValues[key] !== value\n ) {\n hasContractDetailsChanges = true;\n break;\n }\n }\n\n if (!hasContractDetailsChanges) {\n return onError?.({\n message: 'no_changes_detected_contract_details',\n });\n }\n\n const parsedValues = parseJSFToValidate(values, fields, {\n isPartialValidation: false,\n });\n\n await onSubmit?.(parsedValues);\n\n const contractAmendmentResult = await submitContractAmendment(values);\n\n if (contractAmendmentResult.error) {\n onError?.(contractAmendmentResult.error);\n } else {\n await onSuccess?.(\n contractAmendmentResult.data as ContractAmendmentAutomatableResponse,\n );\n }\n };\n\n return (\n <Form {...form}>\n <form\n id={formId}\n data-testid='contract-amendment-form'\n onSubmit={form.handleSubmit(handleSubmit)}\n className='space-y-4 RemoteFlows__ContractAmendmentForm'\n >\n <JSONSchemaFormFields fields={fields} />\n </form>\n </Form>\n );\n}\n"],"mappings":"uPAQA,OAAS,aAAAA,MAAiB,QAwIlB,cAAAC,MAAA,oBArGR,IAAMC,EAAe,CACnB,iBACA,oBACA,gCACA,sBACA,4BACF,EAIO,SAASC,EAAsB,CACpC,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA+B,CAC7B,GAAM,CACJ,OAAAC,EACA,kBAAmB,CACjB,kBAAAC,EACA,OAAAC,EACA,SAAUC,EACV,UAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,CACF,EAAIC,EAA4B,EAE1BC,EAAWC,EAEfH,CACF,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAKEJ,EAAU,QAAQ,MAAQC,EAC5B,iBAAkB,GAClB,KAAM,QACR,CAAC,EAEDO,EAAU,IAAM,CACd,IAAMC,EAAeH,GAAM,MAAOI,GAAW,EAEzC,OAAO,KAAKJ,EAAK,UAAU,WAAW,EAAE,OAAS,GACjDA,EAAK,UAAU,UAEfT,EAAkBa,CAAM,CAE5B,CAAC,EACD,MAAO,IAAMD,GAAc,YAAY,CAEzC,EAAG,CAAC,CAAC,EAEL,IAAME,EAAeC,EAAA,MAAOF,GAAwB,CAClD,IAAIG,EAA4B,GAChC,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQL,CAAM,EAC9C,GACE,CAACnB,EAAa,SAASuB,CAAmB,GAE1Cb,EAAca,CAAG,IAAMC,EACvB,CACAF,EAA4B,GAC5B,KACF,CAGF,GAAI,CAACA,EACH,OAAOnB,IAAU,CACf,QAAS,sCACX,CAAC,EAGH,IAAMsB,EAAeC,EAAmBP,EAAQZ,EAAQ,CACtD,oBAAqB,EACvB,CAAC,EAED,MAAML,IAAWuB,CAAY,EAE7B,IAAME,EAA0B,MAAMnB,EAAwBW,CAAM,EAEhEQ,EAAwB,MAC1BxB,IAAUwB,EAAwB,KAAK,EAEvC,MAAMvB,IACJuB,EAAwB,IAC1B,CAEJ,EAlCqB,gBAoCrB,OACE5B,EAAC6B,EAAA,CAAM,GAAGb,EACR,SAAAhB,EAAC,QACC,GAAIM,EACJ,cAAY,0BACZ,SAAUU,EAAK,aAAaK,CAAY,EACxC,UAAU,+CAEV,SAAArB,EAAC8B,EAAA,CAAqB,OAAQtB,EAAQ,EACxC,EACF,CAEJ,CA/FgBc,EAAApB,EAAA","names":["useEffect","jsx","commonFields","ContractAmendmentForm","onSubmit","onError","onSuccess","formId","checkFieldUpdates","fields","submitContractAmendment","stepState","initialValues","handleValidation","useContractAmendmentContext","resolver","useJsonSchemasValidationFormResolver","form","useForm","useEffect","subscription","values","handleSubmit","__name","hasContractDetailsChanges","key","value","parsedValues","parseJSFToValidate","contractAmendmentResult","Form","JSONSchemaFormFields"]}
1
+ {"version":3,"sources":["../src/flows/ContractAmendment/ContractAmendmentForm.tsx"],"sourcesContent":["import {\n ContractAmendmentAutomatableResponse,\n PostAutomatableContractAmendmentError,\n} from '@/src/client';\nimport { JSONSchemaFormFields } from '@/src/components/form/JSONSchemaForm';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/validationResolver';\nimport { Form } from '@/src/components/ui/form';\nimport { useEffect } from 'react';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { useContractAmendmentContext } from './context';\n\ntype ContractAmendmentFormProps = {\n /**\n * Callback function to be called when the contract amendment form is submitted.\n * This function is called before the contract amendment is submitted.\n * It can be used to perform any additional validation or processing before\n * the contract amendment is submitted.\n * @param values\n * @returns\n */\n onSubmit?: (values: FieldValues) => void | Promise<void>;\n /**\n * Callback function to be called when the contract amendment fails.\n * @param error\n * @returns\n */\n onError?: (\n error:\n | PostAutomatableContractAmendmentError\n | { message: 'no_changes_detected_contract_details' },\n ) => void;\n /**\n * Callback function to be called when the contract amendment is successfully submitted.\n * This function is called after the contract amendment is submitted.\n * @param data\n * @returns\n */\n onSuccess?: (\n data: ContractAmendmentAutomatableResponse,\n ) => void | Promise<void>;\n};\n\nconst commonFields = [\n 'effective_date',\n 'reason_for_change',\n 'reason_for_change_description',\n 'additional_comments',\n 'additional_comments_toggle',\n] as const;\n\ntype CommonFields = (typeof commonFields)[number];\n\nexport function ContractAmendmentForm({\n onSubmit,\n onError,\n onSuccess,\n}: ContractAmendmentFormProps) {\n const {\n formId,\n contractAmendment: {\n checkFieldUpdates,\n fields,\n onSubmit: submitContractAmendment,\n stepState,\n initialValues,\n handleValidation,\n },\n } = useContractAmendmentContext();\n\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues:\n // stepState.values is used as defaultValues for the form when the form is\n // rendered when clicking on the back button after the user has submitted the form\n // and the confirmation form is displayed.\n // This is because the form is unmounted when the user submits the form.\n stepState.values?.form || initialValues,\n shouldUnregister: true,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n const subscription = form?.watch((values) => {\n const isFormDirty =\n Object.keys(form.formState.dirtyFields).length > 0 ||\n form.formState.isDirty;\n if (isFormDirty) {\n checkFieldUpdates(values);\n }\n });\n return () => subscription?.unsubscribe();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleSubmit = async (values: FieldValues) => {\n let hasContractDetailsChanges = false;\n for (const [key, value] of Object.entries(values)) {\n if (\n !commonFields.includes(key as CommonFields) &&\n // @ts-expect-error error\n initialValues[key] !== value\n ) {\n hasContractDetailsChanges = true;\n break;\n }\n }\n\n if (!hasContractDetailsChanges) {\n return onError?.({\n message: 'no_changes_detected_contract_details',\n });\n }\n\n const parsedValues = await parseJSFToValidate(values, fields, {\n isPartialValidation: false,\n });\n\n await onSubmit?.(parsedValues);\n\n const contractAmendmentResult = await submitContractAmendment(values);\n\n if (contractAmendmentResult.error) {\n onError?.(contractAmendmentResult.error);\n } else {\n await onSuccess?.(\n contractAmendmentResult.data as ContractAmendmentAutomatableResponse,\n );\n }\n };\n\n return (\n <Form {...form}>\n <form\n id={formId}\n data-testid='contract-amendment-form'\n onSubmit={form.handleSubmit(handleSubmit)}\n className='space-y-4 RemoteFlows__ContractAmendmentForm'\n >\n <JSONSchemaFormFields fields={fields} />\n </form>\n </Form>\n );\n}\n"],"mappings":"uPAQA,OAAS,aAAAA,MAAiB,QAwIlB,cAAAC,MAAA,oBArGR,IAAMC,EAAe,CACnB,iBACA,oBACA,gCACA,sBACA,4BACF,EAIO,SAASC,EAAsB,CACpC,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA+B,CAC7B,GAAM,CACJ,OAAAC,EACA,kBAAmB,CACjB,kBAAAC,EACA,OAAAC,EACA,SAAUC,EACV,UAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,CACF,EAAIC,EAA4B,EAE1BC,EAAWC,EAEfH,CACF,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAKEJ,EAAU,QAAQ,MAAQC,EAC5B,iBAAkB,GAClB,KAAM,QACR,CAAC,EAEDO,EAAU,IAAM,CACd,IAAMC,EAAeH,GAAM,MAAOI,GAAW,EAEzC,OAAO,KAAKJ,EAAK,UAAU,WAAW,EAAE,OAAS,GACjDA,EAAK,UAAU,UAEfT,EAAkBa,CAAM,CAE5B,CAAC,EACD,MAAO,IAAMD,GAAc,YAAY,CAEzC,EAAG,CAAC,CAAC,EAEL,IAAME,EAAeC,EAAA,MAAOF,GAAwB,CAClD,IAAIG,EAA4B,GAChC,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQL,CAAM,EAC9C,GACE,CAACnB,EAAa,SAASuB,CAAmB,GAE1Cb,EAAca,CAAG,IAAMC,EACvB,CACAF,EAA4B,GAC5B,KACF,CAGF,GAAI,CAACA,EACH,OAAOnB,IAAU,CACf,QAAS,sCACX,CAAC,EAGH,IAAMsB,EAAe,MAAMC,EAAmBP,EAAQZ,EAAQ,CAC5D,oBAAqB,EACvB,CAAC,EAED,MAAML,IAAWuB,CAAY,EAE7B,IAAME,EAA0B,MAAMnB,EAAwBW,CAAM,EAEhEQ,EAAwB,MAC1BxB,IAAUwB,EAAwB,KAAK,EAEvC,MAAMvB,IACJuB,EAAwB,IAC1B,CAEJ,EAlCqB,gBAoCrB,OACE5B,EAAC6B,EAAA,CAAM,GAAGb,EACR,SAAAhB,EAAC,QACC,GAAIM,EACJ,cAAY,0BACZ,SAAUU,EAAK,aAAaK,CAAY,EACxC,UAAU,+CAEV,SAAArB,EAAC8B,EAAA,CAAqB,OAAQtB,EAAQ,EACxC,EACF,CAEJ,CA/FgBc,EAAApB,EAAA","names":["useEffect","jsx","commonFields","ContractAmendmentForm","onSubmit","onError","onSuccess","formId","checkFieldUpdates","fields","submitContractAmendment","stepState","initialValues","handleValidation","useContractAmendmentContext","resolver","useJsonSchemasValidationFormResolver","form","useForm","useEffect","subscription","values","handleSubmit","__name","hasContractDetailsChanges","key","value","parsedValues","parseJSFToValidate","contractAmendmentResult","Form","JSONSchemaFormFields"]}
@@ -1,2 +1,2 @@
1
- import{a as l}from"./chunk-HO2TIG7R.js";import{a as m,b as y}from"./chunk-MZB24YJP.js";import{c}from"./chunk-CNDSIADP.js";import{a as t}from"./chunk-P37U34EQ.js";import{useEffect as N}from"react";import{Fragment as b,jsx as v,jsxs as C}from"react/jsx-runtime";var R=t(({currencies:{from:d,to:F},shouldSwapOrder:s,salary_conversion_properties:a,conversionType:_="no_spread",defaultValue:r,...e})=>{let{setValue:n,getValues:i}=c(),f={label:a?.label||"Salary conversion",description:a?.description||C(b,{children:["The conversion is based on the Remote FX rate."," ",v(y,{className:"text-sm",zendeskId:m.remoteFxRate,children:"Learn more \u2197"})]})},g=s?"salary_conversion":e.name,u=s?e.name:"salary_conversion";return N(()=>{if(s){let o=i(e.name);o?(n("salary_conversion",o),n("salary_converted","salary_conversion")):r&&(n("salary_conversion",r),n("salary_converted","salary_conversion"))}else{let o=i("salary_conversion");o?(n(e.name,o),n("salary_converted",e.name)):r&&(n(e.name,r),n("salary_converted",e.name))}},[s,r,n,i,e.name]),v(l,{...e,sourceCurrency:d,targetCurrency:F,mainFieldName:g,conversionFieldName:u,conversionProperties:f,classNamePrefix:"RemoteFlows-Salary",conversionType:_})},"SalaryField");export{R as a};
2
- //# sourceMappingURL=chunk-CW3MAP5L.js.map
1
+ import{a as l}from"./chunk-7HSSHSYK.js";import{a as m,b as y}from"./chunk-FIXHXJGN.js";import{c}from"./chunk-CNDSIADP.js";import{a as t}from"./chunk-P37U34EQ.js";import{useEffect as N}from"react";import{Fragment as b,jsx as v,jsxs as C}from"react/jsx-runtime";var R=t(({currencies:{from:d,to:F},shouldSwapOrder:s,salary_conversion_properties:a,conversionType:_="no_spread",defaultValue:r,...e})=>{let{setValue:n,getValues:i}=c(),f={label:a?.label||"Salary conversion",description:a?.description||C(b,{children:["The conversion is based on the Remote FX rate."," ",v(y,{className:"text-sm",zendeskId:m.remoteFxRate,children:"Learn more \u2197"})]})},g=s?"salary_conversion":e.name,u=s?e.name:"salary_conversion";return N(()=>{if(s){let o=i(e.name);o?(n("salary_conversion",o),n("salary_converted","salary_conversion")):r&&(n("salary_conversion",r),n("salary_converted","salary_conversion"))}else{let o=i("salary_conversion");o?(n(e.name,o),n("salary_converted",e.name)):r&&(n(e.name,r),n("salary_converted",e.name))}},[s,r,n,i,e.name]),v(l,{...e,sourceCurrency:d,targetCurrency:F,mainFieldName:g,conversionFieldName:u,conversionProperties:f,classNamePrefix:"RemoteFlows-Salary",conversionType:_})},"SalaryField");export{R as a};
2
+ //# sourceMappingURL=chunk-RSH5MZY3.js.map
@@ -1,2 +1,2 @@
1
- import{b as e}from"./chunk-WVDTHFGS.js";import{b as u}from"./chunk-3ZWDIEEM.js";import{b as i}from"./chunk-TVZAFTPT.js";import{a as m}from"./chunk-P37U34EQ.js";import{jsx as s}from"react/jsx-runtime";function d({children:t,...o}){let{formId:n}=i(),{components:f}=u(),r=f?.button;return r?s(r,{...o,form:n,children:t}):s(e,{...o,form:n,children:t})}m(d,"ContractAmendmentSubmit");export{d as a};
2
- //# sourceMappingURL=chunk-OW5QGJD4.js.map
1
+ import{b as u}from"./chunk-3ZWDIEEM.js";import{b as e}from"./chunk-WVDTHFGS.js";import{b as i}from"./chunk-TVZAFTPT.js";import{a as m}from"./chunk-P37U34EQ.js";import{jsx as s}from"react/jsx-runtime";function d({children:t,...o}){let{formId:n}=i(),{components:f}=u(),r=f?.button;return r?s(r,{...o,form:n,children:t}):s(e,{...o,form:n,children:t})}m(d,"ContractAmendmentSubmit");export{d as a};
2
+ //# sourceMappingURL=chunk-S2BJGON2.js.map
@@ -1,2 +1,2 @@
1
- import{b as s}from"./chunk-TOA3JILU.js";import{b as u}from"./chunk-WVDTHFGS.js";import{b as i}from"./chunk-3ZWDIEEM.js";import{a as t}from"./chunk-P37U34EQ.js";import{jsx as c}from"react/jsx-runtime";function C({children:o,onClick:a,...n}){let{contractorOnboardingBag:{back:m,isEmploymentReadOnly:B}}=s(),{components:d}=i(),r=t(p=>{B||m(),a?.(p)},"onBackHandler"),e=d?.button;return e?c(e,{...n,onClick:r,children:o}):c(u,{...n,onClick:r,children:o})}t(C,"OnboardingBack");export{C as a};
2
- //# sourceMappingURL=chunk-5ZR7EFPY.js.map
1
+ import{b as s}from"./chunk-TOA3JILU.js";import{b as i}from"./chunk-3ZWDIEEM.js";import{b as u}from"./chunk-WVDTHFGS.js";import{a as t}from"./chunk-P37U34EQ.js";import{jsx as c}from"react/jsx-runtime";function C({children:o,onClick:a,...n}){let{contractorOnboardingBag:{back:m,isEmploymentReadOnly:B}}=s(),{components:d}=i(),r=t(p=>{B||m(),a?.(p)},"onBackHandler"),e=d?.button;return e?c(e,{...n,onClick:r,children:o}):c(u,{...n,onClick:r,children:o})}t(C,"OnboardingBack");export{C as a};
2
+ //# sourceMappingURL=chunk-SHK2UKLD.js.map
@@ -0,0 +1,2 @@
1
+ import{a as m}from"./chunk-5BY7HOJB.js";import{b as s}from"./chunk-TOA3JILU.js";import{b as e}from"./chunk-2YTBWEC7.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as E}from"react/jsx-runtime";function b({onSubmit:d,onSuccess:l,onError:n}){let{contractorOnboardingBag:r}=s(),c=i(async t=>{try{let a=await r.parseFormValues(t);await d?.(a);let o=await r.onSubmit(t);if(o?.data){await l?.(o?.data),r?.next();return}if(o?.error){let p=e(o?.fieldErrors||[],r.meta?.fields?.basic_information);n?.({error:o?.error,rawError:o?.rawError,fieldErrors:p})}}catch(a){n?.({error:a,rawError:a,fieldErrors:[]})}},"handleSubmit"),f=r.stepState.values?.basic_information||r.initialValues.basic_information;return E(m,{defaultValues:f,onSubmit:c})}i(b,"BasicInformationStep");export{b as a};
2
+ //# sourceMappingURL=chunk-SS6RX52D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/ContractorOnboarding/components/BasicInformationStep.tsx"],"sourcesContent":["import { BasicInformationFormPayload } from '@/src/flows/Onboarding/types';\nimport { EmploymentCreationResponse } from '@/src/client';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport {\n normalizeFieldErrors,\n NormalizedFieldError,\n} from '@/src/lib/mutations';\nimport { useContractorOnboardingContext } from '@/src/flows/ContractorOnboarding/context';\nimport { ContractorOnboardingForm } from '@/src/flows/ContractorOnboarding/components/ContractorOnboardingForm';\n\ntype BasicInformationStepProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: BasicInformationFormPayload) => void | Promise<void>;\n /*\n * The function is called when the form submission is successful.\n */\n onSuccess?: (data: EmploymentCreationResponse) => void | Promise<void>;\n /*\n * The function is called when an error occurs during form submission.\n */\n onError?: ({\n error,\n rawError,\n fieldErrors,\n }: {\n error: Error;\n rawError: Record<string, unknown>;\n fieldErrors: NormalizedFieldError[];\n }) => void;\n};\n\nexport function BasicInformationStep({\n onSubmit,\n onSuccess,\n onError,\n}: BasicInformationStepProps) {\n const { contractorOnboardingBag } = useContractorOnboardingContext();\n\n const handleSubmit = async (payload: $TSFixMe) => {\n try {\n const parsedValues =\n await contractorOnboardingBag.parseFormValues(payload);\n await onSubmit?.(parsedValues as BasicInformationFormPayload);\n const response = await contractorOnboardingBag.onSubmit(payload);\n if (response?.data) {\n await onSuccess?.(response?.data as EmploymentCreationResponse);\n contractorOnboardingBag?.next();\n return;\n }\n if (response?.error) {\n const normalizedFieldErrors = normalizeFieldErrors(\n response?.fieldErrors || [],\n contractorOnboardingBag.meta?.fields?.basic_information,\n );\n\n onError?.({\n error: response?.error,\n rawError: response?.rawError,\n fieldErrors: normalizedFieldErrors,\n });\n }\n } catch (error: unknown) {\n onError?.({\n error: error as Error,\n rawError: error as Record<string, unknown>,\n fieldErrors: [],\n });\n }\n };\n\n const initialValues =\n contractorOnboardingBag.stepState.values?.basic_information ||\n contractorOnboardingBag.initialValues.basic_information;\n\n return (\n <ContractorOnboardingForm\n defaultValues={initialValues}\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"gKA6EI,cAAAA,MAAA,oBA5CG,SAASC,EAAqB,CACnC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA8B,CAC5B,GAAM,CAAE,wBAAAC,CAAwB,EAAIC,EAA+B,EAE7DC,EAAeC,EAAA,MAAOC,GAAsB,CAChD,GAAI,CACF,IAAMC,EACJ,MAAML,EAAwB,gBAAgBI,CAAO,EACvD,MAAMP,IAAWQ,CAA2C,EAC5D,IAAMC,EAAW,MAAMN,EAAwB,SAASI,CAAO,EAC/D,GAAIE,GAAU,KAAM,CAClB,MAAMR,IAAYQ,GAAU,IAAkC,EAC9DN,GAAyB,KAAK,EAC9B,MACF,CACA,GAAIM,GAAU,MAAO,CACnB,IAAMC,EAAwBC,EAC5BF,GAAU,aAAe,CAAC,EAC1BN,EAAwB,MAAM,QAAQ,iBACxC,EAEAD,IAAU,CACR,MAAOO,GAAU,MACjB,SAAUA,GAAU,SACpB,YAAaC,CACf,CAAC,CACH,CACF,OAASE,EAAgB,CACvBV,IAAU,CACR,MAAOU,EACP,SAAUA,EACV,YAAa,CAAC,CAChB,CAAC,CACH,CACF,EA9BqB,gBAgCfC,EACJV,EAAwB,UAAU,QAAQ,mBAC1CA,EAAwB,cAAc,kBAExC,OACEL,EAACgB,EAAA,CACC,cAAeD,EACf,SAAUR,EACZ,CAEJ,CAjDgBC,EAAAP,EAAA","names":["jsx","BasicInformationStep","onSubmit","onSuccess","onError","contractorOnboardingBag","useContractorOnboardingContext","handleSubmit","__name","payload","parsedValues","response","normalizedFieldErrors","normalizeFieldErrors","error","initialValues","ContractorOnboardingForm"]}
@@ -0,0 +1,2 @@
1
+ import{a as m}from"./chunk-LIF7X2AH.js";import{b as s}from"./chunk-PGWKJ6FK.js";import{b as t}from"./chunk-2YTBWEC7.js";import{a}from"./chunk-P37U34EQ.js";import{jsx as E}from"react/jsx-runtime";function b({onSubmit:d,onSuccess:l,onError:n}){let{onboardingBag:r}=s(),f=a(async e=>{try{let i=await r.parseFormValues(e);await d?.(i);let o=await r.onSubmit(e);if(o?.data){await l?.(o?.data),r?.next();return}if(o?.error){let c=t(o?.fieldErrors||[],r.meta?.fields?.basic_information);n?.({error:o?.error,rawError:o?.rawError,fieldErrors:c})}}catch(i){n?.({error:i,rawError:i,fieldErrors:[]})}},"handleSubmit"),p=r.stepState.values?.basic_information||r.initialValues.basic_information;return E(m,{defaultValues:p,onSubmit:f})}a(b,"BasicInformationStep");export{b as a};
2
+ //# sourceMappingURL=chunk-STSTF3AT.js.map