{"version":3,"sources":["serviceWorkerRegistration.js","Routes.jsx","OnlineApp.jsx","store/Store.js","styles/Globals.js","assets/device-tilt.svg","helper/Localization.js","components/LandscapeTipOverlay.jsx","components/hearingTest/ProgressItem.jsx","components/OfflineSwitch.jsx","components/hearingTest/TestProgressBar.jsx","components/busyIndicators/BusySpinnerOverlay.jsx","components/hearingTest/TestLayout.jsx","components/BrowserHistory.js","helper/ValidationHelper.js","components/hearingTest/OfflineIntroView.jsx","helper/OperatingSystemHelper.js","components/hearingTest/TestIntroView.jsx","components/hearingTest/TestInstructionCard.jsx","components/hearingTest/TestInstructionsView.jsx","helper/SoundHelper.js","components/hearingTest/TestExecutionView.jsx","components/hearingTest/TestSuccessView.jsx","components/hearingTest/TestFailedView.jsx","components/dialogs/BasicDialog.jsx","components/hearingTest/HearingTest.jsx","components/hearingTest/OfflineHearingTest.jsx","OfflineApp.jsx","components/Table.jsx","helper/AuthHelper.js","helper/ApiHelper.js","helper/DateFormatHelper.js","components/PaginationControls.jsx","components/busyIndicators/BusySpinner.jsx","components/CustomSearchBox.jsx","components/dialogs/inviteUser/DebtorSearch.jsx","components/dialogs/inviteUser/DebtorList.jsx","components/dialogs/endCustomerDialog/OpenEndCustomerDialogButton.jsx","components/dialogs/endCustomerDialog/EndCustomerNumberTag.jsx","components/dialogs/endCustomerDialog/EndCustomerDialog.jsx","components/dialogs/inviteUser/InviteUserDialog.jsx","helper/NavigationHelper.js","types/roles.js","helper/RoleHelper.js","components/dialogs/connectOfflineTestsDialog/OfflineTestResultCard.jsx","components/dialogs/connectOfflineTestsDialog/OrderPositionTable.jsx","components/dialogs/connectOfflineTestsDialog/ConnectOfflineTestsDialog.jsx","components/dialogs/manualOrderDialog/ConfirmationDialog.jsx","components/dialogs/manualOrderDialog/ManualOrderDialog.jsx","components/NavMenu.jsx","components/Avatar.jsx","components/UserMenu.jsx","components/TopMenu.jsx","components/Layout.jsx","components/LayoutRoute.jsx","components/RefreshRoute.jsx","components/busyIndicators/busyIndicator.jsx","components/views/TableView.jsx","components/ContextMenu.jsx","components/InfoButton.jsx","components/StartButton.jsx","components/StatusIcon.jsx","components/TestStatusTeachingBubbleContent.jsx","components/dialogs/orderDetail/OrderTestList.jsx","components/dialogs/orderDetail/OrderDetailDialog.jsx","components/BasicDatePicker.jsx","components/dialogs/ManualTestDialog.jsx","components/views/OrdersView.jsx","components/dialogs/userDetail/UserDetailDialog.jsx","components/views/UsersView.jsx","helper/SortHelper.js","components/views/ResultsView.jsx","components/RoleAuthorization.jsx","components/hearingTest/OnlineHearingTest.jsx","components/AppInsights.js","AppInitializer.jsx","assets/info-circle-solid.svg","assets/check-solid.svg","assets/ellipsis-v-solid.svg","assets/pen-solid.svg","assets/disable-white.svg","assets/circle-notch-solid.svg","assets/home-solid.svg","assets/users-solid.svg","assets/folder-open-solid.svg","assets/business-and-finance.svg","assets/times-solid.svg","assets/menu-arrow.svg","assets/failed.svg","assets/succeeded.svg","assets/pending.svg","assets/user-alt-solid.svg","assets/download-solid.svg","assets/disable.svg","assets/download-solid-white.svg","assets/search-solid.svg","assets/hörtest-avatar-04.svg","assets/hörtest-avatar-02.svg","assets/hörtest-avatar-05.svg","assets/hörtest-avatar-03.svg","assets/system-volume_01.svg","assets/system-volume-04.svg","assets/system-volume-02.svg","assets/system-volume-03.svg","assets/system-volume-05.svg","assets/system-volume-06.svg","assets/enable-solid.svg","assets/Arrow-left-white.svg","assets/Arrow-left-black.svg","assets/Arrow-left-gray.svg","assets/check-white.svg","assets/slider-bubble-primary-03.svg","assets/slider-bubble-white.svg","assets/music.svg","assets/close.svg","assets/ipad-system-volume-01.svg","assets/ipad-system-volume-02.svg","index.jsx"],"names":["isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","catch","error","component","generalOptions","userModel","roles","addRole","action","payload","push","uiModel","menuOpen","toggleMenu","currentNavKey","changeCurrentNavKey","notifications","addNotification","isOfflineModeEnabled","updateIsOfflineModeEnabled","dataModel","debtors","changeDebtors","storeModel","user","ui","data","Store","createStore","Mono","styled","div","Colors","Localization","loadLocales","options","requestedLanguage","callback","a","onLine","result","localStorage","getItem","status","JSON","parse","toLowerCase","lng","fetch","localeResult","json","locale","setItem","stringify","message","backend","request","this","allowMultiLoading","requestOptions","mode","credentials","cache","loadPath","enabled","debug","defaultNS","initImmediate","interpolation","escapeValue","ns","react","nsMode","wait","initPromise","i18n","use","HttpApi","initReactI18next","init","i18nInstance","inst","getInstance","instance","LandscapeTipOverlayContainer","ContentContainer","TextWrapper","LandscapeTipOverlay","theme","getTheme","useState","isVisible","setIsVisible","useEffect","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","closeButtonStyles","root","position","right","top","borderRadius","color","palette","black","closeOverlay","IconButton","styles","iconProps","iconName","onClick","src","DeviceTiltIcon","height","alt","I18n","get","t","PrimaryButton","fontSize","minWidth","width","marginTop","rootHovered","backgroundColor","rootPressed","rootFocused","outline","text","ItemContainer","TextContainer","Circle","props","progressColor","IconContainer","ProgressItem","iconStyles","mergeStyles","textAlign","justifyContent","marginLeft","marginBottom","checked","FontIcon","className","OfflineSwitchContainer","StatusText","isDisabled","OfflineSwitch","useStoreState","useStoreActions","actions","Toggle","disabled","margin","onChange","event","TestProgressBarContainer","LogoContainer","OfflineSwitchWrapper","Logo","img","ProgressWrapper","ProgressContainer","Line","lineWidth","TestProgressBar","progress","neutralTertiary","BusyOverlay","BusySpinnerOverlay","isBusy","Spinner","size","SpinnerSize","large","LayoutContainer","ContainerElement","TestLayout","children","Component","baseUrl","document","querySelectorAll","getAttribute","createBrowserHistory","basename","validateEmail","value","test","OfflineIntroViewContainer","DataInputWrapper","TextfieldWrapper","TextareaWrapper","DataInputContainer","DataInputHeadline","DataInputSubHeadline","DataInputText","ExplanationContainer","fontColor","ErrorBar","ExplanationHeadline","ExplanationText","li","ButtonContainer","OfflineIntroView","errorMessage","setErrorMessage","continueButtonStyles","border","boxShadow","background","themePrimary","rootDisabled","TextField","label","userMail","onGetErrorMessage","newValue","updateEmail","multiline","notes","resizable","rows","updateNotes","continue","white","os","determineOperatingSystem","appVersion","indexOf","IntroContainer","LeftContainer","RightContainer","HeadlineLeftContainer","HeadlineRightContainer","TextRightContainer","SlideImageWrapper","SlideImageContainer","borderColor","SlideControlsContainer","TutorialTextContainer","TestIntroView","continueButtonStyle","abortButtonStyle","iconStylesCircle","icon","cursor","outlineWidth","tutorialProgress","maxProgress","isMobile","wearerName","currentOs","switchTutorialImage","switchTutorialText","dangerouslySetInnerHTML","__html","Array","from","_","i","map","index","DefaultButton","abort","setState","CardContainer","shadowColor","HeadlineContainer","InstructionContainer","TestInstructionCard","neutralDark","lightGrey","number","InstructionsContainer","InstructionCardsContainer","TestInstructionsView","playSound","side","gain","frequency","duration","offsetDuration","AudioContext","webkitAudioContext","alert","audioContext","ZERO","fadeDuration","oscillator","createOscillator","gainNodeL","createGain","gainNodeR","merger","createChannelMerger","connect","destination","setValueAtTime","currentTime","exponentialRampToValueAtTime","type","start","resume","setTimeout","stop","close","TestExecutionContainer","ExplanationWrapper","HeaderContainer","SoundIconWrapper","SoundIconContainer","hidden","UserIconContainer","MarginBottom","CountdownOverlay","visible","StyledList","ol","defaultGainValue","TestExecutionView","soundIconClass","paddingLeft","classNames","mergeStyleSets","whiteIcon","commonButtonStyles","minHeight","beginButtonStyles","toneButtonStyles","abortButtonStyles","fontWeight","previousSoundButtonStyles","previousTestButtonStylesLeft","previousTestButtonStylesTestActive","switchHeadline","ear","withHearingProtection","calcGainRatio","baseValue","finishCurrentTest","dbHandler","currentGainValue","continueWithNextTest","isTestActive","callbackStartTest","playWithDelay","isSoundPlaying","countdownValue","isCountdownRunning","interval","setInterval","clearInterval","callbackToneHeard","callbackPreviousSound","newGain","callbackPreviousTest","back","style","neutralLight","blue","red","green","marginRight","ResultContainer","SubHeadlineContainer","ListContainer","BottomContainer","BottomTextWrapper","List","ul","ListItem","confirmButtonStyle","TestSuccessView","TestFailedView","restartButtonStyle","neutralSecondary","restart","BasicDialog","useBoolean","isDraggable","labelId","useId","subTextId","dragOptions","moveMenuItemText","closeMenuItemText","menu","ContextualMenu","dialogContentProps","DialogType","normal","title","closeButtonAriaLabel","subText","modalProps","React","titleAriaId","subtitleAriaId","isBlocking","undefined","Dialog","DialogFooter","confirmCallback","cancelCallback","HearingTest","isAbortDialogOpen","setIsAbortDialogOpen","setProgress","dbLeftWithoutProtection","setDbLeftWithoutProtection","dbRightWithoutProtection","setDbRightWithoutProtection","dbLeftWithProtection","setDbLeftWithProtection","dbRightWithProtection","setDbRightWithProtection","setIsBusy","progressHandler","useCallback","Math","min","startProgress","finishAndSaveTest","calcInsulation","restartHandler","updateOfflineNotes","progressHandlerBackwards","site","withProtection","db","toggleAbortDialog","abortHandler","History","goBack","dbWithoutProtection","dbWithProtection","round","log10","param","executorEmail","offlineNotes","email","updateExecutorMail","renderSwitch","OfflineHearingTest","setExecutorEmail","setOfflineNotes","lastLoggedInUserMail","insulationLeft","insulationRight","isSuccessfulLeft","isSuccessfulRight","newStoredResults","currentStoredResults","newTestResult","dateExecuted","Date","toISOString","measurementLeftWithoutProtection","measurementLeftWithProtection","measurementRightWithoutProtection","measurementRightWithProtection","OfflineApp","i18nPromise","getPromise","isInitialized","setIsInitialized","Promise","all","TableWrapper","Header","HeaderLabel","StyledRow","StyledCell","HeaderRowWrapper","BodyWrapper","getTableScrollbarWidth","table","getElementById","scrollbarWidth","offsetWidth","clientWidth","Table","setScrollbarWidth","scrollTop","defaultColumn","useMemo","maxWidth","useTable","autoResetSortBy","columns","disableSortBy","disableSort","sortTypes","alphanumeric","row1","row2","columnName","value1","values","value2","localeCompare","warn","useSortBy","useFlexLayout","getTableProps","getTableBodyProps","headerGroups","prepareRow","showHeader","id","headerGroup","getHeaderGroupProps","headers","column","getHeaderProps","getSortByToggleProps","render","isSorted","isSortedDesc","row","getRowProps","onRowClick","original","cells","cell","getCellProps","isIE","ua","userAgent","msie","msie11","isEdge","getToken","scopes","msalApp","app","_config","azureAdOptions","redirectUri","origin","callbackPath","acquireTokenSilent","errorCode","length","acquireTokenRedirect","authResponse","accessToken","signIn","redirectError","getAccount","login","logout","removeItem","_app","b2COptions","flow","pathname","includes","signUp","signUpAndSignIn","UserAgentApplication","auth","clientId","authority","domain","validateAuthority","navigateToLoginRequestUrl","postLogoutRedirectUri","cacheLocation","storeAuthStateInCookie","handleRedirectCallback","authRedirectCallBack","loginRequest","Scopes","loginRedirect","response","passwordReset","tokenType","idToken","claims","fetchApiObject","relativePath","abortSignal","fetchApi","postToApi","body","ok","postToApiBlob","fileName","blob","url","URL","createObjectURL","createElement","href","download","appendChild","click","remove","method","apiConfig","apiOptions","fetchWithHeader","scope","token","withCredentials","getTimezoneOffset","Authorization","signal","toFormattedDate","dateTimeString","toLocaleDateString","day","month","year","toCustomFormattedDateTime","date","getDate","getMonth","getFullYear","hours","getHours","minutes","getMinutes","slice","CurrentPageDisplay","TableControls","PaginationControls","pageControlButtonStyles","neutralPrimary","padding","tableControlButtonStyles","currentPage","navigateBackwards","navigateToBegin","Label","maxPages","navigateToEnd","navigateForward","BusySpinnerContainer","BusySpinner","busySize","SearchBoxWrapper","SearchBoxBusyWrapper","CustomSearchBox","searchBoxStyles","fieldGroup","maxHeight","small","placeholder","busyText","searchValue","updateSearchValue","updateLastDataUpdate","onKeyDown","e","key","applySearch","ActionWrapper","DebtorSearchContainer","DebtorSearchTable","Text","p","EmptyPageMassage","DebtorSearch","abortController","AbortController","setSearchValue","setDebtors","filteredDebtors","setFilteredDebtors","setMaxPages","setCurrentPage","searchToggle","setSearchToggle","previousSearchValue","useRef","assignedDebtors","tmpDebtors","filter","deb","some","assDebtor","fetchData","defaultReqBody","itemsPerPage","sortDirection","sortPropertyName","reqBody","current","filterText","pageToDeliver","formattedData","results","debtor","identifier","companyName","address","street","houseNumber","postalCode","city","dateCreated","page","pagesAvailable","buttonStyles","accessor","Cell","ariaLabel","preventDefault","selectDebtor","DebtorTable","DebtorList","target","deselectDebtor","OpenEndCustomerDialogButton","TagContainer","TagTextWrapper","EndCustomerNumberTag","deleteButtonStyles","endCustomerNumber","PanelBody","InfoTextWrapper","AddCustomerNumberContainer","PanelFooter","EndCustomerDialog","currentTagValue","setCurrentTagValue","addIconProps","addButtonStyles","cancleButtonStyles","textFieldStyles","field","onDismiss","closeCallback","addNewEndCustomerNumber","tmpEndCustomerNumbers","endCustomerNumbers","setEndCustomerNumbers","Panel","allowTouchBodyScroll","headerText","PanelType","custom","customWidth","onRenderBody","splice","removeEndCustomerNumber","onRenderFooter","isFooterAtBottom","onOuterClick","isOpen","TopContainer","UserInputContainer","InputElement","FlexRow","UserInput","UserInputHeadline","EndCustomerButtonWrapper","InviteUserDialog","submitDisabled","setSubmitDisabled","userMessage","setUserMessage","setAssignedDebtors","setEmail","setCompanyName","department","setDepartment","MessageBarType","info","userMessageType","setUserMessageType","isEndCustomerDialogOpen","setIsEndCustomerDialogOpen","inputStyles","messageBarStyles","inviteButtonStyles","closePanel","toggleHideDialog","openAbortDialog","updatedSelection","submit","validateForm","company","debtorIds","isActive","lastLogin","success","validateInputNotEmpty","emailOnGetError","inMemoryAssignedDedbtorList","inMemorySearchableDebtorsList","extraLarge","defaultValue","validateOnFocusOut","validateOnLoad","MessageBar","isMultiline","messageBarType","getLocationFromPath","indexOfSecondPath","substring","User","Administrator","AccountManager","isUserAdministrator","userRoles","r","debtorId","role","Roles","isUserAccountManager","isUserUser","OfflineTestResultCardContainer","ProgressIndicator","NotesContainer","CardHeadline","OfflineTestTimeWrapper","OfflineTestResultCard","isButtonDisabled","currentTestResultNumber","testResultsCount","offlineTestResult","delete","isConnectDisabled","OrderPositionTableContainer","SortableTableHeader","Headline","OrderPositionTable","orderPositions","setOrderPositions","isSearchBusy","setIsSearchBusy","sortAscending","setSortAscending","setSortPropertyName","handlePropertySort","propertyName","radioUncheckedIconProps","radioCheckedIconProps","radioButtonStyles","currentOrderPositionId","updateSelectedOrderPositionId","OrderPositionTableWrapper","ConnectOfflineTestsDialog","offlineTestResults","setOfflineTestResults","currentOfflineTestResultNumber","setCurrentOfflineTestResultNumber","selectedOrderPositionId","setSelectedOrderPositionId","setUserMail","userName","setUserName","storedOfflineTestResults","deletionOffset","setConfirmCallback","getUser","_msalApp","emails","name","sort","b","finishButtonStyles","continueWithNextOfflineTestResult","deleteOfflineTestResult","connectCallback","orderPositionId","testerName","tmp","connectOfflineTestResult","DialogContent","ConfirmationDialog","ComboBoxWrapper","MessageWrapper","InputArea","InputAreaHeadline","DeleteButtonWrapper","ManualOrderDialog","isConfirmSaveDialogOpen","setIsConfirmSaveDialogOpen","availableDebtors","setAvailableDebtors","availableEndCustomerNumbers","setAvailableEndCustomerNumbers","selectedDebtor","setSelectedDebtor","selectedEndCustomerNumber","setSelectedEndCustomerNumber","deliveryInvoiceNumber","setDeliveryInvoiceNumber","serialNumber","wearer","successMessage","setSuccessMessage","hasUserClickedDebtorDropdown","setHasUserClickedDebtorDropdown","hasUserClickedEndCustomerNumberDropdown","setHasUserClickedEndCustomerNumberDropdown","fetchAvailableDebtors","allDebtors","fetchUserEndCustomerNumbers","allEndCustomerNumbers","debtorPromise","endCustomerNumberPromise","finally","saveButtonStyles","requiredTextFieldStyles","plusIconProps","closeIconProps","comboBoxStyles","submitManualOrder","manualOrderRequestBody","isManualOrder","positions","validateNotEmpty","onGetErrorOrderDeliveryInvoiceNumber","onGetErrorWearer","isSaveButtonDisabled","medium","ComboBox","allowFreeform","option","tmpDebtor","find","d","orderPosition","tmpOrderPositions","NavContainer","open","NavControls","OfflineTestResultIndicator","absoluteLeft","OfflineTestResultLengthText","NavMenu","isUserInviteDialogOpen","toggleUserInviteDialog","toggle","isAdministrator","isAccountManager","isUser","isConnectOfflineTestsDialogOpen","setIsConnectOfflineTestsDialogOpen","isConfirmDialogOpen","setIsConfirmDialogOpen","isManualOrderDialogOpen","setIsManualOrderDialogOpen","availableOfflineTestResults","setAvailableOfflineTestResults","canInviteUsers","determineIfOfflineTestResultsAvailable","navStyles","navItem","link","selectors","toggleButtonStyles","rootChecked","rootCheckedHovered","iconChecked","transform","flexContainer","plusButtonStyles","textContainer","menuIcon","display","plusMenuProps","items","plusMenuItems","directionalHint","DirectionalHint","rightTopEdge","menuProps","split","allowDisabledFocus","Nav","onLinkClick","item","reload","selectedKey","groups","links","navLinkGroups","AvatarContainer","Avatar","username","setUsername","browserMessageHidden","setBrowserMessageHidden","shouldBrowserMessageBeDisplayed","fetchAvatar","toggleBrowserMessage","sender","largeHeader","showCloseButton","Persona","imageUrl","PersonaSize","size24","hidePersonaDetails","imageAlt","zIndex","UserMenuContainer","MenuItem","UserMenu","Overlay","TopMenuContainer","UserMenuWrapper","TopMenu","isUserMenuOpen","setIsUserMenuOpen","clickListener","Footer","ImprintLink","Layout","imprint","LayoutRoute","rest","matchProperties","refresh","history","replace","path","RefreshRoute","BusyIndicator","itemProgress","paddingTop","FlexColumnContainer","SearchBoxContainer","ExportBusyWrapper","BusyContainer","Content","ControlsContainer","TitleContainer","TableView","lastDataUpdate","setLastDataUpdate","isExportBusy","setIsExportBusy","exportXlsx","dateTimeFormat","Intl","DateTimeFormat","formatToParts","today","viewName","worksheetName","endpoint","isBusyAlt","rowClick","contextStyles","beak","visibility","ContextMenu","linkRef","showContextualMenu","setShowContextualMenu","onShowContextualMenu","useConstCallback","onHideContextualMenu","ref","isBeakVisible","menuItems","onItemClick","Container","InfoButton","teachingBubbleVisible","setTeachingBubbleVisible","toggleTeachingBubbleVisible","stopPropagation","closeButtonProps","autoFocus","TeachingBubble","primaryButtonProps","headline","headlineText","teachingBubbleContent","StartButton","startButtonStyles","pending","StatusIcon","TeachingBubbleContent","TeachingBubbleRow","StatusIconWrapper","TestStatusTeachingBubbleContent","OrderTestListContainer","TestTable","ColumnHeader","OrderTestList","downloadTestResultAsPdf","testResult","setBusy","testResults","insulation","OrderTestListWrapper","Data","UserDataContainer","LabelContainer","DataContainer","UserData","OrderDetailDialog","setTestResults","selectedOrderPosition","closeDialog","isLightDismiss","orderDeliveryInvoiceNumber","BasicDatePicker","setValue","DayPickerStrings","months","shortMonths","days","shortDays","controlClass","control","DatePicker","formatDate","firstDayOfWeek","DayOfWeek","Monday","strings","maxDate","onSelectDate","onChangeCallback","SubHeadline","InputHeadlineContainer","InputContainer","InputContainerSmall","PanelHeader","FlexEnd","ManualTestDialog","setDateExecuted","setMeasurementLeftWithoutProtection","setMeasurementLeftWithProtection","setMeasurementRightWithoutProtection","setMeasurementRightWithProtection","setInsulationLeft","setInsulationRight","setOrderPositionId","orderPositionNumber","setOrderPositionNumber","setWearerName","resultLeft","setResultLeft","resultRight","setResultRight","resetParentIsBusy","cancelButtonStyles","dropdownOptions","dateExecutedHandler","validateInputIsNumber","submitTestResult","updateTableData","onRenderHeader","required","Number","Dropdown","InfoWrapper","OrderViewContainer","InactiveText","FlexColumn","FlexRowSpace","FlexRowEnd","UserDetailDialog","isUserInvitationBusy","setIsUserInvitationBusy","fetchedEndCustomerNumbers","selectedUser","formatDebtorData","isHidden","x","userUpdated","inviteUser","fetchApiString","UserViewContainer","PanelRow","PanelHeaderHeadline","booleanSortType","rowA","rowB","columnId","desc","RoleAuthorization","requiredRole","WrappedComponent","routes","exact","setAbortDialogOpen","orderDetailHidden","setOrderDetailHidden","isManualTestDialogOpen","setManualTestDialogOpen","setSelectedOrderPosition","isDownloadBusy","setIsDownloadBusy","hasSorted","lastTestDateExecuted","lastTestResultId","toggleHideManualTestDialog","toggleIsActive","idx","findIndex","orderId","forEach","canDownload","commonItems","TooltipHost","content","debtorCompanyName","toLocaleString","hour","minute","wasLastTestSuccessful","testResultViewModels","order","isSuccessful","sortType","isDebtorPanelOpen","setIsDebtorPanelOpen","users","setUsers","setSelectedUser","editUserHidden","setEditUserHidden","editButtonStyles","viewButtonStyles","disableButtonStyles","enableButtonStyles","apiUsers","tableUsers","userDebtors","isNormalUser","n","updatedUsers","openDebtorPanelButton","cellContent","displayName","to","aiPromise","reactPlugin","ReactPlugin","aiKey","ApplicationInsights","instrumentationKey","disableFetchTracking","enableAutoRouteTracking","enableRequestHeaderTracking","autoTrackPageVisitTime","extensions","extensionConfig","loadAppInsights","OnlineApp","setInitialized","signedIn","rolesPromise","userRole","targetPath","withAITracking","AppInitilizer","rootElement","initializeIcons","registerIcons","icons","IPadStepOne","IPadStepTwo","CloseIcon","MusicIcon","ArrowLeftWhiteIcon","ArrowLeftBackIcon","ArrowLeftGrayIcon","CheckWhiteIcon","SliderBubblePrimary","SliderBubbleWhite","EditIcon","DisableWhiteIcon","CheckIcon","EnableIcon","InfoIcon","HomeIcon","UsersIcon","FolderIcon","ResultIcon","PlusIcon","ChevronIcon","ContextIcon","FailedIcon","SucceededIcon","PendingIcon","UserIcon","DownloadIcon","DisableIcon","DownloadWhiteIcon","SearchIcon","LeftOutlined","LeftFilled","RightOutlined","RightFilled","WindowsStepOne","WindowsStepTwo","MacStepOne","MacStepTwo","MacStepThree","MacStepFour","EnableSolidIcon","loadTheme","themeLighterAlt","themeLighter","themeLight","themeTertiary","themeSecondary","themeDarkAlt","themeDark","themeDarker","neutralLighterAlt","neutralLighter","neutralQuaternaryAlt","neutralQuaternary","neutralTertiaryAlt","neutralPrimaryAlt","transparentGrey","ReactDOM","store","AppInitializer","process","contentType","ready","unregister","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"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","file":"static/js/main.21a88c04.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n );\n \n export function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n \n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n \n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n \n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n }\n \n function registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n \n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n \n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n }\n \n function checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n }\n \n export function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n }\n ","import React from 'react';\nimport { Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { LayoutRoute } from './components/LayoutRoute';\nimport History from './components/BrowserHistory';\nimport { RefreshRoute } from './components/RefreshRoute';\nimport { OrdersView } from './components/views/OrdersView';\nimport { UsersView } from './components/views/UsersView';\nimport { ResultsView } from './components/views/ResultsView';\nimport { OnlineHearingTest } from './components/hearingTest/OnlineHearingTest';\nimport RoleAuthorization from './components/RoleAuthorization';\nimport Roles from './types/roles';\n\n// Restricts the access to administrators or account managers.\nconst AdministratorOrAccountManager = (component) => RoleAuthorization([Roles.Administrator, Roles.AccountManager])(component);\n\nexport const routes = (\n \n \n \n \n \n \n \n \n \n \n);\n","import React, { useEffect, useState } from 'react';\nimport { routes } from './Routes';\nimport { useStoreActions } from 'easy-peasy';\nimport History from './components/BrowserHistory';\nimport { getLocationFromPath } from './helper/NavigationHelper';\nimport { isUserAdministrator, isUserAccountManager } from './helper/RoleHelper';\nimport { withAITracking } from '@microsoft/applicationinsights-react-js';\nimport { reactPlugin } from './components/AppInsights';\nimport I18n from './helper/Localization';\nimport { signIn, getToken } from './helper/AuthHelper';\nimport { fetchApiObject } from './helper/ApiHelper';\nimport { LandscapeTipOverlay } from './components/LandscapeTipOverlay';\n\n/**\n * Global object that holds the general options defined in the appsettings.json.\n */\nexport let generalOptions;\n\n// retrieve configuration values from the server side\nexport const _config = fetch('api/Configuration').then((config) => config.json());\n\n// I18n initialization\nconst i18nPromise = I18n.getPromise();\n\n/** Main app component with an initialized redux store and theme. */\nconst OnlineApp = () => {\n /**\n * Action to add a role to the store state.\n */\n const addRole = useStoreActions((actions) => actions.user.addRole);\n /**\n * Whether the app is configured correctly for online mode or not.\n */\n const [isInitialized, setInitialized] = useState(false);\n \n useEffect(() => {\n // Resolve the configuration.\n _config.then((config) => {\n // Sign in the user.\n signIn().then((signedIn) => {\n if (!signedIn) {\n // Login Redirect will happen, no need to render.\n return;\n }\n // Set the general options.\n generalOptions = config.generalOptions;\n // Populate token cache.\n getToken([config.apiOptions.scope]);\n // Fetch the roles.\n const rolesPromise = fetchApiObject('v1.0/User/Roles');\n Promise.all([i18nPromise, rolesPromise]).then((results) => {\n const userRoles = results[1];\n // Adding each role to the redux store.\n userRoles.forEach((userRole) => {\n addRole(userRole);\n setInitialized(true);\n });\n const targetPath = getLocationFromPath(History.location.pathname);\n // User might be global administrator for all debtors or for a subset of debtors.\n const isAdministrator = isUserAdministrator(userRoles);\n const isAccountManager = isUserAccountManager(userRoles);\n if (!isAdministrator && !isAccountManager) {\n if (targetPath !== '/orders' && targetPath !== '/results') {\n // If the deep link targets a non authorized path as a regular user, send him where he should be.\n History.replace('/orders');\n }\n } else {\n if (targetPath === '/') {\n History.replace('/orders');\n }\n }\n });\n });\n });\n }, [addRole]);\n\n return isInitialized ? (\n <>\n \n {routes}\n \n ) : null;\n};\n\nexport default withAITracking(reactPlugin, OnlineApp, OnlineApp.name, 'app-container');\n\nexport const displayName = OnlineApp.name;\n","import { createStore, action } from 'easy-peasy';\n\n/**\n * Holds relevant user data and actions to modify that data.\n */\nconst userModel = {\n /**\n * Roles assigned to the user, used for authorization\n */\n roles: [],\n /**\n * Adds a role to the user\n */\n addRole: action((state, payload) => {\n state.roles.push(payload);\n }),\n};\n\n/**\n * State for ui elements and actions to alter that state.\n */\nconst uiModel = {\n /**\n * Whether or not the nav menu is open.\n */\n menuOpen: true,\n /**\n * Action to set menuOpen state.\n */\n toggleMenu: action((state, payload) => {\n state.menuOpen = payload;\n }),\n /**\n * Used by the fluent ui nav to indicate which element should be highlighted.\n */\n currentNavKey: '/users',\n /**\n * Changes the highlighted nav element.\n */\n changeCurrentNavKey: action((state, payload) => {\n state.currentNavKey = payload;\n }),\n /**\n * List of notifications which need to be displayed to the user.\n */\n notifications: [],\n /**\n * Adds a notification to the list.\n */\n addNotification: action((state, payload) => {\n state.notifications.push(payload);\n }),\n /**\n * Whether the offline mode is enabled or not.\n */\n isOfflineModeEnabled: false,\n /**\n * Action to set offline mode state.\n */\n updateIsOfflineModeEnabled: action((state, payload) => {\n state.isOfflineModeEnabled = payload;\n }),\n};\n\n/**\n * Holds common data that is used across the whole site.\n */\nconst dataModel = {\n /**\n * List of available debtors.\n */\n debtors: null,\n /**\n * Action to alter the debtor list.\n */\n changeDebtors: action((state, payload) => {\n state.debtors = payload;\n }),\n};\n\nconst storeModel = {\n user: userModel,\n ui: uiModel,\n data: dataModel,\n};\n\nconst Store = createStore(storeModel);\n\nexport default Store;\n","import styled from 'styled-components';\n\n/**\n * Style element which applies a monospace font used in some table cells for better readability.\n */\nexport const Mono = styled.div`\n font-family: 'Droid Sans Mono';\n`;\n\n/**\n * Global accessable colors.\n */\nexport const Colors = {\n white: '#ffffff',\n lightGray: '#f7f7f7',\n dialogGray: '#A3A3A3',\n inactiveGray: '#999999',\n altGray: '#6C6C6C',\n boxShadow: '#00000077',\n hoverLightGray: '#D3D3D3',\n borderGray: '#dbdbdb',\n errorRed: '#a4262c',\n errorRedLight: '#FDE7E9',\n overlayGray: '#a2a2a2',\n backgroundGray: '#f1f1f1'\n};\n","export default __webpack_public_path__ + \"static/media/device-tilt.5d533fa6.svg\";","import i18n from 'i18next';\nimport HttpApi from 'i18next-http-backend';\nimport { initReactI18next } from 'react-i18next';\n\n/** Localization class initiating i18n. */\nexport default class Localization {\n /** i18n instance. */\n i18nInstance;\n\n /** Promise for the loading i18next instance. */\n initPromise;\n\n /** Singleton instance. */\n static instance;\n\n /**\n * Loads the i18n requested languages from the localization api.\n *\n * @param requestedLanguage The ISO-code for the language to load.\n * @param callback The callback to execute when the languages are returned from the api.\n * @param options ajax options.\n * @param payload the requested language.\n */\n loadLocales = async (options, requestedLanguage, payload, callback) => {\n try {\n if(!navigator.onLine) {\n const result = localStorage.getItem('localization');\n callback(null, { status: 200, data: JSON.parse(result) });\n return;\n }\n if (requestedLanguage.toLowerCase() !== this.options.lng.toLowerCase()) {\n // do nothing when a language is requested, that isn't the one the user selected\n callback(null, { status: 200 });\n return;\n }\n const localeResult = await fetch(`api/Localization/Get?culture=${this.options.lng}`);\n const locale = await localeResult.json();\n localStorage.setItem('localization', JSON.stringify(locale));\n callback(null, { status: 200, data: locale });\n } catch (error) {\n console.error(`Failed language: ${requestedLanguage}. Error: ${error.message}`);\n callback(error, { status: 404 });\n }\n };\n\n /** I18n Options. */\n options = {\n backend: {\n request: this.loadLocales,\n allowMultiLoading: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n },\n loadPath: '{{lng}}',\n parse: (data) => data\n },\n cache: {\n enabled: true\n },\n debug: false,\n defaultNS: 'common',\n initImmediate: false,\n interpolation: {\n escapeValue: false\n },\n ns: ['common'],\n react: {\n nsMode: 'default',\n wait: true\n }\n };\n\n constructor() {\n this.options.lng = 'de';\n this.initPromise = i18n.use(HttpApi).use(initReactI18next).init(this.options);\n this.initPromise.then(() => (this.i18nInstance = i18n));\n }\n\n /** Retrieves the single i18n instance. */\n static get() {\n const inst = this.getInstance();\n while (inst.i18nInstance == null) {\n // wait for i18n to load...\n }\n return inst.i18nInstance;\n }\n\n /** Retrieves the promise for the i18n instance. */\n static getPromise() {\n return this.getInstance().initPromise;\n }\n\n /** Retrieves the singleton instance. */\n static getInstance() {\n return this.instance || (this.instance = new this());\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Colors } from '../styles/Globals';\nimport { IconButton, getTheme } from 'office-ui-fabric-react';\nimport DeviceTiltIcon from '../assets/device-tilt.svg';\nimport { PrimaryButton } from 'office-ui-fabric-react';\nimport I18n from '../helper/Localization';\nconst LandscapeTipOverlayContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n background-color: rgba(162, 162, 162, 0.9);\n z-index: 1000003;\n`;\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border: 1px solid #f0f0f0;\n border-radius: 11px;\n padding: 25px;\n background-color: ${Colors.white};\n position: relative;\n width: 300px;\n max-width: 300px;\n height: 350px;\n max-height: 350px;\n`;\nconst TextWrapper = styled.div`\n padding-top: 20px;\n font-size: 14px;\n text-align: center;\n word-wrap: break-word;\n`;\n/**\n * Overlay component that advises the user to rotate the device into landscape mode.\n */\nexport const LandscapeTipOverlay = () => {\n const theme = getTheme();\n /**\n * Whether the overlay is visible or not.\n */\n const [isVisible, setIsVisible] = useState(false);\n /**\n * Set the window size state after the window has resized.\n */\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth < window.innerHeight && window.innerWidth < 1100) {\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n }\n handleResize();\n window.addEventListener('resize', () => handleResize());\n return () => window.removeEventListener('resize', () => handleResize());\n }, []);\n /**\n * Styles of the close button.\n */\n const closeButtonStyles = {\n root: {\n position: 'absolute',\n right: 5,\n top: 5,\n borderRadius: 4,\n color: theme.palette.black,\n },\n };\n /**\n * Styles of the confirm button.\n */\n const confirmButtonStyles = {\n root: {\n fontSize: 10,\n borderRadius: 4,\n minWidth: 110,\n width: 110,\n height: 24,\n marginTop: 45,\n },\n rootHovered: {\n backgroundColor: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n },\n rootFocused: {\n outline: 0,\n },\n };\n /**\n * Callback to close the overlay.\n */\n const closeOverlay = () => setIsVisible(false);\n return (\n <>\n {isVisible ? (\n \n \n \n
\n \"\"\n
\n {I18n.get().t('LandscapeTipOverlay_Text')}\n \n
\n
\n ) : null}\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { FontIcon } from 'office-ui-fabric-react';\nimport { mergeStyles } from 'office-ui-fabric-react/lib/Styling';\n\nconst ItemContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 5px;\n position: relative;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 40px;\n min-width: max-content;\n @media only screen and (max-width: 1400px) {\n top: 30px;\n }\n`;\n\nconst Circle = styled.div`\n height: 20px;\n width: 20px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${(props) => props.progressColor};\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\n/**\n * takes the item text and if it es finished as prop and renders the progress dependent style\n * @param props\n */\nexport const ProgressItem = (props) => {\n const iconStyles = mergeStyles({\n textAlign: 'center',\n justifyContent: 'center',\n marginLeft: '1px',\n marginBottom: '2px',\n });\n\n return (\n \n \n {props.checked ? : ''}\n \n {props.text}\n \n );\n};\n","import React from 'react';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\nimport { Toggle } from 'office-ui-fabric-react/lib/Toggle';\nimport styled from 'styled-components';\nimport I18n from '../helper/Localization';\nimport { Colors } from '../styles/Globals';\n\nconst OfflineSwitchContainer = styled.div`\n display: flex;\n align-items: center;\n min-height: max-content;\n min-width: max-content;\n`;\n\nconst StatusText = styled.div`\n font-size: 12px;\n margin-left: 15px;\n color: ${(props) => props.isDisabled && Colors.inactiveGray};\n`;\n\n/**\n * The switch component to toggle the offline store state.\n */\nexport const OfflineSwitch = (props) => {\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n\n /**\n * Retrieve the action to update the store offline mode state.\n */\n const updateIsOfflineModeEnabled = useStoreActions((actions) => actions.ui.updateIsOfflineModeEnabled);\n\n /**\n * Styles of the offline switch.\n */\n const switchStyles = {\n root: {\n margin: 0\n }\n };\n\n /**\n * Callback to toggle the store state of the offline mode.\n * @param {*} event The click event.\n * @param {*} checked The checked status of the toggle component.\n */\n const toggleOfflineMode = (event, checked) => {\n updateIsOfflineModeEnabled(checked);\n };\n\n return (\n \n \n {isOfflineModeEnabled ? I18n.get().t('OfflineSwitch_Active') : I18n.get().t('OfflineSwitch_Inactive')}\n \n );\n};\n","import React from 'react';\nimport I18n from '../../helper/Localization';\nimport styled from 'styled-components';\nimport { ProgressItem } from './ProgressItem';\nimport { getTheme } from 'office-ui-fabric-react';\nimport { OfflineSwitch } from '../OfflineSwitch';\nimport { useStoreState } from 'easy-peasy';\n\nconst TestProgressBarContainer = styled.div`\n display: flex;\n flex-direction: column;\n border-bottom: 1px solid #eee;\n background-color: #ffffff;\n width: 100%;\n`;\n\nconst LogoContainer = styled.div`\n width: 100%;\n height: 50px;\n padding-left: 16px;\n display: flex;\n align-items: center;\n border-bottom: 0.2px solid #c3c3c3;\n`;\n\nconst OfflineSwitchWrapper = styled.div`\n margin-left: 20px;\n`;\n\nconst Logo = styled.img`\n height: 20px;\n`;\n\nconst ProgressWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 120px;\n border-bottom: 0.2px solid #c3c3c3;\n @media only screen and (max-width: 1400px) {\n height: 65px;\n font-size: 10px;\n align-items: baseline;\n }\n`;\n\nconst ProgressContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 10px;\n width: 100%;\n`;\n\nconst Line = styled.div`\n width: ${(props) => props.lineWidth};\n height: 3px;\n background-color: ${(props) => props.progressColor};\n`;\n\n/**\n * component that indicates the current process of the hearing test\n */\nexport const TestProgressBar = (props) => {\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n\n /**\n * Fluent ui theme.\n */\n const theme = getTheme();\n\n return (\n \n \n \n \n 0} />\n \n \n \n \n \n {isOfflineModeEnabled && (\n <>\n = -1 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 0 ? true : false}\n />\n \n \n )}\n = 0 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 1 ? true : false}\n />\n = 1 ? theme.palette.black : theme.palette.neutralTertiary} />\n = 1 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 2 ? true : false}\n />\n = 2 ? theme.palette.black : theme.palette.neutralTertiary} />\n = 2 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 3 ? true : false}\n />\n = 3 ? theme.palette.black : theme.palette.neutralTertiary} />\n = 3 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 4 ? true : false}\n />\n = 4 ? theme.palette.black : theme.palette.neutralTertiary} />\n = 4 ? theme.palette.black : theme.palette.neutralTertiary}\n checked={props.progress >= 5 ? true : false}\n />\n = 5 ? theme.palette.black : theme.palette.neutralTertiary} />\n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Spinner, SpinnerSize } from '@fluentui/react';\n\nconst BusyOverlay = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.85);\n z-index: 1;\n`;\n\n/**\n * Basic component to indicate async operations.\n * NOTE: To use place this component inside a container that has set 'position: relative'. This component then will take 100% of that container space and displays itself as overlay.\n */\nexport const BusySpinnerOverlay = (props) => {\n return (\n <>\n {props.isBusy ? (\n \n \n \n ) : null}\n \n );\n};\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { TestProgressBar } from './TestProgressBar';\nimport { Colors } from '../../styles/Globals';\nimport { BusySpinnerOverlay } from '../busyIndicators/BusySpinnerOverlay';\n\nconst LayoutContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background-color: ${Colors.lightGray};\n position: relative;\n overflow: auto;\n`;\n\nconst ContainerElement = styled.div`\n display: flex;\n flex: 1;\n min-height: max-content;\n max-height: calc(100% - 171px);\n @media only screen and (max-width: 1400px) {\n max-height: calc(100% - 151px);\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex: 1;\n margin: 20px;\n background-color: ${Colors.white};\n box-shadow: 14px 17px 54px -15px rgba(0, 0, 0, 0.3);\n`;\n\n/**\n * layout for the hearing test without navigation menu\n */\nexport default class TestLayout extends Component {\n constructor(props) {\n super(props);\n }\n render() {\n return (\n \n \n \n \n {this.props.children}\n \n \n );\n }\n}\n","import { createBrowserHistory } from 'history';\n\n// Create browser history to use in the Redux store\nconst baseUrl = document.querySelectorAll('base')[0].getAttribute('href');\nexport default createBrowserHistory({ basename: baseUrl });","/**\n * Regex email validation.\n * Returns a error text to fluent ui.\n * @param value The data that requires validation.\n */\n export const validateEmail = (value) => {\n return /^[a-zA-Z0-9_+]([.-]?[a-zA-Z0-9_+])*@[a-zA-Z0-9_+]([.-]?[a-zA-Z0-9_+])*(\\.\\w{2,13})$/.test(value);\n };\n ","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { getTheme } from 'office-ui-fabric-react';\nimport { Colors } from '../../styles/Globals';\nimport { PrimaryButton } from 'office-ui-fabric-react/lib/Button';\nimport { TextField } from 'office-ui-fabric-react/lib/TextField';\nimport { validateEmail } from '../../helper/ValidationHelper';\n\nconst OfflineIntroViewContainer = styled.div`\n display: flex;\n flex: 1;\n`;\n\nconst DataInputWrapper = styled.div`\n display: flex;\n flex: 10;\n flex-direction: column;\n padding: 50px 60px 25px 60px;\n @media only screen and (max-width: 1800px) {\n padding: 15px 20px;\n }\n`;\n\nconst TextfieldWrapper = styled.div`\n min-height: 85px;\n`;\n\nconst TextareaWrapper = styled.div`\n margin: 20px 0;\n @media only screen and (max-width: 1800px) {\n margin: 10px 0;\n }\n`;\n\nconst DataInputContainer = styled.div`\n max-width: 45%;\n flex-direction: column;\n @media only screen and (max-width: 1800px) {\n max-width: 70%;\n }\n`;\n\nconst DataInputHeadline = styled.div`\n font-size: 40px;\n font-weight: bold;\n @media only screen and (max-width: 1800px) {\n font-size: 33px;\n }\n`;\n\nconst DataInputSubHeadline = styled.div`\n font-size: 30px;\n margin-bottom: 20px;\n @media only screen and (max-width: 1800px) {\n font-size: 23px;\n margin-bottom: 15px;\n }\n`;\n\nconst DataInputText = styled.div`\n font-size: 14px;\n color: ${Colors.inactiveGray};\n`;\n\nconst ExplanationContainer = styled.div`\n display: flex;\n flex: 9;\n padding: 50px 40px;\n flex-direction: column;\n background-color: ${(props) => props.backgroundColor};\n color: ${(props) => props.fontColor};\n @media only screen and (max-width: 1800px) {\n padding: 25px 20px;\n }\n`;\n\nconst ErrorBar = styled.div`\n width: 100%;\n margin-right: 20px;\n font-size: 12px;\n padding: 8px 12px;\n background-color: ${Colors.errorRedLight};\n`;\n\nconst ExplanationHeadline = styled.div`\n font-size: 30px;\n margin-top: 49px;\n word-wrap: break-word;\n @media only screen and (max-width: 1800px) {\n font-size: 23px;\n margin-top: 39px;\n }\n`;\n\nconst ExplanationText = styled.li`\n font-size: 14px;\n word-wrap: break-word;\n margin-top: 30px;\n`;\n\nconst ButtonContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-top: auto;\n`;\n\n/**\n * The intro view for the hearing test when the user is in offline mode.\n */\nexport const OfflineIntroView = (props) => {\n const theme = getTheme();\n\n /**\n * State of the error message to display.\n */\n const [errorMessage, setErrorMessage] = useState('');\n\n /**\n * Styles of the continue button.\n */\n const continueButtonStyles = {\n root: {\n borderRadius: '5px',\n fontSize: '15px',\n border: 0,\n minWidth: '120px',\n height: '33px',\n boxShadow: '1px 2px 3px #00000079'\n },\n rootHovered: {\n background: theme.palette.themePrimary\n },\n rootPressed: {\n background: theme.palette.themePrimary\n },\n rootDisabled: {\n background: theme.palette.themePrimary\n }\n };\n\n /**\n * Regex email validation.\n * Returns a error text to fluent ui.\n * @param value The data that requires validation.\n */\n const onGetErrorEmail = (value) => {\n return validateEmail(value) ? '' : I18n.get().t('Invite_User_InvalidEmail');\n };\n\n /**\n * Start the hearing test in offline mode after checking necessary informations.\n */\n const startOfflineTest = () => {\n if (!validateEmail(props.userMail) || props.notes === '') {\n setErrorMessage(I18n.get().t('OfflineMode_DataInput_ErrorMessage'));\n return;\n }\n setErrorMessage('');\n props.continue();\n };\n\n return (\n \n \n \n {I18n.get().t('OfflineMode_DataInput_Headline')}\n {I18n.get().t('OfflineMode_DataInput_SubHeadline')}\n \n {\n if (newValue || newValue === '') {\n props.updateEmail(newValue);\n }\n }}\n />\n \n {I18n.get().t('OfflineMode_DataInput_EmailTip')}\n \n = 1800 ? 7 : 4}\n onChange={(event, newValue) => {\n if (newValue || newValue === '') {\n props.updateNotes(newValue);\n }\n }}\n />\n \n {I18n.get().t('OfflineMode_DataInput_TextTip')}\n \n \n {errorMessage !== '' && {errorMessage}}\n \n \n \n \n {I18n.get().t('OfflineMode_Tutorial_Headline')}\n
    \n {I18n.get().t('OfflineMode_Tutorial_TextOne')}\n {I18n.get().t('OfflineMode_Tutorial_TextTwo')}\n {I18n.get().t('OfflineMode_Tutorial_TextThree')}\n {I18n.get().t('OfflineMode_Tutorial_TextFour')}\n {I18n.get().t('OfflineMode_Tutorial_TextFive')}\n
