@remoteoss/remote-flows 0.8.0 → 0.9.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 (103) hide show
  1. package/dist/{chunk-6CU63ESU.js → chunk-2UPDFZ7P.js} +2 -2
  2. package/dist/{chunk-AHZSNZSG.js → chunk-5CCAARDB.js} +2 -2
  3. package/dist/{chunk-KZ6QGSRA.js → chunk-5O4S4YZN.js} +2 -2
  4. package/dist/{chunk-GLOSUWTH.js → chunk-76UIUPEL.js} +2 -2
  5. package/dist/{chunk-ZVXX43AL.js → chunk-7CDCXJSI.js} +2 -2
  6. package/dist/{chunk-ADE22XT7.js → chunk-7F3TBWYV.js} +2 -2
  7. package/dist/{chunk-GPS62RDR.js → chunk-7WDALAC7.js} +2 -2
  8. package/dist/{chunk-YAV236LM.js → chunk-A4ROBLPX.js} +2 -2
  9. package/dist/{chunk-LK3DIMYW.js → chunk-AYJ63EZH.js} +2 -2
  10. package/dist/{chunk-TMUPJJDK.js → chunk-COHLMZEO.js} +2 -2
  11. package/dist/{chunk-XQPYSB6Y.js → chunk-D23KLJQM.js} +2 -2
  12. package/dist/{chunk-QYNAZIHD.js → chunk-D27IFECQ.js} +2 -2
  13. package/dist/{chunk-V6W2SJ4Z.js → chunk-DEGMU7EO.js} +2 -2
  14. package/dist/{chunk-3GCWEV4G.js → chunk-DTTK5OBT.js} +2 -2
  15. package/dist/chunk-E6DC4DXP.js +2 -0
  16. package/dist/chunk-E6DC4DXP.js.map +1 -0
  17. package/dist/chunk-F6FS5DBQ.js +2 -0
  18. package/dist/chunk-F6FS5DBQ.js.map +1 -0
  19. package/dist/{chunk-ZBGBLTFN.js → chunk-FBA3PMRV.js} +2 -2
  20. package/dist/{chunk-WOUZK5DW.js → chunk-FKV6J4FL.js} +2 -2
  21. package/dist/{chunk-QBV4XS4Z.js → chunk-GXAX4KMX.js} +2 -2
  22. package/dist/{chunk-2OYKWBJY.js → chunk-HQKBSMGN.js} +2 -2
  23. package/dist/chunk-K5BC2TNP.js +2 -0
  24. package/dist/chunk-K5BC2TNP.js.map +1 -0
  25. package/dist/chunk-LWJQO625.js +2 -0
  26. package/dist/{chunk-3KQWGXAR.js.map → chunk-LWJQO625.js.map} +1 -1
  27. package/dist/chunk-MXFDOIUA.js +2 -0
  28. package/dist/chunk-MXFDOIUA.js.map +1 -0
  29. package/dist/{chunk-7N2NUY3F.js → chunk-RX5GTE5Z.js} +2 -2
  30. package/dist/{chunk-2VGEHBMK.js → chunk-T6TIHUBQ.js} +2 -2
  31. package/dist/{chunk-BJFZBI3O.js → chunk-UIAPHRJJ.js} +2 -2
  32. package/dist/{chunk-CQ2QAZBG.js → chunk-Y6FMG3PD.js} +2 -2
  33. package/dist/{chunk-NXZRK6KL.js → chunk-YKIFMONL.js} +2 -2
  34. package/dist/{chunk-IKYBTQKV.js → chunk-YYNQTHEX.js} +2 -2
  35. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  36. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  37. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  38. package/dist/flows/ContractAmendment/hooks.js +1 -1
  39. package/dist/flows/ContractAmendment/index.js +1 -1
  40. package/dist/flows/ContractAmendment/utils.js +1 -1
  41. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  42. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  43. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  44. package/dist/flows/CostCalculator/hooks.js +1 -1
  45. package/dist/flows/CostCalculator/index.js +1 -1
  46. package/dist/flows/CostCalculator/utils.js +1 -1
  47. package/dist/flows/Onboarding/OnboardingFlow.d.ts +1 -1
  48. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  49. package/dist/flows/Onboarding/api.js +1 -1
  50. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  51. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  52. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  53. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  54. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  55. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  56. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  57. package/dist/flows/Onboarding/hooks.d.ts +1 -1
  58. package/dist/flows/Onboarding/hooks.js +1 -1
  59. package/dist/flows/Onboarding/index.js +1 -1
  60. package/dist/flows/Onboarding/types.d.ts +11 -0
  61. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  62. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  63. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  64. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  65. package/dist/flows/Termination/TerminationFlow.js +1 -1
  66. package/dist/flows/Termination/TerminationForm.js +1 -1
  67. package/dist/flows/Termination/hooks.js +1 -1
  68. package/dist/flows/Termination/index.js +1 -1
  69. package/dist/index.js +1 -1
  70. package/package.json +1 -1
  71. package/dist/chunk-3KQWGXAR.js +0 -2
  72. package/dist/chunk-5IREEZLM.js +0 -2
  73. package/dist/chunk-5IREEZLM.js.map +0 -1
  74. package/dist/chunk-AYAQLXJH.js +0 -2
  75. package/dist/chunk-AYAQLXJH.js.map +0 -1
  76. package/dist/chunk-N6SBUVA6.js +0 -2
  77. package/dist/chunk-N6SBUVA6.js.map +0 -1
  78. package/dist/chunk-PAC52YON.js +0 -2
  79. package/dist/chunk-PAC52YON.js.map +0 -1
  80. /package/dist/{chunk-6CU63ESU.js.map → chunk-2UPDFZ7P.js.map} +0 -0
  81. /package/dist/{chunk-AHZSNZSG.js.map → chunk-5CCAARDB.js.map} +0 -0
  82. /package/dist/{chunk-KZ6QGSRA.js.map → chunk-5O4S4YZN.js.map} +0 -0
  83. /package/dist/{chunk-GLOSUWTH.js.map → chunk-76UIUPEL.js.map} +0 -0
  84. /package/dist/{chunk-ZVXX43AL.js.map → chunk-7CDCXJSI.js.map} +0 -0
  85. /package/dist/{chunk-ADE22XT7.js.map → chunk-7F3TBWYV.js.map} +0 -0
  86. /package/dist/{chunk-GPS62RDR.js.map → chunk-7WDALAC7.js.map} +0 -0
  87. /package/dist/{chunk-YAV236LM.js.map → chunk-A4ROBLPX.js.map} +0 -0
  88. /package/dist/{chunk-LK3DIMYW.js.map → chunk-AYJ63EZH.js.map} +0 -0
  89. /package/dist/{chunk-TMUPJJDK.js.map → chunk-COHLMZEO.js.map} +0 -0
  90. /package/dist/{chunk-XQPYSB6Y.js.map → chunk-D23KLJQM.js.map} +0 -0
  91. /package/dist/{chunk-QYNAZIHD.js.map → chunk-D27IFECQ.js.map} +0 -0
  92. /package/dist/{chunk-V6W2SJ4Z.js.map → chunk-DEGMU7EO.js.map} +0 -0
  93. /package/dist/{chunk-3GCWEV4G.js.map → chunk-DTTK5OBT.js.map} +0 -0
  94. /package/dist/{chunk-ZBGBLTFN.js.map → chunk-FBA3PMRV.js.map} +0 -0
  95. /package/dist/{chunk-WOUZK5DW.js.map → chunk-FKV6J4FL.js.map} +0 -0
  96. /package/dist/{chunk-QBV4XS4Z.js.map → chunk-GXAX4KMX.js.map} +0 -0
  97. /package/dist/{chunk-2OYKWBJY.js.map → chunk-HQKBSMGN.js.map} +0 -0
  98. /package/dist/{chunk-7N2NUY3F.js.map → chunk-RX5GTE5Z.js.map} +0 -0
  99. /package/dist/{chunk-2VGEHBMK.js.map → chunk-T6TIHUBQ.js.map} +0 -0
  100. /package/dist/{chunk-BJFZBI3O.js.map → chunk-UIAPHRJJ.js.map} +0 -0
  101. /package/dist/{chunk-CQ2QAZBG.js.map → chunk-Y6FMG3PD.js.map} +0 -0
  102. /package/dist/{chunk-NXZRK6KL.js.map → chunk-YKIFMONL.js.map} +0 -0
  103. /package/dist/{chunk-IKYBTQKV.js.map → chunk-YYNQTHEX.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/api.ts"],"sourcesContent":["import {\n ConvertCurrencyParams,\n CreateContractEligibilityParams,\n EmploymentCreateParams,\n EmploymentFullParams,\n getIndexBenefitOffer,\n getShowCompany,\n getShowEmployment,\n getShowFormCountry,\n getShowSchema,\n getSupportedCountry,\n MagicLinkParams,\n patchUpdateEmployment2,\n postConvertCurrencyConverter,\n postCreateContractEligibility,\n postCreateEmployment2,\n postCreateRiskReserve,\n postGenerateMagicLink,\n postInviteEmploymentInvitation,\n PostInviteEmploymentInvitationData,\n putUpdateBenefitOffer,\n UnifiedEmploymentUpsertBenefitOffersRequest,\n} from '@/src/client';\nimport { convertToCents } from '@/src/components/form/utils';\nimport { useClient } from '@/src/context';\nimport { selectCountryStepSchema } from '@/src/flows/Onboarding/json-schemas/selectCountryStep';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { FlowOptions, JSONSchemaFormType } from '@/src/flows/types';\nimport { findFieldsByType } from '@/src/flows/utils';\nimport { JSFFieldset } from '@/src/types/remoteFlows';\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { FieldValues } from 'react-hook-form';\n\nexport const useEmployment = (employmentId: string | undefined) => {\n const { client } = useClient();\n\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n enabled: !!employmentId,\n select: ({ data }) => {\n return data?.data.employment;\n },\n queryFn: async () => {\n const response = await getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n });\n};\n\nexport const useCompany = (companyId: string) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['company', companyId],\n retry: false,\n enabled: !!companyId,\n queryFn: async () => {\n const response = await getShowCompany({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n company_id: companyId,\n },\n });\n\n if (response.error || !response.data) {\n throw new Error('Failed to fetch employment data');\n }\n\n return response;\n },\n select: ({ data }) => {\n return data.data.company;\n },\n });\n};\n\nexport const useBenefitOffers = (employmentId: string | undefined) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n return getIndexBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId as string,\n },\n }).then((response) => {\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers data');\n }\n\n return response;\n });\n },\n select: ({ data }) =>\n data?.data?.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.benefit_group.slug]: {\n value: item.benefit_tier?.slug ?? 'no',\n ...(item.benefit_group?.filter?.slug\n ? { filter: item.benefit_group?.filter?.slug }\n : {}),\n },\n };\n },\n {} as Record<string, { value: string }>,\n ),\n });\n};\n/**\n * Use this hook to invite an employee to the onboarding flow\n * @returns\n */\nexport const useEmploymentInvite = () => {\n const { client } = useClient();\n\n return useMutation({\n mutationFn: (payload: PostInviteEmploymentInvitationData['path']) => {\n return postInviteEmploymentInvitation({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: payload,\n });\n },\n });\n};\n\nexport const useCreateReserveInvoice = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: { employment_slug: string }) => {\n return postCreateRiskReserve({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\n/**\n * Use this hook to get the JSON schema form for the onboarding flow\n * @param param0\n * @returns\n */\nexport const useJSONSchemaForm = ({\n countryCode,\n form,\n fieldValues,\n options,\n query = {},\n}: {\n countryCode: string;\n form: JSONSchemaFormType;\n fieldValues: FieldValues;\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } };\n query?: Record<string, unknown>;\n}) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema?.[form]\n ? {\n json_schema_version: options.jsonSchemaVersion.form_schema[form],\n }\n : {};\n return useQuery({\n queryKey: ['onboarding-json-schema-form', countryCode, form],\n retry: false,\n queryFn: async () => {\n const response = await getShowFormCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n country_code: countryCode,\n form: form,\n },\n query: {\n skip_benefits: true,\n ...query,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch onboarding schema');\n }\n\n return response;\n },\n enabled: options?.queryOptions?.enabled,\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n\n // Contract details contains x-jsf-logic that need to be calculated every time a form value changes\n // In particular there are calculations involving the annual_gross_salary field. However this field value doesn't get\n // here in cents. So we need to convert the money fields to cents, so that the calculations are correct.\n const moneyFields = findFieldsByType(jsfSchema.properties || {}, 'money');\n const moneyFieldsData = moneyFields.reduce<Record<string, number | null>>(\n (acc, field) => {\n acc[field] = convertToCents(fieldValues[field]);\n return acc;\n },\n {},\n );\n\n return {\n meta: {\n 'x-jsf-fieldsets': jsfSchema['x-jsf-fieldsets'] as JSFFieldset,\n },\n ...createHeadlessForm(jsfSchema, {\n initialValues: {\n ...fieldValues,\n ...moneyFieldsData,\n },\n }),\n };\n },\n });\n};\n\nexport const useBenefitOffersSchema = (\n employmentId: string,\n fieldValues: FieldValues,\n options: OnboardingFlowParams['options'],\n) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n const { client } = useClient();\n return useQuery({\n queryKey: ['benefit-offers-schema', employmentId],\n retry: false,\n enabled: !!employmentId,\n queryFn: async () => {\n const response = await getShowSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId,\n },\n query: jsonSchemaQueryParam,\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch benefit offers schema');\n }\n\n return response;\n },\n select: ({ data }) => {\n let jsfSchema = data?.data?.schema || {};\n\n if (options && options.jsfModify?.benefits) {\n const { schema } = modify(jsfSchema, options.jsfModify.benefits);\n jsfSchema = schema;\n }\n const hasFieldValues = Object.keys(fieldValues).length > 0;\n const result = createHeadlessForm(jsfSchema, {\n // we need to clone the fieldValues to prevent side effects\n // if we don't do this, the benefits get included in the other steps\n initialValues: hasFieldValues ? { ...fieldValues } : {},\n });\n return result;\n },\n });\n};\n\n/**\n * Use this hook to create an employment\n * @returns\n */\nexport const useCreateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.form_schema\n ?.employment_basic_information\n ? {\n json_schema_version:\n options.jsonSchemaVersion.form_schema.employment_basic_information,\n }\n : {};\n return useMutation({\n mutationFn: (payload: EmploymentCreateParams) => {\n return postCreateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useUpdateEmployment = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n const jsonSchemaQueryParams = {\n employment_basic_information_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.employment_basic_information,\n employment_contract_details_json_schema_version:\n options?.jsonSchemaVersion?.form_schema?.contract_details,\n };\n\n const filteredQueryParams = Object.fromEntries(\n Object.entries(jsonSchemaQueryParams).filter(\n ([, value]) => value !== undefined,\n ),\n );\n\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: EmploymentFullParams & { employmentId: string }) => {\n return patchUpdateEmployment2({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n skip_benefits: true,\n ...filteredQueryParams,\n },\n });\n },\n });\n};\n\nexport const useUpdateBenefitsOffers = (\n options?: OnboardingFlowParams['options'],\n) => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: UnifiedEmploymentUpsertBenefitOffersRequest & {\n employmentId: string;\n }) => {\n const jsonSchemaQueryParam = options?.jsonSchemaVersion\n ?.benefit_offers_form_schema\n ? {\n json_schema_version:\n options.jsonSchemaVersion.benefit_offers_form_schema,\n }\n : {};\n return putUpdateBenefitOffer({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n path: {\n employment_id: employmentId,\n },\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n\nconst useCountries = (queryOptions?: { enabled?: boolean }) => {\n const { client } = useClient();\n return useQuery({\n ...queryOptions,\n queryKey: ['countries'],\n retry: false,\n queryFn: async () => {\n const response = await getSupportedCountry({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch supported countries');\n }\n\n return response;\n },\n select: ({ data }) => {\n return (\n data?.data?.map((country) => {\n return {\n label: country.name,\n value: country.code,\n };\n }) || []\n );\n },\n });\n};\n\nexport const useCountriesSchemaField = (\n options?: FlowOptions & { queryOptions?: { enabled?: boolean } },\n) => {\n const { data: countries, isLoading } = useCountries(options?.queryOptions);\n\n const { schema: selectCountrySchema } = modify(\n selectCountryStepSchema.data.schema,\n options?.jsfModify || {},\n );\n\n const selectCountryForm = createHeadlessForm(selectCountrySchema);\n\n if (countries) {\n const countryField = selectCountryForm.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n }\n }\n\n return {\n isLoading,\n selectCountryForm,\n };\n};\n\nexport const useConvertCurrency = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: ConvertCurrencyParams) => {\n return postConvertCurrencyConverter({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nexport const useUpsertContractEligibility = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: ({\n employmentId,\n ...payload\n }: { employmentId: string } & CreateContractEligibilityParams) => {\n return postCreateContractEligibility({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: {\n employment_id: employmentId,\n },\n body: payload,\n });\n },\n });\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useEmployment","__name","employmentId","client","useClient","useQuery","data","response","getShowEmployment","useCompany","companyId","getShowCompany","useBenefitOffers","getIndexBenefitOffer","acc","item","useEmploymentInvite","useMutation","payload","postInviteEmploymentInvitation","useCreateReserveInvoice","postCreateRiskReserve","useJSONSchemaForm","countryCode","form","fieldValues","options","query","jsonSchemaQueryParam","getShowFormCountry","jsfSchema","schema","modify","moneyFieldsData","findFieldsByType","field","convertToCents","createHeadlessForm","useBenefitOffersSchema","getShowSchema","hasFieldValues","useCreateEmployment","postCreateEmployment2","useUpdateEmployment","jsonSchemaQueryParams","filteredQueryParams","value","patchUpdateEmployment2","useUpdateBenefitsOffers","putUpdateBenefitOffer","useMagicLink","params","postGenerateMagicLink","useCountries","queryOptions","getSupportedCountry","country","useCountriesSchemaField","countries","isLoading","selectCountrySchema","selectCountryStepSchema","selectCountryForm","countryField","useConvertCurrency","postConvertCurrencyConverter","useUpsertContractEligibility","postCreateContractEligibility"]}
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-P37U34EQ.js";import{addBusinessDays as N,isWeekend as P,nextMonday as x}from"date-fns";import F from"lodash.get";var h={TEXT:"text",TEXTAREA:"textarea",NUMBER:"number",SELECT:"select",COUNTRIES:"countries",TEL:"tel",EMAIL:"email",MONEY:"money",DATE:"date",DATE_RANGE:"date-range",CURRENCIES:"currencies",TIME:"time"},w={CHECKBOX:"checkbox",ACK_CHECK:"ack-check"},c={FILE:"file",RADIO:"radio",RADIO_CARD:"radio-card",GROUP_ARRAY:"group-array",EXTRA:"extra",STATEMENT:"statement",HIDDEN:"hidden",FIELDSET:"fieldset",FIELDSET_FLAT:"fieldset-flat",WORK_SCHEDULE:"work-schedule",WORK_WEEK_SCHEDULE:"work-week-schedule",BENEFITS:"benefits",SIGNATURE:"signature",SELECT_MULTIPLE:"select-multiple",...h,...w};function V(e){return Math.round((e+Number.EPSILON)*100)/100}o(V,"round");function A(e){return parseFloat(e.replace(/,/g,""))}o(A,"convertToValidCost");function L(e){if(e==null||e===""||Number.isNaN(e)||Array.isArray(e)||typeof e=="boolean")return null;let n;return typeof e=="string"?n=A(e):n=e,V(n*100)}o(L,"convertToCents");function C(e){if(e==null||Number.isNaN(e))return null;let n;return typeof e=="string"?n=A(e||"0"):n=e,V(n/100)}o(C,"convertFromCents");var g=o(e=>Object.entries(e||{}).reduce((n,[t,s])=>(Array.isArray(s)?n[t]=s.map(r=>typeof r=="object"&&r!==null?g(r):typeof r=="string"?r.trim():r):typeof s=="object"&&s!==null?n[t]=g(s):n[t]=typeof s=="string"?s.trim():s,n),{}),"trimStringValues");function R(e,n){let t={};return n.forEach(s=>{let r=s.name;if(!(!Object.prototype.hasOwnProperty.call(e,r)&&!(s.type===c.FIELDSET&&s.valueGroupingDisabled))){if(s.type===c.FIELDSET&&s.valueGroupingDisabled){Object.assign(t,R(e,s.fields));return}s.readOnly&&s.defaultValue?t[r]=s.defaultValue:t[r]=e[r]}}),t}o(R,"prefillReadOnlyFields");function I(e,n){return e.reduce((t,s)=>(s.type===c.FIELDSET&&s.valueGroupingDisabled?Object.assign(t,I(s.fields,n)):Object.prototype.hasOwnProperty.call(n,s.name)&&(t[s.name]=n[s.name]),t),{})}o(I,"extractFieldsetFieldsValues");var b={[c.COUNTRIES]:{transformValueToAPI:o(e=>n=>!e.multiple||typeof n=="string"?n:n.map(t=>typeof t=="string"?t:t.name),"transformValueToAPI"),transformValue:o(e=>{let n=o(t=>t?.name||t?.value||t?.label,"getCountryValue");return Array.isArray(e)?e.map(n):n(e)||""},"transformValue")},[c.NUMBER]:{transformValueToAPI:o(()=>e=>{let n=Number(e);return Number.isNaN(n)?e:n},"transformValueToAPI")},[c.MONEY]:{transformValueFromAPI:o(()=>e=>C(e)??"","transformValueFromAPI"),transformValueToAPI:o(()=>L,"transformValueToAPI")},[c.RADIO]:{transformValueToAPI:o(e=>n=>e.transformToBool?n==="yes":n,"transformValueToAPI")},[c.CHECKBOX]:{transformValueToAPI:o(e=>n=>n===void 0?!1:e.const&&n===!0?e.const:n,"transformValueToAPI")},[c.SELECT]:{transformValue:o(e=>Array.isArray(e)?e.map(n=>n.value):e?.value??"","transformValue")}};function y(e={},n){return n.filter(r=>e[r.name]||r.type===c.FIELDSET&&r.valueGroupingDisabled).reduce((r,a)=>{switch(a.type){case c.FIELDSET:{let i=a;if(i.valueGroupingDisabled){let u=I(i.fields,e);Object.assign(r,y(u,i.fields))}else r[a.name]=y(e[a.name],i.fields);break}case c.TEXTAREA:case c.TEXT:{r[a.name]=e[a.name].replace(/\0/g,"");break}case c.GROUP_ARRAY:{let i=a?.fields?.().map(l=>({...l,name:l.nameKey||""})),u=e[a.name]?.map(l=>y(l,i));r[a.name]=u;break}case c.EXTRA:{let i=a;if(i.includeValueToApi!==!1){let u=e[i.name],l=i?.transformValueToAPI||b[i.type]?.transformValueToAPI;if(l){r[i.name]=l(a)(u);break}r[i.name]=u;break}r[i.name]=void 0;break}default:{let i=e[a.name],u=a?.transformValueToAPI||b[a.type]?.transformValueToAPI;if(u){r[a.name]=u(a)(i);break}r[a.name]=i;break}}return a.forcedValue!==void 0&&(r[a.name]=a.forcedValue),r},{...e})}o(y,"parseFormValuesToAPI");function D(e,n){return e.visibilityCondition?e.visibilityCondition(n):typeof e.isVisible<"u"?!!e.isVisible:!0}o(D,"isFieldVisible");function T(e,n){return e.calculateDynamicProperties?{...e,...e.calculateDynamicProperties(n)||{}}:e}o(T,"applyFieldDynamicProperties");function E(e,n,t,s){let r={};return n.map(a=>T(a,e)).forEach(a=>{let i=a.name;s&&(i=i?`${s}.${a.name}`:s);let u=F(e,i);if(!(!D(a,e)&&!(t&&u))&&!a.meta?.ignoreValue)if(a.type==="fieldset"&&a.valueGroupingDisabled)Object.assign(r,E(e,a.fields,t,i));else if(Array.isArray(a.fields))r[a.name]=E(e,a.fields,t,i);else{if(u===void 0)return;r[a.name]=u}}),r}o(E,"excludeValuesInvisible");function j(e){return Object.fromEntries(Object.entries(e).filter(([,n])=>n!=null&&n!==""))}o(j,"removeEmptyValues");function M(e,n,t){let s=t?.keepInvisibleValues?e:E(e,n),r=y(s,n),a=g(r),i=j(a);return R(i,n)}o(M,"parseSubmitValues");function W(e,n,t={isPartialValidation:!1}){return M(e,n,{keepInvisibleValues:t?.isPartialValidation})}o(W,"parseJSFToValidate");function G(e){switch(e){case c.FILE:return;default:return""}}o(G,"getDefaultValueForType");function O(e,n){let t=F(e,n.name),s=n?.transformValueFromAPI||b[n.type]?.transformValueFromAPI;if(s)return s(n)(t);let r=typeof n.value=="function"?n.value(t,e):null,a=typeof n.value!="function"?n.value:null,i=n.checkboxValue===!0?t||!1:null,u=o(l=>l===""?void 0:l,"excludeString");return u(r)??u(t)??u(a)??u(n.default)??i??G(n.type)}o(O,"getInitialDefaultValue");function S(e,n,t){let s={},r=e.name;t&&(r=r?`${t}.${r}`:t);let a=e.fields;if(Array.isArray(a)){let i={};a.forEach(u=>{Object.assign(i,S(u,n,r))}),e.type===c.FIELDSET&&e.valueGroupingDisabled?Object.assign(s,i):s[e.name]=i}else s[e.name]=O(n,{...e,name:r});return s}o(S,"getInitialSubFieldValues");function U(e,n){let t={},s=n;return e.map(r=>T(r,s)).forEach(r=>{switch(r.type){case c.FIELDSET:{if(r.valueGroupingDisabled)Object.assign(t,U(r.fields,s));else{let a=S(r,s);Object.assign(t,a)}break}default:{t[r.name]||(t[r.name]=O(s,r));break}}}),t}o(U,"getInitialValues");function _({fields:e=[],fieldsets:n={},values:t}){let s=Object.keys(n);if(!s?.length)return e;let r=new Set(s.flatMap(l=>n[l]?.propertiesByName??[]));return s.map(l=>{let{propertiesByName:d=[],...p}=n[l],f=d.map(m=>e.find(k=>k.name===m)).filter(m=>!!m);return{...p,name:l,type:"fieldset-flat",inputType:"fieldset-flat",fields:f,label:n[l].title,isVisible:f.map(m=>T(m,t)).some(m=>D(m,t))}}).reduce((l,d)=>{let p=[...l],f=d.fields[0]?l.findIndex(m=>m.name===d.fields[0].name):l.length;return p.splice(f,0,d),p},e).filter(l=>!r.has(l.name))}o(_,"getFieldsWithFlatFieldsets");function X(e,n){let t=n;return e.forEach(s=>{"const"in s&&(t=Object.fromEntries(Object.entries(n).map(([r,a])=>r===s.name?[r,s.const]:[r,a])))}),t}o(X,"enableAckFields");function H(e){let n=new Date;n.setDate(n.getUTCDate()),n.setHours(0,0,0,0);let t=N(n,e+1);return P(t)?x(t):t}o(H,"getMinStartDate");export{L as a,C as b,W as c,U as d,_ as e,X as f,H as g};
2
- //# sourceMappingURL=chunk-N6SBUVA6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Field } from '@/src/flows/types';\nimport { $TSFixMe, Fields } from '@remoteoss/json-schema-form';\nimport { addBusinessDays, isWeekend, nextMonday } from 'date-fns';\nimport get from 'lodash.get';\n\nconst textInputTypes = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n NUMBER: 'number',\n SELECT: 'select',\n COUNTRIES: 'countries',\n TEL: 'tel',\n EMAIL: 'email',\n MONEY: 'money',\n DATE: 'date',\n DATE_RANGE: 'date-range',\n CURRENCIES: 'currencies',\n TIME: 'time',\n} as const;\n\nconst checkboxTypes = {\n CHECKBOX: 'checkbox',\n ACK_CHECK: 'ack-check',\n} as const;\n\nconst supportedTypes = {\n FILE: 'file',\n RADIO: 'radio',\n /** @deprecated */\n RADIO_CARD: 'radio-card',\n GROUP_ARRAY: 'group-array',\n EXTRA: 'extra',\n STATEMENT: 'statement',\n HIDDEN: 'hidden',\n FIELDSET: 'fieldset',\n FIELDSET_FLAT: 'fieldset-flat',\n WORK_SCHEDULE: 'work-schedule',\n WORK_WEEK_SCHEDULE: 'work-week-schedule',\n /** @deprecated we still display benefits in read-only contract details view, but never in any form */\n BENEFITS: 'benefits',\n SIGNATURE: 'signature',\n SELECT_MULTIPLE: 'select-multiple',\n ...textInputTypes,\n ...checkboxTypes,\n} as const;\n\nfunction round(value: number): number {\n return Math.round((value + Number.EPSILON) * 100) / 100;\n}\n\nfunction convertToValidCost(value: string) {\n return parseFloat(value.replace(/,/g, ''));\n}\n\nexport function convertToCents(\n amount?: number | string | string[] | null | boolean,\n) {\n if (\n amount == null ||\n amount === '' ||\n Number.isNaN(amount) ||\n Array.isArray(amount) ||\n typeof amount === 'boolean'\n ) {\n return null;\n }\n\n let validAmount: number;\n\n if (typeof amount === 'string') {\n validAmount = convertToValidCost(amount);\n } else {\n validAmount = amount;\n }\n\n return round(validAmount * 100);\n}\n\nexport function convertFromCents(amount?: number | string | null) {\n if (amount == null || Number.isNaN(amount)) return null;\n\n let normalizedValue: number;\n\n if (typeof amount === 'string') {\n normalizedValue = convertToValidCost(amount || '0');\n } else {\n normalizedValue = amount;\n }\n\n return round(normalizedValue / 100);\n}\n\nconst trimStringValues = (values: Record<string, any>) =>\n Object.entries(values || {}).reduce<Record<string, any>>(\n (result, [key, value]) => {\n if (Array.isArray(value)) {\n // If the value is an array, recursively process each element\n result[key] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? trimStringValues(item)\n : typeof item === 'string'\n ? item.trim()\n : item,\n );\n } else if (typeof value === 'object' && value !== null) {\n // If the value is an object, recursively process it\n result[key] = trimStringValues(value);\n } else {\n // Otherwise, trim the string or keep the value as is\n result[key] = typeof value === 'string' ? value.trim() : value;\n }\n return result;\n },\n {},\n );\n\n/**\n * Given a list of form values, modify the ones that are readOnly,\n * based on their field config, by adding its defaultValue.\n * This is needed to support readOnly fields that are also conditional\n * based on the \"pivotName\" workaround.\n * @param {Object} values - List with form values { name: value }.\n * @param {Array} fields - Respective form fields configuration.\n */\nfunction prefillReadOnlyFields(values: Record<string, any>, fields: any[]) {\n const newValues: Record<string, any> = {};\n\n fields.forEach((field) => {\n const fieldName = field.name;\n\n if (\n !Object.prototype.hasOwnProperty.call(values, fieldName!) &&\n !(field.type === supportedTypes.FIELDSET && field.valueGroupingDisabled)\n )\n return;\n\n if (field.type === supportedTypes.FIELDSET && field.valueGroupingDisabled) {\n Object.assign(newValues, prefillReadOnlyFields(values, field.fields));\n return;\n }\n\n if (field.readOnly && field.defaultValue) {\n newValues[fieldName!] = field.defaultValue;\n } else {\n newValues[fieldName!] = values[fieldName!];\n }\n });\n\n return newValues;\n}\n/**\n * Recursively extracts fieldsets' fields values and maps them to the field name\n * For nested fields that are fieldsets with valueGroupingDisabled, the values\n * are extracted one level up\n *\n * @param {Array} fields - Fieldset fields configuration.\n * @param {Object} formValues - List with form values { name: value }.\n * @return {Object} – Raw form values mapped to the field name\n */\nfunction extractFieldsetFieldsValues(\n fields: any[],\n formValues: Record<string, unknown>,\n) {\n return fields.reduce<Record<string, any>>((nestedAcc, subField) => {\n const isFieldsetValueGroupingDisabled =\n subField.type === supportedTypes.FIELDSET &&\n subField.valueGroupingDisabled;\n\n if (isFieldsetValueGroupingDisabled) {\n Object.assign(\n nestedAcc,\n extractFieldsetFieldsValues(subField.fields, formValues),\n );\n } else if (\n Object.prototype.hasOwnProperty.call(formValues, subField.name!)\n ) {\n nestedAcc[subField.name!] = formValues[subField.name!];\n }\n\n return nestedAcc;\n }, {});\n}\n\nexport const fieldTypesTransformations: Record<string, any> = {\n [supportedTypes.COUNTRIES]: {\n /**\n * @param {String[] | { name: String }[]} value\n * - Excepted: array of strings.\n * - Edge cases: array of objects. (when using dangerousTransformValue)\n * @returns {String[]} - List of countries\n * @example expected: ['Peru', 'Germany'] -> ['Peru', 'Germany']\n * @example edge cases: [{name: 'Peru'}, {name: 'Germany'}] -> ['Peru', 'Germany']\n */\n transformValueToAPI:\n (field: any) => (selectedCountries: string[] | { name: string }[]) => {\n if (!field.multiple || typeof selectedCountries === 'string') {\n return selectedCountries;\n }\n // NOTE: The value should be an array of strings, however legacy data can come as\n // an array of country objects. So, we always send an array of strings to normalize\n // the data (eg old form values being modified) until DB migration is done !5667\n return selectedCountries.map((option) =>\n typeof option === 'string' ? option : option.name,\n );\n },\n /**\n * Used for react-select, where the country selected is transformed\n * before saving on Formik state. Supports both solo and multi select\n * @param {Object|Object[]} selectedCountry[] - Current selected options\n * @param {String} selectedCountry[].value\n * @param {String} selectedCountry[].name\n * @param {String} selectedCountry[].label\n * @returns {String[]} - List of countries selected\n * @example\n * [{ value: 'Hungria' }] -> ['Hungria']\n */\n transformValue: (selectedCountry: any | any[]) => {\n // name or label are used in dragon. value is used in json-schema-form\n // TODO: it should be the same everywhere — read more at !5667\n const getCountryValue = (opt: any) =>\n opt?.name || opt?.value || opt?.label;\n return Array.isArray(selectedCountry)\n ? selectedCountry.map(getCountryValue) // support multi countries\n : getCountryValue(selectedCountry) || ''; // Fallback to '' in case user removes all countries\n },\n },\n [supportedTypes.NUMBER]: {\n transformValueToAPI: () => (value: string) => {\n // this prevents values with letters such as \"2r\" from being considered valid\n // if the input is invalid, number().cast will return NaN\n const castValue = Number(value);\n\n if (Number.isNaN(castValue)) {\n return value;\n }\n\n return castValue;\n },\n },\n [supportedTypes.MONEY]: {\n transformValueFromAPI: () => (value: string | number) =>\n convertFromCents(value) ?? '',\n transformValueToAPI: () => convertToCents,\n },\n [supportedTypes.RADIO]: {\n transformValueToAPI: (field: any) => (value: string) => {\n if (field.transformToBool) {\n return value === 'yes';\n }\n return value;\n },\n },\n [supportedTypes.CHECKBOX]: {\n transformValueToAPI: (field: any) => (value: string | boolean) => {\n if (value === undefined) {\n return false;\n }\n\n if (field.const && value === true) {\n return field.const;\n }\n return value;\n },\n },\n [supportedTypes.SELECT]: {\n /**\n * Used for react-select, where the value is transformed\n * before saving on Formik state.\n * @param {Object | Object[]} option - Object structure with options config\n * @param {String} option[].value - Key for the API\n * @param {Array} this.options[].label - Friendly label\n * @example\n * [{ value: '1', label: 'One' }, { value: '2', label: 'Two' }] -> [\"One\", \"Two\"]\n * { value: '1', label: 'One' } -> \"One\"\n * {} -> \"\"\n */\n transformValue: (option: any | any[]) =>\n Array.isArray(option)\n ? option.map((opt) => opt.value) // multi-options\n : (option?.value ?? ''), // Fallback to '' in case user removes all options,\n },\n};\n\nexport function parseFormValuesToAPI(\n formValues: Record<string, any> = {},\n fields: any[],\n) {\n const filteredFields = fields.filter(\n (field) =>\n formValues[field.name!] ||\n (field.type === supportedTypes.FIELDSET && field.valueGroupingDisabled),\n );\n\n const parsedFormValues = filteredFields.reduce(\n (acc, field) => {\n switch (field.type) {\n case supportedTypes.FIELDSET: {\n const fieldset = field;\n if (fieldset.valueGroupingDisabled) {\n const nestedFormValues = extractFieldsetFieldsValues(\n fieldset.fields,\n formValues,\n );\n\n Object.assign(\n acc,\n parseFormValuesToAPI(nestedFormValues, fieldset.fields),\n );\n } else {\n acc[field.name!] = parseFormValuesToAPI(\n formValues[field.name!],\n fieldset.fields,\n );\n }\n break;\n }\n\n case supportedTypes.TEXTAREA:\n case supportedTypes.TEXT: {\n // Attempt to remove null bytes from form values - https://gitlab.com/remote-com/employ-starbase/tracker/-/issues/10670\n acc[field.name] = formValues[field.name].replace(/\\0/g, '');\n break;\n }\n\n case supportedTypes.GROUP_ARRAY: {\n // NOTE: The field `name` in group arrays represents a path, but we only\n // need the last part of it which is represented by `nameKey`.\n\n const transformedFields = field?.fields?.().map((subField: any) => ({\n ...subField,\n name: subField.nameKey || '',\n }));\n\n // Null check necessary for case where no fields are set due to optional check\n const parsedFieldValues = formValues[field.name]?.map(\n (fieldValues: Record<string, any>) =>\n parseFormValuesToAPI(fieldValues, transformedFields),\n );\n\n acc[field.name] = parsedFieldValues;\n break;\n }\n case supportedTypes.EXTRA: {\n const extraField = field;\n if (extraField.includeValueToApi !== false) {\n const formValue = formValues[extraField.name];\n const fieldTransformValueToAPI =\n extraField?.transformValueToAPI ||\n fieldTypesTransformations[extraField.type]?.transformValueToAPI;\n\n // logErrorOnMissingComplimentaryParams(field);\n\n if (fieldTransformValueToAPI) {\n acc[extraField.name] = fieldTransformValueToAPI(field)(formValue);\n break;\n }\n\n acc[extraField.name] = formValue;\n break;\n }\n acc[extraField.name] = undefined;\n break;\n }\n default: {\n const formValue = formValues[field.name];\n const fieldTransformValueToAPI =\n field?.transformValueToAPI ||\n fieldTypesTransformations[field.type]?.transformValueToAPI;\n // logErrorOnMissingComplimentaryParams(field);\n if (fieldTransformValueToAPI) {\n acc[field.name] = fieldTransformValueToAPI(field)(formValue);\n break;\n }\n acc[field.name] = formValue;\n break;\n }\n }\n\n // this occurs when const === default in a JSON Schema for a given field.\n // without this, values such as money types won't use the correct value.\n if (field.forcedValue !== undefined) {\n acc[field.name!] = field.forcedValue;\n }\n\n return acc;\n },\n { ...formValues },\n );\n\n return parsedFormValues;\n}\n\nfunction isFieldVisible(field: any, formValues: Record<string, unknown>) {\n if (field.visibilityCondition) {\n return field.visibilityCondition(formValues);\n }\n\n if (typeof field.isVisible !== 'undefined') {\n return Boolean(field.isVisible);\n }\n\n return true;\n}\n\nfunction applyFieldDynamicProperties(\n field: any,\n values: Record<string, unknown> | Record<string, unknown>[],\n) {\n if (field.calculateDynamicProperties) {\n return {\n ...field,\n ...(field.calculateDynamicProperties(values) || {}),\n };\n }\n\n return field;\n}\n\nfunction excludeValuesInvisible(\n values: any,\n fields: any[],\n keepTruthyInvisibleValues?: boolean,\n parentFieldKeyPath?: string,\n) {\n const valuesAsked: Record<string, any> = {};\n\n fields\n .map((field) => applyFieldDynamicProperties(field, values))\n .forEach((field) => {\n let fieldKeyPath = field.name;\n if (parentFieldKeyPath) {\n fieldKeyPath = fieldKeyPath\n ? `${parentFieldKeyPath}.${field.name}`\n : parentFieldKeyPath;\n }\n\n const valueOfField = get(values, fieldKeyPath!);\n\n // keepTruthyInvisibleValues: false/undefined -> remove invisible field\n // keepTruthyInvisibleValues: true -> keep invisible field if it has a value\n if (\n !isFieldVisible(field, values) &&\n !(keepTruthyInvisibleValues && !!valueOfField)\n ) {\n return;\n }\n\n if (field.meta?.ignoreValue) {\n return;\n }\n\n if (field.type === 'fieldset' && field.valueGroupingDisabled) {\n Object.assign(\n valuesAsked,\n excludeValuesInvisible(\n values,\n field.fields,\n keepTruthyInvisibleValues,\n fieldKeyPath,\n ),\n );\n } else if (Array.isArray(field.fields)) {\n valuesAsked[field.name!] = excludeValuesInvisible(\n values,\n field.fields,\n keepTruthyInvisibleValues,\n fieldKeyPath,\n );\n } else {\n if (valueOfField === undefined) {\n return;\n }\n valuesAsked[field.name!] = valueOfField;\n }\n });\n\n return valuesAsked;\n}\n\nfunction removeEmptyValues<T extends Record<string, any>>(\n obj: T,\n): Record<string, any> {\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([, value]) => value !== undefined && value !== null && value !== '',\n ),\n );\n}\n\nexport function parseSubmitValues(\n formValues: Record<string, any>,\n fields: any[],\n config?: { keepInvisibleValues?: boolean },\n) {\n const visibleFormValues = config?.keepInvisibleValues\n ? formValues\n : excludeValuesInvisible(formValues, fields);\n const convertedFormValues = parseFormValuesToAPI(visibleFormValues, fields);\n const formValuesWithTrimmedStrings = trimStringValues(convertedFormValues);\n\n const formValuesWithUndefined = removeEmptyValues(\n formValuesWithTrimmedStrings,\n );\n\n const valuesWithReadOnly = prefillReadOnlyFields(\n formValuesWithUndefined,\n fields,\n );\n return valuesWithReadOnly;\n}\n\nexport function parseJSFToValidate(\n formValues: Record<string, any>,\n fields: Fields,\n config: { isPartialValidation: boolean } = {\n isPartialValidation: false,\n },\n) {\n const valuesParsed = parseSubmitValues(formValues, fields, {\n /* We cannot exclude invisible fields (excludeValuesInvisible) because\n they are needed for conditional fields validations */\n keepInvisibleValues: config?.isPartialValidation,\n });\n return valuesParsed;\n}\n\nfunction castFieldTo<T>(field: Field) {\n return field as unknown as T;\n}\n\nfunction getDefaultValueForType(type: string) {\n switch (type) {\n case supportedTypes.FILE:\n return undefined; // Allows fallback values in function declarations to be used\n default:\n return '';\n }\n}\n\nfunction getInitialDefaultValue(\n defaultValues: Record<string, any>,\n field: Field,\n) {\n // lodash get is needed because some values could be nested object, like billing address\n // use camelCase to support forms with fields in snake_case or kebab_case.\n const defaultFieldValue = get(defaultValues, field.name);\n const fieldTransformValueFromAPI =\n field?.transformValueFromAPI ||\n fieldTypesTransformations[field.type]?.transformValueFromAPI;\n\n if (fieldTransformValueFromAPI) {\n return fieldTransformValueFromAPI(field)(defaultFieldValue);\n }\n\n // TODO: We need to get rid of value as fn for json-schema. Related !5560\n const generatedValue =\n typeof field.value === 'function'\n ? field.value(defaultFieldValue, defaultValues)\n : null;\n\n // field.value is deprecated. should use \"default\" instead.\n const defaultValueDeprecated =\n typeof field.value !== 'function' ? field.value : null;\n const initialValueForCheckboxAsBool =\n castFieldTo<$TSFixMe>(field).checkboxValue === true\n ? defaultFieldValue || false\n : null;\n\n // nullish coalescing but excluding empty strings. (to support 0 (zero) as valid numbers)\n const excludeString = (val: any) => (val === '' ? undefined : val);\n\n return (\n excludeString(generatedValue) ??\n excludeString(defaultFieldValue) ??\n excludeString(defaultValueDeprecated) ??\n excludeString(field.default) ??\n initialValueForCheckboxAsBool ??\n getDefaultValueForType(field.type)\n );\n}\n\n/**\n * Get initial values for sub fields within fieldsets\n * @param {Object} field The form field\n * @param {Object} defaultValues The form default values\n * @param {String=} parentFieldKeyPath The path to the parent field using dot-notation\n * @returns {Object} The initial values for a fieldset\n */\nfunction getInitialSubFieldValues(\n field: $TSFixMe,\n defaultValues: Record<string, unknown>,\n parentFieldKeyPath?: string,\n) {\n const initialValue: Record<string, Record<string, unknown>> = {};\n\n let fieldKeyPath = field.name;\n\n if (parentFieldKeyPath) {\n fieldKeyPath = fieldKeyPath\n ? `${parentFieldKeyPath}.${fieldKeyPath}`\n : parentFieldKeyPath;\n }\n\n const subFields = field.fields;\n\n if (Array.isArray(subFields)) {\n const subFieldValues = {};\n\n subFields.forEach((subField) => {\n Object.assign(\n subFieldValues,\n getInitialSubFieldValues(subField, defaultValues, fieldKeyPath),\n );\n });\n\n if (field.type === supportedTypes.FIELDSET && field.valueGroupingDisabled) {\n Object.assign(initialValue, subFieldValues);\n } else {\n initialValue[field.name!] = subFieldValues;\n }\n } else {\n initialValue[field.name!] = getInitialDefaultValue(defaultValues, {\n ...field,\n // NOTE: To utilize the `get` function from `lodash` in `getInitialDefaultValue` correctly\n // we need to use the field path instead of just its name.\n name: fieldKeyPath,\n });\n }\n\n return initialValue;\n}\n\nexport function getInitialValues(\n fields: Fields,\n defaultValues: Record<string, unknown>,\n) {\n const initialValues: Record<string, unknown> = {};\n const defaultFieldValues = defaultValues;\n\n // loop over fields array\n // if prop does not exit in the initialValues object,\n // pluck off the name and value props and add it to the initialValues object;\n fields\n .map((field) => applyFieldDynamicProperties(field, defaultFieldValues))\n .forEach((field) => {\n switch (field.type) {\n case supportedTypes.FIELDSET: {\n if (field.valueGroupingDisabled) {\n Object.assign(\n initialValues,\n getInitialValues(field.fields, defaultFieldValues),\n );\n } else {\n const subFieldValues = getInitialSubFieldValues(\n field,\n defaultFieldValues,\n );\n Object.assign(initialValues, subFieldValues);\n }\n break;\n }\n default: {\n if (!initialValues[field.name]) {\n initialValues[field.name] = getInitialDefaultValue(\n defaultFieldValues,\n field,\n );\n }\n break;\n }\n }\n });\n\n return initialValues;\n}\n\n/**\n * Wraps fields listed in fieldsets with a fieldset field.\n * @param fields - Complete fields list.\n * @param fieldsets - fields list to be wrapped in a fieldset field.\n * @param values - Values for each field.\n * @returns The fields with the fieldsets wrapped.\n */\nexport function getFieldsWithFlatFieldsets({\n fields = [],\n fieldsets = {},\n values,\n}: {\n fields: any[];\n fieldsets: Record<string, { propertiesByName: string[]; title: string }>;\n values: Record<string, unknown>;\n}) {\n const flatFieldsetsKeys = Object.keys(fieldsets);\n\n if (!flatFieldsetsKeys?.length) {\n return fields;\n }\n\n const flatFieldsetsFieldNames = new Set(\n flatFieldsetsKeys.flatMap(\n (flatFieldsetKey) => fieldsets[flatFieldsetKey]?.propertiesByName ?? [],\n ),\n );\n\n const flatFieldsetsWithFields = flatFieldsetsKeys.map((flatFieldsetKey) => {\n const { propertiesByName: flatFieldsetFields = [], ...rest } =\n fieldsets[flatFieldsetKey];\n\n const childFields = flatFieldsetFields\n .map((name) => fields.find((f) => f.name === name))\n .filter((field): field is any => !!field);\n\n return {\n ...rest,\n name: flatFieldsetKey,\n type: 'fieldset-flat',\n inputType: 'fieldset-flat',\n fields: childFields,\n label: fieldsets[flatFieldsetKey].title,\n // Hide the fieldset if none of the children fields are visible.\n isVisible: childFields\n .map((childField) => applyFieldDynamicProperties(childField, values))\n .some((childField) => isFieldVisible(childField, values)),\n };\n });\n\n const sortedFields = flatFieldsetsWithFields.reduce((accumulator, field) => {\n const accumulatedFieldsSorted = [...accumulator];\n\n /**\n * We place the flat fieldset at the original position of its first field.\n * If no field is found, we move it to the end.\n */\n const fieldsetPosition = field.fields[0]\n ? accumulator.findIndex(\n (accumulatorItem) => accumulatorItem.name === field.fields[0].name,\n )\n : accumulator.length;\n\n accumulatedFieldsSorted.splice(\n fieldsetPosition,\n 0,\n field as unknown as any,\n );\n\n return accumulatedFieldsSorted;\n }, fields);\n\n const filteredFields = sortedFields.filter(\n (field) => !flatFieldsetsFieldNames.has(field.name!),\n );\n\n return filteredFields;\n}\n\nexport function enableAckFields(\n fields: Fields,\n values: Record<string, unknown>,\n) {\n let result = values;\n fields.forEach((field) => {\n if ('const' in field) {\n result = Object.fromEntries(\n Object.entries(values).map(([k, v]) => {\n if (k === field.name) {\n return [k, field.const];\n }\n return [k, v];\n }),\n );\n }\n });\n return result;\n}\n\n/**\n * Get the minimum start date for the onboarding process.\n * @param minOnBoardingTime\n * @returns Date\n */\nexport function getMinStartDate(minOnBoardingTime: number) {\n const today = new Date();\n\n // Make sure our base date is UTC and set the time to 00:00:00\n today.setDate(today.getUTCDate());\n today.setHours(0, 0, 0, 0);\n\n // The + 1 ensures you get the full preparation time before the employee can actually start working.\n // It's the difference between \"preparation completes on this day\" vs \"earliest possible start date after preparation\".\n const minDate = addBusinessDays(today, minOnBoardingTime + 1);\n return isWeekend(minDate) ? nextMonday(minDate) : minDate;\n}\n"],"mappings":"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","names":["addBusinessDays","isWeekend","nextMonday","get","textInputTypes","checkboxTypes","supportedTypes","round","value","__name","convertToValidCost","convertToCents","amount","validAmount","convertFromCents","normalizedValue","trimStringValues","values","result","key","item","prefillReadOnlyFields","fields","newValues","field","fieldName","extractFieldsetFieldsValues","formValues","nestedAcc","subField","fieldTypesTransformations","selectedCountries","option","selectedCountry","getCountryValue","opt","castValue","parseFormValuesToAPI","acc","fieldset","nestedFormValues","transformedFields","parsedFieldValues","fieldValues","extraField","formValue","fieldTransformValueToAPI","isFieldVisible","applyFieldDynamicProperties","excludeValuesInvisible","keepTruthyInvisibleValues","parentFieldKeyPath","valuesAsked","fieldKeyPath","valueOfField","get","removeEmptyValues","obj","parseSubmitValues","config","visibleFormValues","convertedFormValues","formValuesWithTrimmedStrings","formValuesWithUndefined","parseJSFToValidate","getDefaultValueForType","type","supportedTypes","__name","getInitialDefaultValue","defaultValues","field","defaultFieldValue","get","fieldTransformValueFromAPI","fieldTypesTransformations","generatedValue","defaultValueDeprecated","initialValueForCheckboxAsBool","excludeString","val","getInitialSubFieldValues","parentFieldKeyPath","initialValue","fieldKeyPath","subFields","subFieldValues","subField","getInitialValues","fields","initialValues","defaultFieldValues","applyFieldDynamicProperties","getFieldsWithFlatFieldsets","fieldsets","values","flatFieldsetsKeys","flatFieldsetsFieldNames","flatFieldsetKey","flatFieldsetFields","rest","childFields","name","f","childField","isFieldVisible","accumulator","accumulatedFieldsSorted","fieldsetPosition","accumulatorItem","enableAckFields","result","k","v","getMinStartDate","minOnBoardingTime","today","minDate","addBusinessDays","isWeekend","nextMonday"]}
@@ -1,2 +0,0 @@
1
- import{a as Ke}from"./chunk-A27ASO7K.js";import{a as V}from"./chunk-IXZAHZ7B.js";import{a as Ce,b as O}from"./chunk-SHFIZENN.js";import{b as S}from"./chunk-3ZWDIEEM.js";import{a as ne,b as ie,c as _,d as Ue,e as Je,f as qe,g as je,h as P,i as R,j as N,k as w,l as D,m as I}from"./chunk-DPLXEXMO.js";import{e as ze,g as Ge}from"./chunk-N6SBUVA6.js";import{a as u}from"./chunk-HGLI6PUM.js";import{a as o}from"./chunk-P37U34EQ.js";import{Fragment as jo}from"react";import*as Ye from"react";import*as re from"@radix-ui/react-checkbox";import{Check as qt}from"lucide-react";import{jsx as be}from"react/jsx-runtime";var se=Ye.forwardRef(({className:e,...t},r)=>be(re.Root,{ref:r,className:u("peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary",e),...t,children:be(re.Indicator,{className:u("flex items-center justify-center text-current"),children:be(qt,{className:"h-4 w-4"})})}));se.displayName=re.Root.displayName;import{Fragment as jt,jsx as A,jsxs as le}from"react/jsx-runtime";function me({name:e,defaultValue:t,description:r,label:a,onChange:s,multiple:n,options:p,component:g,...F}){let{components:c}=S(),{control:i}=_(),f=o((d,m,v)=>{let l=v.value?[...v.value]:[];m?l.includes(d)||v.onChange([...l,d]):v.onChange(l.filter(y=>y!==d))},"handleCheckboxChange");return A(P,{control:i,name:e,defaultValue:t,render:({field:d,fieldState:m})=>{let v=g||c?.checkbox;if(v){let l={name:e,description:r,label:a,defaultValue:t,multiple:n,options:p,...F};return A(v,{field:{...d,onChange:o(y=>{if(n){let{checked:C,value:b}=y.target;f(b,C,d),s?.(C);return}d.onChange(y),s?.(y)},"onChange")},fieldState:m,fieldData:l})}return le(R,{"data-field":e,className:u(`RemoteFlows__CheckBoxField__Item__${e}`),children:[A(w,{children:le(jt,{children:[p&&n?A(N,{children:a}):null,p&&n?p.map(l=>le("div",{className:"flex space-x-2",children:[A(se,{id:l.value,onCheckedChange:y=>{f(l.value,y===!0,d),s?.(y,l.value)},checked:d.value?.includes(l.value),className:"RemoteFlows__CheckBox__Input"}),A(N,{htmlFor:l.value,className:"mb-0 RemoteFlows__CheckBox__Label",children:l.label})]},l.value)):le("div",{className:"flex space-x-2",children:[A(se,{id:e,onCheckedChange:l=>{d.onChange(l),s?.(l)},checked:d.value,className:"RemoteFlows__CheckBox__Input"}),A(N,{htmlFor:e,className:"mb-0 RemoteFlows__CheckBox__Label",children:a})]})]})}),r&&A(D,{children:r}),m.error&&A(I,{})]})}})}o(me,"CheckBoxField");import{CalendarIcon as Qt}from"lucide-react";import{PopoverClose as Zt}from"@radix-ui/react-popover";import{ChevronLeft as Kt,ChevronRight as Yt}from"lucide-react";import{DayPicker as Xt}from"react-day-picker";import{jsx as Se}from"react/jsx-runtime";function Xe({className:e,classNames:t,showOutsideDays:r=!0,...a}){return Se(Xt,{showOutsideDays:r,className:u("p-3",e),classNames:{months:"flex flex-col sm:flex-row gap-2",month:"flex flex-col gap-4",caption:"flex justify-center pt-1 relative items-center w-full",caption_label:"text-sm font-medium",nav:"flex items-center gap-1",nav_button:u(Ce({variant:"outline"}),"size-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-x-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:u("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md",a.mode==="range"?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:u(Ce({variant:"ghost"}),"size-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",day_range_end:"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground aria-selected:text-muted-foreground",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...t},components:{IconLeft:o(({className:s,...n})=>Se(Kt,{className:u("size-4",s),...n}),"IconLeft"),IconRight:o(({className:s,...n})=>Se(Yt,{className:u("size-4",s),...n}),"IconRight")},...a})}o(Xe,"Calendar");import*as z from"@radix-ui/react-popover";import{jsx as ce}from"react/jsx-runtime";function de({...e}){return ce(z.Root,{"data-slot":"popover",...e})}o(de,"Popover");function pe({...e}){return ce(z.Trigger,{"data-slot":"popover-trigger",...e})}o(pe,"PopoverTrigger");function ue({className:e,align:t="center",sideOffset:r=4,...a}){return ce(z.Portal,{children:ce(z.Content,{"data-slot":"popover-content",align:t,sideOffset:r,className:u("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...a})})}o(ue,"PopoverContent");import{format as Qe}from"date-fns";import{Fragment as eo,jsx as W,jsxs as Pe}from"react/jsx-runtime";function Ze({description:e,label:t,name:r,minDate:a,onChange:s,component:n,...p}){let{components:g}=S(),{control:F}=_(),c;return p.meta?.mot&&typeof p.meta.mot=="number"?c=Ge(p.meta.mot):a&&(c=new Date(a)),W(P,{control:F,name:r,render:({field:i,fieldState:f})=>{let d=n||g?.date;if(d){let m={description:e,label:t,name:r,onChange:s,...c&&{minDate:c.toISOString()},...p};return W(d,{field:{...i,onChange:o(v=>{i.onChange(v),s?.(v)},"onChange")},fieldState:f,fieldData:m})}return Pe(R,{"data-field":r,className:`flex flex-col RemoteFlows__DatePickerField__Item__${r}`,children:[W(N,{className:"RemoteFlows__DatePickerField__Label",children:t}),Pe(de,{children:[W(pe,{asChild:!0,children:W(w,{children:W("div",{children:Pe(O,{type:"button",variant:"outline",className:u("w-full pl-3 text-left font-normal",!i.value&&"text-muted-foreground"),"data-testid":`date-picker-button-${r}`,children:[i.value&&W(eo,{children:Qe(i.value,"yyyy-MM-dd")}),W(Qt,{className:"ml-auto h-4 w-4 opacity-50"})]})})})}),W(ue,{className:"w-auto p-0 RemoteFlows__DatepickerField__PopoverContent",align:"start",children:W(Xe,{mode:"single",className:"RemoteFlows__DatepickerField__Calendar",selected:i.value?new Date(i.value):void 0,onSelect:m=>{i.onChange(m?Qe(m,"yyyy-MM-dd"):null),s?.(m)},defaultMonth:c,components:{DayContent:o(m=>W(Zt,{children:m.date.getDate()}),"DayContent")},...c&&{disabled:o(m=>m<c,"disabled")}})})]}),e?W(D,{children:e}):null,f.error&&W(I,{className:"RemoteFlows__DatePickerField__Error"})]})}})}o(Ze,"DatePickerField");import{cva as to}from"class-variance-authority";import{jsx as Ne}from"react/jsx-runtime";var oo=to("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",warning:"bg-card bg-warning border-warning-border [&>svg]:text-current"}},defaultVariants:{variant:"default"}});function et({className:e,variant:t,...r}){return Ne("div",{"data-slot":"alert",role:"alert",className:u(oo({variant:t}),e),...r})}o(et,"Alert");function tt({className:e,...t}){return Ne("div",{"data-slot":"alert-title",className:u("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...t})}o(tt,"AlertTitle");function ot({className:e,...t}){return Ne("div",{"data-slot":"alert-description",className:u("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}o(ot,"AlertDescription");import{AlertCircle as ro}from"lucide-react";import{jsx as fe,jsxs as ao}from"react/jsx-runtime";function ge({title:e,description:t,severity:r}){let{components:a}=S();if(a?.statement){let s=a?.statement;return fe(s,{data:{title:e,description:t,severity:r}})}return ao(et,{variant:"warning",children:[fe(ro,{className:"h-4 w-4"}),e&&fe(tt,{children:e}),fe(ot,{children:t})]})}o(ge,"Statement");import{Fragment as no,useEffect as io,useRef as rt}from"react";import{jsx as ae,jsxs as ke}from"react/jsx-runtime";function Re({label:e,name:t,fields:r,description:a,components:s,statement:n,isFlatFieldset:p,extra:g}){let{watch:F,trigger:c,formState:i}=_(),f=r.map(({name:l})=>`${t}.${l}`),d=F(f),m=rt(d),v=rt(null);return io(()=>{let l=d,y=m.current,C=i.isSubmitted||i.submitCount>0,b=!1;for(let k=0;k<l.length;k++)if(l[k]!==void 0&&y[k]!==l[k]){b=!0;break}return b&&C&&(v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{c()},50)),m.current=[...l],()=>{v.current&&clearTimeout(v.current)}},[d,c,i.isSubmitted,i.submitCount]),ke("fieldset",{className:u("border-1 border-input p-4 rounded-xl",`RemoteFlows__FieldSetField__${t}`),children:[ae("legend",{className:"text-sm font-semibold px-2",children:e}),a?ae("div",{className:"mb-5 RemoteFlows__FieldSetField__Description",dangerouslySetInnerHTML:{__html:a}}):null,ke("div",{className:"grid gap-4",children:[r.map(l=>{l.calculateDynamicProperties&&(l={...l,...l.calculateDynamicProperties(d,l)||{}});let y=X[l.type];if(l.isVisible===!1||l.deprecated)return null;if(l.Component){let{Component:C}=l;return ae(C,{...l},l.name)}return l.type==="select"&&l.multiple&&(y=X["multi-select"]),ke(no,{children:[ae(y,{...l,name:`${p?l.name:`${t}.${l.name}`}`,component:s?.[l.type]}),l.extra?l.extra:null]},`${p?l.name:`${t}.${l.name}`}`)}),g||null,n?ae(ge,{...n}):null]})]})}o(Re,"FieldSetField");import{useState as so,useRef as lo}from"react";import{Upload as mo,X as co}from"lucide-react";import{jsx as U,jsxs as we}from"react/jsx-runtime";function at({onChange:e,className:t,multiple:r}){let[a,s]=so([]),n=lo(null),p=o(c=>{c.preventDefault(),n.current?.click()},"handleClick"),g=o(c=>{if(c.target.files&&c.target.files.length>0){let i=Array.from(c.target.files);s(i),e(c)}},"handleChange"),F=o(c=>{s(i=>i.filter(f=>f!==c))},"onRemoveFile");return we("div",{className:u("flex flex-col items-start gap-4",t),children:[U("input",{type:"file",ref:n,onChange:g,className:"hidden","aria-label":"File upload",multiple:r}),we(O,{type:"button",onClick:p,className:"gap-2",children:[U(mo,{className:"h-4 w-4"}),"Choose File"]}),a.length===0&&U("div",{className:"text-sm",children:r?U("span",{className:"font-medium",children:"No files selected. You can select multiple files"}):U("span",{className:"font-medium",children:"No file selected."})}),a.length>0&&a.map((c,i)=>we("div",{className:"text-sm flex items-center gap-2",children:["Selected file: ",U("span",{className:"font-medium",children:c.name})," (",Math.round(c.size/1024)," KB)",U(O,{variant:"ghost",onClick:()=>F(c),children:U(co,{})})]},i))]})}o(at,"FileUploader");import{jsx as J,jsxs as uo}from"react/jsx-runtime";var po=o(e=>new Promise((t,r)=>{let a=new FileReader;a.readAsDataURL(e),a.onload=()=>t(a.result),a.onerror=s=>r(s)}),"toBase64"),nt=o(async e=>{let t=e.target.files?Array.from(e.target.files):[];return await Promise.all(t.map(async a=>{let s=await po(a);return{name:a.name,content:s.split(",")[1]}}))},"convertFilesToBase64");function it({name:e,description:t,label:r,multiple:a,onChange:s,component:n,...p}){let{components:g}=S(),{control:F}=_();return J(P,{control:F,name:e,render:({field:c,fieldState:i})=>{let f=n||g?.file;if(f){let d={name:e,description:t,label:r,multiple:a,...p};return J(f,{field:{...c,value:null,onChange:o(async m=>{let v=await nt(m);c.onChange(v),s?.(v)},"onChange")},fieldState:i,fieldData:d})}return uo(R,{"data-field":e,className:`RemoteFlows__FileUpload__Item__${e}`,children:[J(N,{className:"RemoteFlows__FileUpload__Label",children:r}),J(w,{children:J(at,{onChange:async d=>{let m=await nt(d);c.onChange(m),s?.(m)},multiple:a,className:u("RemoteFlows__FileUpload__Input")})}),t&&J("div",{className:"flex items-center justify-between",children:J(D,{className:"RemoteFlows__FileUpload__Description",children:t})}),i.error&&J(I,{className:"RemoteFlows__FileUpload__Error"})]})}})}o(it,"FileUploadField");import{jsx as De}from"react/jsx-runtime";function Fe(e){let{components:t}=S(),{control:r}=_(),a=e.component||t?.number;return a?De(P,{control:r,name:e.name,render:({field:s,fieldState:n})=>De(a,{field:{...s,onChange:o(p=>{s.onChange(p),e.onChange?.(p)},"onChange")},fieldState:n,fieldData:e})}):De(V,{...e,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$"})}o(Fe,"NumberField");import{Fragment as go}from"react";import*as Q from"@radix-ui/react-radio-group";import{CircleIcon as fo}from"lucide-react";import{jsx as ve}from"react/jsx-runtime";function st({className:e,...t}){return ve(Q.Root,{"data-slot":"radio-group",className:u("grid gap-3",e),...t})}o(st,"RadioGroup");function lt({className:e,...t}){return ve(Q.Item,{"data-slot":"radio-group-item",className:u("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:ve(Q.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:ve(fo,{className:"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}o(lt,"RadioGroupItem");import{jsx as E,jsxs as Te}from"react/jsx-runtime";function mt({name:e,defaultValue:t,description:r,label:a,options:s,onChange:n,component:p,...g}){let{components:F}=S(),{control:c}=_();return E(P,{control:c,name:e,defaultValue:t,render:({field:i,fieldState:f})=>{let d=p||F?.radio;if(d){let m={name:e,defaultValue:t,description:r,label:a,options:s,...g};return E(d,{field:{...i,onChange:o(v=>{i.onChange(v),n?.(v)},"onChange")},fieldState:f,fieldData:m})}return Te(R,{className:u("space-y-3",`RemoteFlows__RadioGroupField__Item__${e}`),"data-field":e,children:[E(N,{children:a}),E(w,{children:E(st,{"aria-label":a||e,onValueChange:m=>{i.onChange(m),n?.(m)},value:i.value,className:"flex flex-col space-y-3",children:s?.map(m=>E(go,{children:Te(R,{"data-field":e,className:"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item",children:[E(w,{children:E(lt,{value:m.value,className:"RemoteFlows__RadioField__Input",disabled:m.disabled})}),Te("div",{children:[E(N,{className:"font-normal mb-0 RemoteFlows__RadioField__Label",children:m.label}),m.description&&E(D,{className:"mt-2",children:m.description})]})]})},m.value))})}),r&&E(D,{children:r}),f.error&&E(I,{})]})}})}o(mt,"RadioGroupField");import*as x from"@radix-ui/react-select";import{CheckIcon as Fo,ChevronDownIcon as ct,ChevronUpIcon as vo}from"lucide-react";import{jsx as T,jsxs as Ie}from"react/jsx-runtime";function dt({...e}){return T(x.Root,{"data-slot":"select",...e})}o(dt,"Select");function pt({...e}){return T(x.Group,{"data-slot":"select-group",...e})}o(pt,"SelectGroup");function ut({...e}){return T(x.Value,{"data-slot":"select-value",...e})}o(ut,"SelectValue");function ft({className:e,children:t,...r}){return Ie(x.Trigger,{"data-slot":"select-trigger",className:u("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",e),...r,children:[t,T(x.Icon,{asChild:!0,className:"absolute right-4",children:T(ct,{className:"size-4"})})]})}o(ft,"SelectTrigger");function gt({className:e,children:t,position:r="popper",...a}){return T(x.Portal,{children:Ie(x.Content,{"data-slot":"select-content",className:u("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...a,children:[T(yo,{}),T(x.Viewport,{className:u(r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),T(ho,{})]})})}o(gt,"SelectContent");function Ft({className:e,children:t,...r}){return Ie(x.Item,{"data-slot":"select-item",className:u("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[T(x.ItemText,{children:t}),T("span",{className:"flex size-3.5 items-center justify-center",children:T(x.ItemIndicator,{children:T(Fo,{className:"size-4"})})})]})}o(Ft,"SelectItem");function yo({className:e,...t}){return T(x.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:u("flex cursor-default items-center justify-center py-1",e),...t,children:T(vo,{className:"size-4"})})}o(yo,"SelectScrollUpButton");function ho({className:e,...t}){return T(x.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:u("flex cursor-default items-center justify-center py-1",e),...t,children:T(ct,{className:"size-4"})})}o(ho,"SelectScrollDownButton");import{jsx as L,jsxs as vt}from"react/jsx-runtime";function yt({label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,component:p,...g}){let{control:F}=_(),{components:c}=S();return L(P,{defaultValue:a,control:F,name:t,render:({field:i,fieldState:f})=>{let d=p||c?.select;if(d){let m={label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,...g};return L(d,{field:{...i,onChange:o(v=>{let l=g.jsonType==="number"?Number(v):v;i.onChange(l),n?.(l)},"onChange")},fieldState:f,fieldData:m})}return vt(R,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`,children:[L(N,{className:"RemoteFlows__SelectField__Label",children:e}),L(w,{children:L("div",{className:"relative",children:vt(dt,{value:i.value||"",onValueChange:m=>{let v=g.jsonType==="number"?Number(m):m;i.onChange(v),n?.(v)},children:[L(ft,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!f.error,"aria-label":e,children:L("span",{className:"absolute",children:L(ut,{placeholder:e})})}),L(gt,{className:"RemoteFlows__SelectField__Content",children:L(pt,{className:"RemoteFlows__SelectField__Group",children:r.map(m=>L(Ft,{value:m.value,className:"RemoteFlows__SelectField__SelectItem",children:m.label},m.value))})})]})})}),s&&L(D,{children:s}),f.error&&L(I,{})]})}})}o(yt,"SelectField");import{useState as Ro}from"react";import{Fragment as bo,useState as So}from"react";import{Check as Po,ChevronDownIcon as No,X as ko}from"lucide-react";import{Command as Z}from"cmdk";import{SearchIcon as sn}from"lucide-react";import*as M from"@radix-ui/react-dialog";import{XIcon as _o}from"lucide-react";import{jsx as G,jsxs as Me}from"react/jsx-runtime";function $e({...e}){return G(M.Root,{"data-slot":"dialog",...e})}o($e,"Dialog");function ht({...e}){return G(M.Trigger,{"data-slot":"dialog-trigger",...e})}o(ht,"DialogTrigger");function xo({...e}){return G(M.Portal,{"data-slot":"dialog-portal",...e})}o(xo,"DialogPortal");function Co({className:e,...t}){return G(M.Overlay,{"data-slot":"dialog-overlay",className:u("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}o(Co,"DialogOverlay");function We({className:e,children:t,...r}){return Me(xo,{"data-slot":"dialog-portal",children:[G(Co,{}),Me(M.Content,{"data-slot":"dialog-content",className:u("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...r,children:[t,Me(M.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 RemoteFlows__Dialog__Close",children:[G(_o,{}),G("span",{className:"sr-only",children:"Close"})]})]})]})}o(We,"DialogContent");function Le({className:e,...t}){return G("div",{"data-slot":"dialog-header",className:u("flex flex-col gap-2 text-center sm:text-left",e),...t})}o(Le,"DialogHeader");function Ee({className:e,...t}){return G(M.Title,{"data-slot":"dialog-title",className:u("text-lg leading-none font-semibold",e),...t})}o(Ee,"DialogTitle");import{jsx as ee,jsxs as dn}from"react/jsx-runtime";function _t({className:e,...t}){return ee(Z,{"data-slot":"command",className:u("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",e),...t})}o(_t,"Command");function xt({className:e,...t}){return ee(Z.List,{"data-slot":"command-list",className:u("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",e),...t})}o(xt,"CommandList");function Ct({...e}){return ee(Z.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...e})}o(Ct,"CommandEmpty");function bt({className:e,...t}){return ee(Z.Group,{"data-slot":"command-group",className:u("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",e),...t})}o(bt,"CommandGroup");function St({className:e,...t}){return ee(Z.Separator,{"data-slot":"command-separator",className:u("bg-border -mx-1 h-px",e),...t})}o(St,"CommandSeparator");function Pt({className:e,...t}){return ee(Z.Item,{"data-slot":"command-item",className:u("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}o(Pt,"CommandItem");import{jsx as H,jsxs as te}from"react/jsx-runtime";function ye({options:e,selected:t,onChange:r,placeholder:a,...s}){let[n,p]=So(!1),g=o(i=>{r(t.filter(f=>f.value!==i.value))},"handleUnselect"),F=e.some(i=>i.category),c=e.reduce((i,f)=>{let d=f.category||"Uncategorized";return i[d]||(i[d]=[]),i[d].push(f),i},{});return te(de,{open:n,onOpenChange:p,...s,children:[H(pe,{children:te(O,{variant:"outline",role:"combobox","aria-expanded":n,className:"w-full justify-between font-normal",type:"button",children:[H("div",{className:"flex gap-1 flex-wrap overflow-x-auto max-h-[2.5rem] items-center",children:t.length>0?t.map(i=>te(Ke,{variant:"secondary",className:"mr-1 mb-1",children:[i.label,H("div",{role:"button",tabIndex:0,"aria-label":`remove ${i.label}`,className:"ml-1 ring-offset-background rounded-full outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-pointer",onKeyDown:f=>{f.key==="Enter"&&g(i)},onMouseDown:f=>{f.preventDefault(),f.stopPropagation()},onClick:()=>g(i),children:H(ko,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},i.label)):H("span",{className:"text-foreground",children:a})}),H(No,{className:"size-4"})]})}),H(ue,{align:"start",className:"w-full p-0",children:H(_t,{children:te(xt,{children:[H(Ct,{children:"No item found."}),Object.entries(c).map(([i,f],d)=>te(bo,{children:[d>0&&H(St,{}),H(bt,{heading:F?i:void 0,children:f.map(m=>{let v=t.some(l=>l.value===m.value);return te(Pt,{onSelect:()=>{r(v?t.filter(l=>l.value!==m.value):[...t,m])},children:[H(Po,{className:u("mr-2 h-4 w-4",v?"opacity-100":"opacity-0")}),m.label]},m.label)})})]},i))]})})})]})}o(ye,"MultiSelect");import{jsx as q,jsxs as wo}from"react/jsx-runtime";function Nt({label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,$meta:p,component:g,...F}){let{control:c}=_(),{components:i}=S(),[f,d]=Ro([]);return q(P,{defaultValue:a,control:c,name:t,render:({field:m,fieldState:v})=>{let l=g||i?.countries;if(l){let b={label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,$meta:p,...F};return q(l,{field:{...m,onChange:o(k=>{m.onChange(k),n?.(k)},"onChange")},fieldState:v,fieldData:b})}let y=[...Object.entries(p?.regions||{}).map(([b,k])=>({value:k,label:b,category:"Regions"})),...Object.entries(p?.subregions||{}).map(([b,k])=>({value:k,label:b,category:"Subregions"})),...r.map(b=>({...b,value:b.value,label:b.label,category:"Countries"}))],C=o(b=>{let k=b.map(({value:Jt})=>Jt);m.onChange(k),n?.(k),d(b)},"handleChange");return wo(R,{"data-field":t,className:`RemoteFlows__CountryField__Item__${t}`,children:[q(N,{className:"RemoteFlows__CountryField__Label",children:e}),q(w,{children:q(ye,{options:y,selected:f,onChange:C,...F})}),s&&q(D,{children:s}),v.error&&q(I,{})]})}})}o(Nt,"CountryField");import*as kt from"react";import{jsx as Do}from"react/jsx-runtime";var He=kt.forwardRef(({className:e,...t},r)=>Do("textarea",{className:u("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...t}));He.displayName="Textarea";import{jsx as j,jsxs as Be}from"react/jsx-runtime";function Rt({name:e,description:t,label:r,onChange:a,maxLength:s,component:n,...p}){let{components:g}=S(),{control:F}=_();return j(P,{control:F,name:e,render:({field:c,fieldState:i})=>{let f=n||g?.textarea;if(f){let m={name:e,description:t,label:r,maxLength:s,...p};return j(f,{field:{...c,onChange:o(v=>{c.onChange(v),a?.(v)},"onChange")},fieldState:i,fieldData:m})}let d=c.value?.length??0;return Be(R,{"data-field":e,className:`RemoteFlows__TextArea__Item__${e}`,children:[j(N,{className:"RemoteFlows__TextArea__Label",children:r}),j(w,{children:j(He,{...c,value:c.value??"",onChange:m=>{c.onChange(m),a?.(m)},className:u(i.error&&"border-red-500 focus-visible:ring-red-500","RemoteFlows__TextArea__Input"),placeholder:r})}),(t||s)&&Be("div",{className:"flex items-center justify-between",children:[t&&j(D,{className:"RemoteFlows__TextArea__Description",children:t}),s&&Be("span",{className:"text-sm ml-auto RemoteFlows__TextArea__MaxLength",children:[d,"/",s]})]}),i.error&&j(I,{className:"RemoteFlows__TextArea__Error"})]})}})}o(Rt,"TextAreaField");import{jsx as Oe}from"react/jsx-runtime";function wt(e){let{components:t}=S(),{control:r}=_(),a=e.component||t?.email;return a?Oe(P,{control:r,name:e.name,render:({field:s,fieldState:n})=>Oe(a,{field:{...s,onChange:o(p=>{s.onChange(p),e.onChange?.(p)},"onChange")},fieldState:n,fieldData:e})}):Oe(V,{...e,type:"email"})}o(wt,"EmailField");import{jsx as Dt}from"react/jsx-runtime";function Tt(e){let{control:t}=_();return Dt(P,{control:t,name:e.name,render:({field:r})=>Dt("input",{...r,type:"hidden"})})}o(Tt,"HiddenField");import Eo,{useEffect as Ho,useState as Ot}from"react";var It=o((e,t,r)=>{if(e&&"reportValidity"in e){let a=ne(r,t);e.setCustomValidity(a&&a.message||""),e.reportValidity()}},"r"),Ve=o((e,t)=>{for(let r in t.fields){let a=t.fields[r];a&&a.ref&&"reportValidity"in a.ref?It(a.ref,r,e):a&&a.refs&&a.refs.forEach(s=>It(s,r,e))}},"o"),$t=o((e,t)=>{t.shouldUseNativeValidation&&Ve(e,t);let r={};for(let a in e){let s=ne(t.fields,a),n=Object.assign(e[a]||{},{ref:s&&s.ref});if(To(t.names||Object.keys(e),a)){let p=Object.assign({},ne(r,a));ie(p,"root",n),ie(r,a,p)}else ie(r,a,n)}return r},"s"),To=o((e,t)=>{let r=Mt(t);return e.some(a=>Mt(a).match(`^${r}\\.\\d+`))},"i");function Mt(e){return e.replace(/\]|\[/g,"")}o(Mt,"n");function Wt(e,t,r){return t===void 0&&(t={}),r===void 0&&(r={}),function(a,s,n){try{return Promise.resolve(function(p,g){try{var F=(t.context&&process.env.NODE_ENV==="development"&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(e[r.mode==="sync"?"validateSync":"validate"](a,Object.assign({abortEarly:!1},t,{context:s}))).then(function(c){return n.shouldUseNativeValidation&&Ve({},n),{values:r.raw?Object.assign({},a):c,errors:{}}}))}catch(c){return g(c)}return F&&F.then?F.then(void 0,g):F}(0,function(p){if(!p.inner)throw p;return{values:{},errors:$t((g=p,F=!n.shouldUseNativeValidation&&n.criteriaMode==="all",(g.inner||[]).reduce(function(c,i){if(c[i.path]||(c[i.path]={message:i.message,type:i.type}),F){var f=c[i.path].types,d=f&&f[i.type];c[i.path]=Ue(i.path,F,c,i.type,d?[].concat(d,i.message):i.message)}return c},{})),n)};var g,F}))}catch(p){return Promise.reject(p)}}}o(Wt,"o");import*as $ from"yup";import Lt from"lodash.groupby";import oe from"lodash.capitalize";var Et=60,he=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"];function Io(e){if(e<60)return`${e}m`;let t=Math.floor(e/Et),r=e%Et;return r>0?`${t}h${r}m`:`${t}h`}o(Io,"convertBreakDurationToHours");function Ht(e){let t=e.reduce((r,a)=>a.hours+r,0);return Number(t.toFixed(2))}o(Ht,"calculateTotalWorkHours");function Mo(e,t){let r=t.map(({day:n})=>n.toLowerCase()),a=r.indexOf(e),s=null;for(;a<r.length&&!s;){let n=r[a],p=r[a+1],g=he.indexOf(n)+1;he[g]===p||(s=n),a+=1}return s}o(Mo,"findLastConsecutiveDay");function $o(e){return e.start_time&&e.end_time&&(typeof e.hours=="number"?e.hours:Number.parseInt(e.hours))>0}o($o,"shouldSummarizeSchedule");function Wo(e){return Number.parseInt(e.break_duration_minutes)>0}o(Wo,"shouldSummarizeBreaks");function Bt(e){let t=e.filter($o),r=Lt(t,g=>`${g.start_time}|${g.end_time}`),a=e.filter(Wo),s=Lt(a,"break_duration_minutes"),n=Object.keys(r).map(g=>{let F=r[g],c=F[0].day,[i,f]=g.split("|"),d=`from <span>${i.replace(":","h")}</span> to <span>${f.replace(":","h")}</span>`,m=Mo(c,F),l=(m?F.findIndex(y=>y.day===m):-1)===F.length-1;return F.length===1?`${oe(c)}, ${d}`:!l||!m?F.reduce((y,C,b)=>{let k=oe(C.day);return b===F.length-1?`${y}and ${k}, ${d}`:`${y}<span>${k}</span>, `},""):`<span>${oe(c)}</span> to <span>${oe(m)}</span>, ${d}`}),p=Object.keys(s).reverse().map((g,F)=>{let c=F===0,i=s[g],f=Io(parseInt(g,10));if(Object.keys(s).length===1)return`With ${f} daily breaks`;if(i.length===1){let d=`${f} break on ${oe(i[0].day)}.`;return c?`With ${d}`:d}return i.reduce((d,m,v)=>{let l=oe(m.day);return v===0?`${d} ${l}`:v===i.length-1?`${d}, and ${l}.`:`${d}, ${l}`},c?`With ${f} break on`:`${f} break on`)});return{workHoursSummary:n,breakSummary:p}}o(Bt,"buildWorkScheduleSummary");function Ae(e){let{checked:t,start_time:r,end_time:a,break_duration_minutes:s}=e;if(!t)return 0;let[n,p]=r.split(":").map(Number),[g,F]=a.split(":").map(Number),c=n*60+p,d=(g*60+F-c-Number.parseInt(s||"0"))/60;return d===Math.floor(d)?d:Number(d.toFixed(2))}o(Ae,"calculateHours");var Lo={monday:"Mon",tuesday:"Tue",wednesday:"Wed",thursday:"Thu",friday:"Fri",saturday:"Sat",sunday:"Sun"};function _e(e){return Lo[e]}o(_e,"getShortWeekday");import{jsx as h,jsxs as B}from"react/jsx-runtime";var Bo=$.object({day:$.string().required(),checked:$.boolean().required(),start_time:$.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:o(e=>e.required("Required"),"then"),otherwise:o(e=>e.optional().nullable(),"otherwise")}),end_time:$.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:o(e=>e.required("Required"),"then"),otherwise:o(e=>e.optional().nullable(),"otherwise")}),hours:$.number().default(0),break_duration_minutes:$.string().default("0")}),Oo=$.object({schedule:$.array(Bo)});function Vo({defaultSchedule:e,onSubmit:t}){let[r,a]=Ot(!1),s=he.map(l=>{let y=e.find(C=>C.day.toLowerCase()===_e(l).toLowerCase()||C.day.toLowerCase()===l.toLowerCase());return y?{...y,day:_e(l),checked:!0}:{...e[0],checked:!1,day:_e(l)}}),n=qe({defaultValues:{schedule:s},resolver:Wt(Oo)}),{handleSubmit:p,watch:g,reset:F,control:c,formState:i}=n,{fields:f}=Je({name:"schedule",control:c}),d=g("schedule");function m(l){let y=l.schedule.filter(({checked:C})=>C).map(C=>({...C,hours:Ae(C)}));t(y),a(!1)}o(m,"handleSubmitWorkingHours");function v(){F(),a(!1)}return o(v,"handleCancel"),h("div",{className:"flex items-center justify-between",children:B($e,{open:r,onOpenChange:a,children:[h(ht,{asChild:!0,children:h(O,{variant:"link",className:"flex items-center p-0 RemoteFlows__WorkScheduleSelectionForm__Trigger",children:"Edit Schedule"})}),B(We,{className:"max-w-5xl max-h-[90vh] overflow-y-auto px-8 py-4 RemoteFlows__WorkScheduleSelectionForm__Content",children:[h(Le,{children:h(Ee,{className:"RemoteFlows__WorkScheduleSelectionForm__Title",children:"Edit employee working hours"})}),h(je,{...n,children:B("form",{className:"space-y-4 RemoteFlows__WorkScheduleSelectionForm__Form",children:[B("div",{className:"rounded-lg",children:[h("p",{className:"text-gray-600 text-sm mb-4 RemoteFlows__WorkScheduleSelectionForm__Description",children:"The times displayed are in the employee's time zone in the 24-hour format."}),B("div",{className:"grid grid-cols-12 gap-4 text-sm font-medium text-gray-500 uppercase tracking-wide RemoteFlows__WorkScheduleSelectionForm__Header",children:[h("div",{className:"col-span-2"}),h("div",{className:"col-span-3 text-center",children:"START"}),h("div",{className:"col-span-1 text-center"}),h("div",{className:"col-span-3 text-center",children:"END"}),h("div",{className:"col-span-2 text-center",children:"HOURS"})]}),h("div",{className:"RemoteFlows__WorkScheduleSelectionForm__Rows",children:f.map((l,y)=>{let C=d[y],b=Ae(C);return B(Eo.Fragment,{children:[B("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Hours",children:[h("div",{className:"col-span-2 flex items-center gap-3",children:h(me,{label:l.day,name:`schedule.${y}.checked`})}),h("div",{className:"col-span-3",children:h(V,{name:`schedule.${y}.start_time`,includeErrorMessage:!1})}),h("div",{className:"col-span-1 text-center text-gray-500",children:"to"}),h("div",{className:"col-span-3",children:h(V,{name:`schedule.${y}.end_time`,includeErrorMessage:!1})}),h("div",{className:"col-span-2 text-center text-gray-600",children:isNaN(b)?"-":`${b} hours`})]}),B("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Break",children:[h("div",{className:"col-span-2 text-gray-500",children:"Break"}),h("div",{className:"col-span-2",children:h(V,{name:`schedule.${y}.break_duration_minutes`,includeErrorMessage:!1})}),h("div",{className:"col-span-2 text-gray-500",children:"minutes"}),h("div",{className:"col-span-4"})]})]},l.id)})})]}),Object.keys(i.errors).length>0&&h("p",{className:"text-destructive text-sm mb-0",children:"Invalid time format (HH:mm)"}),B("div",{className:"flex gap-4 pt-4",children:[h(O,{type:"button",className:"reset-button",variant:"outline",onClick:v,children:"Cancel"}),h(O,{type:"button",className:"submit-button",onClick:p(m),children:"Save Schedule"})]})]})})]})]})})}o(Vo,"WorkScheduleSelectionForm");function Vt(e){let{components:t}=S(),{setValue:r,control:a,watch:s}=_(),n=s(e.name),[p,g]=Ot(n),{workHoursSummary:F,breakSummary:c}=Bt(p),i=Ht(p);Ho(()=>{r(e.name,p)},[p,e.name,r]);function f(m){g(m)}o(f,"onSubmit");let d=e.component||t?.["work-schedule"];return d?h(P,{control:a,name:e.name,render:({field:m,fieldState:v})=>h(d,{field:{...m,onChange:o(l=>{m.onChange(l),e.onChange?.(l)},"onChange")},fieldState:v,fieldData:{...e,defaultFormattedValue:{workHoursSummary:F,breakSummary:c,totalWorkHours:i}}})}):B("div",{className:"flex flex-col gap-3 RemoteFlows__WorkScheduleField",children:[h("p",{className:"text-sm RemoteFlows__WorkScheduleField__Title",children:"Work hours"}),B("div",{className:"flex flex-col gap-1 RemoteFlows__WorkScheduleField__Summary",children:[h("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__WorkHours",dangerouslySetInnerHTML:{__html:F.join(", ")}}),h("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Break",children:c.join()}),B("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Total",children:["Total of ",h("span",{children:i})," hours per week"]}),h(Vo,{defaultSchedule:p,onSubmit:f})]})]})}o(Vt,"WorkScheduleField");import{useState as Ao}from"react";import{jsx as K,jsxs as zo}from"react/jsx-runtime";function At({label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,component:p,...g}){let{control:F}=_(),{components:c}=S(),[i,f]=Ao();return K(P,{defaultValue:a,control:F,name:t,render:({field:d,fieldState:m})=>{let v=p||c?.["multi-select"];if(v){let y={label:e,name:t,options:r,defaultValue:a,description:s,onChange:n,...g};return K(v,{field:{...d,onChange:o(C=>{d.onChange(C),n?.(C)},"onChange")},fieldState:m,fieldData:y})}let l=i||r.filter(y=>d.value.includes(y.value));return zo(R,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`,children:[K(N,{className:"RemoteFlows__SelectField__Label",children:e}),K(w,{children:K(ye,{options:r,selected:l,onChange:y=>{let C=y.map(({value:b})=>b);d.onChange(C),n?.(C),f(y)},...g})}),s&&K(D,{children:s}),m.error&&K(I,{})]})}})}o(At,"MultiSelectField");import{jsx as Go}from"react/jsx-runtime";var zt=o(e=>Go(Fe,{maxLength:15,...e}),"MoneyField");var X={checkbox:me,text:V,email:wt,money:zt,select:yt,"multi-select":At,radio:mt,number:Fe,file:it,fieldset:Re,"fieldset-flat":Re,date:Ze,textarea:Rt,countries:Nt,hidden:Tt,"work-schedule":Vt};import{useEffect as Uo}from"react";import{Fragment as Jo,jsx as xe,jsxs as qo}from"react/jsx-runtime";function Gt({name:e,value:t,description:r,statement:a}){let{setValue:s}=_();return Uo(()=>{s(e,t)},[]),xe("div",{children:a?qo(Jo,{children:[xe("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:a?.title}}),xe("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:a?.description}})]}):xe("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:r}})})}o(Gt,"ForcedValueField");import{Fragment as Yo,jsx as Y,jsxs as Ut}from"react/jsx-runtime";function Ko(e){return e.const!==void 0&&e.const===e.default&&e.inputType!=="checkbox"&&e.inputType!=="hidden"}o(Ko,"checkFieldHasForcedValue");var fs=o(({fields:e,fieldsets:t,fieldValues:r,components:a})=>{if(!e||e.length===0)return null;let s=t&&r?ze({fields:e,fieldsets:t,values:r}):e;return Y(Yo,{children:s.map(n=>{if(n.calculateDynamicProperties&&(n={...n,...n.calculateDynamicProperties(r,n)||{}}),n.isVisible===!1||n.deprecated)return null;if(Ko(n))return Y(Gt,{name:n.name,description:n.description,value:n.const,statement:n.statement},n.name);if(n.Component){let{Component:g}=n;return Y(g,{...n},n.name)}let p=X[n.type];return n.type==="select"&&n.multiple&&(p=X["multi-select"]),n.type==="fieldset"?Y(p,{...n,components:a},n.name):n.type==="fieldset-flat"?Y(p,{...n,components:a,isFlatFieldset:!0},n.name):p?Ut(jo,{children:[Y(p,{...n,component:a&&a[n.type]}),n.statement?Y(ge,{...n.statement}):null,n.extra?n.extra:null]},n.name):Ut("p",{className:"error",children:["Field type ",n.type," not supported"]})})})},"JSONSchemaFormFields");export{fs as a};
2
- //# sourceMappingURL=chunk-PAC52YON.js.map