UNPKG

@adyen/kyc-components

Version:

This guide assumes that you have already an account with Adyen. A legalEntity needs to be created, and you need to have a `legalEntityId` to instatiate a Component.

652 lines (651 loc) 30 kB
try { let e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack; n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "8e2a0035-91f6-40b0-be3c-5cae924f5803", e._sentryDebugIdIdentifier = "sentry-dbid-8e2a0035-91f6-40b0-be3c-5cae924f5803"); } catch (e) {} import { n as addResourceBundles, o as createLogger, r as useTranslation } from "./translation-BFxyJ1c5.js"; import { r as Loader, t as Button } from "./Button-oj6H8OrC.js"; import { n as httpGet, r as httpPost, s as useApiContext } from "./http-D1NDkBxF.js"; import { r as useLegalEntity, t as ROOT_LE } from "./useLegalEntity-yxi9XhLi.js"; import { t as LegalEntityTypes } from "./legal-entity-type-VIfNYnJP.js"; import { t as useAnalyticsContext } from "./useAnalyticsContext-BVFDMrVE.js"; import { t as useToggleContext } from "./useToggleContext-DaQUBF8O.js"; import { n as getLanguageCode } from "./utils-B807QaDx.js"; import { t as _rolldown_dynamic_import_helper_default } from "./_rolldown_dynamic_import_helper-rq_tsyLP.js"; import { t as Alert } from "./Alert-C6gL3JIt.js"; import { a as getLegalRepresentative, p as TaskTypes } from "./entityAssociationUtil-BEzUdPbm.js"; import { a as getOwnSignatories } from "./decisionMakerRoles-CAy-eeNV.js"; import { t as doesLegalEntityRequiresLegalRepresentative } from "./birthDateUtils-C686KOxO.js"; import { n as useTermsOfServiceAcceptanceInfos, t as useTermsOfServiceStatus } from "./useTermsOfServiceStatus-YBxJYvyS.js"; import { t as Card } from "./Card-vYndix5Y.js"; import { t as useToastContext } from "./useToastContext-CYgfHjSb.js"; import { t as EndStateLayout } from "./EndStateLayout-ChS-vdMt.js"; import { t as downloadFile } from "./file-6a0FDVyq.js"; import { t as useInvalidateRootLegalEntity } from "./invalidateRootLegalEntity-CZr0iiji.js"; import { t as LoaderWrapper } from "./LoaderWrapper-Dq8TNJCi.js"; import { n as getLegalEntityNameBasedOnType } from "./getName-Bdwp_hkV.js"; import { t as useTaskLandedEvent } from "./useTaskLandedEvent-DInxWeqN.js"; import { t as MaybeModal } from "./MaybeModal-CeTBIah3.js"; import { t as ProgressBar } from "./ProgressBar-BlxQvN7D.js"; import { t as localizeDateString } from "./localizeDateString-1A3eC6hp.js"; import { t as Field } from "./Field-pcJkjIG_.js"; import { t as Select } from "./Select-CcSRI-H0.js"; import { t as Checkbox } from "./Checkbox-BCYjFPa4.js"; import { t as useForm } from "./useForm-pUkvCLc9.js"; import { t as FormNavigation } from "./FormNavigation-ikhirSjM.js"; import { t as ContractViewer } from "./ContractViewer-Bm8_7yzG.js"; import { useCallback, useEffect, useMemo, useState } from "preact/hooks"; import { Fragment, jsx, jsxs } from "preact/jsx-runtime"; import { skipToken, useMutation, useQuery } from "@tanstack/preact-query"; //#region src/api/termsOfService/useAcceptTermsOfService.ts var acceptTermsOfService = async (legalEntityId, baseUrl, termsOfServiceDocumentId, data) => { return httpPost({ baseUrl, path: `legalEntities/${legalEntityId}/termsOfService/accept` }, { ...data, legalEntityReference: legalEntityId, termsOfServiceDocumentId }); }; var useAcceptTermsOfService = (options) => { const { rootLegalEntityId, baseUrl } = useApiContext(); const invalidateRootLegalEntity = useInvalidateRootLegalEntity(); return useMutation({ mutationFn: (data) => acceptTermsOfService(rootLegalEntityId.value, baseUrl.value, data.termsOfServiceDocumentId, data), onSuccess: async () => { await invalidateRootLegalEntity(); }, ...options }); }; //#endregion //#region src/api/termsOfService/useAcceptedTermsOfService.ts var getAcceptedTermsOfService = async (legalEntityId, baseUrl, termsOfServiceAcceptanceReference, documentFormat) => { return httpGet({ baseUrl, path: `legalEntities/${legalEntityId}/termsOfService/acceptedTermsOfServiceDocument/${termsOfServiceAcceptanceReference}?documentformat=${documentFormat} ` }); }; var useAcceptedTermsOfService = (termsOfServiceAcceptanceReference, documentFormat, options) => { const { rootLegalEntityId, baseUrl } = useApiContext(); return useQuery({ queryKey: [ "acceptedTermsOfService", termsOfServiceAcceptanceReference, documentFormat ], queryFn: termsOfServiceAcceptanceReference ? () => getAcceptedTermsOfService(rootLegalEntityId.value, baseUrl.value, termsOfServiceAcceptanceReference, documentFormat) : skipToken, ...options }); }; //#endregion //#region src/api/termsOfService/useTermsOfService.ts var getTermsOfService = async (legalEntityId, baseUrl, data) => { return httpPost({ baseUrl, path: `legalEntities/${legalEntityId}/termsOfService` }, data); }; var useTermsOfService = (data, options) => { const { rootLegalEntityId, baseUrl } = useApiContext(); return useQuery({ queryKey: ["termsOfService", data], queryFn: () => getTermsOfService(rootLegalEntityId.value, baseUrl.value, data), ...options }); }; var ServiceAgreementDropin_module_default = { "tos-signed-alert": "adyen-kyc-tos-signed-alert", tosSignedAlert: "adyen-kyc-tos-signed-alert", "tos-container": "adyen-kyc-tos-container", tosContainer: "adyen-kyc-tos-container", "tos-content": "adyen-kyc-tos-content", tosContent: "adyen-kyc-tos-content", "tos-signer-field": "adyen-kyc-tos-signer-field", tosSignerField: "adyen-kyc-tos-signer-field", "tos-actions": "adyen-kyc-tos-actions", tosActions: "adyen-kyc-tos-actions" }; //#endregion //#region src/components/Contract/tasks/ServiceAgreementDropin/useServiceAgreement.ts var logger$1 = createLogger(); var FALLBACK_LANGUAGE_CODE$1 = "en"; var useServiceAgreement = ({ handleServiceAgreementIsNotAvailableInThatLanguage, acceptanceId, serviceAgreementType, language }) => { const [agreementLanguage, setAgreementLanguage] = useState(language); useEffect(() => { if (agreementLanguage !== language) setAgreementLanguage(language); }, [language]); const { data: unAcceptedServiceAgreement, isSuccess: isUnAcceptedServiceAgreementSuccess, isError, error } = useTermsOfService({ language: agreementLanguage, type: serviceAgreementType, termsOfServiceDocumentFormat: "JSON" }, { enabled: !acceptanceId }); const { data: acceptedServiceAgreement, isSuccess: isAcceptedServiceAgreementSuccess } = useAcceptedTermsOfService(acceptanceId, "JSON"); const fetchedServiceAgreement = useMemo(() => { const termsOfService = unAcceptedServiceAgreement ?? acceptedServiceAgreement; const documentId = unAcceptedServiceAgreement?.termsOfServiceDocumentId ?? acceptedServiceAgreement?.termsOfServiceAcceptanceReference; if (termsOfService?.document && documentId) return { loading: "success", serviceAgreement: { id: documentId, contract: JSON.parse(decodeURIComponent(escape(window.atob(termsOfService.document)))) } }; }, [acceptedServiceAgreement, unAcceptedServiceAgreement]); if ((isUnAcceptedServiceAgreementSuccess || isAcceptedServiceAgreementSuccess) && fetchedServiceAgreement) return fetchedServiceAgreement; if (isError) { if (agreementLanguage !== FALLBACK_LANGUAGE_CODE$1) { handleServiceAgreementIsNotAvailableInThatLanguage(); setAgreementLanguage(FALLBACK_LANGUAGE_CODE$1); } else logger$1.error(error); return { loading: "success", serviceAgreement: void 0 }; } return { loading: "loading", serviceAgreement: void 0 }; }; //#endregion //#region src/components/Contract/tasks/ServiceAgreementDropin/validate.ts var serviceAgreementValidationRules = { signer: { modes: ["blur"], validate: (signer) => !!signer, errorMessage: "fieldIsRequired" }, acceptServiceAgreement: { modes: ["blur"], validate: (acceptServiceAgreement) => !!acceptServiceAgreement, errorMessage: "fieldIsRequired" } }; //#endregion //#region src/components/Contract/tasks/ServiceAgreementDropin/ServiceAgreementDropin.tsx var serviceAgreementTypesTranslationMapping = { adyenForPlatformsManage: "paymentProcessingTerms", adyenIssuing: "accountHolderTerms", adyenForPlatformsAdvanced: "paymentProcessingTerms", adyenCapital: "capitalUserTerms", adyenAccount: "businessAccountTerms", adyenCard: "cardUserTerms", adyenFranchisee: "franchiseesTAndCs", adyenPccr: "pccr", adyenChargeCard: "chargeCardUserAgreement", kycOnInvite: "kycOnInvite", directDebit: "directDebit" }; var logger = createLogger(); var FALLBACK_LANGUAGE_CODE = "en"; function ServiceAgreementDropin({ legalEntityResponse, handleAddSigner, handleSign, serviceAgreementTypes, serviceAgreementAcceptanceInfos, asEmbedded = false, asModal = false, handleCloseClick, showInitialBackButton = false, onComplete }) { const { t, i18n } = useTranslation(["contract", "common"]); const userEvents = useAnalyticsContext(); const { showToast } = useToastContext(); const { isFeatureEnabled } = useToggleContext(); const isAgeVerificationEnabled = isFeatureEnabled("EnableAgeVerification"); const { rootLegalEntityId, baseUrl } = useApiContext(); const [loadingStatus, setLoadingStatus] = useState(); const signedForms = serviceAgreementAcceptanceInfos.map((serviceAgreementAcceptanceInfo) => ({ formId: serviceAgreementAcceptanceInfo.id, serviceAgreementType: serviceAgreementAcceptanceInfo.type, acceptanceId: serviceAgreementAcceptanceInfo.id, createdAt: serviceAgreementAcceptanceInfo.createdAt, formName: serviceAgreementTypesTranslationMapping[serviceAgreementAcceptanceInfo.type], isValid: true })); const formsToBeSigned = serviceAgreementTypes.map((serviceAgreementType) => ({ formId: serviceAgreementType, serviceAgreementType, formName: serviceAgreementTypesTranslationMapping[serviceAgreementType], isValid: false })); const forms = [...signedForms, ...formsToBeSigned]; const [activeFormIndex, setActiveFormIndex] = useState(0); const [activeForm, setActiveForm] = useState(forms[activeFormIndex]); const [hasFinished, setHasFinished] = useState(false); const canSign = serviceAgreementTypes.includes(activeForm.serviceAgreementType) && !activeForm.acceptanceId; const isFirstStep = activeFormIndex === 0; const isLastStep = activeFormIndex === forms.length - 1; const showSignedAlert = !!activeForm.acceptanceId; const { refetch: downloadAcceptedTermsAsPdf } = useAcceptedTermsOfService(activeForm.acceptanceId, "PDF", { enabled: false }); const { loading: contractLoadingStatus, serviceAgreement } = useServiceAgreement({ handleServiceAgreementIsNotAvailableInThatLanguage: useCallback(() => { showToast({ label: t(($) => $["failedToGetServiceAgreementInSelectedLanguageFallbackToEn"]), variant: "error" }); }, [t, showToast]), acceptanceId: activeForm.acceptanceId, serviceAgreementType: activeForm.serviceAgreementType, language: getLanguageCode(i18n.language) }); const { handleChangeFor, triggerValidation, data, valid, isValid, errors } = useForm({ schema: ["signer", "acceptServiceAgreement"], rules: serviceAgreementValidationRules }); const getSigners = () => { if (legalEntityResponse.type === LegalEntityTypes.ORGANIZATION) return getOwnSignatories(legalEntityResponse).map(({ legalEntityId: id, name }) => ({ id: id ?? "", name: name ?? "" })); if (isAgeVerificationEnabled && doesLegalEntityRequiresLegalRepresentative(legalEntityResponse)) { const legalRepresentative = getLegalRepresentative(legalEntityResponse); return legalRepresentative ? [{ id: legalRepresentative.legalEntityId, name: legalRepresentative.name }] : []; } return [{ id: legalEntityResponse.id, name: `${legalEntityResponse.individual?.name.firstName ?? ""} ${legalEntityResponse.individual?.name.lastName ?? ""}` }]; }; const signers = getSigners(); const handleSignClick = async () => { const baseTracking = { actionType: "sign" }; triggerValidation(); if (loadingStatus === "loading" || !serviceAgreement || !data.signer) return; if (isValid) try { setLoadingStatus("loading"); await handleSign(legalEntityResponse.id, serviceAgreement.id, { acceptedBy: data.signer }); setLoadingStatus("success"); showToast({ label: t(($) => $["serviceAgreementSignedSuccessfully"]), variant: "success" }); userEvents.addTaskEvent("Success", baseTracking); data.acceptServiceAgreement = false; data.signer = void 0; } catch (e) { setLoadingStatus("success"); showToast({ label: t(($) => $["signingFailed"]), variant: "error" }); userEvents.addTaskEvent("Encountered error", { ...baseTracking, returnType: e?.errorCode || "backend", returnValue: e?.title ?? e?.message }); } else userEvents.addTaskEvent("Encountered error", { ...baseTracking, returnType: "validation", returnValue: Object.entries(valid).filter(([, value]) => !value).map(([key]) => key) }); }; const handleExpandSection = useCallback((title) => { userEvents.addFieldEvent("Clicked accordion", { actionType: "open", field: title }); }, []); useEffect(() => { if (!serviceAgreementAcceptanceInfos.length) return; gotoForm(serviceAgreementAcceptanceInfos.length - 1); }, [serviceAgreementAcceptanceInfos]); /** * Analytics */ useTaskLandedEvent("SERVICE_AGREEMENT"); useEffect(() => { gotoForm(forms.length === signedForms.length ? 0 : signedForms.length); }, []); useEffect(() => { userEvents.updateSharedEventProperties({ page: activeForm?.formName }); }, [activeForm]); const gotoForm = (index) => { setActiveForm(forms[index]); setActiveFormIndex(index); }; const onDownloadAcceptedTermsOfServiceDocument = async () => { const { isError, isSuccess, data } = await downloadAcceptedTermsAsPdf(); if (isSuccess && data.document) await downloadFile(data.document, `${t(($) => $[activeForm.formName], { ns: "common" })}.pdf`); if (isError) showToast({ label: t(($) => $["failedToDownloadAcceptedServiceAgreementDocument"]), variant: "error" }); }; const onDownloadUnacceptedTermsOfServiceDocument = async () => { const languageCode = getLanguageCode(i18n.language); const requestAndDownload = async (languageCode) => { const response = await getTermsOfService(rootLegalEntityId.value, baseUrl.value, { type: activeForm.serviceAgreementType, language: languageCode, termsOfServiceDocumentFormat: "PDF" }); if (!response.document) throw new Error(`No terms Of service document found in response`); await downloadFile(response.document, `${t(($) => $[activeForm.formName], { ns: "common" })}.pdf`); }; try { if (["fr", "en"].includes(i18n.language)) await requestAndDownload(languageCode); await requestAndDownload("en"); } catch { if (languageCode !== FALLBACK_LANGUAGE_CODE) { await requestAndDownload(FALLBACK_LANGUAGE_CODE).catch(logger.error); return; } showToast({ label: t(($) => $["failedToDownloadServiceAgreementDocument"]), variant: "error" }); } }; const isIndividual = legalEntityResponse.type === "individual"; const addSignerAlert = handleAddSigner && /* @__PURE__ */ jsx(Alert, { variant: signers.length ? "info" : "warning", className: "adyen-kyc-u-margin-top-16", title: t(($) => $[signers.length ? "isYourNameMissingFromSigners" : "thereAreNoSigners"]), children: /* @__PURE__ */ jsx(Button, { onClick: handleAddSigner, variant: "link", children: t(($) => $["addYourselfAsSigner"]) }) }); const getSignedName = (acceptanceId) => { if (!acceptanceId) return ""; const signatory = serviceAgreementAcceptanceInfos.find(({ id }) => id === acceptanceId); return (legalEntityResponse.entityAssociations?.find(({ legalEntityId }) => legalEntityId === signatory?.acceptedBy))?.name ?? getLegalEntityNameBasedOnType(legalEntityResponse); }; const signedAlert = showSignedAlert && /* @__PURE__ */ jsx(Alert, { variant: "success", className: ServiceAgreementDropin_module_default.tosSignedAlert, title: t(($) => $["signedByOn"], { date: localizeDateString(activeForm.createdAt, i18n.language) ?? "", signer: getSignedName(activeForm.acceptanceId) }) }); const sidebar = /* @__PURE__ */ jsx(LoaderWrapper, { status: loadingStatus, formOpacityWhenLoading: .3, showSpinner: false, className: "adyen-kyc-dropin__sidebar-wrapper", children: /* @__PURE__ */ jsx(FormNavigation, { forms, activeForm, gotoForm, taskName: "signServiceAgreement", className: "adyen-kyc-u-margin-bottom-24" }) }); const content = /* @__PURE__ */ jsxs(LoaderWrapper, { status: loadingStatus, formOpacityWhenLoading: .3, showSpinner: false, className: "adyen-kyc-form-container", children: [/* @__PURE__ */ jsxs(LoaderWrapper, { status: contractLoadingStatus, formOpacityWhenLoading: .3, showSpinner: false, children: [serviceAgreement && /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx("div", { className: "adyen-kyc-u-margin-bottom-16", children: signedAlert }), /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(ContractViewer, { contract: serviceAgreement.contract, onExpandSection: handleExpandSection, showSectionNumbering: true }) }), /* @__PURE__ */ jsx("div", { className: "adyen-kyc-u-margin-top-16", children: signedAlert }), /* @__PURE__ */ jsx("div", { className: "adyen-kyc-u-margin-y-16", children: /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: activeForm?.acceptanceId ? onDownloadAcceptedTermsOfServiceDocument : onDownloadUnacceptedTermsOfServiceDocument, icon: "download", children: t(($) => $["downloadAsPdf"]) }) }) ] }), !forms.length && /* @__PURE__ */ jsx(Alert, { variant: "info", title: t(($) => $["nothingNeedsToBeSigned"]) })] }), canSign && /* @__PURE__ */ jsxs(Fragment, { children: [ !!signers.length && /* @__PURE__ */ jsx(Field, { name: "signer", label: t(($) => $["signer"]), className: ServiceAgreementDropin_module_default.tosSignerField, errorMessage: errors.signer?.errorMessage, isValid: valid.signer, dataTestId: "signer", children: (childProps) => /* @__PURE__ */ jsx(Select, { ...childProps, onChange: handleChangeFor("signer", "blur"), name: "signer", placeholder: t(($) => $["selectSigner"]), selected: data.signer, items: signers }) }), !isIndividual && addSignerAlert, /* @__PURE__ */ jsx(Field, { name: "acceptServiceAgreement", className: "adyen-kyc-u-margin-top-16", errorMessage: errors.acceptServiceAgreement?.errorMessage, isValid: valid.acceptServiceAgreement, children: (childProps) => /* @__PURE__ */ jsx(Checkbox, { ...childProps, label: t(($) => $["iHaveReadAndIAcceptTheseTerms"]), checked: data.acceptServiceAgreement ?? false, name: "acceptServiceAgreement", onChange: handleChangeFor("acceptServiceAgreement") }) }) ] })] }); const currentStep = signedForms.length; const totalSteps = forms.length; const handleClick = () => { if (canSign) handleSignClick(); else if (!isLastStep) gotoForm(activeFormIndex + 1); else setHasFinished(true); }; /** The finish button needs to trigger both consumer onClose and onComplete */ const handleFinishClick = () => { handleCloseClick(); onComplete?.(); }; const endScreen = hasFinished && /* @__PURE__ */ jsx(EndStateLayout, { title: t(($) => $["serviceAgreementSignedAndDated"]), action: /* @__PURE__ */ jsx(Button, { onClick: handleFinishClick, fullWidth: true, children: t(($) => $["finish"], { ns: "common" }) }) }); const progress = Math.floor(currentStep / (totalSteps - 1) * 100); return /* @__PURE__ */ jsx(MaybeModal, { inline: !asModal, onClose: handleCloseClick, children: /* @__PURE__ */ jsxs("div", { className: ServiceAgreementDropin_module_default.tosContainer, children: [/* @__PURE__ */ jsxs("div", { className: ServiceAgreementDropin_module_default.tosContent, children: [!asEmbedded && sidebar, endScreen || content] }), !hasFinished && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(ProgressBar, { ariaLabel: t(($) => $["progress"], { ns: "common" }), progress }), /* @__PURE__ */ jsxs("div", { className: ServiceAgreementDropin_module_default.tosActions, children: [isFirstStep ? showInitialBackButton && /* @__PURE__ */ jsx(Button, { onClick: handleCloseClick, variant: "secondary", children: t(($) => $["cancel"], { ns: "common" }) }) : /* @__PURE__ */ jsx(Button, { icon: "chevron-left", onClick: () => { gotoForm(activeFormIndex - 1); }, variant: "secondary", children: t(($) => $["back"], { ns: "common" }) }), /* @__PURE__ */ jsx(Button, { variant: canSign ? "primary" : "secondary", onClick: handleClick, children: canSign ? t(($) => $["sign"], { ns: "common" }) : t(($) => $["continue"], { ns: "common" }) })] })] })] }) }); } //#endregion //#region src/components/EmbeddedDropins/AcceptTermsOfServiceComponent/AcceptTermsOfServiceComponent.tsx function AcceptTermsOfServiceComponent({ legalEntityId, modalView = false, asEmbedded = true, onClose, onComplete, onUnmount, onAccept, handleAddSigner }) { if (!legalEntityId) throw new Error("Must provide at-least a legalEntityId"); const { i18n } = useTranslation(); addResourceBundles(i18n, [ { ns: "common", importFn: (lang) => _rolldown_dynamic_import_helper_default(/* @__PURE__ */ Object.assign({ "../../../language/locales/bg-BG.json": () => import("./bg-BG-COHRuTI-.js"), "../../../language/locales/cs-CZ.json": () => import("./cs-CZ-CmcYZLZp.js"), "../../../language/locales/da-DK.json": () => import("./da-DK-C_oe1bpM.js"), "../../../language/locales/de-DE.json": () => import("./de-DE-CMc1Fpfl.js"), "../../../language/locales/el-GR.json": () => import("./el-GR-Bv2QgmVV.js"), "../../../language/locales/en-US.instructions.json": () => import("./en-US.instructions-DJharl6b.js"), "../../../language/locales/en-US.json": () => import("./en-US-cJAmQhFR.js").then((n) => n.n), "../../../language/locales/es-ES.json": () => import("./es-ES-DtlXpZ_5.js"), "../../../language/locales/et-EE.json": () => import("./et-EE-PTcJ2hRW.js"), "../../../language/locales/fi-FI.json": () => import("./fi-FI-C1Ns3CEo.js"), "../../../language/locales/fr-FR.json": () => import("./fr-FR-DgPRYmmJ.js"), "../../../language/locales/hr-HR.json": () => import("./hr-HR-BQfjrcPC.js"), "../../../language/locales/hu-HU.json": () => import("./hu-HU-DfYPelYo.js"), "../../../language/locales/it-IT.json": () => import("./it-IT-cnETv3Cg.js"), "../../../language/locales/ja-JP.json": () => import("./ja-JP-D0gz56Ni.js"), "../../../language/locales/lt-LT.json": () => import("./lt-LT-Bbh9MWxc.js"), "../../../language/locales/lv-LV.json": () => import("./lv-LV-C8fqHR2g.js"), "../../../language/locales/nl-NL.json": () => import("./nl-NL-CQSu4iNn.js"), "../../../language/locales/no-NO.json": () => import("./no-NO-C0DXekH-.js"), "../../../language/locales/pl-PL.json": () => import("./pl-PL-10KUcobm.js"), "../../../language/locales/pt-BR.json": () => import("./pt-BR-DWKF33yP.js"), "../../../language/locales/pt-PT.json": () => import("./pt-PT-CjIFIi4R.js"), "../../../language/locales/ro-RO.json": () => import("./ro-RO-DQFRJwp8.js"), "../../../language/locales/sk-SK.json": () => import("./sk-SK-BfoXFhAL.js"), "../../../language/locales/sl-SI.json": () => import("./sl-SI-CyIN1sc5.js"), "../../../language/locales/sv-SE.json": () => import("./sv-SE-Xh17T6yC.js") }), `../../../language/locales/${lang}.json`, 6) }, { ns: "contract", importFn: (lang) => _rolldown_dynamic_import_helper_default(/* @__PURE__ */ Object.assign({ "../../Contract/language/bg-BG.json": () => import("./bg-BG-DaiKPUAP.js"), "../../Contract/language/cs-CZ.json": () => import("./cs-CZ-Dit1sTZS.js"), "../../Contract/language/da-DK.json": () => import("./da-DK-CSuIOYvv.js"), "../../Contract/language/de-DE.json": () => import("./de-DE-UxQXcw2Z.js"), "../../Contract/language/el-GR.json": () => import("./el-GR-JdIfiWWD.js"), "../../Contract/language/en-US.json": () => import("./en-US-DtWDVC_l.js"), "../../Contract/language/es-ES.json": () => import("./es-ES-CgcvvmLv.js"), "../../Contract/language/et-EE.json": () => import("./et-EE-BtoIECkX.js"), "../../Contract/language/fi-FI.json": () => import("./fi-FI-CUapPvf9.js"), "../../Contract/language/fr-FR.json": () => import("./fr-FR-D34baGa-.js"), "../../Contract/language/hr-HR.json": () => import("./hr-HR-C4sBzG1i.js"), "../../Contract/language/hu-HU.json": () => import("./hu-HU-DgjvclPA.js"), "../../Contract/language/it-IT.json": () => import("./it-IT-BZrpE0qK.js"), "../../Contract/language/ja-JP.json": () => import("./ja-JP-DB56llc7.js"), "../../Contract/language/lt-LT.json": () => import("./lt-LT-DFZD-gis.js"), "../../Contract/language/lv-LV.json": () => import("./lv-LV-BJgLY-OW.js"), "../../Contract/language/nl-NL.json": () => import("./nl-NL-CBBxSKzB.js"), "../../Contract/language/no-NO.json": () => import("./no-NO-3PlX_ro5.js"), "../../Contract/language/pl-PL.json": () => import("./pl-PL-ComkJGTw.js"), "../../Contract/language/pt-BR.json": () => import("./pt-BR-Ct1Nhi9U.js"), "../../Contract/language/pt-PT.json": () => import("./pt-PT-BhEGejvl.js"), "../../Contract/language/ro-RO.json": () => import("./ro-RO-QlHjtTpP.js"), "../../Contract/language/sk-SK.json": () => import("./sk-SK-CxisoTfT.js"), "../../Contract/language/sl-SI.json": () => import("./sl-SI-CG07y9Cp.js"), "../../Contract/language/sv-SE.json": () => import("./sv-SE-C2lw5FJ7.js") }), `../../Contract/language/${lang}.json`, 5) }, { ns: "ui", importFn: (lang) => _rolldown_dynamic_import_helper_default(/* @__PURE__ */ Object.assign({ "../../ui/language/bg-BG.json": () => import("./bg-BG-BUBUyZgz.js"), "../../ui/language/cs-CZ.json": () => import("./cs-CZ-BFJyFYpX.js"), "../../ui/language/da-DK.json": () => import("./da-DK-BNvIcL59.js"), "../../ui/language/de-DE.json": () => import("./de-DE-B8Eby_UK.js"), "../../ui/language/el-GR.json": () => import("./el-GR-DYmDnzZe.js"), "../../ui/language/en-US.json": () => import("./en-US-Mma5wIWL.js"), "../../ui/language/es-ES.json": () => import("./es-ES-DLBRDQJZ.js"), "../../ui/language/et-EE.json": () => import("./et-EE-C_Z4PWda.js"), "../../ui/language/fi-FI.json": () => import("./fi-FI-azwPyx-k.js"), "../../ui/language/fr-FR.json": () => import("./fr-FR-CzdHSH04.js"), "../../ui/language/hr-HR.json": () => import("./hr-HR-C7Hp8OgD.js"), "../../ui/language/hu-HU.json": () => import("./hu-HU-B34uBEZ9.js"), "../../ui/language/it-IT.json": () => import("./it-IT-BCqVu72_.js"), "../../ui/language/ja-JP.json": () => import("./ja-JP-C7_6K98B.js"), "../../ui/language/lt-LT.json": () => import("./lt-LT-BhzsTniu.js"), "../../ui/language/lv-LV.json": () => import("./lv-LV-B6yxwa6Z.js"), "../../ui/language/nl-NL.json": () => import("./nl-NL-4iZ44kzK.js"), "../../ui/language/no-NO.json": () => import("./no-NO-BSJ1rjY4.js"), "../../ui/language/pl-PL.json": () => import("./pl-PL-BHjlKdWC.js"), "../../ui/language/pt-BR.json": () => import("./pt-BR-BMIZHo3V.js"), "../../ui/language/pt-PT.json": () => import("./pt-PT-s_KcBKav.js"), "../../ui/language/ro-RO.json": () => import("./ro-RO-DsFmqo3p.js"), "../../ui/language/sk-SK.json": () => import("./sk-SK-BspZv60l.js"), "../../ui/language/sl-SI.json": () => import("./sl-SI-D26FDPwq.js"), "../../ui/language/sv-SE.json": () => import("./sv-SE-JKGeqd9J.js") }), `../../ui/language/${lang}.json`, 5) } ]); const [stepsData, setStepsData] = useState({ unAcceptedTermsOfServiceTypes: [], acceptedTermsOfServices: [] }); const { data: legalEntity } = useLegalEntity(ROOT_LE); const { data: serviceAgreementStatus, isLoading: isStatusLoading } = useTermsOfServiceStatus(); const { data: serviceAgreementAcceptanceInfos, isLoading: isAcceptanceInfoLoading } = useTermsOfServiceAcceptanceInfos(); const { mutateAsync: acceptTermsOfService } = useAcceptTermsOfService(); const handleOnClose = () => { if (modalView) onUnmount?.(); onClose?.(); }; const handleSign = useCallback(async (legalEntityId, termsOfServiceDocumentId, signedBy) => { const acceptedTermsOfService = await acceptTermsOfService({ acceptedBy: signedBy.acceptedBy, legalEntityReference: legalEntityId, termsOfServiceDocumentId }); const paramAllowList = { type: acceptedTermsOfService.type, acceptedBy: acceptedTermsOfService.acceptedBy, id: acceptedTermsOfService.id, language: acceptedTermsOfService.language, termsOfServiceDocumentId: acceptedTermsOfService.termsOfServiceDocumentId }; const { acceptedTermsOfServices } = stepsData; acceptedTermsOfServices.push(paramAllowList); const newStepsData = { unAcceptedTermsOfServiceTypes: serviceAgreementStatus?.termsOfServiceTypes?.filter((tosType) => tosType !== acceptedTermsOfService.type) ?? [], acceptedTermsOfServices }; setStepsData(newStepsData); onAccept?.(newStepsData); }, [ onAccept, stepsData, acceptTermsOfService, serviceAgreementStatus?.termsOfServiceTypes ]); const handleOnComplete = () => { onComplete?.(stepsData); }; return isStatusLoading || isAcceptanceInfoLoading || !legalEntity ? /* @__PURE__ */ jsx(Loader, {}) : /* @__PURE__ */ jsx(ServiceAgreementDropin, { taskType: TaskTypes.SERVICE_AGREEMENT, legalEntityResponse: legalEntity, serviceAgreementTypes: serviceAgreementStatus?.termsOfServiceTypes ?? [], serviceAgreementAcceptanceInfos: serviceAgreementAcceptanceInfos?.data ?? [], handleSign, asEmbedded, asModal: modalView, handleCloseClick: handleOnClose, showInitialBackButton: !!onClose, onComplete: handleOnComplete, handleAddSigner }); } //#endregion export { AcceptTermsOfServiceComponent as t };