\n
\n
\n );\n};\n","/**\n * enum for possible user operating systems\n */\nexport const os = {\n Windows: 0,\n Mac: 1,\n Linux: 2,\n Unix: 3,\n};\n\n/**\n * detects the operating system of the user and returns the os enum constant\n */\nexport const determineOperatingSystem = () => {\n if (navigator.appVersion.indexOf('Win') !== -1) {\n return os.Windows;\n }\n if (navigator.appVersion.indexOf('Mac') !== -1) {\n return os.Mac;\n }\n if (navigator.appVersion.indexOf('X11') !== -1) {\n return os.Unix;\n }\n if (navigator.appVersion.indexOf('Linux') !== -1) {\n return os.Linux;\n }\n};\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { FontIcon } from 'office-ui-fabric-react/lib/Icon';\nimport { DefaultButton, PrimaryButton, IconButton, getTheme } from 'office-ui-fabric-react';\nimport { determineOperatingSystem, os } from '../../helper/OperatingSystemHelper';\nimport { isMobile } from 'react-device-detect';\n\nconst IntroContainer = styled.div`\n display: flex;\n flex: 1;\n`;\n\nconst LeftContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex: 5;\n`;\n\nconst RightContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 3;\n background-color: ${(props) => props.backgroundColor};\n`;\n\nconst HeadlineLeftContainer = styled.div`\n padding: 56px 84px 35px 54px;\n font-size: 30px;\n justify-content: center;\n align-items: center;\n font-weight: bold;\n color: #000000;\n @media only screen and (max-width: 1800px) {\n font-size: 23px;\n }\n`;\n\nconst HeadlineRightContainer = styled.div`\n padding: 56px 0 12px 54px;\n font-size: 40px;\n font-weight: bold;\n color: #ffffff;\n @media only screen and (max-width: 1800px) {\n font-size: 23px;\n padding: 36px 0 12px 54px;\n }\n`;\n\nconst TextRightContainer = styled.div`\n padding: 0 54px 51px 54px;\n font-size: 30px;\n color: #ffffff;\n @media only screen and (max-width: 1800px) {\n font-size: 18px;\n padding: 0 54px 31px 54px;\n }\n`;\n\nconst ButtonContainer = styled.div`\n padding: 20px 39px 34px 39px;\n display: flex;\n justify-content: center;\n flex-direction: row;\n margin-top: auto;\n @media only screen and (max-width: 1800px) {\n font-size: 18px;\n padding: 10px 39px 24px 39px;\n }\n`;\n\nconst SlideImageWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 0 45px;\n`;\n\nconst SlideImageContainer = styled.div`\n display: flex;\n flex-direction: column;\n border: 20px solid ${(props) => props.borderColor};\n width: 100%;\n height: auto;\n max-width: 470px;\n @media only screen and (max-width: 1800px) {\n max-width: 400px;\n }\n @media only screen and (max-width: 1400px) {\n max-width: 300px;\n }\n`;\n\nconst SlideControlsContainer = styled.div`\n padding: 0 39px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: row;\n margin-top: 20px;\n`;\n\nconst TutorialTextContainer = styled.div`\n display: flex;\n justify-content: center;\n color: ${(props) => props.fontColor};\n margin-top: 10px;\n font-size: 14px;\n`;\n\n/**\n * view component that contains the welcome and the tutorial for setting the volume correctly\n */\nexport class TestIntroView extends Component {\n constructor(props) {\n super(props);\n this.state = {\n tutorialProgress: 0,\n };\n }\n\n theme = getTheme();\n\n continueButtonStyle = {\n root: {\n borderRadius: '5px',\n fontSize: '15px',\n border: 0,\n minWidth: '210px',\n height: '39px',\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none',\n },\n };\n\n abortButtonStyle = {\n root: {\n border: 0,\n fontSize: '15px',\n minWidth: '210px',\n height: '39px',\n backgroundColor: this.theme.palette.black,\n color: this.theme.palette.white,\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none',\n },\n };\n\n iconStylesCircle = {\n icon: {\n fontSize: '14px',\n },\n root: {\n cursor: 'default !important',\n },\n rootHovered: {\n backgroundColor: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n },\n rootFocused: {\n outlineWidth: 0,\n },\n };\n\n render() {\n /**\n * The maximum steps to configure system volume.\n */\n const maxProgress = determineOperatingSystem() === os.Windows || isMobile ? 1 : 3;\n\n /**\n * Return the correct tutorial icon name.\n */\n const switchTutorialImage = () => {\n const currentOs = determineOperatingSystem();\n switch (this.state.tutorialProgress) {\n case 0:\n return isMobile ? 'ipad-step-one' : currentOs === os.Windows ? 'windows-step-one' : 'mac-step-one';\n case 1:\n return isMobile ? 'ipad-step-two' : currentOs === os.Windows ? 'windows-step-two' : 'mac-step-two';\n case 2:\n return currentOs === os.Mac && !isMobile ? 'mac-step-three' : '';\n case 3:\n return currentOs === os.Mac && !isMobile ? 'mac-step-four' : '';\n default:\n break;\n }\n };\n\n /**\n * Return the correct tutorial text.\n */\n const switchTutorialText = () => {\n const currentOs = determineOperatingSystem();\n switch (this.state.tutorialProgress) {\n case 0:\n return isMobile\n ? I18n.get().t('Test_Intro_Tutorial_iPad_One')\n : currentOs === os.Windows\n ? I18n.get().t('Test_Intro_Tutorial_Windows_One')\n : os.Mac && I18n.get().t('Test_Intro_Tutorial_Mac_One');\n case 1:\n return isMobile\n ? I18n.get().t('Test_Intro_Tutorial_iPad_Two')\n : currentOs === os.Windows\n ? I18n.get().t('Test_Intro_Tutorial_Windows_Two')\n : I18n.get().t('Test_Intro_Tutorial_Mac_Two');\n case 2:\n return currentOs === os.Mac && !isMobile ? I18n.get().t('Test_Intro_Tutorial_Mac_Three') : '';\n case 3:\n return currentOs === os.Mac && !isMobile ? I18n.get().t('Test_Intro_Tutorial_Mac_Four') : '';\n default:\n break;\n }\n };\n\n return (\n \n \n \n {I18n.get().t('Test_Intro_Welcome')}\n {this.props.wearerName && `, ${this.props.wearerName}`}\n \n \n \n {I18n.get().t('Test_Intro_Instructions')}\n {I18n.get().t('Test_Intro_Settings')}\n \n \n \n \n {switchTutorialText()}\n \n
\n \n \n \n {Array.from(Array(maxProgress + 1), (_, i) => i + 1).map((index) => {\n if (this.state.tutorialProgress + 1 === index) {\n return ;\n } else {\n return ;\n }\n })}\n \n \n \n {this.state.tutorialProgress < maxProgress ? (\n this.setState({ tutorialProgress: this.state.tutorialProgress + 1 })}\n />\n ) : (\n \n )}\n \n \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport { getTheme } from 'office-ui-fabric-react';\n\nconst CardContainer = styled.div`\n display: flex;\n border-radius: 5px;\n flex-direction: column;\n min-width: 282px;\n width: 25%;\n max-height: 300px;\n background-color: ${(props) => props.backgroundColor};\n box-shadow: 1px 2px 6px ${(props) => props.shadowColor};\n`;\n\nconst HeadlineContainer = styled.div`\n display: flex;\n flex-direction: row;\n font-weight: bold;\n padding: 10px 0 0 10px;\n font-size: 30px;\n color: ${(props) => props.fontColor};\n @media only screen and (max-width: 1400px) {\n font-size: 18px;\n }\n`;\n\nconst InstructionContainer = styled.div`\n display: flex;\n flex-direction: row;\n padding: 0px 22px 15px 22px;\n font-size: 45px;\n color: ${(props) => props.fontColor};\n font-weight: bold;\n @media only screen and (max-width: 1400px) {\n font-size: 23px;\n }\n`;\n\n/**\n * card component that contains the instruction number and the instruction text\n */\nexport class TestInstructionCard extends Component {\n constructor(props) {\n super(props);\n }\n\n theme = getTheme();\n\n render() {\n return (\n \n {this.props.number}\n {this.props.text}\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { TestInstructionCard } from './TestInstructionCard';\nimport { DefaultButton, PrimaryButton } from 'office-ui-fabric-react';\n\nconst InstructionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n`;\n\nconst HeadlineContainer = styled.div`\n display: flex;\n flex-direction: row;\n padding: 55px 0 73px 51px;\n width: 70%;\n font-size: 40px;\n font-weight: bold;\n color: #000000;\n align-self: flex-start;\n @media only screen and (max-width: 1400px) {\n font-size: 23px; \n }\n`;\n\nconst InstructionCardsContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 93%;\n height: 40%;\n justify-content: space-around;\n margin-top: auto;\n margin-bottom: auto;\n`;\n\nconst ButtonContainer = styled.div`\n padding: 35px;\n width: 90%;\n display: flex;\n justify-content: flex-end;\n flex-direction: row;\n`;\n\nconst continueButtonStyle = {\n root: {\n borderRadius: '5px',\n fontSize: '15px',\n border: 0,\n minWidth: '185px',\n height: '39px'\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none'\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none'\n }\n};\n\nconst abortButtonStyle = {\n root: {\n border: 0,\n fontSize: '15px',\n minWidth: '179px',\n height: '39px'\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none'\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none'\n }\n};\n\n/**\n * view component that contains the instructions to be followed before starting the test\n */\nexport class TestInstructionsView extends Component {\n constructor(props) {\n super(props);\n }\n render() {\n return (\n \n {I18n.get().t('Test_Instructions_Header')}\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","/**\n * plays a sound\n * @param side 'left' ear or 'right' ear, default=both ears\n * @param gain the volume of the tone, between 0 and 1\n * @param frequency the frequency of the tone\n * @param duration the duration of the tone in seconds\n * @param offsetDuration an offset in seconds before the tone is played.\n * @param callback the callback function to execute after sound is played\n */\nexport const playSound = (side, gain, frequency, duration, offsetDuration, callback) => {\n // Default, Safari and older versions of Chrome\n const AudioContext = window.AudioContext || window.webkitAudioContext || false;\n if (!AudioContext) {\n console.error('No audio context available');\n alert('Your device does not support an audio output.');\n return;\n }\n const audioContext = new AudioContext();\n // The volume can not reach an absolute zero, therefore the nearest approximation.\n const ZERO = 0.000001;\n // Fading duration in seconds before and after each sound.\n const fadeDuration = 0.1;\n const oscillator = audioContext.createOscillator();\n const gainNodeL = audioContext.createGain();\n const gainNodeR = audioContext.createGain();\n const merger = audioContext.createChannelMerger(2);\n // connect left and right node to the oscillator\n oscillator.connect(gainNodeL);\n oscillator.connect(gainNodeR);\n // connect channel merger to the left and right node\n gainNodeL.connect(merger, 0, 0);\n gainNodeR.connect(merger, 0, 1);\n // connect the audio destination to the channel merger\n merger.connect(audioContext.destination);\n // Offset of silence\n gainNodeR.gain.setValueAtTime(ZERO, audioContext.currentTime);\n gainNodeL.gain.setValueAtTime(ZERO, audioContext.currentTime);\n // determine on which ear the sound will be played using the given gain\n switch (side) {\n case 'left':\n // play sound on left ear\n gainNodeR.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeL.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeL.gain.exponentialRampToValueAtTime(gain, audioContext.currentTime + fadeDuration + offsetDuration);\n gainNodeL.gain.setValueAtTime(gain, audioContext.currentTime + duration + offsetDuration);\n gainNodeL.gain.exponentialRampToValueAtTime(ZERO, audioContext.currentTime + duration + fadeDuration + offsetDuration);\n break;\n case 'right':\n // play sound on right ear\n gainNodeL.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeR.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeR.gain.exponentialRampToValueAtTime(gain, audioContext.currentTime + fadeDuration + offsetDuration);\n gainNodeR.gain.setValueAtTime(gain, audioContext.currentTime + duration + offsetDuration);\n gainNodeR.gain.exponentialRampToValueAtTime(ZERO, audioContext.currentTime + duration + fadeDuration + offsetDuration);\n break;\n default:\n // play sound on both ears\n gainNodeL.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeL.gain.exponentialRampToValueAtTime(gain, audioContext.currentTime + fadeDuration + offsetDuration);\n gainNodeL.gain.setValueAtTime(gain, audioContext.currentTime + duration + offsetDuration);\n gainNodeL.gain.exponentialRampToValueAtTime(ZERO, audioContext.currentTime + duration + fadeDuration + offsetDuration);\n gainNodeR.gain.setValueAtTime(ZERO, audioContext.currentTime + offsetDuration);\n gainNodeR.gain.exponentialRampToValueAtTime(gain, audioContext.currentTime + fadeDuration + offsetDuration);\n gainNodeR.gain.setValueAtTime(gain, audioContext.currentTime + duration + offsetDuration);\n gainNodeR.gain.exponentialRampToValueAtTime(ZERO, audioContext.currentTime + duration + fadeDuration + offsetDuration);\n break;\n }\n // set the sound type to sine\n oscillator.type = 'sine';\n // set the frequency\n oscillator.frequency.setValueAtTime(frequency, audioContext.currentTime + offsetDuration);\n // start playing the sound\n oscillator.start();\n if (audioContext.state === 'suspended') {\n // Mobile and Safari suspend the audio context if it is not playing.\n audioContext.resume();\n }\n // stop the sound after given amount of seconds\n setTimeout(() => {\n oscillator.stop();\n audioContext.close();\n callback();\n }, (duration + 2 * fadeDuration + offsetDuration) * 1000);\n};\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { DefaultButton, FontIcon, getTheme, PrimaryButton } from 'office-ui-fabric-react';\nimport { playSound } from '../../helper/SoundHelper';\nimport { mergeStyles, mergeStyleSets } from 'office-ui-fabric-react/lib/Styling';\n\nconst TestExecutionContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n`;\n\nconst LeftContainer = styled.div`\n display: flex;\n min-width: 440px;\n flex-direction: column;\n color: white;\n flex: 1;\n`;\n\nconst RightContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex: 2;\n`;\n\nconst ExplanationWrapper = styled.div`\n padding: 55px 70px 0 47px;\n @media only screen and (max-width: 1400px) {\n padding: 25px 40px 0 47px;\n }\n`;\n\nconst HeaderContainer = styled.div`\n display: flex;\n flex-direction: row;\n font-weight: bold;\n font-size: 40px;\n @media only screen and (max-width: 1400px) {\n font-size: 23px;\n }\n`;\n\nconst ExplanationContainer = styled.div`\n display: flex;\n flex-direction: row;\n padding-top: 20px;\n font-size: 18px;\n @media only screen and (max-width: 1400px) {\n font-size: 14px;\n padding-top: 10px;\n }\n`;\n\nconst SoundIconWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n min-width: 450px;\n width: 60%;\n min-height: 45px;\n height: 45px;\n @media only screen and (max-height: 680px) {\n min-width: 350px;\n }\n`;\n\nconst SoundIconContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 100%;\n background-color: ${(props) => props.backgroundColor};\n margin-top: 25px;\n justify-content: center;\n align-items: center;\n visibility: ${(props) => (props.hidden ? 'hidden' : 'visible')};\n`;\n\nconst ButtonContainer = styled.div`\n margin-top: auto;\n padding: 30px 48px 47px 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n min-width: max-content;\n @media only screen and (max-width: 1500px) {\n padding: 30px 15px 27px 15px;\n }\n`;\n\nconst UserIconContainer = styled.div`\n display: flex;\n position: relative;\n flex-direction: column;\n margin-top: auto;\n padding: 10px;\n min-width: 430px;\n @media only screen and (max-width: 1400px) {\n min-width: 350px;\n }\n`;\n\nconst MarginBottom = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n width: 100%;\n`;\n\nconst CountdownOverlay = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n background: 'none';\n width: 100%;\n height: 100%;\n z-index: 10;\n top: -50px;\n left: 0;\n position: absolute;\n font-size: 103px;\n font-weight: bold;\n color: ${(props) => props.fontColor};\n visibility: ${(props) => (props.visible ? 'visible' : 'hidden')};\n`;\n\nconst StyledList = styled.ol`\n padding-left: 15px;\n`;\n\n/**\n * the default gain value\n */\nconst defaultGainValue = 0.0125;\n/**\n * the default frequency in herz\n */\nconst defaultFrequency = 500;\n/**\n * the default length of a sound in seconds\n */\nconst defaultSoundLength = 1.5;\n/**\n * the step size to decrease the current gain value\n */\nconst lowerGainDivisor = 2;\n\n/**\n * an offset in seconds before the tone is played.\n */\nconst offsetDuration = 3;\n\n/**\n * view component that displays the test execution for left or right ear with or without hearing protection\n */\nexport class TestExecutionView extends Component {\n constructor(props) {\n super(props);\n this.interval = null;\n this.state = {\n ear: 'left',\n isTestActive: false,\n withHearingProtection: false,\n currentGainValue: defaultGainValue,\n isSoundPlaying: false,\n isCountdownRunning: false,\n countdownValue: 0\n };\n }\n\n theme = getTheme();\n\n soundIconClass = mergeStyles({\n fontSize: 32,\n height: 50,\n width: 50,\n margin: '0 auto',\n paddingLeft: 8\n });\n classNames = mergeStyleSets({\n whiteIcon: [{ color: this.theme.palette.white }, this.soundIconClass]\n });\n\n commonButtonStyles = {\n root: {\n borderRadius: '4px',\n height: '39px',\n minHeight: '39px',\n fontSize: '15px'\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none'\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none'\n }\n };\n\n beginButtonStyles = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n color: 'white',\n border: '1px solid white',\n minWidth: '195px',\n backgroundColor: this.theme.palette.white\n }\n };\n\n toneButtonStyles = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n boxShadow: '1px 2px 3px #00000079',\n border: 0,\n minWidth: '180px'\n }\n };\n\n abortButtonStyles = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n border: 0,\n color: this.theme.palette.black,\n fontWeight: 'bold',\n minWidth: '195px'\n }\n };\n\n previousSoundButtonStyles = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n border: `1px solid ${this.theme.palette.black}`,\n color: this.theme.palette.black,\n fontWeight: 'bold',\n minWidth: '100%'\n },\n icon: {\n marginBottom: 3\n }\n };\n\n previousTestButtonStylesLeft = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n border: `1px solid ${this.theme.palette.white}`,\n color: this.theme.palette.white,\n fontWeight: 'bold',\n minWidth: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.0)'\n },\n icon: {\n marginBottom: 3\n }\n };\n\n previousTestButtonStylesTestActive = {\n ...this.commonButtonStyles,\n root: {\n ...this.commonButtonStyles.root,\n border: `1px solid ${this.theme.palette.black}`,\n color: this.theme.palette.black,\n fontWeight: 'bold',\n minWidth: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.0)'\n },\n icon: {\n marginBottom: 3\n }\n };\n\n /**\n * switch the current hearing test state to determine which heading is displayed\n */\n switchHeadline = () => {\n if (this.state.ear === 'left' && this.state.withHearingProtection) {\n return I18n.get().t('Test_Execution_LeftWithProtection');\n } else if (this.state.ear === 'left' && !this.state.withHearingProtection) {\n return I18n.get().t('Test_Execution_LeftWithoutProtection');\n } else if (this.state.ear === 'right' && this.state.withHearingProtection) {\n return I18n.get().t('Test_Execution_RightWithProtection');\n } else if (this.state.ear === 'right' && !this.state.withHearingProtection) {\n return I18n.get().t('Test_Execution_RightWithoutProtection');\n }\n };\n\n /**\n * calculates the gain ratio based on the max gain and the gain value at which the user can't hear the sound anymore\n * @param baseValue the max gain value\n * @param value the gain value at which the user can't hear the sound anymore\n */\n calcGainRatio = (baseValue, value) => {\n return value / baseValue;\n };\n\n /**\n * save the test result, reset the values and continue with the next test\n */\n finishCurrentTest = () => {\n // save result in test state\n this.props.dbHandler(this.state.ear, this.state.withHearingProtection, this.calcGainRatio(defaultGainValue, this.state.currentGainValue), () => this.continueWithNextTest());\n // change test status to finished\n this.setState({ isTestActive: false });\n };\n\n /**\n * helper function that takes the current test state and knows next test\n */\n continueWithNextTest = () => {\n this.setState({ currentGainValue: defaultGainValue });\n if (this.state.ear === 'left') {\n this.setState({ ear: 'right' });\n } else if (this.state.ear === 'right' && !this.state.withHearingProtection) {\n this.props.continue();\n this.setState({ ear: 'left', withHearingProtection: true });\n }\n };\n\n /**\n * function that is used when the \"start test\" button is pressed\n */\n callbackStartTest = () => {\n // set the test status to active\n this.setState({ isTestActive: true });\n // play the first sound with initial gain after a three seconds countdown\n this.playWithDelay();\n };\n\n /**\n * Plays the test tone with a delay in form of a countdown.\n */\n playWithDelay = () => {\n playSound(this.state.ear, this.state.currentGainValue, defaultFrequency, defaultSoundLength, offsetDuration, () => this.setState({ isSoundPlaying: false }));\n this.setState({ countdownValue: offsetDuration, isCountdownRunning: true });\n this.interval = setInterval(() => {\n this.setState({ countdownValue: this.state.countdownValue - 1 }, () => {\n if (this.state.countdownValue <= 0) {\n clearInterval(this.interval);\n this.setState({ isCountdownRunning: false, isSoundPlaying: true });\n }\n });\n }, 1000);\n };\n\n /**\n * function that is used when the \"tone heard\" button is pressed\n */\n callbackToneHeard = () => {\n // lower the gain by one step and play a sound afterwards.\n this.setState({ currentGainValue: this.state.currentGainValue / lowerGainDivisor, isSoundPlaying: true }, () => {\n playSound(this.state.ear, this.state.currentGainValue, defaultFrequency, defaultSoundLength, 0, () => this.setState({ isSoundPlaying: false }));\n });\n };\n\n /**\n * Function that is used when the \"previous sound\" button is pressed.\n */\n callbackPreviousSound = () => {\n const newGain = this.state.currentGainValue * lowerGainDivisor;\n this.setState({ currentGainValue: newGain, isSoundPlaying: true }, () => {\n playSound(this.state.ear, this.state.currentGainValue, defaultFrequency, defaultSoundLength, 0, () => this.setState({ isSoundPlaying: false }));\n });\n };\n\n /**\n * Function that is used when the \"previous site\" button ios pressed.\n */\n callbackPreviousTest = () => {\n this.setState({ currentGainValue: defaultGainValue, isTestActive: false });\n if (this.state.ear === 'right' && this.state.withHearingProtection === false) {\n this.setState({ ear: 'left' });\n } else if (this.state.ear === 'left' && this.state.withHearingProtection === true) {\n this.props.back();\n this.setState({ ear: 'right', withHearingProtection: false });\n } else if (this.state.ear === 'right' && this.state.withHearingProtection === true) {\n this.setState({ ear: 'left' });\n }\n };\n\n render() {\n return (\n \n \n \n \n
\n \n {!this.state.isTestActive && (\n \n {this.state.withHearingProtection === true && (\n
  • \n {I18n.get().t('Test_Execution_One')}\n
  • \n )}\n
  • \n {I18n.get().t('Test_Execution_Two')}\n
  • \n
  • \n {I18n.get().t('Test_Execution_Three')}\n
  • \n
  • \n {I18n.get().t('Test_Execution_Four')}\n
  • \n
  • \n {I18n.get().t('Test_Execution_Five')}\n
  • \n
    \n )}\n \n \n \n \n {!this.state.isTestActive && (\n this.callbackStartTest()}\n disabled={this.state.isTestActive}\n />\n )}\n \n {!(this.state.ear === 'left' && this.state.withHearingProtection === false) && (\n this.callbackPreviousTest()}\n />\n )}\n \n \n \n \n \n {this.state.countdownValue}\n \n \n \n \n \n \n \n this.callbackToneHeard()}\n disabled={this.state.isCountdownRunning || !this.state.isTestActive || this.state.isSoundPlaying}\n />\n this.finishCurrentTest()}\n disabled={this.state.isCountdownRunning || !this.state.isTestActive || this.state.isSoundPlaying}\n />\n \n = defaultGainValue\n ? 'arrow-left-gray'\n : 'arrow-left-black'\n }}\n text={I18n.get().t('TestExecution_PreviousSoundLevel')}\n disabled={this.state.isCountdownRunning || !this.state.isTestActive || this.state.isSoundPlaying || this.state.currentGainValue >= defaultGainValue}\n onClick={() => this.callbackPreviousSound()}\n />\n \n \n \n );\n }\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { PrimaryButton, getTheme } from 'office-ui-fabric-react';\nimport { useStoreState } from 'easy-peasy';\nimport { Colors } from '../../styles/Globals';\n\nconst ResultContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n`;\n\nconst HeadlineContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n font-size: 40px;\n font-weight: bold;\n padding: 55px 0 0 51px;\n color: ${(props) => props.fontColor};\n @media only screen and (max-width: 1400px) {\n font-size: 23px;\n padding: 15px;\n }\n`;\n\nconst SubHeadlineContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n font-size: 40px;\n font-weight: bold;\n padding-left: 51px;\n color: ${(props) => props.fontColor};\n @media only screen and (max-width: 1400px) {\n font-size: 23px;\n padding-left: 15px;\n }\n`;\n\nconst ListContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow: auto;\n margin-top: 40px;\n max-height: calc(100vh - 540px);\n @media only screen and (max-width: 1400px) {\n max-height: calc(100vh - 440px);\n }\n`;\n\nconst BottomContainer = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: auto;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n height: 60px;\n padding: 0 50px 50px 50px;\n min-height: max-content;\n @media only screen and (max-width: 1400px) {\n padding: 15px;\n }\n`;\n\nconst BottomTextWrapper = styled.div`\n margin-right: 20px;\n`;\n\nconst List = styled.ul`\n min-height: max-content;\n`;\n\nconst ListItem = styled.li`\n font-size: 16px;\n margin: 15px 51px;\n`;\n\nconst confirmButtonStyle = {\n root: {\n borderRadius: '5px',\n fontSize: '15px',\n border: `1px solid ${Colors.white}`,\n minWidth: 'max-content',\n width: '200px',\n height: '39px',\n marginLeft: 'auto',\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none',\n border: '1px solid #ffffff',\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none',\n border: '1px solid #ffffff',\n },\n};\n\n/**\n * view component that contains the success result of the hearing test\n */\nexport const TestSuccessView = (props) => {\n const theme = getTheme();\n\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n\n return (\n \n {I18n.get().t('Test_Result_HeadlineSuccess')}\n {I18n.get().t('Test_Result_SubHeadlineSuccess')}\n \n \n {I18n.get().t('Test_Result_One')}\n {I18n.get().t('Test_Result_Two')}\n {I18n.get().t('Test_Result_Three')}\n {I18n.get().t('Test_Result_Four')}\n {I18n.get().t('Test_Result_Five')}\n {I18n.get().t('Test_Result_Six')}\n {I18n.get().t('Test_Result_Seven')}\n {I18n.get().t('Test_Result_Eight')}\n {I18n.get().t('Test_Result_Nine')}\n {I18n.get().t('Test_Result_Ten')}\n \n \n \n {I18n.get().t('Test_Result_PleaseConfirmText')}\n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../helper/Localization';\nimport { PrimaryButton, DefaultButton, getTheme } from 'office-ui-fabric-react';\nimport { useStoreState } from 'easy-peasy';\n\nconst ResultContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n background-color: ${(props) => props.backgroundColor};\n`;\n\nconst HeadlineContainer = styled.div`\n margin-top: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n width: 90%;\n color: ${(props) => props.fontColor};\n font-size: 40px;\n font-weight: bold;\n @media only screen and (max-width: 1400px) {\n font-size: 23px;\n }\n`;\n\nconst TextContainer = styled.div`\n margin-bottom: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n width: 90%;\n color: ${(props) => props.fontColor};\n font-size: 30px;\n`;\n\nconst BottomContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n width: 100%;\n padding: 35px;\n`;\n\n/**\n * view component that contains the failed result of the hearing test\n */\nexport const TestFailedView = (props) => {\n const theme = getTheme();\n\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n\n const restartButtonStyle = {\n root: {\n border: 0,\n fontSize: '15px',\n minWidth: '179px',\n height: '39px',\n backgroundColor: theme.palette.neutralSecondary,\n color: theme.palette.white,\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none',\n },\n };\n\n const leaveButtonStyle = {\n root: {\n borderRadius: '5px',\n fontSize: '15px',\n border: 0,\n minWidth: 'max-content',\n width: '200px',\n height: '39px',\n },\n rootHovered: {\n backgroundColor: 'none',\n color: 'none',\n },\n rootPressed: {\n backgroundColor: 'none',\n color: 'none',\n },\n };\n\n return (\n \n {I18n.get().t('Test_Result_HeadlineFailed')}\n \n {isOfflineModeEnabled ? I18n.get().t('Test_Result_TextFailed_Offline') : I18n.get().t('Test_Result_TextFailed')}\n \n \n {!isOfflineModeEnabled && }\n \n \n \n );\n};\n","import * as React from 'react';\nimport I18n from '../../helper/Localization';\nimport { Dialog, DialogType, DialogFooter } from 'office-ui-fabric-react/lib/Dialog';\nimport { PrimaryButton, DefaultButton } from 'office-ui-fabric-react/lib/Button';\nimport { ContextualMenu } from 'office-ui-fabric-react/lib/ContextualMenu';\nimport { useId, useBoolean } from '@uifabric/react-hooks';\n\n/**\n * Basic dialog with custom headline, text and confirm / cancel callbacks\n * @param props the hidden status, the headline text, the sub-text, the confirm callback and the cancel callback.\n */\nexport const BasicDialog = (props) => {\n const [isDraggable] = useBoolean(false);\n const labelId = useId('dialogLabel');\n const subTextId = useId('subTextLabel');\n\n const dragOptions = {\n moveMenuItemText: 'Move',\n closeMenuItemText: 'Close',\n menu: ContextualMenu\n };\n const dialogContentProps = {\n type: DialogType.normal,\n title: props.title,\n closeButtonAriaLabel: 'Close',\n subText: props.text\n };\n const modalProps = React.useMemo(\n () => ({\n titleAriaId: labelId,\n subtitleAriaId: subTextId,\n isBlocking: false,\n dragOptions: isDraggable ? dragOptions : undefined\n }),\n [isDraggable]\n );\n\n const cancleButtonStyles = {\n root: {\n border: 'unset'\n }\n };\n\n return (\n <>\n \n \n );\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport TestLayout from './TestLayout';\nimport History from '../BrowserHistory';\nimport I18n from '../../helper/Localization';\nimport { OfflineIntroView } from './OfflineIntroView';\nimport { TestIntroView } from './TestIntroView';\nimport { TestInstructionsView } from './TestInstructionsView';\nimport { TestExecutionView } from './TestExecutionView';\nimport { TestSuccessView } from './TestSuccessView';\nimport { TestFailedView } from './TestFailedView';\nimport { BasicDialog } from '../dialogs/BasicDialog';\n\n/**\n * component that handles the complete hearing test\n */\nexport const HearingTest = (props) => {\n const minimumInsulationPerEar = 12;\n\n /**\n * Whether the abort dialog is open or not.\n */\n const [isAbortDialogOpen, setIsAbortDialogOpen] = useState(false);\n\n /**\n * State of the current test progress.\n */\n const [progress, setProgress] = useState(0);\n\n /**\n * State of the left db value without protection.\n */\n const [dbLeftWithoutProtection, setDbLeftWithoutProtection] = useState(-1);\n\n /**\n * State of the right db value without protection.\n */\n const [dbRightWithoutProtection, setDbRightWithoutProtection] = useState(-1);\n\n /**\n * State of the left db value with protection.\n */\n const [dbLeftWithProtection, setDbLeftWithProtection] = useState(-1);\n\n /**\n * State of the right db value with protection.\n */\n const [dbRightWithProtection, setDbRightWithProtection] = useState(-1);\n\n /**\n * Whether the hearing test is busy or not.\n */\n const [isBusy, setIsBusy] = useState(false);\n\n /**\n * continues the test progress\n */\n const progressHandler = useCallback(() => {\n setProgress(Math.min(5, progress + 1));\n }, [progress]);\n\n useEffect(() => {\n if(props.startProgress) {\n setProgress(props.startProgress);\n }\n }, [props.startProgress])\n\n /**\n * Finish test after last test step is finished.\n */\n useEffect(() => {\n if (dbRightWithProtection !== -1 && progress === 3) {\n try {\n setIsBusy(true);\n props.finishAndSaveTest(\n dbLeftWithoutProtection,\n dbLeftWithProtection,\n dbRightWithoutProtection,\n dbRightWithProtection,\n calcInsulation(dbLeftWithoutProtection, dbLeftWithProtection),\n calcInsulation(dbRightWithoutProtection, dbRightWithProtection),\n calcInsulation(dbLeftWithoutProtection, dbLeftWithProtection) >= minimumInsulationPerEar,\n calcInsulation(dbRightWithoutProtection, dbRightWithProtection) >= minimumInsulationPerEar\n );\n progressHandler();\n } catch (error) {\n console.error(error);\n } finally {\n setIsBusy(false);\n }\n }\n }, [dbLeftWithProtection, dbLeftWithoutProtection, dbRightWithProtection, dbRightWithoutProtection, progress, progressHandler, props, setDbRightWithProtection]);\n\n /**\n * restarts the test for the same user with the same order position\n */\n const restartHandler = () => {\n if (props.isOfflineModeEnabled) {\n setProgress(-1);\n } else {\n setProgress(0);\n }\n setDbLeftWithoutProtection(-1);\n setDbRightWithoutProtection(-1);\n setDbLeftWithProtection(-1);\n setDbRightWithProtection(-1);\n if (props.updateOfflineNotes) {\n props.updateOfflineNotes('');\n }\n };\n\n /**\n * go back in the test progress\n */\n const progressHandlerBackwards = () => {\n setProgress(Math.min(5, progress - 1));\n };\n\n /**\n * sets the db state for the ear site with and without hearing protection based on params\n * @param site the ear site\n * @param withProtection if the test was with or without hearing protection\n * @param db the calculated decibel value\n */\n const dbHandler = (site, withProtection, db, callback) => {\n if (site === 'left' && !withProtection) {\n setDbLeftWithoutProtection(db);\n callback();\n } else if (site === 'right' && !withProtection) {\n setDbRightWithoutProtection(db);\n callback();\n } else if (site === 'left' && withProtection) {\n setDbLeftWithProtection(db);\n callback();\n } else if (site === 'right' && withProtection) {\n setDbRightWithProtection(db);\n }\n };\n\n /**\n * toggle the visibility of the abort dialog\n */\n const toggleAbortDialog = () => {\n setIsAbortDialogOpen(!isAbortDialogOpen);\n };\n\n /**\n * aborts the current test\n */\n const abortHandler = () => {\n setDbLeftWithoutProtection(-1);\n setDbRightWithoutProtection(-1);\n setDbLeftWithProtection(-1);\n setDbRightWithProtection(-1);\n if (props.isOfflineModeEnabled) {\n setProgress(-1);\n if (props.updateOfflineNotes) {\n props.updateOfflineNotes('');\n }\n setIsAbortDialogOpen(false);\n } else {\n History.goBack();\n }\n };\n\n /**\n * calculates the test result db\n */\n const calcInsulation = (dbWithoutProtection, dbWithProtection) => {\n return Math.round(20 * Math.log10(dbWithProtection / dbWithoutProtection));\n };\n\n /**\n * helper method that returns the correct test view\n * @param param\n */\n const renderSwitch = (param) => {\n switch (param) {\n case -1:\n return (\n props.updateExecutorMail(email)}\n updateNotes={(notes) => props.updateOfflineNotes(notes)}\n />\n );\n case 0:\n return ;\n case 1:\n return ;\n case 2:\n return ;\n case 3:\n return ;\n case 4:\n return calcInsulation(dbLeftWithoutProtection, dbLeftWithProtection) >= minimumInsulationPerEar &&\n calcInsulation(dbRightWithoutProtection, dbRightWithProtection) >= minimumInsulationPerEar ? (\n \n ) : (\n \n );\n default:\n return
    ;\n }\n };\n\n return (\n \n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { HearingTest } from './HearingTest';\nimport { useStoreState } from 'easy-peasy';\n\n/**\n * component that handles the complete hearing test\n */\nexport const OfflineHearingTest = () => {\n /**\n * State of the email address of the test executor (needed for offline mode).\n */\n const [executorEmail, setExecutorEmail] = useState('');\n\n /**\n * State of the notes the test executor writes to assign the test result to an order (needed for offline mode).\n */\n const [offlineNotes, setOfflineNotes] = useState('');\n\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n\n /**\n * Initialize the hearing test.\n */\n useEffect(() => {\n if (isOfflineModeEnabled) {\n const lastLoggedInUserMail = localStorage.getItem('lastLoggedInUserMail');\n setExecutorEmail(lastLoggedInUserMail);\n }\n }, [isOfflineModeEnabled]);\n\n /**\n * Save the test result in local browser storage.\n */\n const saveTestResultLocally = (\n dbLeftWithoutProtection,\n dbLeftWithProtection,\n dbRightWithoutProtection,\n dbRightWithProtection,\n insulationLeft,\n insulationRight,\n isSuccessfulLeft,\n isSuccessfulRight\n ) => {\n // Retrieve the currently stored offline test results.\n const currentStoredResults = JSON.parse(localStorage.getItem('offlineTestResults'));\n // Create the new test result.\n const newTestResult = {\n executorEmail: executorEmail,\n notes: offlineNotes,\n dateExecuted: new Date().toISOString(),\n measurementLeftWithoutProtection: dbLeftWithoutProtection,\n measurementLeftWithProtection: dbLeftWithProtection,\n measurementRightWithoutProtection: dbRightWithoutProtection,\n measurementRightWithProtection: dbRightWithProtection,\n insulationLeft: insulationLeft,\n insulationRight: insulationRight,\n isSuccessfulLeft: isSuccessfulLeft,\n isSuccessfulRight: isSuccessfulRight\n };\n // Create the new array of offline test results.\n let newStoredResults;\n if (currentStoredResults) {\n newStoredResults = [...currentStoredResults, newTestResult];\n } else {\n newStoredResults = [newTestResult];\n }\n // Save all offline test results in the local storage.\n localStorage.setItem('offlineTestResults', JSON.stringify(newStoredResults));\n };\n\n return (\n setOfflineNotes(newValue)}\n offlineNotes={offlineNotes}\n updateExecutorMail={(newValue) => setExecutorEmail(newValue)}\n executorEmail={executorEmail}\n />\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { LandscapeTipOverlay } from './components/LandscapeTipOverlay';\nimport { OfflineHearingTest } from './components/hearingTest/OfflineHearingTest';\nimport I18n from './helper/Localization';\n\n/** Offline app component that is used when the user is in offline mode. */\nconst OfflineApp = () => {\n // I18n initialization\n const i18nPromise = I18n.getPromise();\n\n /**\n * Whether the component is initialized correctly.\n */\n const [isInitialized, setIsInitialized] = useState(false);\n\n useEffect(() => {\n Promise.all([i18nPromise]).then(() => {\n setIsInitialized(true);\n });\n }, [i18nPromise]);\n\n return isInitialized ? (\n <>\n \n \n \n ) : null;\n};\n\nexport default OfflineApp;\n","import React from 'react';\nimport { useTable, useSortBy, useFlexLayout } from 'react-table';\nimport styled from 'styled-components';\nimport I18n from '../helper/Localization';\nimport { Colors } from '../styles/Globals';\n\nconst TableWrapper = styled.div`\n min-width: max-content !important;\n max-height: 100%;\n display: flex;\n flex: 1;\n flex-direction: column;\n`;\n\nconst Header = styled.div`\n display: flex;\n justify-content: left;\n align-items: center;\n`;\n\nconst HeaderLabel = styled.div`\n font-weight: bold;\n color: #8b8b8b;\n font-size: 14px;\n height: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst StyledRow = styled.div`\n padding: 15px 35px;\n border-bottom: solid 1px ${Colors.borderGray};\n :hover {\n background-color: ${Colors.hoverLightGray};\n }\n`;\n\nconst StyledCell = styled.div`\n margin-top: auto;\n margin-bottom: auto;\n word-wrap: break-word;\n font-size: 14px;\n`;\n\nconst HeaderRowWrapper = styled.div`\n border-bottom: solid 1px ${Colors.borderGray};\n padding: 10px 35px 10px 35px;\n margin-right: ${(props) => props.marginRight + 'px'};\n`;\n\nconst BodyWrapper = styled.div`\n display: block;\n width: 100%;\n overflow-y: auto;\n height: auto;\n`;\n\n/**\n *\n */\nconst getTableScrollbarWidth = () => {\n const table = document.getElementById('table-body');\n let scrollbarWidth = 0;\n if (table) {\n scrollbarWidth = table.offsetWidth - table.clientWidth;\n }\n return scrollbarWidth;\n};\n\n/**\n * Reset the scroll bar after new data is available.\n */\nconst resetScroll = () => {\n let tableBody = document.getElementById('table-body');\n tableBody.scrollTop = 0;\n};\n\n/**\n * Generic table which supports basic sorting.\n */\nconst Table = (props) => {\n const [scrollbarWidth, setScrollbarWidth] = React.useState(getTableScrollbarWidth());\n\n React.useEffect(() => {\n function triggerRender() {\n // Set value to scrollbar width result, thus not triggering a re-render, if the height is the same.\n setScrollbarWidth(getTableScrollbarWidth());\n }\n window.addEventListener('resize', triggerRender);\n setScrollbarWidth(getTableScrollbarWidth());\n });\n\n React.useEffect(() => {\n resetScroll();\n }, [props.data]);\n\n // Case insensitive sorting for strings, numbers and dates.\n const compareIgnoreCase = (value1, value2) => {\n if (value1 === value2) {\n return 0;\n }\n if (value1 == null) {\n return -1;\n }\n if (value2 == null) {\n return 1;\n }\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n return value1.toLowerCase().localeCompare(value2.toLowerCase());\n }\n if (typeof value1 === 'number' && typeof value2 === 'number') {\n return value1 > value2 ? 1 : -1;\n }\n if (value1 instanceof Date && value2 instanceof Date) {\n return value1 > value2 ? 1 : -1;\n }\n console.warn('Unknown comparison types:', typeof value1, typeof value2);\n };\n\n const defaultColumn = React.useMemo(\n () => ({\n minWidth: 30,\n width: 150,\n maxWidth: 200,\n }),\n []\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable(\n {\n autoResetSortBy: false,\n columns: props.columns,\n data: props.data,\n defaultColumn,\n disableSortBy: props.disableSort,\n sortTypes: {\n alphanumeric: (row1, row2, columnName) => {\n return compareIgnoreCase(row1.values[columnName], row2.values[columnName]);\n },\n },\n },\n useSortBy,\n useFlexLayout\n );\n\n return (\n \n {(props.showHeader || props.showHeader == null) && (\n \n {headerGroups.map((headerGroup, i) => (\n
    \n {headerGroup.headers.map((column, i) => (\n \n
    \n {column.render('Header')}\n {column.isSorted && {column.isSortedDesc ? '↓' : '↑'}}\n
    \n
    \n ))}\n
    \n ))}\n \n )}\n \n {rows.map((row, i) => {\n prepareRow(row);\n return (\n props.onRowClick && props.onRowClick(row.original)}>\n {row.cells.map((cell) => {\n return {cell.render('Cell')};\n })}\n \n );\n })}\n \n \n );\n};\n\nexport default Table;\n","import { UserAgentApplication } from 'msal';\nimport { _config } from '../OnlineApp';\n\n/**\n * Determines from the error message whether a user interaction is required.\n * @param {string} errorMessage The text of the current error message\n */\nexport const requiresInteraction = (errorMessage) => {\n if (!errorMessage || !errorMessage.length) {\n return false;\n }\n return errorMessage.indexOf('consent_required') > -1 || errorMessage.indexOf('interaction_required') > -1 || errorMessage.indexOf('login_required') > -1;\n};\n\n/**\n * Determines whether the current browser is an Internet Explorer.\n */\nexport const isIE = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ') > -1;\n const msie11 = ua.indexOf('Trident/') > -1;\n // If you as a developer are testing using Edge InPrivate mode, please add \"isEdge\" to the if check\n const isEdge = ua.indexOf('Edge/') > -1;\n return msie || msie11 || isEdge;\n};\n\n/**\n * Retrieves an authentication token.\n * @param {string[]} scopes The scopes to request a token for\n */\nexport const getToken = async (scopes) => {\n const app = await msalApp();\n const azureAdOptions = (await _config).azureAdOptions;\n const request = { scopes: scopes, redirectUri: window.location.origin + azureAdOptions.callbackPath };\n const authResponse = await app.acquireTokenSilent(request).catch((error) => {\n if (requiresInteraction(error.errorCode)) {\n return app.acquireTokenRedirect(request);\n }\n });\n return authResponse ? authResponse.accessToken : null;\n};\n\n/**\n * Primary Sign-In method for authorization.\n * Returns true, if the user is signed in, false otherwise.\n */\nexport const signIn = async () => {\n const app = await msalApp();\n if (app.redirectError && app.redirectError.errorMessage.indexOf('AADB2C90118') > -1) {\n // App is redirecting due to forgotten password.\n return false;\n }\n if (app.getAccount()) {\n // User is already signed in.\n return true;\n }\n await login();\n // The app will redirect to sign-in, thus the user is not yet signed in.\n return false;\n};\n\n/**\n * Sign-out the user\n */\nexport const logout = async () => {\n const app = await msalApp();\n localStorage.removeItem('lastLoggedInUserMail');\n // Removes all sessions, need to call AAD endpoint to do full logout\n app.logout(app.getAccount());\n};\n\n/**\n * Internal singleton MSAL-client\n */\nlet _app = undefined;\n\n/**\n * Authentication handler for login and acquiring tokens.\n */\nexport const msalApp = async () => {\n if (!_app) {\n // initialize the MSAL-client\n const azureAdOptions = (await _config).azureAdOptions;\n const b2COptions = (await _config).b2COptions;\n const flow = window.location.pathname.includes('signup') ? b2COptions.signUp : b2COptions.signUpAndSignIn;\n _app = new UserAgentApplication({\n auth: {\n clientId: azureAdOptions.clientId,\n authority: `${azureAdOptions.instance}/tfp/${azureAdOptions.domain}/${flow}`,\n validateAuthority: false,\n redirectUri: window.location.origin + azureAdOptions.callbackPath,\n navigateToLoginRequestUrl: true,\n postLogoutRedirectUri: window.location.origin,\n },\n cache: {\n cacheLocation: 'localStorage',\n storeAuthStateInCookie: isIE(),\n },\n });\n _app.handleRedirectCallback(authRedirectCallBack);\n }\n return _app;\n};\n\n/**\n * Login request against the configured authority.\n */\nconst login = async () => {\n const b2COptions = (await _config).b2COptions;\n const loginRequest = {\n scopes: b2COptions.Scopes,\n };\n await _app.loginRedirect(loginRequest);\n};\n\n/**\n * Authorization redirect callback. This is called after the user has interacted with the login dialog.\n * @param {*} error An error has occurred and must be handled.\n * @param {*} response The response containing tokens.\n */\nconst authRedirectCallBack = async (error, response) => {\n const b2COptions = (await _config).b2COptions;\n // Error handling\n if (error) {\n // Check for forgot password error\n if (error.errorMessage.indexOf('AADB2C90118') > -1) {\n try {\n const azureAdOptions = (await _config).azureAdOptions;\n // Password reset policy/authority\n _app.authority = `${azureAdOptions.instance}/tfp/${azureAdOptions.domain}/${b2COptions.passwordReset}`;\n await login();\n } catch (err) {\n console.error(err);\n }\n }\n } else {\n // We need to reject id tokens that were not issued with the default sign-in policy.\n if (response.tokenType === 'id_token' && response.idToken.claims['tfp'] !== b2COptions.signUpAndSignIn) {\n _app.logout();\n }\n }\n};\n","import { getToken } from './AuthHelper';\nimport { _config } from '../OnlineApp';\n\n/**\n * Fetches the API for a simple string response.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nexport const fetchApiString = (relativePath, abortSignal) => {\n return fetchApi(relativePath, 'GET', null, abortSignal).then((response) => response.text());\n};\n\n/**\n * Fetches the API for a JSON object.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nexport const fetchApiObject = (relativePath, abortSignal) => {\n return fetchApi(relativePath, 'GET', null, abortSignal).then((response) => response.json());\n};\n\n/**\n * Posts a request to the backend API.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {any} body The object to put in the body of the request\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nexport const postToApi = (relativePath, body, abortSignal) => {\n return fetchApi(relativePath, 'POST', JSON.stringify(body), abortSignal).then((response) => {\n if (response.ok) {\n return response.json();\n }\n throw { status: response.status, text: response.text() };\n });\n};\n/**\n * Posts a request to the backend API.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {any} body The object to put in the body of the request\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nexport const postToApiBlob = async (relativePath, body, fileName, abortSignal) => {\n return fetchApi(relativePath, 'POST', body, abortSignal)\n .then((response) => response.blob())\n .then((blob) => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n });\n};\n\n/**\n * Calls the backend API.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {string} method The HTTP verb to use.\n * @param {any} body The object to put in the body of the request.\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nconst fetchApi = async (relativePath, method, body, abortSignal) => {\n const apiConfig = (await _config).apiOptions;\n return fetchWithHeader(`${apiConfig.baseUrl}/${relativePath}`, method, [apiConfig.scope], body, abortSignal);\n};\n\n/**\n * Fetches data from graph API with authentication.\n * @param {string} relativePath The relative path on the graph API to fetch\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nexport const fetchFromGraph = async (relativePath, abortSignal) => {\n const graphConfig = (await _config).graphOptions;\n return fetchWithHeader(`${graphConfig.baseUrl}/${relativePath}`, 'GET', graphConfig.scopes);\n};\n\n/**\n * Fetches the API with required default headers.\n * @param {string} relativePath The relative path to the endpoint to query.\n * @param {string} method The HTTP verb to use.\n * @param {string[]} scopes The scopes to request for authorization.\n * @param {any} body The object to put in the body of the request.\n * @param {signal} abortSignal An abort signal to cancel the request.\n */\nconst fetchWithHeader = async (url, method, scopes, body, abortSignal) => {\n const token = await getToken(scopes);\n return fetch(url, {\n method,\n withCredentials: true,\n headers: {\n 'Time-Offset': new Date().getTimezoneOffset() * -1,\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n 'Accept-Language': 'de-de'\n },\n signal: abortSignal,\n body\n }).catch((error) => {\n throw error;\n });\n};\n","/**\n * expects a datetime string and returns a formatted date string.\n */\n export const toFormattedDate = (locale, dateTimeString) => {\n const date = new Date(dateTimeString);\n const options = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n };\n return date.toLocaleDateString(locale, options);\n };\n /**\n * expects a datetime string and returns a formatted date and time string.\n */\n export const toFormattedDateTime = (locale, dateTimeString) => {\n const date = new Date(dateTimeString);\n const options = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n };\n return date.toLocaleString(locale, options);\n };\n /**\n * expects a datetime string and returns a formatted date and time string.\n */\n export const toCustomFormattedDateTime = (dateTimeString) => {\n const date = new Date(dateTimeString);\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return `${('0' + day).slice(-2)}.${('0' + month).slice(-2)}.${year} - ${('0' + hours).slice(-2)}:${('0' + minutes).slice(-2)} Uhr`;\n };\n ","import React from 'react';\nimport styled from 'styled-components';\nimport { PrimaryButton, getTheme, Label } from 'office-ui-fabric-react';\nimport I18n from '../helper/Localization';\n\nconst CurrentPageDisplay = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 2px;\n border: 1px solid ${(props) => props.borderColor};\n min-height: 25px;\n max-height: 25px;\n min-width: 30px;\n max-width: 30px;\n margin: 0 10px;\n`;\n\nconst TableControls = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n margin: 10px 60px 0 60px;\n @media only screen and (max-width: 1400px) {\n margin: 10px 20px 0 20px;\n }\n`;\n\n/**\n * Basic controls for paged table.\n */\nexport const PaginationControls = (props) => {\n const theme = getTheme();\n\n /**\n * Styles for the page control button.\n */\n const pageControlButtonStyles = {\n root: {\n backgroundColor: theme.palette.neutralPrimary,\n border: 'unset',\n borderRadius: '2px',\n height: 25,\n width: 30,\n minWidth: 0,\n padding: 0,\n margin: '0 10px'\n },\n rootHovered: {\n backgroundColor: 'none',\n border: 'unset'\n },\n rootPressed: {\n backgroundColor: 'none',\n border: 'unset'\n },\n rootFocused: {\n border: 'unset',\n outline: 0\n }\n };\n\n /**\n * Styles for the table control button.\n */\n const tableControlButtonStyles = {\n root: {\n backgroundColor: theme.palette.neutralPrimary,\n border: 'unset',\n borderRadius: '2px',\n height: 25,\n width: 75,\n minWidth: 0,\n margin: '0 10px'\n },\n rootHovered: {\n backgroundColor: 'none',\n border: 'unset',\n outline: 0\n },\n rootPressed: {\n backgroundColor: 'none',\n border: 'unset',\n outline: 0\n },\n rootFocused: {\n border: 'unset',\n outline: 0\n }\n };\n return (\n \n \n \n {props.currentPage}\n \n \n = props.maxPages}\n styles={tableControlButtonStyles}\n text={I18n.get().t('TableControls_PageForward')}\n onClick={props.navigateForward}\n />\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react/lib/Spinner';\n\nconst BusySpinnerContainer = styled.div`\n display: flex;\n`;\n\n/**\n * Basic busy spinner component.\n */\nexport const BusySpinner = (props) => {\n return (\n <>\n {props.isBusy ? (\n \n \n \n ) : null}\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { BusySpinner } from './busyIndicators/BusySpinner';\nimport { SpinnerSize } from 'office-ui-fabric-react/lib/Spinner';\nimport { TextField, IconButton } from 'office-ui-fabric-react';\n\nconst SearchBoxWrapper = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n position: relative;\n`;\n\nconst SearchBoxBusyWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 10px;\n z-index: 1;\n`;\n\n/**\n * Custom search box component.\n */\nexport const CustomSearchBox = (props) => {\n /**\n * Styles of the search box.\n */\n const searchBoxStyles = {\n root: {\n width: props.width\n },\n fieldGroup: {\n maxHeight: '24px',\n height: '24px',\n borderRadius: '2px',\n padding: '1px 0'\n }\n };\n\n /**\n * Icon props for the search button.\n */\n const searchButtonIcon = {\n iconName: 'Search'\n };\n\n /**\n * Styles for the search button.\n */\n const searchButtonStyles = {\n root: {\n position: 'absolute',\n right: 1,\n height: 21,\n width: 30,\n fontSize: 11\n },\n rootHovered: {\n backgroundColor: '#F7F7F7'\n },\n rootPressed: {\n backgroundColor: '#F7F7F7',\n color: 'none'\n },\n rootFocused: {\n outline: 0\n }\n };\n\n return (\n \n \n \n \n {\n props.updateSearchValue(newValue);\n if (props.updateLastDataUpdate) {\n props.updateLastDataUpdate(new Date());\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n props.applySearch();\n }\n }}\n />\n \n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\nimport I18n from '../../../helper/Localization';\nimport { PrimaryButton, getTheme } from 'office-ui-fabric-react';\nimport { Colors } from '../../../styles/Globals';\nimport Table from '../../Table';\nimport { postToApi } from '../../../helper/ApiHelper';\nimport { toFormattedDate } from '../../../helper/DateFormatHelper';\nimport { PaginationControls } from '../../PaginationControls';\nimport { BusySpinnerOverlay } from '../../busyIndicators/BusySpinnerOverlay';\nimport { CustomSearchBox } from '../../CustomSearchBox';\n\n/**\n * styled components\n */\nconst ActionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n`;\n\nconst DebtorSearchContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: ${Colors.backgroundGray};\n padding: 20px;\n border: 1px solid var(--unnamed-color-f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n`;\n\nconst DebtorSearchTable = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: auto;\n`;\n\nconst Text = styled.p`\n color: var(--unnamed-color-000000);\n text-align: left;\n margin: 0px;\n font: Bold 12px/15px NHaasGroteskTXW01-75Bd;\n letter-spacing: 0px;\n color: #000000;\n opacity: 1;\n`;\n\nconst TableWrapper = styled.div`\n display: flex;\n flex: 1;\n overflow: auto;\n position: relative;\n`;\n\nconst EmptyPageMassage = styled.div`\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n`;\n\n/**\n * Debtor search component\n */\nconst DebtorSearch = (props) => {\n /** Request abort controller. */\n const abortController = new AbortController();\n\n const [searchValue, setSearchValue] = useState('');\n\n /**\n * State of the currently fetched debtors.\n */\n const [debtors, setDebtors] = useState([]);\n\n /**\n * State of the currently filtered debtors.\n */\n const [filteredDebtors, setFilteredDebtors] = useState([]);\n\n /**\n * The maximum number of pages of the current fetched data.\n */\n const [maxPages, setMaxPages] = useState(1);\n\n /**\n * The current selected data page.\n */\n const [currentPage, setCurrentPage] = useState(1);\n\n /**\n * visible state for the busy indicator\n */\n const [isBusy, setIsBusy] = useState(false);\n\n /**\n * State that is used to trigger the search and therefore a new fetch.\n */\n const [searchToggle, setSearchToggle] = useState(false);\n\n /**\n * Reference to the previous search value to compare with the current search value.\n */\n const previousSearchValue = useRef('');\n\n /**\n * Handle the filter of already assigned debtors.\n */\n useEffect(() => {\n if (props.assignedDebtors && props.assignedDebtors.length > 0) {\n // Create shallow copy of all debtors.\n let tmpDebtors = [...debtors];\n // Filter out the already assigned debtors.\n tmpDebtors = tmpDebtors.filter((deb) => !props.assignedDebtors.some((assDebtor) => assDebtor.id === deb.id));\n // Set the state of the filtered debtors.\n setFilteredDebtors([...tmpDebtors]);\n } else {\n // If no debtors are assigned yet, the filtered are the same.\n setFilteredDebtors([...debtors]);\n }\n }, [props.assignedDebtors, debtors]);\n\n /**\n * Mimics a ComponentDidMount lifecycle method\n */\n useEffect(() => {\n const fetchData = async () => {\n try {\n setIsBusy(true);\n const defaultReqBody = {\n itemsPerPage: 25,\n sortDirection: 1,\n sortPropertyName: 'CompanyName',\n };\n let reqBody;\n if (searchValue && searchValue !== '') {\n if (searchValue !== previousSearchValue.current) {\n reqBody = {\n filterText: searchValue.toLowerCase(),\n pageToDeliver: 1,\n ...defaultReqBody,\n };\n } else {\n reqBody = {\n filterText: searchValue.toLowerCase(),\n pageToDeliver: currentPage,\n ...defaultReqBody,\n };\n }\n } else {\n reqBody = {\n pageToDeliver: currentPage,\n ...defaultReqBody,\n };\n }\n const data = await postToApi('v1/Debtor/Paged', reqBody, abortController.signal);\n if (data) {\n const formattedData = data.results.map((debtor) => {\n const result = {\n id: debtor.id,\n identifier: debtor.identifier,\n companyName: debtor.companyName ? debtor.companyName : '',\n address: `${debtor.street ? debtor.street : ''} ${debtor.houseNumber ? debtor.houseNumber : ''} ${debtor.postalCode ? debtor.postalCode : ''} ${\n debtor.city ? debtor.city : ''\n }`,\n dateCreated: toFormattedDate('de-DE', debtor.dateCreated),\n };\n return result;\n });\n setDebtors(formattedData);\n }\n setCurrentPage(data.page);\n setMaxPages(data.pagesAvailable);\n } catch (error) {\n setMaxPages(1);\n setCurrentPage(1);\n setDebtors([]);\n } finally {\n previousSearchValue.current = searchValue;\n setIsBusy(false);\n }\n };\n fetchData();\n }, [currentPage, setCurrentPage, searchToggle, setSearchToggle]);\n\n /**\n * fluent ui theme\n */\n const theme = getTheme();\n /**\n * fluent ui\n */\n const buttonStyles = {\n icon: {\n color: 'white',\n fontSize: 10,\n },\n root: {\n border: 0,\n fontSize: 10,\n borderRadius: '2px',\n boxShadow: '1px 2px 3px #0000003C',\n backgroundColor: theme.palette.themePrimary,\n width: 22,\n height: 22,\n marginRight: 10,\n },\n rootHovered: {\n backgroundColor: 'none',\n },\n\n rootPressed: {\n backgroundColor: 'none',\n },\n };\n\n const columns = [\n {\n Header: '',\n accessor: 'identifier',\n width: 60,\n },\n {\n Header: '',\n accessor: 'companyName',\n width: 120,\n },\n {\n Header: '',\n accessor: 'address',\n width: 120,\n },\n {\n Header: '',\n accessor: 'dateCreated',\n width: 80,\n },\n {\n Header: '',\n accessor: 'select',\n width: 40,\n Cell: (table) => {\n const debtor = table.row.original;\n return (\n \n {\n event.preventDefault();\n props.selectDebtor(debtor);\n }}\n />\n \n );\n },\n },\n ];\n\n return (\n \n {I18n.get().t('Debtor_Search_Title')}\n
    \n setSearchValue(newValue)}\n applySearch={() => {\n setSearchToggle(!searchToggle);\n setCurrentPage(1);\n }}\n />\n
    \n \n \n \n {filteredDebtors.length <= 0 && {I18n.get().t('DebtorTable_EmptyPageMessage')}}\n {filteredDebtors.length >= 1 && }\n \n setCurrentPage(currentPage - 1)}\n navigateToBegin={() => setCurrentPage(1)}\n navigateToEnd={() => setCurrentPage(maxPages)}\n navigateForward={() => setCurrentPage(currentPage + 1)}\n />\n \n \n );\n};\n\nexport default DebtorSearch;\n","import React from 'react';\nimport I18n from '../../../helper/Localization';\nimport styled from 'styled-components';\nimport { IconButton, getTheme } from 'office-ui-fabric-react';\nimport Table from '../../Table';\n\n/**\n * styled components\n */\nconst ActionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n`;\n\nconst DebtorTable = styled.div`\n height: 230px;\n margin-right: 20px;\n`;\n\nconst Text = styled.p`\n color: var(--unnamed-color-000000);\n text-align: left;\n margin: 0px;\n font: Bold 12px/15px NHaasGroteskTXW01-75Bd;\n letter-spacing: 0px;\n color: #000000;\n opacity: 1;\n`;\n\n/**\n * Debtor list component\n */\nconst DebtorList = (props) => {\n /**\n * fluent ui theme\n */\n const theme = getTheme();\n /**\n * fluent ui\n */\n const buttonStyles = {\n icon: {\n color: 'white',\n fontSize: 10\n },\n root: {\n border: 0,\n borderRadius: '2px',\n boxShadow: '1px 2px 3px #0000003C',\n backgroundColor: theme.palette.themePrimary,\n width: 22,\n height: 22,\n marginRight: 10\n },\n rootHovered: {\n backgroundColor: 'none'\n },\n\n rootPressed: {\n backgroundColor: 'none'\n }\n };\n\n const columns = [\n {\n Header: 'Nummer',\n accessor: 'identifier',\n width: 70\n },\n {\n Header: 'Firmenname',\n accessor: 'companyName',\n width: 120\n },\n {\n Header: 'Adresse',\n accessor: 'address',\n width: 120\n },\n {\n Header: 'Aktionen',\n accessor: 'interactions',\n width: 20,\n Cell: (table) => {\n const debtor = table.row.original;\n return (\n \n props.deselectDebtor(debtor)} />\n \n );\n }\n }\n ];\n\n return (\n \n {I18n.get().t('Debtor_List_Title')}\n \n
    \n \n \n );\n};\n\nexport default DebtorList;\n","import { DefaultButton } from 'office-ui-fabric-react';\nimport React from 'react';\nimport I18n from '../../../helper/Localization';\n\n/**\n * The button to open the end customer dialog.\n */\nexport const OpenEndCustomerDialogButton = (props) => {\n /**\n * Styles of the button.\n */\n const buttonStyles = {\n root: {\n minWidth: '100%',\n }\n };\n\n return ;\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Colors } from '../../../styles/Globals';\nimport { IconButton } from 'office-ui-fabric-react';\n\nconst TagContainer = styled.div`\n display: flex;\n align-items: center;\n width: max-content;\n position: relative;\n background-color: ${(props) => props.backgroundColor};\n border-radius: 4px;\n margin: 5px;\n`;\n\nconst TagTextWrapper = styled.div`\n font-size: 12px;\n color: ${Colors.white};\n padding: 3px 10px;\n`;\n\n/**\n * Tag to display a single end customer number.\n */\nexport const EndCustomerNumberTag = (props) => {\n /**\n * Styles of the delete button.\n */\n const deleteButtonStyles = {\n root: {\n minHeight: 20,\n maxHeight: 20,\n minWidth: 20,\n maxWidth: 20,\n marginRight: 6\n },\n icon: {\n fontSize: 10,\n color: Colors.white\n },\n rootHovered: {\n backgroundColor: 'none',\n outline: 0\n },\n rootPressed: {\n backgroundColor: 'none',\n outline: 0\n },\n rootFocused: {\n backgroundColor: 'none',\n outline: 0\n }\n };\n\n /**\n * Props of the delete icon.\n */\n const deleteIconProps = {\n iconName: 'ChromeClose'\n };\n\n return (\n \n {props.endCustomerNumber}\n \n \n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Panel, PanelType } from 'office-ui-fabric-react/lib/Panel';\nimport I18n from '../../../helper/Localization';\nimport { TextField } from 'office-ui-fabric-react/lib/TextField';\nimport { PrimaryButton, DefaultButton, getTheme } from 'office-ui-fabric-react';\nimport { Colors } from '../../../styles/Globals';\nimport { EndCustomerNumberTag } from './EndCustomerNumberTag';\n\nconst PanelBody = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0 24px;\n`;\n\nconst InfoTextWrapper = styled.div`\n margin: 20px 0 10px 0;\n`;\n\nconst AddCustomerNumberContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: space-between;\n`;\n\nconst PanelFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 10px 20px;\n`;\n\nconst TagContainer = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n margin-top: 25px;\n`;\n\n/**\n * Dialog to edit and review the end customer numbers of a user.\n */\nexport const EndCustomerDialog = (props) => {\n const theme = getTheme();\n\n /**\n * The current tag value that the user entered in the input field.\n */\n const [currentTagValue, setCurrentTagValue] = useState('');\n\n /**\n * Props of the add icon.\n */\n const addIconProps = {\n iconName: 'Add',\n };\n\n /**\n * Styles of the add button.\n */\n const addButtonStyles = {\n root: {\n maxWidth: 23,\n minWidth: 23,\n maxHeight: 23,\n marginLeft: 10,\n },\n icon: {\n color: 'white',\n fontSize: 14,\n fontWeight: 'bolder',\n },\n };\n\n /**\n * Styles of the cancel button.\n */\n const cancleButtonStyles = {\n root: {\n border: 'unset',\n fontSize: '10px',\n marginLeft: '15px',\n },\n };\n\n /**\n * Styles of the customer number input field.\n */\n const textFieldStyles = {\n root: {\n width: '100%',\n fontSize: 10,\n },\n field: {\n height: 23,\n paddingLeft: 20,\n },\n fieldGroup: {\n height: 24,\n border: `0.5px solid ${Colors.borderGray};`,\n },\n errorMessage: {\n fontSize: 10,\n },\n };\n\n /**\n * Callback to dismiss the panel.\n */\n const onDismiss = () => {\n setCurrentTagValue('');\n props.closeCallback();\n };\n\n /**\n * Add a new end customer number to the list of customer numbers.\n */\n const addNewEndCustomerNumber = () => {\n if (currentTagValue && currentTagValue !== '') {\n // Create shallow copy of current end customer numbers.\n const tmpEndCustomerNumbers = [...props.endCustomerNumbers];\n // Add the new end customer number.\n tmpEndCustomerNumbers.push(currentTagValue);\n // Update the list state.\n props.setEndCustomerNumbers([...tmpEndCustomerNumbers]);\n // Reset the user tag input.\n setCurrentTagValue('');\n }\n };\n\n /**\n * Remove an end customer number by it's index.\n */\n const removeEndCustomerNumber = (index) => {\n // Create shallow copy of the current end customer numbers.\n const tmpEndCustomerNumbers = [...props.endCustomerNumbers];\n // Remove the item.\n tmpEndCustomerNumbers.splice(index, 1);\n // Update the list state.\n props.setEndCustomerNumbers([...tmpEndCustomerNumbers]);\n };\n\n /**\n * Body of the panel.\n */\n const onRenderBody = () => (\n \n {I18n.get().t('EndCustomerDialog_InfoText')}\n \n {\n if (newValue || newValue === '') {\n setCurrentTagValue(newValue);\n }\n }}\n />\n \n \n \n {props.endCustomerNumbers.map((endCustomerNumber, i) => (\n removeEndCustomerNumber(i)}\n />\n ))}\n \n \n );\n\n /**\n * Footer of the panel.\n */\n const onRenderFooter = () => (\n \n \n \n );\n\n return (\n {\n // NOTE: This is needed to prevent the panel from closing when the user interacts with the dialog.\n }}\n isOpen={props.isOpen}\n />\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { MessageBar, MessageBarType } from 'office-ui-fabric-react';\nimport { TextField } from 'office-ui-fabric-react/lib/TextField';\nimport { PrimaryButton, DefaultButton } from 'office-ui-fabric-react/lib/Button';\nimport DebtorSearch from './DebtorSearch';\nimport DebtorList from './DebtorList';\nimport styled from 'styled-components';\nimport I18n from '../../../helper/Localization';\nimport { postToApi } from '../../../helper/ApiHelper';\nimport { BasicDialog } from '../BasicDialog';\nimport { Panel, PanelType } from 'office-ui-fabric-react/lib/Panel';\nimport { Colors } from '../../../styles/Globals';\nimport { BusySpinner } from '../../busyIndicators/BusySpinner';\nimport { validateEmail } from '../../../helper/ValidationHelper';\nimport { OpenEndCustomerDialogButton } from '../endCustomerDialog/OpenEndCustomerDialogButton';\nimport { EndCustomerDialog } from '../endCustomerDialog/EndCustomerDialog';\n\n/**\n * styled components\n */\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 300px;\n justify-content: space-between;\n`;\n\nconst BottomContainer = styled.div`\n margin-top: auto;\n display: flex;\n flex: 1;\n overflow: hidden;\n height: calc(100% - 335px);\n`;\n\nconst UserInputContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 40%;\n margin-right: 30px;\n`;\n\nconst InputElement = styled.div`\n height: 50px;\n`;\n\nconst FlexRow = styled.div`\n display: flex;\n flex: 1;\n justify-content: flex-end;\n`;\n\nconst UserInput = styled.div`\n border: 1px solid var(--unnamed-color-f0f0f0);\n padding: 20px 20px 0px 20px;\n background-color: ${Colors.backgroundGray};\n border-radius: 4px;\n display: flex;\n flex-direction: column;\n height: fit-content;\n margin: 0px;\n`;\n\nconst UserInputHeadline = styled.p`\n color: var(--unnamed-color-000000);\n text-align: left;\n margin-bottom: 10px;\n font: Bold 12px/15px NHaasGroteskTXW01-75Bd;\n letter-spacing: 0px;\n color: #000000;\n opacity: 1;\n`;\n\nconst PanelBody = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0 24px;\n height: calc(100vh - 110px);\n @media only screen and (max-width: 1400px) {\n height: calc(100vh - 135px);\n }\n`;\n\nconst PanelFooter = styled.div`\n display: flex;\n padding: 10px 20px;\n`;\n\nconst EndCustomerButtonWrapper = styled.div`\n display: flex;\n margin-bottom: auto;\n padding: 15px 0;\n`;\n\n/**\n * The dialog to invite users\n */\nconst InviteUserDialog = (props) => {\n /**\n * Disabled state of the submit button.\n */\n const [submitDisabled, setSubmitDisabled] = useState(false);\n\n /**\n * User notification message for the MessageBar.\n */\n const [userMessage, setUserMessage] = useState('');\n\n /**\n * visible state for the busy indicator\n */\n const [isBusy, setIsBusy] = useState(false);\n\n /**\n * A list of all currently assigned debtors.\n */\n const [assignedDebtors, setAssignedDebtors] = useState([]);\n\n /**\n * Email property directly wired to the email input.\n */\n const [email, setEmail] = useState('');\n\n /**\n * CompanyName property directly wired to the CompanyName input.\n */\n const [companyName, setCompanyName] = useState('');\n\n /**\n * Department property directly wired to the Department input.\n */\n const [department, setDepartment] = useState('');\n\n /**\n * Used by fluent ui for different message bar themes based on this type.\n */\n const [userMessageType, setUserMessageType] = useState(MessageBarType.info);\n\n /**\n * Whether the abort dialog is open or not.\n */\n const [isAbortDialogOpen, setIsAbortDialogOpen] = useState(false);\n\n /**\n * Whether the dialog to edit end customer numbers is open or not.\n */\n const [isEndCustomerDialogOpen, setIsEndCustomerDialogOpen] = useState(false);\n\n /**\n * State of the current assigned end customer numbers for the user.\n */\n const [endCustomerNumbers, setEndCustomerNumbers] = useState([]);\n\n /**\n * fluent ui styles and properties\n */\n const inputStyles = {\n root: {\n width: '100%',\n fontSize: 10,\n },\n field: {\n height: 23,\n paddingLeft: 20,\n },\n fieldGroup: {\n height: 24,\n border: `0.5px solid ${Colors.borderGray};`,\n },\n errorMessage: {\n fontSize: 10,\n },\n };\n\n const messageBarStyles = {\n root: {\n width: '100%',\n },\n icon: {\n color: Colors.errorRed,\n },\n };\n\n const cancleButtonStyles = {\n root: {\n border: 'unset',\n fontSize: '10px',\n marginLeft: '15px',\n },\n };\n\n const inviteButtonStyles = {\n root: {\n fontSize: '10px',\n marginLeft: '15px',\n },\n };\n\n /**\n * Reset the states and close the dialog.\n */\n const closePanel = () => {\n setIsAbortDialogOpen(false);\n setSubmitDisabled(false);\n setUserMessage('');\n setIsBusy(false);\n setAssignedDebtors([]);\n setEmail('');\n setCompanyName('');\n setDepartment('');\n setUserMessageType(MessageBarType.info);\n setEndCustomerNumbers([]);\n props.toggleHideDialog();\n };\n\n /**\n * Open the abort dialog when the input states are not default. If abort dialog must not be open, trigger close.\n */\n const openAbortDialog = () => {\n if (userMessage.length !== 0 || assignedDebtors.length !== 0 || email.length !== 0 || companyName.length !== 0 || department.length !== 0) {\n setIsAbortDialogOpen(true);\n } else {\n closePanel();\n }\n };\n\n /**\n * Handles the deselection of a debtor in the assigned debtors list.\n * @param {object} target the targeted debtor.\n */\n const deselectDebtor = (target) => {\n const updatedSelection = assignedDebtors.filter((debtor) => debtor.id !== target.id);\n setAssignedDebtors(updatedSelection);\n };\n\n /**\n * Handles the selection of a debtor in the debtors list.\n * @param {object} target The targeted debtor.\n */\n const selectDebtor = (target) => {\n setAssignedDebtors([...assignedDebtors, target]);\n };\n\n /**\n * Form submit.\n */\n const submit = async () => {\n if (!validateForm()) {\n return;\n }\n const reqBody = {\n company: companyName,\n debtorIds: assignedDebtors.length > 0 ? assignedDebtors.map((debtor) => debtor.id) : [],\n endCustomerNumbers: endCustomerNumbers,\n department: department,\n email: email,\n isActive: true,\n lastLogin: new Date().toISOString(),\n id: 0,\n };\n try {\n setSubmitDisabled(true);\n setIsBusy(true);\n await postToApi('v1.0/User', reqBody);\n setUserMessageType(MessageBarType.success);\n setUserMessage(I18n.get().t('Invite_User_SuccessMessage'));\n setTimeout(() => closePanel(), 2000);\n } catch (error) {\n if (error.status === 409) {\n setUserMessage(I18n.get().t('Invite_User_EmailExistsError'));\n setUserMessageType(MessageBarType.error);\n } else {\n setUserMessage(I18n.get().t('Invite_User_Error'));\n setUserMessageType(MessageBarType.error);\n console.error(error.text);\n }\n } finally {\n setSubmitDisabled(false);\n setIsBusy(false);\n }\n };\n\n /**\n * Validates if the input fields contain valid data.\n */\n const validateForm = () => {\n setUserMessage('');\n if (!validateEmail(email)) {\n setUserMessage(I18n.get().t('Invite_User_InsertEmail'));\n setUserMessageType(MessageBarType.error);\n return false;\n }\n if (validateInputNotEmpty(companyName) !== '') {\n setUserMessage(I18n.get().t('Invite_User_InsertCompany'));\n setUserMessageType(MessageBarType.error);\n return false;\n }\n return true;\n };\n\n /**\n * Regex email validation.\n * Returns a error text to fluent ui.\n * @param value The data that requires validation.\n */\n const emailOnGetError = (value) => {\n return validateEmail(value) ? '' : I18n.get().t('Invite_User_InvalidEmail');\n };\n\n /**\n * Validates whether or not a input is empty.\n * Returns a error text to fluent ui.\n * @param value The data that requires validation\n */\n const validateInputNotEmpty = (value) => {\n return value === '' ? I18n.get().t('Invite_User_InvalidInput') : '';\n };\n\n /**\n * In memory list of the assigned debtors.\n */\n const inMemoryAssignedDedbtorList = useMemo(\n () => ,\n [assignedDebtors, setAssignedDebtors, deselectDebtor]\n );\n\n /**\n * Callback to close the end customer panel.\n */\n const closeEndCustomerPanel = () => {\n setIsEndCustomerDialogOpen(false);\n };\n\n /**\n * In memory list of all possible debtors.\n */\n const inMemorySearchableDebtorsList = useMemo(() => , [assignedDebtors,selectDebtor]);\n\n /**\n * Body of the article timeline panel\n */\n const onRenderBody = () => (\n \n \n \n {I18n.get().t('Invite_User_Input_Title')}\n \n \n setEmail(e.target.value)}\n />\n \n \n setCompanyName(e.target.value)}\n />\n \n \n setDepartment(e.target.value)}\n />\n \n \n \n setIsEndCustomerDialogOpen(true)} />\n \n \n {inMemoryAssignedDedbtorList}\n \n {inMemorySearchableDebtorsList}\n \n );\n\n /**\n * Footer content of the panel.\n */\n const onRenderFooterContent = () => (\n \n {userMessage !== '' && (\n \n {userMessage}\n \n )}\n\n \n \n \n \n \n \n );\n\n return (\n <>\n \n {\n // NOTE: This is needed to prevent the panel from closing when the user interacts with the dialog.\n }}\n />\n
    \n \n setCurrentPage(currentPage - 1)}\n navigateToBegin={() => setCurrentPage(1)}\n navigateToEnd={() => setCurrentPage(maxPages)}\n navigateForward={() => setCurrentPage(currentPage + 1)}\n />\n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Panel, PanelType } from 'office-ui-fabric-react/lib/Panel';\nimport I18n from '../../../helper/Localization';\nimport { PrimaryButton } from 'office-ui-fabric-react/lib/Button';\nimport { BasicDialog } from '../BasicDialog';\nimport { OfflineTestResultCard } from './OfflineTestResultCard';\nimport { OrderPositionTable } from './OrderPositionTable';\nimport { msalApp } from '../../../helper/AuthHelper';\nimport { postToApi } from '../../../helper/ApiHelper';\nimport { BusySpinnerOverlay } from '../../busyIndicators/BusySpinnerOverlay';\n\nconst PanelBody = styled.div`\n display: flex;\n flex-direction: column;\n padding: 30px 45px;\n height: calc(100vh - 150px);\n position: relative;\n @media only screen and (max-width: 1800px) {\n padding: 15px 25px;\n }\n`;\n\nconst PanelFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding: 30px 45px;\n @media only screen and (max-width: 1800px) {\n padding: 15px 25px;\n }\n`;\n\nconst OrderPositionTableWrapper = styled.div`\n display: flex;\n flex: 1;\n height: calc(100vh - 410px);\n margin-top: 45px;\n @media only screen and (max-width: 1800px) {\n height: calc(100vh - 400px);\n }\n`;\n\n/**\n * Dialog component to connect existing offline test results to a corresponding order position.\n */\nexport const ConnectOfflineTestsDialog = (props) => {\n /**\n * Whether this component is busy or not.\n */\n const [isBusy, setIsBusy] = useState(false);\n\n /**\n * Whether the abort dialog is open or not.\n */\n const [isAbortDialogOpen, setIsAbortDialogOpen] = useState(false);\n\n /**\n * State of the current offline test results.\n */\n const [offlineTestResults, setOfflineTestResults] = useState([]);\n\n /**\n * State of the currently displayed offline test result number.\n */\n const [currentOfflineTestResultNumber, setCurrentOfflineTestResultNumber] = useState(0);\n\n /**\n * The currently selected order position id.\n */\n const [selectedOrderPositionId, setSelectedOrderPositionId] = useState(-1);\n\n /**\n * State of the mail address of the currently logged in user.\n */\n const [userMail, setUserMail] = useState('');\n\n /**\n * The name of the currently logged in user.\n */\n const [userName, setUserName] = useState('');\n\n /**\n * The initial state of the locally stored offline test results.\n */\n const storedOfflineTestResults = useRef([]);\n\n /**\n * The offset that is used to delete processed offline test results from local storage.\n */\n const deletionOffset = useRef(1);\n\n /**\n * Confirm callback for the abort dialog.\n */\n const [confirmCallback, setConfirmCallback] = useState(undefined);\n\n /**\n * State of the search value used for filtering.\n */\n const [searchValue, setSearchValue] = useState('');\n\n /**\n * Toggle to apply the current search value and fetch new data.\n */\n const [searchToggle, setSearchToggle] = useState(false);\n\n /**\n * Initially set the email of the current logged in user.\n */\n useEffect(() => {\n const getUser = async () => {\n const _msalApp = await msalApp();\n const userMail = _msalApp.getAccount().idToken.emails[0];\n setUserMail(userMail);\n const name = _msalApp.getAccount().name;\n setUserName(name);\n };\n getUser();\n }, []);\n\n /**\n * Determine the available offline test results to connect.\n */\n useEffect(() => {\n if (props.isOpen === true && userMail && userMail !== '') {\n // Get all available offline test results from local storage.\n const offlineTestResults = JSON.parse(localStorage.getItem('offlineTestResults'));\n if (offlineTestResults && offlineTestResults.length > 0) {\n // Filter the saved results for the current logged in user.\n storedOfflineTestResults.current = offlineTestResults.filter((offlineTestResult) => offlineTestResult.executorEmail === userMail);\n // Order the filtered offline test results by execution date.\n storedOfflineTestResults.current.sort((a, b) => {\n return new Date(a.dateExecuted) - new Date(b.dateExecuted);\n });\n if (storedOfflineTestResults.current.length > 0) {\n setCurrentOfflineTestResultNumber(1);\n }\n setOfflineTestResults(storedOfflineTestResults.current);\n } else {\n setCurrentOfflineTestResultNumber(0);\n setOfflineTestResults([]);\n }\n }\n }, [props.isOpen, userMail, setUserMail]);\n\n /**\n * Styles of the finish button.\n */\n const finishButtonStyles = {\n root: {\n fontSize: '10px',\n marginLeft: '15px'\n }\n };\n\n /**\n * Reset the states and close the dialog.\n */\n const closePanel = () => {\n setOfflineTestResults([]);\n setSelectedOrderPositionId(-1);\n setCurrentOfflineTestResultNumber(0);\n setIsAbortDialogOpen(false);\n setSearchValue('');\n storedOfflineTestResults.current = [];\n deletionOffset.current = 1;\n props.toggleHideDialog();\n };\n\n /**\n * Continue with the processing of the next offline test result.\n */\n const continueWithNextOfflineTestResult = () => {\n // Reset order position so the user need to choose again.\n setSelectedOrderPositionId(-1);\n if (currentOfflineTestResultNumber + 1 > offlineTestResults.length) {\n closePanel();\n } else {\n // Progress to the next offline test result;\n setCurrentOfflineTestResultNumber(currentOfflineTestResultNumber + 1);\n }\n };\n\n /**\n * Callback to delete the current offline test result.\n */\n const deleteCallback = () => {\n // Delete the current test result.\n const tmp = [...storedOfflineTestResults.current];\n tmp.splice(currentOfflineTestResultNumber - deletionOffset.current, 1);\n deletionOffset.current = deletionOffset.current + 1;\n storedOfflineTestResults.current = tmp;\n // Update the local storage.\n localStorage.setItem('offlineTestResults', JSON.stringify(storedOfflineTestResults.current));\n // Continue with the next offline test result to connect.\n continueWithNextOfflineTestResult();\n setIsAbortDialogOpen(false);\n };\n\n /**\n * Delete the current offline test result.\n */\n const deleteOfflineTestResult = () => {\n setConfirmCallback('delete');\n setIsAbortDialogOpen(true);\n };\n\n /**\n * Callback to connect the current offline test result.\n */\n const connectCallback = async () => {\n setIsBusy(true);\n // Build the test result based on the user selected order position.\n const newTestResult = {\n dateExecuted: offlineTestResults[currentOfflineTestResultNumber - 1].dateExecuted,\n measurementLeftWithoutProtection: offlineTestResults[currentOfflineTestResultNumber - 1].measurementLeftWithoutProtection,\n measurementLeftWithProtection: offlineTestResults[currentOfflineTestResultNumber - 1].measurementLeftWithProtection,\n measurementRightWithoutProtection: offlineTestResults[currentOfflineTestResultNumber - 1].measurementRightWithoutProtection,\n measurementRightWithProtection: offlineTestResults[currentOfflineTestResultNumber - 1].measurementRightWithProtection,\n insulationLeft: offlineTestResults[currentOfflineTestResultNumber - 1].insulationLeft,\n insulationRight: offlineTestResults[currentOfflineTestResultNumber - 1].insulationRight,\n isSuccessfulLeft: offlineTestResults[currentOfflineTestResultNumber - 1].isSuccessfulLeft,\n isSuccessfulRight: offlineTestResults[currentOfflineTestResultNumber - 1].isSuccessfulRight,\n orderPositionId: selectedOrderPositionId,\n testerName: userName\n };\n try {\n // Save the connected test result.\n await postToApi('v1.0/TestResult', newTestResult);\n // Delete the current test result.\n const tmp = [...storedOfflineTestResults.current];\n tmp.splice(currentOfflineTestResultNumber - deletionOffset.current, 1);\n deletionOffset.current = deletionOffset.current + 1;\n storedOfflineTestResults.current = tmp;\n // Update the local storage.\n localStorage.setItem('offlineTestResults', JSON.stringify(storedOfflineTestResults.current));\n // Reset the search value.\n setSearchValue('');\n setSearchToggle(!searchToggle);\n } catch (error) {\n console.error(error);\n } finally {\n setIsBusy(false);\n }\n // Continue with the next offline test result to connect.\n continueWithNextOfflineTestResult();\n setIsAbortDialogOpen(false);\n };\n\n /**\n * Connect the current test result with the selected order position.\n */\n const connectOfflineTestResult = () => {\n setConfirmCallback('connect');\n setIsAbortDialogOpen(true);\n };\n\n /**\n * Body of the panel.\n */\n const onRenderBody = () => (\n \n \n \n \n setSelectedOrderPositionId(id)}\n searchValue={searchValue}\n setSearchValue={setSearchValue}\n searchToggle={searchToggle}\n setSearchToggle={setSearchToggle}\n />\n \n \n );\n\n /**\n * Footer content of the panel.\n */\n const onRenderFooter = () => (\n \n \n \n );\n\n return (\n <>\n {\n // NOTE: This is needed to prevent the panel from closing when the user interacts with the dialog.\n }}\n />\n
    \n \n );\n };\n\n /**\n * Footer content of the panel.\n */\n const onRenderFooterContent = () => (\n \n setIsDebtorPanelOpen(false)} />\n \n );\n\n /**\n * Header content of the panel.\n */\n const onRenderHeader = () => (\n \n \n {I18n.get().t('DebtorPanel_Name')}\n
    {`${selectedUser.displayName !== null && selectedUser.displayName !== undefined ? selectedUser.displayName : ''}`}
    \n
    \n \n {I18n.get().t('DebtorPanel_Mail')}\n
    {`${selectedUser.email !== null && selectedUser.email !== undefined ? selectedUser.email : ''}`}
    \n
    \n \n {I18n.get().t('DebtorPanel_Company')}\n
    {`${selectedUser.company !== null && selectedUser.company !== undefined ? selectedUser.company : ''}`}
    \n
    \n
    \n );\n\n return (\n \n setIsDebtorPanelOpen(false)}\n isLightDismiss\n type={PanelType.large}\n closeButtonAriaLabel={I18n.get().t('DebtorPanel_Close')}\n onRenderHeader={onRenderHeader}\n onRenderBody={onRenderBody}\n onRenderFooter={onRenderFooterContent}\n />\n setEditUserHidden(true)} selectedUser={selectedUser} userUpdated={fetchData} />\n setCurrentPage(page)}\n setSearchValue={(searchValue) => setSearchValue(searchValue)}\n isSearchBusy={isSearchBusy}\n />\n \n );\n};\n","// Boolean sort method.\nexport const booleanSortType = (rowA, rowB, columnId, desc) => {\n const a = rowA.values[columnId];\n const b = rowB.values[columnId];\n if (a === b) {\n return 0;\n }\n return a && !b ? -1 : 1;\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport I18n from '../../helper/Localization';\nimport styled from 'styled-components';\nimport { TableView } from './TableView';\nimport { IconButton, getTheme } from 'office-ui-fabric-react';\nimport { InfoButton } from '../InfoButton';\nimport { StatusIcon } from '../StatusIcon';\nimport { FontIcon } from 'office-ui-fabric-react/lib/Icon';\nimport { postToApi, postToApiBlob } from '../../helper/ApiHelper';\nimport { booleanSortType } from '../../helper/SortHelper';\nimport { TestStatusTeachingBubbleContent } from '../TestStatusTeachingBubbleContent';\nimport { toFormattedDate } from '../../helper/DateFormatHelper';\nimport { Mono } from '../../styles/Globals';\n\nconst InfoWrapper = styled.div`\n display: flex;\n width: 100%;\n cursor: pointer;\n`;\n\nconst SortableTableHeader = styled.div`\n cursor: pointer;\n`;\n\n/**\n * component to display the results view\n */\nexport const ResultsView = (props) => {\n const theme = getTheme();\n\n /**\n * The test results to display in the table.\n */\n const [testResults, setTestResults] = useState([]);\n\n /**\n * visible state for the busy indicator\n */\n const [isBusy, setIsBusy] = useState(false);\n\n /**\n * Whether the table search is busy or not.\n */\n const [isSearchBusy, setIsSearchBusy] = useState(false);\n\n /**\n * Whether the pdf download is busy or not.\n */\n const [isDownloadBusy, setIsDownloadBusy] = useState(false);\n\n /**\n * The maximum number of pages of the current fetched data.\n */\n const [maxPages, setMaxPages] = useState(1);\n\n /**\n * The current selected data page.\n */\n const [currentPage, setCurrentPage] = useState(1);\n\n /**\n * State of the current sort direction. true for ASC, false for DESC.\n */\n const [sortAscending, setSortAscending] = useState(false);\n\n /**\n * State of the current sort property.\n */\n const [sortPropertyName, setSortPropertyName] = useState('DateExecuted');\n\n /**\n * State of the current sort property.\n */\n const [searchValue, setSearchValue] = useState('');\n\n /**\n * Whether the user has sorted the table or not.\n */\n const hasSorted = useRef(false);\n\n const previousSearchValue = useRef('');\n\n /**\n * fluent ui\n */\n const buttonStyles = {\n icon: {\n fontSize: 12,\n marginBottom: '4px'\n },\n root: {\n border: 0,\n borderRadius: '2px',\n boxShadow: '1px 2px 3px #0000003C',\n backgroundColor: theme.palette.themePrimary,\n width: 28,\n height: 28\n },\n rootHovered: {\n backgroundColor: 'none'\n },\n rootPressed: {\n backgroundColor: 'none'\n }\n };\n\n /** Request abort controller. */\n const abortController = new AbortController();\n\n /**\n * Component will unmount, so abort.\n */\n useEffect(() => {\n return () => {\n abortController.abort();\n };\n }, []);\n\n useEffect(() => {\n const fetchData = async () => {\n setIsBusy(true);\n try {\n const defaultReqBody = {\n itemsPerPage: 50,\n sortDirection: sortAscending ? 1 : 2,\n sortPropertyName: sortPropertyName\n };\n let reqBody;\n if (searchValue && searchValue !== '') {\n setIsSearchBusy(true);\n if (searchValue !== previousSearchValue.current) {\n reqBody = {\n filterText: searchValue.toLowerCase(),\n pageToDeliver: 1,\n ...defaultReqBody\n };\n } else {\n reqBody = {\n filterText: searchValue.toLowerCase(),\n pageToDeliver: currentPage,\n ...defaultReqBody\n };\n }\n } else {\n if (previousSearchValue.current !== '') {\n setIsSearchBusy(true);\n }\n reqBody = {\n pageToDeliver: currentPage,\n ...defaultReqBody\n };\n }\n const testResults = await postToApi('v1.0/TestResult/Paged', reqBody, abortController.signal);\n setMaxPages(testResults.pagesAvailable);\n const testResultViewModels = testResults.results.map((testResult) => {\n return {\n deliveryInvoiceNumber: testResult.orderPosition.order.deliveryInvoiceNumber,\n position: testResult.orderPosition.position,\n wearer: testResult.orderPosition.wearer,\n isSuccessful: testResult.isSuccessful,\n insulationLeft: testResult.insulationLeft,\n insulationRight: testResult.insulationRight,\n dateExecuted: testResult.dateExecuted,\n id: testResult.id\n };\n });\n setTestResults(testResultViewModels);\n } catch (error) {\n setMaxPages(1);\n setCurrentPage(1);\n setTestResults([]);\n } finally {\n previousSearchValue.current = searchValue;\n setIsBusy(false);\n setIsSearchBusy(false);\n }\n };\n fetchData();\n }, [currentPage, setCurrentPage, searchValue, setSearchValue, sortAscending, setSortAscending, sortPropertyName, setSortPropertyName]);\n\n /**\n * Sorts the table by the given property name considering the sort direction state.\n */\n const handlePropertySort = (propertyName) => {\n if (sortPropertyName === propertyName) {\n setSortAscending(!sortAscending);\n } else {\n setSortAscending(true);\n setSortPropertyName(propertyName);\n }\n };\n\n /**\n * callback function for the download of one test result as pdf file.\n */\n const downloadTestResultAsPdf = async (testResult) => {\n setIsDownloadBusy(true);\n const date = toFormattedDate('de-DE', testResult.dateExecuted);\n const fileName = `Ergebnisse_${date}.pdf`;\n await postToApiBlob(`v1.0/Documents/result-document/de/${testResult.id}`, null, fileName, abortController.signal);\n setIsDownloadBusy(false);\n };\n\n const columns = [\n {\n Header: '',\n accessor: 'interactions',\n width: 75,\n maxWidth: -1,\n minWidth: 75,\n Cell: (table) => (\n downloadTestResultAsPdf(table.row.original)}\n />\n )\n },\n {\n Header: (\n handlePropertySort('OrderPosition.Wearer')}>\n {I18n.get().t('Table_Header_Supporter')}\n {sortPropertyName === 'OrderPosition.Wearer' && }\n \n ),\n accessor: 'wearer',\n width: 110\n },\n {\n Header: (\n handlePropertySort('OrderPosition.Order.DeliveryInvoiceNumber')}>\n {I18n.get().t('Table_Header_Order')}\n {sortPropertyName === 'OrderPosition.Order.DeliveryInvoiceNumber' && }\n \n ),\n accessor: 'deliveryInvoiceNumber',\n width: 75,\n Cell: (table) => {table.cell.value}\n },\n {\n Header: (\n handlePropertySort('OrderPosition.Position')}>\n {I18n.get().t('Table_Header_Position')}\n {sortPropertyName === 'OrderPosition.Position' && }\n \n ),\n accessor: 'position',\n width: 75,\n Cell: (table) => {table.cell.value}\n },\n {\n Header: (\n handlePropertySort('IsSuccessful')}>\n {I18n.get().t('Table_Header_Status')}\n {sortPropertyName === 'IsSuccessful' && }\n \n \n ),\n accessor: 'isSuccessful',\n Cell: (table) => ,\n width: 70,\n sortType: booleanSortType\n },\n {\n Header: I18n.get().t('Table_Header_InsulationValue'),\n accessor: 'insulationLeft',\n width: 115,\n Cell: (table) => `${table.row.original.insulationLeft} dB / ${table.row.original.insulationRight} dB`\n },\n {\n Header: (\n {\n hasSorted.current = true;\n handlePropertySort('DateExecuted');\n }}\n >\n {I18n.get().t('Table_Header_Execution')}\n {hasSorted.current !== false && sortPropertyName === 'DateExecuted' && }\n \n ),\n accessor: 'dateExecuted',\n width: 115,\n Cell: (table) => toFormattedDate('de-DE', table.cell.value)\n }\n ];\n\n return (\n setCurrentPage(page)}\n setSearchValue={(searchValue) => setSearchValue(searchValue)}\n isSearchBusy={isSearchBusy}\n />\n );\n};\n","import React from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nconst RoleAuthorization = (requiredRole) => (WrappedComponent) => {\n const WithAuthorizationWrapper = (props) => {\n const userRoles = useStoreState((state) => state.user.roles);\n if (userRoles.map((r) => r.role.label).some(r => requiredRole.includes(r))) {\n return ;\n }\n console.error(`Unauthorized, \"${requiredRole}\" is required.`);\n return <>;\n };\n\n return WithAuthorizationWrapper;\n};\n\nexport default RoleAuthorization;\n","import React, { useEffect, useState } from 'react';\nimport { HearingTest } from './HearingTest';\nimport { postToApi } from '../../helper/ApiHelper';\nimport { msalApp } from '../../helper/AuthHelper';\nimport History from '../BrowserHistory';\n\n/**\n * component that handles the complete hearing test\n */\nexport const OnlineHearingTest = (props) => {\n /**\n * Name of the wearer.\n */\n const [wearerName, setWearerName] = useState('');\n\n /**\n * Initialize the hearing test.\n */\n useEffect(() => {\n if (!props || !props.location || !props.location.orderPositionId) {\n // If user is not in offline mode and did not provide order pos id, deny access.\n History.replace('/orders');\n }\n if (props && props.location && props.location.wearer) {\n // If there is a wearer name given by location, set the state.\n setWearerName(props.location.wearer);\n }\n }, [props]);\n\n /**\n * submit the hearing test result\n */\n const submitTestResult = async (\n dbLeftWithoutProtection,\n dbLeftWithProtection,\n dbRightWithoutProtection,\n dbRightWithProtection,\n insulationLeft,\n insulationRight,\n isSuccessfulLeft,\n isSuccessfulRight\n ) => {\n const _msalApp = await msalApp();\n const name = _msalApp.getAccount().name;\n const reqBody = {\n dateExecuted: new Date().toISOString(),\n measurementLeftWithoutProtection: dbLeftWithoutProtection,\n measurementLeftWithProtection: dbLeftWithProtection,\n measurementRightWithoutProtection: dbRightWithoutProtection,\n measurementRightWithProtection: dbRightWithProtection,\n insulationLeft: insulationLeft,\n insulationRight: insulationRight,\n isSuccessfulLeft: isSuccessfulLeft,\n isSuccessfulRight: isSuccessfulRight,\n orderPositionId: props.location.orderPositionId,\n testerName: name\n };\n try {\n await postToApi('v1.0/TestResult', reqBody);\n } catch (error) {\n console.error(error);\n }\n };\n\n return ;\n};\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\nimport History from './BrowserHistory';\n\nconst aiPromise = fetch('api/Configuration/AppInsightsKey').then((key) => key.json());\nconst reactPlugin = new ReactPlugin();\nlet appInsights;\n\naiPromise.then((aiKey) => {\n appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: aiKey,\n disableFetchTracking: false,\n enableAutoRouteTracking: true,\n enableRequestHeaderTracking: true,\n autoTrackPageVisitTime: true,\n extensions: [reactPlugin],\n extensionConfig: {\n [reactPlugin.identifier]: { history: History },\n },\n },\n });\n appInsights.loadAppInsights();\n});\n\nexport { reactPlugin, appInsights };\n","import React, { useEffect } from 'react';\nimport OfflineApp from './OfflineApp';\nimport OnlineApp from './OnlineApp';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\n\n/**\n * Decide if the offline or the online app is used.\n */\nconst AppInitilizer = () => {\n /**\n * Retrieve the store state of the offline mode.\n */\n const isOfflineModeEnabled = useStoreState((state) => state.ui.isOfflineModeEnabled);\n /**\n * Retrieve the action to update the store offline mode state.\n */\n const updateIsOfflineModeEnabled = useStoreActions((actions) => actions.ui.updateIsOfflineModeEnabled);\n\n /**\n * Update to offline mode if no internet connection exists.\n */\n useEffect(() => {\n if (!navigator.onLine && !isOfflineModeEnabled) {\n updateIsOfflineModeEnabled(true);\n }\n }, [isOfflineModeEnabled, updateIsOfflineModeEnabled]);\n\n return isOfflineModeEnabled ? : ;\n};\n\nexport default AppInitilizer;\n","export default __webpack_public_path__ + \"static/media/info-circle-solid.16d18470.svg\";","export default __webpack_public_path__ + \"static/media/check-solid.49fb1db0.svg\";","export default __webpack_public_path__ + \"static/media/ellipsis-v-solid.3e8c2ed2.svg\";","export default __webpack_public_path__ + \"static/media/pen-solid.867a313f.svg\";","export default __webpack_public_path__ + \"static/media/disable-white.27d5a1c4.svg\";","export default __webpack_public_path__ + \"static/media/circle-notch-solid.848fc069.svg\";","export default __webpack_public_path__ + \"static/media/home-solid.b9304e90.svg\";","export default __webpack_public_path__ + \"static/media/users-solid.24182c7e.svg\";","export default __webpack_public_path__ + \"static/media/folder-open-solid.4e56e750.svg\";","export default __webpack_public_path__ + \"static/media/business-and-finance.47742ddc.svg\";","export default __webpack_public_path__ + \"static/media/times-solid.0268d196.svg\";","export default __webpack_public_path__ + \"static/media/menu-arrow.5fd47716.svg\";","export default __webpack_public_path__ + \"static/media/failed.fb0c5ede.svg\";","export default __webpack_public_path__ + \"static/media/succeeded.6b02a169.svg\";","export default __webpack_public_path__ + \"static/media/pending.a2b50645.svg\";","export default __webpack_public_path__ + \"static/media/user-alt-solid.ed9f4794.svg\";","export default __webpack_public_path__ + \"static/media/download-solid.b8a97b08.svg\";","export default __webpack_public_path__ + \"static/media/disable.b791572e.svg\";","export default __webpack_public_path__ + \"static/media/download-solid-white.dd7ec20f.svg\";","export default __webpack_public_path__ + \"static/media/search-solid.fb5a13db.svg\";","export default __webpack_public_path__ + \"static/media/hörtest-avatar-04.3a3d2f70.svg\";","export default __webpack_public_path__ + \"static/media/hörtest-avatar-02.3a04c5a6.svg\";","export default __webpack_public_path__ + \"static/media/hörtest-avatar-05.434c6fc0.svg\";","export default __webpack_public_path__ + \"static/media/hörtest-avatar-03.da70954b.svg\";","export default __webpack_public_path__ + \"static/media/system-volume_01.fb476854.svg\";","export default __webpack_public_path__ + \"static/media/system-volume-04.c685d851.svg\";","export default __webpack_public_path__ + \"static/media/system-volume-02.d21071e1.svg\";","export default __webpack_public_path__ + \"static/media/system-volume-03.ae2868b1.svg\";","export default __webpack_public_path__ + \"static/media/system-volume-05.bf3c31fd.svg\";","export default __webpack_public_path__ + \"static/media/system-volume-06.fec5e1fb.svg\";","export default __webpack_public_path__ + \"static/media/enable-solid.c5e219c0.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-left-white.fdcd2c88.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-left-black.d2c3febd.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-left-gray.02f49528.svg\";","export default __webpack_public_path__ + \"static/media/check-white.6b8185f1.svg\";","export default __webpack_public_path__ + \"static/media/slider-bubble-primary-03.a7623683.svg\";","export default __webpack_public_path__ + \"static/media/slider-bubble-white.39dc478c.svg\";","export default __webpack_public_path__ + \"static/media/music.ea3b69a8.svg\";","export default __webpack_public_path__ + \"static/media/close.49af635e.svg\";","export default __webpack_public_path__ + \"static/media/ipad-system-volume-01.15294f07.svg\";","export default __webpack_public_path__ + \"static/media/ipad-system-volume-02.d705ed5e.svg\";","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport { StoreProvider } from 'easy-peasy';\nimport Store from './store/Store';\nimport AppInitializer from './AppInitializer';\nimport { loadTheme } from '@fluentui/react';\nimport { initializeIcons } from '@uifabric/icons';\nimport { registerIcons } from 'office-ui-fabric-react/lib/Styling';\n\nimport InfoIcon from './assets/info-circle-solid.svg';\nimport CheckIcon from './assets/check-solid.svg';\nimport ContextIcon from './assets/ellipsis-v-solid.svg';\nimport EditIcon from './assets/pen-solid.svg';\nimport DisableWhiteIcon from './assets/disable-white.svg';\nimport EnableIcon from './assets/circle-notch-solid.svg';\nimport HomeIcon from './assets/home-solid.svg';\nimport UsersIcon from './assets/users-solid.svg';\nimport FolderIcon from './assets/folder-open-solid.svg';\nimport ResultIcon from './assets/business-and-finance.svg';\nimport PlusIcon from './assets/times-solid.svg';\nimport ChevronIcon from './assets/menu-arrow.svg';\nimport FailedIcon from './assets/failed.svg';\nimport SucceededIcon from './assets/succeeded.svg';\nimport PendingIcon from './assets/pending.svg';\nimport UserIcon from './assets/user-alt-solid.svg';\nimport DownloadIcon from './assets/download-solid.svg';\nimport DisableIcon from './assets/disable.svg';\nimport DownloadWhiteIcon from './assets/download-solid-white.svg';\nimport SearchIcon from './assets/search-solid.svg';\nimport LeftOutlined from './assets/hörtest-avatar-04.svg';\nimport LeftFilled from './assets/hörtest-avatar-02.svg';\nimport RightOutlined from './assets/hörtest-avatar-05.svg';\nimport RightFilled from './assets/hörtest-avatar-03.svg';\nimport WindowsStepOne from './assets/system-volume_01.svg';\nimport WindowsStepTwo from './assets/system-volume-04.svg';\nimport MacStepOne from './assets/system-volume-02.svg';\nimport MacStepTwo from './assets/system-volume-03.svg';\nimport MacStepThree from './assets/system-volume-05.svg';\nimport MacStepFour from './assets/system-volume-06.svg';\nimport EnableSolidIcon from './assets/enable-solid.svg';\nimport ArrowLeftWhiteIcon from './assets/Arrow-left-white.svg';\nimport ArrowLeftBackIcon from './assets/Arrow-left-black.svg';\nimport ArrowLeftGrayIcon from './assets/Arrow-left-gray.svg';\nimport CheckWhiteIcon from './assets/check-white.svg';\nimport SliderBubblePrimary from './assets/slider-bubble-primary-03.svg';\nimport SliderBubbleWhite from './assets/slider-bubble-white.svg';\nimport MusicIcon from './assets/music.svg';\nimport CloseIcon from './assets/close.svg';\nimport IPadStepOne from './assets/ipad-system-volume-01.svg';\nimport IPadStepTwo from './assets/ipad-system-volume-02.svg';\n\nconst rootElement = document.getElementById('root');\n\n// Initialize icons.\ninitializeIcons();\nregisterIcons({\n icons: {\n 'ipad-step-one': \"\",\n 'ipad-step-two': \"\",\n 'close-icon': \"\",\n 'music-icon': \"\",\n 'arrow-left-white': \"\",\n 'arrow-left-black': \"\",\n 'arrow-left-gray': \"\",\n 'check-white': \"\",\n 'slider-bubble-primary': \"\",\n 'slider-bubble-white': \"\",\n 'pen-solid-svg': \"\",\n 'disable-white-svg': \"\",\n 'check-solid-svg': \"\",\n 'circle-notch-solid-svg': \"\",\n 'info-circle-solid-svg': \"\",\n 'home-svg': \"\",\n 'users-svg': \"\",\n 'folder-svg': \"\",\n 'result-svg': \"\",\n 'plus-svg': \"\",\n 'chevron-svg': \"\",\n 'ellipsis-v-solid-svg': \"\",\n 'failed-svg': \"\",\n 'succeeded-svg': \"\",\n 'pending-svg': \"\",\n 'user-alt-solid-svg': \"\",\n 'download-solid-svg': \"\",\n 'disable-svg': \"\",\n 'download-solid-white-svg': \"\",\n 'search-svg': \"\",\n 'active-left-outlined': \"\",\n 'active-left-filled': \"\",\n 'active-right-outlined': \"\",\n 'active-right-filled': \"\",\n 'windows-step-one': \"\",\n 'windows-step-two': \"\",\n 'mac-step-one': \"\",\n 'mac-step-two': \"\",\n 'mac-step-three': \"\",\n 'mac-step-four': \"\",\n 'enable-solid-svg': \"\",\n },\n});\n\n// Load fluent ui theme.\nloadTheme({\n palette: {\n themePrimary: '#E51046',\n themeLighterAlt: '#fff9f5',\n themeLighter: '#ffe7d6',\n themeLight: '#ef2054',\n themeTertiary: '#eb0f46',\n themeSecondary: '#d90f42',\n themeDarkAlt: '#ce0e3e',\n themeDark: '#c00d3a',\n themeDarker: '#b70c37',\n neutralLighterAlt: '#faf9f8',\n neutralLighter: '#f3f2f1',\n neutralLight: '#edebe9',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralQuaternary: '#d0d0d0',\n neutralTertiaryAlt: '#c8c6c4',\n neutralTertiary: '#c2c2c2',\n neutralSecondary: '#858585',\n neutralPrimaryAlt: '#4b4b4b',\n neutralPrimary: '#333333',\n neutralDark: '#272727',\n black: '#1d1d1d',\n white: '#ffffff',\n red: '#E50F46',\n blue: '#037399',\n green: '#12B361',\n lightGrey: '#666666',\n transparentGrey: '#000',\n },\n});\n\nReactDOM.render(\n \n \n ,\n rootElement\n);\n\n// Register the service worker.\nserviceWorkerRegistration.register();\n"],"sourceRoot":""}