{"version":3,"sources":["../../api/idp/index.ts","../../api/idp/model/codeError.ts","../../ui-flanders/themes/_shared/images/Pluxee_Logo_DarkBlue_RGB.png","../../auth/common/index.ts","../../common/constants/environment.ts","../../common/utils/debugLog.ts","../../core-app/idp/screens/login/assets/itsme-auth.png","../../auth/common/auth.context.tsx","../../auth/common/auth.service.ts","../../auth/common/auth.service.mock.ts","../../api/idp/model/models.ts","../../api/idp/model/idpModel.ts","../../api/idp/model/loginCodeError.ts","../../api/idp/model/regionCode.ts","../../api/common/constants.ts","../../api/common/utilities.ts","../../api/idp/utilities.ts","../../api/idp/config.ts","../../api/idp/idp.ts","../../core-app/idp/screens/login/assets/id-auth.png","../../core-app/idp/screens/login/assets/sms-auth.png","../../core-app/idp/screens/login/assets/totp-auth.png","../../core-app/common/components/brussels/footer/assets/anysurfer.svg","../../core-app/common/components/brussels/footer/assets/logo--en.svg","../../core-app/common/components/brussels/footer/assets/logo--fr.svg","../../core-app/common/components/brussels/footer/assets/logo--nl.svg","../../core-app/common/components/brussels/footer/assets/sprb.svg","../../ui-flanders/themes/bl/images/logo.svg","../../auth/common/auth.constant.ts","../../common/utils/useTitle.ts","../../ui-flanders/components/icon/SwIcon.constants.ts","../../ui-flanders/components/utilities.ts","../../ui-flanders/components/action-group/SwActionGroup.tsx","../../common/utils/dataTest.ts","../../i18n/common/keys.ts","../../ui-flanders/datatest/keys.ts","../../ui-flanders/components/core/SwColumn.tsx","../../ui-flanders/components/icon/SwIcon.tsx","../../ui-flanders/components/button/SwButton.tsx","../../ui-flanders/components/introduction/SwIntroduction.tsx","../../ui-flanders/components/util/hooks/useVisuallyHidden.ts","../../ui-flanders/components/link/SwLink.tsx","../../ui-flanders/components/title/SwTitle.tsx","../../ui-flanders/components/fetch-error-message/SwFetchErrorMessage.tsx","../../ui-flanders/components/loader/SwLoader.tsx","../../ui-flanders/components/core/SwGrid.tsx","../../ui-flanders/components/core/SwLayout.tsx","../../ui-flanders/components/core/SwRegion.tsx","../../ui-flanders/components/core/SwContainer.tsx","../../ui-flanders/components/core/SwFormColumn.tsx","../../ui-flanders/components/core/SwFormGrid.tsx","../../ui-flanders/components/core/SwMain.tsx","../../ui-flanders/components/core/SwPage.tsx","../../ui-flanders/components/form-message/SwFormRequiredStar.tsx","../../ui-flanders/components/form-message/SwFormMessageLabel.tsx","../../ui-flanders/components/action-label/SwActionLabel.tsx","../../ui-flanders/components/alert/SwAlert.utils.ts","../../ui-flanders/components/alert/SwAlert.tsx","../../ui-flanders/components/badge/SwBadge.tsx","../../ui-flanders/components/breadcrumb/SwBreadcrumb.tsx","../../common/validation/validation.ts","../../common/utils/formFormatting.ts","../../common/utils/isIe.ts","../../common/utils/oneOfObj.ts","../../common/utils/useRefMounted.ts","../../common/utils/useAsyncCallback.ts","../../common/utils/useAsync.ts","../../common/utils/useUpdateEffect.ts","../../common/utils/useEventListener.ts","../../common/utils/useOnClickOutside.ts","../../common/utils/useTextMask.tsx","../../common/enums/AvailableLanguages.ts","../../common/utils/utils.ts","../../ui-flanders/components/tooltip/useTooltip.ts","../../common/utils/useOnScreen.ts","../../ui-flanders/components/input-addon/SwInputAddon.tsx","../../ui-flanders/components/input-field/SwInputField.tsx","../../ui-flanders/components/input-group/SwInputGroup.tsx","../../ui-flanders/components/datepicker/SwDatePicker.utils.ts","../../ui-flanders/components/datepicker/SwDatePicker.tsx","../../ui-flanders/components/formik/field/autocomplete/AutocompleteField.tsx","../../ui-flanders/components/datepicker/SwDatePicker2.tsx","../../ui-flanders/components/util/hooks/useBreakpoint.ts","../../ui-flanders/components/popover/SwPopover.tsx","../../ui-flanders/components/form-input/SwFormInput.tsx","../../ui-flanders/components/dropdown-navigation/SwDropdownNavigation.tsx","../../ui-flanders/components/form-group/SwFormGroup.tsx","../../ui-flanders/components/form-message/SwFormMessageError.tsx","../../ui-flanders/components/form/SwForm.tsx","../../ui-flanders/components/util/hooks/useFormError.ts","../../ui-flanders/components/formik/field/error-message-for-field/SwErrorMessageForField.tsx","../../ui-flanders/components/upload/SwUpload.utils.ts","../../ui-flanders/components/formik/field/input/SwInputField.tsx","../../ui-flanders/components/formik/field/input/SwInputPasswordField.tsx","../../ui-flanders/components/radio/SwRadio.tsx","../../ui-flanders/components/select/SwSelect.tsx","../../ui-flanders/components/textarea/SwTextArea.tsx","../../common/context/actions.tsx","../../ui-flanders/components/upload/components/SwUploadFile.tsx","../../ui-flanders/components/upload/SwUpload.tsx","../../common/context/alerts.tsx","../../ui-flanders/components/formik/form-address/SwFormAddress.constant.ts","../../ui-flanders/components/formik/form-address/SwFormAddress.utils.ts","../../ui-flanders/components/info-tile/SwInfoTile.tsx","../../ui-flanders/components/formik/form-submit-message/SwFormSubmitMessage.tsx","../../ui-flanders/components/formik/form-validate-on-mount/SwFormValidateOnMount.tsx","../../ui-flanders/components/info-tile/SwInfoTileDefault.tsx","../../ui-flanders/components/pager/SwPagerItem.tsx","../../ui-flanders/components/info-tile/SwInfoTileSpotlight.tsx","../../ui-flanders/components/show-on-checked/SwShowOnChecked.tsx","../../ui-flanders/components/show-on-checked/SwShowOnCheckedContent.tsx","../../ui-flanders/components/slider/helpers/flickity-equal-height.js","../../core-app/common/components/error-crash-tracking.const.ts","../../core-app/common/components/ConfigLoadFailedFallback.tsx","../../core-app/common/components/error-crash-tracking.tsx","../../core-app/common/components/RemoveIfInIframe.tsx","../../core-app/customers/utils/google-analytics.ts","../../core-app/common/config/index.ts","../../core-app/idp/screens/login/components/LoginWithExternalProvider.tsx","../../core-app/idp/components/headless/PageViewGTMListener.tsx","../../i18n/idp/locales/index.ts","../../i18n/idp/keys.ts","../../core-app/idp/screens/login/components/LoginWithCredentials.tsx","../../core-app/idp/screens/login/components/LoginWithItsMeButton.tsx","../../common/enums/LokaliseKeys.ts","../../common/enums/OS.ts","../../common/enums/StorageKeys.ts","../../common/enums/Environments.ts","../../core-app/idp/constants/index.ts","../../core-app/idp/screens/login/components/LoginErrorAlert.tsx","../../core-app/idp/screens/login/components/CredentialsLoginWarning.tsx","../../core-app/idp/utils/getLoginErrorTranslationKey.ts","../../core-app/idp/screens/login/LoginScreen.tsx","../../core-app/idp/utils/useUrlLocale.ts","../../core-app/idp/screens/password/PasswordRecoveryScreen.tsx","../../core-app/idp/screens/password/utils.ts","../../core-app/idp/screens/password/PasswordChangeScreen.tsx","build-config.ts","../../core-app/common/components/brussels/footer/Footer.tsx","../../core-app/idp/utils/useLanguage.ts","components/Footer.tsx","../../core-app/common/components/brussels/header/components/HeaderLogo.tsx","../../core-app/common/components/brussels/header/components/HeaderMenuButton.tsx","../../core-app/common/components/brussels/header/components/HeaderSwitchLanguage.tsx","../../core-app/common/components/brussels/header/Header.tsx","components/Header.tsx","App.tsx","../../core-app/idp/i18n/index.ts","index.tsx"],"names":["CodeError","ENTITYNOTFOUND","INVALIDREQUESTSYNTAX","VALIDATIONEXCEPTION","CLIENTNOTAUTHENTICATED","INTERNALSERVERERROR","EXTERNALSERVICEERROR","module","exports","environment","process","debugLog","title","message","arguments","length","undefined","DEBUG_MODE","console","log","AuthAction","AuthStateContext","createContext","useAuthState","context","useContext","Error","Log","logger","JSON","stringify","auid","IDPModelTenant","LoginCodeError","AccountDisabled","AccountLocked","MissingUsernamePassword","InvalidUsernamePassword","UserNotFound","WrongTenant","NotAllowed","UnknownError","RegionCode","BRU","WAL","VLG","ApiMode","ApiHeaders","toAxiosResponse","promise","then","data","createApiError","code","correlationId","apiByMode","mock","login","credendials","Promise","resolve","redirectUrl","recoverPassword","recoveryCredentials","changePassword","_changePassword2","_x2","apply","toString","validateCode","payload","getModel","search","readEidData","token","idm","state","completeIdm","companyId","cacheId","getIdmSwitchRedirectUrl","accessToken","callbackUrl","api","instance","axios","post","Username","username","Password","password","RememberLogin","rememberMe","ReturnUrl","returnUrl","UiLocale","uiLocale","_changePassword","_x","newPassword","get","concat","SessionId","CompanyId","encodeURIComponent","headers","Authorization","getIdpApi","getApi","_ref","_ref$headers","baseUrl","_ref$mode","mode","API","create","baseURL","defaults","interceptors","response","use","error","reject","errors","getHTTPInstance","AuthStorageKeys","Tenant","CLIENT_ID_CITIZEN_VL","CLIENT_ID_PROVIDER_VL","CLIENT_ID_CITIZEN_VL_OCMW","CLIENT_ID_PROVIDER_VL_LOCAL","DEFAULT_USE_TITLE_OPTIONS","restoreOnUnmount","Icon","document","options","prevTitleRef","useRef","useEffect","current","_title","mergeClassNames","_len","classes","Array","_key","reduce","className","selectors","SwActionGroup","_ref2","tagName","modBordered","modAlignRight","modAlignCenter","modSpaceBetween","modCollapseXs","modCollapseS","modCollapseM","children","rest","_objectWithoutProperties","TagName","join","createElement","_objectSpread","regex","dynamicDataTest","template","variables","replace","match","path","slice","trim","i18nKeys","alert","ariaLabel","menu","attention","breadcrumb","toggleArrow","information","input","logo","selectOption","tableHeader","toolbar","willExpire","form","bicFormat","checked","different","differentPassword","email","equal","ibanFormat","invalid","maxLength","maxValue","minLength","minValue","newPasswordConfirm","noEmail","noPaste","pattern","phone","required","voucherFormat","website","notFoundScreen","cta","subTitle","server","ACTION_UNAVAILABLE_IN_REGION","BUSINESS_SERVICE_ERROR","CLIENT_NOT_AUTHENTICATED","CONTACT_SUPPORT","CUSTOMER_ALREADY_HAS_EXTENDED_QUOTA","DEFAULT","ENTITY_NOT_FOUND","EXTERNAL_SERVICE_ERROR","FORBIDDEN","FORBIDDEN_WRONG_REGION","INTERNAL_SERVER_ERROR","INVALID_FILE_FORMAT","INVALID_REQUEST_SYNTAX","KLARNA_ORDER_FAILED","KLARNA_SESSION_FAILED","NISS_ALREADY_HAS_EXTENDED_QUOTA_REQUEST","NOT_ADULT_PROSPECT","NO_VALID_CONTRACT","QUOTA_EXCEEDED","VALIDATION_EXCEPTION","VOUCHER_ORDER_FAILED","business","FACEVALUE_BLOCKED_EXCHANGE","DATA_LIMIT_EXCEEDED","DATE_IN_FUTURE","INVALID","INVALID_FORMAT","MINIMUMAGENOTREACHED","MINIMUM_AGE_NOT_REACHED","MISSING_VALUE","NISS_ALREADY_USED","NISS_MISMATCH","OUT_OF_ENUM","POSTAL_CODE_IN_WRONG_REGION","START_DATE_GREATER_THAN_END_DATE","UNKNOWN_VALUE","VALUE_ALREADY_EXISTS","VALUE_TOO_LONG","VALUE_TOO_SHORT","nissAlreadyUsed","wrongRegion","maintenance","introText","refreshButton","serviceUnavailableScreen","activeTabLabel","and","appTitle","autoCompletedataLoading","breadcrumbLabel","close","contractType","MATERNITY","STANDARD","cancel","delete","details","download","edit","exchange","ok","order","previous","refund","retry","save","validate","datePicker","addonText","addonTooltip","daysCount","autocomplete","invalidStreet","first","errorMessage","validationErrorMessage","hidePassword","keyword","label","amount","bankAccount","beneficiaryIban","bic","city","dateFormat","emailAddress","firstName","iban","itIsMyDeliveryAddress","mobilePhoneNumber","name","niss","number","paymentDate","paymentMethod","paymentType","bankTransfer","klarna","phoneNumber","postcode","product","quantity","street","total","voucherType","language","DE","FR","NL","last","mainAddress","mobile","update","body","mandatory","optional","continue","mobilePermissions","externalStorage","monthCount","navigation","next","noResults","notYetDefined","optionPlaceholder","or","page","pageLoading","pager","of","BANCONTACT","BANK_TRANSFER","INSTANT_PAYMENT","MASTERCARD","ONLINE_PAYMENT","VISA","personalDetails","showPassword","statusType","PAID","PENDING","PROCESSING","RECEIVED","SENT","supportType","ELECTRONIC","PAPER","MR","MRS","upload","labelDrag","remove","removeAll","voucher","vouchersCount","dataTest","getClasses","formGridPrefix","widthAndPush","push","pushL","pushM","pushS","pushXs","width","widthL","widthM","widthS","widthXs","classArray","hasColumns","isNumerical","value","Number","isNaN","parseInt","getComputedWidth","widthArray","gridValue","nom","denom","_toConsumableArray","formatClass","widthClass","classWidth","calculatedWidth","modifier","isPush","widthOfColumn","gridType","formattedModifier","split","colCount","_i","_sizes","size","sizeCapitalized","c","toUpperCase","classNames","filter","v","i","indexOf","SwColumn","_ref3","cols","pushers","_useState","useState","_slicedToArray","SwIcon","React","forwardRef","ref","modAfter","icon","modBefore","modLarge","modLight","modRotatedFull","modRotatedHalf","modSmall","SwButton","_ref4","modBlock","modDisabled","modError","modIcon","modIconAfter","modIconBefore","modLoading","modNarrow","modSecondary","modTertiary","modWide","modNaked","href","to","defaultTagName","Link","getTag","_getUrl","urlHref","urlTo","getUrl","disabled","SwIntroduction","modBold","useVisuallyHidden","domRef","classList","add","SwLink","_ref5","modIconLight","modIconOnly","modIconRotatedFull","modIconRotatedHalf","modNoClass","exact","hiddenText","ReachLink","visuallyHiddenRef","iconClasses","getIconClasses","SwTitle","modAlt","modBorder","modSans","sublink","sublinkIcon","sublinkText","ctaText","tagStyle","semanticTagStyle","isWrapped","linkText","linkUrl","LinkType","wrapperClasses","getWrapperClasses","sublinkIconWithDefault","Object","assign","SwFetchErrorMessage","_ref$title","_ref$subtitle","subtitle","_ref$cta","redirectTo","onClick","t","useTranslation","Fragment","SwLoader","modDark","modMessageHidden","_ref2$message","messageHidden","role","SwGrid","modCenter","modEnd","modNoGutter","modSpaceAround","modStacked","modStart","modVBottom","modVCenter","modVStretched","modVTop","SwLayout","SwRegion","modMedium","modNoSpace","modNoSpaceBordered","modNoSpaceBottom","modNoSpaceTop","modOverlap","SwContainer","loading","errorChildren","window","location","reload","style","padding","loadingChildren","SwFormColumn","SwFormGrid","SwMain","id","itemProp","tabIndex","SwPage","RequiredStar","SwFormMessageLabel","_ref2$modRequired","modRequired","AlertType","SwAlert","titleTagName","image","closeText","closable","modCta","modSuccess","modWarning","content","actions","visible","_useState3","TitleTagName","modFadeOut","titleContentClasses","getTitleContentClasses","messageClasses","nakedClasses","getNakedClasses","src","alt","data-testid","type","CLOSE","getAlertPropsByType","SUCCESS","CHECK_CIRCLE","WARNING","ALERT_CIRCLE","ERROR","INFORMATION","INFO_CIRCLE","SwBadge","initials","hiddenLabel","modAccent","modAction","modWhite","modXlarge","modXsmall","modXxsmall","modSeparators","modBar","labelText","barClasses","childrenWithSeparator","Children","map","child","isValidElement","cloneElement","useSeparator","createValidator","rules","validationError","keys","acc","key","rule","_defineProperty","isEmpty","isArray","test","defaultMessage","unsetError","values","setFieldValue","deepPath","index","reverse","firstValidIndex","findIndex","Patterns","navigator","userAgent","toLowerCase","useRefMounted","refMounted","useAsyncCallback","fn","deps","initialState","_useState2","setState","mounted","callback","useCallback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_args","wrap","_context","prev","sent","abrupt","t0","stop","useAsync","_useAsyncCallback","_useAsyncCallback2","useEventListener","eventName","handler","element","savedHandler","addEventListener","eventListener","event","removeEventListener","useOnClickOutside","dependencies","listener","contains","target","useMaskedInput","_ref$guide","guide","keepCharPositions","mask","onChange","pipe","_ref$placeholderChar","placeholderChar","showMask","_ref$value","textMask","init","createTextMaskInputElement","inputElement","useLayoutEffect","AvailableLanguages","useTooltip","binding","e","tooltip","tooltipInstance","evt","keyCode","hide","mount","onScreen","rootMargin","isIntersecting","setIntersecting","observer","IntersectionObserver","entry","observe","unobserve","useOnScreen","placement","offset","html","modActive","trigger","Tooltip","dataset","vlTooltipTitle","dispose","wasActive","setWasActive","el","show","_isOpen","updateTitleContent","SwInputAddon","text","tooltipRef","SwInputField","modInline","modFocus","_ref2$type","autoFocus","aria-required","SwInputGroup","LocalizationFlatpickr","en","English","fr","French","nl","Dutch","de","German","omitNil","obj","forEach","isDiffDate","date","secondDate","dateTime","DateTime","fromJSDate","startOf","secondDateTime","Math","floor","diff","days","usePrevious","_ref$format","format","_ref$visualFormat","visualFormat","minDate","maxDate","disableDate","disabledDates","defaultDate","defaultTime","enableTime","excludeDates","_ref$timeTwentyfour","timeTwentyfour","_ref$modMonthSelect","modMonthSelect","minTime","maxTime","parseDate","onBlur","placeholder","props","_useTranslation","i18n","inputRef","addonRef","flatpickr","setFlatpickr","_useState4","selectedDates","setSelectedDates","actualInput","mobileInput","altInput","_useState5","_useState7","flatpickrInstance","Flatpickr","allowInput","altFormat","locale","clickOpens","time_24hr","plugins","monthSelectPlugin","shorthand","changedSelectedDates","onValueUpdate","onClose","focus","positionElement","setAttribute","destroy","set","previousSelectedDates","some","previousDate","previousValue","setDate","handleBlur","fromFormat","fromISO","isValid","toJSDate","removeAttribute","config","CALENDAR","preventDefault","open","optionBoxPosition","containerRef","_ref$modError","fp","setFp","onReady","dates","currentDateString","fpInstance","render","renderProps","aria-label","getBreakpoint","getComputedStyle","getPropertyValue","popoverContentClasses","isOpen","SwPopover","modIconRotated","modLeft","modRight","modClosable","advancedLabel","onPointerUpCapture","_ref2$offsetX","offsetX","_ref2$offsetY","offsetY","_ref2$basicLabel","basicLabel","tag","action","latestPopoverZIndex","setLatestPopoverZIndex","setIsOpen","_useState6","isClosing","setIsClosing","_useState8","popper","setPopper","_useState9","_useState10","breakpoint","setBreakpoint","popoverReference","popoverContentReference","_useState11","_useState12","backdrop","setBackdrop","popoverAdvancedLabel","popoverToggleLabel","popoverToggleLabelHidden","hidden","popoverToggleIcon","ARROW_RIGHT","default","rotation","createElementsForMobile","backdropCreated","querySelector","backdropElement","appendChild","initiatePopper","modifiers","flip","behavior","popperInstance","Popper","onUpdate","updateBound","onCreate","disableEventListeners","updateZIndex","zIndex","closePopover","createPopover","togglePopover","points","bpCallback","arg","bp","includes","resizeHandler","setClose","aria-expanded","SwFormInput","titleSize","UP_DOWN_ARROWS","SwFormMessageError","SwForm","useFormError","field","_ref$form","touched","useMemo","displayFocussed","SwErrorMessageForField","autoUnsetServerError","_ref$testId","testId","dirty","FileSizeUnits","SwInputTextField","_ref$type","_ref$label","_ref$helpText","helpText","_ref$column","column","_ref$labelColumn","labelColumn","inputOnChange","_ref$modBlock","_ref$autoUnsetServerE","parse","currentValue","htmlFor","fieldName","relatedTarget","nodeName","SwInputPasswordField","displayPassword","setDisplayPasswors","paddingRight","data-js-id","border","position","top","right","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","HIDE","SHOW","modSingle","placeholderText","_ref2$modNoPlaceholde","modNoPlaceholder","placeholderLabel","ActionType","FileSizeExponent","_FileSizeExponent","TB","GB","MB","KB","B","SwUploadFile","file","unset","base","unit","find","pow","round","getFileSize","Boolean","DOCUMENT","aria-hidden","onUpload","uploadLabel","uploadDragText","maxFilesize","allowedFileTypes","_ref3$multiple","multiple","files","setFiles","errorFiles","setErrorFiles","isDragging","setIsDragging","onDropAccepted","onDropRejected","_useDropzone","useDropzone","onDragEnter","onDragOver","onDragLeave","onDrop","_ref$maxFilesize","maxSize","accept","getDropzoneOptions","getRootProps","getInputProps","dragText","PAPER_CLIP","hasFiles","BIN","AlertAction","AlertStateContext","AlertDispatchContext","createAlert","cuid","persistent","alertReducer","ADD","DELETE","CLEAR","AddressFieldNames","AlertProvider","_useReducer","useReducer","_useReducer2","alertDispatch","Provider","SwInfoTileType","Alert","link","connect","formik","status","setStatus","isError","isSuccessStatus","isErrorStatus","msg","msgWithLink","errorsFieldname","validateForm","SwInfoTileDefault","connections","modSubTitleBig","badge","_ref2$badgeColor","badgeColor","color","connection","PagerItemType","COMPONENT_BY_TYPE","_COMPONENT_BY_TYPE","SPOTLIGHT","_ref2$modBadge","modBadge","modEllipsis","footer","flex","flexGrow","SwInfoTile","Flickity","prototype","_createResizeClass","this","createMethods","resize","call","CustomTrackEvent","ConfigLoadFailedFallback","mainTitle","introduction","actionButton","Component","EventCategory","EventAction","EventLabel","EventPathname","configService","ConfigService","_classCallCheck","_createClass","buildConfig","_this","fileName","freeze","oidc","app","auth","catch","err","getConfig","DashboardActionEvent","ContestServiceManagementActionEvent","AccountCreationActionEvent","AuthenticationScheme","sendCustomInteractionToGTM","eventCategory","eventAction","eventLabel","eventValue","TagManager","dataLayer","eventNonInteraction","PageViewGTMListener","LocationProvider","pathname","_ref$modDefaultPathna","modDefaultPathname","virtualPageURL","sentPageViewEvent","locales","MailSubject","RecoveryPassword","a11y","bl","brps","url","general","serviceVouchers","customerWebsite","providerWebsite","complaint","contactAProvider","contactUs","cookies","faq","news","privacyPolicy","question","termsAndConditions","siteBar","brussels","header","regionName","idpConfigErrorDescription","idpConfigErrorDescriptionProvider","idpConfigErrorTitle","loginErrorAccountBlocked","loginErrorAccountDisabled","loginErrorInvalidUsernamePassword","loginErrorNotAllowed","loginErrorTitle","loginErrorUserNotFound","loginErrorWrongTenant","loginErrorUserNotBelgian","loginUnknownError","logoutErrorDescription","logoutErrorTitle","sessionExpiredFor2FADescription","sessionExpiredFor2FATitle","validationCodeFor2FADescription","validationCodeFor2FATitle","workerLoginErrorAccountBlocked","workerLoginErrorAccountDisabled","flanders","overRegionWebsite","accessibility","appnameTitle","cookieManagement","copyright","disclaimer","nav","pp","tc","publishedBy","goToNextPagePagination","goToPreviousPagePagination","nextPagination","ofPagination","showMorePagination","appNameTitle","appNameTitleWithRegion","redirectToRegionHomePage","support","contactList","callus","contactus","description","findProvider","pass","PostalCode","companyNameOrNumber","reset","headquarter","results","noEnterprisesAssigned","card","addFavorite","removeFavorite","less","more","intro","timer","active","expired","idp","EmailField","EmailadressField","BE_BRU","BE_WAL","BE_VLG","LogWithBurgerProfileButton","LogWithBurgerProfileTitle","LogWithBurgerProfileTitleProvider","LogWithEmailPasswordTitle","MainTitle","MainTitleProvider","PasswordField","legacyLoginWarning","itsme","paradigm","authorizationNumber","authorizationNumberProvider","backButton","confirmNewPassword","connectionButton","connectWithPluxee","connectToApplication","forgotPassword","loginWithProvider","ctaLink","externalProvider","equalPassword","resetPassword","radioBtn","sendLoginCredentials","forgotPasswordLink","logoutMessage","noAccountYet","passwordChange","passwordChangeErrorMessage","passwordChangeSuccessMessage","passwordRecovery","passwordRecoveryErrorMessage","passwordRecoveryIntro","passwordRecoveryIntroProvider","passwordRecoveryMatchingError","passwordRecoverySuccessMessage","passwordRule1","passwordRule2","passwordRule3","passwordRule4","passwordRulesIntro","registerHereLink","sendRequest","tokenInvalidMessage","userNameField","worker","MainSubTitle","authenticationCodeExplanationLabel","authenticationCodeLabel","authenticationCodeTitle","logWithEmailPasswordSharingInfoWarning","pageTitle","vl","wl","LoginWithCredentials","idpConfig","loginLoading","forgotPasswordUrl","lokaliseKey","onLogin","height","Formik","initialValues","onSubmit","handleSubmit","Field","component","tenant","LoginWithItsMeButton","viewBox","d","fill","LokaliseKeys","OS","StorageKeys","Environments","LoginWithExternalProvider","provider","showPluxeeLoginOption","showInfoTooltip","onSwitchToCredentials","tooltipKey","authenticationScheme","ITSME","PARADIGM","displayName","getProviderTitle","INFO","display","justifyContent","logoItsme","marginBottom","marginTop","logoId","logoApp","logoSms","EXTERNAL","getProviderCta","REGION_COMPLAINT_URL","_REGION_COMPLAINT_URL","REGION_CONDITIONS_URL","_REGION_CONDITIONS_UR","REGION_COOKIES_URL","_REGION_COOKIES_URL","REGION_NEWS_URL","_REGION_NEWS_URL","REGION_PRIVACY_URL","_REGION_PRIVACY_URL","REGION_QUESTION_URL","_REGION_QUESTION_URL","REGION_CONTACT_US_URL","_REGION_CONTACT_A_PRO","_REGION_CONTACT_US_UR","LoginErrorAlert","_REGION_FAQ_URL","_PASS_URL","translationKey","regionCode","Trans","i18nKey","components","rel","CredentialsLoginWarning","onBack","getLoginErrorTranslationKey","loginError","LoginScreen","_i18nKeysMapByTenant","isCredentialsLoginSelected","setIsCredentialsLoginSelected","useTitle","_useAsync","_yield$getApi$getMode","idpConfigLoading","idpConfigError","_callee2","credentials","_e$error","_context2","_useAsyncCallback2$","externalProviders","visibleExternalProviders","_getConfig","_getConfig$buildConfi","_getConfig$buildConfi2","defaultLanguage","changeLanguage","Settings","defaultLocale","isExternalLoginOnly","getRedirectUrlExternalProvider","shouldDisplayCredentialsLogin","enableLocalLogin","firstProvider","checkIfSpecialProvider","defaultI18nKeys","i18nKeysMap","Customer","shouldDisplayTitle","shouldDisplayIntroduction","loginWithExternalProvider","specialTreatedProviders","useUrlLocale","URLSearchParams","PasswordRecoveryScreen","_React$useState","_React$useState2","success","setSuccess","authorisationId","localizeKey","passwordRecoveryLoading","passwordRecoveryError","sendPasswordRecoveryRequest","noValidate","autoComplete","history","navigate","getRestOfTimeInSeconds","expiryTime","Date","now","SERVICE_VOUCHERS_WEBSITE","customer","_SERVICE_VOUCHERS_WEB","_PROVIDERS_SERVICE_VO","PasswordChangeScreen","searchParams","initialTimer","setTimer","interval","setInterval","oldTimer","clearInterval","s","duration","minutes","seconds","convertSecondsToTimer","useTimer","setError","passwordConfirmation","_React$useState3","_React$useState4","passwordKey","setTimeout","passwordChangeLoading","passwordChangeError","sendPasswordChangeRequest","onPaste","BRUSSELS","origin","availableLanguages","DUTCH","FRENCH","fallbackLanguage","getLogoForLanguage","lang","ENGLISH","brusselsLogoEn","brusselsLogoNl","brusselsLogoFr","FooterBrussels","topLinks","bottomLinks","languages","anysurfer","FOOTER","CLICK","draggable","lng","anysurferLogo","sprbLogo","useLanguage","setLanguage","localStorage","setItem","LAST_SELECTED_LANGUAGE","updateLocalesInUrlParams","documentElement","selectedLanguage","URL","decodedReturnUrl","decodeURIComponent","returnUrlObj","newReturnUrl","replaceState","Footer","HeaderLogo","publicUrl","homeUrl","titleMobile","mainLogoAlt","logoAlt","brusselsLogo","HeaderMenuButton","UlContainer","opacity","scale","transition","staggerChildren","LiItem","x","HeaderSwitchLanguage","langSelector","openLangSelector","availableLanguage","ARROW_DOWN","motion","ul","variants","initial","animate","li","ARROW_LEFT","HeaderBrussels","mobileNav","functionalHeader","Header","showMobileNav","_useLanguage","App","_config$buildConfig","I18nextProvider","initReactI18next","ICU","localeData","resources","translation","fallbackLng","debug","keySeparator","interpolation","escapeValue","Router","fetchConfig","googleTagManagerId","initialize","gtmId","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.d5edd25d.chunk.js","sourcesContent":["export * from './config';\nexport * from './model/models';\n","/**\n * Back For Front (BFF) Customer\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport type CodeError =\n | 'ENTITY_NOT_FOUND'\n | 'INVALID_REQUEST_SYNTAX'\n | 'VALIDATION_EXCEPTION'\n | 'CLIENT_NOT_AUTHENTICATED'\n | 'INTERNAL_SERVER_ERROR'\n | 'EXTERNAL_SERVICE_ERROR';\n\nexport const CodeError = {\n ENTITYNOTFOUND: 'ENTITY_NOT_FOUND' as CodeError,\n INVALIDREQUESTSYNTAX: 'INVALID_REQUEST_SYNTAX' as CodeError,\n VALIDATIONEXCEPTION: 'VALIDATION_EXCEPTION' as CodeError,\n CLIENTNOTAUTHENTICATED: 'CLIENT_NOT_AUTHENTICATED' as CodeError,\n INTERNALSERVERERROR: 'INTERNAL_SERVER_ERROR' as CodeError,\n EXTERNALSERVICEERROR: 'EXTERNAL_SERVICE_ERROR' as CodeError,\n};\n","module.exports = __webpack_public_path__ + \"static/media/Pluxee_Logo_DarkBlue_RGB.f0a83a75.png\";","export * from './auth.constant';\nexport * from './auth.context';\nexport * from './auth.service';\nexport * from './auth.service.abstract';\nexport * from './auth.service.mock';\nexport * from './auth.type';\n","export const environment = process.env;\n","import { environment } from '../constants/environment';\n\nexport const debugLog = (title: string, message: any = '') => {\n if (!environment.DEBUG_MODE) return;\n\n console.log(title, message);\n};\n","module.exports = __webpack_public_path__ + \"static/media/itsme-auth.55cd5ce1.png\";","import React, {\n createContext,\n ReactNode,\n Reducer,\n useContext,\n useReducer,\n} from 'react';\nimport { debugLog } from '@kaa/common/utils/debugLog';\n\nenum AuthAction {\n UPDATE = 'update',\n RESET = 'reset',\n LOADING = 'loading',\n}\n\ntype Action = { type: AuthAction; payload?: T };\ntype Dispatch = (action: Action) => void;\n\ntype AuthProviderProps = { children: ReactNode; initialState: T };\n\nconst AuthStateContext = createContext(null);\n\nconst AuthDispatchContext = createContext | null>(null);\n\nfunction userReducer(\n state: TState,\n action: Action,\n): TState | null {\n const { type, payload } = action;\n switch (type) {\n case AuthAction.UPDATE: {\n return { ...state, ...payload };\n }\n case AuthAction.LOADING: {\n debugLog('AuthAction.LOADING');\n return { ...state, loading: true };\n }\n case AuthAction.RESET: {\n const { initialState } = (state as unknown) as { initialState: TState };\n return {\n ...initialState,\n initialState,\n };\n }\n default: {\n throw new Error(`Unhandled action: ${action}`);\n }\n }\n}\n\nconst AuthProvider = ({\n children,\n initialState,\n}: AuthProviderProps) => {\n const [state, setAuth] = useReducer<\n Reducer>>\n >(userReducer, {\n ...initialState,\n initialState,\n });\n\n return (\n \n \n {children}\n \n \n );\n};\n\nconst useAuthState = (): TState => {\n const context = useContext(AuthStateContext);\n\n if (context === null) {\n throw new Error('useAuthState must be used within a AuthProvider');\n }\n\n return context;\n};\n\nconst useAuthDispatch = (): Dispatch> => {\n const context = useContext> | null>(\n AuthDispatchContext,\n );\n\n if (context === null) {\n throw new Error('useAuthDispatch must be used within a AuthProvider');\n }\n return context;\n};\n\nexport { AuthProvider, useAuthState, useAuthDispatch, AuthAction };\n","import { Log, UserManager, UserManagerSettings } from 'oidc-client';\nimport {\n AuthStorageKeys,\n CLIENT_ID_CITIZEN_VL,\n CLIENT_ID_CITIZEN_VL_OCMW,\n CLIENT_ID_PROVIDER_VL,\n CLIENT_ID_PROVIDER_VL_LOCAL,\n} from './auth.constant';\nimport { AuthServiceAbstract } from './auth.service.abstract';\nimport { AuthConfig, AuthUser } from './auth.type';\n\n// Logger\nif (process.env.NODE_ENV === 'development') {\n Log.logger = console;\n Log.level = Log.DEBUG;\n}\n\nconst { logger } = Log;\n\n// rename file\nexport class AuthService implements AuthServiceAbstract {\n private userManager: UserManager;\n\n constructor(\n private settings: UserManagerSettings,\n private config: AuthConfig,\n ) {\n if (\n sessionStorage.getItem(AuthStorageKeys.OCMW_LOGIN) &&\n settings.client_id === CLIENT_ID_CITIZEN_VL\n ) {\n // eslint-disable-next-line\n settings.client_id = CLIENT_ID_CITIZEN_VL_OCMW;\n } else {\n sessionStorage.removeItem(AuthStorageKeys.OCMW_LOGIN);\n }\n\n if (\n sessionStorage.getItem(AuthStorageKeys.LOCAL_LOGIN) &&\n settings.client_id === CLIENT_ID_PROVIDER_VL\n ) {\n // eslint-disable-next-line\n settings.client_id = CLIENT_ID_PROVIDER_VL_LOCAL;\n } else {\n sessionStorage.removeItem(AuthStorageKeys.LOCAL_LOGIN);\n }\n\n this.userManager = new UserManager(settings);\n }\n\n get extraQueryParams() {\n return {\n 'localize-key': this.config.lokaliseKey,\n };\n }\n\n getDirectSigninRequestUrlToIdp = (): Promise => {\n return this.userManager\n .createSigninRequest({\n extraQueryParams: this.extraQueryParams,\n })\n .then((request) => request.url);\n };\n\n getDirectSigninRequestUrlToIdpLocal = (): Promise => {\n sessionStorage.setItem(AuthStorageKeys.LOCAL_LOGIN, 'true');\n\n this.userManager = new UserManager({\n ...this.settings,\n client_id: CLIENT_ID_PROVIDER_VL_LOCAL,\n });\n\n return this.userManager\n .createSigninRequest({\n extraQueryParams: this.extraQueryParams,\n })\n .then((request) => request.url);\n };\n\n getSigninRequestUrl = () => {\n return this.config.loginUrl;\n };\n\n getLogoutRequestUrl = () => {\n return this.config.logoutUrl;\n };\n\n signinRedirect = (callback?: () => void) => {\n return this.userManager.signinRedirect({\n extraQueryParams: this.extraQueryParams,\n });\n };\n\n signinRedirectForOCMW = (callback?: () => void) => {\n sessionStorage.setItem(AuthStorageKeys.OCMW_LOGIN, 'true');\n\n this.userManager = new UserManager({\n ...this.settings,\n client_id: CLIENT_ID_CITIZEN_VL_OCMW,\n });\n\n return this.userManager.signinRedirect({\n extraQueryParams: this.extraQueryParams,\n });\n };\n\n signinRedirectCallback = () => {\n logger.info('signinRedirectCallback');\n\n return this.userManager.signinRedirectCallback().then((user: AuthUser) => {\n logger.info('signinRedirectCallback::USER', user);\n return user;\n });\n };\n\n signinSilent = () => {\n // oidc-client doesn't take the client_secret so we have to add it manually\n const { client_secret } = this.settings;\n return this.userManager\n .signinSilent({\n client_secret,\n extraQueryParams: this.extraQueryParams,\n })\n .then((user: AuthUser) => {\n logger.info('signinSilent::USER', user);\n return user;\n })\n .catch((error: any) => {\n logger.info('signinSilent::ERROR', error);\n throw error;\n });\n };\n\n signinSilentCallback = () => {\n logger.info('signinSilentCallback::start');\n return this.userManager\n .signinSilentCallback()\n .then((user: any) => {\n logger.info('signinSilentCallback::OK', user);\n })\n .catch((err: any) => {\n logger.info('signinSilentCallback::error', err);\n });\n };\n\n logout = () => {\n return Promise.all([\n this.userManager.signoutRedirect({\n id_token_hint: localStorage.getItem(AuthStorageKeys.ID_TOKEN),\n extraQueryParams: this.extraQueryParams,\n }),\n this.userManager\n .clearStaleState()\n .then(() => sessionStorage.removeItem(AuthStorageKeys.OCMW_LOGIN)),\n ]);\n };\n\n signoutRedirectCallback = () => {\n return Promise.all([\n this.userManager\n .signoutRedirectCallback()\n .then(() => window.location.replace(this.config.origin)),\n this.userManager\n .clearStaleState()\n .then(() => sessionStorage.removeItem(AuthStorageKeys.OCMW_LOGIN)),\n ]);\n };\n\n getUser = () => {\n return this.userManager.getUser();\n };\n\n getClientId = () => {\n return this.settings.client_id;\n };\n\n registerOnUserLoaded = (callback: (...ev: any[]) => void) => {\n this.userManager.events.addUserLoaded(callback);\n };\n\n unregisterOnUserLoaded = (callback: (...ev: any[]) => void) => {\n this.userManager.events.removeUserLoaded(callback);\n };\n\n registerOnUserSignedOut = (callback: (...ev: any[]) => void): void => {\n this.userManager.events.addUserSignedOut(callback);\n };\n\n unregisterOnUserSignedOut = (callback: (...ev: any[]) => void): void => {\n this.userManager.events.removeUserSignedOut(callback);\n };\n\n registerOnAccessTokenExpiring = (callback: (...ev: any[]) => void): void => {\n this.userManager.events.addAccessTokenExpiring(callback);\n };\n\n unregisterOnAccessTokenExpiring = (\n callback: (...ev: any[]) => void,\n ): void => {\n this.userManager.events.removeAccessTokenExpiring(callback);\n };\n}\n","import { AuthServiceAbstract } from './auth.service.abstract';\n\nconst user = {\n id_token: '',\n session_state: {},\n access_token: '',\n refresh_token: '',\n token_type: '',\n scope: '',\n profile: {\n 'http://schemas.sodexo.be/kaa/identity/claims/proxies': JSON.stringify([\n { auid: '123' },\n ]),\n },\n expires_at: 0,\n state: {},\n toStorageString: () => '',\n expires_in: 0,\n expired: false,\n scopes: [],\n};\n\nexport class AuthServiceMock implements AuthServiceAbstract {\n getSigninRequestUrl = () => '';\n\n getLogoutRequestUrl = () => '';\n\n signinRedirect = () => Promise.resolve();\n\n signinRedirectForOCMW = () => Promise.resolve();\n\n signinRedirectCallback = () => Promise.resolve(user);\n\n signinSilent = () => Promise.resolve(user);\n\n signinSilentCallback = () => Promise.resolve();\n\n logout = () => Promise.all([{}, (() => undefined)()]);\n\n signoutRedirectCallback = () => Promise.all([{}, (() => undefined)()]);\n\n getUser = () => Promise.resolve(user);\n\n getClientId = () => '';\n\n isAuthenticated = () => true;\n\n registerOnUserLoaded = (callback: (...ev: any[]) => void) => undefined;\n\n unregisterOnUserLoaded = (callback: (...ev: any[]) => void) => undefined;\n\n getDirectSigninRequestUrlToIdp = () => Promise.resolve('');\n\n getDirectSigninRequestUrlToIdpLocal = () => Promise.resolve('');\n\n registerOnUserSignedOut = (callback: (...ev: any[]) => void) => undefined;\n\n unregisterOnUserSignedOut = (callback: (...ev: any[]) => void) => undefined;\n\n registerOnAccessTokenExpiring = (callback: (...ev: any[]) => void) =>\n undefined;\n\n unregisterOnAccessTokenExpiring = (callback: (...ev: any[]) => void) =>\n undefined;\n}\n","export * from './codeError';\nexport * from './httpError';\nexport * from './idpModel';\nexport * from './loginCodeError';\nexport * from './loginCredentials';\nexport * from './loginResponse';\nexport * from './regionCode';\nexport * from './stateModel';\n","export enum IDPModelTenant {\n Provider = 'provider',\n Customer = 'customer',\n}\nexport type IDPModel = {\n password: null | string;\n allowRememberLogin: boolean;\n externalProviders: Array<{\n authenticationScheme: string;\n displayName: string;\n }>;\n isExternalLoginOnly: boolean;\n enableLocalLogin: boolean;\n rememberLogin: boolean;\n returnUrl: string;\n visibleExternalProviders: Array<{\n authenticationScheme: string;\n displayName: string;\n }>;\n externalLoginScheme: null | string;\n tenant: null | IDPModelTenant;\n username: null | string;\n uiLocale: null | string;\n};\n","export type LoginCodeError =\n | 'MissingUsernamePassword'\n | 'InvalidUsernamePassword'\n | 'AccountLocked'\n | 'UserNotFound'\n | 'WrongTenant'\n | 'AccountDisabled'\n | 'NotAllowed'\n | 'UnknownError';\n\nexport const LoginCodeError = {\n AccountDisabled: 'AccountDisabled' as LoginCodeError,\n AccountLocked: 'AccountLocked' as LoginCodeError,\n MissingUsernamePassword: 'MissingUsernamePassword' as LoginCodeError,\n InvalidUsernamePassword: 'InvalidUsernamePassword' as LoginCodeError,\n UserNotFound: 'UserNotFound' as LoginCodeError,\n WrongTenant: 'WrongTenant' as LoginCodeError,\n NotAllowed: 'NotAllowed' as LoginCodeError,\n UnknownError: 'UnknownError' as LoginCodeError,\n};\n","/**\n * Back For Front (BFF) Customer\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * ISO 3166-2:BE \\\\ BE_BRU - BRUSSELS\\\\ BE_WAL - WALLONIA\\\\ BE_VLG - FLANDERS\n */\nexport type RegionCode = 'BE_BRU' | 'BE_WAL' | 'BE_VLG';\n\nexport const RegionCode = {\n BRU: 'BE_BRU' as RegionCode,\n WAL: 'BE_WAL' as RegionCode,\n VLG: 'BE_VLG' as RegionCode,\n};\n","export enum ApiMode {\n API = 'api',\n MOCK = 'mock',\n}\n\nexport enum ApiHeaders {\n LANGUAGE = 'X-KAA-LANGUAGE',\n APP_ID = 'X-KAA-APP-ID',\n}\n","import { AxiosResponse } from 'axios';\n\n/**\n * It takes a promise and returns a promise\n * @param promise - Promise\n */\nexport const toAxiosResponse = (promise: Promise) =>\n promise.then((data) => ({\n data,\n })) as Promise>;\n\n/**\n * Wait a random amount of time between 100 and 500 milliseconds, then resolve the promise with the\n * given data.\n * @param {T} [data] - The data to be returned by the mocked function.\n */\nexport const mockedDelay = async (data?: T): Promise =>\n new Promise((resolve) => {\n setTimeout(() => {\n resolve(data);\n }, Math.random() * 400 + 100);\n });\n","import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios';\nimport { CodeError } from './model/codeError';\nimport { HttpError } from './model/httpError';\n\nexport const createApiError = (\n code: CodeError = CodeError.INTERNALSERVERERROR,\n message = '',\n correlationId = '',\n): HttpError => {\n return {\n code,\n message,\n correlationId,\n };\n};\n\nexport const getHTTPInstance = (\n baseUrl: string | undefined,\n headers: { [key: string]: string | undefined },\n): AxiosInstance => {\n const instance = axios.create({\n baseURL: baseUrl,\n });\n\n instance.defaults.headers = headers;\n\n instance.interceptors.response.use(\n (response: AxiosResponse): AxiosResponse => response,\n (error: AxiosError): Promise | void => {\n const { response } = error;\n\n if (!response) {\n return Promise.reject(createApiError());\n }\n\n // response.data.error is returned by login call so we hijack\n if (response.data.error) {\n return Promise.reject(response.data);\n }\n\n if (!response.data.errors) {\n return Promise.reject(createApiError());\n }\n\n return Promise.reject(error);\n },\n );\n\n return instance;\n};\n\nexport type HttpResponse = [HttpError | null, T | undefined];\n/**\n * Handling Promise error for axios\n * @param promise\n */\nexport function httpTo(promise: Promise): Promise> {\n return promise\n .then<[null, T]>((data: T) => [null, data])\n .catch<[HttpError, undefined]>((axiosError: AxiosError) => {\n if (!axiosError.response) {\n return [createApiError(), undefined];\n }\n\n return [axiosError.response.data as HttpError, undefined];\n });\n}\n","import { AxiosInstance } from 'axios';\nimport { ApiMode } from '../common/constants';\nimport { getIdpApi, getIdpMock, IdpApi } from './idp';\nimport { getHTTPInstance } from './utilities';\n\ninterface ApiByMode {\n mock: () => IdpApi;\n api: (instance: AxiosInstance) => IdpApi;\n}\n\nconst apiByMode: ApiByMode = {\n mock: () => getIdpMock(),\n api: (instance) => getIdpApi(instance),\n};\n\nexport interface ApiParameters {\n headers?: { [key: string]: string | undefined };\n baseUrl?: string;\n mode?: ApiMode;\n}\n\nexport const getApi = ({\n headers = {},\n baseUrl,\n mode = ApiMode.API,\n}: ApiParameters): IdpApi => {\n const instance = getHTTPInstance(baseUrl, headers);\n return apiByMode[mode](instance);\n};\n","import { AxiosInstance, AxiosResponse } from 'axios';\nimport { toAxiosResponse } from '../common';\nimport { IDPModel } from './model/idpModel';\nimport { LoginCredentials } from './model/loginCredentials';\nimport { LoginResponse, StateModel } from './model/models';\nimport { EidDataResponse } from './model/eidDataResponse';\nimport { IdmViewModel } from './model/idmResponse';\nimport {\n RecoveryCredentials,\n RecoveryPayload,\n} from './model/recoveryCredentials';\nimport { ChangePassword } from './model/changePassword';\n\nexport interface IdpApi {\n login(credendials: LoginCredentials): Promise>;\n\n recoverPassword(\n recoveryCredentials: RecoveryPayload,\n ): Promise>;\n\n changePassword(\n changePassword: ChangePassword,\n ): Promise>;\n\n validateCode(payload: StateModel): Promise>;\n\n getModel(search: string): Promise>;\n\n readEidData(token?: string): Promise>;\n\n idm(string: string): Promise>;\n\n completeIdm(\n companyId: string,\n cacheId: string,\n ): Promise>;\n\n getIdmSwitchRedirectUrl(\n accessToken: any,\n callbackUrl: string,\n ): Promise>;\n}\n\nexport const getIdpApi = (axios: AxiosInstance): IdpApi => {\n return {\n login(\n credendials: LoginCredentials,\n ): Promise> {\n return axios.post(`/core/login`, {\n Username: credendials.username,\n Password: credendials.password,\n RememberLogin: credendials.rememberMe,\n ReturnUrl: credendials.returnUrl,\n UiLocale: credendials.uiLocale,\n });\n },\n recoverPassword(\n recoveryCredentials: RecoveryPayload,\n ): Promise> {\n return axios.post(\n `/security/password/request-reset`,\n recoveryCredentials,\n );\n },\n changePassword(\n changePassword: ChangePassword,\n ): Promise> {\n return axios.post(`/security/password/reset`, {\n newPassword: changePassword.newPassword,\n });\n },\n validateCode(payload: StateModel): Promise> {\n return axios.post(`/core/2fa`, payload);\n },\n\n getModel(search: string): Promise> {\n return axios.get(`/core/login${search}`);\n },\n\n readEidData(token: string): Promise> {\n return axios.get(`/eid/read?token=${token}`);\n },\n\n idm(state: string): Promise> {\n return axios.get(`/external/idm?sid=${state}`);\n },\n\n completeIdm(\n companyId: string,\n cacheId: string,\n ): Promise> {\n return axios.post(`/external/idm`, {\n SessionId: cacheId,\n CompanyId: companyId,\n });\n },\n getIdmSwitchRedirectUrl(\n accessToken: any,\n callbackUrl: string,\n ): Promise> {\n return axios.get(\n `/core/idm-switch?redirect=${encodeURIComponent(callbackUrl)}`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n );\n },\n };\n};\n\nexport const getIdpMock = (): IdpApi => {\n return {\n login(\n credendials: LoginCredentials,\n ): Promise> {\n return toAxiosResponse(\n Promise.resolve({ redirectUrl: 'localhost:3000' }),\n );\n },\n recoverPassword(\n recoveryCredentials: RecoveryCredentials,\n ): Promise> {\n return toAxiosResponse(Promise.resolve({}));\n },\n changePassword(\n changePassword: ChangePassword,\n ): Promise> {\n return toAxiosResponse(\n Promise.resolve({ redirectUrl: 'http://localhost:3000' }),\n );\n },\n validateCode(payload: StateModel): Promise> {\n return toAxiosResponse(\n Promise.resolve({ redirectUrl: 'localhost:3000' }),\n );\n },\n getModel(search: string): Promise> {\n return toAxiosResponse(import('./mocks/getModel.json'));\n },\n readEidData(token: string): Promise> {\n return toAxiosResponse(import('./mocks/readEidData.json'));\n },\n idm(state: string): Promise> {\n return toAxiosResponse(import('./mocks/idm.json'));\n },\n completeIdm(\n companyId: string,\n cacheId: string,\n ): Promise> {\n return toAxiosResponse(Promise.resolve({}));\n },\n getIdmSwitchRedirectUrl(\n accessToken: any,\n callbackUrl: string,\n ): Promise> {\n return toAxiosResponse(Promise.resolve({}));\n },\n };\n};\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/anysurfer.abee349f.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo--en.adc183b2.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo--fr.2ac22fc3.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo--nl.6888af02.svg\";","module.exports = __webpack_public_path__ + \"static/media/sprb.ca925efd.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.bcf0214f.svg\";","export const CLIENT_ID_CITIZEN_VL = 'citizen-web-vl';\nexport const CLIENT_ID_PROVIDER_VL = 'provider-web-vl';\nexport const CLIENT_ID_CITIZEN_VL_OCMW = `${CLIENT_ID_CITIZEN_VL}-ocmw`;\nexport const CLIENT_ID_PROVIDER_VL_LOCAL = `${CLIENT_ID_PROVIDER_VL}-local`;\n\nexport enum AuthStorageKeys {\n ACCESS_TOKEN = 'access_token',\n REFRESH_TOKEN = 'refresh_token',\n ID_TOKEN = 'id_token',\n USER_ID = 'user_id',\n // If you change this routes, please change it signin-callback.html on every project\n CALLBACK_REDIRECT_URI = 'callback_redirect_uri',\n WAS_LOGGED = 'was_logged',\n OCMW_LOGIN = 'citizen_ocmw',\n LOCAL_LOGIN = 'provider_local',\n}\n\nexport enum Tenant {\n WORKER = 'tenant:worker',\n CUSTOMER = 'tenant:customer',\n}\n","/* eslint-disable */\nimport { useEffect, useRef } from 'react';\n\nexport interface UseTitleOptions {\n restoreOnUnmount?: boolean;\n}\nconst DEFAULT_USE_TITLE_OPTIONS: UseTitleOptions = {\n restoreOnUnmount: false,\n};\nfunction useTitle(\n title: string,\n options: UseTitleOptions = DEFAULT_USE_TITLE_OPTIONS,\n) {\n const prevTitleRef = useRef(document.title);\n document.title = title;\n useEffect(() => {\n if (options && options.restoreOnUnmount) {\n return () => {\n document.title = prevTitleRef.current;\n };\n } else {\n return;\n }\n }, []);\n}\n\nexport default typeof document !== 'undefined'\n ? useTitle\n : (_title: string) => {};\n","export enum Icon {\n ADD = 'add',\n ALERT_CIRCLE = 'alert-circle',\n ALERT_TRIANGLE_FILLED = 'alert-triangle-filled',\n ARROW_DOWN = 'arrow-down-fat',\n ARROW_LEFT = 'arrow-left-fat',\n ARROW_RIGHT = 'arrow-right-fat',\n ARROW_UP = 'arrow-up-fat',\n BIN = 'bin',\n BURGER_PROFILE = 'burgerprofiel',\n\n EXPAND = 'expand-horizontal-alt',\n CALENDAR = 'calendar',\n CHAT = 'chat-help',\n CHECK_CIRCLE = 'check-circle',\n CHECK_SMALL = 'check-small',\n CLOSE = 'close',\n DATA_TRANSFER = 'data-transfer',\n DATA_DOWNLOAD = 'data-download',\n DATA_UPLOAD = 'data-upload',\n DOCUMENT = 'document',\n EMAIL = 'email',\n FIELD = 'field',\n FILE_DOWNLOAD = 'file-download',\n FILE_EDIT = 'file-edit',\n FILE_NEW = 'file-new',\n FILE_UPLOAD = 'file-upload',\n EDIT = 'edit',\n ENVELOPE = 'envelope',\n EXTERNAL = 'external',\n INFO = 'info',\n INFO_CIRCLE = 'info-circle',\n INFO_SMALL = 'info-small',\n HOURGLASS = 'hourglass',\n IRONING = 'ironing',\n LIGHT_BULB = 'lightbulb',\n LOCATION = 'location',\n LOCK = 'lock',\n LOGOUT = 'logout',\n NAV_SHOW_MORE_HORIZONTAL = 'nav-show-more-horizontal',\n PAPER_CLIP = 'paperclip',\n PICK_UP = 'pick-up',\n PHONE = 'phone',\n PLAY = 'play',\n PAUSE = 'pause',\n PLUS_CIRCLE = 'plus-circle',\n PRINT = 'printer',\n PROGRAMMING_BUG = 'programming-bug',\n QUESTION_MARK = 'question-mark',\n QUESTION_MARK_FILLED = 'question-mark-filled',\n SAVE = 'save',\n SCAN = 'scan',\n SCISSORS = 'voucher-scissors',\n SEARCH = 'search',\n SEND_DOCUMENT = 'send-document', // Doesn't not exist in VL\n SHOPPING = 'shopping',\n TRUCK = 'shipping-truck',\n UNDO = 'text-undo',\n GROCERY_SHOPPING = 'shopping',\n SYNCHRONIZE = 'synchronize',\n TIMELINE = 'timeline',\n TRANSPORT = 'car',\n DISABLED_PERSON_TRANSPORTATION = 'car',\n UP_DOWN_ARROWS = 'up-down-arrows',\n USER = 'user',\n USER_ACTIF = 'profile-active',\n USER_CIRCLE = 'user-circle', // Doesn't not exist in VL\n USER_CIRCLE_ACTIF = 'user-circle-active', // Doesn't not exist in VL\n USER_SIGNUP = 'user-signup',\n VACCUM_CLEANER = 'vaccum-cleaner',\n HOUSEKEEPING = 'vaccum-cleaner',\n VOUCHER_CHECK = 'voucher-check',\n VOUCHERS_LIST = 'vouchers-list',\n VOUCHER_DOWNLOAD = 'voucher-download',\n WALLET = 'wallet',\n SHOW = 'view-add',\n HIDE = 'hide',\n SYNCHRONISE = 'synchronize',\n WORKSPENDING = 'workspending', // Doesn't not exist in VL\n WORKSADD = 'works-add', // Doesn't not exist in VL\n DOWNLOAD_LISTFILE = 'download-list-file', // Doesn't not exist in VL\n UPLOAD_LISTFILE = 'upload-list-file', // Doesn't not exist in VL\n AUTOFILE = 'auto-file',\n STAR = 'vote-star',\n FILM = 'film',\n NEWSPAPER = 'newspaper',\n}\n","import { FieldProps, FormikProps } from 'formik';\n\nexport const mergeClassNames = (...classes: Array) => {\n return classes.reduce((className, selectors) => {\n return selectors ? `${className} ${selectors}` : className;\n }, '');\n};\n\nexport type Omit = Pick>;\ntype FormikPropsClean = Omit, 'errors'> & {\n errors: any;\n};\nexport type FieldPropsClean = Omit, 'form'> & {\n form: FormikPropsClean;\n};\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype ActionGroupProps = AllHTMLAttributes & {\n modBordered?: boolean;\n modAlignRight?: boolean;\n modAlignCenter?: boolean;\n modSpaceBetween?: boolean;\n modCollapseXs?: boolean;\n modCollapseS?: boolean;\n modCollapseM?: boolean;\n tagName?: string;\n};\n\ntype Classes = {\n modBordered?: boolean;\n modAlignRight?: boolean;\n modAlignCenter?: boolean;\n modSpaceBetween?: boolean;\n modCollapseXs?: boolean;\n modCollapseS?: boolean;\n modCollapseM?: boolean;\n};\nconst getClasses = ({\n modBordered,\n modAlignRight,\n modAlignCenter,\n modSpaceBetween,\n modCollapseXs,\n modCollapseS,\n modCollapseM,\n}: Classes) => {\n return [\n 'vl-action-group',\n modBordered ? 'vl-action-group--bordered' : '',\n modAlignRight ? 'vl-action-group--align-right' : '',\n modAlignCenter ? 'vl-action-group--align-center' : '',\n modSpaceBetween ? 'vl-action-group--space-between' : '',\n modCollapseXs ? 'vl-action-group--collapse--xs' : '',\n modCollapseS ? 'vl-action-group--collapse--s' : '',\n modCollapseM ? 'vl-action-group--collapse--m' : '',\n ].join(' ');\n};\n\nexport const SwActionGroup = ({\n tagName,\n modBordered,\n modAlignRight,\n modAlignCenter,\n modSpaceBetween,\n modCollapseXs,\n modCollapseS,\n modCollapseM,\n children,\n className,\n ...rest\n}: ActionGroupProps) => {\n const TagName = tagName || 'div';\n\n const classes = getClasses({\n modBordered,\n modAlignRight,\n modAlignCenter,\n modSpaceBetween,\n modCollapseXs,\n modCollapseS,\n modCollapseM,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import get from 'lodash.get';\n\nconst regex = /#{[^{]+}/g;\n\nexport const dynamicDataTest = (template: string, variables?: any) => {\n return template.replace(regex, (match: string) => {\n const path = match.slice(2, -1).trim();\n return variables ? get(variables, path) : '';\n });\n};\n","/* This file is auto-generated, manual edits in this file will be overwritten! */\n\nexport const i18nKeys = {\n a11y: {\n alert: 'a11y.alert',\n ariaLabel: {\n menu: 'a11y.ariaLabel.menu',\n },\n attention: 'a11y.attention',\n breadcrumb: {\n toggleArrow: 'a11y.breadcrumb.toggleArrow',\n },\n information: 'a11y.information',\n input: 'a11y.input',\n logo: 'a11y.logo',\n selectOption: 'a11y.selectOption',\n tableHeader: 'a11y.tableHeader',\n toolbar: 'a11y.toolbar',\n willExpire: 'a11y.willExpire',\n },\n errors: {\n form: {\n bicFormat: 'errors.form.bicFormat',\n checked: 'errors.form.checked',\n different: 'errors.form.different',\n differentPassword: 'errors.form.differentPassword',\n email: 'errors.form.email',\n equal: 'errors.form.equal',\n ibanFormat: 'errors.form.ibanFormat',\n invalid: 'errors.form.invalid',\n maxLength: 'errors.form.maxLength',\n maxValue: 'errors.form.maxValue',\n minLength: 'errors.form.minLength',\n minValue: 'errors.form.minValue',\n newPassword: 'errors.form.newPassword',\n newPasswordConfirm: 'errors.form.newPasswordConfirm',\n noEmail: 'errors.form.noEmail',\n noPaste: 'errors.form.noPaste',\n password: 'errors.form.password',\n pattern: 'errors.form.pattern',\n phone: 'errors.form.phone',\n required: 'errors.form.required',\n voucherFormat: 'errors.form.voucherFormat',\n website: 'errors.form.website',\n },\n notFoundScreen: {\n cta: 'errors.notFoundScreen.cta',\n subTitle: 'errors.notFoundScreen.subTitle',\n title: 'errors.notFoundScreen.title',\n },\n server: {\n ACTION_UNAVAILABLE_IN_REGION:\n 'errors.server.ACTION_UNAVAILABLE_IN_REGION',\n BUSINESS_SERVICE_ERROR: 'errors.server.BUSINESS_SERVICE_ERROR',\n CLIENT_NOT_AUTHENTICATED: 'errors.server.CLIENT_NOT_AUTHENTICATED',\n CONTACT_SUPPORT: 'errors.server.CONTACT_SUPPORT',\n CUSTOMER_ALREADY_HAS_EXTENDED_QUOTA:\n 'errors.server.CUSTOMER_ALREADY_HAS_EXTENDED_QUOTA',\n DEFAULT: 'errors.server.DEFAULT',\n ENTITY_NOT_FOUND: 'errors.server.ENTITY_NOT_FOUND',\n EXTERNAL_SERVICE_ERROR: 'errors.server.EXTERNAL_SERVICE_ERROR',\n FORBIDDEN: 'errors.server.FORBIDDEN',\n FORBIDDEN_WRONG_REGION: 'errors.server.FORBIDDEN_WRONG_REGION',\n INTERNAL_SERVER_ERROR: 'errors.server.INTERNAL_SERVER_ERROR',\n INVALID_FILE_FORMAT: 'errors.server.INVALID_FILE_FORMAT',\n INVALID_REQUEST_SYNTAX: 'errors.server.INVALID_REQUEST_SYNTAX',\n KLARNA_ORDER_FAILED: 'errors.server.KLARNA_ORDER_FAILED',\n KLARNA_SESSION_FAILED: 'errors.server.KLARNA_SESSION_FAILED',\n NISS_ALREADY_HAS_EXTENDED_QUOTA_REQUEST:\n 'errors.server.NISS_ALREADY_HAS_EXTENDED_QUOTA_REQUEST',\n NOT_ADULT_PROSPECT: 'errors.server.NOT_ADULT_PROSPECT',\n NO_VALID_CONTRACT: 'errors.server.NO_VALID_CONTRACT',\n QUOTA_EXCEEDED: 'errors.server.QUOTA_EXCEEDED',\n VALIDATION_EXCEPTION: 'errors.server.VALIDATION_EXCEPTION',\n VOUCHER_ORDER_FAILED: 'errors.server.VOUCHER_ORDER_FAILED',\n business: {\n FACEVALUE_BLOCKED_EXCHANGE:\n 'errors.server.business.FACEVALUE_BLOCKED_EXCHANGE',\n },\n form: {\n CONTACT_SUPPORT: 'errors.server.form.CONTACT_SUPPORT',\n DATA_LIMIT_EXCEEDED: 'errors.server.form.DATA_LIMIT_EXCEEDED',\n DATE_IN_FUTURE: 'errors.server.form.DATE_IN_FUTURE',\n DEFAULT: 'errors.server.form.DEFAULT',\n INVALID: 'errors.server.form.INVALID',\n INVALID_FORMAT: 'errors.server.form.INVALID_FORMAT',\n MINIMUMAGENOTREACHED: 'errors.server.form.MINIMUMAGENOTREACHED',\n MINIMUM_AGE_NOT_REACHED: 'errors.server.form.MINIMUM_AGE_NOT_REACHED',\n MISSING_VALUE: 'errors.server.form.MISSING_VALUE',\n NISS_ALREADY_USED: 'errors.server.form.NISS_ALREADY_USED',\n NISS_MISMATCH: 'errors.server.form.NISS_MISMATCH',\n OUT_OF_ENUM: 'errors.server.form.OUT_OF_ENUM',\n POSTAL_CODE_IN_WRONG_REGION:\n 'errors.server.form.POSTAL_CODE_IN_WRONG_REGION',\n START_DATE_GREATER_THAN_END_DATE:\n 'errors.server.form.START_DATE_GREATER_THAN_END_DATE',\n UNKNOWN_VALUE: 'errors.server.form.UNKNOWN_VALUE',\n VALUE_ALREADY_EXISTS: 'errors.server.form.VALUE_ALREADY_EXISTS',\n VALUE_TOO_LONG: 'errors.server.form.VALUE_TOO_LONG',\n VALUE_TOO_SHORT: 'errors.server.form.VALUE_TOO_SHORT',\n nissAlreadyUsed: 'errors.server.form.nissAlreadyUsed',\n wrongRegion: 'errors.server.form.wrongRegion',\n },\n maintenance: {\n introText: 'errors.server.maintenance.introText',\n refreshButton: 'errors.server.maintenance.refreshButton',\n title: 'errors.server.maintenance.title',\n },\n },\n serviceUnavailableScreen: {\n cta: 'errors.serviceUnavailableScreen.cta',\n subTitle: 'errors.serviceUnavailableScreen.subTitle',\n title: 'errors.serviceUnavailableScreen.title',\n },\n },\n general: {\n activeTabLabel: 'general.activeTabLabel',\n and: 'general.and',\n appTitle: 'general.appTitle',\n attention: 'general.attention',\n autoCompletedataLoading: 'general.autoCompletedataLoading',\n breadcrumbLabel: 'general.breadcrumbLabel',\n close: 'general.close',\n contractType: {\n MATERNITY: 'general.contractType.MATERNITY',\n STANDARD: 'general.contractType.STANDARD',\n },\n cta: {\n cancel: 'general.cta.cancel',\n delete: 'general.cta.delete',\n details: 'general.cta.details',\n download: 'general.cta.download',\n edit: 'general.cta.edit',\n exchange: 'general.cta.exchange',\n ok: 'general.cta.ok',\n order: 'general.cta.order',\n previous: 'general.cta.previous',\n refund: 'general.cta.refund',\n retry: 'general.cta.retry',\n save: 'general.cta.save',\n validate: 'general.cta.validate',\n },\n datePicker: {\n addonText: 'general.datePicker.addonText',\n addonTooltip: 'general.datePicker.addonTooltip',\n },\n daysCount: 'general.daysCount',\n errors: {\n form: {\n autocomplete: {\n minLength: 'general.errors.form.autocomplete.minLength',\n },\n invalidStreet: 'general.errors.form.invalidStreet',\n },\n },\n first: 'general.first',\n form: {\n errorMessage: 'general.form.errorMessage',\n validationErrorMessage: 'general.form.validationErrorMessage',\n },\n hidePassword: 'general.hidePassword',\n keyword: 'general.keyword',\n label: {\n amount: 'general.label.amount',\n bankAccount: 'general.label.bankAccount',\n beneficiaryIban: 'general.label.beneficiaryIban',\n bic: 'general.label.bic',\n city: 'general.label.city',\n contractType: 'general.label.contractType',\n dateFormat: 'general.label.dateFormat',\n emailAddress: 'general.label.emailAddress',\n firstName: 'general.label.firstName',\n iban: 'general.label.iban',\n itIsMyDeliveryAddress: 'general.label.itIsMyDeliveryAddress',\n mobilePhoneNumber: 'general.label.mobilePhoneNumber',\n name: 'general.label.name',\n niss: 'general.label.niss',\n number: 'general.label.number',\n paymentDate: 'general.label.paymentDate',\n paymentMethod: 'general.label.paymentMethod',\n paymentType: {\n bankTransfer: 'general.label.paymentType.bankTransfer',\n klarna: 'general.label.paymentType.klarna',\n },\n phoneNumber: 'general.label.phoneNumber',\n postcode: 'general.label.postcode',\n product: 'general.label.product',\n quantity: 'general.label.quantity',\n street: 'general.label.street',\n title: 'general.label.title',\n total: 'general.label.total',\n voucherType: 'general.label.voucherType',\n },\n language: {\n DE: 'general.language.DE',\n FR: 'general.language.FR',\n NL: 'general.language.NL',\n },\n last: 'general.last',\n mainAddress: 'general.mainAddress',\n mobile: {\n update: {\n body: {\n mandatory: 'general.mobile.update.body.mandatory',\n optional: 'general.mobile.update.body.optional',\n },\n cta: {\n continue: 'general.mobile.update.cta.continue',\n update: 'general.mobile.update.cta.update',\n },\n title: 'general.mobile.update.title',\n },\n },\n mobilePermissions: {\n externalStorage: {\n message: 'general.mobilePermissions.externalStorage.message',\n title: 'general.mobilePermissions.externalStorage.title',\n },\n },\n monthCount: 'general.monthCount',\n navigation: 'general.navigation',\n next: 'general.next',\n noResults: 'general.noResults',\n notYetDefined: 'general.notYetDefined',\n optionPlaceholder: 'general.optionPlaceholder',\n or: 'general.or',\n page: 'general.page',\n pageLoading: 'general.pageLoading',\n pager: {\n of: 'general.pager.of',\n },\n paymentMethod: {\n BANCONTACT: 'general.paymentMethod.BANCONTACT',\n BANK_TRANSFER: 'general.paymentMethod.BANK_TRANSFER',\n INSTANT_PAYMENT: 'general.paymentMethod.INSTANT_PAYMENT',\n MASTERCARD: 'general.paymentMethod.MASTERCARD',\n ONLINE_PAYMENT: 'general.paymentMethod.ONLINE_PAYMENT',\n VISA: 'general.paymentMethod.VISA',\n },\n personalDetails: 'general.personalDetails',\n previous: 'general.previous',\n search: 'general.search',\n showPassword: 'general.showPassword',\n statusType: {\n DEFAULT: 'general.statusType.DEFAULT',\n PAID: 'general.statusType.PAID',\n PENDING: 'general.statusType.PENDING',\n PROCESSING: 'general.statusType.PROCESSING',\n RECEIVED: 'general.statusType.RECEIVED',\n SENT: 'general.statusType.SENT',\n },\n supportType: {\n ELECTRONIC: 'general.supportType.ELECTRONIC',\n PAPER: 'general.supportType.PAPER',\n },\n title: {\n MR: 'general.title.MR',\n MRS: 'general.title.MRS',\n },\n upload: {\n error: 'general.upload.error',\n label: 'general.upload.label',\n labelDrag: 'general.upload.labelDrag',\n remove: 'general.upload.remove',\n removeAll: 'general.upload.removeAll',\n },\n voucher: 'general.voucher',\n vouchersCount: 'general.vouchersCount',\n },\n};\n","/* https://wiki.sodexo.be/display/PROJECTAAH/Data-testid */\n/* Nomenclature for data-testid for Sodexo\n The data-testid is splitted in 3 parts: ComponentName-tagName-action or description of the element. */\n\nexport const dataTest = {\n SwButton: 'SwButton-button-#{id}',\n SwActionLabel: 'SwLink-button-#{id}',\n SwModal: 'SwModal-dialog-#{id}',\n SwModalClose: 'SwModal-button-modalClose',\n SwAlert: 'SwAlert-button-closeAlert',\n SwAutocompleteField: 'SwInputTextField-input-#{fieldName}',\n SwAutocompleteFieldError: 'SwFormMessageError-p-#{fieldName}-error',\n SwAutocompleteListBox: 'AutocompleteField-ul-listBox',\n SwAutoCompleteOption: 'AutocompleteField-button-autocompleteOption-#{index}',\n breadcrumbItemSeparator: 'breadcrumbItem-a-Separator',\n breadcrumbItem: 'breadcrumbItem-li-breadcrumbItem',\n SwCheckboxField: 'SwCheckboxField-input-#{fieldName}',\n SwCheckboxFieldError: 'SwCheckboxField-p-#{fieldName}-error',\n SwInputTextField: 'SwInputTextField-input-#{fieldName}',\n SwInputTextFieldError: 'SwInputTextField-input-#{fieldName}-error',\n SwCalendar: 'SwCalendar-input-#{id}',\n SwRadioField: 'SwRadioField-input-#{id}',\n SwSelectField: 'SwSelectField-select-#{fieldName}',\n SwSelectFieldError: 'SwSelectField-select-#{fieldName}-error',\n SwPill: 'SwPill-button-closePill-#{id}',\n SwDocument: 'SwLink-a-document',\n SwDocumentExternal: 'SwLink-a-documentExternal',\n SwProgressBarStep: 'SwProgressBarStep-button-#{label}',\n SwWizard: 'SwWizard-div-contentPane',\n SwWizardPrev: 'SwWizardPane-a-previousStep',\n SwWizardNext: 'SwWizardPane-button-nextStep',\n SwMultiselect: 'SwMultiSelect-select-selector',\n};\n","import { AllHTMLAttributes, createElement, useState } from 'react';\nimport { mergeClassNames } from '../utilities';\n\nexport type Column = {\n width?: string;\n widthL?: string;\n widthM?: string;\n widthS?: string;\n widthXs?: string;\n push?: string;\n pushL?: string;\n pushM?: string;\n pushS?: string;\n pushXs?: string;\n};\n\nexport type ColumnProps = AllHTMLAttributes & {\n tagName?: string;\n cols?: unknown[];\n pushers?: unknown[];\n} & Column;\n\nexport type Classes = {\n formGridPrefix: string;\n} & Column;\n\nexport const getClasses = ({\n formGridPrefix,\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n}: Classes) => {\n // In Flanders, they use 'this' to access the props, we send them as params\n const widthAndPush: any = {\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n };\n const classArray = [];\n const colCount = 12;\n const sizes = ['', 'l', 'm', 's', 'xs'];\n let hasColumns = false;\n\n const isNumerical = (value: any) => !Number.isNaN(parseInt(value, 10));\n\n const getComputedWidth = (widthArray: any) => {\n let gridValue = colCount;\n let nom;\n let denom;\n\n if (isNumerical(widthArray) && isNumerical(widthArray[1])) {\n [nom, denom] = [...widthArray];\n }\n\n gridValue = (colCount / denom) * nom;\n\n return gridValue < colCount ? gridValue : colCount;\n };\n\n const formatClass = (\n widthClass: any,\n modifier: string | null = null,\n isPush = false,\n ) => {\n let classWidth;\n let calculatedWidth;\n let widthOfColumn: any = colCount;\n\n const gridType = isPush ? 'push' : 'col';\n const formattedModifier = modifier ? `--${modifier}` : '';\n\n if (isNumerical(widthClass)) {\n widthOfColumn = widthClass.split(/\\//); // Split on /\n\n calculatedWidth = widthOfColumn[1]\n ? getComputedWidth(widthOfColumn)\n : widthClass;\n\n classWidth = `vl-${formGridPrefix}${gridType}--${calculatedWidth}-${colCount}${formattedModifier}`;\n } else {\n widthOfColumn = widthClass.split(/-/); // Split on -\n\n if (!widthOfColumn[1]) {\n switch (widthOfColumn[0]) {\n case 'full':\n calculatedWidth = colCount;\n break;\n case 'half':\n calculatedWidth = colCount / 2;\n break;\n case 'reset':\n calculatedWidth = 0;\n break;\n default:\n calculatedWidth = colCount;\n break;\n }\n } else {\n calculatedWidth = isNumerical(getComputedWidth(widthOfColumn))\n ? getComputedWidth(widthOfColumn)\n : colCount;\n }\n\n classWidth = `vl-${formGridPrefix}${gridType}--${calculatedWidth}-${colCount}${formattedModifier}`;\n }\n\n if (gridType === 'push' && parseInt(calculatedWidth, 10) === 0) {\n classWidth = formattedModifier\n ? `vl-${formGridPrefix}push--reset${formattedModifier}`\n : `vl-${formGridPrefix}push--reset`;\n }\n\n if (classWidth) {\n classArray.push(classWidth);\n }\n };\n\n // eslint-disable-next-line\n for (const size of sizes) {\n const sizeCapitalized = size.replace(/^\\w/, (c) => c.toUpperCase());\n\n if (widthAndPush[`width${sizeCapitalized}`]) {\n formatClass(widthAndPush[`width${sizeCapitalized}`], size);\n hasColumns = true;\n }\n\n if (widthAndPush[`push${sizeCapitalized}`]) {\n formatClass(widthAndPush[`push${sizeCapitalized}`], size, true);\n hasColumns = true;\n }\n\n if (!hasColumns) {\n classArray.push(`vl-${formGridPrefix}col--${colCount}-${colCount}`);\n }\n }\n\n const removeDuplicate = (classNames: string[]) =>\n classNames.filter((v: string, i: number) => classNames.indexOf(v) === i);\n return removeDuplicate(classArray).join(' ');\n};\n\nexport const SwColumn = ({\n tagName,\n className,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n cols,\n pushers,\n children,\n ...rest\n}: ColumnProps) => {\n const TagName = tagName || 'div';\n const [formGridPrefix] = useState('');\n const classes = getClasses({\n formGridPrefix,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\nimport { Icon } from './SwIcon.constants';\n\ntype IconProps = AllHTMLAttributes & {\n tagName?: string;\n icon?: Icon | string;\n modSmall?: boolean;\n modLarge?: boolean;\n modLight?: boolean;\n modBefore?: boolean;\n modAfter?: boolean;\n modRotatedHalf?: boolean;\n modRotatedFull?: boolean;\n};\n\ntype Classes = {\n icon?: Icon | string;\n modSmall?: boolean;\n modLarge?: boolean;\n modLight?: boolean;\n modBefore?: boolean;\n modAfter?: boolean;\n modRotatedHalf?: boolean;\n modRotatedFull?: boolean;\n};\nconst getClasses = ({\n icon,\n modSmall,\n modLarge,\n modLight,\n modBefore,\n modAfter,\n modRotatedHalf,\n modRotatedFull,\n}: Classes) => {\n return [\n 'vl-icon vl-vi',\n icon ? `vl-vi-${icon}` : '',\n modSmall ? 'vl-icon--small' : '',\n modLarge ? 'vl-icon--large' : '',\n modLight ? 'vl-icon--light' : '',\n modBefore ? 'vl-icon--before' : '',\n modAfter ? 'vl-icon--after' : '',\n modRotatedHalf ? 'vl-vi-u-90deg' : '',\n modRotatedFull ? 'vl-vi-u-180deg' : '',\n ].join(' ');\n};\n\nexport const SwIcon = React.forwardRef(\n (\n {\n tagName,\n modAfter,\n icon,\n modBefore,\n modLarge,\n modLight,\n modRotatedFull,\n modRotatedHalf,\n modSmall,\n className,\n children,\n ...rest\n }: IconProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'span';\n const classes = getClasses({\n icon,\n modSmall,\n modLarge,\n modAfter,\n modBefore,\n modLight,\n modRotatedFull,\n modRotatedHalf,\n });\n\n return createElement(TagName, {\n className: mergeClassNames(classes, className),\n 'aria-hidden': 'true',\n ref,\n ...rest,\n });\n },\n);\n","import { Link } from '@reach/router';\nimport React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { SwIcon } from '../icon/SwIcon';\nimport { mergeClassNames } from '../utilities';\n\ntype ButtonProps = AllHTMLAttributes & {\n tagName?: string;\n icon?: string;\n to?: string;\n href?: string;\n modDisabled?: boolean;\n modError?: boolean;\n modIcon?: boolean;\n modIconAfter?: boolean;\n modIconBefore?: boolean;\n modNarrow?: boolean;\n modBlock?: boolean;\n modLarge?: boolean;\n modLoading?: boolean;\n modWide?: boolean;\n modSecondary?: boolean;\n modTertiary?: boolean;\n modNaked?: boolean;\n};\n\ntype Classes = {\n modDisabled?: boolean;\n modError?: boolean;\n modIcon?: boolean;\n modIconAfter?: boolean;\n modIconBefore?: boolean;\n modNarrow?: boolean;\n modBlock?: boolean;\n modLarge?: boolean;\n modLoading?: boolean;\n modWide?: boolean;\n modSecondary?: boolean;\n modTertiary?: boolean;\n modNaked?: boolean;\n};\nconst getClasses = ({\n modError,\n modLarge,\n modBlock,\n modDisabled,\n modIcon,\n modIconAfter,\n modIconBefore,\n modLoading,\n modNarrow,\n modSecondary,\n modTertiary,\n modWide,\n modNaked,\n}: Classes) => {\n return [\n 'vl-button',\n modDisabled ? 'vl-button--disabled' : '',\n modError ? 'vl-button--error' : '',\n modIcon ? 'vl-button--icon' : '',\n modIconAfter ? 'vl-button--icon-after' : '',\n modIconBefore ? 'vl-button--icon-before' : '',\n modNarrow ? 'vl-button--narrow' : '',\n modBlock ? 'vl-button--block' : '',\n modLarge ? 'vl-button--large' : '',\n modLoading ? 'vl-button--loading' : '',\n modWide ? 'vl-button--wide' : '',\n modSecondary ? 'vl-button--secondary' : '',\n modTertiary ? 'vl-button--tertiary' : '',\n modNaked ? 'vl-button--naked' : '',\n ].join(' ');\n};\n\ntype Tag = {\n to?: string;\n defaultTagName: string;\n tagName?: string;\n};\nconst getTag = ({ tagName, defaultTagName, to }: Tag) => {\n if (tagName !== defaultTagName) {\n return tagName;\n }\n if (to && to.match(/^(http(s)?):\\/\\/|ftp:|mailto:|tel:/)) {\n return 'a';\n }\n\n if (to) {\n // TODO: reach router or react router\n return Link;\n }\n return defaultTagName;\n};\n\ntype Url = {\n to?: string;\n href?: string;\n};\nconst getUrl = ({ to, href }: Url) => {\n if (to && to.match(/^(http(s)?):\\/\\/|ftp:|mailto:|tel:/)) {\n return {\n urlHref: href || to,\n urlTo: null,\n };\n }\n\n return {\n urlHref: href,\n urlTo: to,\n };\n};\n\nexport const SwButton = React.forwardRef(\n (\n {\n tagName,\n icon,\n className,\n modBlock,\n modDisabled,\n modError,\n modIcon,\n modIconAfter,\n modIconBefore,\n modLarge,\n modLoading,\n modNarrow,\n modSecondary,\n modTertiary,\n modWide,\n modNaked,\n href,\n to,\n children,\n ...rest\n }: ButtonProps,\n ref: Ref,\n ) => {\n const defaultTagName = 'button';\n const TagName = getTag({\n tagName: tagName || defaultTagName,\n defaultTagName,\n to,\n }) as any;\n\n const { urlHref, urlTo } = getUrl({ href, to });\n\n const classes = getClasses({\n modWide,\n modError,\n modTertiary,\n modSecondary,\n modNarrow,\n modLoading,\n modIconBefore,\n modIconAfter,\n modIcon,\n modDisabled,\n modLarge,\n modBlock,\n modNaked,\n });\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n disabled: modDisabled || modLoading,\n to: urlTo,\n href: urlHref,\n ref,\n ...rest,\n },\n modIcon ? : null,\n modIconBefore ? (\n \n ) : null,\n children,\n modIconAfter ? (\n \n ) : null,\n );\n },\n);\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype IntroductionProps = AllHTMLAttributes & {\n tagName?: string;\n modBold?: boolean;\n};\n\ntype Classes = {\n modBold?: boolean;\n};\nconst getClasses = ({ modBold }: Classes) => {\n return ['vl-introduction', modBold ? 'vl-introduction--bold' : ''].join(' ');\n};\n\nexport const SwIntroduction = ({\n tagName,\n modBold,\n className,\n children,\n ...rest\n}: IntroductionProps) => {\n const TagName = tagName || 'p';\n\n const classes = getClasses({\n modBold,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useVisuallyHidden = () => {\n const domRef = useRef(null);\n useEffect(() => {\n if (!domRef.current) {\n return;\n }\n const baseClass = 'vl-u-visually-hidden';\n domRef.current.classList.add(baseClass);\n }, []);\n\n return domRef;\n};\n","import { Link as ReachLink } from '@reach/router';\nimport React, { AllHTMLAttributes, createElement } from 'react';\nimport { SwIcon } from '../icon/SwIcon';\nimport { useVisuallyHidden } from '../util/hooks/useVisuallyHidden';\nimport { mergeClassNames } from '../utilities';\nimport './SwLink.style.scss';\n\nexport type LinkProps = AllHTMLAttributes & {\n tagName?: string;\n to?: string;\n testid?: string;\n state?: any;\n href?: string;\n icon?: string;\n hiddenText?: string;\n exact?: boolean;\n modIconBefore?: boolean;\n modIconAfter?: boolean;\n modIconOnly?: boolean;\n modIconLight?: boolean;\n modIconRotatedHalf?: boolean;\n modIconRotatedFull?: boolean;\n modBlock?: boolean;\n modBold?: boolean;\n modNoClass?: boolean;\n modSmall?: boolean;\n modLarge?: boolean;\n modDisabled?: boolean;\n};\n\ntype Classes = {\n modNoClass?: boolean;\n modBlock?: boolean;\n modBold?: boolean;\n modSmall?: boolean;\n modLarge?: boolean;\n modDisabled?: boolean;\n};\n\nconst getClasses = ({\n modBold,\n modLarge,\n modSmall,\n modBlock,\n modNoClass,\n modDisabled,\n}: Classes) => {\n return [\n !modNoClass ? 'vl-link' : '',\n modBlock ? 'vl-link--block' : '',\n modBold ? 'vl-link--bold' : '',\n modSmall ? 'vl-link--small' : '',\n modLarge ? 'vl-link--large' : '',\n modDisabled ? 'vl-link--disabled' : '',\n ].join(' ');\n};\n\ntype IconClasses = {\n modIconBefore?: boolean;\n modIconAfter?: boolean;\n modIconLight?: boolean;\n};\n\nconst getIconClasses = ({\n modIconAfter,\n modIconBefore,\n modIconLight,\n}: IconClasses) => {\n return [\n 'vl-link__icon',\n modIconBefore ? 'vl-link__icon--before' : '',\n modIconAfter ? 'vl-link__icon--after' : '',\n modIconLight ? 'vl-link__icon--light' : '',\n ].join(' ');\n};\n\ntype Tag = {\n to?: string;\n defaultTagName: typeof ReachLink;\n tagName?: string | typeof ReachLink;\n};\nconst getTag = ({ tagName, defaultTagName, to }: Tag) => {\n if (tagName !== defaultTagName) {\n return tagName;\n }\n if (to && to.match(/^(http(s)?):\\/\\/|ftp:|mailto:|tel:/)) {\n return 'a';\n }\n\n return defaultTagName;\n};\n\ntype Url = {\n to?: string;\n href?: string;\n};\nconst getUrl = ({ to, href }: Url) => {\n if (to && to.match(/^(http(s)?):\\/\\/|ftp:|mailto:|tel:/)) {\n return {\n urlHref: href || to,\n urlTo: null,\n };\n }\n\n return {\n urlHref: href,\n // set '' to avoid that reach-router crash because 'to' props is required and the defaultTagName is reach router\n urlTo: to || '',\n };\n};\n\nexport const SwLink = ({\n tagName,\n icon,\n className,\n modBlock,\n modDisabled,\n modIconAfter,\n modIconBefore,\n modLarge,\n modBold,\n modIconLight,\n modIconOnly,\n modIconRotatedFull,\n modIconRotatedHalf,\n modNoClass,\n modSmall,\n exact,\n hiddenText,\n href,\n to,\n children,\n ...rest\n}: LinkProps) => {\n const defaultTagName = ReachLink; // TODO react router or reach router\n\n const TagName = getTag({\n tagName: tagName || defaultTagName,\n defaultTagName,\n to,\n }) as any;\n\n const visuallyHiddenRef = useVisuallyHidden();\n\n const { urlHref, urlTo } = getUrl({ href, to });\n\n const classes = getClasses({\n modNoClass,\n modBlock,\n modSmall,\n modLarge,\n modBold,\n modDisabled,\n });\n\n const iconClasses = getIconClasses({\n modIconLight,\n modIconBefore,\n modIconAfter,\n });\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(className, classes),\n to: urlTo,\n href: urlHref,\n exact,\n disabled: modDisabled,\n ...rest,\n },\n modIconBefore || modIconOnly ? (\n \n ) : null,\n children,\n modIconOnly ? {hiddenText} : null,\n modIconAfter ? (\n \n ) : null,\n );\n};\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { SwButton } from '../button/SwButton';\nimport { SwLink } from '../link/SwLink';\nimport { mergeClassNames } from '../utilities';\n\ntype TitleProps = AllHTMLAttributes & {\n tagName?: string;\n tagStyle?: string;\n sublink?: string;\n sublinkText?: string;\n sublinkIcon?: string;\n cta?: string;\n ctaText?: string;\n modBorder?: boolean;\n modAlt?: boolean;\n modSans?: boolean;\n};\n\ntype Classes = {\n semanticTagStyle?: string;\n modBorder?: boolean;\n modAlt?: boolean;\n modSans?: boolean;\n};\nconst getClasses = ({\n semanticTagStyle,\n modAlt,\n modBorder,\n modSans,\n}: Classes) => {\n return [\n 'vl-title',\n `vl-title--${semanticTagStyle}`,\n modBorder ? 'vl-title--has-border' : '',\n modAlt ? 'vl-title--alt' : '',\n modSans ? 'vl-title--sans' : '',\n ].join(' ');\n};\n\ntype WrapperClasses = {\n semanticTagStyle?: string;\n sublink?: string;\n cta?: string;\n};\nconst getWrapperClasses = ({\n semanticTagStyle,\n sublink,\n cta,\n}: WrapperClasses) => {\n return [\n 'vl-title-wrapper',\n `vl-title-wrapper--${semanticTagStyle}`,\n sublink ? 'vl-title-wrapper--sublink' : '',\n cta ? 'vl-title-wrapper--cta' : '',\n ].join(' ');\n};\n\nexport const SwTitle = React.forwardRef(\n (\n {\n tagName,\n modAlt,\n modBorder,\n modSans,\n sublink,\n sublinkIcon,\n sublinkText,\n cta,\n ctaText,\n tagStyle,\n className,\n children,\n ...rest\n }: TitleProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'h1';\n\n const semanticTagStyle = tagStyle || tagName;\n const isWrapped = !!sublink || !!cta;\n const linkText = cta ? ctaText : sublinkText;\n const linkUrl = cta || sublink;\n const LinkType: any = cta ? SwButton : SwLink;\n\n const classes = getClasses({\n semanticTagStyle,\n modSans,\n modBorder,\n modAlt,\n });\n\n const wrapperClasses = getWrapperClasses({\n semanticTagStyle,\n sublink,\n cta,\n });\n\n const sublinkIconWithDefault = sublinkIcon || '';\n\n if (isWrapped) {\n return (\n
\n {createElement(\n TagName,\n { className: mergeClassNames(classes), ref },\n children,\n )}\n {createElement(\n LinkType,\n {\n href: linkUrl,\n icon: sublinkIconWithDefault,\n modIconBefore: true,\n },\n linkText,\n )}\n
\n );\n }\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest, ref },\n children,\n );\n },\n);\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport React, { AllHTMLAttributes } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SwButton } from '../button/SwButton';\nimport { SwIntroduction } from '../introduction/SwIntroduction';\nimport { SwTitle } from '../title/SwTitle';\n\ntype FetchErrorMessageProps = AllHTMLAttributes & {\n title?: string;\n subtitle?: string;\n cta?: string;\n redirectTo?: string;\n onClick?: () => void;\n};\n\nexport const SwFetchErrorMessage = ({\n title = i18nKeys.errors.serviceUnavailableScreen.title,\n subtitle = i18nKeys.errors.serviceUnavailableScreen.subTitle,\n cta = i18nKeys.errors.serviceUnavailableScreen.cta,\n redirectTo,\n onClick,\n}: FetchErrorMessageProps) => {\n const { t } = useTranslation();\n\n if (redirectTo && onClick) {\n throw new Error(\n 'Props redirectTo and onClick can not be provided in same time',\n );\n }\n\n return (\n <>\n \n {t(title)}\n \n \n {t(subtitle)}\n \n {redirectTo && {t(cta)}}\n {onClick && {t(cta)}}\n \n );\n};\n","import React, { AllHTMLAttributes, createElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { mergeClassNames } from '../utilities';\n\ntype LoaderProps = AllHTMLAttributes & {\n tagName?: string;\n message?: string;\n modDark?: boolean;\n modMessageHidden?: boolean;\n};\n\ntype Classes = {\n modDark?: boolean;\n};\nconst getClasses = ({ modDark }: Classes) => {\n return ['vl-loader', modDark ? 'vl-loader--light' : ''].join(' ');\n};\n\nexport const SwLoader = ({\n tagName,\n className,\n modDark,\n modMessageHidden,\n message = 'general.pageLoading',\n children,\n ...rest\n}: LoaderProps) => {\n const { t } = useTranslation();\n const TagName = tagName || 'div';\n const messageHidden = modMessageHidden || false;\n\n const classes = getClasses({\n modDark,\n });\n\n return createElement(\n TagName,\n { role: 'alert', 'aria-busy': 'true', ...rest, className },\n
,\n message && messageHidden ? (\n

{t(message)}

\n ) : null,\n message && !messageHidden ?

{t(message)}

: null,\n children,\n );\n};\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\nexport type GridProps = AllHTMLAttributes & {\n tagName?: string;\n modStacked?: boolean;\n modStart?: boolean;\n modCenter?: boolean;\n modEnd?: boolean;\n modSpaceBetween?: boolean;\n modSpaceAround?: boolean;\n modNoGutter?: boolean;\n modVStretched?: boolean;\n modVTop?: boolean;\n modVCenter?: boolean;\n modVBottom?: boolean;\n modWide?: boolean;\n};\n\nexport type Classes = {\n modStacked?: boolean;\n modStart?: boolean;\n modCenter?: boolean;\n modEnd?: boolean;\n modSpaceBetween?: boolean;\n modSpaceAround?: boolean;\n modNoGutter?: boolean;\n modVStretched?: boolean;\n modVTop?: boolean;\n modVCenter?: boolean;\n modVBottom?: boolean;\n modWide?: boolean;\n};\n\nexport const getClasses = ({\n modWide,\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n}: Classes) => {\n return [\n 'vl-grid',\n modStacked ? 'vl-grid--is-stacked' : '',\n modNoGutter ? 'vl-grid--no-gutter' : '',\n modStart ? 'vl-grid--align-start' : '',\n modCenter ? 'vl-grid--align-center' : '',\n modEnd ? 'vl-grid--align-end' : '',\n modSpaceBetween ? 'vl-grid--align-space-between' : '',\n modSpaceAround ? 'vl-grid--align-space-around' : '',\n modVStretched ? 'vl-grid--v-stretched' : '',\n modVCenter ? 'vl-grid--v-center' : '',\n modVTop ? 'vl-grid--v-top' : '',\n modVBottom ? 'vl-grid--v-bottom' : '',\n modWide ? 'vl-grid--wide' : '',\n ].join(' ');\n};\n\nexport const SwGrid = ({\n tagName,\n className,\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n modWide,\n children,\n ...rest\n}: GridProps) => {\n const TagName = tagName || 'div';\n const classes = getClasses({\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n modWide,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\nexport type LayoutProps = AllHTMLAttributes & {\n tagName?: string;\n};\n\nexport const SwLayout = ({\n children,\n tagName,\n className,\n ...rest\n}: LayoutProps) => {\n const TagName = tagName || 'div';\n\n return createElement(\n TagName,\n { className: mergeClassNames('vl-layout', className), ...rest },\n children,\n );\n};\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\nexport type RegionProps = AllHTMLAttributes & {\n tagName?: string;\n modAlt?: boolean;\n modSmall?: boolean;\n modMedium?: boolean;\n modNoSpace?: boolean;\n modNoSpaceTop?: boolean;\n modNoSpaceBottom?: boolean;\n modNoSpaceBordered?: boolean;\n modOverlap?: boolean;\n};\n\nexport type Classes = {\n modAlt?: boolean;\n modSmall?: boolean;\n modMedium?: boolean;\n modNoSpace?: boolean;\n modNoSpaceTop?: boolean;\n modNoSpaceBottom?: boolean;\n modNoSpaceBordered?: boolean;\n modOverlap?: boolean;\n};\n\nexport const getClasses = ({\n modAlt,\n modSmall,\n modMedium,\n modNoSpace,\n modNoSpaceBordered,\n modNoSpaceBottom,\n modNoSpaceTop,\n modOverlap,\n}: Classes) => {\n return [\n 'vl-region',\n modOverlap ? 'vl-region--overlap' : '',\n modAlt ? 'vl-region--alt' : '',\n modSmall ? 'vl-region--small' : '',\n modMedium ? 'vl-region--medium' : '',\n modNoSpace ? 'vl-region--no-space' : '',\n modNoSpaceTop ? 'vl-region--no-space-top' : '',\n modNoSpaceBottom ? 'vl-region--no-space-bottom' : '',\n modNoSpaceBordered ? 'vl-region--bordered' : '',\n ].join(' ');\n};\n\nexport const SwRegion = React.forwardRef(\n (\n {\n tagName,\n className,\n modAlt,\n modMedium,\n modNoSpace,\n modNoSpaceBordered,\n modNoSpaceBottom,\n modNoSpaceTop,\n modOverlap,\n modSmall,\n children,\n ...rest\n }: RegionProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'section';\n const classes = getClasses({\n modOverlap,\n modNoSpaceTop,\n modNoSpaceBottom,\n modNoSpaceBordered,\n modNoSpace,\n modMedium,\n modSmall,\n modAlt,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ref, ...rest },\n children,\n );\n },\n);\n","import React, { AllHTMLAttributes } from 'react';\nimport { SwFetchErrorMessage } from '../fetch-error-message/SwFetchErrorMessage';\nimport { SwLoader } from '../loader/SwLoader';\nimport { SwColumn } from './SwColumn';\nimport { SwGrid } from './SwGrid';\nimport { SwLayout } from './SwLayout';\nimport { SwRegion } from './SwRegion';\n\ntype ContainerProps = AllHTMLAttributes & {\n error?: boolean | undefined;\n loading?: boolean | undefined;\n children?: React.ReactNode | undefined;\n};\n\nexport const SwContainer = ({\n error,\n loading,\n children,\n}: ContainerProps) => {\n if (error) {\n const errorChildren = children || (\n {\n window.location.reload();\n }}\n />\n );\n\n return (\n \n \n \n \n \n \n {errorChildren}\n \n \n \n \n \n \n );\n }\n\n if (loading) {\n const loadingChildren = children || ;\n\n return (\n \n \n \n {loadingChildren}\n \n \n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n","import { createElement, useState } from 'react';\nimport { mergeClassNames } from '../utilities';\nimport { ColumnProps, getClasses } from './SwColumn';\n\nexport const SwFormColumn = ({\n tagName,\n className,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n cols,\n pushers,\n children,\n ...rest\n}: ColumnProps) => {\n const TagName = tagName || 'div';\n const [formGridPrefix] = useState('form-');\n const classes = getClasses({\n formGridPrefix,\n width,\n widthL,\n widthM,\n widthS,\n widthXs,\n push,\n pushL,\n pushM,\n pushS,\n pushXs,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import { createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\nimport { Classes, GridProps } from './SwGrid';\n\nexport const getClasses = ({\n modWide,\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n}: Classes) => {\n return [\n 'vl-form-grid',\n modStacked ? 'vl-form-grid--is-stacked' : '',\n modNoGutter ? 'vl-form-grid--no-gutter' : '',\n modStart ? 'vl-form-grid--align-start' : '',\n modCenter ? 'vl-form-grid--align-center' : '',\n modEnd ? 'vl-form-grid--align-end' : '',\n modSpaceBetween ? 'vl-form-grid--align-space-between' : '',\n modSpaceAround ? 'vl-form-grid--align-space-around' : '',\n modVStretched ? 'vl-form-grid--v-stretched' : '',\n modVCenter ? 'vl-form-grid--v-center' : '',\n modVTop ? 'vl-form-grid--v-top' : '',\n modVBottom ? 'vl-form-grid--v-bottom' : '',\n modWide ? 'vl-form-grid--wide' : '',\n ].join(' ');\n};\n\nexport const SwFormGrid = ({\n tagName,\n className,\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n modWide,\n children,\n ...rest\n}: GridProps) => {\n const TagName = tagName || 'div';\n const classes = getClasses({\n modCenter,\n modEnd,\n modNoGutter,\n modSpaceAround,\n modSpaceBetween,\n modStacked,\n modStart,\n modVBottom,\n modVCenter,\n modVStretched,\n modVTop,\n modWide,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype SwMainProps = AllHTMLAttributes;\n\nexport const SwMain = ({\n children,\n className,\n}: SwMainProps) => {\n return createElement(\n 'main',\n {\n id: 'main',\n className: mergeClassNames('vl-main-content', className),\n itemProp: 'mainContentOfPage',\n role: 'main',\n tabIndex: '0',\n },\n children,\n );\n};\n","import React, { AllHTMLAttributes } from 'react';\n\ntype SwPageProps = AllHTMLAttributes;\n\nexport const SwPage = ({ children }: SwPageProps) => {\n return
{children}
;\n};\n","import React from 'react';\n\n/**\n * In case of we need to style it or adapt it later\n * in this way, we can impact all star in one time\n */\nexport const RequiredStar = () => {\n return *;\n};\n","import React, { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\nimport { RequiredStar } from './SwFormRequiredStar';\n\ntype FormMessageLabelProps = AllHTMLAttributes & {\n tagName?: string;\n modBlock?: boolean;\n modLight?: boolean;\n modRequired?: boolean;\n};\n\ntype Classes = {\n modBlock?: boolean;\n modLight?: boolean;\n};\n\nconst getClasses = ({ modBlock, modLight }: Classes) => {\n return [\n 'vl-form__label',\n modBlock ? 'vl-form__label--block' : '',\n modLight ? 'vl-form__label--light' : '',\n ].join(' ');\n};\n\nexport const SwFormMessageLabel = ({\n tagName,\n modBlock,\n modLight,\n modRequired = false,\n className,\n children,\n ...rest\n}: FormMessageLabelProps) => {\n const TagName = tagName || 'label';\n const classes = getClasses({\n modLight,\n modBlock,\n });\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n ...rest,\n },\n <>\n {children}\n {modRequired && }\n ,\n );\n};\n","import { dynamicDataTest } from '@kaa/common/utils/dataTest';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport React, { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { dataTest } from '../../datatest/keys';\nimport { SwFormColumn, SwFormGrid } from '../core';\nimport { SwFormMessageLabel } from '../form-message/SwFormMessageLabel';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { SwLink } from '../link/SwLink';\n\ntype SwActionLabelProps = {\n label: string | ReactNode;\n id?: string;\n linkText?: string;\n value?: string;\n onClick?: () => void;\n};\n\nexport const SwActionLabel = ({\n id,\n label,\n value,\n onClick,\n linkText,\n}: SwActionLabelProps) => {\n const { t } = useTranslation();\n return (\n \n \n \n {label}\n \n \n {value}\n {id && onClick && (\n \n {linkText || t(i18nKeys.general.cta.edit)}\n \n )}\n \n \n \n );\n};\n","import { Icon } from '../icon/SwIcon.constants';\n\nexport enum AlertType {\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFORMATION = 'INFORMATION',\n}\n\nexport const getAlertPropsByType = (type?: AlertType) => {\n switch (type) {\n case AlertType.SUCCESS:\n return {\n icon: Icon.CHECK_CIRCLE,\n modSuccess: true,\n };\n case AlertType.WARNING:\n return {\n icon: Icon.ALERT_CIRCLE,\n modWarning: true,\n };\n case AlertType.ERROR:\n return {\n icon: Icon.ALERT_CIRCLE,\n modError: true,\n };\n case AlertType.INFORMATION:\n return {\n icon: Icon.INFO_CIRCLE,\n };\n default:\n return {\n icon: Icon.CHECK_CIRCLE,\n };\n }\n};\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport React, {\n AllHTMLAttributes,\n createElement,\n ReactNode,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { dataTest } from '../../datatest/keys';\nimport { SwIcon } from '../icon/SwIcon';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { mergeClassNames } from '../utilities';\nimport './SwAlert.style.scss';\n\nexport type SwAlertProps = AllHTMLAttributes & {\n actions?: ReactNode;\n tagName?: string;\n titleTagName?: string;\n icon?: string;\n title?: string;\n image?: string;\n closeText?: string;\n content?: string;\n closable?: boolean;\n modSmall?: boolean;\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modCta?: boolean;\n modLarge?: boolean;\n modNaked?: boolean;\n modFadeOut?: boolean;\n close?: () => void;\n};\n\ntype Classes = {\n modSmall?: boolean;\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modCta?: boolean;\n modLarge?: boolean;\n modNaked?: boolean;\n modFadeOut?: boolean;\n};\nconst getClasses = ({\n modSmall,\n modSuccess,\n modWarning,\n modError,\n modCta,\n modLarge,\n modNaked,\n modFadeOut,\n}: Classes) => {\n return [\n 'vl-alert',\n modSmall ? 'vl-alert--small' : '',\n modSuccess ? 'vl-alert--success' : '',\n modWarning ? 'vl-alert--warning' : '',\n modError ? 'vl-alert--error' : '',\n modCta ? 'vl-alert--cta' : '',\n modFadeOut ? 'vl-alert--fade-out' : '',\n modLarge ? 'vl-alert--large' : '',\n modNaked ? 'vl-alert--naked' : '',\n ].join(' ');\n};\n\ntype TitleContentClasses = {\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modNaked?: boolean;\n};\nconst getTitleContentClasses = ({\n modSuccess,\n modWarning,\n modError,\n modNaked,\n}: TitleContentClasses) => {\n return [\n 'vl-alert__title',\n modSuccess && modNaked ? 'vl-u-mark--success' : '',\n modWarning && modNaked ? 'vl-u-mark--warning' : '',\n modError && modNaked ? 'vl-u-mark--error' : '',\n ].join(' ');\n};\n\nconst getMessageClasses = () => {\n return ['vl-alert__message', 'vl-typography'].join(' ');\n};\n\ntype NakedClasses = {\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modNaked?: boolean;\n};\nconst getNakedClasses = ({\n modSuccess,\n modWarning,\n modError,\n modNaked,\n}: NakedClasses) => {\n return [\n modSuccess && modNaked ? 'vl-u-mark--success' : '',\n modWarning && modNaked ? 'vl-u-mark--warning' : '',\n modError && modNaked ? 'vl-u-mark--error' : '',\n ].join(' ');\n};\n\nexport const SwAlert = ({\n tagName,\n titleTagName,\n className,\n icon,\n image,\n closeText,\n closable,\n close,\n modNaked,\n modCta,\n modError,\n modLarge,\n modSmall,\n modSuccess,\n modWarning,\n title,\n children,\n content,\n actions,\n ...rest\n}: SwAlertProps) => {\n const { t } = useTranslation();\n const [visible] = useState(true);\n const [modFadeOut] = useState(false);\n\n const TagName = tagName || 'div';\n const TitleTagName = titleTagName || 'h2';\n const defaultCloseFn = () => undefined;\n\n const classes = getClasses({\n modFadeOut,\n modCta,\n modError,\n modLarge,\n modNaked,\n modSmall,\n modSuccess,\n modWarning,\n });\n\n const titleContentClasses = getTitleContentClasses({\n modError,\n modNaked,\n modSuccess,\n modWarning,\n });\n const messageClasses = getMessageClasses();\n const nakedClasses = getNakedClasses({\n modError,\n modNaked,\n modSuccess,\n modWarning,\n });\n\n if (!visible) {\n return null;\n }\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), role: 'alert', ...rest },\n icon ? (\n
\n \n
\n ) : null,\n image ? (\n
\n \"\"\n
\n ) : null,\n closable ? (\n \n \n \n {closeText || t(i18nKeys.general.close)}\n \n \n ) : null,\n
\n {title && !modNaked\n ? createElement(TitleTagName, { className: 'vl-alert__title' }, title)\n : null}\n {title && modNaked ? (\n
\n {createElement(\n TitleTagName,\n { className: titleContentClasses },\n title,\n )}\n
\n ) : null}\n
\n {content ?

{content}

: null}\n\n {children}\n
\n {actions ?
{actions}
: null}\n
,\n );\n};\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { SwIcon } from '../icon/SwIcon';\nimport { useVisuallyHidden } from '../util/hooks/useVisuallyHidden';\nimport { mergeClassNames } from '../utilities';\n\ntype BadgeProps = AllHTMLAttributes & {\n tagName?: string;\n icon?: string;\n initials?: string;\n hiddenLabel?: string;\n modXxsmall?: boolean;\n modXsmall?: boolean;\n modSmall?: boolean;\n modMedium?: boolean;\n modLarge?: boolean;\n modXlarge?: boolean;\n modAlt?: boolean;\n modWhite?: boolean;\n modAccent?: boolean;\n modAction?: boolean;\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modBorder?: boolean;\n modBlock?: boolean;\n};\n\ntype Classes = {\n icon?: string;\n initials?: string;\n modXxsmall?: boolean;\n modXsmall?: boolean;\n modSmall?: boolean;\n modMedium?: boolean;\n modLarge?: boolean;\n modXlarge?: boolean;\n modAlt?: boolean;\n modWhite?: boolean;\n modAccent?: boolean;\n modAction?: boolean;\n modSuccess?: boolean;\n modWarning?: boolean;\n modError?: boolean;\n modBorder?: boolean;\n modBlock?: boolean;\n};\nconst getClasses = ({\n icon,\n initials,\n modSmall,\n modSuccess,\n modWarning,\n modError,\n modLarge,\n modAccent,\n modAction,\n modAlt,\n modBlock,\n modBorder,\n modMedium,\n modWhite,\n modXlarge,\n modXsmall,\n modXxsmall,\n}: Classes) => {\n return [\n 'vl-badge',\n modXxsmall ? 'vl-badge--xxsmall' : '',\n modXsmall ? 'vl-badge--xsmall' : '',\n modSmall ? 'vl-badge--small' : '',\n modMedium ? 'vl-badge--medium' : '',\n modLarge ? 'vl-badge--large' : '',\n modXlarge ? 'vl-badge--xlarge' : '',\n modAlt ? 'vl-badge--alt' : '',\n modWhite ? 'vl-badge--white' : '',\n modAccent ? 'vl-badge--accent' : '',\n modAction ? 'vl-badge--action' : '',\n modSuccess ? 'vl-badge--success' : '',\n modWarning ? 'vl-badge--warning' : '',\n modError ? 'vl-badge--error' : '',\n modBorder ? 'vl-badge--border' : '',\n modBlock ? 'vl-badge--block' : '',\n icon ? 'vl-badge--icon' : '',\n initials ? 'vl-badge--initials' : '',\n ]\n .join(' ')\n .trim();\n};\n\nexport const SwBadge = React.forwardRef(\n (\n {\n tagName,\n className,\n icon,\n initials,\n hiddenLabel,\n modAccent,\n modAction,\n modAlt,\n modBlock,\n modBorder,\n modError,\n modLarge,\n modMedium,\n modSmall,\n modSuccess,\n modWarning,\n modWhite,\n modXlarge,\n modXsmall,\n modXxsmall,\n children,\n ...rest\n }: BadgeProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'div';\n const visuallyHiddenRef = useVisuallyHidden();\n\n const classes = getClasses({\n initials,\n icon,\n modXxsmall,\n modXsmall,\n modXlarge,\n modWhite,\n modMedium,\n modBorder,\n modBlock,\n modAlt,\n modAction,\n modAccent,\n modLarge,\n modSmall,\n modWarning,\n modSuccess,\n modError,\n });\n\n const iconClasses = 'vl-badge__icon';\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ref, ...rest },\n initials ? {initials} : null,\n icon ? : null,\n hiddenLabel ? {hiddenLabel} : null,\n children,\n );\n },\n);\n","import React, { AllHTMLAttributes, createElement, ReactNode, Ref } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport { mergeClassNames } from '../utilities';\n\ntype BreadcrumbProps = AllHTMLAttributes & {\n tagName?: string;\n label?: string;\n\n modSeparators?: boolean;\n modBar?: boolean;\n\n search?: ReactNode;\n actions?: ReactNode;\n};\n\nconst getClasses = () => {\n return 'vl-breadcrumb';\n};\n\nexport const SwBreadcrumb = React.forwardRef(\n (\n {\n tagName,\n label,\n modSeparators,\n modBar,\n className,\n children,\n search,\n actions,\n ...rest\n }: BreadcrumbProps,\n ref: Ref,\n ) => {\n const { t } = useTranslation();\n\n const TagName = tagName || 'nav';\n const classes = getClasses();\n const labelText = label || t(i18nKeys.general.breadcrumbLabel);\n\n const barClasses = modBar ? 'vl-breadcrumb-bar' : '';\n\n let childrenWithSeparator = children;\n if (modSeparators) {\n childrenWithSeparator = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n useSeparator: modSeparators,\n });\n });\n }\n\n return (\n
\n {createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n 'aria-label': labelText,\n ref,\n ...rest,\n },\n
    {childrenWithSeparator}
,\n )}\n {search ? (\n
{search}
\n ) : null}\n {actions ? (\n
{actions}
\n ) : null}\n
\n );\n },\n);\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport { TFunction } from 'i18next';\nimport ibanValidator from 'iban';\nimport get from 'lodash.get';\nimport { ReactNode } from 'react';\n\nexport type ValidatorFunction = (...params: any) => ValidationError | boolean;\n\nexport const createValidator = (\n rules: { [key in keyof T]: ValidatorFunction[] },\n validationError?: Partial,\n) => {\n return (data = {}): { [key in keyof T]: ValidationError | false } => {\n const errors = Object.keys(rules).reduce((acc: any, key: string) => {\n // concat enables both functions and arrays of functions\n const rule = join(\n ([] as ValidatorFunction[]).concat(rules[key as keyof T]),\n );\n const error = rule(get(data, key.split('.')), data) as ValidationError;\n\n return error\n ? { ...acc, [key as keyof T]: { ...error, ...validationError } }\n : acc;\n }, {} as any);\n\n return errors;\n };\n};\n\nexport function join(rules: ValidatorFunction[]): ValidatorFunction {\n return (value: unknown, data: unknown) =>\n rules\n .map((rule) => rule(value, data))\n .filter((error) => !!error)[0]; /* first error */\n}\n\nexport const overrideValidationError = (\n validationFunction: ValidatorFunction,\n validationError?: Partial,\n): ValidatorFunction => {\n return (value: any) => {\n const error = validationFunction(value);\n\n if (!error || !validationError) {\n return error;\n }\n\n return { ...(error as ValidationError), ...validationError };\n };\n};\n\nexport function onlyIf(\n fieldNameOrCond: ((value: any, values: any) => boolean) | string,\n validators: ValidatorFunction[] | ValidatorFunction,\n): ValidatorFunction {\n return (value: any, values: any) => {\n if (\n typeof fieldNameOrCond === 'string'\n ? get(values, fieldNameOrCond)\n : fieldNameOrCond(value, values)\n ) {\n const joined = join(([] as ValidatorFunction[]).concat(validators));\n return joined(value, values);\n }\n return false;\n };\n}\nexport function notIf(\n fieldNameOrCond: ((value: any, values: any) => boolean) | string,\n validators: ValidatorFunction[] | ValidatorFunction,\n): ValidatorFunction {\n return (value: any, values: any) => {\n if (\n typeof fieldNameOrCond === 'string'\n ? !get(values, fieldNameOrCond)\n : fieldNameOrCond(value, values)\n ) {\n const joined = join(([] as ValidatorFunction[]).concat(validators));\n return joined(value, values);\n }\n return false;\n };\n}\n\nconst isEmpty = (value: unknown) =>\n (Array.isArray(value) && !value.length) ||\n value === undefined ||\n value === null ||\n value === '';\n\nexport const isIban: ValidatorFunction = (value: string) => {\n if (value && !ibanValidator.isValid(value)) {\n return {\n defaultMessage: 'Invalid iban format',\n id: i18nKeys.errors.form.ibanFormat,\n };\n }\n\n return false;\n};\n\nexport const isValidForeignIban = (iban = '') => {\n return ibanValidator.isValid(iban) && !iban.startsWith('BE');\n};\n\nexport const isBic: ValidatorFunction = (value: string) => {\n if (value && value.length !== 8 && value.length !== 11) {\n return {\n defaultMessage: 'Invalid BIC format',\n id: i18nKeys.errors.form.bicFormat,\n };\n }\n\n return false;\n};\n\nexport type ValidationError = {\n id:\n | string\n | ((t: TFunction, values: { [key: string]: unknown }) => ReactNode);\n defaultMessage: string;\n values?:\n | { [key: string]: unknown }\n | ((t: TFunction) => { [key: string]: unknown });\n displayFocussed?: boolean;\n};\n/**\n * All validation error should be in the 'error' namespace, so\n * we should prefix it in the 'id'\n */\n\nexport const pattern = (\n pattern: RegExp,\n message?: ValidationError,\n): ValidatorFunction => (value: string) => {\n if (!isEmpty(value) && !pattern.test(value)) {\n return (\n message || {\n defaultMessage: 'Invalid pattern',\n id: i18nKeys.errors.form.pattern,\n }\n );\n }\n return false;\n};\n\nconst mobilePhoneRegex = /^((\\+|00)32\\s?|0)4(55|56|[6789]\\d)(\\s?\\d{2}){3}$/;\n\nexport const mobilePhone = pattern(mobilePhoneRegex, {\n id: i18nKeys.errors.server.form.INVALID_FORMAT,\n defaultMessage: 'Invalid format',\n});\n\nconst phoneRegex = /^((\\+|00)32\\s?|0)(\\d\\s?\\d{3}|\\d{2}\\s?\\d{2})(\\s?\\d{2}){2}$/;\n\nexport const phone = pattern(phoneRegex, {\n id: i18nKeys.errors.server.form.INVALID_FORMAT,\n defaultMessage: 'Invalid format',\n});\n\n// eslint-disable-next-line no-useless-escape\nconst emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const email = pattern(emailRegex, {\n defaultMessage: 'Invalid email address',\n id: i18nKeys.errors.form.email,\n});\n\n// eslint-disable-next-line no-useless-escape\nconst websiteRegex = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/;\nexport const website = pattern(websiteRegex, {\n defaultMessage: 'Invalid website',\n id: i18nKeys.errors.form.website,\n});\n\n// eslint-disable-next-line no-useless-escape\nconst passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#\\$%\\^&\\0-9*])(?=.{8,})/;\nexport const password = pattern(passwordRegex, {\n defaultMessage: 'Invalid password',\n id: i18nKeys.errors.form.password,\n});\n\nexport const required: ValidatorFunction = (\n value: unknown,\n): ValidationError | false => {\n if (isEmpty(value)) {\n return {\n defaultMessage: 'Required',\n id: i18nKeys.errors.form.required,\n };\n }\n return false;\n};\n\nexport const checked: ValidatorFunction = (\n value: unknown,\n): ValidationError | false => {\n if (!value) {\n return {\n defaultMessage: 'Checked',\n id: i18nKeys.errors.form.checked,\n };\n }\n return false;\n};\n\nexport function min(\n minValue: number,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: unknown) => {\n if (typeof value === 'number' && value < minValue) {\n return (\n message || {\n defaultMessage: `Value should be at least ${minValue}`,\n id: i18nKeys.errors.form.minValue,\n values: {\n value: minValue,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function max(\n maxValue: number,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: unknown) => {\n if (typeof value === 'number' && value > maxValue) {\n return (\n message || {\n defaultMessage: `Value should be at most ${maxValue}`,\n id: i18nKeys.errors.form.maxValue,\n values: {\n value: maxValue,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function minLength(\n minimum: number,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string) => {\n if (!isEmpty(value) && value.toString().length < minimum) {\n return (\n message || {\n defaultMessage: 'Must be at least {minimum} characters',\n id: i18nKeys.errors.form.minLength,\n values: {\n count: minimum,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function maxLength(\n maximum: number,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string) => {\n if (!isEmpty(value) && value.toString().length > maximum) {\n return (\n message || {\n defaultMessage: 'Must be at most {maximum} characters',\n id: i18nKeys.errors.form.maxLength,\n values: {\n count: maximum,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function minLengthWithTrim(\n minimum: number,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string) => {\n if (!isEmpty(value) && value.trim().length < minimum) {\n return (\n message || {\n defaultMessage: 'Must be at least {minimum} characters',\n id: i18nKeys.errors.form.minLength,\n values: {\n count: minimum,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function equalTo(\n toBeEqual: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string) => {\n if (!isEmpty(value) && value !== toBeEqual) {\n return (\n message || {\n defaultMessage: `Must be equal to ${toBeEqual}`,\n id: i18nKeys.errors.form.equal,\n displayFocussed: false,\n values: {\n value: toBeEqual,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function equalToField(\n name: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string, values: any) => {\n if (!isEmpty(value) && value !== values[name]) {\n return (\n message || {\n defaultMessage: `Must be equal to ${name}`,\n id: i18nKeys.errors.form.equal,\n displayFocussed: false,\n values: {\n value: name,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function equalToFieldInsensitive(\n name: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string, values: any) => {\n if (\n !isEmpty(value) &&\n value &&\n value.toLowerCase() !== (values[name] || '').toLowerCase()\n ) {\n return (\n message || {\n defaultMessage: `Must be equal to ${name}`,\n id: i18nKeys.errors.form.equal,\n displayFocussed: false,\n values: {\n value: name,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function notEqualTo(\n toBeDifferent: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string) => {\n if (!isEmpty(value) && value === toBeDifferent) {\n return (\n message || {\n defaultMessage: `Must be different to ${toBeDifferent}`,\n id: i18nKeys.errors.form.different,\n values: {\n value: toBeDifferent,\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function notEqualToField(\n name: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string, values: any) => {\n if (!isEmpty(value) && value === values[name]) {\n return (\n message || {\n defaultMessage: `Must be different to ${values[name]}`,\n id: i18nKeys.errors.form.different,\n displayFocussed: false,\n values: {\n value: values[name],\n },\n }\n );\n }\n return false;\n };\n}\n\nexport function notEqualToPassword(\n name: string,\n message?: ValidationError,\n): ValidatorFunction {\n return (value: string, values: any) => {\n if (!isEmpty(value) && value === values[name]) {\n return (\n message || {\n defaultMessage: 'Must be different from the previous password',\n id: i18nKeys.errors.form.differentPassword,\n displayFocussed: false,\n }\n );\n }\n return false;\n };\n}\n\nexport function notPasted(isPasted: boolean, message?: ValidationError) {\n return () => {\n if (isPasted) {\n return (\n message || {\n defaultMessage: 'You are not allowed to paste into this field',\n id: i18nKeys.errors.form.noPaste,\n values: {},\n displayFocussed: true,\n }\n );\n }\n return false;\n };\n}\n\nexport function existsInError(\n fieldName: string,\n message?: Partial,\n): ValidatorFunction {\n return (value: string, values: any) => {\n if (get(values, `errors.${fieldName}`)) {\n return {\n defaultMessage: 'The chosen value is invalid.',\n id: i18nKeys.errors.form.invalid,\n ...message,\n };\n }\n return false;\n };\n}\n\nexport function setError({\n setFieldValue,\n name,\n}: {\n setFieldValue: (field: string, value: any) => void;\n name: string;\n}) {\n setFieldValue(`errors.${name}`, true);\n}\n\n/* When the error is resolved, remove the 'virtual' field from the form */\nexport function unsetError({\n values,\n name,\n setFieldValue,\n}: {\n values: any;\n name: string | string[];\n setFieldValue: (field: string, value: any) => void;\n}) {\n const path = [\n 'errors',\n ...(typeof name === 'string' ? name.split('.') : name),\n ];\n\n if (!get(values, path)) {\n return;\n }\n\n const deepPath = path\n .map((key, index, keys) => keys.slice(0, index + 1).join('.'))\n .reverse();\n\n const firstValidIndex = deepPath.findIndex(\n (path) =>\n get(values, path) instanceof Object &&\n Object.keys(get(values, path)).length > 1,\n );\n\n if (firstValidIndex === -1) {\n setFieldValue('errors', undefined);\n } else {\n setFieldValue(deepPath[firstValidIndex - 1], undefined);\n }\n}\n\nexport const isValidField = ({\n values,\n errors,\n fieldName,\n initialValues,\n}: {\n initialValues: { [key: string]: any };\n values: { [key: string]: any };\n errors: { [key: string]: string | undefined };\n fieldName: string;\n}) =>\n get(initialValues, fieldName) === get(values, fieldName) &&\n !get(errors, fieldName) &&\n get(values, fieldName);\n\nexport const isOtherFieldValid = (\n fieldName: string,\n validatorFunction: ValidatorFunction,\n) => (value: any, values: any) => validatorFunction(get(values, fieldName));\n","import { DateTime } from 'luxon';\nimport { formatStringByPattern } from '../validation';\nimport { AvailableLanguages } from '../enums';\n\nenum Patterns {\n NATIONAL_NUMBER = 'XX.XX.XX-XXX.XX',\n\n PREFIX_PHONE_NUMBER_TWO = 'XXXX',\n PHONE_NUMBER_ONE = 'XXX XX XX XX',\n PHONE_NUMBER_ONE_WITH_COUNTRY_PREFIX_ONE = 'XXX XX XX XX XX',\n PHONE_NUMBER_ONE_WITH_COUNTRY_PREFIX_TWO = 'XXXX XX XX XX XX',\n PHONE_NUMBER_TWO = 'XX XXX XX XX',\n PHONE_NUMBER_TWO_WITH_COUNTRY_PREFIX_ONE = 'XXX X XX XX XX',\n PHONE_NUMBER_TWO_WITH_COUNTRY_PREFIX_TWO = 'XXXX X XX XX XX',\n MOBILE_PHONE = 'XXXX XX XX XX',\n MOBILE_PHONE_WITH_COUNTRY_PREFIX_ONE = 'XXX XXX XX XX XX',\n MOBILE_PHONE_WITH_COUNTRY_PREFIX_TWO = 'XXXX XXX XX XX XX',\n DATE = 'XX/XX/XXXX',\n}\n\nconst PHONE_NUMBER_TWO_PREFIX = ['2', '3', '4', '9'];\n\nexport const Format = {\n nationalNumber: (nationalNumber: string, slice = true) => {\n return formatStringByPattern(\n Patterns.NATIONAL_NUMBER,\n nationalNumber,\n slice,\n );\n },\n phoneNumber: (phoneNumber: string) => {\n if (phoneNumber.length < 5) {\n return phoneNumber; // for special phone numbers return unformated\n }\n if (phoneNumber[0] === '+') {\n if (PHONE_NUMBER_TWO_PREFIX.includes(phoneNumber[4])) {\n return formatStringByPattern(\n Patterns.PHONE_NUMBER_TWO_WITH_COUNTRY_PREFIX_ONE,\n phoneNumber,\n );\n }\n return formatStringByPattern(\n Patterns.PHONE_NUMBER_ONE_WITH_COUNTRY_PREFIX_ONE,\n phoneNumber,\n );\n }\n\n if (phoneNumber.slice(0, 2) === '00') {\n if (PHONE_NUMBER_TWO_PREFIX.includes(phoneNumber[4])) {\n return formatStringByPattern(\n Patterns.PHONE_NUMBER_TWO_WITH_COUNTRY_PREFIX_TWO,\n phoneNumber,\n );\n }\n return formatStringByPattern(\n Patterns.PHONE_NUMBER_ONE_WITH_COUNTRY_PREFIX_TWO,\n phoneNumber,\n );\n }\n\n if (PHONE_NUMBER_TWO_PREFIX.includes(phoneNumber[1])) {\n return formatStringByPattern(Patterns.PHONE_NUMBER_TWO, phoneNumber);\n }\n\n return formatStringByPattern(Patterns.PHONE_NUMBER_ONE, phoneNumber);\n },\n mobilePhoneNumber: (phoneNumber: string) => {\n if (phoneNumber[0] === '+') {\n return formatStringByPattern(\n Patterns.MOBILE_PHONE_WITH_COUNTRY_PREFIX_ONE,\n phoneNumber,\n );\n }\n\n if (phoneNumber.slice(0, 2) === '00') {\n return formatStringByPattern(\n Patterns.MOBILE_PHONE_WITH_COUNTRY_PREFIX_TWO,\n phoneNumber,\n );\n }\n\n return formatStringByPattern(Patterns.MOBILE_PHONE, phoneNumber);\n },\n\n iban: (iban?: string) => {\n if (!iban) return iban;\n return (\n iban\n .split('')\n // Don't refactor! Fixes a bug on the IBAN field for certain devices (i.e. Huawei Y7)\n .map((c) => c.toUpperCase())\n .join('')\n .replace(/[^\\dA-Z]/g, '')\n .replace(/(.{4})/g, '$1 ')\n .trim()\n );\n },\n\n /**\n * Format a date using Patterns.DATE or by swapping the date part of a\n * zulu timed UTC string to match Belgium locale.\n */\n date: (date?: Date | string | undefined) => {\n if (!date) return date;\n\n const dateString = date.toString();\n\n if (!dateString.includes('T') && dateString.includes('/')) {\n return formatStringByPattern(Patterns.DATE, date.toString());\n }\n\n const wholeSplit = dateString.split('T');\n const dateSplit = wholeSplit[0].split('-');\n return `${dateSplit[2]}/${dateSplit[1]}/${dateSplit[0]}`;\n },\n dateMonthYear: (d: string, language: AvailableLanguages) => {\n const dateStr = DateTime.fromISO(d)\n .setZone('Europe/Brussels')\n .setLocale(language)\n .toFormat('MMM yyyy');\n return dateStr;\n },\n dateLong: (d: string, language: AvailableLanguages) => {\n const dateStr = DateTime.fromISO(d)\n .setZone('Europe/Brussels')\n .setLocale(language)\n .toFormat('EEE. d MMM yyyy');\n return dateStr.replace(/^./, dateStr[0].toUpperCase());\n },\n dateForComments: (d: string, language: AvailableLanguages) => {\n return DateTime.fromISO(d)\n .setZone('Europe/Brussels')\n .setLocale(language)\n .toFormat('dd/MM/yyyy HH:mm');\n },\n duration: (duration?: number | string): string => {\n return duration !== undefined ? `${duration}:00` : '';\n },\n};\n","const userAgent = ((navigator && navigator.userAgent) || '').toLowerCase();\n\nexport const isIe = () => /(?:msie |trident.+?; rv:)(\\d+)/.test(userAgent);\n","import get from 'lodash.get';\n\nexport const oneOfObj = (array: any[], object: { [key: string]: any }) =>\n array.some((value) => !!get(object, value));\n","import { RefObject, useEffect, useRef } from 'react';\n\nexport const useRefMounted = (): RefObject => {\n const refMounted = useRef(false);\n\n useEffect(() => {\n refMounted.current = true;\n\n return () => {\n refMounted.current = false;\n };\n }, []);\n\n return refMounted;\n};\n","import { DependencyList, useCallback, useState } from 'react';\nimport { debugLog } from './debugLog';\nimport { useRefMounted } from './useRefMounted';\n\nexport type AsyncState =\n | {\n loading: boolean;\n error?: undefined;\n value?: T;\n }\n | {\n loading: false;\n error: Error;\n value?: undefined;\n }\n | {\n loading: boolean;\n error?: undefined;\n value: T;\n };\n\nexport type AsyncCallback = [\n AsyncState,\n (...args: Args | any[]) => Promise<[Error | undefined, Result | undefined]>,\n];\n\nexport function useAsyncCallback(\n fn: (...args: Args | any) => Promise,\n deps: DependencyList = [],\n initialState: AsyncState = { loading: false },\n): AsyncCallback {\n const [state, setState] = useState>(initialState);\n\n const mounted = useRefMounted();\n\n const callback = useCallback<\n (...args: Args | any) => Promise<[Error | undefined, Result | undefined]>\n >(async (...args: Args | any) => {\n setState(({ value }) => ({ loading: true, ...(value ? { value } : {}) }));\n\n try {\n const value = await fn(...args);\n if (mounted.current) {\n setState({ value, loading: false });\n }\n return [undefined, value];\n } catch (error) {\n debugLog('useAsyncCallback', error);\n if (mounted.current) {\n setState({ error, loading: false });\n }\n return [error, undefined];\n }\n }, deps);\n\n return [state, callback];\n}\n","import { DependencyList, useEffect } from 'react';\nimport { useAsyncCallback } from './useAsyncCallback';\n\nexport function useAsync(\n fn: () => Promise,\n deps: DependencyList = [],\n) {\n const [state, callback] = useAsyncCallback(fn, deps, {\n loading: true,\n });\n\n useEffect(() => {\n callback();\n }, [callback]);\n\n return state;\n}\n","import { useEffect, useRef } from 'react';\n\nexport const useUpdateEffect: typeof useEffect = (effect, deps) => {\n const isInitialMount = useRef(true);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else {\n return effect();\n }\n }, deps);\n};\n","import { useEffect, useRef } from 'react';\n\n// example: https://usehooks.com/useEventListener\n\n// Hook\nexport const useEventListener = (\n eventName: string,\n handler: (event: any) => void,\n element: any = document,\n) => {\n // Create a ref that stores handler\n const savedHandler = useRef();\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Make sure element supports addEventListener\n const isSupported = element && element.addEventListener;\n if (!isSupported) {\n return undefined;\n }\n\n // Create event listener that calls handler function stored in ref\n const eventListener = (event: any) => savedHandler.current(event);\n\n // Add event listener\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => element.removeEventListener(eventName, eventListener);\n }, [eventName, element]); // Re-run if eventName or element changes\n};\n","import { RefObject, useEffect } from 'react';\n\n// example: https://usehooks.com/useOnClickOutside\n\nexport const useOnClickOutside = (\n ref: RefObject,\n handler: (event?: MouseEvent | TouchEvent) => void,\n dependencies: any[] = [],\n) => {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target as Node)) {\n return;\n }\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, handler, ...dependencies]); // ... passing it into this hook. // ... but to optimize you can wrap handler in useCallback before ... // ... callback/cleanup to run every render. It's not a big deal ... // ... function on every render that will cause this effect ... // It's worth noting that because passed in handler is a new ... // Add ref and handler to effect dependencies\n};\n","import { ChangeEvent, MutableRefObject, useLayoutEffect, useRef } from 'react';\nimport { createTextMaskInputElement } from 'text-mask-core';\n\n/*\n input. Required. A reference created by React.createRef or useRef to the input element rendered by React.\n mask. Required. An array or a function that defines how the user input is going to be masked. See more.\n onChange. A function to be called when the input changes.\n guide. A boolean that tells the component whether to be in guide or no guide mode. See more.\n keepCharPositions. A boolean that when true, adding or deleting characters affects won't affect the position of other characters, if false, it pushes them. Defaults to false. See more.\n pipe. A function to modify the conformed value before it is displayed on the screen. See more.\n placeholderChar. A string representing the fillable spot in the mask. Defaults to an underscore (_). See more.\n showMask. A boolean that tells the component to display the mask as a placeholder in place of the regular placeholder when the input element value is empty. Defaults to false. See more.\n value. A string with the value. Defaults to ``.\n*/\n\ntype MaskedInputProps = {\n guide?: boolean;\n input: MutableRefObject;\n keepCharPositions?: boolean;\n mask?: Array | ((value: string) => Array);\n onChange: (event: ChangeEvent) => void;\n pipe?: (value: string) => void;\n placeholderChar?: string;\n showMask?: boolean;\n value?: string;\n};\n\nexport const useMaskedInput = ({\n guide = false,\n input,\n keepCharPositions,\n mask,\n onChange,\n pipe,\n placeholderChar = '\\u2000',\n showMask,\n value = '',\n}: MaskedInputProps) => {\n const textMask = useRef void }>();\n\n function init() {\n if (!input.current) {\n return;\n }\n\n if (!mask) {\n return;\n }\n\n textMask.current = createTextMaskInputElement({\n guide,\n inputElement: input.current,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n }) as T & { update: (value?: string) => void };\n\n textMask.current.update(value);\n }\n\n useLayoutEffect(init, [\n guide,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n ]);\n\n useLayoutEffect(() => {\n if (input.current && value === input.current.value) {\n return;\n }\n\n init();\n }, [value]);\n\n return (event: ChangeEvent) => {\n if (textMask.current) {\n textMask.current.update();\n }\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n };\n};\n","export enum AvailableLanguages {\n DUTCH = 'nl',\n FRENCH = 'fr',\n GERMAN = 'de',\n ENGLISH = 'en',\n}\n","import i18n from 'i18next';\nimport { AvailableLanguages } from '../enums/AvailableLanguages';\n\nconst EURO_SYMBOL = '€';\nconst EURO_LABEL = 'EUR';\n\n/**\n * Return a formatted value / price with the euro symbol or label according to\n * given parameters and current locale language.\n *\n * ie: '10 €', '€10', '10 EUR', 'EUR 10',\n *\n * @param value the value, price, you need to add symbol or label to\n * @param shouldUseSymbol whether you should add the euro symbol \"€\" or not,\n * default to false since the symbol should only be used is graphs\n */\nexport const toCurrencyFormat = (\n value: number,\n shouldUseSymbol = false,\n): string => {\n if (shouldUseSymbol) {\n // return '€10' for dutch and english locales else '10 €'\n return i18n.language === AvailableLanguages.DUTCH ||\n i18n.language === AvailableLanguages.ENGLISH\n ? `${EURO_SYMBOL}${toPriceFormat(value)}`\n : `${toPriceFormat(value)} ${EURO_SYMBOL}`;\n }\n\n // return 'EUR 10' for english locale else '10 EUR'\n return i18n.language === AvailableLanguages.ENGLISH\n ? `${EURO_LABEL} ${toPriceFormat(value)}`\n : `${toPriceFormat(value)} ${EURO_LABEL}`;\n};\n\nexport const toPriceFormat = (value: number): string =>\n value\n .toFixed(2)\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.')\n .replace(/\\.([^.]+)$/, ',$1');\n","import {\n useEventListener,\n useOnScreen,\n useRefMounted,\n} from '@kaa/common/utils';\nimport Popper from 'popper.js';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport Tooltip from 'tooltip.js';\nimport './style.scss';\n\ntype Binding = {\n value?: string;\n modActive?: boolean; // to handle the trigger manually\n placement?: Popper.Placement;\n};\n\nconst keyupHandler = (tooltip: Tooltip) => (event: any) => {\n const evt = event || window.event;\n const isEscape =\n 'key' in evt\n ? evt.key === 'Escape' || evt.key === 'Esc'\n : evt.keyCode === 27;\n\n if (isEscape) {\n tooltip.hide();\n }\n};\n\nexport const useTooltip = <\n T extends HTMLElement & { tooltipInstance?: Tooltip }\n>(\n binding: Binding,\n) => {\n const domRef = useRef(null);\n\n const handler = useCallback(\n (e) => {\n if (domRef.current && domRef.current.tooltipInstance) {\n keyupHandler(domRef.current.tooltipInstance)(e);\n }\n },\n [domRef],\n );\n\n useEventListener('keyup', handler);\n const mount = useRefMounted();\n\n const onScreen = useOnScreen(domRef);\n\n useEffect(() => {\n if (domRef.current && !domRef.current.tooltipInstance) {\n const title = binding.value;\n const offset = '0,5';\n const template = `\n
80 ? 'vl-tooltip--large' : ''\n }\" role=\"tooltip\" aria-hidden=\"true\">\n
\n
\n
`;\n\n const options = {\n placement: binding.placement || 'auto',\n template,\n offset,\n html: true,\n title,\n ...(typeof binding.modActive !== 'undefined' && { trigger: 'manual' }),\n };\n\n domRef.current.tooltipInstance = new Tooltip(domRef.current, options);\n domRef.current.dataset.vlTooltipTitle = title;\n }\n\n return () => {\n if (!mount.current && domRef.current && domRef.current.tooltipInstance) {\n domRef.current.tooltipInstance.dispose();\n }\n };\n }, [domRef, binding, mount]);\n\n const [wasActive, setWasActive] = useState(false);\n\n useEffect(() => {\n const el = domRef.current;\n if (!el || !el.tooltipInstance) {\n return;\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (onScreen && wasActive) {\n el.tooltipInstance.show();\n setWasActive(false);\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (!onScreen && el.tooltipInstance._isOpen) {\n el.tooltipInstance.hide();\n setWasActive(true);\n }\n }, [domRef, onScreen]);\n\n useEffect(() => {\n const el = domRef.current;\n if (!el || !el.tooltipInstance) {\n return;\n }\n\n if (!onScreen) {\n return;\n }\n\n if (el.dataset.vlTooltipTitle !== binding.value) {\n el.tooltipInstance.updateTitleContent(binding.value || '');\n el.dataset.vlTooltipTitle = binding.value;\n }\n\n if (typeof binding.modActive !== 'undefined') {\n if (binding.modActive) {\n el.tooltipInstance.show();\n } else {\n el.tooltipInstance.hide();\n }\n }\n }, [domRef, binding, onScreen]);\n\n return domRef;\n};\n","import { MutableRefObject, useEffect, useState } from 'react';\n\nexport function useOnScreen(\n ref: MutableRefObject,\n rootMargin = '0px',\n) {\n // State and setter for storing whether element is visible\n const [isIntersecting, setIntersecting] = useState(false);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n // Update our state when observer callback fires\n setIntersecting(entry.isIntersecting);\n },\n {\n rootMargin,\n },\n );\n if (ref.current) {\n observer.observe(ref.current);\n }\n return () => {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n };\n }, []); // Empty array ensures that effect is only run on mount and unmount\n\n return isIntersecting;\n}\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { SwIcon } from '../icon/SwIcon';\nimport { useTooltip } from '../tooltip/useTooltip';\nimport { useVisuallyHidden } from '../util/hooks/useVisuallyHidden';\nimport { mergeClassNames } from '../utilities';\n\ntype InputAddonProps = AllHTMLAttributes & {\n tagName?: string;\n tooltip: string;\n text: string;\n icon?: string;\n};\n\nexport const SwInputAddon = React.forwardRef(\n (\n {\n tagName,\n className,\n text,\n icon,\n tooltip,\n children,\n ...rest\n }: InputAddonProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'p';\n const classes = 'vl-input-addon';\n\n const visuallyHiddenRef = useVisuallyHidden();\n const tooltipRef = useTooltip({ value: tooltip, placement: 'left' });\n\n // TODO: Improve typing\n const forwardRef = ref as any; // Disable typing to assign the current\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n ref: (element: HTMLElement) => {\n tooltipRef.current = element;\n if (forwardRef) {\n forwardRef.current = element;\n }\n },\n ...rest,\n },\n icon ? (\n <>\n {text}\n \n ) : (\n <>{text}\n ),\n );\n },\n);\n","import React, { AllHTMLAttributes, ChangeEvent, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype SwInputFieldProps = AllHTMLAttributes & {\n modError?: boolean;\n modDisabled?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n modFocus?: boolean;\n modRequired?: boolean;\n};\n\ntype Classes = {\n modError?: boolean;\n modDisabled?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n};\nconst getClasses = ({\n modBlock,\n modError,\n modDisabled,\n modSmall,\n modInline,\n}: Classes) => {\n return [\n 'vl-input-field',\n modError ? 'vl-input-field--error' : '',\n modDisabled ? 'vl-input-field--disabled' : '',\n modSmall ? 'vl-input-field--small' : '',\n modInline ? 'vl-input-field--inline' : '',\n modBlock ? 'vl-input-field--block' : '',\n ].join(' ');\n};\n\nexport const SwInputField = React.forwardRef(\n (\n {\n className,\n modBlock,\n modDisabled,\n modError,\n modInline,\n modSmall,\n modFocus,\n modRequired = false,\n type = 'text',\n value,\n onChange,\n children,\n ...rest\n }: SwInputFieldProps,\n ref: Ref,\n ) => {\n const classes = getClasses({\n modBlock,\n modDisabled,\n modError,\n modInline,\n modSmall,\n });\n\n const changeHandler = (event: ChangeEvent) => {\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n \n );\n },\n);\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype InputGroupProps = AllHTMLAttributes & {\n tagName?: string;\n};\n\nexport const SwInputGroup = React.forwardRef(\n (\n { className, tagName, children, ...rest }: InputGroupProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'div';\n const classes = 'vl-input-group';\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n ref,\n ...rest,\n },\n children,\n );\n },\n);\n","import { DateTime } from 'luxon';\nimport { useEffect, useRef } from 'react';\nimport German from 'flatpickr/dist/l10n/de.js';\nimport English from 'flatpickr/dist/l10n/default.js';\nimport French from 'flatpickr/dist/l10n/fr.js';\nimport Dutch from 'flatpickr/dist/l10n/nl.js';\n\nexport const LocalizationFlatpickr: { [key: string]: unknown } = {\n en: English,\n fr: French.fr,\n nl: Dutch.nl,\n de: German.de,\n};\n\nexport const omitNil = (value: any) => {\n const obj = {\n ...value,\n };\n Object.keys(obj).forEach((key) => {\n if (obj[key] === null || obj[key] === undefined) {\n delete obj[key];\n }\n });\n\n return obj;\n};\n\nexport const isDiffDate = (\n date: string | Date | undefined,\n secondDate: string | Date | undefined,\n): boolean => {\n if (!date && !secondDate) {\n return false;\n }\n\n if (date && !secondDate) {\n return true;\n }\n\n if (!date && secondDate) {\n return true;\n }\n\n if (typeof date === 'string' && typeof secondDate !== 'string') {\n return true;\n }\n\n if (typeof date !== 'string' && typeof secondDate === 'string') {\n return true;\n }\n\n if (typeof date === 'string' && typeof secondDate === 'string') {\n return date !== secondDate;\n }\n\n const dateTime = DateTime.fromJSDate(date as Date).startOf('day');\n\n const secondDateTime = DateTime.fromJSDate(secondDate as Date).startOf('day');\n\n return !!Math.floor(dateTime.diff(secondDateTime, 'days').days);\n};\n\nexport function usePrevious(value: T) {\n // The ref object is a generic container whose current property is mutable ...\n // ... and can hold any value, similar to an instance property on a class\n const ref = useRef();\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]); // Only re-run if value changes\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n","import { dynamicDataTest } from '@kaa/common/utils/dataTest';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport Flatpickr from 'flatpickr';\nimport monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect';\nimport { DateTime } from 'luxon';\nimport React, { Ref, useCallback, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { dataTest } from '../../datatest/keys';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { SwInputAddon } from '../input-addon/SwInputAddon';\nimport { SwInputField } from '../input-field/SwInputField';\nimport { SwInputGroup } from '../input-group/SwInputGroup';\nimport { mergeClassNames } from '../utilities';\nimport './SwDatePicker.style.scss';\nimport { SwDatePickerProps } from './SwDatePicker.types';\nimport {\n isDiffDate,\n LocalizationFlatpickr,\n omitNil,\n usePrevious,\n} from './SwDatePicker.utils';\n\nexport const SwDatePicker = React.forwardRef(\n (\n {\n className,\n format = 'd-m-Y',\n visualFormat = 'd-m-Y',\n value = [],\n minDate,\n maxDate,\n disableDate,\n disabledDates,\n defaultDate,\n defaultTime,\n enableTime,\n excludeDates,\n timeTwentyfour = true,\n modMonthSelect = false,\n minTime,\n maxTime,\n addonText,\n addonTooltip,\n onChange,\n parseDate,\n modError,\n mode,\n onBlur,\n name,\n id,\n placeholder,\n ...props\n }: SwDatePickerProps,\n ref: Ref,\n ) => {\n const classes = 'vl-datepicker';\n\n const { t, i18n } = useTranslation();\n\n const inputRef = useRef(null);\n const addonRef = useRef(null);\n\n const [flatpickr, setFlatpickr] = useState(null);\n const [selectedDates, setSelectedDates] = useState(value || defaultDate);\n\n const actualInput = flatpickr?.mobileInput || flatpickr?.altInput;\n\n const [text] = useState(\n addonText || t(i18nKeys.general.datePicker.addonText),\n );\n const [tooltip] = useState(\n addonTooltip || t(i18nKeys.general.datePicker.addonTooltip),\n );\n\n const openDatepicker = () => {\n if (flatpickr) {\n flatpickr.open();\n }\n };\n\n useEffect(() => {\n if (!flatpickr && inputRef.current && addonRef.current) {\n // @ts-ignore because Flatpickr is not correctly typed as Class so we should not do a new for typescript\n const flatpickrInstance: Flatpickr.Instance = new Flatpickr(\n inputRef.current,\n {\n // sanitize options if undefined or null (then defaults get used)\n ...omitNil({\n allowInput: true,\n dateFormat: format,\n altFormat: visualFormat,\n altInput: true,\n defaultDate: value || defaultDate,\n locale: LocalizationFlatpickr[i18n.language],\n clickOpens: false,\n enableTime,\n time_24hr: timeTwentyfour,\n minDate,\n maxDate,\n minTime,\n maxTime,\n defaultTime,\n parseDate,\n mode,\n plugins: modMonthSelect\n ? [\n monthSelectPlugin({\n shorthand: true,\n altFormat: visualFormat,\n }),\n ]\n : undefined,\n onChange: (changedSelectedDates: Date[]) => {\n setSelectedDates(changedSelectedDates);\n },\n onValueUpdate: (changedSelectedDates: Date[]) => {\n setSelectedDates(changedSelectedDates);\n },\n onClose: () => {\n if (addonRef.current) {\n addonRef.current.focus();\n }\n },\n }),\n positionElement: addonRef.current,\n },\n );\n\n setFlatpickr(flatpickrInstance);\n\n const input =\n flatpickrInstance.mobileInput || flatpickrInstance.altInput;\n\n if (input) {\n input.classList.add('vl-datepicker__input-field');\n\n if (name) {\n input.setAttribute('name', name);\n }\n if (id) {\n input.setAttribute('id', id);\n }\n if (placeholder) {\n input.setAttribute('placeholder', placeholder);\n }\n if (props['aria-label']) {\n input.setAttribute('aria-label', props['aria-label']);\n }\n }\n }\n\n return () => {\n if (flatpickr) {\n flatpickr.destroy();\n setFlatpickr(null);\n }\n };\n }, [flatpickr]);\n\n useEffect(() => {\n if (flatpickr) {\n flatpickr.set('disable', excludeDates);\n }\n }, [excludeDates]);\n\n useEffect(() => {\n if (flatpickr) {\n flatpickr.set('disable', disabledDates);\n }\n }, [disabledDates]);\n\n const previousSelectedDates = usePrevious(selectedDates);\n useEffect(() => {\n if (!previousSelectedDates) {\n return;\n }\n\n if (\n previousSelectedDates &&\n selectedDates &&\n selectedDates.length === previousSelectedDates.length\n ) {\n const isDifferent = selectedDates.some((date) =>\n previousSelectedDates.some((previousDate) =>\n isDiffDate(date, previousDate),\n ),\n );\n\n if (isDifferent) {\n onChange(selectedDates);\n }\n } else {\n onChange(selectedDates);\n }\n }, [selectedDates, previousSelectedDates]);\n\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (flatpickr) {\n if (previousValue && value && previousValue.length === value.length) {\n const isDifferent = value.some((date) =>\n previousValue.some((previousDate) =>\n isDiffDate(date, previousDate),\n ),\n );\n\n if (isDifferent) {\n flatpickr.setDate(value, false);\n }\n } else {\n flatpickr.setDate(value, false);\n }\n }\n }, [flatpickr, value, previousValue]);\n\n const handleBlur = useCallback(\n (e: any) => {\n if (!addonRef.current) {\n return;\n }\n\n if (onBlur) {\n onBlur(e);\n }\n\n if (flatpickr && actualInput) {\n const fromFormat = flatpickr.mobileInput\n ? DateTime.fromISO(actualInput.value)\n : DateTime.fromFormat(actualInput.value, 'ddMMyyyy');\n\n if (fromFormat.isValid) {\n flatpickr.setDate(fromFormat.toJSDate(), true);\n } else {\n flatpickr.setDate(actualInput.value, true, visualFormat);\n }\n }\n },\n [actualInput, addonRef.current],\n );\n\n useEffect(() => {\n if (actualInput) {\n actualInput.addEventListener('blur', handleBlur, true);\n }\n return () => {\n if (actualInput) {\n actualInput.removeEventListener('blur', handleBlur, true);\n }\n };\n }, [actualInput, handleBlur]);\n\n useEffect(() => {\n if (actualInput) {\n if (modError) {\n actualInput.classList.add('vl-input-field--error');\n } else {\n actualInput.classList.remove('vl-input-field--error');\n }\n }\n }, [actualInput, modError]);\n\n useEffect(() => {\n if (actualInput && flatpickr) {\n flatpickr.set('noCalendar', !!disableDate);\n if (disableDate) {\n actualInput.setAttribute('disabled', '');\n actualInput.classList.add('vl-input-field--disabled');\n } else {\n actualInput.removeAttribute('disabled');\n actualInput.classList.remove('vl-input-field--disabled');\n }\n }\n }, [actualInput, disableDate]);\n\n const setDate = useCallback(\n (\n flatpickr: Flatpickr.Instance | null,\n date: string | Date | undefined,\n key: 'minDate' | 'maxDate',\n ) => {\n if (flatpickr && date && isDiffDate(flatpickr.config[key], date)) {\n flatpickr.set(\n key,\n typeof date === 'string'\n ? date\n : DateTime.fromJSDate(date)\n .startOf('day')\n .toJSDate(),\n );\n }\n },\n [flatpickr],\n );\n\n useEffect(() => {\n setDate(flatpickr, maxDate, 'maxDate');\n }, [flatpickr, maxDate]);\n\n useEffect(() => {\n setDate(flatpickr, minDate, 'minDate');\n }, [flatpickr, minDate]);\n\n return (\n \n \n {\n event.preventDefault();\n openDatepicker();\n }}\n />\n \n );\n },\n);\n","/* eslint react/no-array-index-key: \"off\" */\nimport {\n useAsyncCallback,\n useDebounce,\n useEventListener,\n useMaskedInput,\n useOnClickOutside,\n useWindowSize,\n} from '@kaa/common/utils';\nimport { dynamicDataTest } from '@kaa/common/utils/dataTest';\nimport { setError, unsetError } from '@kaa/common/validation';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport { FormikHandlers, FormikProps } from 'formik';\nimport React, {\n AllHTMLAttributes,\n ChangeEvent,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { dataTest } from '../../../../datatest/keys';\nimport { SwFormColumn, SwFormGrid } from '../../../core';\nimport { Column } from '../../../core/SwColumn';\nimport { SwFormInput } from '../../../form-input/SwFormInput';\nimport { SwFormMessageLabel } from '../../../form-message/SwFormMessageLabel';\nimport { SwInputField } from '../../../input-field/SwInputField';\nimport { useFormError } from '../../../util/hooks/useFormError';\nimport { FieldPropsClean } from '../../../utilities';\nimport { SwErrorMessageForField } from '../error-message-for-field/SwErrorMessageForField';\n\n// might need some tweaking, did some typing tests and it felt right\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nenum optionBoxPosition {\n ABOVE = 'above',\n BELOW = 'below',\n}\n\nexport type AutocompleteInputFieldProps<\n value = string,\n option = any,\n values = any\n> = AllHTMLAttributes &\n FieldPropsClean & {\n // TODO: try to change typings with formik (issue with final form everything can be undefined)\n type?: string;\n label?: string;\n column?: Column;\n labelColumn?: Column;\n placeholder?: string;\n controlled?: boolean;\n inputOnChange?: (event: ChangeEvent) => void;\n getOptions?: (\n query: string,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: value;\n name: string;\n },\n form: FormikProps,\n ) => Promise;\n menuOptionFormat?: (option: option) => any;\n onSelectOption?: (\n choice: option,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: value;\n name: string;\n },\n form: FormikProps,\n ) => void;\n valueExtractor?: (option: any) => string;\n modError?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n modDisabled?: boolean;\n modWithoutDropdown?: boolean;\n modRequired?: boolean;\n minLength?: number;\n autoUnsetServerError?: boolean;\n mask: Array | ((value: string) => Array);\n parse?: (value: string) => string;\n format?: (value: string) => string;\n id?: string;\n };\n\nexport const AutocompleteInputField = ({\n field,\n form,\n type = 'text',\n label,\n placeholder,\n controlled = true,\n inputOnChange,\n getOptions,\n menuOptionFormat,\n onSelectOption,\n valueExtractor,\n modBlock = true,\n modRequired,\n column = { width: '9', widthS: '12' },\n labelColumn = { width: '3', widthS: '12' },\n autoUnsetServerError = true,\n minLength = 0,\n mask,\n parse,\n format,\n id,\n modWithoutDropdown,\n ...props\n}: AutocompleteInputFieldProps) => {\n const { t } = useTranslation();\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [value, setValue] = useState(controlled ? field.value : '');\n const inputElement = useRef(null);\n const optionsList = useRef(null);\n const [optionsBoxPosition, setOptionsBoxPosition] = useState<\n optionBoxPosition\n >(optionBoxPosition.BELOW);\n\n const updateFormValue = (option?: any) => {\n setIsDropdownOpen(false);\n let actualOption = option;\n if (controlled) {\n if (!actualOption && options) {\n actualOption = options.find(\n (o) => (valueExtractor ? valueExtractor(o) : o) === field.value,\n );\n }\n const { setFieldValue, values, errors } = form;\n if (!actualOption) {\n setError({\n setFieldValue,\n name: `${field.name}.autocomplete.invalid`,\n });\n } else {\n if (errors[field.name]) {\n unsetError({\n setFieldValue,\n values,\n name: `${field.name}.autocomplete.invalid`,\n });\n }\n setFieldValue(\n field.name,\n valueExtractor ? valueExtractor(actualOption) : actualOption,\n );\n if (onSelectOption) onSelectOption(actualOption, field, form);\n }\n } else {\n setValue('');\n if (actualOption && onSelectOption) {\n onSelectOption(actualOption, field, form);\n }\n }\n };\n\n useOnClickOutside(optionsList, () => {\n updateFormValue();\n });\n\n const { height } = useWindowSize();\n\n const determineOptionBoxPosition = useCallback(() => {\n if (\n inputElement &&\n inputElement.current &&\n optionsList &&\n optionsList.current\n ) {\n const inputBounds = inputElement.current.getBoundingClientRect();\n const optionsBounds = optionsList.current.getBoundingClientRect();\n\n if (height - inputBounds.bottom < optionsBounds.height) {\n setOptionsBoxPosition(optionBoxPosition.ABOVE);\n } else {\n setOptionsBoxPosition(optionBoxPosition.BELOW);\n }\n }\n }, [inputElement, optionsList, setOptionsBoxPosition, height]);\n\n useEventListener('scroll', determineOptionBoxPosition);\n\n const [{ value: options, loading, error }, handleOptions] = useAsyncCallback(\n async (query: string) => {\n if (!getOptions) {\n return;\n }\n\n if (!query) {\n setIsDropdownOpen(false);\n return;\n }\n\n if (minLength > query.length) {\n const minLengthError = t(\n i18nKeys.general.errors.form.autocomplete.minLength,\n {\n num: minLength,\n },\n );\n throw minLengthError; // TODO: i18nKeys\n }\n\n determineOptionBoxPosition();\n return getOptions(query, field, form);\n },\n [setIsDropdownOpen, determineOptionBoxPosition, getOptions, field, form],\n );\n\n useDebounce(\n () => {\n handleOptions(value);\n },\n DEFAULT_DEBOUNCE_TIME,\n [value],\n );\n\n const errorMessage = useFormError({ field, form });\n\n const currentValue = format ? format(field.value) : field.value;\n\n const controlledCurrentValue = controlled ? currentValue : value;\n\n const onChange = useMaskedInput({\n input: inputElement,\n value: controlledCurrentValue,\n mask,\n onChange: (e: ChangeEvent) => {\n e.target.value = parse ? parse(e.target.value) : e.target.value;\n if (inputOnChange) {\n inputOnChange(e);\n }\n if (controlled) {\n field.onChange(e);\n if (!e.target.value && form.errors[field.name]) {\n unsetError({\n setFieldValue: form.setFieldValue,\n values: form.values,\n name: `${field.name}.autocomplete.invalid`,\n });\n }\n }\n setValue(e.target.value);\n\n if (!modWithoutDropdown) {\n setIsDropdownOpen(true);\n }\n },\n });\n\n return (\n \n \n \n \n {label}\n \n \n \n
\n \n \n form.setFieldTouched(field.name, true, true)}\n onChange={onChange}\n modError={!!errorMessage}\n modRequired={modRequired}\n {...props}\n />\n \n \n\n {isDropdownOpen && (\n \n
\n
\n \n
  • \n {loading && (\n <>\n
    \n \n {t(i18nKeys.general.autoCompletedataLoading)}\n \n \n )}\n {!loading && options && !options.length && (\n \n {t(i18nKeys.general.noResults)}\n \n )}\n {!loading && !options && error && (\n \n {error}\n \n )}\n {!loading &&\n options &&\n !!options.length &&\n options\n .slice(0, 5)\n .map((option, index, { length }) => (\n {\n if (length - 1 === index) {\n updateFormValue();\n }\n }}\n onClick={() => {\n updateFormValue(option);\n }}\n >\n {menuOptionFormat &&\n option &&\n menuOptionFormat(option)}\n \n ))}\n
  • \n \n
    \n
    \n
    \n )}\n
    \n \n \n \n );\n};\n","import { dynamicDataTest } from '@kaa/common/utils/dataTest';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport flatpickr from 'flatpickr';\nimport monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect';\nimport 'flatpickr/dist/plugins/monthSelect/style.css';\nimport React, { Ref, useEffect, useRef, useState } from 'react';\nimport Flatpickr from 'react-flatpickr';\nimport { useTranslation } from 'react-i18next';\nimport { dataTest } from '../../datatest/keys';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { SwInputAddon } from '../input-addon/SwInputAddon';\nimport { SwInputField } from '../input-field/SwInputField';\nimport { SwInputGroup } from '../input-group/SwInputGroup';\nimport { mergeClassNames } from '../utilities';\nimport './SwDatePicker.style.scss';\nimport { SwDatePickerProps } from './SwDatePicker.types';\nimport {\n isDiffDate,\n LocalizationFlatpickr,\n omitNil,\n usePrevious,\n} from './SwDatePicker.utils';\n\nexport const SwDatePicker2 = React.forwardRef(\n (\n {\n id,\n className,\n disableDate,\n addonText,\n addonTooltip,\n value = [],\n defaultDate,\n name,\n placeholder,\n format,\n visualFormat,\n timeTwentyfour,\n modMonthSelect = false,\n modError = false,\n onChange,\n onBlur,\n ...props\n }: SwDatePickerProps,\n containerRef: Ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const addonRef = useRef(null);\n\n const [fp, setFp] = useState(null);\n\n const options = omitNil({\n positionElement: addonRef.current,\n allowInput: true,\n dateFormat: format,\n altFormat: visualFormat,\n altInput: true,\n defaultDate: value || defaultDate,\n locale: LocalizationFlatpickr[i18n.language],\n clickOpens: false,\n time_24hr: timeTwentyfour,\n plugins: modMonthSelect\n ? [\n monthSelectPlugin({\n shorthand: true,\n altFormat: visualFormat,\n }),\n ]\n : undefined,\n ...props,\n });\n\n const [selectedDates, setSelectedDates] = useState(value || defaultDate);\n const previousSelectedDates = usePrevious(selectedDates);\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (!previousSelectedDates) {\n return;\n }\n\n if (\n previousSelectedDates &&\n selectedDates &&\n selectedDates.length === previousSelectedDates.length\n ) {\n const isDifferent = selectedDates.some((date) =>\n previousSelectedDates.some((previousDate) =>\n isDiffDate(date, previousDate),\n ),\n );\n\n if (isDifferent) {\n onChange(selectedDates);\n }\n } else {\n onChange(selectedDates);\n }\n }, [selectedDates, previousSelectedDates]);\n\n useEffect(() => {\n if (fp) {\n if (previousValue && value && previousValue.length === value.length) {\n const isDifferent = value.some((date) =>\n previousValue.some((previousDate) =>\n isDiffDate(date, previousDate),\n ),\n );\n\n if (isDifferent) {\n fp.setDate(value, false);\n }\n } else {\n fp.setDate(value, false);\n }\n }\n }, [fp, value, previousValue]);\n\n return (\n {\n setFp(fpInstance);\n }}\n onClose={() => {\n if (addonRef?.current) {\n addonRef.current.focus();\n }\n }}\n onValueUpdate={(dates) => {\n setSelectedDates(dates);\n }}\n render={(renderProps, inputRef) => (\n \n \n {\n event.preventDefault();\n if (fp) {\n fp.open();\n }\n }}\n />\n \n )}\n />\n );\n },\n);\n","import { useEffect } from 'react';\n\ntype Binding = {\n value?: any;\n modifiers?: { [key: string]: any };\n};\n\nconst getBreakpoint = () =>\n window\n .getComputedStyle(document.body, ':before')\n .getPropertyValue('content')\n .replace(/\"/g, '');\n\nexport const useBreakpoint = (binding: Binding) => {\n useEffect(() => {\n const resizeHandler = (\n points: any,\n bpCallback = (arg?: any) => undefined,\n ) => () => {\n const bp = getBreakpoint();\n if (points.includes(bp)) {\n bpCallback();\n } else if (points.length < 1) {\n bpCallback(bp);\n }\n };\n\n const points = Object.keys(binding.modifiers || {});\n const handler = resizeHandler(points, binding.value);\n\n handler();\n\n window.addEventListener(\n 'resize',\n handler,\n 50 as any, // Flanders code, not typescript ready\n );\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [binding]);\n};\n","import { useEventListener, useOnClickOutside } from '@kaa/common/utils';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport Popper from 'popper.js';\nimport React, {\n AllHTMLAttributes,\n cloneElement,\n createElement,\n ReactElement,\n Ref,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SwIcon } from '../icon/SwIcon';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { useBreakpoint } from '../util/hooks/useBreakpoint';\nimport { mergeClassNames, Omit } from '../utilities';\n\ntype LabelProps = {\n text?: string;\n tag?: string;\n url?: string;\n hidden?: boolean;\n};\n\nexport type SwPopverRenderProps = {\n close: () => void;\n [key: string]: unknown;\n};\n\ntype RenderReactElement = (props: SwPopverRenderProps) => ReactElement;\n\ntype AllHTMLAttributesWithoutChildren = Omit<\n AllHTMLAttributes,\n 'children'\n>;\n\ntype SwPopoverProps = AllHTMLAttributesWithoutChildren<\n T\n> & {\n tagName?: string;\n basicLabel?: LabelProps;\n advancedLabel?: string | ReactElement;\n labelCloseAria?: string;\n offsetX?: number | string;\n offsetY?: number | string;\n icon?: string;\n modLeft?: boolean;\n modRight?: boolean;\n modCenter?: boolean;\n modClosable?: boolean;\n modIconRotated?: boolean;\n modAlt?: boolean;\n children: ReactElement | RenderReactElement;\n action?: string;\n};\n\ntype Classes = {\n modAlt?: boolean;\n modLeft?: boolean;\n modRight?: boolean;\n modCenter?: boolean;\n modClosable?: boolean;\n isClosing?: boolean;\n isOpen?: boolean;\n};\n\nconst getClasses = ({\n modAlt,\n modLeft,\n modRight,\n modCenter,\n modClosable,\n isClosing,\n isOpen,\n}: Classes) => {\n return [\n 'vl-popover',\n modAlt ? 'vl-popover--alt' : '',\n modLeft ? 'vl-popover--align-left' : '',\n modRight ? 'vl-popover--align-right' : '',\n modCenter ? 'vl-popover--align-center' : '',\n modClosable ? 'vl-popover--closable' : '',\n isClosing ? 'js-vl-popover--closing' : '',\n ].join(' ');\n};\n\nconst toggleClasses = 'vl-popover__toggle ';\nconst popoverContentClasses = (isOpen: boolean) => {\n return [\n 'vl-popover__content',\n !isOpen ? 'vl-popover__content--close' : '',\n ].join(' ');\n};\n\nexport const SwPopover = React.forwardRef(\n (\n {\n tagName,\n children,\n className,\n icon,\n modAlt,\n modIconRotated,\n modLeft,\n modRight,\n modCenter,\n modClosable,\n onPointerUpCapture,\n advancedLabel,\n offsetX = 0,\n offsetY = 0,\n basicLabel = {\n tag: 'button',\n text: 'Open popover',\n },\n action,\n ...rest\n }: SwPopoverProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'div';\n // TODO: Improve typing\n const forwardRef = ref as any; // Disable typing to assign the current\n\n const { t } = useTranslation();\n\n const [latestPopoverZIndex, setLatestPopoverZIndex] = useState(804);\n const [isOpen, setIsOpen] = useState(false);\n const [isClosing, setIsClosing] = useState(false);\n const [popper, setPopper] = useState(null);\n const [breakpoint, setBreakpoint] = useState(null);\n const popoverReference = useRef(null);\n const popoverContentReference = useRef(null);\n const [backdrop, setBackdrop] = useState(null);\n\n const backdropClass = 'vl-backdrop';\n const backdropActiveClass = 'vl-backdrop--active';\n\n const classes = getClasses({\n modAlt,\n modLeft,\n modRight,\n modCenter,\n modClosable,\n isClosing,\n isOpen,\n });\n\n const popoverAdvancedLabel = () => {\n return !!advancedLabel;\n };\n const popoverToggleLabel = basicLabel;\n const popoverToggleLabelHidden = () => {\n if (basicLabel) {\n return basicLabel.hidden;\n }\n return false;\n };\n\n const popoverToggleIcon = () => {\n return {\n name: icon || Icon.ARROW_RIGHT,\n default: !icon,\n rotation: icon ? modIconRotated : true,\n classes: icon ? '' : 'vl-vi-u-badge vl-vi-u-badge--small',\n };\n };\n\n const createElementsForMobile = useCallback(() => {\n const backdropCreated = document.querySelector(`.${backdropClass}`);\n\n if (backdropCreated) {\n setBackdrop(backdropCreated as HTMLDivElement);\n backdropCreated.classList.add(backdropActiveClass);\n return;\n }\n\n const backdropElement = document.createElement('div');\n\n backdropElement.classList.add(backdropClass);\n backdropElement.classList.add(backdropActiveClass);\n\n document.body.appendChild(backdropElement);\n\n setBackdrop(backdropElement);\n }, [backdropClass, setBackdrop]);\n\n const initiatePopper = useCallback((): Popper | null => {\n const options = {\n placement: 'bottom-end',\n offset: 10,\n modifiers: {\n offset: {\n offset: '0,10',\n },\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n if (modRight) {\n options.modifiers.offset.offset = '12, 10';\n }\n\n if (offsetX && offsetX) {\n options.modifiers.offset.offset = `${offsetX}, ${offsetY}`;\n } else if (offsetX) {\n options.modifiers.offset.offset = `${offsetX}, 10`;\n } else if (offsetY) {\n options.modifiers.offset.offset = `0, ${offsetY}`;\n }\n\n if (modLeft) {\n options.placement = 'bottom-start';\n } else if (modCenter) {\n options.placement = 'bottom';\n }\n\n if (popoverReference.current && popoverContentReference.current) {\n const popperInstance: Popper = new Popper(\n popoverReference.current,\n popoverContentReference.current,\n options as any,\n );\n\n // TODO: maybe this line is wrong but they have it in flanders\n popperInstance.options.onUpdate = (popperInstance as any).state.updateBound;\n popperInstance.options.onCreate = popperInstance.options.onUpdate;\n popperInstance.disableEventListeners();\n\n return popperInstance;\n }\n\n return popper;\n }, [modRight, offsetX, offsetY, popoverReference, popoverContentReference]);\n\n const updateZIndex = useCallback(\n (element: HTMLElement | null) => {\n if (!element) {\n return;\n }\n setLatestPopoverZIndex((index) => {\n const latestPopoverZIndexValue = element.style.zIndex\n ? parseInt(element.style.zIndex, 10)\n : index;\n\n const zIndex = latestPopoverZIndexValue + 1;\n\n const el = element;\n el.style.zIndex = zIndex.toString();\n return latestPopoverZIndex;\n });\n },\n [setLatestPopoverZIndex],\n );\n\n const closePopover = useCallback(() => {\n setIsClosing(true);\n\n if (backdrop) {\n backdrop.classList.remove(backdropActiveClass);\n }\n\n if (popoverReference.current) {\n popoverReference.current.setAttribute('aria-expanded', 'false');\n popoverReference.current.classList.remove('js-vl-popover--open');\n }\n\n if (popper) {\n popper.destroy();\n setPopper(null);\n }\n\n setIsClosing(false);\n }, [backdrop, setIsClosing]);\n\n const createPopover = useCallback(() => {\n if (breakpoint === 'xsmall' || breakpoint === 'small') {\n createElementsForMobile();\n } else if (!popper) {\n setPopper(initiatePopper());\n }\n\n if (popoverReference.current) {\n popoverReference.current.setAttribute('aria-expanded', 'true');\n popoverReference.current.classList.add('js-vl-popover--open');\n }\n\n if (breakpoint && popoverContentReference.current) {\n if (breakpoint !== 'small' && breakpoint !== 'xsmall') {\n updateZIndex(popoverContentReference.current);\n } else {\n popoverContentReference.current.style.zIndex = '';\n }\n }\n }, [breakpoint, createElementsForMobile, setPopper, popper]);\n\n const togglePopover = useCallback(() => {\n setIsOpen((isOpen) => !isOpen);\n }, [setIsOpen]);\n\n // will resize when windows size change, will see if get performance\n useBreakpoint({\n value: setBreakpoint,\n });\n\n useEffect(() => {\n if (isOpen) {\n createPopover();\n } else {\n closePopover();\n }\n }, [createPopover, closePopover, isOpen]);\n\n useEffect(() => {\n if (breakpoint && popper) {\n popper.destroy();\n setPopper(null);\n createPopover();\n }\n }, [breakpoint]);\n\n const setClose = () => {\n setIsOpen(false);\n };\n\n useEventListener('keydown', (event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setClose();\n }\n });\n\n useOnClickOutside(popoverReference, setClose);\n\n useEffect(() => {\n return () => {\n if (popper) {\n popper.destroy();\n setPopper(null);\n }\n };\n }, [popper]);\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n ref: (element: HTMLElement) => {\n popoverReference.current = element;\n if (forwardRef) {\n forwardRef.current = element;\n }\n },\n ...rest,\n },\n <>\n {!popoverAdvancedLabel() ? (\n \n {popoverToggleLabelHidden() && ( // TODO: i18n\n \n {t(i18nKeys.a11y.breadcrumb.toggleArrow)}\n \n )}\n {!popoverToggleLabelHidden() &&\n !popoverAdvancedLabel() &&\n popoverToggleLabel\n ? basicLabel.text\n : ''}\n {popoverToggleIcon() && (\n \n )}\n \n ) : (\n // TODO: @Gilles a11y\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n \n {advancedLabel}\n \n )}\n\n \n {typeof children === 'function'\n ? children({ close: setClose })\n : cloneElement(children, { onClick: setClose })}\n {\n event.preventDefault();\n setClose();\n }}\n >\n \n \n {t(i18nKeys.general.close)}\n \n \n \n ,\n );\n },\n);\n","import React, { AllHTMLAttributes, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype FormInputProps = AllHTMLAttributes;\n\nconst getClasses = () => {\n return ['vl-form__input'].join(' ');\n};\n\nexport const SwFormInput = React.forwardRef(\n (\n { className, children, ...rest }: FormInputProps,\n ref: Ref,\n ) => {\n const classes = getClasses();\n\n return (\n
    \n {children}\n
    \n );\n },\n);\n","import React, {\n AllHTMLAttributes,\n createElement,\n ReactElement,\n Ref,\n} from 'react';\nimport { mergeClassNames } from '../utilities';\nimport { SwTitle } from '../title/SwTitle';\nimport { SwPopover } from '../popover/SwPopover';\nimport { Icon } from '../icon/SwIcon.constants';\n\ntype DropdownNavigationProps = AllHTMLAttributes & {\n tagName?: string;\n label: string;\n titleSize?: string;\n};\n\nconst getClasses = () => {\n return 'vl-dropdown-navigation';\n};\n\nexport const SwDropdownNavigation = React.forwardRef(\n (\n {\n tagName,\n label,\n titleSize: title,\n className,\n children,\n ...rest\n }: DropdownNavigationProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'nav';\n const classes = getClasses();\n const titleSize = title || 'h2';\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(className, classes),\n ref,\n ...rest,\n },\n \n {label}\n ,\n \n {children as ReactElement}\n ,\n );\n },\n);\n","import React, { AllHTMLAttributes, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype FormGroupProps = AllHTMLAttributes;\n\nconst getClasses = () => {\n return ['vl-form__group'].join(' ');\n};\n\nexport const SwFormGroup = React.forwardRef(\n (\n { className, children, ...rest }: FormGroupProps,\n ref: Ref,\n ) => {\n const classes = getClasses();\n\n return (\n
    \n {children}\n
    \n );\n },\n);\n","import { AllHTMLAttributes, createElement } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype FormMessageErrorProps = AllHTMLAttributes & {\n tagName?: string;\n};\n\nexport const SwFormMessageError = ({\n tagName,\n children,\n className,\n ...rest\n}: FormMessageErrorProps) => {\n const TagName = tagName || 'p';\n\n const classes = 'vl-form__error';\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n children,\n );\n};\n","import React, { AllHTMLAttributes, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype FormProps = AllHTMLAttributes;\n\nconst getClasses = () => {\n return ['vl-form'].join(' ');\n};\n\nexport const SwForm = React.forwardRef(\n ({ className, children, ...rest }: FormProps, ref: Ref) => {\n const classes = getClasses();\n\n return (\n
    \n {children}\n
    \n );\n },\n);\n","import get from 'lodash.get';\nimport { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FieldPropsClean } from '../../utilities';\n\nexport const useFormError = ({\n field,\n form: { errors, touched },\n}: FieldPropsClean) => {\n const { t } = useTranslation();\n return useMemo(() => {\n if (\n !errors[field.name] ||\n (!get(touched, field.name) && !errors[field.name].displayFocussed)\n ) {\n return '';\n }\n\n const values =\n typeof errors[field.name].values === 'function'\n ? errors[field.name].values(t)\n : errors[field.name].values;\n\n if (typeof errors[field.name].id === 'string') {\n return t(errors[field.name].id, values);\n }\n\n if (typeof errors[field.name].id === 'function') {\n return errors[field.name].id(t, values);\n }\n\n return errors[field.name].defaultMessage;\n }, [errors, touched, field.name]);\n};\n","import { unsetError } from '@kaa/common/validation';\nimport React, { AllHTMLAttributes, useEffect } from 'react';\nimport { SwFormMessageError } from '../../../form-message/SwFormMessageError';\nimport { useFormError } from '../../../util/hooks/useFormError';\nimport { FieldPropsClean } from '../../../utilities';\n\ntype SwErrorMessageForFieldProps = AllHTMLAttributes &\n FieldPropsClean & {\n testId?: string;\n autoUnsetServerError: boolean;\n };\n\nexport const SwErrorMessageForField = ({\n field,\n form,\n autoUnsetServerError,\n testId = '',\n}: SwErrorMessageForFieldProps) => {\n const errorMessage = useFormError({ field, form });\n const { values, setFieldValue, dirty } = form;\n useEffect(() => {\n if (autoUnsetServerError && dirty && values.errors) {\n if (values.errors.server) {\n unsetError({\n values,\n name: `server.${field.name}`, // this key is based on getServerErrorPathInFormValuesError\n setFieldValue,\n });\n return;\n }\n\n unsetError({\n values,\n name: field.name, // this key is based on getServerErrorPathInFormValuesError\n setFieldValue,\n });\n }\n }, [field.value]);\n\n return errorMessage ? (\n {errorMessage}\n ) : null;\n};\n","import { DropzoneOptions } from 'react-dropzone';\nimport { SwUploadProps } from './SwUpload.types';\n\nexport const MAXFILESIZE = 1000000;\nexport const FILESIZEBASE = 1000;\nenum FileSizeUnits {\n TB = 'TB',\n GB = 'GB',\n MB = 'MB',\n KB = 'KB',\n B = 'B',\n}\n\nconst FileSizeExponent = {\n [FileSizeUnits.TB]: 0,\n [FileSizeUnits.GB]: 1,\n [FileSizeUnits.MB]: 2,\n [FileSizeUnits.KB]: 3,\n [FileSizeUnits.B]: 4,\n};\n\nexport const getFileSize = (size: number, base = FILESIZEBASE) => {\n const unit = Object.keys(FileSizeExponent).find(\n (key) => size >= base ** (4 - FileSizeExponent[key as FileSizeUnits]) / 10,\n );\n const value = size / base ** (4 - FileSizeExponent[unit as FileSizeUnits]);\n return {\n value: Math.round(10 * value) / 10,\n unit,\n };\n};\n\nexport const getDropzoneOptions = ({\n maxFilesize = MAXFILESIZE,\n allowedFileTypes,\n multiple,\n disabled,\n}: SwUploadProps): DropzoneOptions => ({\n multiple,\n disabled,\n maxSize: maxFilesize,\n accept: allowedFileTypes,\n});\n","import { useMaskedInput } from '@kaa/common/utils';\nimport { dynamicDataTest } from '@kaa/common/utils/dataTest';\nimport { FormikHandlers, FormikProps } from 'formik';\nimport React, { AllHTMLAttributes, ChangeEvent, useRef } from 'react';\nimport { dataTest } from '../../../../datatest/keys';\nimport { SwFormColumn, SwFormGrid } from '../../../core';\nimport { Column } from '../../../core/SwColumn';\nimport { SwFormInput } from '../../../form-input/SwFormInput';\nimport { SwFormMessageLabel } from '../../../form-message/SwFormMessageLabel';\nimport { SwInputField } from '../../../input-field/SwInputField';\nimport { useFormError } from '../../../util/hooks/useFormError';\nimport { FieldPropsClean } from '../../../utilities';\nimport { SwErrorMessageForField } from '../error-message-for-field/SwErrorMessageForField';\n\nexport type SwInputTextFieldProps = AllHTMLAttributes &\n FieldPropsClean & {\n type?: string;\n label?: string;\n helpText?: string;\n column?: Column;\n labelColumn?: Column;\n modError?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n modDisabled?: boolean;\n modRequired?: boolean;\n inputOnChange?: (\n event: ChangeEvent,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: any;\n name: string;\n },\n form: FormikProps,\n ) => void;\n autoUnsetServerError?: boolean;\n mask: Array | ((value: string) => Array);\n parse?: (value: string) => string;\n format?: (value: string) => string;\n id?: string;\n };\n\nexport const SwInputTextField = ({\n field,\n form,\n type = 'text',\n label = '',\n helpText = '',\n column = { width: '9', widthS: '12' },\n labelColumn = { width: '3', widthS: '12' },\n inputOnChange,\n modBlock = true,\n autoUnsetServerError = true,\n modRequired,\n mask,\n parse,\n format,\n children,\n id,\n ...props\n}: SwInputTextFieldProps) => {\n const errorMessage = useFormError({ field, form });\n\n const ref = useRef(null);\n\n const currentValue = (format ? format(field.value) : field.value) || '';\n\n const onChange = useMaskedInput({\n input: ref,\n value: currentValue,\n mask,\n onChange: (e: ChangeEvent) => {\n // We have to do mutation for formik\n e.target.value = parse ? parse(e.target.value) : e.target.value;\n field.onChange(e.target.name)(e);\n if (inputOnChange) {\n inputOnChange(e, field, form);\n }\n },\n });\n\n return (\n \n \n \n \n {label}\n \n {helpText &&

    {helpText}

    }\n
    \n \n \n {\n /* To fix the case where the click is trigger after the error css rendering\n (if you want to reproduce the bug go into a SwModal where you can click into an input and then directly click to the close button) */\n if (\n (e.relatedTarget as HTMLButtonElement)?.nodeName ===\n 'BUTTON' &&\n (e.relatedTarget as HTMLButtonElement).classList.contains(\n 'vl-modal-dialog__close',\n )\n ) {\n return;\n }\n field.onBlur(e);\n }}\n onChange={onChange}\n modError={!!errorMessage}\n />\n \n \n {children}\n \n
    \n
    \n );\n};\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SwIcon } from '../../../icon/SwIcon';\nimport { Icon } from '../../../icon/SwIcon.constants';\nimport { SwInputTextField, SwInputTextFieldProps } from './SwInputField';\n\nexport const SwInputPasswordField = (props: SwInputTextFieldProps) => {\n const { t } = useTranslation();\n\n const [displayPassword, setDisplayPasswors] = useState(false);\n\n return (\n \n setDisplayPasswors(true)}\n onTouchEnd={() => setDisplayPasswors(false)}\n onMouseDown={() => setDisplayPasswors(true)}\n onMouseUp={() => setDisplayPasswors(false)}\n title={t(\n displayPassword\n ? i18nKeys.general.hidePassword\n : i18nKeys.general.showPassword,\n )}\n >\n \n \n \n );\n};\n","import React, { AllHTMLAttributes, createElement, Ref } from 'react';\nimport { useVisuallyHidden } from '../util/hooks/useVisuallyHidden';\nimport { mergeClassNames } from '../utilities';\n\ntype RadioProps = AllHTMLAttributes & {\n tagName?: string;\n id: string;\n modSingle?: boolean;\n modBlock?: boolean;\n modDisabled?: boolean;\n modError?: boolean;\n modSuccess?: boolean;\n modRequired?: boolean;\n};\n\ntype Classes = {\n modSingle?: boolean;\n modBlock?: boolean;\n modDisabled?: boolean;\n modError?: boolean;\n modSuccess?: boolean;\n};\nconst getClasses = ({\n modBlock,\n modDisabled,\n modError,\n modSingle,\n modSuccess,\n}: Classes) => {\n return [\n 'vl-radio',\n modBlock ? 'vl-radio--block' : '',\n modSingle ? 'vl-radio--single' : '',\n modDisabled ? 'vl-radio--disabled' : '',\n modError ? 'vl-radio--error' : '',\n modSuccess ? 'vl-radio--success' : '',\n ].join(' ');\n};\n\nexport const SwRadio = React.forwardRef(\n (\n {\n tagName,\n id,\n className,\n modBlock,\n modDisabled,\n modError,\n modSingle,\n modSuccess,\n modRequired = false,\n children,\n ...rest\n }: RadioProps,\n ref: Ref,\n ) => {\n const TagName = tagName || 'label';\n const visuallyHiddenRef = useVisuallyHidden();\n\n const classes = getClasses({\n modError,\n modSingle,\n modDisabled,\n modBlock,\n modSuccess,\n });\n const labelClasses = 'vl-radio__label';\n\n return createElement(\n TagName,\n {\n className: mergeClassNames(classes, className),\n htmlFor: id,\n ref,\n },\n ,\n
    \n {modSingle ? {children} : children}\n
    ,\n );\n },\n);\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport React, { AllHTMLAttributes, Ref } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { mergeClassNames } from '../utilities';\nimport './SwSelect.scss';\n\ntype SelectProps = AllHTMLAttributes & {\n tagName?: string;\n placeholderText?: string;\n modNoPlaceholder?: boolean;\n id?: string;\n modBlock?: boolean;\n modDisabled?: boolean;\n modRequired?: boolean;\n modFocus?: boolean;\n modError?: boolean;\n};\n\ntype Classes = {\n modBlock?: boolean;\n modError?: boolean;\n modDisabled?: boolean;\n};\n\nconst getClasses = ({ modBlock, modError, modDisabled }: Classes) => {\n return [\n 'vl-select',\n modBlock ? 'vl-select--block' : '',\n modError ? 'vl-select--error' : '',\n modDisabled ? 'vl-select--disabled' : '',\n ].join(' ');\n};\n\nexport const SwSelect = React.forwardRef(\n (\n {\n tagName,\n className,\n modBlock,\n placeholderText,\n value,\n modNoPlaceholder = false,\n children,\n modDisabled,\n modRequired,\n modFocus,\n modError,\n ...rest\n }: SelectProps,\n ref: Ref,\n ) => {\n const { t } = useTranslation();\n\n const classes = getClasses({\n modBlock,\n modError,\n modDisabled,\n });\n\n const placeholderLabel =\n placeholderText || t(i18nKeys.general.optionPlaceholder);\n // TODO: handle $attrs and changeListeners\n return (\n \n {!modNoPlaceholder ? (\n \n ) : null}\n {children}\n \n );\n },\n);\n","import React, { AllHTMLAttributes, ChangeEvent, Ref } from 'react';\nimport { mergeClassNames } from '../utilities';\n\ntype SwTextAreaFieldProps = AllHTMLAttributes & {\n modError?: boolean;\n modDisabled?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n modFocus?: boolean;\n modRequired?: boolean;\n maxLength?: number;\n};\n\ntype Classes = {\n modError?: boolean;\n modDisabled?: boolean;\n modSmall?: boolean;\n modInline?: boolean;\n modBlock?: boolean;\n};\nconst getClasses = ({\n modBlock,\n modError,\n modDisabled,\n modSmall,\n modInline,\n}: Classes) => {\n return [\n 'vl-textarea',\n modError ? 'vl-textarea--error' : '',\n modDisabled ? 'vl-textarea--disabled' : '',\n modSmall ? 'vl-textarea--small' : '',\n modInline ? 'vl-textarea--inline' : '',\n modBlock ? 'vl-textarea--block' : '',\n ].join(' ');\n};\n\nexport const SwTextArea = React.forwardRef(\n (\n {\n className,\n modBlock,\n modDisabled,\n modError,\n modInline,\n modSmall,\n modFocus,\n maxLength,\n value,\n onChange,\n modRequired = false,\n ...rest\n }: SwTextAreaFieldProps,\n ref: Ref,\n ) => {\n const classes = getClasses({\n modBlock,\n modDisabled,\n modError,\n modInline,\n modSmall,\n });\n\n const changeHandler = (event: ChangeEvent) => {\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n \n );\n },\n);\n","import React, { createContext, ReactNode, useContext, useReducer } from 'react';\n\nexport enum ActionType {\n ADD = 'add',\n}\n\ntype Action = {\n type: ActionType;\n payload: { [key: string]: { [key: string]: boolean } };\n};\nexport type ActionDispatch = (action: Action) => void;\ntype State = { [key: string]: { [key: string]: boolean } };\n\ntype ActionProviderProps = { children: ReactNode };\n\nconst initialState: State = {};\n\nconst ActionStateContext = createContext(undefined);\nconst ActionDispatchContext = createContext(\n undefined,\n);\n\nfunction actionReducer(state: State, action: Action): State {\n const { type, payload } = action;\n switch (type) {\n case ActionType.ADD: {\n return { ...state, ...payload };\n }\n default: {\n throw new Error(`Unhandled action: ${action}`);\n }\n }\n}\n\nexport const ActionProvider = ({ children }: ActionProviderProps) => {\n const [state, actionDispatch] = useReducer(actionReducer, initialState);\n return (\n \n \n {children}\n \n \n );\n};\n\nexport function useActionState() {\n const context = useContext(ActionStateContext);\n if (context === undefined) {\n throw new Error('useActionState must be used within a ActionProvider');\n }\n return context;\n}\n\nexport function useActionByResource(\n resourceId?: string | number,\n): { [key: string]: boolean } | undefined {\n const context = useActionState();\n\n if (!resourceId) {\n return;\n }\n\n return context[resourceId];\n}\n\nexport function useActionDispatch() {\n const context = useContext(ActionDispatchContext);\n if (context === undefined) {\n throw new Error('useActionDispatch must be used within a ActionProvider');\n }\n return context;\n}\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SwIcon } from '../../icon/SwIcon';\nimport { Icon } from '../../icon/SwIcon.constants';\nimport { SwLink } from '../../link/SwLink';\nimport { getFileSize } from '../SwUpload.utils';\n\ntype SwUploadFileProps = {\n file: File;\n error?: string;\n unset: (file: File) => void;\n};\n\nconst getClasses = ({ error }: { error?: boolean }) => {\n return ['vl-upload__file', error ? 'vl-upload__file--error' : ''].join(' ');\n};\nexport const SwUploadFile = ({ file, error, unset }: SwUploadFileProps) => {\n const { t } = useTranslation();\n const size = getFileSize(file.size);\n\n return (\n
    \n

    \n {' '}\n {file.name}{' '}\n \n ({size.value} {size.unit})\n \n

    \n {error && (\n
    \n {error}\n
    \n )}\n {\n e.preventDefault();\n unset(file);\n }}\n >\n \n \n
    \n );\n};\n","import React, { Ref, useCallback, useEffect, useState } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { useTranslation } from 'react-i18next';\nimport { SwIcon } from '../icon/SwIcon';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { SwLink } from '../link/SwLink';\nimport { mergeClassNames } from '../utilities';\nimport { SwUploadFile } from './components/SwUploadFile';\nimport { SwUploadProps } from './SwUpload.types';\nimport { getDropzoneOptions } from './SwUpload.utils';\n\nconst getClasses = ({ isDragging }: { isDragging?: boolean }) => {\n return ['vl-upload', isDragging ? 'vl-upload--dragging' : ''].join(' ');\n};\n\nconst getUploadContainerClasses = ({ hasFiles }: { hasFiles?: boolean }) => {\n return [\n 'vl-upload__files',\n hasFiles ? 'vl-upload__files--has-files' : '',\n ].join(' ');\n};\nexport const SwUpload = React.forwardRef(\n (\n {\n onUpload,\n uploadLabel,\n uploadDragText,\n options,\n className,\n id,\n maxFilesize,\n allowedFileTypes,\n multiple = false,\n ...rest\n }: SwUploadProps,\n ref: Ref,\n ) => {\n const { t } = useTranslation();\n\n const [files, setFiles] = useState([]);\n const [errorFiles, setErrorFiles] = useState([]);\n const [isDragging, setIsDragging] = useState(false);\n\n const unset = useCallback(\n (file: File) => {\n setFiles(files.filter((e) => e !== file));\n setErrorFiles(errorFiles.filter((e) => e !== file));\n },\n [setFiles, setErrorFiles],\n );\n\n const onDropAccepted = useCallback(\n (files) => {\n setFiles(files);\n },\n [setFiles],\n );\n\n const onDropRejected = useCallback(\n (files) => {\n setErrorFiles(files);\n },\n [setErrorFiles],\n );\n\n useEffect(() => {\n if (onUpload) {\n onUpload(files);\n }\n }, [files]);\n\n const { getRootProps, getInputProps } = useDropzone({\n onDragEnter: () => setIsDragging(true),\n onDragOver: () => setIsDragging(true),\n onDragLeave: () => setIsDragging(false),\n onDrop: () => setIsDragging(false),\n ...getDropzoneOptions({\n multiple,\n maxFilesize,\n allowedFileTypes,\n ...rest,\n ...options,\n }),\n onDropAccepted,\n onDropRejected,\n });\n\n const label = uploadLabel || t('general.upload.label');\n const dragText = uploadDragText || t('general.upload.labelDrag');\n\n return (\n \n
    \n

    \n \n {dragText}\n

    \n
    \n \n
    \n {files &&\n files.map((file: File) => (\n \n ))}\n {errorFiles &&\n errorFiles.map((file: File) => (\n \n ))}\n
    \n {\n e.preventDefault();\n setFiles([]);\n }}\n >\n \n {t('general.upload.removeAll')}\n \n \n \n \n
    \n e.preventDefault()}\n >\n \n \n {label}\n \n \n {dragText}\n
    \n \n \n );\n },\n);\n","import cuid from 'cuid';\nimport React, {\n createContext,\n ReactNode,\n Reducer,\n useContext,\n useReducer,\n} from 'react';\n\nexport enum AlertAction {\n ADD = 'add',\n DELETE = 'delete',\n CLEAR = 'clear',\n}\n\nenum AlertType {\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFORMATION = 'INFORMATION',\n}\n\nexport type Alert = T & {\n id?: string;\n type: AlertType;\n message: string;\n persistent?: boolean;\n};\n\ntype Action = { type: AlertAction; payload?: Alert | string };\nexport type AlertDispatch = (action: Action) => void;\ntype State = Array>;\n\nconst initialState: Array> = [];\n\ntype AlertProviderProps = { children: ReactNode };\n\nconst AlertStateContext = createContext | null>(null);\nconst AlertDispatchContext = createContext | null>(null);\n\nconst createAlert = (alert: Alert) => ({\n id: cuid(),\n persistent: false,\n ...alert,\n});\n\nfunction alertReducer(state: State, action: Action): State {\n const { type, payload } = action;\n switch (type) {\n case AlertAction.ADD: {\n return [\n ...state,\n ...(Array.isArray(payload)\n ? (payload as Array>).map(createAlert)\n : [createAlert(payload as Alert)]),\n ];\n }\n case AlertAction.DELETE: {\n return state.filter(\n (message: Alert) => message.id !== (payload as string),\n );\n }\n case AlertAction.CLEAR: {\n return state.filter((alert) => alert.persistent);\n }\n default: {\n throw new Error(`Unhandled action: ${action}`);\n }\n }\n}\n\nexport const AlertProvider = ({\n children,\n}: AlertProviderProps) => {\n const [state, alertDispatch] = useReducer, Action>>(\n alertReducer,\n initialState,\n );\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const useAlertState = (): State => {\n const context = useContext | null>(AlertStateContext);\n if (context === null) {\n throw new Error('useAlertState must be used within a AlertProvider');\n }\n return context;\n};\n\nexport const useAlertDispatch = (): AlertDispatch => {\n const context = useContext | null>(AlertDispatchContext);\n\n if (context === null) {\n throw new Error('useAlertDispatch must be used within a AlertProvider');\n }\n return context;\n};\n","export enum AddressFieldNames {\n POSTCODE = 'postcode',\n CITY = 'city',\n STREET = 'street',\n STREET_ID = 'streetId',\n HOUSE_NUMBER = 'houseNumber',\n}\n","import {\n existsInError,\n maxLength,\n required,\n setError,\n unsetError,\n ValidatorFunction,\n} from '@kaa/common/validation';\nimport { i18nKeys } from '@kaa/i18n/common/keys';\nimport { FormikHandlers, FormikProps } from 'formik';\nimport get from 'lodash.get';\nimport { AddressFieldNames } from './SwFormAddress.constant';\nimport { City, Street } from './SwFormAddress.type';\n\nexport const getAutocompletePostcodeOption = (\n availableCities: City[] = [],\n) => async (query: string) =>\n availableCities\n .map((option) => {\n if (option.postcode.startsWith(query)) {\n return {\n option,\n orderNumber: 0,\n };\n }\n if (\n option.names.some((name) =>\n name.toLowerCase().includes(query.toLowerCase()),\n )\n ) {\n return {\n option,\n orderNumber: 1,\n };\n }\n return {\n option,\n orderNumber: -1,\n };\n })\n .filter(({ orderNumber }) => orderNumber !== -1)\n .sort((a, b) => a.orderNumber - b.orderNumber)\n .map(({ option }) => option);\n\nexport const getAutocompleteStreetOption = ({\n fieldNamePrefix,\n getStreets,\n}: {\n fieldNamePrefix: string;\n getStreets: (\n postcode: string,\n query: string,\n ) => Promise<[any, Street[] | undefined]>;\n}) => async (\n query: string,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: any;\n name: string;\n },\n form: FormikProps,\n) => {\n const postcode = get(\n form.values,\n `${fieldNamePrefix}.${AddressFieldNames.POSTCODE}`,\n );\n\n if (!postcode || !query) {\n return [];\n }\n\n const [, value = []] = await getStreets(\n get(form.values, `${fieldNamePrefix}.${AddressFieldNames.POSTCODE}`),\n query,\n );\n return value;\n};\n\nexport const onSelectPostcodeOption = ({\n fieldNamePrefix,\n getStreets,\n}: {\n fieldNamePrefix: string;\n getStreets: (\n postcode: string,\n query: string,\n ) => Promise<[any, Street[] | undefined]>;\n}) => async (\n option: City,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: any;\n name: string;\n },\n form: FormikProps,\n) => {\n const { setFieldValue, values } = form;\n const street = get(values, `${fieldNamePrefix}.${AddressFieldNames.STREET}`);\n\n if (street) {\n // TODO: fix memory leak - pass setFieldValue to getStreets\n const [, streets = []] = await getStreets(option.postcode, street);\n\n if (streets.length === 1) {\n setFieldValue(\n `${fieldNamePrefix}.${AddressFieldNames.STREET_ID}`,\n streets[0].id,\n );\n setFieldValue(\n `${fieldNamePrefix}.${AddressFieldNames.CITY}`,\n streets[0].city,\n );\n } else {\n setError({\n setFieldValue,\n name: `${fieldNamePrefix}.${AddressFieldNames.STREET}.invalid`,\n });\n }\n }\n};\n\nexport const onSelectStreetOption = (fieldNamePrefix: string) => async (\n { id, city }: Street,\n field: {\n onChange: FormikHandlers['handleChange'];\n onBlur: FormikHandlers['handleBlur'];\n value: any;\n name: string;\n },\n form: FormikProps,\n) => {\n const { values, setFieldValue } = form;\n setFieldValue(`${fieldNamePrefix}.${AddressFieldNames.STREET_ID}`, id);\n setFieldValue(`${fieldNamePrefix}.${AddressFieldNames.CITY}`, city);\n unsetError({\n setFieldValue,\n values,\n name: `${fieldNamePrefix}.${AddressFieldNames.STREET}.invalid`,\n });\n};\n\nexport const getDefaultAddressValidation = (\n fieldNamePrefix: string,\n validators?: {\n [AddressFieldNames.POSTCODE]?: ValidatorFunction[];\n [AddressFieldNames.STREET]?: ValidatorFunction[];\n [AddressFieldNames.CITY]?: ValidatorFunction[];\n [AddressFieldNames.HOUSE_NUMBER]?: ValidatorFunction[];\n },\n) => ({\n [`${fieldNamePrefix}.${AddressFieldNames.POSTCODE}`]: [\n existsInError(\n `${fieldNamePrefix}.${AddressFieldNames.POSTCODE}.autocomplete.invalid`,\n ),\n required,\n ...((validators && validators[AddressFieldNames.POSTCODE]) || []),\n ],\n [`${fieldNamePrefix}.${AddressFieldNames.STREET}`]: [\n existsInError(\n `${fieldNamePrefix}.${AddressFieldNames.STREET}.autocomplete.invalid`,\n ),\n existsInError(`${fieldNamePrefix}.${AddressFieldNames.STREET}.invalid`, {\n id: i18nKeys.general.errors.form.invalidStreet,\n defaultMessage: 'Invalid street',\n displayFocussed: true,\n }),\n required,\n ...((validators && validators[AddressFieldNames.STREET]) || []),\n ],\n [`${fieldNamePrefix}.${AddressFieldNames.CITY}`]: [\n required,\n ...((validators && validators[AddressFieldNames.CITY]) || []),\n ],\n [`${fieldNamePrefix}.${AddressFieldNames.HOUSE_NUMBER}`]: [\n required,\n maxLength(12),\n ...((validators && validators[AddressFieldNames.HOUSE_NUMBER]) || []),\n ],\n});\n","import { AllHTMLAttributes, createElement, ReactNode } from 'react';\nimport { ValueOf } from '../types';\nimport { SwInfoTileDefault } from './SwInfoTileDefault';\nimport { SwInfoTileSpotlight } from './SwInfoTileSpotlight';\n\ntype Connections = { src: string; alt: string };\n\nexport enum SwInfoTileType {\n DEFAULT = 'default',\n CALENDAR = 'calendar',\n SPOTLIGHT = 'spotlight',\n}\n\nconst COMPONENT_BY_TYPE: {\n [key in ValueOf]: ReactNode;\n} = {\n [SwInfoTileType.DEFAULT]: SwInfoTileDefault,\n [SwInfoTileType.SPOTLIGHT]: SwInfoTileSpotlight,\n [SwInfoTileType.CALENDAR]: SwInfoTileDefault,\n};\n\ntype InfoTileProps = AllHTMLAttributes & {\n type?: SwInfoTileType;\n tagName?: string;\n title?: string | ReactNode; // this is different from Flanders component due the design requirement\n subtitle?: string | ReactNode; // this is different from Flanders component due the design requirement\n connections?: Connections[];\n modAlt?: boolean;\n modLarge?: boolean;\n modMedium?: boolean;\n modVCenter?: boolean;\n modSubTitleBig?: boolean;\n href?: string;\n badge?: ReactNode;\n badgeColor?: string;\n footer?: ReactNode;\n};\n\nexport const SwInfoTile = ({\n type = SwInfoTileType.DEFAULT,\n ...rest\n}: InfoTileProps) => {\n return createElement(COMPONENT_BY_TYPE[type] as any, rest);\n};\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport { connect, FormikProps } from 'formik';\nimport get from 'lodash.get';\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SwAlert } from '../../alert/SwAlert';\nimport { AlertType, getAlertPropsByType } from '../../alert/SwAlert.utils';\nimport { SwColumn } from '../../core';\n\ntype AlertProps = {\n close?: () => void;\n closable?: boolean;\n text: string;\n modSuccess?: boolean;\n modError?: boolean;\n icon: string;\n link?: any;\n};\n\nconst Alert = ({ text, link, ...rest }: AlertProps) => {\n return (\n \n \n <>\n {text}\n {link}\n \n \n \n );\n};\n\nconst FormSubmitMessageWithoutConnect = ({\n formik,\n}: {\n formik?: FormikProps;\n}) => {\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!formik) {\n return;\n }\n\n const { status, dirty, setStatus, errors } = formik;\n if (status) {\n const isError = !!Object.keys(errors).length;\n const { type } = status;\n const isSuccessStatus = !dirty && type === AlertType.SUCCESS;\n const isErrorStatus = dirty && type === AlertType.ERROR;\n\n if (isSuccessStatus || isErrorStatus || isError) {\n return;\n }\n\n setStatus(null);\n }\n }, [formik]);\n\n if (!formik) {\n return null;\n }\n\n const { status, errors, touched } = formik;\n if (status && status.type && AlertType[status.type as AlertType]) {\n const { type, msg, msgWithLink, ...rest } = status;\n\n return (\n \n );\n }\n\n const errorsFieldname = Object.keys(errors);\n if (errorsFieldname.some((error) => !!get(touched, error))) {\n return (\n \n );\n }\n\n return null;\n};\n\nexport const SwFormSubmitMessage = connect(FormSubmitMessageWithoutConnect);\n","import { connect, FormikProps } from 'formik';\nimport { useEffect } from 'react';\n\n// TODO: change with validateOnMount boolean when pass to formik v2\nexport const SwFormValidateOnMount = connect(\n ({ formik }: { formik?: FormikProps }) => {\n useEffect(() => {\n if (formik) {\n formik.validateForm();\n }\n }, [formik && formik.validateForm]);\n\n return null;\n },\n);\n","import React, { AllHTMLAttributes, createElement, ReactNode } from 'react';\nimport { SwBadge } from '../badge/SwBadge';\nimport { mergeClassNames } from '../utilities';\nimport { SwTitle } from '../title/SwTitle';\n\ntype Connections = { src: string; alt: string };\n\ntype SwInfoTileDefaultProps = AllHTMLAttributes & {\n tagName?: string;\n title?: string | ReactNode;\n subtitle?: string | ReactNode;\n connections?: Connections[];\n modAlt?: boolean;\n href?: string;\n children?: ReactNode;\n badge?: ReactNode;\n badgeColor?: string;\n modSubTitleBig?: boolean;\n};\n\ntype Classes = {\n modAlt?: boolean;\n href?: string;\n connections?: Connections[];\n};\n\nconst getClasses = ({ modAlt, href, connections }: Classes) => {\n return [\n 'vl-info-tile',\n modAlt ? 'vl-info-tile--alt' : '',\n href ? 'vl-info-tile--clickable' : '',\n connections ? 'vl-info-tile--badge-bottom' : '',\n ].join(' ');\n};\n\nexport const SwInfoTileDefault = ({\n tagName,\n title,\n subtitle,\n connections,\n modAlt,\n className,\n children,\n modSubTitleBig,\n href,\n badge,\n badgeColor = 'inherit',\n ...rest\n}: SwInfoTileDefaultProps) => {\n const TagName = tagName || 'a';\n\n const classes = getClasses({\n href,\n connections,\n modAlt,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest, href },\n <>\n
    \n {badge && (\n \n {badge}\n
    \n )}\n
    \n \n {title}\n \n {!modSubTitleBig && (\n

    {subtitle}

    \n )}\n {modSubTitleBig && (\n

    {subtitle}

    \n )}\n
    \n \n {(connections || children) && (\n
    \n {children && (\n
    {children}
    \n )}\n {connections && (\n
    \n {connections.map((connection) => (\n \n {connection.alt}\n \n ))}\n
    \n )}\n
    \n )}\n ,\n );\n};\n","import { i18nKeys } from '@kaa/i18n/common/keys';\nimport { TFunction } from 'i18next';\nimport React, { AllHTMLAttributes, createElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Icon } from '../icon/SwIcon.constants';\nimport { SwLink } from '../link/SwLink';\n\nexport enum PagerItemType {\n FIRST = 'first',\n PREVIOUS = 'previous',\n NEXT = 'next',\n LAST = 'last',\n}\n\ntype PagerItemProps = AllHTMLAttributes & {\n tagName?: string;\n type: PagerItemType;\n label?: string;\n onClick?: (e: MouseEvent) => void;\n};\n\ntype Config = {\n icon: Icon;\n text: string;\n iconBefore?: boolean;\n iconAfter?: boolean;\n};\n\nconst getConfig = ({\n type,\n label,\n t,\n}: {\n type: PagerItemType;\n label?: string;\n t: TFunction;\n}): Config => {\n const config = {\n [PagerItemType.FIRST]: {\n icon: Icon.ARROW_LEFT,\n iconBefore: true,\n text: label || t(i18nKeys.general.first) || PagerItemType.FIRST,\n },\n [PagerItemType.PREVIOUS]: {\n icon: Icon.ARROW_LEFT,\n iconBefore: true,\n text: label || t(i18nKeys.general.previous) || PagerItemType.PREVIOUS,\n },\n [PagerItemType.NEXT]: {\n icon: Icon.ARROW_RIGHT,\n iconAfter: true,\n text: label || t(i18nKeys.general.next) || PagerItemType.NEXT,\n },\n [PagerItemType.LAST]: {\n icon: Icon.ARROW_RIGHT,\n iconAfter: true,\n text: label || t(i18nKeys.general.last) || PagerItemType.LAST,\n },\n };\n\n return config[type];\n};\n\nconst getClasses = () => {\n return ['vl-pager__element'].join(' ');\n};\n\nexport const SwPagerItem = ({\n tagName,\n label,\n type,\n ...rest\n}: PagerItemProps) => {\n const { t } = useTranslation();\n const TagName = tagName || 'li';\n\n const classes = getClasses();\n const config = getConfig({ type, label, t });\n\n return createElement(\n TagName,\n { className: classes },\n <>\n \n {config.text}\n \n ,\n );\n};\n","import React, { AllHTMLAttributes, createElement, ReactNode } from 'react';\nimport { SwBadge } from '../badge/SwBadge';\nimport { SwIcon } from '../icon/SwIcon';\nimport { mergeClassNames } from '../utilities';\nimport { SwTitle } from '../title/SwTitle';\n\ntype SwInfoTileSpotlightProps = AllHTMLAttributes & {\n tagName?: string;\n title?: string | ReactNode;\n subTitle?: string | ReactNode;\n modEllipsis?: boolean;\n modBadge?: boolean;\n modLarge?: boolean;\n modMedium?: boolean;\n modVCenter?: boolean;\n footer?: ReactNode;\n icon?: string;\n};\n\ntype Classes = {\n modLarge?: boolean;\n modMedium?: boolean;\n modVCenter?: boolean;\n};\n\nconst getClasses = ({ modLarge, modMedium, modVCenter }: Classes) => {\n return [\n 'vl-info-tile',\n 'vl-info-tile--center',\n modLarge ? 'vl-info-tile--l' : '',\n modMedium ? 'vl-info-tile--m' : '',\n modVCenter ? 'vl-info-tile--v-center' : '',\n ].join(' ');\n};\n\nexport const SwInfoTileSpotlight = ({\n tagName,\n title,\n subTitle,\n modBadge = false,\n modEllipsis,\n modLarge,\n modMedium,\n modVCenter,\n className,\n children,\n href,\n footer,\n icon,\n ...rest\n}: SwInfoTileSpotlightProps) => {\n const TagName = tagName || 'div';\n\n const classes = getClasses({\n modLarge,\n modMedium,\n modVCenter,\n });\n\n return createElement(\n TagName,\n { className: mergeClassNames(classes, className), ...rest },\n <>\n {(icon || title) && (\n \n {icon && !modBadge && (\n \n )}\n {icon && modBadge && (\n \n )}\n {title && (\n
    \n \n {title}\n \n {subTitle && (\n \n {subTitle}\n \n )}\n
    \n )}\n \n )}\n {children && (\n // TOTO @GILLES
    I remove this fix (flex: 'none')\n \n {children}\n
    \n )}\n {footer &&
    {footer}
    }\n ,\n );\n};\n","import React, { AllHTMLAttributes, Ref } from 'react';\n\ntype SelectProps = AllHTMLAttributes & {\n tagName?: string;\n checked?: boolean;\n};\n\nexport const SwShowOnChecked = React.forwardRef(\n (\n { tagName, className, children, ...rest }: SelectProps,\n ref: Ref,\n ) => {\n return (\n
    \n {children}\n
    \n );\n },\n);\n","import React, { AllHTMLAttributes, Ref } from 'react';\n\ntype SelectProps = AllHTMLAttributes & {\n tagName?: string;\n checked?: boolean;\n};\n\nexport const SwShowOnCheckedContent = React.forwardRef(\n (\n { tagName, className, checked, children, ...rest }: SelectProps,\n ref: Ref,\n ) => {\n if (!checked) {\n return null;\n }\n return (\n
    \n {children}\n
    \n );\n },\n);\n","import Flickity from 'flickity';\n/* eslint-disable */\nFlickity.prototype._createResizeClass = function() {\n this.element.classList.add('flickity-resize');\n};\n\nFlickity.createMethods.push('_createResizeClass');\n\nconst { resize } = Flickity.prototype;\nFlickity.prototype.resize = function() {\n this.element.classList.remove('flickity-resize');\n resize.call(this);\n this.element.classList.add('flickity-resize');\n};\n","export enum CustomTrackEvent {\n ON_KLARNA_CREATE_SESSION = 'OnKlarnaCreateSession',\n ON_KLARNA_LOAD_CALLBACK = 'OnKlarnaLoadCallback',\n ON_KLARNA_PAYMENTS_AUTORIZE = 'OnKlarnaPaymentsAuthorize',\n ON_KLARNA_VOUCHERS_PURCHASE_CREATE = 'OnKlarnaVouchersPurchaseCreate',\n}\n","import {\n SwButton,\n SwContainer,\n SwIntroduction,\n SwTitle,\n} from '@kaa/ui-flanders/components';\nimport React from 'react';\n\ntype ConfigLoadFailedFallbackProps = {\n mainTitle: string;\n introduction: string;\n actionButton: string;\n};\n\nexport const ConfigLoadFailedFallback = ({\n mainTitle,\n introduction,\n actionButton,\n}: ConfigLoadFailedFallbackProps) => (\n \n \n {mainTitle}\n \n \n {introduction}\n \n {\n window.location.reload();\n }}\n >\n {actionButton}\n \n \n);\n","/* eslint max-classes-per-file: [\"error\", 2] */\nimport { useAuthState } from '@kaa/auth/common';\nimport { useActionState } from '@kaa/common/context';\nimport { SwContainer, SwFetchErrorMessage } from '@kaa/ui-flanders/components';\nimport { IConfig } from '@microsoft/applicationinsights-common';\nimport { IConfiguration } from '@microsoft/applicationinsights-core-js';\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { createBrowserHistory } from 'history';\nimport React, { Component, FunctionComponent, ReactNode } from 'react';\n\ntype ApplicationInsightsConfig = IConfiguration & IConfig;\n// Documentation on: https://docs.microsoft.com/fr-be/azure/azure-monitor/app/javascript\n\nexport const initErrorTracking = (\n instrumentationKey: string,\n releaseId?: string, // convention: kaa-environment-releaseId\n) => {\n const reactPlugin = new ReactPlugin();\n\n const browserHistory = createBrowserHistory({\n basename: releaseId ? `${releaseId}-` : '',\n });\n\n const appInsights = new ApplicationInsights({\n config: {\n instrumentationKey,\n extensions: [reactPlugin],\n disableTelemetry: false,\n disableAjaxTracking: true,\n disableFetchTracking: true,\n extensionConfig: {\n [reactPlugin.identifier]: { history: browserHistory },\n },\n } as ApplicationInsightsConfig,\n });\n\n appInsights.loadAppInsights();\n\n return { reactPlugin, appInsights };\n};\n\ninterface RootProps {\n appId: string;\n regionCode: string;\n config: { [key: string]: any } | null;\n errorComponent: FunctionComponent | null;\n [key: string]: any;\n}\n\ninterface State {\n hasError: boolean;\n [key: string]: any;\n}\n\nexport class RootErrorCrashTrackingBoundary extends Component<\n RootProps,\n State\n> {\n constructor(props: RootProps) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: unknown, errorInfo: { [key: string]: any }) {\n const { appId, regionCode, config } = this.props;\n /* eslint-disable */\n if (process.env.NODE_ENV === 'development') {\n console.group('Sentry error');\n console.log(appId, regionCode, config);\n console.log(error, errorInfo);\n console.groupEnd();\n }\n // TODO: Will be replaced by AppInsight\n // Sentry.withScope((scope: any) => {\n // scope.setTag('APP_ID', appId);\n // scope.setTag('REGION_CODE', regionCode);\n // scope.setExtras({\n // errorInfo,\n // config,\n // });\n // Sentry.captureException(error);\n // });\n /* eslint-enable */\n }\n\n render() {\n const { hasError } = this.state;\n const { children, errorComponent: ErrorComponent } = this.props;\n\n if (hasError && ErrorComponent) {\n return ;\n }\n return children;\n }\n}\n\ninterface Props extends RootProps {\n user: { [key: string]: any } | null;\n actions: { [key: string]: any } | null;\n}\n\nclass ChildErrorCrashTrackingBoundary extends Component {\n constructor(props: Props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: unknown, errorInfo: { [key: string]: any }) {\n const { appId, regionCode, user, actions, config } = this.props;\n /* eslint-disable */\n if (process.env.NODE_ENV === 'development') {\n console.group('Sentry error');\n console.log(appId, regionCode, user, actions, config);\n console.log(error, errorInfo);\n console.groupEnd();\n }\n // TODO: Will be replaced by AppInsight\n // Sentry.withScope((scope: any) => {\n // scope.setTag('APP_ID', appId);\n // scope.setTag('REGION_CODE', regionCode);\n // scope.setUser({\n // ...(user && user.user ? user.user : {}),\n // authUser: user && user.authUser,\n // customers: user && user.customers,\n // messages: user && user.messages,\n // selectedCustomerId: user && user.selectedCustomerId,\n // settings: user && user.settings,\n // user: user && user.user,\n // });\n // scope.setExtras({\n // errorInfo,\n // actions,\n // config,\n // });\n // Sentry.captureException(error);\n // });\n /* eslint-enable */\n }\n\n render() {\n const { hasError } = this.state;\n if (hasError) {\n return (\n \n {\n window.location.reload();\n }}\n />\n \n );\n }\n const { children } = this.props;\n return children;\n }\n}\n\nexport const ErrorCrashTrackingBoundary = ({\n appId,\n regionCode,\n config,\n children,\n}: {\n appId: string;\n regionCode: string;\n config: { [key: string]: any } | null;\n children: ReactNode;\n}) => {\n const authState = useAuthState();\n const actionState = useActionState();\n return (\n \n {children}\n \n );\n};\n","import { isIframe } from '@kaa/common/utils';\nimport React, { PropsWithChildren } from 'react';\n\ntype RemoveIfInIframeProps = {};\n\nexport const RemoveIfInIframe = ({\n children,\n}: PropsWithChildren) => {\n return <>{!isIframe() ? children : null};\n};\n","import TagManager from 'react-gtm-module';\n\nexport enum EventCategory {\n MAIN_NAVIGATION = 'main navigation',\n BREADCRUMB = 'breadcrumb',\n FOOTER = 'footer',\n CTA = 'CTA',\n POP_UP_CLOSE = 'pop up close',\n MODAL_INTERACTION = 'modal interaction',\n OUTBOUND_TRAFFIC = 'outbound traffic',\n CONTACT = 'contact',\n CONTACT_FORM = 'contact form',\n REGISTER = 'subscription',\n DOWNLOAD = 'download',\n DASHBOARD = 'dashboard',\n INFO_BUBBLE = 'info bubble',\n ORDER_VOUCHERS_CTA = 'order vouchers CTA',\n ORDER_VOUCHERS_ONLINE = 'order request online',\n ORDER_VOUCHERS_OFFLINE = 'order request offline',\n REFUND_REQUEST_CTA = 'refund request CTA',\n EXCHANGE_REQUEST_CTA = 'exchange request CTA',\n REFUND_REQUEST = 'refund request',\n EXCHANGE = 'exchange request',\n PLAN_LEAVE = 'plan leave',\n CONFIRM_PRESTATION = 'confirm prestation',\n CONTEST_PRESTATION = 'contest prestation',\n}\n\nexport enum EventAction {\n CLICK = 'click',\n BACK = 'click back',\n DELETE = 'delete',\n SUBMIT = 'submit',\n CREATION = 'creation',\n OPEN_MODAL = 'open modal',\n CLOSE_MODAL = 'close modal',\n CLOSE_MODAL_BACK_ORDER = 'close modal & back to order screen',\n GO_ORDER_DETAILS = 'go to Order details',\n GO_WORKS_MANAGEMENT = 'go to works management',\n GO_WALLET = 'go to wallet',\n NEXT = 'next',\n PREVIOUS = 'previous',\n GET_DOCUMENT = 'Get Document',\n LOG_OUT = 'Log out',\n SWITCH_USER = 'Switch user',\n ORDER_VOUCHERS = 'order vouchers',\n DOWNLOAD = 'download',\n}\n\nexport enum EventLabel {\n BACK_TO_HOMEPAGE = 'back to homepage',\n ORDER_SCREEN = 'Order Screen',\n ORDER_EXCHANGE_MODAL = 'Order | Exchange modal',\n ORDER_REFUND_MODAL = 'Order | Refund modal',\n ORDER_ORDER_MODAL = 'Order | Order modal',\n ORDER_ORDER_MODAL_ORDER = 'Order modal | 1-order',\n ORDER_ORDER_MODAL_DETAILS = 'Order modal | 2-details',\n ORDER_ORDER_MODAL_PAYMENT = 'Order modal | 3-payment',\n ORDER_ORDER_MODAL_CONFIRMATION = 'Order modal | 4-confirmation',\n WALLET_SCREEN = 'Wallet Screen',\n WALLET_EXCHANGE_MODAL = 'Wallet | Exchange modal',\n WALLET_REFUND_MODAL = 'Wallet | Refund modal',\n WALLET_ORDER_MODAL = 'Wallet | Order modal',\n ELECTRONIC = 'electronic',\n PAPER = 'paper',\n EXCHANGE_CONFIRMATION = 'Exchange confirmation',\n REFUND_PAPER_LINK = 'Refund Paper link',\n NOT_ENOUGH_VOUCHER = 'not enough vouchers',\n SWITCH_FROM_PAPER = 'Switch from paper',\n SWITCH_FROM_PAPER_INFO = 'Info about switch from paper',\n WORKS_CONTEST_MODAL = 'Prestation contest modal',\n WORKS_DETAILS_MODAL = 'Prestation Details Modal',\n WORKS_FOLLOW_UP = 'Work Follow-up',\n REGISTER_COMPLETE = 'Register Complete',\n REGISTER_EID = 'Register with eID',\n REGISTER_MANUALLY = 'Register manually',\n CONDITIONS = 'Terms & Conditions',\n PRIVACY = 'Privacy',\n PROFILE_CHANGE_EMAIL_MODAL = 'Change Email Address Modal',\n PROFILE_CHANGE_PASSWORD_MODAL = 'Change Password Modal',\n}\n\nexport enum EventPathname {\n ORDER_ORDER_MODAL_ORDER = '/order-modal/1-order',\n ORDER_ORDER_MODAL_DETAILS = '/order-modal/2-details',\n ORDER_ORDER_MODAL_PAYMENT = '/order-modal/3-payment',\n ORDER_ORDER_MODAL_CONFIRMATION = '/order-modal/4-confirmation',\n ONBOARDING_MODAL = '/onboarding-modal',\n REFUND_MODAL = '/refund-modal',\n EXCHANGE_MODAL = '/exchange-modal',\n}\n\nexport const initAnalytics = (googleTagManagerId: string) => {\n TagManager.initialize({\n gtmId: googleTagManagerId,\n });\n};\n\nexport const sentPageViewEvent = ({\n pathname,\n modDefaultPathname = true,\n status,\n}: {\n pathname?: string;\n modDefaultPathname?: boolean;\n status?: 'logged in' | 'logged out';\n} = {}) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'VirtualPageview',\n virtualPageURL:\n (modDefaultPathname ? window.location.pathname : '') + pathname,\n status,\n },\n });\n};\n\nexport const sendMainNavigationEventToGTM = (\n parent: string,\n child?: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.MAIN_NAVIGATION,\n eventAction: parent,\n eventLabel: child,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendBackToHPEventToGTM = () => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.MAIN_NAVIGATION,\n eventAction: EventAction.CLICK,\n eventLabel: EventLabel.BACK_TO_HOMEPAGE,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendCTAEventToGTM = (\n buttonValue: string,\n destinationUrl: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.CTA,\n eventAction: buttonValue,\n eventLabel: destinationUrl,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport enum DashboardActionEvent {\n ALERT = 'alert',\n CARD = 'card',\n}\n\nexport const sendDashboardActionEventToGTM = (\n action: DashboardActionEvent,\n elementClicked: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.DASHBOARD,\n eventAction: action,\n eventLabel: elementClicked,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendConfirmServiceManagementEventToGTM = (\n serviceManagementType: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.CONFIRM_PRESTATION,\n eventAction: EventAction.CLICK,\n eventLabel: serviceManagementType,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport enum ContestServiceManagementActionEvent {\n OK = 'prestation happened',\n NOK = 'prestation did not happened',\n}\nexport const sendContestServiceManagementEventToGTM = (\n action: ContestServiceManagementActionEvent,\n serviceManagementType: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.CONTEST_PRESTATION,\n eventAction: action,\n eventLabel: serviceManagementType,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport enum AccountCreationActionEvent {\n EID = 'eid',\n EMAIL_PASSWORD = 'email-password',\n}\n\nexport const sendAccountCreationEventToGTM = (\n label: AccountCreationActionEvent,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.REGISTER,\n eventAction: EventAction.CREATION,\n eventLabel: label,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendAccountSubscirptionEventToGTM = (\n eventCategory: EventCategory,\n eventAction: string,\n eventLabel: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory,\n eventAction,\n eventLabel,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendModalInteractionToGTM = (\n modalName: string, // Name of the modal | Page/step\n actionTaken: string, // action taken (in English) including close\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.MODAL_INTERACTION,\n eventAction: modalName,\n eventLabel: actionTaken,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendCustomInteractionToGTM = (\n eventCategory: EventCategory,\n eventAction: string,\n eventLabel: string,\n eventValue?: number,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory,\n eventAction,\n eventLabel,\n eventValue: eventValue || 0,\n eventNonInteraction: false,\n },\n });\n};\n\nexport const sendDownloadEventToGTM = (\n clickedLabel: string,\n downloadLink: string,\n) => {\n TagManager.dataLayer({\n dataLayer: {\n event: 'GA Tracking',\n eventCategory: EventCategory.DOWNLOAD,\n eventAction: clickedLabel,\n eventLabel: downloadLink,\n eventValue: 0,\n eventNonInteraction: false,\n },\n });\n};\n","import { AvailableLanguages, LokaliseKeys } from '@kaa/common/enums';\nimport axios from 'axios';\n\nexport interface AppConfig {\n app: App;\n [key: string]: any;\n}\n\nexport interface App {\n google: {\n tagManagerId: string;\n };\n applicationInsights: {\n instrumentationKey: string;\n };\n mode: string;\n environment: string;\n apiUrl: string;\n auth: Auth;\n}\n\nexport interface Auth {\n oidc: Oidc;\n definition: Definition;\n}\n\nexport interface BaseOidc {\n acr_values: string;\n redirect_uri: string;\n silent_redirect_uri: string;\n post_logout_redirect_uri: string;\n}\n\nexport interface Oidc extends BaseOidc {\n authority: string;\n client_id: string;\n client_secret: string;\n automaticSilentRenew: boolean;\n loadUserInfo: boolean;\n response_type: string;\n scope: string;\n}\n\nexport interface Definition {\n header: string;\n footer: string;\n}\n\nexport interface BuildConfig {\n id: string;\n regionCode: T;\n lokaliseKey: LokaliseKeys;\n buildId: string;\n isDevelopment: boolean;\n origin: string;\n loginUrl: string;\n unauthorizedRedirectUrl: string;\n logoutUrl: string;\n errorPagePath: string;\n forgotPasswordUrl: string;\n i18n: I18N;\n oidc: BaseOidc;\n}\n\nexport interface BuildConfigIdp {\n regionCode: T;\n lokaliseKey: LokaliseKeys;\n origin: string;\n i18n: I18N;\n}\n\nexport interface I18N {\n availableLanguages: AvailableLanguages[];\n defaultLanguage: AvailableLanguages;\n fallbackLanguage: AvailableLanguages;\n}\n\nclass ConfigService {\n config!: (AppConfig & { buildConfig: BuildConfig }) | null;\n\n fetchConfig(\n buildConfig: BuildConfig | BuildConfigIdp,\n fileName = '/__KAA_CONFIG__.json',\n ) {\n return axios\n .get(fileName)\n .then((response) => {\n if (!response) {\n throw new Error('Fetch kaa config : no response ');\n }\n if (response && !response.data) {\n throw new Error('Fetch kaa config : no data in the response ');\n }\n\n if (Object.keys(response.data).length === 0) {\n throw new Error('Fetch kaa config : no data in the response ');\n }\n\n this.config = Object.freeze({\n ...response.data,\n // Merge dynamically static oidc url\n ...((buildConfig as BuildConfig).oidc\n ? {\n app: {\n ...response.data.app,\n auth: {\n ...response.data.app.auth,\n oidc: {\n ...response.data.app.auth.oidc,\n ...(buildConfig as BuildConfig).oidc,\n },\n },\n },\n }\n : {}),\n ...(buildConfig ? { buildConfig } : {}),\n });\n return this.config;\n })\n .catch((err) => {\n this.config = null;\n throw err;\n });\n }\n}\n\nexport const configService = new ConfigService();\n\nexport const getConfig = () => configService.config;\n","import React from 'react';\nimport {\n SwColumn,\n SwInfoTile,\n SwButton,\n Icon,\n useTooltip,\n SwBadge,\n} from '@kaa/ui-flanders/components';\n\nimport { useTranslation } from 'react-i18next';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\n// @ts-ignore\nimport logoId from '../assets/id-auth.png';\n// @ts-ignore\nimport logoItsme from '../assets/itsme-auth.png';\n// @ts-ignore\nimport logoSms from '../assets/sms-auth.png';\n// @ts-ignore\nimport logoApp from '../assets/totp-auth.png';\nimport { LoginWithItsMeButton } from './LoginWithItsMeButton';\n\nexport enum AuthenticationScheme {\n VTB = 'vtb',\n IDM = 'idm',\n ITSME = 'itsme',\n PARADIGM = 'paradigm',\n}\n\nexport type Provider = {\n authenticationScheme: string;\n displayName: string;\n};\n\ninterface Props {\n provider: Provider;\n showPluxeeLoginOption?: boolean;\n showInfoTooltip?: boolean;\n onLogin: () => void;\n onSwitchToCredentials: () => void;\n}\n\nexport const LoginWithExternalProvider = ({\n provider,\n showPluxeeLoginOption,\n showInfoTooltip,\n onLogin,\n onSwitchToCredentials,\n}: Props) => {\n const { t } = useTranslation();\n\n const tooltipKey =\n i18nKeys.idp.tooltip[\n provider.authenticationScheme as keyof typeof i18nKeys.idp.tooltip\n ];\n\n const tooltipRef = useTooltip({\n value: `${t(tooltipKey?.title)}
    ${t(\n tooltipKey?.description,\n )}
    ${t(\n tooltipKey?.cta,\n )}`,\n placement: 'auto',\n });\n\n const getProviderTitle = () => {\n switch (provider.authenticationScheme) {\n case AuthenticationScheme.ITSME:\n return 'itsme®';\n case AuthenticationScheme.PARADIGM:\n return t(i18nKeys.idp.externalProvider.paradigm);\n default:\n return provider.displayName;\n }\n };\n\n const getProviderLogo = (authenticationScheme: AuthenticationScheme) => {\n if (authenticationScheme === AuthenticationScheme.ITSME) {\n return (\n \n \n \n );\n }\n\n return (\n \n
  • \n \"Itsme\"\n
  • \n
  • \n \"\"\n
  • \n
  • \n \"\"\n
  • \n
  • \n \"\"\n
  • \n \n );\n };\n\n const getProviderCta = (authenticationScheme: AuthenticationScheme) => {\n if (authenticationScheme === AuthenticationScheme.ITSME) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n \n {t(i18nKeys.idp.connectionButton)}\n \n );\n };\n\n return (\n \n \n {showInfoTooltip && tooltipKey && (\n \n )}\n\n {getProviderLogo(provider.authenticationScheme as AuthenticationScheme)}\n {getProviderCta(provider.authenticationScheme as AuthenticationScheme)}\n\n {showPluxeeLoginOption && (\n \n \n {t(i18nKeys.idp.connectWithPluxee)}\n \n \n )}\n \n \n );\n};\n","import { LocationProvider } from '@reach/router';\nimport React, { useRef } from 'react';\nimport { sentPageViewEvent } from '../../../customers/utils/google-analytics';\n\nexport const PageViewGTMListener = () => {\n const previous = useRef(null);\n\n return (\n \n {({ location }) => {\n if (previous.current !== location.pathname) {\n previous.current = location.pathname;\n sentPageViewEvent({\n ...location,\n modDefaultPathname: false,\n status: 'logged out',\n });\n }\n return null;\n }}\n \n );\n};\n","import fr from './fr.json';\nimport en from './en.json';\nimport nl from './nl.json';\nimport de from './de.json';\n\nexport const locales = { fr, en, nl, de };\n","/* This file is auto-generated, manual edits in this file will be overwritten! */\n\nexport const i18nKeys = {\n MailSubject: {\n RecoveryPassword: 'MailSubject.RecoveryPassword',\n },\n a11y: {\n ariaLabel: {\n menu: 'a11y.ariaLabel.menu',\n },\n },\n bl: {\n brps: {\n label: 'bl.brps.label',\n url: 'bl.brps.url',\n },\n general: {\n serviceVouchers: {\n customerWebsite: {\n url: 'bl.general.serviceVouchers.customerWebsite.url',\n },\n providerWebsite: {\n url: 'bl.general.serviceVouchers.providerWebsite.url',\n },\n },\n url: {\n complaint: 'bl.general.url.complaint',\n contactAProvider: 'bl.general.url.contactAProvider',\n contactUs: 'bl.general.url.contactUs',\n cookies: 'bl.general.url.cookies',\n faq: 'bl.general.url.faq',\n news: 'bl.general.url.news',\n privacyPolicy: 'bl.general.url.privacyPolicy',\n question: 'bl.general.url.question',\n termsAndConditions: 'bl.general.url.termsAndConditions',\n },\n },\n siteBar: {\n title: 'bl.siteBar.title',\n },\n },\n brussels: {\n footer: {\n title: 'brussels.footer.title',\n },\n header: {\n regionName: 'brussels.header.regionName',\n },\n },\n error: {\n idpConfigErrorDescription: 'error.idpConfigErrorDescription',\n idpConfigErrorDescriptionProvider:\n 'error.idpConfigErrorDescriptionProvider',\n idpConfigErrorTitle: 'error.idpConfigErrorTitle',\n loginErrorAccountBlocked: 'error.loginErrorAccountBlocked',\n loginErrorAccountDisabled: 'error.loginErrorAccountDisabled',\n loginErrorInvalidUsernamePassword:\n 'error.loginErrorInvalidUsernamePassword',\n loginErrorNotAllowed: 'error.loginErrorNotAllowed',\n loginErrorTitle: 'error.loginErrorTitle',\n loginErrorUserNotFound: 'error.loginErrorUserNotFound',\n loginErrorWrongTenant: 'error.loginErrorWrongTenant',\n loginErrorUserNotBelgian: 'error.loginErrorUserNotBelgian',\n loginUnknownError: 'error.loginUnknownError',\n logoutErrorDescription: 'error.logoutErrorDescription',\n logoutErrorTitle: 'error.logoutErrorTitle',\n sessionExpiredFor2FADescription: 'error.sessionExpiredFor2FADescription',\n sessionExpiredFor2FATitle: 'error.sessionExpiredFor2FATitle',\n validationCodeFor2FADescription: 'error.validationCodeFor2FADescription',\n validationCodeFor2FATitle: 'error.validationCodeFor2FATitle',\n workerLoginErrorAccountBlocked: 'error.workerLoginErrorAccountBlocked',\n workerLoginErrorAccountDisabled: 'error.workerLoginErrorAccountDisabled',\n },\n errors: {\n form: {\n email: 'errors.form.email',\n maxLength: 'errors.form.maxLength',\n maxValue: 'errors.form.maxValue',\n minLength: 'errors.form.minLength',\n minValue: 'errors.form.minValue',\n password: 'errors.form.password',\n required: 'errors.form.required',\n },\n },\n flanders: {\n footer: {\n overRegionWebsite: 'flanders.footer.overRegionWebsite',\n title: 'flanders.footer.title',\n },\n header: {\n regionName: 'flanders.header.regionName',\n },\n },\n footer: {\n accessibility: 'footer.accessibility',\n appnameTitle: 'footer.appnameTitle',\n cookieManagement: 'footer.cookieManagement',\n copyright: 'footer.copyright',\n cta: {\n complaint: {\n label: 'footer.cta.complaint.label',\n url: 'footer.cta.complaint.url',\n },\n question: {\n label: 'footer.cta.question.label',\n url: 'footer.cta.question.url',\n },\n },\n disclaimer: 'footer.disclaimer',\n nav: {\n cookies: {\n label: 'footer.nav.cookies.label',\n },\n news: {\n label: 'footer.nav.news.label',\n },\n pp: {\n label: 'footer.nav.pp.label',\n },\n tc: {\n label: 'footer.nav.tc.label',\n },\n },\n publishedBy: 'footer.publishedBy',\n subtitle: 'footer.subtitle',\n title: 'footer.title',\n },\n general: {\n daysCount: 'general.daysCount',\n goToNextPagePagination: 'general.goToNextPagePagination',\n goToPreviousPagePagination: 'general.goToPreviousPagePagination',\n monthCount: 'general.monthCount',\n nextPagination: 'general.nextPagination',\n ofPagination: 'general.ofPagination',\n pageLoading: 'general.pageLoading',\n showMorePagination: 'general.showMorePagination',\n showPassword: 'general.showPassword',\n },\n header: {\n appNameTitle: 'header.appNameTitle',\n appNameTitleWithRegion: 'header.appNameTitleWithRegion',\n redirectToRegionHomePage: 'header.redirectToRegionHomePage',\n support: {\n contactList: {\n callus: {\n title: 'header.support.contactList.callus.title',\n },\n contactus: {\n description: 'header.support.contactList.contactus.description',\n },\n findProvider: {\n title: 'header.support.contactList.findProvider.title',\n },\n pass: {\n title: 'header.support.contactList.pass.title',\n },\n },\n subtitle: 'header.support.subtitle',\n title: 'header.support.title',\n },\n },\n idm: {\n form: {\n PostalCode: 'idm.form.PostalCode',\n companyNameOrNumber: 'idm.form.companyNameOrNumber',\n cta: 'idm.form.cta',\n reset: 'idm.form.reset',\n title: 'idm.form.title',\n },\n headquarter: {\n title: 'idm.headquarter.title',\n },\n introduction: 'idm.introduction',\n results: {\n alert: {\n noEnterprisesAssigned: {\n description: 'idm.results.alert.noEnterprisesAssigned.description',\n title: 'idm.results.alert.noEnterprisesAssigned.title',\n },\n },\n card: {\n addFavorite: 'idm.results.card.addFavorite',\n cta: 'idm.results.card.cta',\n removeFavorite: 'idm.results.card.removeFavorite',\n },\n cta: {\n less: 'idm.results.cta.less',\n more: 'idm.results.cta.more',\n },\n intro: 'idm.results.intro',\n noResults: 'idm.results.noResults',\n title: 'idm.results.title',\n },\n timer: {\n active: 'idm.timer.active',\n expired: 'idm.timer.expired',\n },\n title: 'idm.title',\n },\n idp: {\n EmailField: 'idp.EmailField',\n EmailadressField: 'idp.EmailadressField',\n introduction: {\n BE_BRU: 'idp.introduction.BE_BRU',\n BE_WAL: 'idp.introduction.BE_WAL',\n BE_VLG: 'idp.introduction.BE_VLG',\n },\n LogWithBurgerProfileButton: 'idp.LogWithBurgerProfileButton',\n LogWithBurgerProfileTitle: 'idp.LogWithBurgerProfileTitle',\n LogWithBurgerProfileTitleProvider: 'idp.LogWithBurgerProfileTitleProvider',\n LogWithEmailPasswordTitle: 'idp.LogWithEmailPasswordTitle',\n MainTitle: 'idp.MainTitle',\n MainTitleProvider: 'idp.MainTitleProvider',\n PasswordField: 'idp.PasswordField',\n legacyLoginWarning: {\n itsme: 'idp.legacyLoginWarning.itsme',\n paradigm: 'idp.legacyLoginWarning.paradigm',\n },\n authorizationNumber: 'idp.authorizationNumber',\n authorizationNumberProvider: 'idp.authorizationNumberProvider',\n backButton: 'idp.backButton',\n changePassword: 'idp.changePassword',\n confirmNewPassword: 'idp.confirmNewPassword',\n connectionButton: 'idp.connectionButton',\n connectWithPluxee: 'idp.connectWithPluxee',\n cta: {\n connectToApplication: 'idp.cta.connectToApplication',\n forgotPassword: 'idp.cta.forgotPassword',\n loginWithProvider: {\n itsme: 'idp.cta.loginWithProvider.itsme',\n paradigm: 'idp.cta.loginWithProvider.paradigm',\n },\n },\n tooltip: {\n itsme: {\n title: 'idp.tooltip.itsme.title',\n description: 'idp.tooltip.itsme.description',\n cta: 'idp.tooltip.itsme.cta',\n ctaLink: 'idp.tooltip.itsme.ctaLink',\n },\n },\n externalProvider: {\n paradigm: 'idp.externalProvider.paradigm',\n },\n equalPassword: 'idp.equalPassword',\n forgotPassword: {\n cta: {\n resetPassword: 'idp.forgotPassword.cta.resetPassword',\n },\n description: 'idp.forgotPassword.description',\n message: 'idp.forgotPassword.message',\n radioBtn: {\n resetPassword: 'idp.forgotPassword.radioBtn.resetPassword',\n sendLoginCredentials:\n 'idp.forgotPassword.radioBtn.sendLoginCredentials',\n },\n title: 'idp.forgotPassword.title',\n },\n forgotPasswordLink: 'idp.forgotPasswordLink',\n logoutMessage: 'idp.logoutMessage',\n newPassword: 'idp.newPassword',\n noAccountYet: 'idp.noAccountYet',\n passwordChange: 'idp.passwordChange',\n passwordChangeErrorMessage: 'idp.passwordChangeErrorMessage',\n passwordChangeSuccessMessage: 'idp.passwordChangeSuccessMessage',\n passwordRecovery: 'idp.passwordRecovery',\n passwordRecoveryErrorMessage: 'idp.passwordRecoveryErrorMessage',\n passwordRecoveryIntro: 'idp.passwordRecoveryIntro',\n passwordRecoveryIntroProvider: 'idp.passwordRecoveryIntroProvider',\n passwordRecoveryMatchingError: 'idp.passwordRecoveryMatchingError',\n passwordRecoverySuccessMessage: 'idp.passwordRecoverySuccessMessage',\n passwordRule1: 'idp.passwordRule1',\n passwordRule2: 'idp.passwordRule2',\n passwordRule3: 'idp.passwordRule3',\n passwordRule4: 'idp.passwordRule4',\n passwordRulesIntro: 'idp.passwordRulesIntro',\n registerHereLink: 'idp.registerHereLink',\n sendRequest: 'idp.sendRequest',\n tokenInvalidMessage: 'idp.tokenInvalidMessage',\n userNameField: 'idp.userNameField',\n worker: {\n MainSubTitle: 'idp.worker.MainSubTitle',\n MainTitle: 'idp.worker.MainTitle',\n authenticationCodeExplanationLabel:\n 'idp.worker.authenticationCodeExplanationLabel',\n authenticationCodeLabel: 'idp.worker.authenticationCodeLabel',\n authenticationCodeTitle: 'idp.worker.authenticationCodeTitle',\n logWithEmailPasswordSharingInfoWarning:\n 'idp.worker.logWithEmailPasswordSharingInfoWarning',\n },\n },\n navigation: {\n title: 'navigation.title',\n },\n pageTitle: {\n general: 'pageTitle.general',\n login: 'pageTitle.login',\n passwordChange: 'pageTitle.passwordChange',\n passwordRecovery: 'pageTitle.passwordRecovery',\n },\n vl: {\n general: {\n serviceVouchers: {\n customerWebsite: {\n url: 'vl.general.serviceVouchers.customerWebsite.url',\n },\n providerWebsite: {\n url: 'vl.general.serviceVouchers.providerWebsite.url',\n },\n },\n url: {\n complaint: 'vl.general.url.complaint',\n contactAProvider: 'vl.general.url.contactAProvider',\n contactUs: 'vl.general.url.contactUs',\n cookies: 'vl.general.url.cookies',\n faq: 'vl.general.url.faq',\n news: 'vl.general.url.news',\n privacyPolicy: 'vl.general.url.privacyPolicy',\n question: 'vl.general.url.question',\n termsAndConditions: 'vl.general.url.termsAndConditions',\n },\n },\n },\n wl: {\n brps: {\n label: 'wl.brps.label',\n url: 'wl.brps.url',\n },\n general: {\n serviceVouchers: {\n customerWebsite: {\n url: 'wl.general.serviceVouchers.customerWebsite.url',\n },\n providerWebsite: {\n url: 'wl.general.serviceVouchers.providerWebsite.url',\n },\n },\n url: {\n complaint: 'wl.general.url.complaint',\n contactAProvider: 'wl.general.url.contactAProvider',\n contactUs: 'wl.general.url.contactUs',\n cookies: 'wl.general.url.cookies',\n faq: 'wl.general.url.faq',\n news: 'wl.general.url.news',\n privacyPolicy: 'wl.general.url.privacyPolicy',\n question: 'wl.general.url.question',\n termsAndConditions: 'wl.general.url.termsAndConditions',\n },\n },\n siteBar: {\n title: 'wl.siteBar.title',\n },\n },\n};\n","import React from 'react';\nimport { Formik, Field } from 'formik';\nimport {\n SwInfoTile,\n SwForm,\n SwFormGrid,\n SwFormColumn,\n SwActionGroup,\n SwButton,\n SwLink,\n SwInputTextField,\n SwInputPasswordField,\n SwColumn,\n} from '@kaa/ui-flanders/components';\nimport { useTranslation } from 'react-i18next';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\n\ntype Credentials = {\n username: string;\n password: string;\n rememberMe: boolean;\n};\n\ntype LoginWithCredentialsProps = {\n idpConfig: any;\n loginLoading: boolean;\n forgotPasswordUrl?: string;\n lokaliseKey: string;\n onLogin: (credentials: Credentials) => void;\n};\n\nexport const LoginWithCredentials: React.FC = ({\n idpConfig,\n loginLoading,\n forgotPasswordUrl,\n lokaliseKey,\n onLogin,\n}) => {\n const { t } = useTranslation();\n\n return (\n \n \n {\n return (\n \n \n \n\n \n \n \n \n \n {t(i18nKeys.idp.connectionButton)}\n \n \n {forgotPasswordUrl && (\n \n {t(i18nKeys.idp.cta.forgotPassword)}\n \n )}\n \n \n \n );\n }}\n />\n \n \n );\n};\n","import React from 'react';\nimport './itsme.css';\nimport { useTranslation } from 'react-i18next';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\n\nconst LOGO_SIZE = 32;\n\ninterface Props {\n onClick: () => void;\n}\n\nexport const LoginWithItsMeButton = ({ onClick }: Props) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n","export enum LokaliseKeys {\n BRUSSELS = '2D040DCF-F1A7-457C-B6BA-47F81ECD4A40',\n FLANDERS = '7943467B-05F4-43B0-8E8B-779B8A76191A',\n WALLONIA = 'AECFCFE1-AAC4-4E5B-AE53-2F85EFB7C2E2',\n WORKER = '4D471EBF-D95D-4F1E-8632-9A99E96C5C0A',\n}\n","export enum OS {\n ANDROID = 'android',\n IOS = 'ios',\n}\n","export enum StorageKeys {\n LAST_SELECTED_CUSTOMER_ID = 'last_selected_customer_id',\n LAST_SELECTED_LANGUAGE = 'last_selected_language',\n LAST_SEEN_TAXATION_YEAR = 'last_seen_taxation_year',\n ORDER_PREVIOUS_PAYMENT_TYPE = 'order_previous_payment_type',\n DISPLAY_LANGUAGE = 'display_language',\n ENTERPRISES = 'enterprises',\n NOTIFICATION_COUNT = 'notification_count',\n PENDING_WORKS = 'PENDING_WORKS',\n CONFIG = 'CONFIG',\n LAST_USED_WORKER_DATA = 'LAST_USED_WORKER_DATA',\n LAST_ENCODED_WORK = 'LAST_ENCODED_WORK',\n LAST_SELECTED_PRESTATIONS_TAB = 'last_selected_prestations_tab',\n MANUAL_EL_REMITTANCE_PREFERENCE = 'manual_el_remittance_preference',\n}\n","export enum Environments {\n DEV = 'dev',\n TEST = 'test',\n ACC = 'acc',\n PROD = 'prod',\n}\n","import { RegionCode } from '@kaa/api/idp';\nimport { ValueOf } from '@kaa/common/types';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\n\nexport const IDP_IFRAME_DATA = 'sw.idp.data';\n\nexport const REGION_COMPLAINT_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.complaint,\n [RegionCode.BRU]: i18nKeys.bl.general.url.complaint,\n [RegionCode.WAL]: i18nKeys.wl.general.url.complaint,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_CONDITIONS_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.termsAndConditions,\n [RegionCode.BRU]: i18nKeys.bl.general.url.termsAndConditions,\n [RegionCode.WAL]: i18nKeys.wl.general.url.termsAndConditions,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_COOKIES_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.cookies,\n [RegionCode.BRU]: i18nKeys.bl.general.url.cookies,\n [RegionCode.WAL]: i18nKeys.wl.general.url.cookies,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_NEWS_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.news,\n [RegionCode.BRU]: i18nKeys.bl.general.url.news,\n [RegionCode.WAL]: i18nKeys.wl.general.url.news,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_PRIVACY_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.privacyPolicy,\n [RegionCode.BRU]: i18nKeys.bl.general.url.privacyPolicy,\n [RegionCode.WAL]: i18nKeys.wl.general.url.privacyPolicy,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_QUESTION_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.question,\n [RegionCode.BRU]: i18nKeys.bl.general.url.question,\n [RegionCode.WAL]: i18nKeys.wl.general.url.question,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_CONTACT_A_PROVIDER_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.contactAProvider,\n [RegionCode.BRU]: i18nKeys.bl.general.url.contactAProvider,\n [RegionCode.WAL]: i18nKeys.wl.general.url.contactAProvider,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_CONTACT_US_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.contactUs,\n [RegionCode.BRU]: i18nKeys.bl.general.url.contactUs,\n [RegionCode.WAL]: i18nKeys.wl.general.url.contactUs,\n} as any) as { [key in ValueOf]: string };\n\nexport const REGION_FAQ_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url.faq,\n [RegionCode.BRU]: i18nKeys.bl.general.url.faq,\n [RegionCode.WAL]: i18nKeys.wl.general.url.faq,\n} as any) as { [key in ValueOf]: string };\n\nexport const PASS_URL = ({\n [RegionCode.VLG]: i18nKeys.vl.general.url,\n [RegionCode.BRU]: i18nKeys.bl.general.url,\n [RegionCode.WAL]: i18nKeys.wl.general.url,\n} as any) as { [key in ValueOf]: string };\n","/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { CSSProperties } from 'react';\nimport { RegionCode } from '@kaa/api/idp';\n\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport { Icon, SwAlert, SwColumn } from '@kaa/ui-flanders/components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { REGION_CONTACT_US_URL } from '../../../constants';\n\ninterface LoginErrorAlertProps {\n translationKey: string;\n regionCode: RegionCode;\n style?: CSSProperties;\n}\n\nexport const LoginErrorAlert = ({\n translationKey,\n regionCode,\n style,\n}: LoginErrorAlertProps) => {\n const { t } = useTranslation();\n\n return (\n \n \n ,\n ]}\n />\n \n \n );\n};\n","import React from 'react';\nimport { Icon, SwAlert, SwColumn } from '@kaa/ui-flanders/components';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport { useTranslation } from 'react-i18next';\nimport { AuthenticationScheme } from './LoginWithExternalProvider';\n\ninterface Props {\n authenticationScheme: AuthenticationScheme;\n onBack: () => void;\n}\n\n/**\n * Component to display a warning when the user is trying to login with a Pluxee account instead of external auth, only for Wallonia for now\n */\nexport const CredentialsLoginWarning = ({\n authenticationScheme,\n onBack,\n}: Props) => {\n const { t } = useTranslation();\n\n return (\n \n \n \n \n \n );\n};\n","import { LoginCodeError } from '@kaa/api/idp';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\n\n/**\n * Get the translation key for a login error for IDP login page, when loggin with Pluxee credentials\n * @param loginError - Login error\n * @returns Translation key\n */\nexport const getLoginErrorTranslationKey = (loginError: Error): string => {\n switch (loginError.message) {\n case LoginCodeError.AccountDisabled:\n return i18nKeys.error.workerLoginErrorAccountDisabled;\n case LoginCodeError.AccountLocked:\n return i18nKeys.error.workerLoginErrorAccountBlocked;\n case LoginCodeError.UserNotFound:\n return i18nKeys.error.loginErrorUserNotFound;\n case LoginCodeError.WrongTenant:\n return i18nKeys.error.loginErrorWrongTenant;\n case LoginCodeError.NotAllowed:\n return i18nKeys.error.loginErrorNotAllowed;\n case LoginCodeError.InvalidUsernamePassword:\n case LoginCodeError.MissingUsernamePassword:\n return i18nKeys.error.loginErrorInvalidUsernamePassword;\n default:\n return i18nKeys.error.loginUnknownError;\n }\n};\n","import { getApi, IDPModelTenant, RegionCode } from '@kaa/api/idp';\nimport { useAsync, useAsyncCallback } from '@kaa/common/utils';\nimport useTitle from '@kaa/common/utils/useTitle';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport {\n Icon,\n SwAlert,\n SwColumn,\n SwGrid,\n SwLayout,\n SwLoader,\n SwRegion,\n SwTitle,\n} from '@kaa/ui-flanders/components';\nimport { RouteComponentProps } from '@reach/router';\nimport get from 'lodash.get';\nimport { Settings } from 'luxon';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AvailableLanguages } from '@kaa/common/enums';\nimport { getConfig } from '../../../common/config';\nimport {\n AuthenticationScheme,\n LoginWithExternalProvider,\n LoginErrorAlert,\n LoginWithCredentials,\n CredentialsLoginWarning,\n} from './components';\nimport { getLoginErrorTranslationKey } from '../../utils/getLoginErrorTranslationKey';\n\ntype Credentials = {\n username: string;\n password: string;\n rememberMe: boolean;\n};\n\nexport const LoginScreen = ({\n location,\n forgotPasswordUrl,\n}: RouteComponentProps<{ forgotPasswordUrl?: string }>) => {\n const baseUrl = get(getConfig(), 'app.apiUrl');\n const lokaliseKey = get(getConfig(), 'buildConfig.lokaliseKey');\n const regionCode = get(getConfig(), 'buildConfig.regionCode') as RegionCode;\n const { t, i18n } = useTranslation();\n\n const [isCredentialsLoginSelected, setIsCredentialsLoginSelected] = useState(\n false,\n );\n\n const ref = useRef(null);\n useTitle(`${t(i18nKeys.pageTitle.login)} | ${t(i18nKeys.pageTitle.general)}`);\n\n const {\n value: idpConfig,\n loading: idpConfigLoading,\n error: idpConfigError,\n } = useAsync(async () => {\n if (!location?.search) {\n throw new Error('No location search');\n }\n\n const { data } = await getApi({\n baseUrl,\n }).getModel(location.search);\n\n return data;\n }, [location, baseUrl]);\n\n const [\n { loading: loginLoading, error: loginError },\n login,\n ] = useAsyncCallback(\n async (credentials: Credentials) => {\n if (!idpConfig) {\n throw new Error('No IDP Config');\n }\n\n try {\n const response = await getApi({\n baseUrl,\n }).login({\n ...credentials,\n username: credentials.username.trim(),\n returnUrl: idpConfig.returnUrl,\n });\n\n if (!response) {\n throw new Error('No response');\n }\n\n window.location.href = response.data.redirectUrl as string;\n return;\n } catch (e) {\n /* @ts-expect-error Object is of type 'unknown' */\n throw new Error(e?.error ?? 'Unknown error');\n }\n },\n [idpConfig, baseUrl],\n );\n\n const externalProviders = useMemo(() => {\n return idpConfig?.visibleExternalProviders || [];\n }, [idpConfig]);\n\n // Change language if the uiLocale is different from the default language\n useEffect(() => {\n const uiLocale = idpConfig?.uiLocale;\n\n if (\n uiLocale &&\n getConfig()?.buildConfig?.i18n?.defaultLanguage !== uiLocale\n ) {\n i18n.changeLanguage(uiLocale as AvailableLanguages);\n Settings.defaultLocale = uiLocale;\n }\n }, [idpConfig?.uiLocale]);\n\n // Auto redirect to external provider if isExternalLoginOnly === true\n useEffect(() => {\n if (!idpConfigLoading && idpConfig && idpConfig.isExternalLoginOnly) {\n const provider = externalProviders[0];\n window.location.href = getRedirectUrlExternalProvider(\n provider.authenticationScheme,\n idpConfig.returnUrl,\n );\n }\n }, [idpConfig, idpConfigLoading]);\n\n const loginWithExternalProvider = (authenticationScheme: string) => {\n if (!idpConfig) throw new Error('No IDP Config');\n\n window.location.href = getRedirectUrlExternalProvider(\n authenticationScheme,\n idpConfig.returnUrl,\n );\n };\n\n const shouldDisplayCredentialsLogin = useMemo(() => {\n if (!idpConfig?.enableLocalLogin) return false;\n\n const [firstProvider] = externalProviders;\n const isSpecialProvider =\n firstProvider && checkIfSpecialProvider(firstProvider);\n\n // For special providers, only show credentials login when explicitly selected\n if (isSpecialProvider) return isCredentialsLoginSelected;\n\n return true;\n }, [idpConfig, regionCode, isCredentialsLoginSelected]);\n\n if (!idpConfigLoading && idpConfig && idpConfig.isExternalLoginOnly) {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n /**\n * Map to changing key for provider or customer\n */\n const defaultI18nKeys = {\n mainTitle: i18nKeys.idp.MainTitle,\n idpConfigErrorDescription: i18nKeys.error.idpConfigErrorDescription,\n };\n\n const i18nKeysMapByTenant = {\n [IDPModelTenant.Customer]: defaultI18nKeys,\n [IDPModelTenant.Provider]: {\n mainTitle: i18nKeys.idp.MainTitleProvider,\n idpConfigErrorDescription:\n i18nKeys.error.idpConfigErrorDescriptionProvider,\n },\n };\n\n const i18nKeysMap =\n i18nKeysMapByTenant[idpConfig?.tenant as IDPModelTenant] || defaultI18nKeys;\n\n const shouldDisplayTitle =\n idpConfig && !idpConfigLoading && !idpConfig.isExternalLoginOnly;\n\n const shouldDisplayIntroduction =\n idpConfig && !!externalProviders.length && !isCredentialsLoginSelected;\n\n return (\n \n \n \n {idpConfigLoading ? (\n \n \n \n ) : null}\n\n \n {shouldDisplayTitle ? (\n \n {t(i18nKeysMap.mainTitle)}\n \n ) : null}\n\n {shouldDisplayIntroduction ? (\n \n {t(i18nKeys.idp.introduction[regionCode])}\n \n ) : null}\n \n\n {!idpConfigLoading && idpConfigError ? (\n \n \n \n ) : null}\n\n {!idpConfigLoading && !idpConfigError && idpConfig ? (\n \n \n {loginError && (\n \n )}\n\n \n \n {isCredentialsLoginSelected ? (\n setIsCredentialsLoginSelected(false)}\n />\n ) : (\n externalProviders.map((provider) => (\n \n loginWithExternalProvider(\n provider.authenticationScheme,\n )\n }\n showPluxeeLoginOption={\n externalProviders.length === 1 &&\n checkIfSpecialProvider(provider)\n }\n showInfoTooltip={\n externalProviders.length === 1 &&\n checkIfSpecialProvider(provider)\n }\n onSwitchToCredentials={() =>\n setIsCredentialsLoginSelected(true)\n }\n />\n ))\n )}\n\n {shouldDisplayCredentialsLogin && (\n \n )}\n \n \n \n \n ) : null}\n \n \n \n );\n};\n\n// ----------------- Utils ----------------- //\n\n// Some providers are treated a bit differently at the moment (business decision),\n// for those providers, we don't display the option to login with credentials by default\nconst specialTreatedProviders = [\n AuthenticationScheme.ITSME,\n AuthenticationScheme.PARADIGM,\n];\n\nconst checkIfSpecialProvider = (provider: {\n authenticationScheme: string;\n displayName: string;\n}): boolean => {\n return specialTreatedProviders.includes(\n provider.authenticationScheme as AuthenticationScheme,\n );\n};\n\nconst getRedirectUrlExternalProvider = (\n authenticationScheme: string,\n returnUrl: string,\n): string => {\n return `external/challenge?provider=${authenticationScheme}&returnUrl=${encodeURIComponent(\n returnUrl,\n )}`;\n};\n","import * as React from 'react';\nimport { Settings } from 'luxon';\nimport { useTranslation } from 'react-i18next';\nimport { AvailableLanguages } from '@kaa/common/enums';\n\nexport const useUrlLocale = () => {\n const { i18n } = useTranslation();\n const uiLocale = new URLSearchParams(window.location.search).get('uiLocale');\n\n React.useEffect(() => {\n if (uiLocale && i18n.language !== uiLocale) {\n i18n.changeLanguage(uiLocale as AvailableLanguages);\n Settings.defaultLocale = uiLocale;\n }\n }, [uiLocale]);\n};\n","import * as React from 'react';\nimport { Field, Formik } from 'formik';\nimport { useTranslation } from 'react-i18next';\nimport { RouteComponentProps, navigate } from '@reach/router';\nimport {\n Icon,\n SwActionGroup,\n SwAlert,\n SwButton,\n SwColumn,\n SwForm,\n SwFormColumn,\n SwFormGrid,\n SwGrid,\n SwInfoTile,\n SwInputTextField,\n SwLayout,\n SwRegion,\n SwTitle,\n} from '@kaa/ui-flanders/components';\nimport useTitle from '@kaa/common/utils/useTitle';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport { email, required, createValidator } from '@kaa/common/validation';\nimport { getApi } from '@kaa/api/idp';\nimport { useAsyncCallback } from '@kaa/common/utils';\nimport { RecoveryCredentials } from '@kaa/api/idp/model/recoveryCredentials';\nimport get from 'lodash.get';\nimport { getConfig } from '../../../common/config';\nimport { useUrlLocale } from '../../utils/useUrlLocale';\n\ntype Tenant = 'customer' | 'provider';\n\nexport const PasswordRecoveryScreen = (\n props: RouteComponentProps & { lokaliseKey: string },\n) => {\n const { t, i18n } = useTranslation();\n\n useTitle(\n `${t(i18nKeys.pageTitle.passwordRecovery)} | ${t(\n i18nKeys.pageTitle.general,\n )}`,\n );\n useUrlLocale();\n const { location, lokaliseKey } = props;\n const searchParams = new URLSearchParams(location?.search);\n const tenant = searchParams.get('tenant') as Tenant;\n\n const [success, setSuccess] = React.useState(false);\n const validate = createValidator({\n email: [required, email],\n authorisationId: [required],\n });\n\n const baseUrl = get(getConfig(), 'app.apiUrl');\n const [\n { loading: passwordRecoveryLoading, error: passwordRecoveryError },\n sendPasswordRecoveryRequest,\n ] = useAsyncCallback(\n async (recoveryCredentials: RecoveryCredentials) => {\n if (tenant && lokaliseKey) {\n try {\n const response = await getApi({ baseUrl }).recoverPassword({\n ...recoveryCredentials,\n tenant,\n localizeKey: lokaliseKey,\n uiLocale: i18n.language,\n });\n if (response) {\n setSuccess(true);\n return;\n }\n } catch (e) {\n /* @ts-expect-error Object is of type 'unknown' */\n throw new Error(e?.error.error);\n }\n }\n },\n [baseUrl],\n );\n\n if (!tenant || !lokaliseKey) {\n return (\n \n \n \n \n \n {t(i18nKeys.idp.passwordRecovery)}\n \n \n \n \n {t(i18nKeys.error.idpConfigErrorTitle)}\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n \n \n {t(i18nKeys.idp.passwordRecovery)}\n \n \n\n {success ? (\n \n \n {t(i18nKeys.idp.passwordRecoverySuccessMessage)}\n \n \n ) : (\n \n \n {\n return (\n \n \n \n \n {passwordRecoveryError ? (\n \n \n {passwordRecoveryError.message === 'RESET_ERROR'\n ? t(\n i18nKeys.idp\n .passwordRecoveryMatchingError,\n )\n : t(\n i18nKeys.idp.passwordRecoveryErrorMessage,\n )}\n \n \n ) : (\n ''\n )}\n \n \n {history.length > 1 ? (\n navigate(-1)}\n >\n {t(i18nKeys.idp.backButton)}\n \n ) : (\n \n )}\n\n \n {t(i18nKeys.idp.sendRequest)}\n \n \n \n \n \n );\n }}\n />\n \n \n )}\n \n \n \n );\n};\n","import * as React from 'react';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport { RegionCode } from '@kaa/api/idp';\n\nexport const convertSecondsToTimer = (s: number) => {\n let duration = s;\n const minutes = (duration - (duration %= 60)) / 60;\n const seconds = duration > 9 ? duration : `0${duration}`;\n return `${minutes}:${seconds}`;\n};\n\nexport const useTimer = (initialTimer: number) => {\n const [timer, setTimer] = React.useState(initialTimer);\n React.useEffect(() => {\n let interval = 0;\n\n if (timer > 0) {\n interval = setInterval(() => {\n setTimer((oldTimer) => oldTimer - 1);\n }, 1000);\n }\n\n return () => clearInterval(interval);\n }, [initialTimer]);\n return convertSecondsToTimer(timer);\n};\n\nexport const getRestOfTimeInSeconds = (expiryTime: number) => {\n return Math.round((expiryTime - Date.now()) / 1000);\n};\n\nexport const SERVICE_VOUCHERS_WEBSITE_LINKS = ({\n [RegionCode.VLG]: i18nKeys.vl.general.serviceVouchers.customerWebsite.url,\n [RegionCode.BRU]: i18nKeys.bl.general.serviceVouchers.customerWebsite.url,\n [RegionCode.WAL]: i18nKeys.wl.general.serviceVouchers.customerWebsite.url,\n} as any) as { [key in RegionCode]: string };\n\nexport const PROVIDERS_SERVICE_VOUCHERS_WEBSITE_LINKS = ({\n [RegionCode.VLG]: i18nKeys.vl.general.serviceVouchers.providerWebsite.url,\n [RegionCode.BRU]: i18nKeys.bl.general.serviceVouchers.providerWebsite.url,\n [RegionCode.WAL]: i18nKeys.wl.general.serviceVouchers.providerWebsite.url,\n} as any) as { [key in RegionCode]: string };\n\nexport const SERVICE_VOUCHERS_WEBSITE = {\n customer: SERVICE_VOUCHERS_WEBSITE_LINKS,\n provider: PROVIDERS_SERVICE_VOUCHERS_WEBSITE_LINKS,\n};\n","import * as React from 'react';\nimport { RouteComponentProps } from '@reach/router';\nimport { Field, Formik } from 'formik';\nimport { useTranslation } from 'react-i18next';\nimport useTitle from '@kaa/common/utils/useTitle';\nimport { useAsyncCallback } from '@kaa/common/utils';\nimport get from 'lodash.get';\nimport {\n Icon,\n SwActionGroup,\n SwAlert,\n SwButton,\n SwColumn,\n SwForm,\n SwFormColumn,\n SwFormGrid,\n SwGrid,\n SwInfoTile,\n SwInputPasswordField,\n SwLayout,\n SwRegion,\n SwTitle,\n} from '@kaa/ui-flanders/components';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport {\n password,\n required,\n createValidator,\n equalToField,\n} from '@kaa/common/validation';\nimport { getApi, RegionCode } from '@kaa/api/idp';\nimport { getConfig } from '../../../common/config';\nimport {\n getRestOfTimeInSeconds,\n SERVICE_VOUCHERS_WEBSITE,\n useTimer,\n} from './utils';\nimport { useUrlLocale } from '../../utils/useUrlLocale';\n\nexport const PasswordChangeScreen = (props: RouteComponentProps) => {\n const { t } = useTranslation();\n\n useTitle(\n `${t(i18nKeys.pageTitle.passwordChange)} | ${t(\n i18nKeys.pageTitle.general,\n )}`,\n );\n useUrlLocale();\n\n const { location } = props;\n const searchParams = new URLSearchParams(location?.search);\n const expiryTime = searchParams.get('expiryTime')\n ? Number(searchParams.get('expiryTime'))\n : 0;\n const timer = useTimer(getRestOfTimeInSeconds(expiryTime));\n const [error, setError] = React.useState(false);\n React.useEffect(() => {\n if (!expiryTime) {\n setError(true);\n }\n });\n\n const validate = createValidator({\n password: [required, password],\n passwordConfirmation: [\n required,\n equalToField('password', {\n defaultMessage: `Must be equal to ${t(i18nKeys.idp.newPassword)}`,\n id: i18nKeys.idp.equalPassword,\n values: {\n value: t(i18nKeys.idp.newPassword),\n },\n }),\n ],\n });\n const baseUrl = get(getConfig(), 'app.apiUrl');\n const regionCode = get(getConfig(), 'buildConfig.regionCode') as RegionCode;\n const tenant = searchParams.get('tenant') as 'customer' | 'provider';\n const [success, setSuccess] = React.useState(false);\n const [\n { loading: passwordChangeLoading, error: passwordChangeError },\n sendPasswordChangeRequest,\n ] = useAsyncCallback(\n async ({ password: passwordKey }) => {\n try {\n const response = await getApi({ baseUrl }).changePassword({\n newPassword: passwordKey,\n });\n if (response) {\n setSuccess(true);\n if (SERVICE_VOUCHERS_WEBSITE[tenant]) {\n setTimeout(() => {\n window.location.href = t(\n SERVICE_VOUCHERS_WEBSITE[tenant][regionCode],\n );\n }, 3000);\n }\n return;\n }\n } catch (e) {\n /* @ts-expect-error Object is of type 'unknown' */\n throw new Error(e?.error);\n }\n },\n [baseUrl],\n );\n\n if (getRestOfTimeInSeconds(expiryTime) <= 0 || error) {\n return (\n \n \n \n \n \n {t(i18nKeys.idp.passwordChange)}\n \n \n \n \n {t(i18nKeys.idp.tokenInvalidMessage)}\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n \n \n {t(i18nKeys.idp.passwordChange)}\n \n \n {success ? (\n \n \n {t(i18nKeys.idp.passwordChangeSuccessMessage)}\n \n \n ) : (\n \n \n {\n return (\n \n \n \n \n \n {t(i18nKeys.idp.passwordRulesIntro)}\n
      \n
    • {t(i18nKeys.idp.passwordRule1)}
    • \n
    • {t(i18nKeys.idp.passwordRule2)}
    • \n
    • {t(i18nKeys.idp.passwordRule3)}
    • \n
    • {t(i18nKeys.idp.passwordRule4)}
    • \n
    \n
    \n \n {timer}\n
    \n
    \n \n \n e.preventDefault()}\n />\n {passwordChangeError ? (\n \n \n {t(i18nKeys.idp.passwordChangeErrorMessage)}\n \n \n ) : (\n ''\n )}\n \n \n \n {t(i18nKeys.idp.changePassword)}\n \n \n \n \n \n );\n }}\n />\n \n \n )}\n \n
    \n
    \n );\n};\n","import { RegionCode } from '@kaa/api/idp';\nimport { AvailableLanguages, LokaliseKeys } from '@kaa/common/enums';\nimport { BuildConfigIdp } from '@kaa/core-app/common/config';\n\nexport const buildConfig: BuildConfigIdp = {\n regionCode: RegionCode.BRU,\n lokaliseKey: LokaliseKeys.BRUSSELS,\n origin: window.origin,\n i18n: {\n availableLanguages: [AvailableLanguages.DUTCH, AvailableLanguages.FRENCH],\n defaultLanguage: AvailableLanguages.FRENCH,\n fallbackLanguage: AvailableLanguages.FRENCH,\n },\n};\n","import { AvailableLanguages } from '@kaa/common/enums/AvailableLanguages';\nimport {\n EventAction,\n EventCategory,\n sendCustomInteractionToGTM,\n} from '@kaa/core-app/customers/utils/google-analytics'; // TODO MOVE ME TO COMMON\nimport {\n SwButton,\n SwColumn,\n SwGrid,\n SwLayout,\n SwLink,\n} from '@kaa/ui-flanders/components';\nimport React from 'react';\nimport { FooterProps } from '../../../types/footer';\nimport anysurferLogo from './assets/anysurfer.svg';\nimport brusselsLogoEn from './assets/logo--en.svg';\nimport brusselsLogoFr from './assets/logo--fr.svg';\nimport brusselsLogoNl from './assets/logo--nl.svg';\nimport sprbLogo from './assets/sprb.svg';\nimport './Footer.style.scss';\n\nexport type FooterBrusselsProps = FooterProps & {\n language?: AvailableLanguages;\n languages?: AvailableLanguages[];\n changeLanguage?: (lng: AvailableLanguages) => void;\n};\n\nconst getLogoForLanguage = (lang = AvailableLanguages.FRENCH) => {\n switch (lang) {\n case AvailableLanguages.ENGLISH:\n return brusselsLogoEn;\n case AvailableLanguages.DUTCH:\n return brusselsLogoNl;\n default:\n return brusselsLogoFr;\n }\n};\n\nexport const FooterBrussels = ({\n title,\n url,\n copyright,\n topLinks,\n bottomLinks,\n language,\n languages,\n changeLanguage,\n anysurfer,\n}: FooterBrusselsProps) => {\n return (\n
    \n
    \n \n \n \n
    \n {!!url && (\n
    \n \n sendCustomInteractionToGTM(\n EventCategory.FOOTER,\n EventAction.CLICK,\n url,\n )\n }\n >\n \n \n
    \n )}\n {topLinks && !!topLinks.length && (\n
      \n {topLinks.map(({ label, url, ...rest }) => (\n
    • \n \n sendCustomInteractionToGTM(\n EventCategory.FOOTER,\n EventAction.CLICK,\n url,\n )\n }\n >\n {label}\n \n
    • \n ))}\n
    \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n

    {copyright}

    \n {bottomLinks && !!bottomLinks.length && (\n
      \n {bottomLinks.map(({ label, url, ...rest }) => (\n
    • \n \n sendCustomInteractionToGTM(\n EventCategory.FOOTER,\n EventAction.CLICK,\n url,\n )\n }\n >\n {label}\n \n
    • \n ))}\n
    \n )}\n {!!changeLanguage &&\n !!language &&\n !!languages &&\n !!languages &&\n !!languages.length && (\n
      \n {languages.map((lng: AvailableLanguages) => (\n
    • \n changeLanguage(lng)}\n className=\"list__link current-language\"\n >\n {lng.toUpperCase()}\n \n
    • \n ))}\n
    \n )}\n
    \n {!!anysurfer && (\n
    \n
      \n
    • \n \n \n \n
    • \n
    \n
    \n )}\n {!!url && (\n
    \n
      \n
    • \n \n sendCustomInteractionToGTM(\n EventCategory.FOOTER,\n EventAction.CLICK,\n url,\n )\n }\n >\n \n \n
    • \n
    \n
    \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n","import { AvailableLanguages, StorageKeys } from '@kaa/common/enums';\nimport { Settings } from 'luxon';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport const useLanguage = () => {\n const { i18n } = useTranslation();\n const [language, setLanguage] = useState(\n i18n.language as AvailableLanguages,\n );\n\n const changeLanguage = useCallback(\n (lng: AvailableLanguages) => {\n i18n.changeLanguage(lng);\n Settings.defaultLocale = lng;\n localStorage.setItem(StorageKeys.LAST_SELECTED_LANGUAGE, lng);\n updateLocalesInUrlParams(lng);\n },\n [i18n],\n );\n\n useEffect(() => {\n setLanguage(i18n.language as AvailableLanguages);\n }, [i18n.language]);\n\n useEffect(() => {\n document.documentElement.setAttribute('lang', language);\n }, [language]);\n\n return { language, changeLanguage };\n};\n\n// This function is used to update the ui_locales in the ReturnUrl parameter on IDP login page\nconst updateLocalesInUrlParams = (selectedLanguage: AvailableLanguages) => {\n const url = new URL(window.location.href);\n const returnUrl = url.searchParams.get('ReturnUrl');\n\n if (returnUrl) {\n const decodedReturnUrl = decodeURIComponent(returnUrl);\n const returnUrlObj = new URL(decodedReturnUrl, window.location.origin);\n returnUrlObj.searchParams.set('ui_locales', selectedLanguage);\n\n // Remove the origin from the ReturnUrl to make it relative\n const newReturnUrl = returnUrlObj\n .toString()\n .replace(window.location.origin, '');\n\n url.searchParams.set('ReturnUrl', newReturnUrl);\n window.history.replaceState(null, '', url.toString());\n }\n};\n","import { RegionCode } from '@kaa/api/idp';\nimport { AvailableLanguages } from '@kaa/common/enums';\nimport { FooterBrussels } from '@kaa/core-app/common/components/brussels/footer';\nimport {\n REGION_COMPLAINT_URL,\n REGION_CONDITIONS_URL,\n REGION_COOKIES_URL,\n REGION_NEWS_URL,\n REGION_PRIVACY_URL,\n REGION_QUESTION_URL,\n} from '@kaa/core-app/idp/constants';\nimport { useLanguage } from '@kaa/core-app/idp/utils';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\ntype FooterProps = {\n regionCode: RegionCode;\n languages: AvailableLanguages[];\n};\n\nexport const Footer = ({ regionCode, languages }: FooterProps) => {\n const { changeLanguage } = useLanguage();\n const { t, i18n } = useTranslation();\n\n return (\n \n );\n};\n","import { SwLink } from '@kaa/ui-flanders/components';\nimport brusselsLogo from '@kaa/ui-flanders/themes/bl/images/logo.svg';\nimport logo from '@kaa/ui-flanders/themes/_shared/images/Pluxee_Logo_DarkBlue_RGB.png';\nimport React from 'react';\n\ntype HeaderLogoProps = {\n publicUrl: string;\n homeUrl: string;\n title: string;\n titleMobile: string;\n mainLogoAlt: string;\n logoAlt: string;\n};\n\nexport const HeaderLogo = ({\n publicUrl,\n homeUrl, // TODO align with wallonia\n title,\n titleMobile,\n mainLogoAlt,\n logoAlt,\n}: HeaderLogoProps) => {\n return (\n \n {mainLogoAlt}\n
    \n {title}\n \n {/* TODO align with wallonia (not clickable) */}\n {logoAlt}\n {titleMobile}\n \n
    \n \n );\n};\n","import React, { AllHTMLAttributes } from 'react';\n\ntype HeaderMenuButtonProps = AllHTMLAttributes;\n\nexport const HeaderMenuButton = (props: HeaderMenuButtonProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { AvailableLanguages } from '@kaa/common/enums/AvailableLanguages';\nimport {\n Icon,\n SwIcon,\n SwLink,\n SwPopover,\n SwPopverRenderProps,\n} from '@kaa/ui-flanders/components';\nimport { motion } from 'framer-motion';\nimport React, { useState } from 'react';\n\nconst UlContainer = {\n hidden: { opacity: 1, scale: 0.5 },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n staggerChildren: 0.1,\n },\n },\n};\n\nconst LiItem = {\n hidden: { x: -40, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n },\n};\n\ntype HeaderSwitchLanguageProps = {\n language: AvailableLanguages;\n languages: AvailableLanguages[];\n changeLanguage: (lng: AvailableLanguages) => void;\n};\n\nexport const HeaderSwitchLanguage = ({\n language,\n languages,\n changeLanguage,\n}: HeaderSwitchLanguageProps) => {\n const [langSelector, openLangSelector] = useState(false);\n\n if (languages.length === 1) {\n return (\n
    \n {language.toUpperCase()}\n
    \n );\n }\n\n const availableLanguages = languages.filter(\n (availableLanguage: AvailableLanguages) => availableLanguage !== language,\n );\n\n return (\n <>\n \n {({ close }: SwPopverRenderProps) => (\n
      \n {availableLanguages.map((availableLanguage: AvailableLanguages) => {\n return (\n \n {\n changeLanguage(availableLanguage);\n close();\n }}\n >\n {availableLanguage.toUpperCase()}\n \n \n );\n })}\n
    \n )}\n \n\n {langSelector ? (\n \n {availableLanguages.map((availableLanguage: AvailableLanguages) => {\n return (\n \n {\n changeLanguage(availableLanguage);\n }}\n >\n {availableLanguage.toUpperCase()}\n \n \n );\n })}\n
  • \n openLangSelector(false)}\n >\n \n \n
  • \n \n ) : (\n openLangSelector(true)}\n >\n {language.toUpperCase()}\n \n \n )}\n \n );\n};\n","import { SwColumn, SwGrid } from '@kaa/ui-flanders/components';\nimport React, { PropsWithChildren, ReactNode } from 'react';\nimport './style/Header.style.scss';\n\ntype HeaderProps = {\n mobileNav: boolean;\n functionalHeader?: ReactNode;\n};\n\nexport const HeaderBrussels = ({\n mobileNav,\n children,\n functionalHeader,\n}: PropsWithChildren) => {\n return (\n \n
    \n \n {!!children && (\n \n {children}\n \n )}\n {!!functionalHeader && (\n {functionalHeader}\n )}\n \n
    \n \n );\n};\n","import { RegionCode } from '@kaa/api/idp';\nimport { AvailableLanguages } from '@kaa/common/enums';\nimport {\n HeaderBrussels,\n HeaderLogo,\n HeaderMenuButton,\n HeaderSwitchLanguage,\n} from '@kaa/core-app/common/components/brussels/header/';\nimport { i18nKeys } from '@kaa/i18n/idp/keys';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLanguage } from '@kaa/core-app/idp/utils';\n\ntype HeaderProps = {\n regionCode: RegionCode;\n languages: AvailableLanguages[];\n};\n\nexport const Header = ({ languages }: HeaderProps) => {\n const [mobileNav, showMobileNav] = useState(false);\n\n const { language, changeLanguage } = useLanguage();\n const { t, i18n } = useTranslation();\n\n return (\n \n \n \n showMobileNav(!mobileNav)}\n />\n \n );\n};\n","import { RegionCode } from '@kaa/api/idp';\nimport { AlertProvider } from '@kaa/common/context';\nimport { getConfig } from '@kaa/core-app/common/config';\nimport { PageViewGTMListener } from '@kaa/core-app/idp/components';\nimport { getI18nInstance } from '@kaa/core-app/idp/i18n';\nimport {\n LoginScreen,\n PasswordChangeScreen,\n PasswordRecoveryScreen,\n} from '@kaa/core-app/idp/screens';\nimport {\n SwContainer,\n SwFetchErrorMessage,\n SwMain,\n SwPage,\n} from '@kaa/ui-flanders/components';\nimport { Router } from '@reach/router';\nimport React from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { buildConfig } from './build-config';\nimport { Footer } from './components/Footer';\nimport { Header } from './components/Header';\n\nexport const App: React.FC = () => {\n const config = getConfig();\n\n if (!config) {\n return (\n \n {\n window.location.href = '/';\n }}\n />\n \n );\n }\n\n const {\n buildConfig: {\n regionCode,\n i18n: { availableLanguages },\n },\n } = config;\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import { locales } from '@kaa/i18n/idp';\nimport i18n from 'i18next';\nimport ICU from 'i18next-icu';\nimport de from 'i18next-icu/locale-data/de';\nimport en from 'i18next-icu/locale-data/en';\nimport fr from 'i18next-icu/locale-data/fr';\nimport nl from 'i18next-icu/locale-data/nl';\nimport get from 'lodash.get';\nimport { initReactI18next } from 'react-i18next';\nimport { getConfig } from '../../common/config';\n\nexport const getI18nInstance = () => {\n i18n\n .use(initReactI18next)\n .use(\n new ICU({\n localeData: [de, nl, fr, en],\n }),\n )\n .init({\n resources: get(\n getConfig(),\n 'buildConfig.i18n.availableLanguages',\n [],\n ).reduce(\n (acc: { [key: string]: { [key: string]: any } }, language: string) => ({\n ...acc,\n [language]: {\n translation: {\n ...(locales as { [key: string]: any })[language],\n },\n },\n }),\n {},\n ),\n lng: get(getConfig(), 'buildConfig.i18n.defaultLanguage'),\n fallbackLng: get(getConfig(), 'buildConfig.i18n.fallbackLanguage'),\n debug: process.env.NODE_ENV !== 'production',\n keySeparator: false,\n interpolation: {\n escapeValue: false,\n },\n });\n\n return i18n;\n};\n","import '@kaa/common/polyfill/polyfill';\nimport { ConfigLoadFailedFallback } from '@kaa/core-app/common/components';\n// why? because we want to be sure that the service is instantiated first\n/* eslint-disable-next-line import/order */\nimport { configService } from '@kaa/core-app/common/config';\nimport { initAnalytics } from '@kaa/core-app/idp/utils/google-analytics';\nimport '@kaa/ui-flanders/themes/bl/scss/main.scss';\nimport get from 'lodash.get';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { App } from './App';\nimport { buildConfig } from './build-config';\n\n// Loading dynamically the config to be able to update in the release pipeline\nconfigService\n .fetchConfig(buildConfig, '/brussels/__KAA_CONFIG__.json')\n .then((config) => {\n initAnalytics(get(config, 'app.google.tagManagerId') as string);\n ReactDOM.render(, document.getElementById('root'));\n })\n .catch(() => {\n ReactDOM.render(\n ,\n document.getElementById('root'),\n );\n });\n"],"sourceRoot":""}