{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./errors/CancelledError.ts","webpack:///./errors/HttpError.ts","webpack:///./hooks/useAction.ts","webpack:///./hooks/useBoundAction.ts","webpack:///./hooks/useParametricSelector.ts","webpack:///./index.tsx","webpack:///./init.tsx","webpack:///./io/codecs/IntegerFromString.ts","webpack:///./io/codecs/NativeBlob.ts","webpack:///./io/codecs/NumberFromString.ts","webpack:///./io/combinators/ReadOnlyArray.ts","webpack:///./io/utils/decodeOrGet.ts","webpack:///./io/utils/decodeOrThrow.ts","webpack:///./migration/react-intl.tsx","webpack:///./modules/announcements/actions/AnnouncementsActions.ts","webpack:///./modules/announcements/components/AnnouncementsEmpty.tsx","webpack:///./modules/announcements/reducers/announcementsReducer.ts","webpack:///./modules/announcements/sagas/announcementsSaga.ts","webpack:///./modules/announcements/sagas/fetchAnnouncements.ts","webpack:///./modules/announcements/sagas/readAnnouncements.ts","webpack:///./modules/announcements/sagas/utils/loadAnnouncements.ts","webpack:///./modules/announcements/sagas/utils/readAnnouncement.ts","webpack:///./modules/announcements/selectors/getAnnouncementState.ts","webpack:///./modules/announcements/views/Announcements.tsx","webpack:///./modules/api/sagas/utils/makeRestRequest.ts","webpack:///./modules/api/utils/isHttpError.ts","webpack:///./modules/asset/actions/AssetActions.ts","webpack:///./modules/asset/reducers/assetCancelReducer.ts","webpack:///./modules/asset/reducers/assetReducer.ts","webpack:///./modules/asset/reducers/assetUploadReducer.ts","webpack:///./modules/asset/sagas/assetSaga.ts","webpack:///./modules/asset/sagas/assetUploadSaga.ts","webpack:///./modules/asset/sagas/utils/uploadAsset.ts","webpack:///./modules/asset/selectors/getAssetState.ts","webpack:///./modules/asset/views/AssetUpload.tsx","webpack:///./modules/asset/views/FileUpload.tsx","webpack:///./modules/basedata/actions/BasedataActions.ts","webpack:///./modules/basedata/constants/schema.ts","webpack:///./modules/basedata/pages/BasedataPage.tsx","webpack:///./modules/basedata/sagas/basedataChangeSaga.ts","webpack:///./modules/basedata/sagas/basedataSaga.ts","webpack:///./modules/basedata/selectors/getBasedataFormData.ts","webpack:///./modules/basedata/views/BasedataFormView.tsx","webpack:///./modules/common/codecs/Announcement.ts","webpack:///./modules/common/codecs/Asset.ts","webpack:///./modules/common/codecs/AuthUser.ts","webpack:///./modules/common/codecs/ContainerType.ts","webpack:///./modules/common/codecs/DeviceType.ts","webpack:///./modules/common/codecs/Empty.ts","webpack:///./modules/common/codecs/EnergyEfficiencyClass.ts","webpack:///./modules/common/codecs/FlowDirection.ts","webpack:///./modules/common/codecs/Language.ts","webpack:///./modules/common/codecs/NonEmptyString.ts","webpack:///./modules/common/codecs/Organization.ts","webpack:///./modules/common/codecs/Orientation.ts","webpack:///./modules/common/codecs/Project.ts","webpack:///./modules/common/codecs/ThermalEnergy.ts","webpack:///./modules/common/codecs/UserRole.ts","webpack:///./modules/common/codecs/XlsxValue.ts","webpack:///./modules/common/components/AreaUnitView.tsx","webpack:///./modules/common/components/AssetImage.tsx","webpack:///./modules/common/components/BlobImage.tsx","webpack:///./modules/common/components/BottomNavigationHelper.tsx","webpack:///./modules/common/components/CarbonIntensityUnit.tsx","webpack:///./modules/common/components/CarbonSavingsUnit.tsx","webpack:///./modules/common/components/Checkbox.tsx","webpack:///./modules/common/components/CurrencySymbol.tsx","webpack:///./modules/common/components/CustomBreadcrumbItem.tsx","webpack:///./modules/common/components/CustomButton.tsx","webpack:///./modules/common/components/CustomLoading.tsx","webpack:///./modules/common/components/CustomMenu.tsx","webpack:///./modules/common/components/CustomMenuItem.tsx","webpack:///./modules/common/components/CustomModal.tsx","webpack:///./modules/common/components/CustomTabList.tsx","webpack:///./modules/common/components/CustomToggle.tsx","webpack:///./modules/common/components/Divider.tsx","webpack:///./modules/common/components/Dropdown.tsx","webpack:///./modules/common/components/EnergyEfficiencyLabel.tsx","webpack:///./modules/common/components/EnergyEfficiencyLabelWrapper.tsx","webpack:///./modules/common/components/EnergyEfficiencyStack.tsx","webpack:///./modules/common/components/EnergyEfficiencyTransition.tsx","webpack:///./modules/common/components/EnergyPriceUnit.tsx","webpack:///./modules/common/components/EnergySavingsUnit.tsx","webpack:///./modules/common/components/EnergySourceUnit.tsx","webpack:///./modules/common/components/Footer.tsx","webpack:///./modules/common/components/FormSection.tsx","webpack:///./modules/common/components/FormattedAmount.tsx","webpack:///./modules/common/components/FormattedBEP.tsx","webpack:///./modules/common/components/FormattedMathMessage.tsx","webpack:///./modules/common/components/FormattedNumber.tsx","webpack:///./modules/common/components/FormattedValue.tsx","webpack:///./modules/common/components/Header.tsx","webpack:///./modules/common/components/HorizontalDivider.tsx","webpack:///./modules/common/components/Lifecycle.tsx","webpack:///./modules/common/components/OnboardingModal.tsx","webpack:///./modules/common/components/OverflowMenu.tsx","webpack:///./modules/common/components/OverflowMenuItem.tsx","webpack:///./modules/common/components/PreserveContent.tsx","webpack:///./modules/common/components/ProjectTitle.tsx","webpack:///./modules/common/components/ProjectToolbar.tsx","webpack:///./modules/common/components/Rating.tsx","webpack:///./modules/common/components/SavingTileAmount.tsx","webpack:///./modules/common/components/SavingTileCard.tsx","webpack:///./modules/common/components/SavingsAmount.tsx","webpack:///./modules/common/components/SavingsValue.tsx","webpack:///./modules/common/components/SupScript.tsx","webpack:///./modules/common/components/SvgFile.tsx","webpack:///./modules/common/components/TileCard.tsx","webpack:///./modules/common/components/Tooltip.tsx","webpack:///./modules/common/components/UserForm.tsx","webpack:///./modules/common/components/UserLanguage.tsx","webpack:///./modules/common/components/UserProfile.tsx","webpack:///./modules/common/constants/dateFormat.ts","webpack:///./modules/common/constants/decimal.ts","webpack:///./modules/common/constants/energyEfficiencyLabels.tsx","webpack:///./modules/common/constants/factorWeightedLabel.ts","webpack:///./modules/common/constants/fileField.ts","webpack:///./modules/common/constants/formattingHelpers.tsx","webpack:///./modules/common/constants/integer.ts","webpack:///./modules/common/constants/language.ts","webpack:///./modules/common/constants/links.ts","webpack:///./modules/common/constants/localStorageKeys.ts","webpack:///./modules/common/constants/locale.ts","webpack:///./modules/common/constants/matrix.ts","webpack:///./modules/common/constants/options.ts","webpack:///./modules/common/constants/theme.tsx","webpack:///./modules/common/hooks/useOutsideClick.ts","webpack:///./modules/common/hooks/usePrevious.ts","webpack:///./modules/common/icons/ArrowDownIcon.tsx","webpack:///./modules/common/icons/ArrowLeftIcon.tsx","webpack:///./modules/common/icons/ArrowRightIcon.tsx","webpack:///./modules/common/icons/ArrowUpIcon.tsx","webpack:///./modules/common/icons/BellIcon.tsx","webpack:///./modules/common/icons/ChartUpIcon.tsx","webpack:///./modules/common/icons/CheckIcon.tsx","webpack:///./modules/common/icons/ChevronDownIcon.tsx","webpack:///./modules/common/icons/ChevronUpIcon.tsx","webpack:///./modules/common/icons/CircleCheckFilledIcon.tsx","webpack:///./modules/common/icons/CircleFilledIcon.tsx","webpack:///./modules/common/icons/CloudIcon.tsx","webpack:///./modules/common/icons/CommentIcon.tsx","webpack:///./modules/common/icons/CoolingIcon.tsx","webpack:///./modules/common/icons/CopyIcon.tsx","webpack:///./modules/common/icons/CrossIcon.tsx","webpack:///./modules/common/icons/CurrencyExchangeIcon.tsx","webpack:///./modules/common/icons/DateIcon.tsx","webpack:///./modules/common/icons/DeleteIcon.tsx","webpack:///./modules/common/icons/DownloadIcon.tsx","webpack:///./modules/common/icons/EditIcon.tsx","webpack:///./modules/common/icons/FanIcon.tsx","webpack:///./modules/common/icons/FileIcon.tsx","webpack:///./modules/common/icons/FilterIcon.tsx","webpack:///./modules/common/icons/GlobeIcon.tsx","webpack:///./modules/common/icons/GridViewIcon.tsx","webpack:///./modules/common/icons/HeatingIcon.tsx","webpack:///./modules/common/icons/IconWrapper.tsx","webpack:///./modules/common/icons/LightningIcon.tsx","webpack:///./modules/common/icons/ListViewIcon.tsx","webpack:///./modules/common/icons/LoadingIcon.tsx","webpack:///./modules/common/icons/MailIcon.tsx","webpack:///./modules/common/icons/PlusIcon.tsx","webpack:///./modules/common/icons/QuestionIcon.tsx","webpack:///./modules/common/icons/ResetIcon.tsx","webpack:///./modules/common/icons/SearchIcon.tsx","webpack:///./modules/common/icons/ShareOff.tsx","webpack:///./modules/common/icons/StarFilledIcon.tsx","webpack:///./modules/common/icons/StarIcon.tsx","webpack:///./modules/common/icons/UploadIcon.tsx","webpack:///./modules/common/icons/UserIcon.tsx","webpack:///./modules/common/icons/WarningIcon.tsx","webpack:///./modules/common/layouts/AdminLayout.tsx","webpack:///./modules/common/layouts/AppLayout.tsx","webpack:///./modules/common/layouts/DocumentLayout.tsx","webpack:///./modules/common/layouts/LoginLayout.tsx","webpack:///./modules/common/sagas/utils/createProject.ts","webpack:///./modules/common/sagas/utils/loadProject.ts","webpack:///./modules/common/sagas/utils/removeProject.ts","webpack:///./modules/common/sagas/utils/updateProject.ts","webpack:///./modules/common/selectors/getProjectLazy.ts","webpack:///./modules/common/types/ChangeOverLevel.ts","webpack:///./modules/common/types/DeviceType.ts","webpack:///./modules/common/types/DifferentTemperatureLevel.ts","webpack:///./modules/common/types/FlowDirection.ts","webpack:///./modules/common/types/Future.ts","webpack:///./modules/common/types/Orientation.ts","webpack:///./modules/common/types/ThermalEnergy.ts","webpack:///./modules/common/types/UserRole.ts","webpack:///./modules/common/types/WaterToAir.ts","webpack:///./modules/common/typography/BodyDesktopLargeRegularText.tsx","webpack:///./modules/common/typography/BodyDesktopSmallLightText.tsx","webpack:///./modules/common/typography/BodyLargeLightText.tsx","webpack:///./modules/common/typography/BodyLargeRegularText.tsx","webpack:///./modules/common/typography/BodySmallText.tsx","webpack:///./modules/common/typography/BodyText.tsx","webpack:///./modules/common/typography/DesktopLargeText.tsx","webpack:///./modules/common/typography/HeadlineSmallText.tsx","webpack:///./modules/common/typography/LeadText.tsx","webpack:///./modules/common/typography/OverlineDesktopSmallText.tsx","webpack:///./modules/common/typography/TitleText.tsx","webpack:///./modules/common/utils/decorator.ts","webpack:///./modules/common/utils/either.ts","webpack:///./modules/common/utils/formatProjectDetailsSubTitle.ts","webpack:///./modules/common/utils/interpolation.ts","webpack:///./modules/common/utils/language.ts","webpack:///./modules/common/utils/locale.ts","webpack:///./modules/common/utils/matrix.ts","webpack:///./modules/common/utils/optional.ts","webpack:///./modules/common/utils/ord.ts","webpack:///./modules/common/utils/point.ts","webpack:///./modules/common/utils/spring.ts","webpack:///./modules/common/utils/svg.ts","webpack:///./modules/config/actions/ConfigActions.ts","webpack:///./modules/config/codecs/ConfigContainer.ts","webpack:///./modules/config/codecs/ConfigDevice.ts","webpack:///./modules/config/codecs/ConfigHvac.ts","webpack:///./modules/config/codecs/ConfigSchema.ts","webpack:///./modules/config/codecs/Environment.ts","webpack:///./modules/config/containers/ConfigProvider.tsx","webpack:///./modules/config/reducers/configFetchReducer.ts","webpack:///./modules/config/reducers/configLanguageSwitchReducer.ts","webpack:///./modules/config/reducers/configReducer.ts","webpack:///./modules/config/sagas/configFetchSaga.ts","webpack:///./modules/config/sagas/configLanguageSwitchSaga.ts","webpack:///./modules/config/sagas/configSaga.ts","webpack:///./modules/config/sagas/utils/loadConfig.ts","webpack:///./modules/config/sagas/utils/loadContainers.ts","webpack:///./modules/config/sagas/utils/loadDevices.ts","webpack:///./modules/config/sagas/utils/loadEnvironment.ts","webpack:///./modules/config/sagas/utils/loadHvacConfig.ts","webpack:///./modules/config/sagas/utils/loadLanguage.ts","webpack:///./modules/config/sagas/utils/loadLocale.ts","webpack:///./modules/config/sagas/utils/loadSchemas.ts","webpack:///./modules/config/sagas/utils/loadTranslations.ts","webpack:///./modules/config/sagas/utils/saveLanguage.ts","webpack:///./modules/config/selectors/getApiBaseUrl.ts","webpack:///./modules/config/selectors/getConfigData.ts","webpack:///./modules/config/selectors/getConfigSchemas.ts","webpack:///./modules/config/selectors/getConfigState.ts","webpack:///./modules/config/selectors/getCurrentDate.ts","webpack:///./modules/config/selectors/getEnvironmentLanguages.ts","webpack:///./modules/config/selectors/getHvacConfig.ts","webpack:///./modules/config/selectors/getLanguage.ts","webpack:///./modules/config/selectors/getLocale.ts","webpack:///./modules/config/selectors/getTolgeeInstance.ts","webpack:///./modules/config/selectors/getTranslator.ts","webpack:///./modules/config/utils/sentryCatch.ts","webpack:///./modules/config/utils/sentryInit.ts","webpack:///./modules/error/containers/ErrorBoundary.tsx","webpack:///./modules/error/pages/ErrorPage.tsx","webpack:///./modules/error/views/ErrorMessage.tsx","webpack:///./modules/error/views/ErrorView.tsx","webpack:///./modules/evaluation/actions/EvaluationActions.ts","webpack:///./modules/evaluation/pages/EvaluationPage.tsx","webpack:///./modules/evaluation/sagas/evaluationChangeSaga.ts","webpack:///./modules/evaluation/sagas/evaluationSaga.ts","webpack:///./modules/evaluation/selectors/getEvaluationFormData.ts","webpack:///./modules/evaluation/selectors/getEvaluationResults.ts","webpack:///./modules/evaluation/views/EvaluationFormView.tsx","webpack:///./modules/evaluation/views/EvaluationResultsCharts.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsGraphArea.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsGraphBEP.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsGraphCO2.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsGraphIRR.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsGraphROI.tsx","webpack:///./modules/evaluation/views/EvaluationResultsChartsXTick.tsx","webpack:///./modules/evaluation/views/EvaluationResultsSavings.tsx","webpack:///./modules/evaluation/views/EvaluationScreen.tsx","webpack:///./modules/feedback/actions/FeedbackActions.ts","webpack:///./modules/feedback/constants/formData.ts","webpack:///./modules/feedback/constants/schema.ts","webpack:///./modules/feedback/sagas/feedbackSaga.ts","webpack:///./modules/feedback/sagas/feedbackSendSaga.ts","webpack:///./modules/feedback/sagas/utils/sendFeedback.ts","webpack:///./modules/feedback/views/FeedbackButton.tsx","webpack:///./modules/feedback/views/FeedbackForm.tsx","webpack:///./modules/feedback/views/FeedbackModal.tsx","webpack:///./modules/feedback/views/FeedbackSent.tsx","webpack:///./modules/form/components/AssetField.tsx","webpack:///./modules/form/components/AutocompleteField.tsx","webpack:///./modules/form/components/CheckboxField.tsx","webpack:///./modules/form/components/DateboxField.tsx","webpack:///./modules/form/components/DecimalField.tsx","webpack:///./modules/form/components/DropdownField.tsx","webpack:///./modules/form/components/FileField.tsx","webpack:///./modules/form/components/PasswordField.tsx","webpack:///./modules/form/components/RatingField.tsx","webpack:///./modules/form/components/SearchField.tsx","webpack:///./modules/form/components/TextAreaField.tsx","webpack:///./modules/form/components/TextField.tsx","webpack:///./modules/form/components/ToggleField.tsx","webpack:///./modules/form/hooks/useFormResolver.ts","webpack:///./modules/form/hooks/useFormValidator.ts","webpack:///./modules/form/sagas/utils/formSubmitFailure.ts","webpack:///./modules/form/sagas/utils/formSubmitStart.ts","webpack:///./modules/form/sagas/utils/formSubmitSuccess.ts","webpack:///./modules/form/sagas/utils/formValidate.ts","webpack:///./modules/form/utils/rules.ts","webpack:///./modules/form/utils/transform.ts","webpack:///./modules/form/utils/validate.ts","webpack:///./modules/hvac/actions/HvacActions.ts","webpack:///./modules/hvac/constants/ISOCategories.ts","webpack:///./modules/hvac/pages/HvacPage.tsx","webpack:///./modules/hvac/sagas/hvacChangeSaga.ts","webpack:///./modules/hvac/sagas/hvacSaga.ts","webpack:///./modules/hvac/selectors/getHvacAssesmentFormData.ts","webpack:///./modules/hvac/selectors/getHvacBuildingFormData.ts","webpack:///./modules/hvac/selectors/getHvacConfig.ts","webpack:///./modules/hvac/selectors/getHvacCurrencyCode.ts","webpack:///./modules/hvac/selectors/getHvacData.ts","webpack:///./modules/hvac/selectors/getHvacFormCounters.ts","webpack:///./modules/hvac/selectors/getHvacFormData.ts","webpack:///./modules/hvac/selectors/getHvacResults.ts","webpack:///./modules/hvac/selectors/getHvacResultsInaccurate.ts","webpack:///./modules/hvac/selectors/getHvacResultsOverallRating.ts","webpack:///./modules/hvac/types/HvacAssessmentCategories.ts","webpack:///./modules/hvac/utils/filterHvacSectonByCategory.ts","webpack:///./modules/hvac/utils/getDefaultFormAnswer.ts","webpack:///./modules/hvac/utils/getDefaultFormSection.ts","webpack:///./modules/hvac/utils/getDefaultFormVariant.ts","webpack:///./modules/hvac/utils/getReportHvacEnergy.ts","webpack:///./modules/hvac/utils/mapHvacFormToStore.ts","webpack:///./modules/hvac/utils/mapHvacStoreToForm.ts","webpack:///./modules/hvac/utils/resolveHvacFormData.ts","webpack:///./modules/hvac/views/HvacFormAssessmentView.tsx","webpack:///./modules/hvac/views/HvacFormChapter.tsx","webpack:///./modules/hvac/views/HvacFormClearConfirmationModal.tsx","webpack:///./modules/hvac/views/HvacFormCommentModal.tsx","webpack:///./modules/hvac/views/HvacFormSection.tsx","webpack:///./modules/hvac/views/HvacFormSectionAdditionalInput.tsx","webpack:///./modules/hvac/views/HvacFormSectionAdditionals.tsx","webpack:///./modules/hvac/views/HvacFormSectionContent.tsx","webpack:///./modules/hvac/views/HvacFormSectionCopy.tsx","webpack:///./modules/hvac/views/HvacFormSectionCopyDeleteConfirmationModal.tsx","webpack:///./modules/hvac/views/HvacFormSectionCopyTitleModal.tsx","webpack:///./modules/hvac/views/HvacFormSectionFormBlock.tsx","webpack:///./modules/hvac/views/HvacFormSectionHeader.tsx","webpack:///./modules/hvac/views/HvacFormSetupField.tsx","webpack:///./modules/hvac/views/HvacFormSetupOption.tsx","webpack:///./modules/hvac/views/HvacResultEnergyElectricalView.tsx","webpack:///./modules/hvac/views/HvacResultEnergyPricesView.tsx","webpack:///./modules/hvac/views/HvacResultEnergyThermalView.tsx","webpack:///./modules/hvac/views/HvacResultEnergyView.tsx","webpack:///./modules/hvac/views/HvacResultSavingsExplanation.tsx","webpack:///./modules/hvac/views/HvacResultSavingsOverall.tsx","webpack:///./modules/hvac/views/HvacResultSavingsSystem.tsx","webpack:///./modules/hvac/views/HvacResultSavingsView.tsx","webpack:///./modules/hvac/views/HvacResultSummaryChapter.tsx","webpack:///./modules/hvac/views/HvacResultSummaryView.tsx","webpack:///./modules/loader/actions/LoaderActions.ts","webpack:///./modules/loader/sagas/loaderSaga.ts","webpack:///./modules/loader/sagas/utils/loadingIndicator.ts","webpack:///./modules/login/actions/LoginActions.ts","webpack:///./modules/login/actions/RequestAccessActions.ts","webpack:///./modules/login/actions/WhoAmIAction.ts","webpack:///./modules/login/constants/schema.ts","webpack:///./modules/login/pages/LoginPage.tsx","webpack:///./modules/login/reducers/loginReducer.ts","webpack:///./modules/login/reducers/loginUserReducer.ts","webpack:///./modules/login/sagas/loginPerformSaga.ts","webpack:///./modules/login/sagas/loginSaga.ts","webpack:///./modules/login/sagas/requestAccessSubmitSaga.ts","webpack:///./modules/login/sagas/utils/loadUser.ts","webpack:///./modules/login/sagas/utils/performLogin.ts","webpack:///./modules/login/sagas/utils/performLogout.ts","webpack:///./modules/login/sagas/utils/submitRequestAccess.ts","webpack:///./modules/login/selectors/getIsAuthenticated.ts","webpack:///./modules/login/selectors/getLoggedInUser.ts","webpack:///./modules/login/selectors/getLoginState.ts","webpack:///./modules/login/views/LoginScreen.tsx","webpack:///./modules/login/views/RequestAccessModal.tsx","webpack:///./modules/modals/actions/ModalActions.ts","webpack:///./modules/modals/pages/ModalStack.tsx","webpack:///./modules/modals/pages/ModalWrapper.tsx","webpack:///./modules/modals/reducers/modalProjectErrorReducer.ts","webpack:///./modules/modals/reducers/modalStackReducer.ts","webpack:///./modules/modals/reducers/modalUserErrorReducer.ts","webpack:///./modules/modals/sagas/modalProjectErrorSaga.ts","webpack:///./modules/modals/sagas/modalStackSaga.ts","webpack:///./modules/modals/sagas/modalUserErrorSaga.ts","webpack:///./modules/modals/selectors/getModalStack.ts","webpack:///./modules/modals/views/ProjectErrorModal.tsx","webpack:///./modules/modals/views/UserErrorModal.tsx","webpack:///./modules/notifications/actions/NotificationActions.ts","webpack:///./modules/notifications/reducers/notificationReducer.ts","webpack:///./modules/notifications/sagas/showNotification.ts","webpack:///./modules/notifications/selectors/getNotification.ts","webpack:///./modules/notifications/views/Notification.tsx","webpack:///./modules/organization/actions/OrganizationActions.ts","webpack:///./modules/organization/pages/OrganizationPage.tsx","webpack:///./modules/organization/sagas/organizationSaga.ts","webpack:///./modules/organization/sagas/updateLogoSaga.ts","webpack:///./modules/organization/sagas/updateUserSaga.ts","webpack:///./modules/organization/selectors/getOrganization.ts","webpack:///./modules/organization/selectors/getOrganizationFormData.ts","webpack:///./modules/organization/views/OrganizationSettings.tsx","webpack:///./modules/output/context/OutputDocumentContext.tsx","webpack:///./modules/output/context/OutputPageContext.tsx","webpack:///./modules/output/utils/splitBlocksIntoPages.ts","webpack:///./modules/output/views/OutputDocument.tsx","webpack:///./modules/output/views/OutputDocumentPage.tsx","webpack:///./modules/output/views/OutputLogo.tsx","webpack:///./modules/output/views/OutputPage.tsx","webpack:///./modules/output/views/OutputPagination.tsx","webpack:///./modules/output/views/OutputTitle.tsx","webpack:///./modules/password-forgot/actions/PasswordForgotActions.ts","webpack:///./modules/password-forgot/constants/schema.ts","webpack:///./modules/password-forgot/pages/PasswordForgotPage.tsx","webpack:///./modules/password-forgot/sagas/passwordForgotSaga.ts","webpack:///./modules/password-forgot/sagas/passwordForgotSubmitSaga.ts","webpack:///./modules/password-forgot/sagas/utils/submitPasswordForgot.ts","webpack:///./modules/password-forgot/views/PasswordForgotForm.tsx","webpack:///./modules/password-forgot/views/PasswordForgotScreen.tsx","webpack:///./modules/password-reset/actions/PasswordResetActions.ts","webpack:///./modules/password-reset/constants/schema.ts","webpack:///./modules/password-reset/pages/PasswordResetPage.tsx","webpack:///./modules/password-reset/pages/PasswordSetupPage.tsx","webpack:///./modules/password-reset/reducers/passwordResetReducer.ts","webpack:///./modules/password-reset/reducers/passwordResetTokenReducer.ts","webpack:///./modules/password-reset/sagas/passwordResetSaga.ts","webpack:///./modules/password-reset/sagas/passwordResetSubmitSaga.ts","webpack:///./modules/password-reset/sagas/utils/submitPasswordReset.ts","webpack:///./modules/password-reset/sagas/utils/validateRecoveryToken.ts","webpack:///./modules/password-reset/selectors/getPasswordResetState.ts","webpack:///./modules/password-reset/selectors/getPasswordResetToken.ts","webpack:///./modules/password-reset/selectors/getPasswordResetValid.ts","webpack:///./modules/password-reset/views/PasswordResetError.tsx","webpack:///./modules/password-reset/views/PasswordResetForm.tsx","webpack:///./modules/password-reset/views/PasswordResetScreen.tsx","webpack:///./modules/password-reset/views/PasswordSetupError.tsx","webpack:///./modules/password-reset/views/PasswordSetupForm.tsx","webpack:///./modules/password-reset/views/PasswordSetupScreen.tsx","webpack:///./modules/profile/actions/ProfileActions.ts","webpack:///./modules/profile/constants/schema.ts","webpack:///./modules/profile/page/ProfilePage.tsx","webpack:///./modules/profile/sagas/profileChangePasswordSaga.ts","webpack:///./modules/profile/sagas/profileSaga.ts","webpack:///./modules/profile/sagas/profileSaveSaga.ts","webpack:///./modules/profile/sagas/utils/changePassword.ts","webpack:///./modules/profile/sagas/utils/updateProfile.ts","webpack:///./modules/profile/views/PasswordChangeForm.tsx","webpack:///./modules/profile/views/ProfileContent.tsx","webpack:///./modules/profile/views/ProfileHeader.tsx","webpack:///./modules/project-list/actions/ProjectListActions.ts","webpack:///./modules/project-list/codecs/ProjectListViewMode.ts","webpack:///./modules/project-list/codecs/export.ts","webpack:///./modules/project-list/codecs/import.ts","webpack:///./modules/project-list/constants/export.ts","webpack:///./modules/project-list/constants/import.ts","webpack:///./modules/project-list/constants/pageSize.ts","webpack:///./modules/project-list/constants/sort.ts","webpack:///./modules/project-list/pages/ProjectListPage.tsx","webpack:///./modules/project-list/reducers/projectListDataReducer.ts","webpack:///./modules/project-list/reducers/projectListDownloadReducer.ts","webpack:///./modules/project-list/reducers/projectListExportReducer.ts","webpack:///./modules/project-list/reducers/projectListImportReducer.ts","webpack:///./modules/project-list/reducers/projectListReducer.ts","webpack:///./modules/project-list/reducers/projectListRemovingReducer.ts","webpack:///./modules/project-list/reducers/projectListUnfollowingReducer.ts","webpack:///./modules/project-list/sagas/projectListDownloadSaga.ts","webpack:///./modules/project-list/sagas/projectListExportSaga.ts","webpack:///./modules/project-list/sagas/projectListFilterSaga.ts","webpack:///./modules/project-list/sagas/projectListImportCompleteSaga.ts","webpack:///./modules/project-list/sagas/projectListImportSubmitSaga.ts","webpack:///./modules/project-list/sagas/projectListImportUploadSaga.ts","webpack:///./modules/project-list/sagas/projectListRemoveSaga.ts","webpack:///./modules/project-list/sagas/projectListSaga.ts","webpack:///./modules/project-list/sagas/projectListShareSaga.ts","webpack:///./modules/project-list/sagas/projectListUnfollowSaga.ts","webpack:///./modules/project-list/sagas/utils/importProjects.ts","webpack:///./modules/project-list/sagas/utils/loadProjectList.ts","webpack:///./modules/project-list/sagas/utils/loadProjectListChunk.ts","webpack:///./modules/project-list/sagas/utils/loadProjectListFull.ts","webpack:///./modules/project-list/sagas/utils/loadProjectListViewMode.ts","webpack:///./modules/project-list/sagas/utils/saveProjectListViewMode.ts","webpack:///./modules/project-list/sagas/utils/unfollowProject.ts","webpack:///./modules/project-list/selectors/getProjectListData.ts","webpack:///./modules/project-list/selectors/getProjectListDownloading.ts","webpack:///./modules/project-list/selectors/getProjectListExport.ts","webpack:///./modules/project-list/selectors/getProjectListExportEntry.ts","webpack:///./modules/project-list/selectors/getProjectListFilterValues.ts","webpack:///./modules/project-list/selectors/getProjectListImport.ts","webpack:///./modules/project-list/selectors/getProjectListItem.ts","webpack:///./modules/project-list/selectors/getProjectListItemTextBlocks.ts","webpack:///./modules/project-list/selectors/getProjectListProjects.ts","webpack:///./modules/project-list/selectors/getProjectListQuery.ts","webpack:///./modules/project-list/selectors/getProjectListRemoving.ts","webpack:///./modules/project-list/selectors/getProjectListSlice.ts","webpack:///./modules/project-list/selectors/getProjectListState.ts","webpack:///./modules/project-list/selectors/getProjectListUnfollowing.ts","webpack:///./modules/project-list/types/ProjectListViewMode.ts","webpack:///./modules/project-list/utils/filter.ts","webpack:///./modules/project-list/utils/formatImportError.ts","webpack:///./modules/project-list/utils/getExportDocumentFilename.ts","webpack:///./modules/project-list/utils/mapImportLine.ts","webpack:///./modules/project-list/utils/mergeImportData.ts","webpack:///./modules/project-list/utils/query.ts","webpack:///./modules/project-list/utils/slice.ts","webpack:///./modules/project-list/utils/sort.ts","webpack:///./modules/project-list/views/ProjectListEmpty.tsx","webpack:///./modules/project-list/views/ProjectListFilterDropdown.tsx","webpack:///./modules/project-list/views/ProjectListFilterGroup.tsx","webpack:///./modules/project-list/views/ProjectListHeader.tsx","webpack:///./modules/project-list/views/ProjectListImportDataTable.tsx","webpack:///./modules/project-list/views/ProjectListImportModal.tsx","webpack:///./modules/project-list/views/ProjectListImportSelector.tsx","webpack:///./modules/project-list/views/ProjectListImportUpload.tsx","webpack:///./modules/project-list/views/ProjectListItemGridView.tsx","webpack:///./modules/project-list/views/ProjectListItemListView.tsx","webpack:///./modules/project-list/views/ProjectListPager.tsx","webpack:///./modules/project-list/views/ProjectListRating.tsx","webpack:///./modules/project-list/views/ProjectListRemoveModal.tsx","webpack:///./modules/project-list/views/ProjectListSortLink.tsx","webpack:///./modules/project-list/views/ProjectListToolbar.tsx","webpack:///./modules/project-list/views/ProjectListView.tsx","webpack:///./modules/project-list/views/UnfollowProjectModal.tsx","webpack:///./modules/project-new/actions/ProjectNewActions.ts","webpack:///./modules/project-new/constants/formData.ts","webpack:///./modules/project-new/constants/projectData.ts","webpack:///./modules/project-new/constants/schema.ts","webpack:///./modules/project-new/sagas/projectNewCreateSaga.ts","webpack:///./modules/project-new/sagas/projectNewSaga.ts","webpack:///./modules/project-new/utils/getRandomDefaultCover.ts","webpack:///./modules/project-new/views/BasicInfoFormModal.tsx","webpack:///./modules/project-new/views/BuildingInfoFormModal.tsx","webpack:///./modules/project-new/views/ProjectCreateModal.tsx","webpack:///./modules/project-sync/actions/ProjectSyncActions.ts","webpack:///./modules/project-sync/reducers/projectSyncPerformReducer.ts","webpack:///./modules/project-sync/reducers/projectSyncReducer.ts","webpack:///./modules/project-sync/reducers/projectSyncResetReducer.ts","webpack:///./modules/project-sync/sagas/projectSyncPerformSaga.ts","webpack:///./modules/project-sync/sagas/projectSyncSaga.ts","webpack:///./modules/project-sync/sagas/utils/forceProjectSynchronization.ts","webpack:///./modules/project-sync/sagas/utils/syncProjectBackground.ts","webpack:///./modules/project-sync/sagas/utils/syncProjectForeground.ts","webpack:///./modules/project-sync/sagas/utils/waitProjectSynchronization.ts","webpack:///./modules/project-sync/selectors/getProjectSyncData.ts","webpack:///./modules/project-sync/selectors/getProjectSyncState.ts","webpack:///./modules/project-view/actions/ProjectViewActions.ts","webpack:///./modules/project-view/reducers/projectViewDataReducer.ts","webpack:///./modules/project-view/reducers/projectViewReducer.ts","webpack:///./modules/project-view/sagas/projectViewSaga.ts","webpack:///./modules/project-view/sagas/projectViewShareSaga.ts","webpack:///./modules/project-view/selectors/getProjectDetails.ts","webpack:///./modules/project-view/selectors/getProjectViewData.ts","webpack:///./modules/project-view/selectors/getProjectViewState.ts","webpack:///./modules/report/actions/ReportActions.ts","webpack:///./modules/report/constants/schema.ts","webpack:///./modules/report/pages/ReportDocumentPage.tsx","webpack:///./modules/report/pages/ReportPage.tsx","webpack:///./modules/report/reducers/reportGenerateReducer.ts","webpack:///./modules/report/reducers/reportReducer.ts","webpack:///./modules/report/reducers/reportResetReducer.ts","webpack:///./modules/report/sagas/reportChangeSaga.ts","webpack:///./modules/report/sagas/reportGenerateSaga.ts","webpack:///./modules/report/sagas/reportSaga.ts","webpack:///./modules/report/sagas/utils/buildReportDocument.tsx","webpack:///./modules/report/sagas/utils/waitReportDocument.tsx","webpack:///./modules/report/selectors/getReportCurrency.ts","webpack:///./modules/report/selectors/getReportFakeStore.ts","webpack:///./modules/report/selectors/getReportFormData.ts","webpack:///./modules/report/selectors/getReportGenerated.ts","webpack:///./modules/report/selectors/getReportGeneratedCover.ts","webpack:///./modules/report/selectors/getReportGeneratedEnergy.ts","webpack:///./modules/report/selectors/getReportGeneratedEvaluation.ts","webpack:///./modules/report/selectors/getReportGeneratedHvac.ts","webpack:///./modules/report/selectors/getReportGeneratedSavings.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsAnnualSavings.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsCarbonEmission.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsEnergyAbsolute.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsEnergyRelative.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsRatingPerArea.ts","webpack:///./modules/report/selectors/getReportGeneratedSavingsTotalCost.ts","webpack:///./modules/report/selectors/getReportGeneratedSchema.ts","webpack:///./modules/report/selectors/getReportLoading.ts","webpack:///./modules/report/utils/createShadowHost.ts","webpack:///./modules/report/utils/getReportDocumentFilename.ts","webpack:///./modules/report/utils/renderComponent.tsx","webpack:///./modules/report/views/ReportDocumentContent.tsx","webpack:///./modules/report/views/ReportFormDocument.tsx","webpack:///./modules/report/views/ReportFormFieldToggle.tsx","webpack:///./modules/report/views/ReportFormSectionConfigCover.tsx","webpack:///./modules/report/views/ReportFormSectionConfigEnergy.tsx","webpack:///./modules/report/views/ReportFormSectionConfigEvaluation.tsx","webpack:///./modules/report/views/ReportFormSectionConfigEvaluationCharts.tsx","webpack:///./modules/report/views/ReportFormSectionConfigHvac.tsx","webpack:///./modules/report/views/ReportFormSectionConfigSavings.tsx","webpack:///./modules/report/views/ReportFormSectionConfigSchema.tsx","webpack:///./modules/report/views/ReportFormSectionNoSchema.tsx","webpack:///./modules/report/views/ReportFormSectionPreview.tsx","webpack:///./modules/report/views/ReportFormSectionPreviewPage.tsx","webpack:///./modules/report/views/ReportFormView.tsx","webpack:///./modules/report/views/document/ReportDocumentPageAmount.tsx","webpack:///./modules/report/views/document/ReportDocumentPageCO2Value.tsx","webpack:///./modules/report/views/document/ReportDocumentPageCover.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEnergy.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEnergyThermal.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEnergyValue.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEnergyVentilation.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEvaluation.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEvaluationCharts.tsx","webpack:///./modules/report/views/document/ReportDocumentPageEvaluationOverview.tsx","webpack:///./modules/report/views/document/ReportDocumentPageHvac.tsx","webpack:///./modules/report/views/document/ReportDocumentPageSavings.tsx","webpack:///./modules/report/views/document/ReportDocumentPageSchema.tsx","webpack:///./modules/report/views/document/ReportDocumentPageSchemaCanvas.tsx","webpack:///./modules/routing/actions/RouteChange.ts","webpack:///./modules/routing/constants/RoutingHooks.ts","webpack:///./modules/routing/constants/RoutingStates.ts","webpack:///./modules/routing/containers/Initialization.tsx","webpack:///./modules/routing/containers/RouteSwitch.tsx","webpack:///./modules/routing/errors/RouteNotFoundError.ts","webpack:///./modules/routing/hooks/emulateTransitionDelay.ts","webpack:///./modules/routing/hooks/errorHandlers/cancelledErrorHandler.ts","webpack:///./modules/routing/hooks/errorHandlers/unauthorizedErrorHandler.ts","webpack:///./modules/routing/hooks/errorHandlers/unknownErrorHandler.ts","webpack:///./modules/routing/hooks/errorTransitionHandling.ts","webpack:///./modules/routing/hooks/errorTransitionLogging.ts","webpack:///./modules/routing/hooks/globalTransitionLogging.ts","webpack:///./modules/routing/hooks/resolvers/abortProjectList.ts","webpack:///./modules/routing/hooks/resolvers/authenticate.ts","webpack:///./modules/routing/hooks/resolvers/checkIsAuthenticated.ts","webpack:///./modules/routing/hooks/resolvers/destroySession.ts","webpack:///./modules/routing/hooks/resolvers/fetchPasswordResetToken.ts","webpack:///./modules/routing/hooks/resolvers/fetchProjectDetails.ts","webpack:///./modules/routing/hooks/resolvers/fetchProjectList.ts","webpack:///./modules/routing/hooks/resolvers/fetchUsersList.ts","webpack:///./modules/routing/hooks/resolvers/loadSchemaSelectionState.ts","webpack:///./modules/routing/hooks/resolvers/redirectTo.ts","webpack:///./modules/routing/hooks/resolvers/resetPasswordResetToken.ts","webpack:///./modules/routing/hooks/resolvers/resetProjectDetails.ts","webpack:///./modules/routing/hooks/resolvers/resetProjectList.ts","webpack:///./modules/routing/hooks/resolvers/resetUsersList.ts","webpack:///./modules/routing/hooks/resolvers/syncProjectDetails.ts","webpack:///./modules/routing/hooks/resolvers/syncUser.ts","webpack:///./modules/routing/hooks/stateTransitionLogging.ts","webpack:///./modules/routing/reducers/routeChangeReducer.ts","webpack:///./modules/routing/reducers/routingReducer.ts","webpack:///./modules/routing/sagas/handleTransitionError.ts","webpack:///./modules/routing/sagas/locationChangeSaga.ts","webpack:///./modules/routing/sagas/performTransition.ts","webpack:///./modules/routing/sagas/restoreCurrentUrl.ts","webpack:///./modules/routing/sagas/routeChangeSaga.ts","webpack:///./modules/routing/sagas/routingSaga.ts","webpack:///./modules/routing/selectors/getCurrentLocation.ts","webpack:///./modules/routing/selectors/getCurrentMatch.ts","webpack:///./modules/routing/selectors/getCurrentState.ts","webpack:///./modules/routing/selectors/getIsRoutingBlocked.ts","webpack:///./modules/routing/selectors/getRoutingState.ts","webpack:///./modules/routing/states/AdminStates.ts","webpack:///./modules/routing/states/HomeStates.ts","webpack:///./modules/routing/states/LayoutStates.ts","webpack:///./modules/routing/states/LoginStates.ts","webpack:///./modules/routing/states/OrganizationStates.ts","webpack:///./modules/routing/states/ProfileState.ts","webpack:///./modules/routing/states/ProjectStates.ts","webpack:///./modules/routing/utils/composeSagas.ts","webpack:///./modules/routing/utils/createTransitionUid.ts","webpack:///./modules/routing/utils/matchState.ts","webpack:///./modules/routing/utils/matchUtils.ts","webpack:///./modules/routing/utils/navigate.ts","webpack:///./modules/routing/utils/transitionUtils.ts","webpack:///./modules/routing/views/RouterLoader.tsx","webpack:///./modules/schema/actions/SchemaActions.ts","webpack:///./modules/schema/codecs/MultipleSchemaForm.ts","webpack:///./modules/schema/constants/filterFormData.ts","webpack:///./modules/schema/constants/localStorageKeys.ts","webpack:///./modules/schema/constants/multipleSchemaMatrix.ts","webpack:///./modules/schema/constants/options.ts","webpack:///./modules/schema/constants/schema.ts","webpack:///./modules/schema/pages/SchemaPage.tsx","webpack:///./modules/schema/reducers/schemaReducer.ts","webpack:///./modules/schema/reducers/schemaSelectionReducer.ts","webpack:///./modules/schema/sagas/preselectedSchemaChangeSaga.ts","webpack:///./modules/schema/sagas/savePreselectedSchema.ts","webpack:///./modules/schema/sagas/saveSchemaSelection.ts","webpack:///./modules/schema/sagas/schemaAreaCommentChangeSaga.ts","webpack:///./modules/schema/sagas/schemaMatrixChangeSaga.ts","webpack:///./modules/schema/sagas/schemaSaga.ts","webpack:///./modules/schema/sagas/schemaSelectionChangeSaga.ts","webpack:///./modules/schema/sagas/schemaTemplateSelectSaga.ts","webpack:///./modules/schema/sagas/schemaVersionChangeSaga.ts","webpack:///./modules/schema/sagas/schemaVersionCreateSaga.ts","webpack:///./modules/schema/sagas/schemaVersionRemoveSaga.ts","webpack:///./modules/schema/selectors/getProjectSchema.ts","webpack:///./modules/schema/selectors/getSchemaFormData.ts","webpack:///./modules/schema/selectors/getSchemaMatrix.ts","webpack:///./modules/schema/selectors/getSchemaSelectionState.ts","webpack:///./modules/schema/utils/event/canvasGesture.ts","webpack:///./modules/schema/utils/event/canvasPointer.ts","webpack:///./modules/schema/utils/event/canvasWheel.ts","webpack:///./modules/schema/utils/filter.ts","webpack:///./modules/schema/utils/getReportPreselectedFutureVersion.ts","webpack:///./modules/schema/utils/mapSchema.ts","webpack:///./modules/schema/utils/resolveReportSchemaSelection.ts","webpack:///./modules/schema/views/CommentVersionModal.tsx","webpack:///./modules/schema/views/DeleteVersionDialog.tsx","webpack:///./modules/schema/views/MultipleSchemasScreen.tsx","webpack:///./modules/schema/views/SchemaCanvas.tsx","webpack:///./modules/schema/views/SchemaCard.tsx","webpack:///./modules/schema/views/SchemaClearContainersConfirmation.tsx","webpack:///./modules/schema/views/SchemaContainerPreview.tsx","webpack:///./modules/schema/views/SchemaContainerSelect.tsx","webpack:///./modules/schema/views/SchemaEditScreen.tsx","webpack:///./modules/schema/views/SchemaGesture.tsx","webpack:///./modules/schema/views/SchemaInputLayer.tsx","webpack:///./modules/schema/views/SchemaSelectScreen.tsx","webpack:///./modules/schema/views/canvas/SchemaAssignments.tsx","webpack:///./modules/schema/views/canvas/SchemaBackground.tsx","webpack:///./modules/schema/views/canvas/SchemaDeviceView.tsx","webpack:///./modules/screen-size-guard/views/ScreenSizeGuard.tsx","webpack:///./modules/scroll/actions/ScrollRestoration.ts","webpack:///./modules/scroll/containers/ScrollRestoration.ts","webpack:///./modules/scroll/reducers/scrollReducer.ts","webpack:///./modules/scroll/reducers/scrollRestorationReducer.ts","webpack:///./modules/scroll/selectors/getScrollRestoration.ts","webpack:///./modules/scroll/selectors/getScrollState.ts","webpack:///./modules/scroll/utils/scrollRestore.ts","webpack:///./modules/sharing-projects/actions/ShareProjectActions.ts","webpack:///./modules/sharing-projects/codecs/SharedUser.ts","webpack:///./modules/sharing-projects/constants/schema.ts","webpack:///./modules/sharing-projects/containers/ShareProject.tsx","webpack:///./modules/sharing-projects/reducers/shareProjectDataReducer.ts","webpack:///./modules/sharing-projects/reducers/shareProjectReducer.ts","webpack:///./modules/sharing-projects/reducers/shareProjectRemoveReducer.ts","webpack:///./modules/sharing-projects/reducers/shareProjectUsersReducer.ts","webpack:///./modules/sharing-projects/sagas/shareProjectFetchSaga.ts","webpack:///./modules/sharing-projects/sagas/shareProjectRemoveSaga.ts","webpack:///./modules/sharing-projects/sagas/shareProjectSaga.ts","webpack:///./modules/sharing-projects/sagas/shareProjectSubmitSaga.ts","webpack:///./modules/sharing-projects/sagas/utils/loadSharedProjectUsers.ts","webpack:///./modules/sharing-projects/sagas/utils/removeUserFromSharedProject.ts","webpack:///./modules/sharing-projects/sagas/utils/shareProjectWith.ts","webpack:///./modules/sharing-projects/selectors/getShareProjectData.ts","webpack:///./modules/sharing-projects/selectors/getShareProjectProject.ts","webpack:///./modules/sharing-projects/selectors/getShareProjectRemovingUser.ts","webpack:///./modules/sharing-projects/selectors/getShareProjectUsers.ts","webpack:///./modules/sharing-projects/views/ShareProjectModal.tsx","webpack:///./modules/sharing-projects/views/ShareProjectRemoveModal.tsx","webpack:///./modules/sharing-projects/views/ShareProjectShareForm.tsx","webpack:///./modules/sharing-projects/views/ShareProjectUserList.tsx","webpack:///./modules/users/actions/UserActions.ts","webpack:///./modules/users/actions/UsersActions.ts","webpack:///./modules/users/codecs/OrganizationUser.ts","webpack:///./modules/users/components/UserListActions.tsx","webpack:///./modules/users/components/UserListHeader.tsx","webpack:///./modules/users/components/UserRow.tsx","webpack:///./modules/users/constants/userAddFormSchema.ts","webpack:///./modules/users/constants/userEditFormSchema.ts","webpack:///./modules/users/pages/UsersPage.tsx","webpack:///./modules/users/reducers/userAddingReducer.ts","webpack:///./modules/users/reducers/userDeletingReducer.ts","webpack:///./modules/users/reducers/userEditingReducer.ts","webpack:///./modules/users/reducers/userSyncReducer.ts","webpack:///./modules/users/reducers/usersListDataReducer.ts","webpack:///./modules/users/reducers/usersReducer.ts","webpack:///./modules/users/sagas/userCreateSaga.ts","webpack:///./modules/users/sagas/userRemoveSaga.ts","webpack:///./modules/users/sagas/userSaveSaga.ts","webpack:///./modules/users/sagas/userSyncPerformSaga.ts","webpack:///./modules/users/sagas/usersSaga.ts","webpack:///./modules/users/sagas/utils/createUser.ts","webpack:///./modules/users/sagas/utils/deleteUser.ts","webpack:///./modules/users/sagas/utils/forceUserSynchronization.ts","webpack:///./modules/users/sagas/utils/loadUsersList.ts","webpack:///./modules/users/sagas/utils/syncUserBackground.ts","webpack:///./modules/users/sagas/utils/syncUserForeground.ts","webpack:///./modules/users/sagas/utils/updateUser.ts","webpack:///./modules/users/sagas/utils/waitUserSynchronization.ts","webpack:///./modules/users/selectors/getFoundUsers.ts","webpack:///./modules/users/selectors/getSortedFoundSelectableUsers.ts","webpack:///./modules/users/selectors/getSortedFoundUsers.ts","webpack:///./modules/users/selectors/getUserDeleting.ts","webpack:///./modules/users/selectors/getUserEditing.ts","webpack:///./modules/users/selectors/getUsersListData.ts","webpack:///./modules/users/selectors/getUsersQuery.ts","webpack:///./modules/users/selectors/getUsersSortingOrder.ts","webpack:///./modules/users/selectors/getUsersSortingTarget.ts","webpack:///./modules/users/selectors/getUsersState.ts","webpack:///./modules/users/views/AddUserModal.tsx","webpack:///./modules/users/views/DeleteUserModal.tsx","webpack:///./modules/users/views/UsersListBody.tsx","webpack:///./reducers/rootReducer.ts","webpack:///./root.tsx","webpack:///./sagas/rootSaga.ts","webpack:///./sagas/utils/doOnExportWorker.ts","webpack:///./sagas/utils/doOnImportWorker.ts","webpack:///./sagas/utils/doOnPdfWorker.ts","webpack:///./sagas/utils/doOnWorker.ts","webpack:///./sagas/utils/htmlToPdf.ts","webpack:///./sagas/utils/logging.ts","webpack:///./sagas/utils/storage.ts","webpack:///./utils/assert.ts","webpack:///./utils/cancelSagaOn.ts","webpack:///./utils/chainReducers.ts","webpack:///./utils/createActions.ts","webpack:///./utils/createTrigger.ts","webpack:///./utils/guard.ts","webpack:///./utils/selectorUtils.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","CancelledError","BaseError","message","context","previous","super","HttpError","response","status","statusText","this","toJSON","creator","dispatch","useDispatch","useCallback","values","action","useAction","selector","param","plainSelector","state","useSelector","ROOT_ELEMENT","assertNotNull","document","getElementById","init","rootElement","configure","showSpinner","history","createBrowserHistory","sagaMiddleware","error","sagaStack","console","store","middlewares","createStore","rootReducer","composeWithDevTools","trace","applyMiddleware","rootStore","routerMiddleware","reactRoot","createRoot","RootElement","run","rootSaga","Root","render","AppContainer","decoder","pipe","NUMBER_FROM_STRING","D","parse","INTEGER","decode","encoder","encode","String","INTEGER_FROM_STRING","C","make","input","Blob","success","failure","NATIVE_BLOB","E","id","string","Number","isNaN","trim","item","array","getOrElse","getOrElseW","DecodingError","throw","FormattedMessage","T","keyName","params","useIntl","useTranslate","useMemo","formatMessage","descriptor","FormattedDate","language","getLanguage","formatted","Intl","DateTimeFormat","year","month","day","format","Component","props","intl","ANNOUNCEMENTS_READ","createTrigger","ANNOUNCEMENTS_FETCH","AnnouncementsEmpty","className","BellIcon","defaultState","announcements","announcementsReducer","is","takeLatest","readAnnouncements","logDebug","loadAnnouncements","put","trigger","logError","announcementState","select","getAnnouncementState","unreadAnnouncements","filter","announcement","read","all","map","unreadAnnouncement","readAnnouncement","sentryCatch","showNotification","variant","type","messageId","content","makeRestRequest","decodeOrThrow","ANNOUNCEMENTS","RuntimeError","NativeError","wrap","announcementId","encodeURIComponent","ANNOUNCEMENT","Announcements","memo","announcementsState","isBadgeHidden","every","OverflowMenu","interactive","buttonTooltip","buttonSize","onClose","label","CircleFilledIcon","OverflowMenuItem","title","b","em","strong","date","description","getRequestBody","requestData","undefined","FormData","URLSearchParams","JSON","stringify","getRequestType","method","relativeUrl","url","getApiBaseUrl","concat","config","credentials","headers","isDefined","body","fetch","ok","contentType","startsWith","fn","json","text","blob","isHttpError","ASSET_UPLOAD","createActions","ASSET_CANCEL","copy","Map","delete","meta","assetReducer","chainReducers","assetUploadReducer","assetCancelReducer","isRequest","set","FUTURE","pending","isSuccess","isFailure","TASK_MAP","take","fieldId","oldTask","cancel","newTask","fork","assetUploadSaga","file","asset","uploadAsset","append","ASSET","AssetUpload","onTouch","onChange","disabled","children","assetUpload","request","assetCancel","useParametricSelector","getAssetState","loading","handleChange","useEffect","FileUpload","CustomLoading","small","withOverlay","isSizeError","setSizeError","useState","handleDrop","acceptedFiles","getRootProps","getInputProps","useDropzone","onDrop","onFileDialogOpen","onDropRejected","rejectData","event","errors","find","code","maxSize","FILE_MAX_SIZE_FILED_MB","accept","timer","setTimeout","clearTimeout","UploadIcon","DropdownWarning","BASEDATA_CHANGE","BASEDATA_FORM_SCHEMA","R","struct","cover","pass","maxLength","projectGoals","building","required","size","nullable","gt","address","street","city","country","zip","participants","propertyManager","consutlingEngineer","productManager","BasedataPage","project","getProjectDetails","formData","getBasedataFormData","saveForm","shareProject","useBoundAction","PROJECT_VIEW_SHARE","form","useForm","reinitialize","initialValues","useFormValidator","subscribe","prevState","nextState","currentState","Helmet","AppLayout","ProjectToolbar","onShare","BasedataFormView","projectId","ShareProject","modified","goals","modifiedCarbonIntensity","resolveCurrentProjectData","reloaded","syncProjectBackground","wrapped","basedataChangeSaga","createSelector","renderBuildingTypeOption","option","renderUnitOptions","AreaUnitView","unit","renderCountryOption","collator","Collator","INTL_LOCALE_MAP","projectHvacUrl","countryCodesFilteredByLanguage","COUNTRY_CODES","sort","optionA","optionB","compare","TileCard","TextField","labelText","field","at","autoComplete","placeholder","TextAreaField","rows","showHint","AssetField","DropdownField","wrapperClass","options","BUILDING_TYPE_OPTIONS","transform","ensureNonNull","titleText","itemToElement","renderSelectedItem","DecimalField","maxValue","MAX_TRILLION","UNIT_VERSION_OPTIONS","renderHint","constNull","AutocompleteField","direction","BottomNavigationHelper","routeForthText","routeForthPath","UUID","boolean","DATE_TIME","fileName","AUTH_USER","email","firstName","lastName","organization","ORGANIZATION","role","USER_ROLE","CONTAINER_TYPE","literal","DEVICE_TYPE","DeviceType","THROTTLING_CIRCUIT","DIVERTING_CIRCUIT","INJECTION_CIRCUIT","MIXING_CIRCUIT","BYPASS","PUMP","ACTIVE_OR_PASSIVE_CIRCUIT","SPECIFIC_CIRCUIT","CHANGEOVER","identity","EMPTY","ENERGY_EFFICIENCY_CLASS","FLOW_DIRECTION","FlowDirection","NORTH","SOUTH","EAST","WEST","LANGUAGE","LANGUAGE_LIST","DECODER","NON_EMPTY_STRING","logo","ORIENTATION","Orientation","HORIZONTAL","VERTICAL","PROJECT_OWNER","PROJECT","PROJECT_DATA","owner","createdAt","updatedAt","isShared","THERMAL_ENERGY","ThermalEnergy","HEATING","COOLING","MIXED","UserRole","USER","ADMIN","union","number","ENCODER","XLSX_VALUE","AreaUnit","SQM","sub","sup","AssetImage","alt","apiBaseUrl","imageUrl","src","BlobImage","image","setImageUrl","useLayoutEffect","URL","createObjectURL","revokeObjectURL","routeBackText","routeBackPath","CustomButton","kind","as","Link","to","ArrowLeftIcon","backText","forthText","ArrowRightIcon","CarbonIntensityUnit","source","EnergySourceUnit","CarbonSavingsUnit","Checkbox","checked","partial","onClick","tabIndex","onKeyDown","CurrencySymbol","currency","CustomBreadcrumbItem","BreadcrumbItem","fullWidth","renderIcon","RenderIcon","computedClassName","Button","LoadingIcon","Loading","CustomMenu","flipped","iconDescription","tooltipPosition","menuOptionsClass","hasIconOnly","align","CustomMenuItem","itemText","hasDivider","href","isDelete","wrapperClassName","itemClassName","location","getCurrentLocation","currentRoute","pathname","CustomModal","isFullScreen","open","shouldUnmount","isShaded","isNarrowFooter","isShown","setShown","prevOpen","usePrevious","isMounted","handleKeyDown","timeout","addEventListener","removeEventListener","scrollbarWidth","innerWidth","documentElement","clientWidth","style","setProperty","ComposedModal","CustomTabList","ariaLabel","contained","isFullWidth","theme","TabList","CustomTab","Tab","CustomToggle","Toggle","Divider","orientation","typedMemo","Dropdown","renderLabel","icon","selectedValue","outlined","shaded","listOpened","setListOpened","ref","setRef","useOutsideClick","selected","isOnlyOneOption","chevron","ChevronUpIcon","ChevronDownIcon","prev","CheckIcon","EnergyEfficiencyLabel","sized","EnergyEfficiencyLabelWrapper","maxLabel","getEnergyEfficiencyLabel","toDecimalPlaces","Decimal","ROUND_UP","minLabel","ROUND_DOWN","LABELS","EnergyEfficiencyStack","line","CLASS_LIST","FACTOR_WEIGHTS_LABELS","position","mul","STACK_ITEM_HEIGHT","add","toFixed","getPosition","marginBottom","CaretRight","EnergyEfficiencyTransition","actual","future","EnergyPriceUnit","EnergySavingsUnit","EnergySource","HEATING_OIL","Footer","imprintLink","IMPRINT_LINK_MAP","termsAndPrivacyLink","TERMS_AND_PRIVACY_LINK_MAP","target","rel","FormSection","Stack","gap","FormattedAmount","FormattedNumber","minimumFractionDigits","maximumFractionDigits","FormattedBEP","isPositive","lessThan","roundedToNearestHalfValue","div","roundedValuePrecision","decimalPlaces","FormattedValue","precision","greaterThan","FormattedMathMessage","InlineMath","math","BlockMath","locale","getLocale","toNumber","NumberFormat","replace","Header","isOnboardingModalOpened","setOnboardingModalOpened","handleOnboardingModalClose","handleOnboardingModalOpen","localStorage","getItem","IS_ONBOARDING_MODAL_VIEWED","UserLanguage","QuestionIcon","UserProfile","OnboardingModal","handleClose","HorizontalDivider","Lifecycle","errorInfo","setState","onError","onReady","step","setStep","setItem","ModalHeader","labelClassName","titleClassName","buttonOnClick","current","overall","ModalBody","TitleText","BodyText","ModalFooter","autoFocus","menuRef","setMenuRef","opened","setOpened","handleButtonOpen","handleButtonClose","Tooltip","preventDefault","PreserveContent","nextProps","ProjectTitle","routeState","getCurrentMatch","projectBaseUrl","useHistory","areDetailsShown","setDetailsShown","projectTitleRef","useRef","projectDetailsRef","heightOfOpenedDetails","offsetHeight","heightOfClosedDetails","formatProjectDetailsSubTitle","defaultCheckedTab","findIndex","it","getMatchedRoute","match","parent","Breadcrumb","height","ChevronUp","color","CARBON_THEME","onSurfaceLightPrimary","ChevronDown","Share","belimoOrangeColor","Folder","BodyDesktopLargeRegularText","OverlineDesktopSmallText","Tabs","selectedIndex","Rating","onSelect","rating","setRating","hover","setHover","stars","Array","from","_","star","onMouseEnter","onMouseLeave","StarFilledIcon","StarIcon","SavingTileAmount","amount","SavingTileCard","savingTitle","amountTitle","SavingsAmount","isNegative","SavingsValue","SupScript","async","fetchSvgFile","signal","redirect","parseSvgFile","SvgFile","urls","width","element","setElement","abort","AbortController","fallback","visibility","pointerEvents","LogicError","fetchAnySvgFile","then","catch","cloneElement","x","y","prevProps","index","subtitle","LeadText","DesktopLargeText","UserForm","disableEmail","disableRole","isUserCreation","RenderItem","ROLE_LIST","ROLE_NAMES","languages","getEnvironmentLanguages","switchLanguage","CONFIG_LANGUAGE_SWITCH","LANGUAGE_KEYS","GlobeIcon","loggedInUser","getLoggedInUser","UserIcon","Checkmark","dateFormat","userDateFormat","DECIMAL_ZERO","DECIMAL_ONE","DECIMAL_PLACES","A","B","INTEGER_ZERO","INTEGER_ONE","SUPPORTED_LOCALES","MATRIX_IDENTITY","a","e","f","ENERGY_SOURCE_HEATING_OPTIONS","ELECTRICITY","HEATING_DISTRICT","GAS","HEATING_OTHER","ENERGY_SOURCE_COOLING_OPTIONS","COOLING_DISTRICT","COOLING_OTHER","BuildingType","OFFICE","DATA_CENTER","EDUCATION_ELEMENTARY","EDUCATION_HIGHER","EDUCATION_OTHER","ENTERTAINMENT_LEISURE","GOVERNMENT","HEALTH","HOSPITAL","HOTEL","LIFE_SCIENCE","RESTAURANT","RETAIL","WHOLESALE_RETAIL_TRADE","CURRENCY_CODE_OPTIONS","SQFT","ALL_FILTER_FORM_OPTION","THERMAL_ENERGY_OPTIONS","WATER_TO_AIR_OPTIONS","WaterToAir","WATER","WATER_TO_AIR","CHANGE_OVER_LEVEL_OPTIONS","ChangeOverLevel","DISTRIBUTION","EMITTER","FLOOR","NO_CHANGE_OVER","DIFFERENT_TEMPERATURE_LEVEL_OPTIONS","DifferentTemperatureLevel","YES","NO","additionalSuccess20","additionalSuccess100","additionalSuccess125","additionalDanger20","additionalDanger100","additionalDanger125","surface04","blue04","onSurfaceLightSecondary","onInteractionDark","callback","handleClickOutside","node","Node","contains","prop","propRef","ArrowDownIcon","IconWrapper","xmlns","fill","viewBox","ArrowUpIcon","ChartUpIcon","CircleCheckFilledIcon","rx","cx","cy","stroke","CloudIcon","CommentIcon","CoolingIcon","CopyIcon","CrossIcon","CurrencyExchangeIcon","DateIcon","DeleteIcon","DownloadIcon","strokeLinecap","strokeLinejoin","EditIcon","FanIcon","FileIcon","FilterIcon","GridViewIcon","HeatingIcon","LightningIcon","ListViewIcon","MailIcon","PlusIcon","ResetIcon","SearchIcon","ShareOff","WarningIcon","AdminLayout","actions","extension","breadcrumbs","classNameBody","notifications","getNotification","hideNotification","NOTIFICATION_HIDE","FeedbackButton","Notification","DocumentLayout","LoginLayout","Grid","condensed","Column","sm","md","lg","getProjectLazy","createParameterSelector","BodyDesktopSmallLightText","BodyLargeLightText","BodyLargeRegularText","BodySmallText","Cmp","HeadlineSmallText","propertyKey","configurable","bound","writable","hashFunc","cacheMap","memoized","originalMethod","args","cacheKey","has","getNewFunction","either","fold","buildingType","Boolean","join","INTERPOLATION_MATRIX","len","Math","hypot","k","INTERPOLATION_NUMBER","abs","environmentLanguages","navigatorLanguages","navigator","substring","toLowerCase","supportedLanguages","matchedLanguage","includes","matrixMultiply","matrix","more","reduce","m1","m2","matrixTranslate","point","scale","origin","scaleMatrix","det","O","optional","some","none","ordNullable","ord","equals","ordPrecedence","mass","tension","friction","initialPosition","initialVelocity","interpolation","velocity","currFrameId","prevFrameTs","NaN","loop","currFrameTs","elasped","min","floor","delta","restoringForce","dampingForce","totalForce","acceleration","ONE_MILLISECOND","distance","completed","requestAnimationFrame","animate","performance","now","cancelAnimationFrame","parseNode","Text","textContent","SVGElement","parseElement","validAttributes","ALLOWED","nodeName","createElement","random","svgAttribute","getAttribute","dashed","toUpperCase","childNodes","isNotNull","DOMParser","parseFromString","SVGSVGElement","COMMON_ATTRIBUTES","TEXT_ATTRIBUTES","svg","g","clipPath","rect","circle","ellipse","path","polyline","polygon","tspan","CONFIG_FETCH","CONFIG_CONTAINER","ReadOnlyArray","DEVICE_IDENTIFIER","CONFIG_DEVICE_DECODER","explanation","CONFIG_DEVICE","CONFIG_HVAC_ADDITION","CONFIG_HVAC_OPTION","CONFIG_HVAC_SECTION","additionals","CONFIG_HVAC","heating","cooling","ventilation","CONFIG_SCHEMA_CONTAINER","left","top","flow_direction","termal_energy","CHANGE_OVER_LEVEL","DIFFERENT_TEMPERATURE_LEVEL","CONFIG_SCHEMA","thermal_energy","water_to_air","change_over_level","different_temperature_level","record","ENVIRONMENT","sentryDsn","sentryEnv","ConfigProvider","getConfigState","RouterLoader","IntlProvider","tolgee","getTolgeeInstance","TolgeeProvider","isPending","compose","optionalFuture","modify","configReducer","configFetchReducer","configLanguageSwitchReducer","loadConfig","showLoadingIndicator","getPreferredLocale","translations","loadTranslations","saveLanguage","hideLoadingIndicator","configFetchSaga","configLanguageSwitchSaga","currentDate","Date","environment","loadEnvironment","sentryInit","loadLocale","loadLanguage","hvac","schemas","devices","containers","loadHvacConfig","loadSchemas","loadDevices","loadContainers","i18n","preferred","getPreferredLanguage","stored","storageGet","environmentLanguage","storageSet","getConfigData","assertNever","getConfigSchemas","getCurrentDate","getConfigHvac","Tolgee","use","FormatIcu","staticData","onTranslationMissing","info","onFormatError","details","getTranslator","withScope","scope","setExtra","captureException","dsn","release","transport","makeBrowserOfflineTransport","makeFetchTransport","tracePropagationTargets","RegExp","debug","enabled","normalizeDepth","maxValueLength","defaultIntegrations","integrations","HttpContext","Breadcrumbs","dom","xhr","sentry","GlobalHandlers","onerror","onunhandledrejection","ExtraErrorData","depth","LinkedErrors","limit","BrowserTracing","traceXHR","traceFetch","enableHTTPTimings","tracesSampleRate","ErrorBoundary","ErrorMessage","ErrorPage","RouteNotFoundError","ErrorView","errorCode","ErrorBlock","stack","componentStack","EVALUATION_CHANGE","EvaluationPage","getReportCurrency","results","getEvaluationResults","getEvaluationFormData","SHARE_PROJECT_OPEN","EvaluationScreen","evaluation","evaluationChangeSaga","EvaluationFormView","decimalScale","endAdornment","helperText","EvaluationResultsCharts","hvacAssessmentFormData","getHvacAssesmentFormData","isOnlyOneAreaEnabled","areCostExclSavingsNegative","savings","costExclCO2","isInvestmentEmpty","investmentAmount","isZero","EvaluationResultsChartsGraphBEP","charts","BEP","xAxisLabel","yAxisLabel","areCostSavingsExcludedNegative","years","exclCO2","inclCO2","EvaluationResultsChartsGraphCO2","CO2","shouldDisplayOverallData","enterDelayMs","Information","EvaluationResultsChartsGraphROI","seria","ROI","toString","padStart","NO_AREA_DATA","EvaluationResultsChartsGraphIRR","IRR","EvaluationResultsChartsGraphArea","labels","chartData","isChartReady","setChartReady","yStep","POSITIVE_INFINITY","diff","max","NEGATIVE_INFINITY","pow","ceil","log10","getYStep","yDomain","roundMin","v","ROUND_FLOOR","roundMax","ROUND_CEIL","yTicks","renderTooltip","backgroundColor","COLORS","renderLegend","renderNotification","ResponsiveContainer","AreaChart","margin","right","bottom","CartesianGrid","strokeWidth","strokeDasharray","XAxis","dataKey","domain","ticks","tick","EvaluationResultsChartsXTick","fontSize","YAxis","tickFormatter","formatYTick","isAnimationActive","cursor","Area","onAnimationEnd","fillOpacity","strokeOpacity","baseValue","dot","activeDot","DIVIDER","investment","xDomain","xTicks","domainMax","LineChart","Line","areaNames","HVAC_AREAS","area","perArea","HVAC_NAMES","BarChart","barGap","barSize","vertical","Bar","interval","SERIA_KEYS","HvacArea","VENTILATION","shouldHideData","payload","textAnchor","EvaluationResultsSavings","energy","costInclCO2","carbonEmission","carbon","projectSchemaUrl","projectReportUrl","FEEDBACK_SEND","FEEDBACK_FORM_DEFAULT_DATA","comment","contact","FEEDBACK_FORM_SCHEMA","feedbackSendSaga","formValidate","formSubmitStart","sendFeedback","formSubmitSuccess","formSubmitFailure","setOpen","handleOpen","FeedbackModal","FeedbackForm","submitting","useFormWatch","RatingField","CheckboxField","submitForm","submitSucceeded","submitSucceded","FeedbackSent","useFormField","submitted","invalid","touched","change","handleReset","handleTouch","objectFit","IconButton","Close","itemToString","renderError","renderErrorDefault","rest","selectedItem","handleBlur","itemToElementHandler","found","ComboBox","onBlur","invalidText","items","DateboxField","newValue","DatePicker","startOf","datePickerType","DatePickerInput","restProps","intlConfig","viewValue","setViewValue","parsed","_1","_2","float","MAX_SAFE_INTEGER","nextValue","onValueChange","decimalsLimit","allowDecimals","allowNegativeValue","disableGroupSeparators","disableAbbreviations","formatValueOnBlur","customInput","DecimalInput","forwardRef","TextInput","composedOptions","selectedOption","selectedItemHandler","initialSelectedItem","downshiftProps","FileField","PasswordField","PasswordInput","showPasswordLabel","hidePasswordLabel","newRating","SearchField","Search","hint","renderHintDefault","maxCount","actualLength","ToggleField","readOnly","toggled","onToggle","labelA","labelB","resolver","middleware","nextValues","prevValues","syncValues","rule","validate","submitCount","count","keys","NO_ERRORS","EMAIL_REGEXP","removeNonUniqueStrings","strings","Set","toLocaleLowerCase","test","literalArray","uniqEmails","emailStr","validateEmails","split","str","existingEmailsArray","newEmail","getDate","gte","lt","lte","rules","val","entries","regex","regExp","reference","NON_NULL_LENS","NULL_TO_ALL","ROOT_CONTEXT","fromFoldableMap","first","Foldable","HVAC_CHANGE","ISO_CATEGORIES","1.1","HvacAssessmentCategories","EMISSION","1.2","1.3","1.4","1.5","1.6","GENERATION","1.7","1.8","1.9","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","4.1","4.2","4.3","4.4","4.5","4.6","4.7","4.8","4.9","HvacPage","getHvacResults","counters","getHvacFormCounters","inaccurate","getHvacResultsInaccurate","getHvacFormData","saveFormData","hvacForm","useFormResolver","resolveHvacFormData","HvacResultSummaryView","HvacResultEnergyView","HvacFormAssessmentView","HvacResultSavingsView","updatedReport","getReportHvacEnergy","mapHvacFormToStore","assessment","report","hvacChangeSaga","getHvacData","getHvacConfig","mapHvacStoreToForm","getHvacBuildingFormData","HVAC_CONFIG","mapWithIndex","sections","section","extra","assertDefined","mapOption","addition","mapAddition","mapSection","getHvacCurrencyCode","getCounter","answered","total","isAnswered","answer","copies","sum","getHvacResultsOverallRating","category","curr","getDefaultFormVariant","getDefaultFormAnswer","currHvacAreas","prevHvacAreas","areas","prevReportHvac","prevReportEnergy","isHeatingAreaChanged","isCoolingAreaChanged","isVentilationAreaChanged","showHeating","showCooling","showVentilation","showComments","mapHvacFormChapter","thermal","electrical","mapHvacFormSection","mapHvacFormSectionAnswer","mapHvacFormSectionCopy","mapHvacFormVariant","prices","deactivation","multiplication","getDefaultFormSection","toFixedDecimal","decimalValue","resolveThermalCarbonIntensity","system","prevValue","getCarbonIntensityValue","energySource","prevEditable","getCarbonIntensityEditable","decimalEquals","L","resolveElectricityCarbonIntensity","isHeatingEnabled","isCoolingEnabled","isVentilationEnabled","defaultSelectedTab","activeTab","setActiveTab","handleTabChange","currentTab","HvacFormChapter","emission","filterHvacSectionByCategory","distribution","generation","Accordion","Fragment","HvacFormSection","copyIndex","HvacFormSectionCopy","sectionIndex","HvacFormClearConfirmationModal","onCancel","onSubmit","danger","HvacFormCommentModal","handleSubmit","handleCancel","reset","initialState","titleModalOpen","setTitleModalOpen","isItemOpened","setItemOpened","headerRef","handleClick","isOpen","currentTarget","scrollIntoView","behavior","handleClear","handleToggle","handleClone","handleTitleModalOpen","handleTitleModalCancel","handleTitleModalSubmit","renderToggle","HvacFormSectionHeader","class","wrapperRef","isCopy","onClone","onRename","AccordionItem","onHeadingClick","HvacFormSectionContent","onClear","HvacFormSectionCopyTitleModal","HvacFormSectionAdditionalInput","TO_TEXT_VALUE","lens","HvacFormSectionAdditionals","renderActualSetupOption","HvacFormSetupOption","renderComment","renderEfficiencyLabel","energyEfficiencyClass","renderActualSetupOptionSelected","renderFutureSetupOption","renderFutureSetupOptionSelected","HvacFormSectionFormBlock","level","HvacFormSetupField","renderOption","renderSelectedOption","isDeleteConfirmationModalOpened","setDeleteConfirmationModalOpened","modalOpen","setModalOpen","handleDeleteConfirmationModalOpen","handleDeleteConfirmationModalCancel","handleDeleteConfirmationModalSubmit","copiesPath","copiesValues","handleModalOpen","handleModalCancel","handleModalSubmit","onRemove","HvacFormSectionCopyDeleteConfirmationModal","sectionName","WarningFilled","stopPropagation","isRenameExist","isCloneExist","isRemoveExist","handleRemove","handleRename","opacity","hideLabel","OverflowMenuVertical","getOptionLabel","HvacResultEnergyElectricalView","tooltip","getSystemEnergySources","systemType","systemEnabled","HvacResultEnergyPricesView","heatingEnabled","coolingEnabled","horizontal","visibleSources","getVisibleEnergySources","renderEnergySourceOption","HvacResultEnergyThermalView","energySources","renderCurrencyCodeOption","ventilationEnabled","HvacResultSavingsExplanation","annual","energyCosts","HvacResultSavingsOverall","relative","absolute","HvacResultSavingsSystem","TabPanels","TabPanel","HvacResultSummaryChapter","isCommentModalOpen","setIsCommentModalOpen","handleCommentOpen","handleCommentCancel","handleCommentSubmit","isClearModalOpen","setIsClearModalOpen","handleClearOpen","handleClearCancel","handleClearSubmit","PROJECT_HVAC_DEFAULT_DATA","LOADER_SHOW","LOADER_HIDE","VISIBLE","start","done","LOGIN_PERFORM","REQUEST_ACCESS_SUBMIT","WHOAMI_ACTION","LOGIN_FORM_SCHEMA","username","allOf","nonEmpty","password","REQUEST_ACCESS_FORM_SCHEMA","companyName","countryCode","LoginPage","submitRequestAccess","LoginScreen","loginReducer","user","loginUserReducer","delay","performLogin","loginPerformSaga","requestAccessSubmitSaga","remember","loadUser","getIsAuthenticated","getLoginState","login","requestAccessButtonRef","isRequestAccessModalOpen","setRequestAccessModalOpen","closeRequestForm","formErrors","isSubmitting","isSubmissionFailed","noValidate","spellCheck","autoCorrect","autoCapitalize","link","mailTo","launcherButtonRef","RequestAccessModal","requestAccessForm","CheckmarkFilled","MODAL_PROJECT_ERROR_OPEN","MODAL_PROJECT_ERROR_RETRY","MODAL_PROJECT_ERROR_CLOSE","MODAL_USER_ERROR_OPEN","MODAL_USER_ERROR_RETRY","MODAL_USER_ERROR_CLOSE","ModalStack","modals","getModalStack","TransitionGroup","modal","ModalWrapper","ProjectErrorModal","UserErrorModal","in","modalStackReducer","modalProjectErrorReducer","modalUserErrorReducer","synchronized","syncProjectForeground","modalProjectErrorSaga","modalUserErrorSaga","users","syncUserForeground","closeModal","saveProject","retry","userSnapshot","NOTIFICATION_SHOW","notificationReducer","messageValue","notification","counter","ToastNotification","ORGANIZATION_CHANGE","OrganizationPage","getOrganizationFormData","OrganizationSettings","updateLogoSaga","getOrganization","logoId","decodedOrganization","updateUserSaga","updatedUser","OutputDocumentContext","createContext","registerPage","constVoid","unregisterPage","OutputPageContext","pageNumber","totalPages","getOrphansCount","pageHeight","blockRows","pageItems","requiredHeight","blocks","onBlockBreak","currentPageIndex","currentPageItems","currentPageHeight","maximumPageHeight","currentBlockIndex","currentBlock","currentRows","hasBlockRows","breakBlock","insertWidowsHeader","widowsHeader","block","resultPages","forwardBlock","insertRow","row","elementHeight","orphansCount","widowsCount","forEach","widows","orphans","orphansRows","OutputDocument","pageContents","documentContext","page","collectedPages","setCollectedPages","timerId","visible","order","Provider","OutputDocumentPage","useContext","OutputLogo","OutputPage","showPageNumber","forwardedRef","OutputPagination","OutputTitle","PASSWORD_FORGOT_SUBMIT","PASSWORD_FORGOT_FORM_SCHEMA","PasswordForgotPage","PasswordForgotScreen","passwordForgotSubmitSaga","submitPasswordForgot","PasswordForgotForm","isSubmitted","PASSWORD_RESET_TOKEN","PASSWORD_RESET_SUBMIT","PASSWORD_RESET_FORM_SCHEMA","confirmation","minLength","matchField","PasswordResetPage","tokenValid","getPasswordResetValid","PasswordResetScreen","PasswordResetError","PasswordSetupPage","PasswordSetupScreen","PasswordSetupError","passwordResetReducer","token","passwordResetTokenReducer","passwordResetSubmitSaga","submitPasswordReset","getPasswordResetToken","query","passwordReset","getPasswordResetState","PasswordResetForm","PasswordSetupForm","PROFILE_SAVE","PROFILE_CHANGE_PASSWORD","CHANGE_PASSWORD_SCHEMA","ProfilePage","ProfileContent","changePasswordForm","changePasswordValues","changePassword","profileSaveSaga","profileChangePasswordSaga","profileForm","profileValues","USER_EDIT_FORM_SCHEMA","updateProfile","authUser","passwordData","updateData","PasswordChangeForm","display","isProfileFormSubmitting","saveProfile","ProfileHeader","onSave","PROJECT_LIST_FETCH","PROJECT_LIST_RESET","PROJECT_LIST_ABORT","PROJECT_LIST_FILTER","PROJECT_LIST_SHARE","PROJECT_LIST_EXPORT","PROJECT_LIST_DOWNLOAD","PROJECT_LIST_REMOVE_CONFIRM","PROJECT_LIST_REMOVE_CANCEL","PROJECT_LIST_REMOVE_SUBMIT","PROJECT_LIST_UNFOLLOW_CONFIRM","PROJECT_LIST_UNFOLLOW_CANCEL","PROJECT_LIST_UNFOLLOW_SUBMIT","PROJECT_LIST_IMPORT_OPEN","PROJECT_LIST_IMPORT_CANCEL","PROJECT_LIST_IMPORT_UPLOAD","PROJECT_LIST_IMPORT_SUBMIT","PROJECT_LIST_IMPORT_COMPLETE","PROJECT_LIST_VIEW_MODE","ProjectListViewMode","LIST","GRID","CELL_STRING","CELL_DECIMAL_2","CELL_DECIMAL_4","CELL_ENUM","mapping","CELL_RATING","CELL_PROJECT_DATA","CELL_CARBON_SAVINGS","CELL_ENERGY_SAVINGS","CELL_AMOUNT_SAVINGS","CONTENT_DATA","EXPORT_BUILDING_TYPE_MAP","EXPORT_AREA_UNIT_MAP","EXPORT_COUNTRY_CODE_MAP","EXPORT_CURRENCY_CODE_MAP","EXPORT_ENERGY_SOURCE_HEATING","EXPORT_ENERGY_SOURCE_COOLING","EXPORT_CONTENT_LINE","entry","cells","author","annualEnergyUse","carbonIntensity","EXPORT_HEADER_COLUMNS","column","CELL_BASE","CELL_EMPTY","DECIMAL","J","flatMap","altW","IMPORT_BUILDING_TYPE_MAP","IMPORT_AREA_UNIT_MAP","IMPORT_COUNTRY_CODE_MAP","IMPORT_CURRENCY_CODE_MAP","IMPORT_ENERGY_SOURCE_HEATING","IMPORT_ENERGY_SOURCE_COOLING","COLUMN_ORDER","HEADER_LINE","columns","IMPORT_HEADER_COLUMNS","indexOf","IMPORT_CONTENT","ask","mapper","CONTENT_LINE","rowNumber","importData","mapLeft","formatImportError","fromEntries","PROJECT_LIST_PAGE_SIZE","PROJECT_LIST_DEFAULT_SORT","ProjectListPage","getProjectListProjects","getProjectListSlice","getProjectListQuery","applyFilter","openCreationDialog","setOpenCreationDialog","downloading","getProjectListDownloading","downloadReport","handleDownload","removeProjectState","getProjectListRemoving","removeProjectOpen","removeProjectSubmit","removeProjectCancel","unfollowProjectState","getProjectListUnfollowing","unfollowProjectOpen","unfollowProjectSubmit","unfollowProjectCancel","importState","getProjectListImport","importProjectOpen","importProjectUpload","importProjectCancel","importProjectSubmit","importProjectComplete","exporting","getProjectListExport","exportProjectData","ProjectListToolbar","onExport","onImport","onCreate","onFilter","ProjectListView","projects","unfollowing","onDownload","onUnfollow","ProjectListEmpty","ProjectListRemoveModal","ProjectCreateModal","ProjectListImportModal","onUpload","onComplete","UnfollowProjectModal","onConfirmUnfollow","import","export","removing","modifyUploadStatus","fromNullable","modifySubmitStatus","upload","submit","projectListReducer","projectListDataReducer","projectListImportReducer","projectListExportReducer","projectListRemovingReducer","projectListDownloadReducer","projectListUnfollowingReducer","modifyStatus","getReportGenerated","getReportFormData","fileData","buildReportDocument","getReportDocumentFilename","saveAs","loadProjectListFull","exportData","exportItem","getProjectListExportEntry","exportLine","doOnExportWorker","getExportDocumentFilename","EQ_FILTER","search","buildProjectListQuery","navigate","EQ_SET","term","eqStrict","ratingActual","ratingFuture","ownership","importProjects","lines","doOnImportWorker","mapImportProjectData","removeProject","loadProjectList","applyProjectListQuery","projectName","projectListRemoveSaga","cancelSagaOn","projectListFilterSaga","ROUTE_CHANGE","projectListExportSaga","projectListImportCompleteSaga","projectListImportUploadSaga","projectListImportSubmitSaga","projectListDownloadSaga","projectListUnfollowSaga","projectListShareSaga","SHARE_PROJECT_REMOVE_SUBMIT","SHARE_PROJECT_CLOSE","unfollowProject","merged","mergeImportData","resolved","resolveInitialProjectData","updated","updateProject","created","createProject","listItems","listItem","getProjectListItem","skip","RESPONSE_DATA","chunk","loadProjectListChunk","raw","decodeOrGet","viewMode","getProjectListData","getProjectListState","getProjectListFilterValues","uniq","BUILDING_TYPE_ORD","COUNTRY_CODE_ORD","S","Eq","Ord","EFFICIENCY_LABEL_ORD","N","contramap","reverse","getProjectListItemTextBlocks","textBlocks","translator","SCHEMA_AREAS","schema","proposalDescription","SchemaArea","projectList","getPredicateTerm","predicate","norm","constTrue","getPredicateStringMatch","getPredicateBuildingType","getPredicateAnyOf","getPredicateCountry","getPredicateCity","getPredicateRatingActual","buildOrCondition","getPredicateEfficiencyClass","getPredicateRatingFuture","getPredicateOwnership","minValue","ENERGY_EFFICIENCY_RANGE","predicates","initial","constFalse","or","and","buildAndCondition","decodeError","getColumnErrors","_tag","DE","Index","Key","Lazy","Leaf","Member","Wrap","getActualValue","reason","getFullYear","getMonth","getHours","getMinutes","version","PROJECT_VERSION","defaultViewMode","view","PAGE_NUMBER","SORT_ORDER","getAll","BUILDING_TYPE","COUNTRY_CODE","parseProjectListFilter","buildProjectListFilter","SORT_MAP","filtered","getProjectFilter","pageSize","getProjectOrd","concatAll","getMonoid","SORT_BY_ID","getTime","Add","renderCountryCodeOption","ProjectListFilterDropdown","onApply","formValues","hasEfficiencyFilter","ProjectListFilterGroup","isGroupOpened","setGroupOpened","groupListRef","someSelected","formGroupMinRows","formGroupLength","formGroupHeight","resetAll","toggleOption","toggleSetValue","FormGroup","legendText","FormLabel","ProjectListHeader","ProjectListSortLink","ProjectListImportDataTable","errorCount","isRight","composedContent","isLeft","DataTable","radio","getRowProps","getSelectionProps","getTableProps","getTableContainerProps","TableContainer","Table","TableBody","TableRow","importErrors","TableCell","importError","errorIndex","importEntry","TableSelectRow","Tag","fontFamily","ProjectListImportSelector","ProjectListImportUpload","setSelected","toNullable","formatLink","textDecoration","File","Upload","InlineNotification","hideCloseButton","ProjectListItemGridView","shared","handleUnfollow","handleOwnershipClick","ownershipContent","ProjectListRating","DocumentPdf","TrashCan","ProjectListItemListView","ProjectListPager","PaginationNav","totalItems","itemsShown","pageIndex","getQueryString","getSortSearch","CaretUp","CaretDown","getAppliedFilterCount","isFiltersDropdownOpened","setFiltersDropdownOpened","flow","handleFilterDebounced","useDebouncedCallback","handleDropdownOpen","handleDropdownClose","handleDropdownApply","Popover","onRequestClose","PopoverContent","PROJECT_NEW_CREATE","DEFAULT_BASIC_FORM_DATA","DEFAULT_BUILDING_FORM_DATA","PROJECT_CURRENCY_DEFAULT_DATA","PROJECT_SCHEMA_DEFAULT_DATA","PROJECT_REPORT_DEFAULT_DATA","creationDate","showBuildingInfo","showOrganizationLogo","showOverallEfficiency","showPerAreaEfficiency","showPotentialSavings","showZoomedIn","futureVersion","showInitialInvestment","showAnnualSavings","showInvestmentPerCarbonSavings","evaluationCharts","showReturnOnInvestment","showInternalRateOfReturn","showAnnualCarbonEmmission","showBreakEvenPoint","PROJECT_PARTICIPANTS_DEFAULT_DATA","PROJECT_EVALUATION_DEFAULT_DATA","carbonEmissionPrice","BASIC_SCHEMA","BUILDING_SCHEMA","basicValues","stepOne","buildingForm","stepTwo","buildingValues","getRandomDefaultCover","projectData","projectNewCreateSaga","randomIndex","BasicInfoFormModal","onNext","enableCounter","htmlFor","BuildingInfoFormModal","onBack","handleBack","basicInfoValues","setBasicInfoValues","buildingInfoValues","setBuildingInfoValues","handleNext","preventCloseOnClickOutside","PROJECT_SYNC_RESET","PROJECT_SYNC_PERFORM","projectSyncReducer","projectSyncResetReducer","projectSyncPerformReducer","PROJECT_VIEW_REPLACE","task","projectSyncPerformSaga","syncData","getProjectSyncData","waitProjectSynchronization","race","cancelled","saving","getProjectSyncState","projectSync","PROJECT_VIEW_FETCH","PROJECT_VIEW_RESET","projectViewReducer","projectViewDataReducer","projectViewShareSaga","getProjectViewData","getProjectViewState","projectView","REPORT_RESET","REPORT_CHANGE","REPORT_GENERATE","REPORT_FORM_SCHEMA_COVER","REPORT_FORM_SCHEMA","ReportDocumentPage","ReportDocumentContent","ReportPage","getReportLoading","resetState","ReportFormView","reportReducer","reportResetReducer","reportGenerateReducer","reportChangeSaga","reportGenerateSaga","host","createShadowHost","getReportFakeStore","renderComponent","complete","waitReportDocument","pages","querySelectorAll","htmlToPdf","destroy","checkImageState","checkReadyState","toDate","getReportGeneratedCover","getReportGeneratedEnergy","getReportGeneratedHvac","getReportGeneratedSavings","getReportGeneratedEvaluation","getReportGeneratedSchema","reportDate","mapThermalArea","mapElectricalArea","annualConsumption","totalCosts","inputs","getComment","hvacFormData","getReportGeneratedSavingsRatingPerArea","getReportGeneratedSavingsAnnualSavings","ratingOverall","ratingPerArea","annualSavings","getReportGeneratedSavingsTotalCost","getReportGeneratedSavingsEnergyRelative","getReportGeneratedSavingsEnergyAbsolute","getReportGeneratedSavingsCarbonEmission","totalCost","energyRelative","energyAbsolute","hvacResults","electricity","getEnergySavingsInKWh","mulDecimals","ENERGY_OUTPUT_BY_SOURCE_UNIT","getSchemaFormData","getSchemaMatrix","selection","zIndex","overflow","appendChild","root","unmount","removeChild","formatDate","Promise","resolve","reject","ReportDocumentPageCover","ReportDocumentPageSavings","ReportDocumentPageEvaluation","ReportDocumentPageEnergy","ReportDocumentPageHvac","ReportDocumentPageSchema","getReportPages","contents","sortedPages","shownPages","ReportFormDocument","ReportFormFieldToggle","ReportFormSectionConfigCover","ReportFormSectionConfigEnergy","ReportFormSectionConfigEvaluation","ReportFormSectionConfigEvaluationCharts","ReportFormSectionConfigHvac","ReportFormSectionConfigSavings","renderFutureVariantOption","ReportFormSectionConfigSchema","schemaData","futureOptions","isSchemaMissing","isCommentMissing","AREA_NAMES","ReportFormSectionNoSchema","ReportFormSectionPreview","ReportFormSectionPreviewPage","ratio","wrapper","createRef","updateContent","passive","getWrapperStyle","getContentStyle","paddingBottom","wrapperW","contentW","clientHeight","projectEvaluationUrl","generateReport","handleReportClick","reportPages","setReportPages","ReportDocumentPageAmount","ReportDocumentPageCO2Value","ReportDocumentPageEnergyThermal","ReportDocumentPageEnergyVentilation","ReportDocumentPageEnergyValue","ReportDocumentPageEvaluationOverview","ReportDocumentPageEvaluationCharts","NO_CHART_DATA","AreaPage","contentElement","outputPages","setOutputPages","pageElement","sectionMargin","pt2px","PAGE_HEADER_HEIGHT","AREA_NAME_HEIGHT","linearizeHvacSection","flat","sectionHeight","sectionId","assertNotEmpty","querySelector","splitBlocksIntoPages","collectHvacPages","pageData","AREA_TITLES","isCommentShown","Cloud","Lightning","paddingLeft","currentSchema","SECTION_ORDER","AREA_ICONS","ReportDocumentPageSchemaCanvas","transformLine","assignments","assignment","DeviceShape","container","SCHEMA_CONTAINER_SIZE","ry","SchemaDeviceView","device","ROUTING_PRE_HOOKS","createGlobalTransitionLoggingSaga","ROUTING_POST_HOOKS","scrollRestore","ROUTING_ERROR_HOOKS","errorTransitionLogging","errorTransitionHandling","ROUTING_STATES","ROUTING_LAYOUT_STATES","ROUTING_LOGIN_STATES","ROUTING_HOME_STATES","ROUTING_PROJECT_STATES","ROUTING_ADMIN_STATES","ROUTING_PROFILE_STATE","ROUTING_ORGANIZATION_STATES","Initialization","routing","getRoutingState","transitionError","RouteSwitch","Switch","firstDuration","enterDuration","transition","duration","restoreCurrentUrl","unauthorizedErrorHandler","cancelledErrorHandler","unknownErrorHandler","stage","performLogout","validateRecoveryToken","assertDecode","loadProject","loadProjectListViewMode","parseProjectListQuery","saveProjectListViewMode","loadUsersList","USERS_LIST_FETCH","storedSchemaFilter","FILTER_FORM_SELECTED","schemaSelection","MULTIPLE_SCHEMA_FILTER_FORM","DEFAULT_MULTIPLE_FILTER_FORM_DATA","storedSchemaSelected","SCHEMA_PRESELECTED","schemaSelected","MULTIPLE_SCHEMA_PRESELECTED_CODEC","PRESELECTED_SCHEMA_DATA","allCurrentSchemas","checkedPreselectedSchema","acc","schemaSelectedArea","schemaSelectionArea","filterSchemas","SCHEMA_SELECTIONSTATE_FETCH","USERS_LIST_RESET","forceProjectSynchronization","userSnapshotsToSync","getUsersListData","forceUserSynchronization","USER_SYNC_RESET","isTransitioning","routingReducer","routeChangeReducer","errorHook","getIsRoutingBlocked","preHook","statesToLeave","getStatesToLeave","onLeaving","statesToRetain","getStatesToRetain","onRetaining","statesToEnter","getStatesToEnter","onEntering","onLeft","onRetained","onEntered","postHook","matchState","getCurrentState","uid","createTransitionUid","performPreTransition","performPostTransition","handleTransitionError","LOCATION_CHANGE","locationChangeSaga","routeChangeSaga","composeSagas","createStateTransitionLoggingSaga","emulateTransitionDelay","fetchUsersList","syncUser","resetUsersList","redirectTo","destroySession","authenticate","fetchAnnouncements","checkIsAuthenticated","fetchPasswordResetToken","resetPasswordResetToken","fetchProjectList","abortProjectList","resetProjectList","fetchProjectDetails","resetProjectDetails","syncProjectDetails","loadSchemaSelectionState","sagas","saga","statePathToMatch","statePath","stateMatch","matchPath","strict","sensitive","exact","states","stateTree","createStateTree","parentName","treeItem","isMatchEqual","match1","match2","params1","params2","aKeys","bKeys","isParamsEqual","isMatchContain","possibleAncestor","getEnterPath","SCHEMA_TEMPLATE_SELECT","SCHEMA_VERSION_CREATE","SCHEMA_VERSION_CHANGE","SCHEMA_VERSION_REMOVE","SCHEMA_COMMENT_CHANGE","SCHEMA_SELECTION_FILTER_CHANGE","PRESELECTED_SCHEMA_CHANGE","SCHEMA_MATRIX_CHANGE","SCHEMA_FILTER_FORM","waterToAir","changeOverLevel","differentTemperatureLevel","SCHEMA_PRESELECTED_CODEC","DEFAULT_FILTER_FORM_DATA","DEFAULT_MULTIPLE_SCHEMA_MATRIX","DEVICE_OPTIONS","DEFAULT_PROJECT_SCHEMA_DATA","SCHEMA_AREA_MAP","DEFAULT_MULTIPLE_PRESELECTED_DATA","SchemaPage","multipleSchemasMatrix","allConfigschemas","storedFilterFormValue","getSchemaSelectionFilter","storedPreselectedSchema","getSchemaPreselected","selectTemplate","createVersion","changeVersion","removeVersion","syncSchemaMatrix","savePreselectedSchema","saveSchemaFilter","changeSchemaAreaComment","MultipleSchemasScreen","changeComment","schemaReducer","schemaSelectionReducer","saved","previousProjectSchemaArea","previousSchema","previousSchemaArea","modifiedSchema","schemaSelectionResult","mapSchemaFormDataToProject","modifiedReportProjectData","resolveReportSchemaSelection","modifiedReportProject","schemaTemplateSelectSaga","schemaVersionCreateSaga","schemaVersionChangeSaga","schemaVersionRemoveSaga","schemaAreaCommentChangeSaga","schemaSelectionChangeSaga","preselectedSchemaChangeSaga","schemaMatrixChangeSaga","saveSchemaSelection","thermalEnergy","modifiedSchemaNumber","maxId","getReportPreselectedFutureVersion","modifiedWithReport","schemaNumber","getProjectSchema","mapSchemaProjectToFormData","getSchemaSelectionState","GestureEvent","TouchEvent","NEVER","start$","fromEvent","once","capture","change$","stop$","cancelable","tap","switchMap","takeUntil","takeWhile","pairwise","pageX","pageY","menu$","down$","move$","merge","eventName","isPrimary","pointerId","scan","next","skipWhile","currStore","initPoint","currPoint","UNCERTAINTY_THRESHOLD","ignoreMove","prevStore","nextStore","nextA","nextB","prevA","prevB","prevCenter","nextCenter","prevDistance","nextDistance","handleMove","mergeAll","ctrlKey","deltaX","deltaY","wheelDelta","deltaMode","WheelEvent","DOM_DELTA_PAGE","DOM_DELTA_LINE","getWheelDelta","MOUSE_WHEEL_STEPS","sign","filterFormValues","filterByWaterToAir","filterByChangeOverLevel","filterByDifferentTemperatureLevel","prevProjectData","nextProjectData","futureSchemaFirstId","previousReport","previousFutureVersionSelected","previousFutureVersionFound","mapAssignments","deviceId","valvePosition","mapSchemaByArea","currentSchemaArea","configSchema","child","configContainer","flowDirection","mapDevice","mapContainer","mapAssignment","isSchemaCommentArea","CommentVersionModal","DeleteVersionDialog","onConfirm","selectedVersionIndex","setSelectedVersionIndex","setCommentModalOpen","currentMatrix","activeSchemas","filteredSchemas","currentSelectedSchema","handleSavePreselectedSchema","handleSaveSchemaFilter","handleSchemaCreate","RadioButtonGroup","valueSelected","RadioButton","SchemaEditScreen","handleCommentModalClose","schemaMatrix","onSelectVersionIndex","onChangeSchemaMatrix","onCreateVersion","onRemoveVersion","onChangeVersion","SchemaSelectScreen","onSavePreselectedSchema","onSaveSchemaFilter","SchemaCanvasWithContext","animation","spring","preview","renderContent","renderModals","zoom","SchemaGesture","onEvent","handleCanvasEvent","renderCanvas","renderControls","SchemaBackground","SchemaAssignments","SchemaInputLayer","handleContainerSelect","zoomFactor","round","ZOOM_MIN","handleZoomOut","ZoomOut","leaveDelayMs","ZOOM_MAX","handleZoomIn","ZoomIn","handleZoomReset","ZoomReset","handleFullScreenClose","handleFullScreenOpen","Minimize","Maximize","handleContainerCancel","SchemaContainerSelect","onSelectDevice","handleDeviceSelect","SchemaContainerPreview","handleContainerChange","handleZoomEvent","handleMoveEvent","getViewboxPoint","ZOOM_STEP","zoomWithOrigin","applyMatrixConstraint","schemaPoint","pointTransform","matrixInverse","matrixScale","rb","realLT","realRB","SchemaEventCanvas","SchemaAssignment","SchemaCanvas","injectIntl","SchemaCard","handleSelect","SchemaClearContainersConfirmation","PREVIEW_SIZE","group","handleGroupChange","filteredDeviceOptions","renderItem","getDeviceSelectHandler","deviceType","filteredOptions","OnChangeData","memoize","SchemaDevice","SchemaEditScreenWithoutContext","isClearConfirmationOpen","isDeleteConfirmationOpen","isMaximumVersionAmountExceeded","handleDeleleOpen","handleVersionCreate","currentVersion","handleAssignmentsChange","handleDeleleCancel","handleDeleleSubmit","versions","ReadonlyArray","PureComponent","events","Subscription","bbox","w","h","handleResize","unsubscribe","canvasGesture","canvasPointer","canvasWheel","getBoundingClientRect","getScaleMatrix","bboxPoint","center","SchemaEventCanvasZoom","SchemaEventCanvasMove","getSelectHandler","getButtonStyles","AddAlt","cardRefs","handleSelectSchema","el","objectPosition","SchemaDeviceShape","SchemaContainerShape","ScreenSizeGuard","screenWidth","setScreenWidth","screenWidthChangeListener","screen","supportedScreenWidth","constUndefined","SCROLL_RESTORE","ScrollRestoration","scrollPosition","getScrollRestoration","scrollRestoration","unlisten","listen","isRestoring","lastScrollPosition","scrollY","scrollReducer","scrollRestorationReducer","getScrollState","scroll","scrollTo","SHARE_PROJECT_FETCH","SHARE_PROJECT_SUBMIT","SHARE_PROJECT_REMOVE_OPEN","SHARE_PROJECT_REMOVE_CLOSE","SHARED_USER","SHARE_PROJECT_FORM_SCHEMA","emailsArray","emailAlreadyExist","emailList","modalData","getShareProjectData","shareProjectClose","shareProjectSubmit","removeUserClose","removeUserRequest","removeUserConfirm","ShareProjectModal","ShareProjectRemoveModal","shareProjectReducer","shareProjectDataReducer","shareProjectUsersReducer","shareProjectRemoveReducer","modifyRemoving","dataLens","modifyUsers","loadSharedProjectUsers","getShareProjectProject","getShareProjectUsers","getShareProjectRemovingUser","removeUserFromSharedProject","shareProjectModalSaga","shareProjectFetchSaga","shareProjectSubmitSaga","shareProjectRemoveSaga","currentUsers","emails","not","isEmpty","shareProjectWith","updatedUsers","userList","sharedUser","ShareProjectShareForm","ShareProjectUserList","validationSchema","StructuredListWrapper","StructuredListHead","StructuredListRow","head","StructuredListCell","StructuredListBody","USER_SAVE","USER_ADD","USER_DELETE","USER_SYNC_PERFORM","USERS_LIST_QUERY","USERS_LIST_TARGET","USERS_LIST_ORDER","ORGANIZATION_USER","latestActivity","UserListActions","searchQuery","setSearchQuery","handleAddUserOpen","UserListHeader","areAllSelected","areSomeSelected","sortingTarget","sortingOrder","setSortingTarget","setSortingOrder","handleHeaderCheckboxChange","onSortingChange","UserRow","isSelf","currentUser","isSelected","onSelectHandler","isRowOpened","setRowOpened","contentHeight","setContentHeight","saveUser","handleSaveUser","USER_ADD_FORM_SCHEMA","UsersPage","isAddUserModalOpen","setAddUserModalOpen","userDeleting","getUserDeleting","getUserEditing","getUsersQuery","getUsersSortingTarget","getUsersSortingOrder","allUserSnapshots","sortedFoundUsers","getSortedFoundUsers","sortedFoundSelectableUsers","getSortedFoundSelectableUsers","deleteUser","handleAddUserCancel","UsersListBody","handleDelete","usersToDelete","AddUserModal","userSnapshots","deletingUserIds","deletingUser","deleting","deletedUserIds","editing","isDeletingUsers","usersReducer","userAddingReducer","userDeletingReducer","userEditingReducer","userSyncReducer","userForm","userValues","savedUserData","savedUser","createUser","Error","synchronizedUsers","syncUserBackground","usersToUpdate","updateUser","userCreateSaga","userSaveSaga","userRemoveSaga","userSyncPerformSaga","userData","userId","userEditing","waitUserSynchronization","USERS","getFoundUsers","lowerCasedQuery","foundUsers","targetA","targetB","getUsersState","addUser","isLoading","addUserSubmitted","addUserErrors","DeleteUserModal","onDelete","selectedUsers","isDeleteUserModalOpen","setDeleteUserModalOpen","setSelectedUsers","handleDeleteUserCancel","selectedUser","filteredUsers","allSelectableUserIds","combineReducers","router","connectRouter","React","StrictMode","HelmetProvider","ConnectedRouter","Route","component","NotFound","loaderSaga","configSaga","routingSaga","loginSaga","passwordForgotSaga","passwordResetSaga","schemaSaga","hvacSaga","basedataSaga","projectNewSaga","projectSyncSaga","projectListSaga","projectViewSaga","evaluationSaga","reportSaga","assetSaga","modalStackSaga","feedbackSaga","profileSaga","usersSaga","organizationSaga","shareProjectSaga","announcementsSaga","doOnWorker","WORKER_RESULT","WORKER_ERROR","WORKER_RESULT_SUCCESS","WORKER_RESULT_FAILURE","doWorkerRequestUsingMessagePort","worker","channel","postMessage","port1","port2","onmessage","onmessageerror","workerUrl","Worker","MessageChannel","cps","close","doRequest","terminate","nodes","pageNode","imageUrls","getImageUrls","imageSource","resources","imageData","arrayBuffer","workerRequest","doOnPdfWorker","AssertionError","isNotEmpty","cancelOn","reducers","reducer","REQUEST","PENDING","SUCCESS","FAILURE","TRIGGER","condition","thenSelector","elseSelector","selector1","selector2"],"mappings":"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","file":"portal.ccdf8513.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { BaseError } from '@belimo-retrofit-portal/logic';\n\nexport class CancelledError extends BaseError {\n public constructor(\n message: string,\n context?: unknown,\n previous?: BaseError,\n ) {\n super(message, previous);\n }\n\n public get name(): string {\n return 'CancelledError';\n }\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\n\nexport class HttpError extends BaseError {\n public constructor(\n public readonly response: Response,\n previous?: BaseError,\n ) {\n super(`HTTP error ${response.status} (\"${response.statusText}\")`, previous);\n }\n\n public get name(): string {\n return 'HttpError';\n }\n\n public get status(): number {\n return this.response.status;\n }\n\n public toJSON(): Record {\n return {\n ...super.toJSON(),\n response: this.response,\n };\n }\n}\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Action } from 'redux';\n\nexport function useAction>(\n creator: (...value: TArgs) => Action,\n): (...value: TArgs) => void;\n\nexport function useAction(\n creator: () => Action,\n): () => void;\n\nexport function useAction>(\n creator: (...value: TArgs) => Action,\n): (...value: TArgs) => void {\n const dispatch = useDispatch();\n return useCallback((...value) => dispatch(creator(...value)), [dispatch, creator]);\n}\n","import { useCallback } from 'react';\nimport { Action } from 'redux';\nimport { useAction } from 'src/hooks/useAction';\n\nexport function useBoundAction>(\n creator: (...values: TData) => Action,\n ...values: TData\n): () => void {\n const action = useAction(creator);\n return useCallback(() => action(...values), [action, values]);\n}\n","import { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { RootState } from 'src/types/RootState';\n\nexport function useParametricSelector(\n selector: (state: RootState, param: TParameter) => TResult,\n param: TParameter,\n): TResult {\n const plainSelector = useCallback((state: RootState) => selector(state, param), [selector, param]);\n return useSelector(plainSelector);\n}\n","import './index.scss';\nimport 'dayjs/locale/de-ch';\nimport 'dayjs/locale/fr-ch';\nimport { init } from 'src/init';\nimport { assertNotNull } from 'src/utils/assert';\n\nconst ROOT_ELEMENT = assertNotNull(\n document.getElementById('root'),\n 'Could not find DOM root',\n);\ninit(ROOT_ELEMENT);\n","/* eslint-disable import/no-import-module-exports */\nimport { routerMiddleware } from 'connected-react-router';\nimport { constVoid } from 'fp-ts/function';\nimport { History, createBrowserHistory } from 'history';\nimport nProgress from 'nprogress';\nimport 'nprogress/nprogress.css';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { AppContainer } from 'react-hot-loader';\nimport { applyMiddleware, createStore, Middleware, Store } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport createSagaMiddleware from 'redux-saga';\nimport { rootReducer } from 'src/reducers/rootReducer';\nimport { Root } from 'src/root';\nimport { rootSaga } from 'src/sagas/rootSaga';\nimport { RootState } from 'src/types/RootState';\n\nexport function init(\n rootElement: HTMLElement,\n): void {\n nProgress.configure({ showSpinner: false });\n\n const history = createBrowserHistory();\n const sagaMiddleware = createSagaMiddleware({\n onError(error: Error, { sagaStack }) {\n /* eslint-disable no-console */\n console.error(error);\n console.error(sagaStack);\n\n // TODO: sentry logging\n },\n });\n\n const store = rootStore(history, [\n sagaMiddleware,\n routerMiddleware(history),\n ]);\n\n const reactRoot = createRoot(rootElement);\n\n let sagaTask = sagaMiddleware.run(rootSaga);\n const renderApp = (RootElement: typeof Root): void => reactRoot.render((\n \n \n \n ));\n\n renderApp(Root);\n\n // Hot Module Replacement API\n if (module.hot) {\n module.hot.accept('./root', () => {\n // eslint-disable-next-line\n const nextRoot: typeof Root = require('./root').Root;\n renderApp(nextRoot);\n });\n module.hot.accept('./sagas/rootSaga', () => {\n sagaTask.cancel();\n sagaTask.toPromise().then(() => {\n // eslint-disable-next-line\n const nextSaga: typeof rootSaga = require('./sagas/rootSaga').rootSaga;\n sagaTask = sagaMiddleware.run(nextSaga);\n }, constVoid);\n });\n module.hot.accept('./reducers/rootReducer', () => {\n // eslint-disable-next-line\n const nextReducer: typeof rootReducer = require('./reducers/rootReducer').rootReducer;\n store.replaceReducer(nextReducer(history));\n });\n }\n}\n\nfunction rootStore(\n history: History,\n middlewares: ReadonlyArray,\n): Store {\n return createStore(\n rootReducer(history),\n composeWithDevTools({ name: 'Belimo Portal', trace: true })(applyMiddleware(...middlewares)),\n );\n}\n","import { INTEGER, Integer } from '@belimo-retrofit-portal/logic';\nimport { pipe } from 'fp-ts/function';\nimport * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\nimport { NUMBER_FROM_STRING } from 'src/io/codecs/NumberFromString';\n\nconst decoder: D.Decoder = pipe(\n NUMBER_FROM_STRING,\n D.parse(INTEGER.decode),\n);\n\nconst encoder: E.Encoder = {\n encode: String,\n};\n\nexport const INTEGER_FROM_STRING = C.make(decoder, encoder);\n","import * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\n\nconst decoder: D.Decoder = {\n decode: (input) => (input instanceof Blob\n ? D.success(input)\n : D.failure(input, 'NativeBlob')),\n};\n\nexport const NATIVE_BLOB: C.Codec = C.make(decoder, E.id());\n","import { pipe } from 'fp-ts/function';\nimport * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\n\nconst decoder: D.Decoder = pipe(\n D.string,\n D.parse((input) => {\n const value = +input;\n return Number.isNaN(value) || input.trim() === ''\n ? D.failure(input, 'NumberFromString')\n : D.success(value);\n }),\n);\n\nconst encoder: E.Encoder = {\n encode: String,\n};\n\nexport const NUMBER_FROM_STRING = C.make(decoder, encoder);\n","import * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\n\nexport function ReadOnlyArray(item: C.Codec): C.Codec, ReadonlyArray> {\n return C.make, ReadonlyArray>(\n D.array(item),\n { encode: (value) => E.array(item).encode(value.slice()) },\n );\n}\n","import { getOrElse } from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport { Decoder } from 'io-ts/Decoder';\n\nexport function decodeOrGet(decoder: Decoder, input: I, value: A): A {\n return pipe(\n decoder.decode(input),\n getOrElse(() => value),\n );\n}\n","import { DecodingError } from '@belimo-retrofit-portal/logic';\nimport { getOrElseW } from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport { Decoder } from 'io-ts/Decoder';\n\nexport function decodeOrThrow(decoder: Decoder, input: I): A {\n return pipe(\n decoder.decode(input),\n getOrElseW((error) => new DecodingError(input, error).throw()),\n );\n}\n","import { T, useTranslate } from '@tolgee/react';\nimport { useMemo } from 'react';\nimport * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\n\nexport type PrimitiveType =\n | string\n | number\n | boolean\n | null\n | undefined\n | Date;\n\nexport type MessageDescriptor = {\n readonly id: string;\n};\n\nexport type FormatIcuElement = {\n (node: React.ReactNode): React.ReactNode;\n};\n\nexport type StringMessageValues = Readonly>;\n\nexport type ElementMessageValues = Readonly>;\n\nexport type FormattedMessageProps = MessageDescriptor & {\n readonly values?: ElementMessageValues;\n};\n\nexport type FormattedDateProps = {\n readonly value: Date;\n};\n\nexport type IntlInstance = {\n readonly formatMessage: (descriptor: MessageDescriptor, values?: StringMessageValues) => string;\n};\n\nexport type WrappedComponentProps = TProps & {\n readonly intl: IntlInstance;\n};\n\nexport const FormattedMessage = ({ id, values }: FormattedMessageProps): React.ReactElement => (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \n);\n\nexport const FormattedDate = ({ value }: FormattedDateProps): React.ReactElement => {\n const language = useSelector(getLanguage);\n\n const formatted = new Intl.DateTimeFormat(language, {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n }).format(value);\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{formatted};\n};\n\nexport function useIntl(): IntlInstance {\n const { t } = useTranslate();\n return useMemo((): IntlInstance => ({\n formatMessage: (descriptor, values) => t(descriptor.id, values),\n }), [t]);\n}\n\nexport function injectIntl(\n Component: React.ComponentType>,\n): React.FunctionComponent {\n return (props: TProps): React.ReactElement => {\n const intl = useIntl();\n return ;\n };\n}\n","import { Announcement } from 'src/modules/common/types/Announcement';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const ANNOUNCEMENTS_READ = createTrigger('ANNOUNCEMENTS_READ');\nexport const ANNOUNCEMENTS_FETCH = createTrigger>('ANNOUNCEMENTS_FETCH');\n","import './AnnouncementsEmpty.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { BellIcon } from 'src/modules/common/icons/BellIcon';\n\nexport const AnnouncementsEmpty = (): React.ReactNode => (\n
\n
\n \n
\n\n

\n \n

\n\n

\n \n

\n
\n);\n","import { Action } from 'redux';\nimport {\n ANNOUNCEMENTS_FETCH,\n} from 'src/modules/announcements/actions/AnnouncementsActions';\nimport { AnnouncementsState } from 'src/modules/announcements/types/announcementsState';\n\nconst defaultState: AnnouncementsState = {\n announcements: [],\n};\n\nexport const announcementsReducer = (\n // eslint-disable-next-line @typescript-eslint/default-param-last\n state: AnnouncementsState = defaultState,\n action: Action,\n): AnnouncementsState => {\n if (ANNOUNCEMENTS_FETCH.is(action)) {\n return {\n announcements: action.data,\n };\n }\n\n return state;\n};\n","import { SagaIterator } from 'redux-saga';\nimport {\n ANNOUNCEMENTS_READ,\n} from 'src/modules/announcements/actions/AnnouncementsActions';\nimport { readAnnouncements } from 'src/modules/announcements/sagas/readAnnouncements';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* announcementsSaga(): SagaIterator {\n yield* takeLatest(ANNOUNCEMENTS_READ.is, readAnnouncements);\n}\n","import { SagaIterator } from 'redux-saga';\nimport {\n ANNOUNCEMENTS_FETCH,\n} from 'src/modules/announcements/actions/AnnouncementsActions';\nimport { loadAnnouncements } from 'src/modules/announcements/sagas/utils/loadAnnouncements';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* fetchAnnouncements(): SagaIterator {\n try {\n yield* call(logDebug, 'Fetching announcements...');\n\n const data = yield* call(loadAnnouncements);\n\n yield* put(ANNOUNCEMENTS_FETCH.trigger(data));\n yield* call(logDebug, 'Fetching announcements... done', data);\n } catch (error) {\n yield* call(logError, 'Fetching announcements... error', error);\n throw error;\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { call as callEffect } from 'redux-saga/effects';\nimport { ANNOUNCEMENTS_FETCH } from 'src/modules/announcements/actions/AnnouncementsActions';\nimport { readAnnouncement } from 'src/modules/announcements/sagas/utils/readAnnouncement';\nimport {\n getAnnouncementState,\n} from 'src/modules/announcements/selectors/getAnnouncementState';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { all, call, put, select } from 'typed-redux-saga';\n\nexport function* readAnnouncements(): SagaIterator {\n try {\n yield* call(logDebug, 'Reading announcements...');\n\n const announcementState = yield* select(getAnnouncementState);\n\n const unreadAnnouncements = announcementState.announcements.filter((announcement) => !announcement.read);\n\n yield* all(unreadAnnouncements.map(\n (unreadAnnouncement) => callEffect(readAnnouncement, unreadAnnouncement.id),\n ));\n\n yield* put(ANNOUNCEMENTS_FETCH.trigger(announcementState.announcements.map(\n (announcement) => ({\n ...announcement,\n read: true,\n }),\n )));\n yield* call(logDebug, 'Reading announcements... done');\n } catch (error) {\n yield* call(logError, 'Fetching announcements... error', error);\n yield* call(sentryCatch, error);\n yield* call(showNotification, { variant: 'error', type: 'error', messageId: 'announcements/readError' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { ANNOUNCEMENTS } from 'src/modules/common/codecs/Announcement';\nimport { Announcement } from 'src/modules/common/types/Announcement';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadAnnouncements(): SagaIterator> {\n try {\n const { content } = yield* call(makeRestRequest, 'GET', '/notifications/announcements');\n return yield* call(decodeOrThrow, ANNOUNCEMENTS, content);\n } catch (error) {\n throw new RuntimeError('Could not load announcements', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { ANNOUNCEMENT } from 'src/modules/common/codecs/Announcement';\nimport { Announcement } from 'src/modules/common/types/Announcement';\nimport { call } from 'typed-redux-saga';\n\nexport function* readAnnouncement(announcementId: Uuid): SagaIterator {\n try {\n const { content } = yield* call(\n makeRestRequest,\n 'PUT',\n `/notifications/announcements/${encodeURIComponent(announcementId)}`,\n );\n\n return yield* call(decodeOrThrow, ANNOUNCEMENT, content);\n } catch (error) {\n throw new RuntimeError('Could not mark announcement as read', {}, NativeError.wrap(error));\n }\n}\n","import { AnnouncementsState } from 'src/modules/announcements/types/announcementsState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getAnnouncementState(state: RootState): AnnouncementsState {\n return state.announcements;\n}\n","import './Announcements.scss';\nimport dayjs from 'dayjs';\nimport React, { memo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport {\n ANNOUNCEMENTS_READ,\n} from 'src/modules/announcements/actions/AnnouncementsActions';\nimport { AnnouncementsEmpty } from 'src/modules/announcements/components/AnnouncementsEmpty';\nimport {\n getAnnouncementState,\n} from 'src/modules/announcements/selectors/getAnnouncementState';\nimport { OverflowMenu } from 'src/modules/common/components/OverflowMenu';\nimport { OverflowMenuItem } from 'src/modules/common/components/OverflowMenuItem';\nimport { b, em, i, strong } from 'src/modules/common/constants/formattingHelpers';\nimport { BellIcon } from 'src/modules/common/icons/BellIcon';\nimport { CircleFilledIcon } from 'src/modules/common/icons/CircleFilledIcon';\n\nexport const Announcements = memo(() => {\n const intl = useIntl();\n\n const announcementsState = useSelector(getAnnouncementState);\n\n const isBadgeHidden = announcementsState.announcements.every((announcement) => announcement.read);\n\n const readAnnouncements = useAction(ANNOUNCEMENTS_READ.trigger);\n\n return (\n \n \n\n {!isBadgeHidden && (\n
\n \n
\n )}\n \n )}\n >\n
\n
\n \n
\n\n {announcementsState.announcements.length\n ? announcementsState.announcements.map((announcement) => (\n \n
\n
\n

\n \n

\n\n
\n

\n {dayjs(announcement.date).format(intl.formatMessage({ id: 'common/dateFormat' }))}\n

\n\n {!announcement.read && (\n
\n \n
\n )}\n
\n
\n\n

\n \n

\n
\n \n )) : (\n \n )}\n
\n \n );\n});\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport { filter } from 'fp-ts/Record';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { getApiBaseUrl } from 'src/modules/config/selectors/getApiBaseUrl';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { isDefined } from 'src/utils/guard';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* makeRestRequest(\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n relativeUrl: string,\n requestData: Json | FormData | URLSearchParams | undefined = undefined,\n): SagaIterator<{ content: unknown }> {\n const language = yield* select(getLanguage);\n const apiBaseUrl = yield* select(getApiBaseUrl);\n\n const url = apiBaseUrl.concat(relativeUrl);\n const config: RequestInit = {\n method: method,\n mode: 'cors',\n credentials: 'include',\n headers: filter(isDefined)({\n 'Content-Type': getRequestType(requestData),\n 'Accept-Language': language,\n }),\n body: getRequestBody(requestData),\n };\n\n try {\n const response = yield* call(fetch, url, config);\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const contentType = response.headers.get('Content-Type');\n if (contentType?.startsWith('application/json')) {\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return { content };\n }\n if (contentType?.startsWith('text/plain')) {\n const content: unknown = yield* call({\n fn: response.text,\n context: response,\n });\n return { content };\n }\n\n const content: unknown = yield* call({\n fn: response.blob,\n context: response,\n });\n return { content };\n } catch (error) {\n throw new RuntimeError(\n `Could not perform \"${method} ${relativeUrl}\" request`,\n { url, config },\n NativeError.wrap(error),\n );\n }\n}\n\nfunction getRequestBody(requestData: Json | FormData | URLSearchParams | undefined): BodyInit | undefined {\n if (\n requestData === undefined ||\n requestData instanceof FormData ||\n requestData instanceof URLSearchParams\n ) {\n return requestData;\n }\n\n return JSON.stringify(requestData);\n}\n\nfunction getRequestType(requestData: Json | FormData | URLSearchParams | undefined): string | undefined {\n if (\n requestData === undefined ||\n requestData instanceof FormData ||\n requestData instanceof URLSearchParams\n ) {\n // will be set by fetch\n return undefined;\n }\n\n return 'application/json';\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { HttpError } from 'src/errors/HttpError';\n\nexport function isHttpError(error: BaseError, status: number): boolean {\n if (error instanceof HttpError) {\n return error.status === status;\n }\n\n return error.previous\n ? isHttpError(error.previous, status)\n : false;\n}\n","import { Asset } from 'src/modules/common/types/Asset';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const ASSET_UPLOAD = createActions('ASSET_UPLOAD');\nexport const ASSET_CANCEL = createTrigger('ASSET_CANCEL');\n","import { Action } from 'redux';\nimport { ASSET_CANCEL } from 'src/modules/asset/actions/AssetActions';\nimport { AssetState } from 'src/modules/asset/types/AssetState';\n\nexport function assetCancelReducer(state: AssetState, action: Action): AssetState {\n if (ASSET_CANCEL.is(action)) {\n const copy = new Map(state);\n copy.delete(action.meta);\n return copy;\n }\n\n return state;\n}\n","import { assetCancelReducer } from 'src/modules/asset/reducers/assetCancelReducer';\nimport { assetUploadReducer } from 'src/modules/asset/reducers/assetUploadReducer';\nimport { AssetState } from 'src/modules/asset/types/AssetState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: AssetState = new Map();\n\nexport const assetReducer = chainReducers(defaultState, [\n assetUploadReducer,\n assetCancelReducer,\n]);\n","import { Action } from 'redux';\nimport { ASSET_UPLOAD } from 'src/modules/asset/actions/AssetActions';\nimport { AssetState } from 'src/modules/asset/types/AssetState';\nimport { FUTURE } from 'src/modules/common/types/Future';\n\nexport function assetUploadReducer(state: AssetState, action: Action): AssetState {\n if (ASSET_UPLOAD.isRequest(action)) {\n const copy = new Map(state);\n copy.set(action.meta, FUTURE.pending());\n return copy;\n }\n if (ASSET_UPLOAD.isSuccess(action)) {\n const copy = new Map(state);\n copy.set(action.meta, FUTURE.success(action.data));\n return copy;\n }\n if (ASSET_UPLOAD.isFailure(action)) {\n const copy = new Map(state);\n copy.set(action.meta, FUTURE.failure(action.data));\n return copy;\n }\n\n return state;\n}\n","import { SagaIterator, Task } from 'redux-saga';\nimport { ASSET_CANCEL, ASSET_UPLOAD } from 'src/modules/asset/actions/AssetActions';\nimport { assetUploadSaga } from 'src/modules/asset/sagas/assetUploadSaga';\nimport { cancel, fork, take } from 'typed-redux-saga';\n\nexport function* assetSaga(): SagaIterator {\n const TASK_MAP = new Map();\n\n while (true) {\n const action = yield* take([\n ASSET_UPLOAD.isRequest,\n ASSET_CANCEL.is,\n ]);\n\n const fieldId = action.meta;\n const oldTask = TASK_MAP.get(fieldId);\n if (oldTask) {\n yield* cancel(oldTask);\n TASK_MAP.delete(fieldId);\n }\n\n if (ASSET_UPLOAD.isRequest(action)) {\n const newTask = yield* fork(assetUploadSaga, action);\n TASK_MAP.set(fieldId, newTask);\n }\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { ASSET_UPLOAD } from 'src/modules/asset/actions/AssetActions';\nimport { uploadAsset } from 'src/modules/asset/sagas/utils/uploadAsset';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* assetUploadSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const id = action.meta;\n const file = action.data;\n\n try {\n yield* put(ASSET_UPLOAD.pending(id));\n yield* call(logDebug, `Uploading asset \"${id}\"...`, { file });\n\n const asset = yield* call(uploadAsset, file);\n\n yield* call(logDebug, `Uploading asset \"${id}\"... done`, asset);\n yield* put(ASSET_UPLOAD.success(asset, id));\n } catch (error) {\n yield* call(sentryCatch, error);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, `Uploading asset \"${id}\"... error`, error);\n yield* put(ASSET_UPLOAD.failure(NativeError.wrap(error), id));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { ASSET } from 'src/modules/common/codecs/Asset';\nimport { Asset } from 'src/modules/common/types/Asset';\nimport { call } from 'typed-redux-saga';\n\nexport function* uploadAsset(file: File): SagaIterator {\n try {\n const body = new FormData();\n body.append('file', file);\n\n const { content } = yield* call(makeRestRequest, 'POST', '/assets', body);\n return yield* call(decodeOrThrow, ASSET, content);\n } catch (error) {\n throw new RuntimeError('Could not upload asset', { file }, NativeError.wrap(error));\n }\n}\n","import { Asset } from 'src/modules/common/types/Asset';\nimport { Future } from 'src/modules/common/types/Future';\nimport { RootState } from 'src/types/RootState';\n\nexport function getAssetState(state: RootState, id: string): Future | null {\n return state.asset.get(id) ?? null;\n}\n","import './AssetUpload.scss';\nimport React, { useCallback, useEffect } from 'react';\nimport { useAction } from 'src/hooks/useAction';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { ASSET_CANCEL, ASSET_UPLOAD } from 'src/modules/asset/actions/AssetActions';\nimport { getAssetState } from 'src/modules/asset/selectors/getAssetState';\nimport { FileUpload } from 'src/modules/asset/views/FileUpload';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { Asset } from 'src/modules/common/types/Asset';\n\ntype Props = {\n readonly id: string;\n readonly name?: string;\n readonly disabled: boolean;\n readonly children: React.ReactNode;\n\n readonly onTouch: () => void;\n readonly onChange: (asset: Asset) => void;\n};\n\nexport const AssetUpload = ({\n id,\n name,\n onTouch,\n onChange,\n disabled,\n children,\n}: Props): React.ReactElement => {\n const assetUpload = useAction(ASSET_UPLOAD.request);\n const assetCancel = useAction(ASSET_CANCEL.trigger);\n\n const state = useParametricSelector(getAssetState, id);\n const loading = state?.state === 'pending';\n\n const handleChange = useCallback((file: File) => {\n assetUpload(file, id);\n }, [assetUpload, id]);\n\n useEffect(() => (): void => {\n assetCancel(undefined, id);\n }, [assetCancel, id]);\n useEffect(() => {\n if (state?.state === 'success') {\n onChange(state.value);\n }\n }, [state, onChange]);\n\n return (\n
\n
\n \n {children}\n \n
\n\n {state?.state === 'pending' && (\n
\n \n
\n )}\n
\n );\n};\n","import './FileUpload.scss';\nimport clsx from 'clsx';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { DropEvent, FileRejection, useDropzone } from 'react-dropzone';\nimport { FormattedMessage } from 'react-intl';\nimport { FILE_MAX_SIZE_FILED_MB } from 'src/modules/common/constants/fileField';\nimport { UploadIcon } from 'src/modules/common/icons/UploadIcon';\n\nconst DROPZONE_SIZE_ERROR = 'file-too-large';\n\ntype Props = {\n readonly id?: string;\n readonly name?: string;\n readonly disabled: boolean;\n readonly children: React.ReactNode;\n\n readonly onTouch: () => void;\n readonly onChange: (file: File) => void;\n};\n\nexport const FileUpload = ({\n id,\n name,\n onTouch,\n onChange,\n disabled,\n children,\n}: Props): React.ReactElement => {\n const [isSizeError, setSizeError] = useState(false);\n\n const handleDrop = useCallback((acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n onChange(file);\n }\n }, [onChange]);\n\n const handleReject = (rejectData: FileRejection[], event: DropEvent): void => {\n const rejection = rejectData[0];\n\n const dropzoneSizeError = rejection.errors.find((error) => error.code === DROPZONE_SIZE_ERROR);\n if (dropzoneSizeError) {\n setSizeError(true);\n }\n };\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop: handleDrop,\n onFileDialogOpen: onTouch,\n onDropRejected: handleReject,\n disabled: disabled,\n maxSize: FILE_MAX_SIZE_FILED_MB * 1024 * 1024, // 10 MB in bytes\n accept: {\n 'image/jpeg': ['.jpg', '.jpeg'],\n 'image/png': ['.png'],\n },\n });\n\n useEffect(() => {\n if (isSizeError) {\n const timer = setTimeout(() => {\n setSizeError(false);\n }, 3000);\n\n return () => clearTimeout(timer);\n }\n\n return undefined;\n }, [isSizeError]);\n\n return (\n \n \n\n
\n \n\n {isSizeError ? (\n \n ) : children}\n
\n \n );\n};\n\nconst DropdownWarning = (): React.ReactElement => (\n

\n \n

\n);\n","import { BasedataFormData } from 'src/modules/basedata/types/BasedataFormData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const BASEDATA_CHANGE = createTrigger('BASEDATA_CHANGE');\n","import { BasedataFormData } from 'src/modules/basedata/types/BasedataFormData';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\n\nexport const BASEDATA_FORM_SCHEMA: FormRule = R.struct({\n cover: R.pass(),\n title: R.maxLength(40),\n\n projectGoals: R.maxLength(280),\n\n building: R.struct({\n type: R.required(),\n size: R.nullable(R.gt(0)),\n address: R.struct({\n street: R.maxLength(30),\n city: R.maxLength(20),\n country: R.required(),\n zip: R.maxLength(10),\n }),\n }),\n participants: R.struct({\n propertyManager: R.maxLength(50),\n consutlingEngineer: R.maxLength(50),\n productManager: R.maxLength(50),\n }),\n});\n","import { useForm } from '@form-ts/react';\nimport React, { useEffect } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { BASEDATA_CHANGE } from 'src/modules/basedata/actions/BasedataActions';\nimport { BASEDATA_FORM_SCHEMA } from 'src/modules/basedata/constants/schema';\nimport { getBasedataFormData } from 'src/modules/basedata/selectors/getBasedataFormData';\nimport { BasedataFormData } from 'src/modules/basedata/types/BasedataFormData';\nimport { BasedataFormView } from 'src/modules/basedata/views/BasedataFormView';\nimport { ProjectToolbar } from 'src/modules/common/components/ProjectToolbar';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const BasedataPage = (): React.ReactElement => {\n const intl = useIntl();\n const project = useSelector(getProjectDetails);\n const formData = useSelector(getBasedataFormData);\n const language = useSelector(getLanguage);\n\n const saveForm = useAction(BASEDATA_CHANGE.trigger);\n const shareProject = useBoundAction(PROJECT_VIEW_SHARE.trigger, project);\n\n const form = useForm('project.basedata', {\n reinitialize: false,\n initialValues: formData,\n });\n useFormValidator(form, BASEDATA_FORM_SCHEMA);\n\n useEffect(() => form.subscribe((prevState) => {\n const nextState = form.currentState;\n if (prevState.values !== nextState.values) {\n saveForm(nextState.values);\n }\n }), [form, saveForm]);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'basedata/pageTitle' })}\n \n \n\n \n \n \n \n\n \n \n );\n};\n","import { NativeError, RuntimeError, resolveCurrentProjectData } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { BASEDATA_CHANGE } from 'src/modules/basedata/actions/BasedataActions';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* basedataChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const formData = action.data;\n\n try {\n yield* call(logDebug, 'Saving project basedata...', formData);\n\n const previous = yield* select(getProjectDetails);\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n cover: formData.cover,\n title: formData.title,\n goals: formData.projectGoals,\n building: formData.building,\n participants: formData.participants,\n },\n };\n\n const modifiedCarbonIntensity = {\n ...modified,\n data: resolveCurrentProjectData(modified.data),\n };\n\n const reloaded = yield* call(syncProjectBackground, modifiedCarbonIntensity);\n yield* call(logDebug, 'Saving project basedata... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save project basedata', { formData }, NativeError.wrap(error));\n yield* call(logError, 'Saving project basedata... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { BASEDATA_CHANGE } from 'src/modules/basedata/actions/BasedataActions';\nimport { basedataChangeSaga } from 'src/modules/basedata/sagas/basedataChangeSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* basedataSaga(): SagaIterator {\n yield* takeLatest(BASEDATA_CHANGE.is, basedataChangeSaga);\n}\n","import { createSelector } from 'reselect';\nimport { BasedataFormData } from 'src/modules/basedata/types/BasedataFormData';\nimport { Project } from 'src/modules/common/types/Project';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\n\nconst mapProjectDetails = (project: Project): BasedataFormData => ({\n cover: project.data.cover,\n title: project.data.title,\n building: project.data.building,\n participants: project.data.participants,\n projectGoals: project.data.goals,\n});\n\nexport const getBasedataFormData = createSelector(\n [getProjectDetails],\n mapProjectDetails,\n);\n","import './BasedataFormView.scss';\nimport { AreaUnit, BuildingType, COUNTRY_CODES, CountryCode } from '@belimo-retrofit-portal/logic';\nimport { FormController } from '@form-ts/core';\nimport { constNull } from 'fp-ts/function';\nimport React, { useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { BasedataFormData } from 'src/modules/basedata/types/BasedataFormData';\nimport { AreaUnitView } from 'src/modules/common/components/AreaUnitView';\nimport { BottomNavigationHelper } from 'src/modules/common/components/BottomNavigationHelper';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { MAX_TRILLION } from 'src/modules/common/constants/decimal';\nimport { INTL_LOCALE_MAP } from 'src/modules/common/constants/language';\nimport { BUILDING_TYPE_OPTIONS, UNIT_VERSION_OPTIONS } from 'src/modules/common/constants/options';\nimport { AssetField } from 'src/modules/form/components/AssetField';\nimport { AutocompleteField } from 'src/modules/form/components/AutocompleteField';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly projectId: string;\n readonly form: FormController;\n readonly language: Language;\n};\n\nexport const BasedataFormView = ({ projectId, form, language }: Props): React.ReactElement => {\n const intl = useIntl();\n const collator = useMemo(() => new Intl.Collator(INTL_LOCALE_MAP[language]), [language]);\n\n const projectHvacUrl = `/project/${encodeURIComponent(projectId)}/hvac`;\n\n const countryCodesFilteredByLanguage = useMemo(\n () => COUNTRY_CODES.map((code) => ({\n label: intl.formatMessage({ id: `common/country/name/${code}` }),\n value: code,\n }))\n .sort((optionA, optionB) => collator.compare(optionA.label, optionB.label)),\n [intl, collator],\n );\n\n return (\n
\n
\n
\n }>\n \n \n
\n\n
\n }>\n \n \n\n }>\n \n \n
\n\n
\n }>\n
\n \n\n \n\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n size=\"md\"\n wrapperClass=\"bp-basedata-form-view__field-wrapper bp-basedata-form-view__country-field\"\n titleText={intl.formatMessage({ id: 'basedata/building/address/country' })}\n field={form.field.at('building').at('address').at('country').transform(ensureNonNull())}\n options={countryCodesFilteredByLanguage}\n itemToElement={renderCountryOption}\n direction=\"top\"\n />\n\n \n
\n
\n\n }>\n \n\n \n\n \n\n \n \n
\n\n \n
\n
\n );\n};\n\nfunction renderBuildingTypeOption(option: BuildingType): React.ReactElement {\n return ;\n}\n\nfunction renderUnitOptions(option: AreaUnit): React.ReactElement {\n return ;\n}\n\nfunction renderCountryOption(option: CountryCode | null): React.ReactNode {\n return option ? : null;\n}\n","import { DATE_TIME, UUID } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { Announcement } from 'src/modules/common/types/Announcement';\n\nexport const ANNOUNCEMENT: D.Decoder = D.struct({\n id: UUID,\n read: D.boolean,\n date: DATE_TIME,\n title: D.string,\n description: D.string,\n});\n\nexport const ANNOUNCEMENTS: D.Decoder> = D.array(ANNOUNCEMENT);\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { Asset } from 'src/modules/common/types/Asset';\n\nexport const ASSET: C.Codec = C.struct({\n id: UUID,\n fileName: C.string,\n});\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ORGANIZATION } from 'src/modules/common/codecs/Organization';\nimport { USER_ROLE } from 'src/modules/common/codecs/UserRole';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\n\nexport const AUTH_USER: C.Codec = C.struct({\n id: UUID,\n email: C.string,\n firstName: C.string,\n lastName: C.string,\n organization: ORGANIZATION,\n role: USER_ROLE,\n});\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ContainerType } from 'src/modules/common/types/ContainerType';\n\nexport const CONTAINER_TYPE: C.Codec = C.literal(\n 'ETU',\n 'EAC',\n 'EAN',\n 'EBY',\n 'EHA',\n 'DDI',\n 'DDC',\n 'DHW',\n 'DWA',\n 'DAP',\n 'DBY',\n 'DHE',\n 'DPU',\n 'PPU',\n);\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { DeviceType } from 'src/modules/common/types/DeviceType';\n\nexport const DEVICE_TYPE: C.Codec = C.literal(\n DeviceType.THROTTLING_CIRCUIT,\n DeviceType.DIVERTING_CIRCUIT,\n DeviceType.INJECTION_CIRCUIT,\n DeviceType.MIXING_CIRCUIT,\n DeviceType.BYPASS,\n DeviceType.PUMP,\n DeviceType.ACTIVE_OR_PASSIVE_CIRCUIT,\n DeviceType.SPECIFIC_CIRCUIT,\n DeviceType.CHANGEOVER,\n);\n","import { identity } from 'fp-ts/function';\nimport * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\n\nconst decoder: D.Decoder = {\n decode: (input) => (\n input === '' || input === undefined || input === null\n ? D.success(null)\n : D.failure(input, 'Empty')\n ),\n};\n\nconst encoder: E.Encoder = {\n encode: identity,\n};\nexport const EMPTY: C.Codec = C.make(decoder, encoder);\n","import { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport * as C from 'io-ts/Codec';\n\nexport const ENERGY_EFFICIENCY_CLASS: C.Codec = C.literal(\n 'A+',\n 'A',\n 'B',\n 'C',\n 'D',\n);\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { FlowDirection } from 'src/modules/common/types/FlowDirection';\n\nexport const FLOW_DIRECTION: C.Codec = C.literal(\n FlowDirection.NORTH,\n FlowDirection.SOUTH,\n FlowDirection.EAST,\n FlowDirection.WEST,\n);\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { LANGUAGE_LIST } from 'src/modules/common/constants/language';\nimport { Language } from 'src/types/common/Language';\n\nexport const LANGUAGE: C.Codec = C.literal(\n ...LANGUAGE_LIST,\n);\n","import { pipe } from 'fp-ts/function';\nimport * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\n\nconst DECODER = pipe(\n D.string,\n D.parse((input) => (\n input.length > 0\n ? D.success(input)\n : D.failure(input, 'NonEmptyString')\n )),\n);\n\nexport const NON_EMPTY_STRING = C.make(DECODER, E.id());\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ASSET } from 'src/modules/common/codecs/Asset';\nimport { Organization } from 'src/modules/common/types/Organization';\n\nexport const ORGANIZATION: C.Codec = C.struct({\n id: UUID,\n logo: C.nullable(ASSET),\n name: C.string,\n});\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { Orientation } from 'src/modules/common/types/Orientation';\n\nexport const ORIENTATION: C.Codec = C.literal(\n Orientation.HORIZONTAL,\n Orientation.VERTICAL,\n);\n","import { DATE_TIME, PROJECT_DATA, UUID } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ORGANIZATION } from 'src/modules/common/codecs/Organization';\nimport { Project } from 'src/modules/common/types/Project';\nimport { ProjectOwner } from 'src/modules/common/types/ProjectOwner';\n\nconst PROJECT_OWNER: C.Codec = C.struct({\n id: UUID,\n email: C.string,\n firstName: C.string,\n lastName: C.string,\n});\n\nexport const PROJECT: C.Codec = C.struct({\n id: UUID,\n data: PROJECT_DATA,\n owner: C.nullable(PROJECT_OWNER),\n createdAt: DATE_TIME,\n updatedAt: DATE_TIME,\n isShared: C.boolean,\n organization: ORGANIZATION,\n});\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ThermalEnergy } from 'src/modules/common/types/ThermalEnergy';\n\nexport const THERMAL_ENERGY: C.Codec = C.literal(\n ThermalEnergy.HEATING,\n ThermalEnergy.COOLING,\n ThermalEnergy.MIXED,\n);\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { UserRole } from 'src/modules/common/types/UserRole';\n\nexport const USER_ROLE: C.Codec = C.literal(\n UserRole.USER,\n UserRole.ADMIN,\n);\n","import * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\nimport { XlsxValue } from 'src/modules/common/types/XlsxValue';\n\nconst DECODER: D.Decoder = D.nullable(D.union(D.string, D.number));\nconst ENCODER: E.Encoder = E.id();\n\nexport const XLSX_VALUE = C.make(DECODER, ENCODER);\n","import './AreaUnitView.scss';\nimport { AreaUnit } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\n\ntype Props = {\n readonly unit: AreaUnit;\n};\n\nexport const AreaUnitView = ({ unit }: Props): React.ReactElement => (\n \n {unit === AreaUnit.SQM\n ? \n : }\n \n);\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Asset } from 'src/modules/common/types/Asset';\nimport { getApiBaseUrl } from 'src/modules/config/selectors/getApiBaseUrl';\n\ntype Props = Omit, 'src'> & {\n readonly asset: Asset;\n readonly size: 'small' | 'medium' | 'large';\n};\n\nexport const AssetImage = ({ asset, size, alt, ...props }: Props): JSX.Element => {\n const apiBaseUrl = useSelector(getApiBaseUrl);\n const imageUrl = size === 'medium'\n ? `${apiBaseUrl}/preview/${encodeURIComponent(asset.id)}/500/500`\n : size === 'small'\n ? `${apiBaseUrl}/preview/${encodeURIComponent(asset.id)}/100/100`\n : `${apiBaseUrl}/source/${encodeURIComponent(asset.id)}`;\n\n return {alt};\n};\n","import React from 'react';\n\ntype Props = Omit, 'src'> & {\n readonly image: Blob;\n};\n\nexport const BlobImage = ({ image, alt, ...props }: Props): JSX.Element => {\n const [imageUrl, setImageUrl] = React.useState('');\n React.useLayoutEffect(() => {\n const url = URL.createObjectURL(image);\n setImageUrl(url);\n\n return () => {\n URL.revokeObjectURL(url);\n };\n }, [image]);\n\n return {alt};\n};\n","import './BottomNavigationHelper.scss';\nimport React, { memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\n\ntype Props = {\n routeBackText?: string;\n routeBackPath?: string;\n routeForthText: string;\n routeForthPath: string;\n};\n\nexport const BottomNavigationHelper = memo(({\n routeBackText,\n routeBackPath,\n routeForthText,\n routeForthPath,\n}:Props) => (\n
\n {(routeBackPath && routeBackText) && (\n \n
\n \n
\n\n \n \n )}\n\n \n \n\n
\n \n
\n \n
\n));\n","import './CarbonIntensityUnit.scss';\nimport { EnergySource } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { EnergySourceUnit } from 'src/modules/common/components/EnergySourceUnit';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\n\ntype Props = {\n readonly source: EnergySource;\n};\n\nexport const CarbonIntensityUnit = ({ source }: Props): React.ReactElement => (\n \n \n /\n \n \n);\n","import './CarbonSavingsUnit.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\n\nexport const CarbonSavingsUnit = (): React.ReactElement => (\n \n \n \n);\n","import './Checkbox.scss';\nimport clsx from 'clsx';\nimport React, { memo } from 'react';\n\ntype Props = {\n checked: boolean;\n label?: string;\n disabled?: boolean;\n className?: string;\n partial?: boolean;\n onChange?: (e: React.MouseEvent) => void;\n};\n\nexport const Checkbox = memo(({ label, disabled, checked, className, partial, onChange }: Props) => (\n null}\n >\n
\n\n {label && (

{label}

)}\n
\n));\n","import './CurrencySymbol.scss';\nimport { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\ntype Props = {\n readonly currency: CurrencyCode;\n};\n\nexport const CurrencySymbol = ({ currency }: Props): React.ReactElement => (\n \n \n \n);\n","import './CustomBreadcrumbItem.scss';\nimport { BreadcrumbItem } from '@carbon/react';\nimport React, { memo } from 'react';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const CustomBreadcrumbItem = memo(({ children }: Props) => (\n \n {children}\n \n));\n","import './CustomButton.scss';\nimport { Button, ButtonProps } from '@carbon/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { LoadingIcon } from 'src/modules/common/icons/LoadingIcon';\n\ntype Props = {\n fullWidth?: boolean;\n loading?: boolean;\n};\n\ntype CustomButtonProps = TButtonProps extends ButtonProps\n ? TButtonProps & Omit, 'as'> & Props\n : never;\n\nexport const CustomButton = >({\n children,\n className,\n disabled,\n fullWidth,\n loading,\n renderIcon: RenderIcon,\n size = 'lg',\n ...props\n}: CustomButtonProps): React.ReactElement => {\n const computedClassName = clsx(\n 'bp-custom-button',\n `bp-custom-button--${size}`,\n {\n 'bp-custom-button--disabled': disabled,\n 'bp-custom-button--full-width': fullWidth,\n 'bp-custom-button--loading': loading,\n },\n className,\n );\n\n return (\n : RenderIcon\n }\n size={size}\n >\n {children}\n \n );\n};\n","import './CustomLoading.scss';\nimport { Loading } from '@carbon/react';\nimport React, { memo } from 'react';\n\ntype LoadingProps = React.ComponentProps;\ntype Props = Omit;\n\nexport const CustomLoading = memo((props: Props) => );\n","import './CustomMenu.scss';\n// @ts-expect-error Carbon does have the OverflowMenu component\nimport { OverflowMenu } from '@carbon/react/lib/components/OverflowMenu';\nimport clsx from 'clsx';\nimport React, { memo } from 'react';\n\ntype Props = {\n className?: string;\n disabled?: boolean;\n flipped?: boolean;\n renderIcon?: () => React.ReactNode;\n onClick?: (event: React.MouseEvent) => void;\n onClose?: () => void;\n iconDescription: React.ReactNode;\n tooltipPosition: 'top' | 'bottom' | 'right' | 'left';\n children: React.ReactNode;\n};\n\nexport const CustomMenu = memo((\n { className,\n disabled,\n flipped,\n renderIcon,\n onClick,\n onClose,\n iconDescription,\n tooltipPosition,\n children,\n ...props }: Props,\n) => (\n \n {children}\n \n));\n","import './CustomMenuItem.scss';\nimport { OverflowMenuItem } from '@carbon/react';\nimport clsx from 'clsx';\nimport React, { memo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getCurrentLocation } from 'src/modules/routing/selectors/getCurrentLocation';\n\ntype Props = {\n itemText: React.ReactNode;\n hasDivider: boolean;\n disabled?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n href?: string;\n isDelete?: boolean;\n flipped?: boolean;\n wrapperClassName?: string;\n itemClassName?: string;\n};\n\nexport const CustomMenuItem = memo((\n {\n onClick,\n disabled,\n itemText,\n hasDivider,\n href,\n isDelete,\n flipped,\n wrapperClassName,\n itemClassName,\n ...props\n }: Props,\n): React.ReactElement => {\n const location = useSelector(getCurrentLocation);\n const currentRoute = location?.pathname === href;\n\n return (\n \n );\n});\n","import './CustomModal.scss';\nimport { ComposedModal, ComposedModalProps } from '@carbon/react';\nimport clsx from 'clsx';\nimport React, { memo, useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';\nimport { usePrevious } from 'src/modules/common/hooks/usePrevious';\n\ntype Props = ComposedModalProps & {\n isFullScreen?: boolean;\n className?: string;\n open: boolean;\n shouldUnmount: boolean;\n isShaded: boolean;\n isNarrowFooter?: boolean;\n onClose: (event: T) => void;\n onKeyDown?: (event: T) => void;\n children: React.ReactNode;\n};\n\nexport const CustomModal = memo(\n ({\n isFullScreen,\n className,\n open,\n shouldUnmount,\n isShaded,\n isNarrowFooter,\n children,\n onClose,\n onKeyDown,\n ...props\n }: Props): React.ReactNode => {\n const [isShown, setShown] = useState(false);\n\n const prevOpen = usePrevious(open);\n\n const isMounted = useMemo(() => {\n if (shouldUnmount) {\n return isShown;\n }\n\n return true;\n }, [shouldUnmount, isShown]);\n\n const handleKeyDown = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose(event);\n }\n\n onKeyDown?.(event);\n }, [onClose, onKeyDown]);\n\n // show the modal immediately when it is open\n useEffect(() => {\n if (open) {\n setShown(true);\n }\n }, [open]);\n\n // unmount the modal by timeout when it is closing to preserve animation\n useEffect(() => {\n const timeout = setTimeout(() => {\n if (prevOpen && !open) {\n setShown(false);\n }\n }, 500);\n\n return () => {\n clearTimeout(timeout);\n };\n }, [open, prevOpen]);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleKeyDown]);\n\n useLayoutEffect(() => {\n const scrollbarWidth = open ? window.innerWidth - document.documentElement.clientWidth : 0;\n\n document.documentElement.style.setProperty('--scroll-bar-width', `${scrollbarWidth}px`);\n }, [open]);\n\n return (\n \n {isMounted ? children : null}\n \n );\n },\n);\n","import './CustomTabList.scss';\nimport { Tab, TabList } from '@carbon/react';\nimport { TabProps } from '@carbon/react/lib/components/Tabs/Tabs';\nimport clsx from 'clsx';\nimport React, { memo } from 'react';\n\ntype Props = {\n ariaLabel: string;\n contained: boolean;\n isFullWidth: boolean;\n theme?: 'gray' | 'white';\n children: React.ReactNode;\n};\n\nexport const CustomTabList = (\n { ariaLabel, contained, isFullWidth, theme = 'gray', children }: Props,\n):React.ReactElement => (\n \n {children}\n \n);\n\nexport const CustomTab = memo((props: TabProps) => (\n \n {props.children}\n \n));\n","import './CustomToggle.scss';\nimport { Toggle, ToggleProps } from '@carbon/react';\nimport clsx from 'clsx';\nimport React from 'react';\n\nexport const CustomToggle = ({ className, ...props }: ToggleProps): React.ReactElement => (\n \n);\n","import './Divider.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n orientation: 'horizontal' | 'vertical';\n};\n\nexport const Divider = ({ orientation }: Props): React.ReactElement => (\n \n);\n","import './Dropdown.scss';\nimport clsx from 'clsx';\nimport React, { memo, PropsWithChildren, ReactNode, useMemo, useState } from 'react';\nimport { useOutsideClick } from 'src/modules/common/hooks/useOutsideClick';\nimport { CheckIcon } from 'src/modules/common/icons/CheckIcon';\nimport { ChevronDownIcon } from 'src/modules/common/icons/ChevronDownIcon';\nimport { ChevronUpIcon } from 'src/modules/common/icons/ChevronUpIcon';\n\ntype Props = PropsWithChildren<{\n selectedValue: T;\n renderLabel?: (arg: T) => ReactNode;\n icon?: ReactNode;\n options: readonly T[];\n size?: 'sm' | 'md' | 'lg' | 'xlg';\n outlined?: boolean;\n shaded?: boolean;\n disabled?: boolean;\n onChange: (value: T) => void;\n}>;\n\n// eslint-disable-next-line react/function-component-definition\nfunction DropdownWithoutMemo({\n onChange,\n renderLabel = (option: T): string => String(option),\n icon,\n selectedValue,\n options,\n size = 'md',\n outlined = false,\n shaded = true,\n disabled,\n children,\n}: Props): ReactNode {\n const [listOpened, setListOpened] = useState(false);\n const [ref, setRef] = useState(null);\n\n useOutsideClick(ref, () => setListOpened(false));\n\n const selected = options.find((option) => option === selectedValue) || null;\n\n const isOnlyOneOption = selected !== null && options.length === 1;\n\n const chevron = useMemo(() => {\n if (isOnlyOneOption) {\n return null;\n }\n\n return (\n listOpened\n ? \n : \n );\n }, [isOnlyOneOption, listOpened]);\n\n const handleSelect = (value: T): void => {\n onChange(value);\n setListOpened(false);\n };\n\n const handleOpen = (): void => {\n if (isOnlyOneOption || disabled) {\n return;\n }\n\n setListOpened((prev) => !prev);\n };\n\n return (\n
\n {children && (\n
\n {children}\n
\n )}\n\n
\n \n {selected ? renderLabel(selected) : null}\n\n
\n {icon || chevron}\n
\n \n\n
\n {options.map((option) => (\n handleSelect(option)}\n >\n {renderLabel(option)}\n\n {selected === option && (\n \n \n \n )}\n \n ))}\n
\n
\n
\n );\n}\n\nconst typedMemo: (c: T) => T = memo;\nexport const Dropdown = typedMemo(DropdownWithoutMemo);\n","import './EnergyEfficiencyLabel.scss';\nimport { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n readonly value: EnergyEfficiencyClass | null;\n readonly sized: boolean;\n readonly disabled?: boolean;\n readonly children: React.ReactNode;\n};\n\nexport const EnergyEfficiencyLabel = ({ value, sized, disabled, children }: Props): React.ReactElement => (\n \n {children}\n \n);\n","import { getEnergyEfficiencyLabel } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { EnergyEfficiencyLabel } from 'src/modules/common/components/EnergyEfficiencyLabel';\nimport { LABELS } from 'src/modules/common/constants/energyEfficiencyLabels';\n\ntype Props = {\n readonly value: Decimal | null;\n readonly sized: boolean;\n readonly disabled: boolean;\n};\n\nexport const EnergyEfficiencyLabelWrapper = ({ value, sized, disabled }: Props): React.ReactElement => {\n if (value === null) {\n return (\n \n –\n \n );\n }\n\n const maxLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_UP));\n const minLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_DOWN));\n\n if (minLabel === maxLabel) {\n return (\n \n {LABELS[maxLabel]}\n \n );\n }\n\n return (\n \n {LABELS[minLabel]}–{LABELS[maxLabel]}\n \n );\n};\n","import './EnergyEfficiencyStack.scss';\nimport { getEnergyEfficiencyLabel } from '@belimo-retrofit-portal/logic';\nimport { CaretRight } from '@carbon/icons-react';\nimport { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { EnergyEfficiencyLabelWrapper } from 'src/modules/common/components/EnergyEfficiencyLabelWrapper';\nimport { FACTOR_WEIGHTS_LABELS } from 'src/modules/common/constants/factorWeightedLabel';\n\ntype Props = {\n readonly line: boolean;\n readonly value: Decimal | null;\n};\n\nexport const EnergyEfficiencyStack = ({ line, value }: Props): React.ReactElement => {\n if (value === null) {\n return (\n
\n
\n {CLASS_LIST.map((label) => (\n
\n \n
\n ))}\n
\n
\n );\n }\n\n const position = getPosition(value);\n const maxLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_UP));\n const minLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_DOWN));\n\n return (\n
\n
\n
\n
\n {minLabel === maxLabel\n ? minLabel\n : <>{minLabel}–{maxLabel}}\n
\n\n
\n \n
\n
\n\n {line && (\n
\n )}\n
\n\n
\n {CLASS_LIST.map((label) => (\n
\n \n
\n ))}\n
\n
\n );\n};\n\nconst CLASS_LIST = ['A+', 'A', 'B', 'C', 'D'] as const;\n\nconst STACK_ITEM_HEIGHT = 1.333;\nconst STACK_ITEM_MARGIN = 0.25;\n\nfunction getPosition(value: Decimal): React.CSSProperties['marginBottom'] {\n return `${value.mul(STACK_ITEM_HEIGHT + STACK_ITEM_MARGIN).add(STACK_ITEM_HEIGHT / 2).toFixed(3)}em`;\n}\n","import './EnergyEfficiencyTransition.scss';\nimport { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { EnergyEfficiencyLabel } from 'src/modules/common/components/EnergyEfficiencyLabel';\nimport { LABELS } from 'src/modules/common/constants/energyEfficiencyLabels';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\n\ntype Props = {\n readonly actual: EnergyEfficiencyClass | null;\n readonly future: EnergyEfficiencyClass | null;\n};\n\nexport const EnergyEfficiencyTransition = ({ actual, future }: Props): React.ReactElement | null => (\n
\n
\n \n {actual === null ? '\\u2013' : LABELS[actual]}\n \n
\n\n
\n \n
\n\n
\n \n {future === null ? '\\u2013' : LABELS[future]}\n \n
\n
\n);\n","import './EnergyPriceUnit.scss';\nimport { CurrencyCode, EnergySource } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { EnergySourceUnit } from 'src/modules/common/components/EnergySourceUnit';\n\ntype Props = {\n readonly currency: CurrencyCode;\n readonly source: EnergySource;\n};\n\nexport const EnergyPriceUnit = ({ currency, source }: Props): React.ReactElement => (\n \n \n /\n \n \n);\n","import './EnergySavingsUnit.scss';\nimport { EnergySource } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\n\ntype Props = {\n readonly source: EnergySource;\n};\n\nexport const EnergySavingsUnit = ({ source }: Props): React.ReactElement => {\n if (source === EnergySource.HEATING_OIL) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import './EnergySourceUnit.scss';\nimport { EnergySource } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\n\ntype Props = {\n readonly source: EnergySource;\n};\n\nexport const EnergySourceUnit = ({ source }: Props): React.ReactElement => {\n if (source === EnergySource.HEATING_OIL) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import './Footer.scss';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { IMPRINT_LINK_MAP, TERMS_AND_PRIVACY_LINK_MAP } from 'src/modules/common/constants/links';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\n\nexport const Footer = ():React.ReactElement => {\n const intl = useIntl();\n const language = useSelector(getLanguage);\n const imprintLink = IMPRINT_LINK_MAP[language];\n const termsAndPrivacyLink = TERMS_AND_PRIVACY_LINK_MAP[language];\n\n return (\n
\n
\n \n \n \n\n \n \n \n\n \n \n \n
\n\n
\n \n
\n
\n );\n};\n","import './FormSection.scss';\nimport { Stack } from '@carbon/react';\nimport React from 'react';\nimport { Divider } from 'src/modules/common/components/Divider';\n\ntype Props = {\n readonly children: React.ReactNode;\n readonly title: React.ReactNode;\n};\n\nexport const FormSection = ({ children, title }: Props): React.ReactElement => (\n \n

{title}

\n \n {children}\n
\n);\n","import { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport { Numeric } from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormattedNumber } from 'src/modules/common/components/FormattedNumber';\n\ntype Props = {\n readonly value: Numeric | null;\n readonly currency: CurrencyCode;\n};\n\nexport const FormattedAmount = ({ value, currency }: Props): React.ReactElement => (\n <>\n \n  \n {value === null ? '—' : (\n \n )}\n \n);\n","import Decimal from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\n\ntype Props = {\n value?: Decimal;\n};\n\nexport const FormattedBEP = ({ value }: Props): React.ReactNode => {\n if (!value || !value.isPositive()) {\n return '\\u2013';\n }\n\n if (value.lessThan(1)) {\n return '<1';\n }\n\n if (value.lessThan(10)) {\n const roundedToNearestHalfValue = value.mul(2).toDecimalPlaces(0).div(2);\n const roundedValuePrecision = roundedToNearestHalfValue.decimalPlaces();\n\n return (\n \n );\n }\n\n if (value.greaterThan(100)) {\n return '>100';\n }\n\n return ;\n};\n","import 'katex/dist/katex.min.css';\nimport React from 'react';\nimport { FormattedMessage, FormattedMessageProps } from 'react-intl';\nimport { BlockMath, InlineMath } from 'react-katex';\n\nexport const FormattedMathMessage = ({ id, values }: FormattedMessageProps): React.ReactElement => (\n ,\n // eslint-disable-next-line react/no-unstable-nested-components\n 'tex-block': (content) => ,\n }}\n />\n);\n","import { Decimal, Numeric } from 'decimal.js-light';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { getLocale } from 'src/modules/config/selectors/getLocale';\n\ntype Props = Intl.NumberFormatOptions & {\n readonly value: Numeric;\n};\n\nexport const FormattedNumber = ({ value, ...options }: Props): React.ReactElement => {\n const locale = useSelector(getLocale);\n\n // Roboto font doesn't contain NARROW NO-BREAK SPACE (NNBSP, U+202F)\n // so PDF builder maps the char to U+0000\n const number = new Decimal(value).toNumber();\n const formatted = new Intl.NumberFormat(locale, options)\n .format(number)\n .replace(/\\u202f/g, '\\u2009');\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{formatted};\n};\n","import { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedNumber } from 'src/modules/common/components/FormattedNumber';\n\ntype Props = {\n readonly value: Decimal | null;\n readonly precision: number;\n};\n\nexport const FormattedValue = ({ value, precision }: Props): React.ReactElement => {\n if (value === null) {\n return <>—;\n }\n\n return (\n \n );\n};\n","import './Header.scss';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { Announcements } from 'src/modules/announcements/views/Announcements';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { OnboardingModal } from 'src/modules/common/components/OnboardingModal';\nimport { UserLanguage } from 'src/modules/common/components/UserLanguage';\nimport { UserProfile } from 'src/modules/common/components/UserProfile';\nimport { IS_ONBOARDING_MODAL_VIEWED } from 'src/modules/common/constants/localStorageKeys';\nimport { QuestionIcon } from 'src/modules/common/icons/QuestionIcon';\n\nexport const Header = (): React.ReactElement => {\n const intl = useIntl();\n\n const [isOnboardingModalOpened, setOnboardingModalOpened] = useState(false);\n\n const handleOnboardingModalClose = useCallback(() => {\n setOnboardingModalOpened(false);\n }, []);\n\n const handleOnboardingModalOpen = useCallback(() => {\n setOnboardingModalOpened(true);\n }, []);\n\n useEffect(() => {\n const isModalViewed = localStorage.getItem(IS_ONBOARDING_MODAL_VIEWED);\n\n if (!isModalViewed) {\n setOnboardingModalOpened(true);\n }\n }, []);\n\n return (\n <>\n \n \n \n \n\n
\n \n\n \n
\n \n
\n \n\n \n\n \n
\n
\n\n \n \n \n \n );\n};\n","import './HorizontalDivider.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n readonly className?: string;\n};\n\nexport const HorizontalDivider = ({ className }: Props):React.ReactElement => (\n
\n);\n","import { BaseError, NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\n\ntype Props = {\n readonly onReady: () => void;\n readonly onError: (error: BaseError) => void;\n readonly children: React.ReactElement | null;\n};\ntype State = {\n readonly error: Error | null;\n};\n\nexport class Lifecycle extends React.Component {\n public readonly state: State = {\n error: null,\n };\n\n public componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n this.setState({ error });\n\n const { onError } = this.props;\n onError(new RuntimeError('Rendering error', errorInfo, NativeError.wrap(error)));\n }\n\n public componentDidMount(): void {\n const { onReady } = this.props;\n onReady();\n }\n\n public render(): React.ReactNode {\n const { error } = this.state;\n if (error) {\n return null;\n }\n\n const { children } = this.props;\n return children;\n }\n}\n","import './OnboardingModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React, { memo, useEffect, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { IS_ONBOARDING_MODAL_VIEWED } from 'src/modules/common/constants/localStorageKeys';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { BodyText } from 'src/modules/common/typography/BodyText';\nimport { TitleText } from 'src/modules/common/typography/TitleText';\n\ntype Props = {\n handleClose: () => void;\n};\n\nexport const OnboardingModal = memo(({ handleClose }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const [step, setStep] = useState(1);\n\n const maxStep = 5;\n\n useEffect(() => () => {\n // set item on unmount\n localStorage.setItem(IS_ONBOARDING_MODAL_VIEWED, JSON.stringify(true));\n }, []);\n\n return (\n <>\n \n\n \n \n\n \n \n \n\n \n \n \n \n\n \n {step === 1 ? (\n setStep(2)}\n >\n \n\n
\n \n
\n \n ) : step !== 5 ? (\n <>\n setStep((prev) => prev - 1)}\n >\n
\n \n
\n\n \n \n\n setStep((prev) => prev + 1)}\n >\n \n\n
\n \n
\n \n \n ) : (\n <>\n setStep((prev) => prev - 1)}\n >\n
\n \n
\n\n \n \n\n \n \n\n
\n \n
\n \n \n )}\n
\n \n );\n});\n","import './OverflowMenu.scss';\nimport clsx from 'clsx';\nimport React, { memo, ReactNode, useCallback, useState } from 'react';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { Tooltip } from 'src/modules/common/components/Tooltip';\nimport { useOutsideClick } from 'src/modules/common/hooks/useOutsideClick';\n\ntype Props = {\n readonly buttonTooltip?: React.ReactNode;\n readonly interactive?: boolean;\n readonly label: ReactNode;\n readonly buttonSize?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n readonly children: ReactNode;\n readonly onClose?: () => void;\n};\n\nexport const OverflowMenu = memo(({\n buttonTooltip,\n interactive = true,\n label,\n buttonSize,\n children,\n onClose,\n}: Props) => {\n const [menuRef, setMenuRef] = useState(null);\n const [opened, setOpened] = useState(false);\n\n const handleButtonOpen = useCallback(() => {\n setOpened(true);\n }, []);\n\n const handleButtonClose = useCallback(() => {\n setOpened(false);\n onClose?.();\n }, [onClose]);\n\n useOutsideClick(menuRef, handleButtonClose);\n\n return (\n \n \n \n
\n {label}\n
\n \n
\n\n
\n {children}\n
\n \n );\n});\n","import clsx from 'clsx';\nimport React, { memo, MouseEvent, ReactNode, useCallback } from 'react';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\n\ntype Props = {\n selected?: boolean;\n onClick?: (e: MouseEvent) => void;\n children: ReactNode;\n className?: string;\n};\n\nexport const OverflowMenuItem = memo(({ className, selected, onClick, children }: Props) => {\n const preventDefault = useCallback((event: React.MouseEvent): void => {\n event.preventDefault();\n }, []);\n\n return (\n \n {children}\n \n );\n});\n","import React from 'react';\n\ntype Props = {\n readonly children: React.ReactElement | null | undefined | boolean;\n};\ntype State = {\n readonly children: React.ReactElement | null | undefined | boolean;\n};\n\nexport class PreserveContent extends React.Component {\n public readonly state: State = {\n // eslint-disable-next-line react/destructuring-assignment\n children: this.props.children,\n };\n\n public static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State,\n ): State {\n const isEmpty = (\n nextProps.children === null ||\n nextProps.children === undefined ||\n nextProps.children === true ||\n nextProps.children === false\n );\n\n return isEmpty ? prevState : nextProps;\n }\n\n public render(): React.ReactNode {\n const { children } = this.state;\n return children;\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\ntype Props = {\n readonly title: string;\n};\n\nexport const ProjectTitle = ({ title }: Props): React.ReactElement => (\n title.trim().length === 0\n ? \n : <>{title.trim()}\n);\n","import './ProjectToolbar.scss';\nimport { ChevronDown, ChevronUp, Folder, Share } from '@carbon/icons-react';\nimport { Breadcrumb, Button, Tabs } from '@carbon/react';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { Link, useHistory } from 'react-router-dom';\nimport { AssetImage } from 'src/modules/common/components/AssetImage';\nimport { CustomBreadcrumbItem } from 'src/modules/common/components/CustomBreadcrumbItem';\nimport { CustomTab, CustomTabList } from 'src/modules/common/components/CustomTabList';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { Project } from 'src/modules/common/types/Project';\nimport { BodyDesktopLargeRegularText } from 'src/modules/common/typography/BodyDesktopLargeRegularText';\nimport { OverlineDesktopSmallText } from 'src/modules/common/typography/OverlineDesktopSmallText';\nimport { formatProjectDetailsSubTitle } from 'src/modules/common/utils/formatProjectDetailsSubTitle';\nimport { getCurrentMatch } from 'src/modules/routing/selectors/getCurrentMatch';\nimport { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\ntype Props = {\n readonly project: Project;\n readonly onShare: () => void;\n};\n\nexport const ProjectToolbar = ({ project, onShare }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const routeState = useSelector(getCurrentMatch);\n\n const history = useHistory();\n\n const projectBaseUrl = `/project/${encodeURIComponent(project.id)}`;\n\n const [areDetailsShown, setDetailsShown] = useState(false);\n\n const projectTitleRef = useRef(null);\n const projectDetailsRef = useRef(null);\n\n const heightOfOpenedDetails = (projectTitleRef.current?.offsetHeight || 0) +\n (projectDetailsRef.current?.offsetHeight || 0) +\n 24;\n const heightOfClosedDetails = (projectTitleRef.current?.offsetHeight || 56);\n\n const address = useMemo(\n () => formatProjectDetailsSubTitle(\n intl.formatMessage({ id: `common/buildingType/${project.data.building.type}` }),\n project.data.building.address,\n ),\n [intl, project.data.building],\n );\n\n const defaultCheckedTab = useMemo(() => {\n const stateNames = [\n 'bp:project:basedata',\n 'bp:project:hvac',\n 'bp:project:schema',\n 'bp:project:evaluation',\n 'bp:project:report',\n ];\n return stateNames.findIndex((it) => getMatchedRoute(routeState, it) !== null);\n }, [routeState]);\n\n return (\n
\n
\n \n \n \n \n \n \n \n\n \n
\n setDetailsShown((prev) => !prev)}\n >\n
\n {project.data.title || intl.formatMessage({ id: 'project/toolbar/project/unnamed' })}\n
\n\n {areDetailsShown\n ? (\n \n )\n : (\n \n )}\n \n\n \n \n\n \n \n
\n\n
\n {project.data.cover\n ? \n : }\n\n
\n \n {address}\n \n\n \n {project.data.goals || intl.formatMessage({ id: 'basedata/projectGoals/empty' })}\n \n
\n
\n
\n\n
\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n
\n \n
\n\n \n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n
\n
\n
\n\n \n \n );\n};\n\nfunction getMatchedRoute(match: RouteMatch | null, state: string): RouteMatch | null {\n if (match?.state.name === state) {\n return match;\n }\n\n return match?.parent\n ? getMatchedRoute(match.parent, state)\n : null;\n}\n","import './Rating.scss';\nimport clsx from 'clsx';\nimport React, { memo, useMemo, useState } from 'react';\nimport { StarFilledIcon } from 'src/modules/common/icons/StarFilledIcon';\nimport { StarIcon } from 'src/modules/common/icons/StarIcon';\n\ntype Props = {\n readonly disabled: boolean;\n readonly onSelect: (value: number) => void;\n};\n\nexport const Rating = memo(({ disabled, onSelect }: Props) => {\n const [rating, setRating] = useState(0);\n const [hover, setHover] = useState(0);\n\n const stars = useMemo(() => Array.from({ length: 5 }, (_, i) => (i + 1)), []);\n\n const onClick = (star: number): void => {\n setRating(star);\n onSelect(star);\n };\n\n return (\n
\n {\n stars.map((star) => (\n onClick(star)}\n onMouseEnter={() => setHover(star)}\n onMouseLeave={() => setHover(rating)}\n >\n {star <= (hover || rating) ? (\n \n ) : (\n \n )}\n \n ))\n }\n
\n );\n});\n","import './SavingTileAmount.scss';\nimport React, { memo } from 'react';\n\ntype Props = {\n title: React.ReactNode;\n amount: React.ReactNode;\n unit: React.ReactNode;\n};\n\nexport const SavingTileAmount = memo(({ title, amount, unit }: Props) => (\n
\n
\n {title}\n
\n\n
\n {amount}\n\n {unit}\n
\n
\n));\n","import './SavingTileCard.scss';\nimport clsx from 'clsx';\nimport React, { memo } from 'react';\nimport { SavingTileAmount } from 'src/modules/common/components/SavingTileAmount';\n\ntype Props = {\n savingTitle: React.ReactNode;\n icon: React.ReactNode;\n amountTitle: React.ReactNode;\n amount: React.ReactNode;\n unit: React.ReactNode;\n children: React.ReactNode;\n small: boolean;\n};\n\nexport const SavingTileCard = memo(({\n savingTitle,\n icon,\n amountTitle,\n amount,\n unit,\n children,\n small,\n}:Props) => (\n
\n
\n {savingTitle}\n
\n\n
\n
\n {icon}\n
\n\n \n
\n\n
\n {children}\n
\n
\n));\n","import { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedAmount } from 'src/modules/common/components/FormattedAmount';\n\ntype Props = {\n readonly value: Decimal | null;\n readonly currency: CurrencyCode;\n};\n\nexport const SavingsAmount = ({ value, currency }: Props): React.ReactElement => {\n if (value === null) {\n return (\n \n );\n }\n\n if (value.isNegative()) {\n return (\n <>\n <\n \n \n );\n }\n if (value.isPositive() && value.lessThan(1_000)) {\n return (\n <>\n <\n \n \n );\n }\n\n return (\n \n );\n};\n","import { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedNumber } from 'src/modules/common/components/FormattedNumber';\n\ntype Props = {\n readonly value: Decimal | null;\n readonly precision: number;\n};\n\nexport const SavingsValue = ({ value, precision }: Props): React.ReactElement => {\n if (value === null) {\n return <>—;\n }\n\n if (value.isNegative()) {\n return (\n <>\n <\n \n \n );\n }\n if (value.isPositive() && value.lessThan(1)) {\n return (\n <>\n <\n \n \n );\n }\n\n return (\n \n );\n};\n","import './SupScript.scss';\nimport React from 'react';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const SupScript = ({ children }: Props): React.ReactElement => (\n {children}\n);\n","import { LogicError, NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport React, { cloneElement, useEffect, useState } from 'react';\nimport { CancelledError } from 'src/errors/CancelledError';\nimport { HttpError } from 'src/errors/HttpError';\nimport { parseSvgFile } from 'src/modules/common/utils/svg';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\n\ntype Props = {\n readonly urls: ReadonlyArray;\n readonly width: number;\n readonly height: number;\n};\n\nexport const SvgFile = React.memo(\n ({ urls, width, height }: Props): React.ReactElement | null => {\n const [element, setElement] = useState(null);\n\n useEffect(() => {\n const abort = new AbortController();\n const fallback = ;\n\n fetchAnySvgFile(urls, abort.signal)\n .then((result) => setElement(result ?? fallback))\n .catch((error) => {\n if (error instanceof CancelledError) {\n return;\n }\n\n setElement(fallback);\n sentryCatch(error);\n });\n\n return () => {\n abort.abort();\n };\n }, [urls]);\n\n if (element) {\n return cloneElement(element, {\n x: 0,\n y: 0,\n width: width,\n height: height,\n 'data-ready': 'true',\n });\n }\n\n return (\n \n );\n },\n (prevProps: Props, nextProps: Props) => (\n prevProps.width === nextProps.width &&\n prevProps.height === nextProps.height &&\n prevProps.urls.every((url, index) => url === nextProps.urls[index])\n ),\n);\n\nasync function fetchSvgFile(url: string, signal: AbortSignal): Promise {\n try {\n const response = await fetch(url, {\n signal: signal,\n mode: 'no-cors',\n redirect: 'error',\n credentials: 'omit',\n });\n\n if (response.ok) {\n const content = await response.text();\n return parseSvgFile(content);\n }\n if (response.status === 404) {\n return null;\n }\n\n throw new HttpError(response);\n } catch (error) {\n const wrapped = NativeError.wrap(error);\n if (wrapped.name === 'AbortError') {\n throw new CancelledError('SVG file loading cancelled', { url }, wrapped);\n } else {\n throw new RuntimeError('Could not fetch SVG file', { url }, wrapped);\n }\n }\n}\n\nasync function fetchAnySvgFile(urls: ReadonlyArray, signal: AbortSignal): Promise {\n for (const url of urls) {\n const file = await fetchSvgFile(url, signal);\n if (file) {\n return file;\n }\n }\n\n throw new LogicError('Could not fetch any of SVG files', { urls });\n}\n","import './TileCard.scss';\nimport React, { memo } from 'react';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { DesktopLargeText } from 'src/modules/common/typography/DesktopLargeText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n};\n\nexport const TileCard = memo(({ title, subtitle, children }: Props) => (\n
\n
\n \n {title}\n \n\n {subtitle ? (\n \n {subtitle}\n \n ) : null}\n
\n\n \n\n {children}\n
\n));\n","import './Tooltip.scss';\nimport clsx from 'clsx';\nimport React, { memo, PropsWithChildren, ReactNode } from 'react';\n\ntype Props = PropsWithChildren<{\n title?: ReactNode;\n value: ReactNode;\n disabled?: boolean;\n}>;\n\nexport const Tooltip = memo(({ title, value, disabled, children }: Props) => (\n
\n
\n {children}\n
\n\n
\n {title ? (

{title}

) : null}\n\n

{value}

\n
\n
\n));\n","import { Stack } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { constNull } from 'fp-ts/function';\nimport React, { memo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { UserRole } from 'src/modules/common/types/UserRole';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\n\ntype Props = {\n className?: string;\n disableEmail?: boolean;\n disableRole: boolean;\n form: FormController;\n isUserCreation: boolean;\n};\n\nexport const UserForm = memo(({\n className, disableEmail, disableRole, form, isUserCreation,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n \n\n \n\n \n\n \n \n );\n});\n\nconst renderSelectedItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\nconst RenderItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\n\nconst ROLE_LIST = [\n UserRole.USER,\n UserRole.ADMIN,\n];\nconst ROLE_NAMES = {\n [UserRole.USER]: ,\n [UserRole.ADMIN]: ,\n};\n","import './UserLanguage.scss';\nimport { TranslationKey } from '@tolgee/react';\nimport React, { memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { Dropdown } from 'src/modules/common/components/Dropdown';\nimport { GlobeIcon } from 'src/modules/common/icons/GlobeIcon';\nimport { CONFIG_LANGUAGE_SWITCH } from 'src/modules/config/actions/ConfigActions';\nimport { getEnvironmentLanguages } from 'src/modules/config/selectors/getEnvironmentLanguages';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { Language } from 'src/types/common/Language';\n\nexport const UserLanguage = memo(() => {\n const language = useSelector(getLanguage);\n const languages = useSelector(getEnvironmentLanguages);\n\n const switchLanguage = useAction(CONFIG_LANGUAGE_SWITCH.request);\n\n return (\n }\n selectedValue={language}\n onChange={switchLanguage}\n icon={}\n shaded={false}\n size=\"xlg\"\n />\n );\n});\n\nconst LANGUAGE_KEYS: Record = {\n 'en-US': 'header/user/language/en-US',\n 'de-CH': 'header/user/language/de-CH',\n 'fr-FR': 'header/user/language/fr-FR',\n 'hu-HU': 'header/user/language/hu-HU',\n 'es-ES': 'header/user/language/es-ES',\n 'sv-SE': 'header/user/language/sv-SE',\n 'zh-CN': 'header/user/language/zh-CN',\n 'it-IT': 'header/user/language/it-IT',\n 'sr-SR': 'header/user/language/sr-SR',\n 'mk-MK': 'header/user/language/mk-MK',\n};\n","import './UserProfile.scss';\nimport { Checkmark } from '@carbon/icons-react';\nimport React, { memo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { CustomMenu } from 'src/modules/common/components/CustomMenu';\nimport { CustomMenuItem } from 'src/modules/common/components/CustomMenuItem';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { UserIcon } from 'src/modules/common/icons/UserIcon';\nimport { UserRole } from 'src/modules/common/types/UserRole';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getCurrentLocation } from 'src/modules/routing/selectors/getCurrentLocation';\n\nexport const UserProfile = memo(() => {\n const intl = useIntl();\n const location = useSelector(getCurrentLocation);\n\n const loggedInUser = useSelector(getLoggedInUser);\n\n return (\n (\n
\n \n
\n )}\n >\n

{loggedInUser.email}

\n\n \n \n

\n \n

\n\n
\n {location?.pathname === '/projects' ? : }\n
\n \n )}\n hasDivider={false}\n />\n \n\n \n \n

\n \n

\n\n
\n \n
\n \n )}\n hasDivider={true}\n />\n \n\n {loggedInUser.role === UserRole.ADMIN && (\n

\n \n

\n )}\n\n {loggedInUser.role === UserRole.ADMIN && (\n \n \n

\n \n

\n\n
\n {location?.pathname === '/admin/users' ? : }\n
\n \n )}\n hasDivider={false}\n />\n \n )}\n\n {loggedInUser.role === UserRole.ADMIN && (\n \n \n

\n \n

\n\n
\n {location?.pathname === '/admin/organization' ? : }\n
\n \n )}\n hasDivider={true}\n />\n \n )}\n\n \n \n \n

\n )}\n hasDivider={true}\n />\n \n \n );\n});\n","export const dateFormat = 'd.m.Y';\nexport const userDateFormat = 'DD/MM/YYYY - HH:mm:ss';\n","import { Decimal } from 'decimal.js-light';\n\nexport const DECIMAL_ZERO = new Decimal(0);\nexport const DECIMAL_ONE = new Decimal(1);\n\nexport const DECIMAL_PLACES = 2;\nexport const MAX_TRILLION = 9_999_999_999_999;\n","import { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { SupScript } from 'src/modules/common/components/SupScript';\n\nexport const LABELS: Record = {\n 'A+': <>A +,\n A: 'A',\n B: 'B',\n C: 'C',\n D: 'D',\n};\n","import { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport Decimal from 'decimal.js-light';\n\nexport const FACTOR_WEIGHTS_LABELS: Readonly> = {\n 'A+': new Decimal(4),\n A: new Decimal(3),\n B: new Decimal(2),\n C: new Decimal(1),\n D: new Decimal(0),\n};\n","export const FILE_MAX_SIZE_FILED_MB = 10;\n","import React from 'react';\n\nexport const sub = (children: React.ReactNode): React.ReactElement => {children};\nexport const sup = (children: React.ReactNode): React.ReactElement => {children};\nexport const i = (children: React.ReactNode): React.ReactElement => {children};\nexport const b = (children: React.ReactNode): React.ReactElement => {children};\nexport const em = (children: React.ReactNode): React.ReactElement => {children};\nexport const strong = (children: React.ReactNode): React.ReactElement => {children};\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport { Integer } from '@belimo-retrofit-portal/logic';\n\nexport const INTEGER_ZERO = 0 as Integer;\nexport const INTEGER_ONE = 1 as Integer;\n","import { Language } from 'src/types/common/Language';\n\nexport const LANGUAGE_LIST = [\n 'en-US',\n 'de-CH',\n 'fr-FR',\n 'hu-HU',\n 'es-ES',\n 'sv-SE',\n 'zh-CN',\n 'it-IT',\n 'sr-SR',\n 'mk-MK',\n] as const;\n\nexport const INTL_LOCALE_MAP: Record = {\n 'en-US': 'en-US',\n 'de-CH': 'de-CH',\n 'fr-FR': 'fr-FR',\n 'hu-HU': 'hu-HU',\n 'es-ES': 'es-ES',\n 'sv-SE': 'sv-SE',\n 'zh-CN': 'zh-CN',\n 'it-IT': 'it-IT',\n 'sr-SR': 'sr-SR',\n 'mk-MK': 'mk-MK',\n};\n","import { Language } from 'src/types/common/Language';\n\nexport const TERMS_AND_PRIVACY_LINK_MAP: Readonly> = {\n 'de-CH': 'https://www.belimo.com/ch/de_CH/privacy',\n 'en-US': 'https://www.belimo.com/ch/en_US/privacy',\n 'fr-FR': 'https://www.belimo.com/fr/fr_FR/privacy',\n 'hu-HU': 'https://www.belimo.com/at/hu_HU/privacy',\n 'es-ES': 'https://www.belimo.com/es/es_ES/privacy',\n 'sv-SE': 'https://www.belimo.com/se/sv_SE/privacy',\n 'zh-CN': 'https://www.belimo.com.cn/cn/zh_CN/privacy',\n 'it-IT': 'https://www.belimo.com/it/it_IT/privacy',\n 'sr-SR': 'https://www.belimo.com/at/sr_RS/privacy',\n 'mk-MK': 'https://www.belimo.com/at/mk_MK/privacy',\n};\n\nexport const IMPRINT_LINK_MAP: Readonly> = {\n 'de-CH': 'https://www.belimo.com/ch/de_CH/imprint',\n 'en-US': 'https://www.belimo.com/ch/en_US/imprint',\n 'fr-FR': 'https://www.belimo.com/fr/fr_FR/imprint',\n 'hu-HU': 'https://www.belimo.com/at/hu_HU/imprint',\n 'es-ES': 'https://www.belimo.com/es/es_ES/imprint',\n 'sv-SE': 'https://www.belimo.com/se/sv_SE/imprint',\n 'zh-CN': 'https://www.belimo.com.cn/cn/zh_CN/imprint',\n 'it-IT': 'https://www.belimo.com/it/it_IT/imprint',\n 'sr-SR': 'https://www.belimo.com/at/sr_RS/imprint',\n 'mk-MK': 'https://www.belimo.com/at/mk_MK/imprint',\n};\n","export const IS_ONBOARDING_MODAL_VIEWED = 'bp-is-onboarding-modal-viewed';\n","import { Locale } from 'src/types/common/Locale';\n\nexport const SUPPORTED_LOCALES: ReadonlyMap = new Map([\n ['en', 'en-us'],\n ['de', 'de-de'],\n ['fr', 'fr-fr'],\n ['hu', 'hu-hu'],\n ['es', 'es-es'],\n ['sv', 'sv-se'],\n ['zh', 'zh-cn'],\n ['it', 'it-it'],\n ['sr', 'sr-SR'],\n ['mk', 'mk-MK'],\n\n ['en-au', 'en-au'],\n ['en-ca', 'en-ca'],\n ['en-gb', 'en-gb'],\n ['en-us', 'en-us'],\n\n ['de-at', 'de-at'],\n ['de-de', 'de-de'],\n ['de-li', 'de-li'],\n ['de-lu', 'de-lu'],\n ['de-ch', 'de-ch'],\n\n ['fr-be', 'fr-be'],\n ['fr-ca', 'fr-ca'],\n ['fr-fr', 'fr-fr'],\n ['fr-lu', 'fr-lu'],\n ['fr-ch', 'fr-ch'],\n\n ['hu-hu', 'hu-hu'],\n\n ['es-es', 'es-es'],\n\n ['sv-se', 'sv-se'],\n\n ['zh-cn', 'zh-cn'],\n\n ['it-it', 'it-it'],\n\n ['sr-SR', 'sr-SR'],\n\n ['mk-MK', 'mk-MK'],\n]);\n","import { Matrix } from '@belimo-retrofit-portal/logic';\n\nexport const MATRIX_IDENTITY: Matrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n};\n","import { AreaUnit, BuildingType, CurrencyCode, EnergySource } from '@belimo-retrofit-portal/logic';\nimport { ChangeOverLevel } from 'src/modules/common/types/ChangeOverLevel';\nimport { DifferentTemperatureLevel } from 'src/modules/common/types/DifferentTemperatureLevel';\nimport { ThermalEnergy } from 'src/modules/common/types/ThermalEnergy';\nimport { WaterToAir } from 'src/modules/common/types/WaterToAir';\n\nexport const ENERGY_SOURCE_HEATING_OPTIONS: ReadonlyArray = [\n EnergySource.ELECTRICITY,\n EnergySource.HEATING_DISTRICT,\n EnergySource.HEATING_OIL,\n EnergySource.GAS,\n EnergySource.HEATING_OTHER,\n];\n\nexport const ENERGY_SOURCE_COOLING_OPTIONS: ReadonlyArray = [\n EnergySource.ELECTRICITY,\n EnergySource.COOLING_DISTRICT,\n EnergySource.GAS,\n EnergySource.COOLING_OTHER,\n];\n\nexport const BUILDING_TYPE_OPTIONS: ReadonlyArray = [\n BuildingType.OFFICE,\n BuildingType.DATA_CENTER,\n BuildingType.EDUCATION_ELEMENTARY,\n BuildingType.EDUCATION_HIGHER,\n BuildingType.EDUCATION_OTHER,\n BuildingType.ENTERTAINMENT_LEISURE,\n BuildingType.GOVERNMENT,\n BuildingType.HEALTH,\n BuildingType.HOSPITAL,\n BuildingType.HOTEL,\n BuildingType.LIFE_SCIENCE,\n BuildingType.RESTAURANT,\n BuildingType.RETAIL,\n BuildingType.WHOLESALE_RETAIL_TRADE,\n];\n\nexport const CURRENCY_CODE_OPTIONS: ReadonlyArray = [\n 'EUR',\n 'CHF',\n 'USD',\n 'GBP',\n 'HKD',\n];\n\nexport const UNIT_VERSION_OPTIONS: ReadonlyArray = [\n AreaUnit.SQM,\n AreaUnit.SQFT,\n];\n\nexport const ALL_FILTER_FORM_OPTION = 'All';\n\nexport const THERMAL_ENERGY_OPTIONS: ReadonlyArray = [\n ALL_FILTER_FORM_OPTION,\n ThermalEnergy.HEATING,\n ThermalEnergy.COOLING,\n ThermalEnergy.MIXED,\n];\n\nexport const WATER_TO_AIR_OPTIONS: ReadonlyArray = [\n ALL_FILTER_FORM_OPTION,\n WaterToAir.WATER,\n WaterToAir.WATER_TO_AIR,\n];\n\nexport const CHANGE_OVER_LEVEL_OPTIONS: ReadonlyArray = [\n ALL_FILTER_FORM_OPTION,\n ChangeOverLevel.DISTRIBUTION,\n ChangeOverLevel.EMITTER,\n ChangeOverLevel.FLOOR,\n ChangeOverLevel.NO_CHANGE_OVER,\n];\n\nexport const DIFFERENT_TEMPERATURE_LEVEL_OPTIONS: ReadonlyArray<\nDifferentTemperatureLevel | typeof ALL_FILTER_FORM_OPTION\n> = [\n ALL_FILTER_FORM_OPTION,\n DifferentTemperatureLevel.YES,\n DifferentTemperatureLevel.NO,\n];\n","export const CARBON_THEME = {\n belimoOrangeColor: '#ff6600',\n additionalSuccess20: '#B6D6A4',\n additionalSuccess100: '#517D34',\n additionalSuccess125: '#236119',\n additionalDanger20: '#F8BBB8',\n additionalDanger100: '#C33224',\n additionalDanger125: '#A02E23',\n surface04: '#c3c3c3',\n blue04: '#375f80',\n onSurfaceLightPrimary: '#000000',\n onSurfaceLightSecondary: '#2c2b2b',\n onInteractionDark: '#000000',\n};\n","import { useEffect } from 'react';\n\nexport const useOutsideClick = (ref: T, callback: () => void): void => {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent | TouchEvent): void => {\n const node = event.target;\n\n if (!(node instanceof Node)) {\n return;\n }\n\n if (ref && !ref?.contains(node)) {\n callback();\n }\n };\n\n document.addEventListener('click', handleClickOutside, true);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, [ref, callback]);\n};\n","import { useEffect, useRef } from 'react';\n\nexport const usePrevious = (prop: T): T => {\n const propRef = useRef(prop);\n\n useEffect(() => {\n propRef.current = prop;\n }, [prop]);\n\n return propRef.current;\n};\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ArrowDownIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ArrowLeftIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ArrowRightIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ArrowUpIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const BellIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ChartUpIcon = memo(() => (\n \n \n {/* eslint-disable-next-line */}\n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CheckIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ChevronDownIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ChevronUpIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CircleCheckFilledIcon = memo(() => (\n \n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CircleFilledIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CloudIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CommentIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CoolingIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CopyIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CrossIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const CurrencyExchangeIcon = memo(() => (\n \n \n {/* eslint-disable-next-line */}\n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const DateIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const DeleteIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const DownloadIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const EditIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const FanIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const FileIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const FilterIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const GlobeIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const GridViewIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const HeatingIcon = memo(() => (\n \n \n \n \n \n));\n","import './IconWrapper.scss';\nimport React, { memo } from 'react';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const IconWrapper = memo(({ children }: Props) => (\n \n {children}\n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const LightningIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ListViewIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\ntype Props = {\n readonly className?: string;\n};\n\nexport const LoadingIcon = memo(\n ({ className }: Props): React.ReactElement => (\n
\n \n \n \n \n \n
\n ),\n);\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const MailIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const PlusIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const QuestionIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ResetIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const SearchIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const ShareOff = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const StarFilledIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const StarIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const UploadIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const UserIcon = memo(() => (\n \n \n \n \n \n));\n","import React, { memo } from 'react';\nimport { IconWrapper } from 'src/modules/common/icons/IconWrapper';\n\nexport const WarningIcon = memo(() => (\n \n \n \n \n \n));\n","import './AdminLayout.scss';\nimport { Breadcrumb } from '@carbon/react';\nimport React, { PropsWithChildren } from 'react';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\n\ntype Props = PropsWithChildren<{\n actions?: React.ReactNode;\n extension?: React.ReactNode;\n breadcrumbs: React.ReactNode;\n title: string;\n}>;\n\nexport const AdminLayout = ({\n actions,\n children,\n extension,\n title,\n breadcrumbs,\n}: Props): React.ReactElement => (\n \n
\n
\n
\n \n {breadcrumbs}\n \n\n

{title}

\n
{actions}
\n
\n\n
\n {extension}\n
\n
\n
\n\n {children}\n
\n);\n","import './AppLayout.scss';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { Footer } from 'src/modules/common/components/Footer';\nimport { Header } from 'src/modules/common/components/Header';\nimport { FeedbackButton } from 'src/modules/feedback/views/FeedbackButton';\nimport { NOTIFICATION_HIDE } from 'src/modules/notifications/actions/NotificationActions';\nimport { getNotification } from 'src/modules/notifications/selectors/getNotification';\nimport { Notification } from 'src/modules/notifications/views/Notification';\n\ntype Props = {\n readonly children: React.ReactNode;\n readonly className?: string;\n readonly classNameBody?: string;\n};\n\nexport const AppLayout = ({ children, className, classNameBody }: Props): React.ReactElement => {\n const notifications = useSelector(getNotification);\n\n const hideNotification = useAction(NOTIFICATION_HIDE.trigger);\n\n return (\n
\n\n
\n\n
\n {children}\n
\n\n
\n\n \n\n \n
\n );\n};\n","import './DocumentLayout.scss';\nimport React from 'react';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\n\nexport const DocumentLayout = ({ children }: Props): React.ReactElement => (\n
\n {children}\n
\n);\n","import './LoginLayout.scss';\nimport { Column, Grid } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\n\nexport const LoginLayout = ({ children }: Props): React.ReactElement => (\n
\n \n\n \n \n
\n

\n \n

\n\n \n \n \n
\n\n \n
\n\n \n
\n {children}\n
\n
\n
\n
\n);\n","import { NativeError, RuntimeError, ProjectData, PROJECT_DATA } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { PROJECT } from 'src/modules/common/codecs/Project';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* createProject(project: ProjectData): SagaIterator {\n try {\n const body = yield* call(PROJECT_DATA.encode, project);\n const { content } = yield* call(makeRestRequest, 'POST', '/projects', body);\n return yield* call(decodeOrThrow, PROJECT, content);\n } catch (error) {\n throw new RuntimeError('Could not create project', { project }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { PROJECT } from 'src/modules/common/codecs/Project';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadProject(projectId: Uuid): SagaIterator {\n try {\n const { content } = yield* call(makeRestRequest, 'GET', `/projects/${projectId}`);\n return yield* call(decodeOrThrow, PROJECT, content);\n } catch (error) {\n throw new RuntimeError(`Could not load project \"${projectId}\"`, {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* removeProject(project: Project): SagaIterator {\n try {\n yield* call(makeRestRequest, 'DELETE', `/projects/${encodeURIComponent(project.id)}`);\n } catch (error) {\n throw new RuntimeError('Could not remove project', { project }, NativeError.wrap(error));\n }\n}\n","import { NativeError, PROJECT_DATA, ProjectData, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { PROJECT } from 'src/modules/common/codecs/Project';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* updateProject(id: Uuid, project: ProjectData): SagaIterator {\n try {\n const body = yield* call(PROJECT_DATA.encode, project);\n const { content } = yield* call(makeRestRequest, 'PUT', `/projects/${encodeURIComponent(id)}`, body);\n return yield* call(decodeOrThrow, PROJECT, content);\n } catch (error) {\n throw new RuntimeError(`Could not update project \"${id}\"`, { project }, NativeError.wrap(error));\n }\n}\n","import { Project } from 'src/modules/common/types/Project';\nimport { createParameterSelector } from 'src/utils/selectorUtils';\n\nexport const getProjectLazy = createParameterSelector();\n","export enum ChangeOverLevel {\n NO_CHANGE_OVER = 'no-change-over',\n EMITTER = 'emitter',\n DISTRIBUTION = 'distribution',\n FLOOR = 'floor',\n}\n","export enum DeviceType {\n THROTTLING_CIRCUIT = 'throttling-circuit',\n DIVERTING_CIRCUIT = 'diverting-circuit',\n INJECTION_CIRCUIT = 'injection-circuit',\n MIXING_CIRCUIT = 'mixing-circuit',\n BYPASS = 'bypass',\n PUMP = 'pump',\n ACTIVE_OR_PASSIVE_CIRCUIT = 'active-or-passive-circuit',\n SPECIFIC_CIRCUIT = 'specific-circuit',\n CHANGEOVER = 'changeover',\n}\n","export enum DifferentTemperatureLevel {\n YES = 'yes',\n NO = 'no',\n}\n","export enum FlowDirection {\n NORTH = 'N',\n SOUTH = 'S',\n EAST = 'E',\n WEST = 'W',\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\n\nexport type Future =\n | { readonly state: 'pending' }\n | { readonly state: 'success'; readonly value: TValue }\n | { readonly state: 'failure'; readonly error: BaseError };\n\nexport const FUTURE = {\n pending(): Future {\n return { state: 'pending' };\n },\n failure(error: BaseError): Future {\n return { state: 'failure', error: error };\n },\n success(value: TValue): Future {\n return { state: 'success', value: value };\n },\n};\n","export enum Orientation {\n HORIZONTAL = 'H',\n VERTICAL = 'V',\n}\n","export enum ThermalEnergy {\n HEATING = 'H',\n COOLING = 'C',\n MIXED = 'X',\n}\n","export enum UserRole {\n USER = 'user',\n ADMIN = 'admin',\n}\n","export enum WaterToAir {\n WATER_TO_AIR = 'water-to-air',\n WATER = 'water',\n}\n","import './BodyDesktopLargeRegularText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodyDesktopLargeRegularText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './BodyDesktopSmallLightText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodyDesktopSmallLightText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './BodyLargeLightText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodyLargeLightText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './BodyLargeRegularText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodyLargeRegularText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './BodySmallText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodySmallText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './BodyText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const BodyText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './DesktopLargeText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n as?: React.ElementType;\n children: React.ReactNode;\n};\n\nexport const DesktopLargeText = (props: Props): React.ReactElement => {\n const { className, as: Cmp = 'p', children } = props;\n\n return (\n \n {children}\n \n );\n};\n","import './HeadlineSmallText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const HeadlineSmallText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './LeadText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n as?: React.ElementType;\n children: React.ReactNode;\n};\n\nexport const LeadText = (props: Props): React.ReactElement => {\n const { className, as: Cmp = 'h6', children } = props;\n\n return (\n \n {children}\n \n );\n};\n","import './OverlineDesktopSmallText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const OverlineDesktopSmallText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","import './TitleText.scss';\nimport clsx from 'clsx';\nimport React from 'react';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport const TitleText = ({ className, children }: Props): React.ReactElement => (\n

\n {children}\n

\n);\n","type Method = (...args: A) => R;\n\ntype Decorator = (\n target: unknown,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor>,\n) => TypedPropertyDescriptor>;\n\nexport function bind(): Decorator {\n return (\n _: unknown,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor>,\n ) => ({\n configurable: true,\n get: function getter(this: object): Method {\n const bound = descriptor.value!.bind(this);\n\n Object.defineProperty(this, propertyKey, {\n value: bound,\n configurable: true,\n writable: true,\n });\n\n return bound;\n },\n });\n}\n\nexport function memoize(hashFunc: Method): Decorator {\n return (\n _: unknown,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor>,\n ) => ({\n configurable: true,\n get: function getter(this: object): Method {\n const cacheMap = new Map();\n const memoized = getNewFunction(hashFunc, cacheMap, descriptor.value!);\n\n Object.defineProperty(this, propertyKey, {\n value: memoized,\n configurable: true,\n writable: true,\n });\n\n return memoized;\n },\n });\n}\n\nfunction getNewFunction(\n hashFunc: Method,\n cacheMap: Map,\n originalMethod: Method,\n): Method {\n return function method(this: unknown, ...args: A): R {\n const cacheKey = hashFunc(...args);\n if (cacheMap.has(cacheKey)) {\n return cacheMap.get(cacheKey)!;\n }\n\n const result = originalMethod.apply(this, args);\n cacheMap.set(cacheKey, result);\n return result;\n };\n}\n","import { Either, fold } from 'fp-ts/Either';\nimport { constNull, identity, pipe } from 'fp-ts/function';\n\nexport function toNullable(either: Either): T | null {\n return pipe(either, fold(constNull, identity));\n}\n","import { ProjectAddress } from '@belimo-retrofit-portal/logic';\n\nexport function formatProjectDetailsSubTitle(buildingType: string, address: ProjectAddress): string {\n return [\n buildingType,\n address.street.trim(),\n `${address.city} ${address.zip}`.trim(),\n ].filter(Boolean).join(', ');\n}\n","import { Matrix } from '@belimo-retrofit-portal/logic';\nimport { Interpolation } from 'src/modules/common/types/Interpolation';\n\nexport const INTERPOLATION_MATRIX: Interpolation = {\n len: (x) => Math.hypot(\n x.a,\n x.b,\n x.c,\n x.d,\n x.e,\n x.f,\n ),\n add: (x, y) => ({\n a: x.a + y.a,\n b: x.b + y.b,\n c: x.c + y.c,\n d: x.d + y.d,\n e: x.e + y.e,\n f: x.f + y.f,\n }),\n sub: (x, y) => ({\n a: x.a - y.a,\n b: x.b - y.b,\n c: x.c - y.c,\n d: x.d - y.d,\n e: x.e - y.e,\n f: x.f - y.f,\n }),\n mul: (x, k) => ({\n a: x.a * k,\n b: x.b * k,\n c: x.c * k,\n d: x.d * k,\n e: x.e * k,\n f: x.f * k,\n }),\n};\n\nexport const INTERPOLATION_NUMBER: Interpolation = {\n len: (x) => Math.abs(x),\n add: (x, y) => x + y,\n sub: (x, y) => x - y,\n mul: (x, k) => x * k,\n};\n","import { Language } from 'src/types/common/Language';\n\nexport function getPreferredLanguage(environmentLanguages: ReadonlyArray): Language {\n const navigatorLanguages = navigator.languages.map((language) => language.substring(0, 2).toLowerCase());\n const supportedLanguages = environmentLanguages.map((language) => language.substring(0, 2));\n\n const matchedLanguage = navigatorLanguages.find((language) => supportedLanguages.includes(language));\n\n const matchedSupportedLanguage = environmentLanguages.find(\n (language) => language.substring(0, 2) === matchedLanguage,\n );\n\n return matchedSupportedLanguage || environmentLanguages[0];\n}\n","import { SUPPORTED_LOCALES } from 'src/modules/common/constants/locale';\nimport { Locale } from 'src/types/common/Locale';\n\nexport function getPreferredLocale(): Locale {\n for (const value of navigator.languages) {\n const locale = SUPPORTED_LOCALES.get(value.toLowerCase());\n if (locale) {\n return locale;\n }\n }\n\n return 'en-us';\n}\n","import { Matrix } from '@belimo-retrofit-portal/logic';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { Point } from 'src/modules/common/types/Point';\n\nexport function matrixMultiply(\n matrix: Matrix,\n ...more: ReadonlyArray\n): Matrix {\n return more.reduce((m1, m2) => ({\n a: m2.a * m1.a + m2.b * m1.c,\n b: m2.a * m1.b + m2.b * m1.d,\n c: m2.c * m1.a + m2.d * m1.c,\n d: m2.c * m1.b + m2.d * m1.d,\n e: m2.e * m1.a + m2.f * m1.c + m1.e,\n f: m2.e * m1.b + m2.f * m1.d + m1.f,\n }), matrix);\n}\n\nexport function matrixScale(scale: number, origin: Point): Matrix {\n const scaleMatrix = { a: scale, b: 0, c: 0, d: scale, e: 0, f: 0 };\n if (origin.x === 0 && origin.y === 0) {\n return scaleMatrix;\n }\n\n return matrixMultiply(\n matrixTranslate(origin),\n scaleMatrix,\n matrixTranslate({ x: -origin.x, y: -origin.y }),\n );\n}\n\nexport function matrixTranslate(point: Point): Matrix {\n return { a: 1, b: 0, c: 0, d: 1, e: point.x, f: point.y };\n}\n\nexport function matrixInverse(matrix: Matrix): Matrix {\n const det = matrix.a * matrix.d - matrix.b * matrix.c;\n if (det === 0) {\n return MATRIX_IDENTITY;\n }\n\n return {\n a: +matrix.d / det,\n b: -matrix.b / det,\n c: -matrix.c / det,\n d: +matrix.a / det,\n e: +(matrix.c * matrix.f - matrix.d * matrix.e) / det,\n f: -(matrix.a * matrix.f - matrix.b * matrix.e) / det,\n };\n}\n","import { none, some } from 'fp-ts/Option';\nimport * as O from 'monocle-ts/Optional';\nimport { Future, FUTURE } from 'src/modules/common/types/Future';\n\nexport function optionalFuture(): O.Optional, T> {\n return O.optional(\n (state) => (state.state === 'success'\n ? some(state.value)\n : none),\n (data) => (state) => (state.state === 'success'\n ? FUTURE.success(data)\n : state),\n );\n}\n","import { Ord } from 'fp-ts/Ord';\nimport { Ordering } from 'fp-ts/Ordering';\n\n// NOTE: Option.getOrd is not OK because CMP(NONE, SOME) == -1\nexport const ordNullable: (ord: Ord) => Ord = (ord) => ({\n equals: (a, b): boolean => {\n if (a === null) {\n return b === null;\n }\n if (b === null) {\n return false;\n }\n\n return ord.equals(a, b);\n },\n compare: (a, b): Ordering => {\n if (a === null) {\n return b === null ? 0 : 1;\n }\n if (b === null) {\n return -1;\n }\n\n return ord.compare(a, b);\n },\n});\n\nexport const ordPrecedence: (value: T) => ((ord: Ord) => Ord) = (value) => (ord) => ({\n equals: ord.equals,\n compare: (a, b): Ordering => {\n if (a === b) {\n return 0;\n }\n if (a === value) {\n return -1;\n }\n if (b === value) {\n return +1;\n }\n\n return ord.compare(a, b);\n },\n});\n","import { Matrix } from '@belimo-retrofit-portal/logic';\nimport { Point } from 'src/modules/common/types/Point';\n\nexport function pointTransform(point: Point, matrix: Matrix): Point {\n return {\n x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n y: matrix.b * point.x + matrix.d * point.y + matrix.f,\n };\n}\n","import { Interpolation } from 'src/modules/common/types/Interpolation';\n\nexport type SpringParams = {\n readonly mass: number;\n readonly tension: number;\n readonly friction: number;\n\n readonly initialPosition: T;\n readonly initialVelocity: T;\n\n readonly onChange: (value: T, completed: boolean) => void;\n\n readonly precision: number;\n readonly interpolation: Interpolation;\n};\n\nexport type SpringController = {\n readonly value: T;\n readonly target: T;\n\n animate(to: T): void;\n abort(): void;\n};\n\nexport function spring({\n mass,\n tension,\n friction,\n initialPosition,\n initialVelocity,\n onChange,\n precision,\n interpolation,\n}: SpringParams): SpringController {\n let target = initialPosition;\n let position = initialPosition;\n let velocity = initialVelocity;\n\n let currFrameId = 0;\n let prevFrameTs = NaN;\n\n function loop(currFrameTs: number): void {\n // limit time delta to 46ms\n const elasped = Math.min(46, Math.floor(currFrameTs - prevFrameTs));\n\n // incrementaly iterpolate for each 1ms\n for (let i = 0; i < elasped; ++i) {\n const delta = interpolation.sub(position, target);\n const restoringForce = interpolation.mul(delta, -tension);\n const dampingForce = interpolation.mul(velocity, -friction);\n const totalForce = interpolation.add(restoringForce, dampingForce);\n const acceleration = interpolation.mul(totalForce, 1 / mass);\n\n velocity = interpolation.add(velocity, interpolation.mul(acceleration, ONE_MILLISECOND));\n position = interpolation.add(position, interpolation.mul(velocity, ONE_MILLISECOND));\n }\n\n const distance = interpolation.sub(position, target);\n const completed = (\n interpolation.len(velocity) < precision &&\n interpolation.len(distance) < precision\n );\n\n if (completed) {\n position = target;\n velocity = initialVelocity;\n prevFrameTs = NaN;\n } else {\n prevFrameTs = Math.floor(currFrameTs);\n }\n\n // we request animation before invoking the callback\n // to make possible to abort or start new animation inside the callback\n currFrameId = completed ? 0 : window.requestAnimationFrame(loop);\n onChange(position, completed);\n }\n\n return {\n get value(): T {\n return position;\n },\n get target(): T {\n return target;\n },\n\n animate: (to): void => {\n target = to;\n\n if (!currFrameId) {\n prevFrameTs = performance.now();\n currFrameId = window.requestAnimationFrame(loop);\n }\n },\n abort: (): void => {\n if (currFrameId) {\n window.cancelAnimationFrame(currFrameId);\n currFrameId = 0;\n }\n\n velocity = initialVelocity;\n prevFrameTs = NaN;\n },\n };\n}\n\nconst ONE_MILLISECOND = 0.001;\n","import { LogicError } from '@belimo-retrofit-portal/logic';\nimport { createElement, ReactElement, ReactNode } from 'react';\nimport { isNotNull } from 'src/utils/guard';\n\nexport function parseSvgFile(content: string): ReactElement {\n const document = new DOMParser().parseFromString(content, 'image/svg+xml');\n if (document.documentElement instanceof SVGSVGElement) {\n return parseElement(document.documentElement);\n }\n\n throw new LogicError('Invalid SVG content', { content });\n}\n\nfunction parseNode(node: Node): ReactNode {\n if (node instanceof Text) {\n return node.textContent?.trim() || null;\n }\n if (node instanceof SVGElement) {\n return parseElement(node);\n }\n\n return null;\n}\n\nfunction parseElement(node: SVGElement): ReactElement {\n const validAttributes = ALLOWED[node.nodeName];\n if (!validAttributes) {\n return createElement('g', { 'data-invalid-node': node.nodeName });\n }\n\n const props: Record = { key: Math.random().toFixed(6) };\n for (const svgAttribute of validAttributes) {\n const value = node.getAttribute(svgAttribute);\n if (value !== null) {\n const reactAttribute = svgAttribute.replace(/-([a-z])/g, (dashed) => dashed.substring(1).toUpperCase());\n props[reactAttribute] = value;\n }\n }\n\n const children = Array.from(node.childNodes).map(parseNode).filter(isNotNull);\n return createElement(node.nodeName.toLowerCase(), props, children);\n}\n\nconst COMMON_ATTRIBUTES = [\n 'display',\n 'visibility',\n\n 'color',\n 'opacity',\n 'overflow',\n 'transform',\n\n 'clip-path',\n 'clip-rule',\n\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n\n 'stroke',\n 'stroke-width',\n 'stroke-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n];\nconst TEXT_ATTRIBUTES = [\n 'x',\n 'y',\n\n 'dx',\n 'dy',\n\n 'font-family',\n 'font-size',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n\n 'dominant-baseline',\n 'baseline-shift',\n 'alignment-baseline',\n];\n\nconst ALLOWED: Record = {\n svg: [\n 'width',\n 'height',\n\n 'viewBox',\n 'preserveAspectRatio',\n ],\n g: [\n ...COMMON_ATTRIBUTES,\n ],\n clipPath: [\n ...COMMON_ATTRIBUTES,\n 'clipPathUnits',\n ],\n line: [\n ...COMMON_ATTRIBUTES,\n 'x1',\n 'y1',\n 'x2',\n 'y2',\n ],\n rect: [\n ...COMMON_ATTRIBUTES,\n 'x',\n 'y',\n 'rx',\n 'ry',\n 'width',\n 'height',\n ],\n circle: [\n ...COMMON_ATTRIBUTES,\n 'cx',\n 'cy',\n 'r',\n ],\n ellipse: [\n ...COMMON_ATTRIBUTES,\n 'cx',\n 'cy',\n 'rx',\n 'ry',\n ],\n path: [\n ...COMMON_ATTRIBUTES,\n 'd',\n ],\n polyline: [\n ...COMMON_ATTRIBUTES,\n 'points',\n ],\n polygon: [\n ...COMMON_ATTRIBUTES,\n 'points',\n ],\n text: [\n ...COMMON_ATTRIBUTES,\n ...TEXT_ATTRIBUTES,\n ],\n tspan: [\n ...COMMON_ATTRIBUTES,\n ...TEXT_ATTRIBUTES,\n ],\n};\n","import { ConfigData } from 'src/modules/config/types/ConfigData';\nimport { ConfigI18n } from 'src/modules/config/types/ConfigI18n';\nimport { Language } from 'src/types/common/Language';\nimport { createActions } from 'src/utils/createActions';\n\nexport const CONFIG_FETCH = createActions('CONFIG_FETCH');\nexport const CONFIG_LANGUAGE_SWITCH = createActions('CONFIG_LANGUAGE_SWITCH');\n","import { DEVICE_IDENTIFIER } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { ReadOnlyArray } from 'src/io/combinators/ReadOnlyArray';\nimport { CONTAINER_TYPE } from 'src/modules/common/codecs/ContainerType';\nimport { ConfigContainer } from 'src/modules/config/types/ConfigContainer';\n\nexport const CONFIG_CONTAINER: C.Codec = C.struct({\n type: CONTAINER_TYPE,\n name: C.string,\n description: C.string,\n children: ReadOnlyArray(DEVICE_IDENTIFIER),\n});\n","import * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport * as E from 'io-ts/Encoder';\nimport { DEVICE_TYPE } from 'src/modules/common/codecs/DeviceType';\nimport { EMPTY } from 'src/modules/common/codecs/Empty';\nimport { ConfigDevice } from 'src/modules/config/types/ConfigDevice';\n\nconst CONFIG_DEVICE_DECODER: D.Decoder = D.struct({\n id: D.string,\n type: DEVICE_TYPE,\n\n name: D.string,\n explanation: D.union(EMPTY, D.string),\n});\n\nexport const CONFIG_DEVICE = C.make(CONFIG_DEVICE_DECODER, E.id());\n","import * as D from 'io-ts/Decoder';\nimport { EMPTY } from 'src/modules/common/codecs/Empty';\nimport {\n ConfigHvac,\n ConfigHvacAddition,\n ConfigHvacOption,\n ConfigHvacSection,\n} from 'src/modules/config/types/ConfigHvac';\n\nconst CONFIG_HVAC_ADDITION: D.Decoder = D.struct({\n id: D.string,\n title: D.string,\n placeholder: D.union(EMPTY, D.string),\n});\n\nconst CONFIG_HVAC_OPTION: D.Decoder = D.struct({\n id: D.string,\n title: D.string,\n explanation: D.union(EMPTY, D.string),\n});\n\nconst CONFIG_HVAC_SECTION: D.Decoder = D.struct({\n id: D.string,\n name: D.string,\n explanation: D.union(EMPTY, D.string),\n option: D.array(CONFIG_HVAC_OPTION),\n additionals: D.array(CONFIG_HVAC_ADDITION),\n});\n\nexport const CONFIG_HVAC: D.Decoder = D.struct({\n heating: D.array(CONFIG_HVAC_SECTION),\n cooling: D.array(CONFIG_HVAC_SECTION),\n ventilation: D.array(CONFIG_HVAC_SECTION),\n});\n","import { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport * as D from 'io-ts/Decoder';\nimport { CONTAINER_TYPE } from 'src/modules/common/codecs/ContainerType';\nimport { EMPTY } from 'src/modules/common/codecs/Empty';\nimport { FLOW_DIRECTION } from 'src/modules/common/codecs/FlowDirection';\nimport { ORIENTATION } from 'src/modules/common/codecs/Orientation';\nimport { THERMAL_ENERGY } from 'src/modules/common/codecs/ThermalEnergy';\nimport { ChangeOverLevel } from 'src/modules/common/types/ChangeOverLevel';\nimport { DifferentTemperatureLevel } from 'src/modules/common/types/DifferentTemperatureLevel';\nimport { WaterToAir } from 'src/modules/common/types/WaterToAir';\nimport { ConfigSchema, ConfigSchemaContainer } from 'src/modules/config/types/ConfigSchema';\n\nconst CONFIG_SCHEMA_CONTAINER: D.Decoder = D.struct({\n type: CONTAINER_TYPE,\n\n left: D.number,\n top: D.number,\n\n orientation: ORIENTATION,\n flow_direction: FLOW_DIRECTION,\n termal_energy: THERMAL_ENERGY,\n});\n\nexport const CHANGE_OVER_LEVEL: C.Codec = C.literal(\n ChangeOverLevel.NO_CHANGE_OVER,\n ChangeOverLevel.EMITTER,\n ChangeOverLevel.DISTRIBUTION,\n ChangeOverLevel.FLOOR,\n);\n\nexport const WATER_TO_AIR: C.Codec = C.literal(\n WaterToAir.WATER,\n WaterToAir.WATER_TO_AIR,\n);\n\nexport const DIFFERENT_TEMPERATURE_LEVEL: C.Codec = C.literal(\n DifferentTemperatureLevel.YES,\n DifferentTemperatureLevel.NO,\n);\n\nexport const CONFIG_SCHEMA: D.Decoder = D.struct({\n id: D.string,\n thermal_energy: THERMAL_ENERGY,\n water_to_air: WATER_TO_AIR,\n change_over_level: CHANGE_OVER_LEVEL,\n different_temperature_level: DIFFERENT_TEMPERATURE_LEVEL,\n children: D.record(CONFIG_SCHEMA_CONTAINER),\n\n name: D.string,\n explanation: D.union(EMPTY, D.string),\n width: D.number,\n height: D.number,\n});\n","import * as D from 'io-ts/Decoder';\nimport { LANGUAGE } from 'src/modules/common/codecs/Language';\nimport { Environment } from 'src/types/Environment';\n\nexport const ENVIRONMENT: D.Decoder = D.struct({\n apiBaseUrl: D.string,\n sentryDsn: D.string,\n sentryEnv: D.string,\n languages: D.array(LANGUAGE),\n});\n","import { TolgeeProvider } from '@tolgee/react';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { getConfigState } from 'src/modules/config/selectors/getConfigState';\nimport { getTolgeeInstance } from 'src/modules/config/selectors/getTolgeeInstance';\nimport { RouterLoader } from 'src/modules/routing/views/RouterLoader';\n\ntype Props = {\n readonly children: React.ReactElement;\n};\n\nexport const ConfigProvider = ({ children }: Props): React.ReactElement | null => {\n const config = useSelector(getConfigState);\n if (config.data.state === 'pending') {\n return ;\n }\n if (config.data.state === 'failure') {\n // NOTE: not a good idea but the expected behaviour is not specified\n throw config.data.error;\n }\n\n return (\n \n {children}\n \n );\n};\n\nconst IntlProvider = ({ children }: Props): React.ReactElement => {\n const tolgee = useSelector(getTolgeeInstance);\n\n return (\n \n {children}\n \n );\n};\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { CONFIG_FETCH } from 'src/modules/config/actions/ConfigActions';\nimport { ConfigState } from 'src/modules/config/types/ConfigState';\n\nexport function configFetchReducer(state: ConfigState, action: Action): ConfigState {\n if (CONFIG_FETCH.isPending(action)) {\n return {\n data: FUTURE.pending(),\n };\n }\n if (CONFIG_FETCH.isSuccess(action)) {\n return {\n data: FUTURE.success(action.data),\n };\n }\n if (CONFIG_FETCH.isFailure(action)) {\n return {\n data: FUTURE.failure(action.data),\n };\n }\n\n return state;\n}\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux';\nimport { optionalFuture } from 'src/modules/common/utils/optional';\nimport { CONFIG_LANGUAGE_SWITCH } from 'src/modules/config/actions/ConfigActions';\nimport { ConfigState } from 'src/modules/config/types/ConfigState';\n\nexport function configLanguageSwitchReducer(state: ConfigState, action: Action): ConfigState {\n if (CONFIG_LANGUAGE_SWITCH.isSuccess(action)) {\n return pipe(\n O.id(),\n O.prop('data'),\n O.compose(optionalFuture()),\n O.prop('i18n'),\n O.modify(() => action.data),\n )(state);\n }\n\n return state;\n}\n","import { FUTURE } from 'src/modules/common/types/Future';\nimport { configFetchReducer } from 'src/modules/config/reducers/configFetchReducer';\nimport { configLanguageSwitchReducer } from 'src/modules/config/reducers/configLanguageSwitchReducer';\nimport { ConfigState } from 'src/modules/config/types/ConfigState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ConfigState = {\n data: FUTURE.pending(),\n};\n\nexport const configReducer = chainReducers(defaultState, [\n configFetchReducer,\n configLanguageSwitchReducer,\n]);\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { CONFIG_FETCH } from 'src/modules/config/actions/ConfigActions';\nimport { loadConfig } from 'src/modules/config/sagas/utils/loadConfig';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* configFetchSaga(): SagaIterator {\n try {\n yield* call(logDebug, 'Fetching configuration...');\n yield* put(CONFIG_FETCH.pending());\n\n const config = yield* call(loadConfig);\n\n yield* call(logDebug, 'Fetching configuration... done', config);\n yield* put(CONFIG_FETCH.success(config));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Fetching configuration... error', { error });\n yield* put(CONFIG_FETCH.failure(NativeError.wrap(error)));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { getPreferredLocale } from 'src/modules/common/utils/locale';\nimport { CONFIG_LANGUAGE_SWITCH } from 'src/modules/config/actions/ConfigActions';\nimport { loadTranslations } from 'src/modules/config/sagas/utils/loadTranslations';\nimport { saveLanguage } from 'src/modules/config/sagas/utils/saveLanguage';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { hideLoadingIndicator, showLoadingIndicator } from 'src/modules/loader/sagas/utils/loadingIndicator';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* configLanguageSwitchSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const language = action.data;\n const loaderKey = 'language-switch';\n try {\n yield* call(showLoadingIndicator, loaderKey);\n\n yield* call(logDebug, `Switching language to \"${language}\"...`);\n yield* put(CONFIG_LANGUAGE_SWITCH.pending());\n\n const locale = yield* call(getPreferredLocale);\n const translations = yield* call(loadTranslations, language);\n yield* call(saveLanguage, language);\n\n yield* call(logDebug, `Switching language to \"${language}\"... done`);\n yield* put(CONFIG_LANGUAGE_SWITCH.success({ locale, language, translations }));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, `Switching language to \"${language}\"... error`, { error });\n yield* put(CONFIG_LANGUAGE_SWITCH.failure(NativeError.wrap(error)));\n } finally {\n yield* call(hideLoadingIndicator, loaderKey);\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { CONFIG_FETCH, CONFIG_LANGUAGE_SWITCH } from 'src/modules/config/actions/ConfigActions';\nimport { configFetchSaga } from 'src/modules/config/sagas/configFetchSaga';\nimport { configLanguageSwitchSaga } from 'src/modules/config/sagas/configLanguageSwitchSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* configSaga(): SagaIterator {\n yield* takeLatest(CONFIG_FETCH.isRequest, configFetchSaga);\n yield* takeLatest(CONFIG_LANGUAGE_SWITCH.isRequest, configLanguageSwitchSaga);\n}\n","import { SagaIterator } from 'redux-saga';\nimport { call as callEffect } from 'redux-saga/effects';\nimport { loadContainers } from 'src/modules/config/sagas/utils/loadContainers';\nimport { loadDevices } from 'src/modules/config/sagas/utils/loadDevices';\nimport { loadEnvironment } from 'src/modules/config/sagas/utils/loadEnvironment';\nimport { loadHvacConfig } from 'src/modules/config/sagas/utils/loadHvacConfig';\nimport { loadLanguage } from 'src/modules/config/sagas/utils/loadLanguage';\nimport { loadLocale } from 'src/modules/config/sagas/utils/loadLocale';\nimport { loadSchemas } from 'src/modules/config/sagas/utils/loadSchemas';\nimport { loadTranslations } from 'src/modules/config/sagas/utils/loadTranslations';\nimport { ConfigData } from 'src/modules/config/types/ConfigData';\nimport { sentryInit } from 'src/modules/config/utils/sentryInit';\nimport { all, call } from 'typed-redux-saga';\n\nexport function* loadConfig(): SagaIterator {\n const currentDate = new Date();\n const environment = yield* call(loadEnvironment);\n\n // init Sentry as soon as possible\n yield* call(sentryInit, environment);\n\n const locale = yield* call(loadLocale);\n const language = yield* call(loadLanguage, environment.languages);\n const translations = yield* call(loadTranslations, language);\n const { hvac, schemas, devices, containers } = yield* all({\n hvac: callEffect(loadHvacConfig),\n schemas: callEffect(loadSchemas),\n devices: callEffect(loadDevices),\n containers: callEffect(loadContainers),\n });\n\n return {\n environment: environment,\n currentDate: currentDate,\n hvac: hvac,\n schemas: schemas,\n devices: devices,\n containers: containers,\n i18n: {\n locale,\n language,\n translations,\n },\n };\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { array } from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { CONFIG_CONTAINER } from 'src/modules/config/codecs/ConfigContainer';\nimport { ConfigContainer } from 'src/modules/config/types/ConfigContainer';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadContainers(): SagaIterator {\n try {\n const response = yield* call(fetch, '/configs/containers.json', {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return yield* call(\n decodeOrThrow,\n array(CONFIG_CONTAINER),\n content,\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch schema containers', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { array } from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { CONFIG_DEVICE } from 'src/modules/config/codecs/ConfigDevice';\nimport { ConfigDevice } from 'src/modules/config/types/ConfigDevice';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadDevices(): SagaIterator {\n try {\n const response = yield* call(fetch, '/configs/devices.json', {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return yield* call(\n decodeOrThrow,\n array(CONFIG_DEVICE),\n content,\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch schema devices', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { ENVIRONMENT } from 'src/modules/config/codecs/Environment';\nimport { Environment } from 'src/types/Environment';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadEnvironment(): SagaIterator {\n try {\n const response = yield* call(fetch, '/environment.json', {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return yield* call(\n decodeOrThrow,\n ENVIRONMENT,\n content,\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch environment file', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { CONFIG_HVAC } from 'src/modules/config/codecs/ConfigHvac';\nimport { ConfigHvac } from 'src/modules/config/types/ConfigHvac';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadHvacConfig(): SagaIterator {\n try {\n const response = yield* call(fetch, '/configs/hvac.json', {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return yield* call(\n decodeOrThrow,\n CONFIG_HVAC,\n content,\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch HVAC configuration file', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { getPreferredLanguage } from 'src/modules/common/utils/language';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { storageGet } from 'src/sagas/utils/storage';\nimport { Language } from 'src/types/common/Language';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadLanguage(environmentLanguages: ReadonlyArray): SagaIterator {\n const preferred = yield* call(getPreferredLanguage, environmentLanguages);\n\n try {\n yield* call(logDebug, 'Loading user language...');\n\n const stored = yield* call(storageGet, 'language');\n const language = environmentLanguages.find(\n (environmentLanguage) => environmentLanguage === stored,\n ) || environmentLanguages[0];\n\n yield* call(logDebug, 'Loading user language... done', language);\n return language;\n } catch (error) {\n yield* call(logError, 'Loading user language... error', error);\n yield* call(sentryCatch, new RuntimeError('Could not load user language', {}, NativeError.wrap(error)));\n\n return preferred;\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { getPreferredLocale } from 'src/modules/common/utils/locale';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { Locale } from 'src/types/common/Locale';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadLocale(): SagaIterator {\n try {\n yield* call(logDebug, 'Loading user locale...');\n const locale = yield* call(getPreferredLocale);\n\n yield* call(logDebug, 'Loading user locale... done', locale);\n return locale;\n } catch (error) {\n const wrapped = new RuntimeError('Could not load user locale', {}, NativeError.wrap(error));\n\n yield* call(logError, 'Loading user locale... error', error);\n yield* call(sentryCatch, wrapped);\n\n throw wrapped;\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { array } from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { CONFIG_SCHEMA } from 'src/modules/config/codecs/ConfigSchema';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadSchemas(): SagaIterator {\n try {\n const response = yield* call(fetch, '/configs/schemas.json', {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n return yield* call(\n decodeOrThrow,\n array(CONFIG_SCHEMA),\n content,\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch schema templates', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { pipe } from 'fp-ts/function';\nimport { filter } from 'fp-ts/ReadonlyRecord';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { HttpError } from 'src/errors/HttpError';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { Translations } from 'src/modules/config/types/Translations';\nimport { Language } from 'src/types/common/Language';\nimport { isNotNull } from 'src/utils/guard';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadTranslations(language: Language): SagaIterator {\n try {\n const response = yield* call(fetch, `/translations/${encodeURIComponent(language)}.json`, {\n method: 'GET',\n redirect: 'error',\n credentials: 'omit',\n });\n if (!response.ok) {\n throw new HttpError(response);\n }\n\n const content: unknown = yield* call({\n fn: response.json,\n context: response,\n });\n const translations = yield* call(\n decodeOrThrow,\n D.record(D.nullable(D.string)),\n content,\n );\n return pipe(\n translations,\n filter(isNotNull),\n );\n } catch (error) {\n throw new RuntimeError('Could not fetch translations', { language }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { LANGUAGE } from 'src/modules/common/codecs/Language';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { storageSet } from 'src/sagas/utils/storage';\nimport { Language } from 'src/types/common/Language';\nimport { call } from 'typed-redux-saga';\n\nexport function* saveLanguage(language: Language): SagaIterator {\n try {\n yield* call(logDebug, 'Saving user language...', language);\n\n const stored = yield* call(LANGUAGE.encode, language);\n yield* call(storageSet, 'language', stored);\n\n yield* call(logDebug, 'Saving user language... done', language);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save user language', { language }, NativeError.wrap(error));\n\n yield* call(logError, 'Saving user language... error', error);\n yield* call(sentryCatch, wrapped);\n throw wrapped;\n }\n}\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getApiBaseUrl = createSelector([\n getConfigData,\n], (config) => config.environment.apiBaseUrl);\n","import { createSelector } from 'reselect';\nimport { getConfigState } from 'src/modules/config/selectors/getConfigState';\nimport { assertNever } from 'src/utils/assert';\n\nexport const getConfigData = createSelector([\n getConfigState,\n], (state) => {\n if (state.data.state === 'success') {\n return state.data.value;\n }\n\n return assertNever('Config data is not initialed yet', { state });\n});\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getConfigSchemas = createSelector([\n getConfigData,\n], (config) => config.schemas);\n","import { ConfigState } from 'src/modules/config/types/ConfigState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getConfigState(state: RootState): ConfigState {\n return state.config;\n}\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getCurrentDate = createSelector([\n getConfigData,\n], (config) => config.currentDate);\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getEnvironmentLanguages = createSelector([\n getConfigData,\n], (config) => config.environment.languages);\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getConfigHvac = createSelector([\n getConfigData,\n], (config) => config.hvac);\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getLanguage = createSelector([\n getConfigData,\n], (config) => config.i18n.language);\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\n\nexport const getLocale = createSelector([\n getConfigData,\n], (config) => config.i18n.locale);\n","import { FormatIcu } from '@artshell/tolgee-format-icu-jsx-param';\nimport { LogicError } from '@belimo-retrofit-portal/logic';\nimport { Tolgee } from '@tolgee/react';\nimport { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\n\nexport const getTolgeeInstance = createSelector([\n getConfigData,\n], ({ i18n }) => Tolgee()\n .use(FormatIcu())\n .init({\n language: i18n.language,\n staticData: {\n [i18n.language]: i18n.translations,\n },\n\n onTranslationMissing: (info) => {\n const error = new LogicError(`Missing translation \"${i18n.language}:${info.key}\"`);\n sentryCatch(error);\n\n return info.key;\n },\n onFormatError: (details, info) => {\n const error = new LogicError(`Invalid translation \"${i18n.language}:${info.key}\" (${details})`);\n sentryCatch(error);\n\n return info.key;\n },\n }));\n","import { createSelector } from 'reselect';\nimport { getTolgeeInstance } from 'src/modules/config/selectors/getTolgeeInstance';\nimport { Translator } from 'src/modules/config/types/Translator';\n\nexport const getTranslator = createSelector([\n getTolgeeInstance,\n], (tolgee): Translator => (key, values) => tolgee.t(key, values));\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { captureException, withScope } from '@sentry/browser';\n\nexport function sentryCatch(error: unknown): void {\n withScope((scope) => {\n // TODO: don't we need a user info here?\n const context = NativeError.wrap(error).toJSON();\n\n scope.setExtra('error_context', context);\n captureException(error);\n });\n}\n","import {\n init,\n BrowserTracing,\n makeBrowserOfflineTransport,\n makeFetchTransport,\n HttpContext,\n Breadcrumbs,\n GlobalHandlers,\n LinkedErrors,\n} from '@sentry/browser';\nimport { ExtraErrorData } from '@sentry/integrations';\nimport { BaseTransportOptions } from '@sentry/types/types/transport';\nimport escapeStringRegexp from 'escape-string-regexp';\nimport { Environment } from 'src/types/Environment';\n\nexport function sentryInit(environment: Environment): void {\n if (environment.sentryDsn === '') {\n return;\n }\n\n init({\n dsn: environment.sentryDsn,\n environment: environment.sentryEnv,\n release: process.env.SENTRY_RELEASE,\n transport: makeBrowserOfflineTransport((options: BaseTransportOptions) => makeFetchTransport({\n ...options,\n // masking sentry_key because adblockers use it for blocking sentry\n url: options.url.replace(/sentry_key/, 'xauth'),\n })),\n tracePropagationTargets: [\n new RegExp(`^${escapeStringRegexp(environment.apiBaseUrl)}`),\n ],\n\n debug: false,\n enabled: true,\n\n normalizeDepth: 0,\n maxValueLength: 100_000,\n\n defaultIntegrations: false,\n integrations: [\n new HttpContext(),\n new Breadcrumbs({\n dom: true,\n xhr: true,\n fetch: true,\n console: true,\n history: true,\n sentry: true,\n }),\n new GlobalHandlers({\n onerror: true,\n onunhandledrejection: true,\n }),\n new ExtraErrorData({\n depth: 1_000,\n }),\n new LinkedErrors({\n key: 'previous',\n limit: 100,\n }),\n new BrowserTracing({\n traceXHR: true,\n traceFetch: true,\n enableHTTPTimings: true,\n }),\n ],\n\n tracesSampleRate: 1.0,\n });\n}\n","import './ErrorBoundary.scss';\nimport { BaseError, NativeError } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { ErrorMessage } from 'src/modules/error/views/ErrorMessage';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\ntype State = {\n readonly error: BaseError | undefined;\n readonly errorInfo: React.ErrorInfo | undefined;\n};\n\nexport class ErrorBoundary extends React.Component {\n public readonly state: State = {\n error: undefined,\n errorInfo: undefined,\n };\n\n public componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n sentryCatch(error);\n\n this.setState(() => ({\n error: NativeError.wrap(error),\n errorInfo: errorInfo,\n }));\n }\n\n public render(): React.ReactNode {\n const { error, errorInfo } = this.state;\n if (!error || !errorInfo) {\n const { children } = this.props;\n return children;\n }\n\n return (\n
\n \n
\n );\n }\n}\n","import './ErrorPage.scss';\nimport { BaseError } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { isHttpError } from 'src/modules/api/utils/isHttpError';\nimport { ErrorView } from 'src/modules/error/views/ErrorView';\nimport { RouteNotFoundError } from 'src/modules/routing/errors/RouteNotFoundError';\n\ntype Props = {\n readonly error: BaseError;\n};\n\nexport const ErrorPage = ({ error }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'errorPage/title' })}\n \n \n\n
\n {error instanceof RouteNotFoundError\n ? \n : isHttpError(error, 404)\n ? \n : isHttpError(error, 401)\n ? \n : }\n
\n \n );\n};\n","import './ErrorMessage.scss';\nimport { BaseError } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\n\ntype Props = {\n readonly error: BaseError;\n readonly errorInfo: React.ErrorInfo | undefined;\n};\n\nexport const ErrorMessage = ({ error, errorInfo }: Props): React.ReactElement => (\n
\n \n
\n);\n\nconst ErrorBlock = ({ error, errorInfo } : Props): React.ReactElement => (\n
\n
\n {error.name}. {error.message}\n
\n\n
\n Error\n
\n        {JSON.stringify(error, null, 2)}\n      
\n
\n\n
\n Stack\n
\n        {error.stack}\n      
\n
\n\n {errorInfo && (\n
\n Components\n
\n          {errorInfo.componentStack}\n        
\n
\n )}\n\n {error.previous && (\n
\n \n
\n )}\n
\n);\n","import './ErrorView.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\n\ntype ErrorCode = 404 | 500 | 401;\n\ntype Props = {\n errorCode: ErrorCode;\n};\n\nexport const ErrorView = ({ errorCode }: Props): React.ReactElement => (\n
\n

\n {errorCode}\n

\n\n
\n \n
\n\n

\n \n

\n\n \n \n\n
\n \n
\n \n
\n);\n","import { ProjectEvaluation } from '@belimo-retrofit-portal/logic';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const EVALUATION_CHANGE = createTrigger('EVALUATION_CHANGE');\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { ProjectToolbar } from 'src/modules/common/components/ProjectToolbar';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { EVALUATION_CHANGE } from 'src/modules/evaluation/actions/EvaluationActions';\nimport { getEvaluationFormData } from 'src/modules/evaluation/selectors/getEvaluationFormData';\nimport { getEvaluationResults } from 'src/modules/evaluation/selectors/getEvaluationResults';\nimport { EvaluationScreen } from 'src/modules/evaluation/views/EvaluationScreen';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { getReportCurrency } from 'src/modules/report/selectors/getReportCurrency';\nimport { SHARE_PROJECT_OPEN } from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const EvaluationPage = (): React.ReactElement => {\n const intl = useIntl();\n const project = useSelector(getProjectDetails);\n const currency = useParametricSelector(getReportCurrency, project);\n const results = useParametricSelector(getEvaluationResults, project);\n const formData = useParametricSelector(getEvaluationFormData, project);\n const saveForm = useAction(EVALUATION_CHANGE.trigger);\n const shareProject = useBoundAction(SHARE_PROJECT_OPEN.trigger, project);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'evaluation/pageTitle' })}\n \n \n\n \n \n \n \n\n \n \n );\n};\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { EVALUATION_CHANGE } from 'src/modules/evaluation/actions/EvaluationActions';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* evaluationChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const formData = action.data;\n\n try {\n yield* call(logDebug, 'Saving evaluation data...', formData);\n\n const previous = yield* select(getProjectDetails);\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n evaluation: formData,\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n yield* call(logDebug, 'Saving evaluation data... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save evaluation data', { formData }, NativeError.wrap(error));\n yield* call(logError, 'Saving evaluation data... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { EVALUATION_CHANGE } from 'src/modules/evaluation/actions/EvaluationActions';\nimport { evaluationChangeSaga } from 'src/modules/evaluation/sagas/evaluationChangeSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* evaluationSaga(): SagaIterator {\n yield* takeLatest(EVALUATION_CHANGE.is, evaluationChangeSaga);\n}\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getEvaluationFormData = createSelector([\n getProjectLazy,\n], (project) => project.data.evaluation);\n","import { EvaluationResults, getEvaluationResults as API } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getEvaluationResults = createSelector([\n getProjectLazy,\n], (project): EvaluationResults => API(project.data));\n","import './EvaluationFormView.scss';\nimport { ProjectEvaluation, CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport { FormController } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { DECIMAL_PLACES, MAX_TRILLION } from 'src/modules/common/constants/decimal';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly form: FormController;\n readonly currency: CurrencyCode;\n};\n\nexport const EvaluationFormView = ({ form, currency }: Props): React.ReactElement => (\n
\n \n )}\n >\n
\n }\n endAdornment={}\n helperText={(\n \n )}\n />\n
\n\n
\n \n )}\n endAdornment={(\n }}\n />\n )}\n />\n
\n
\n\n }>\n
\n }\n rows={6}\n maxLength={280}\n showHint={true}\n />\n
\n
\n
\n);\n","import './EvaluationResultsCharts.scss';\nimport { CurrencyCode, EvaluationResults } from '@belimo-retrofit-portal/logic';\nimport { Information } from '@carbon/icons-react';\nimport { Tooltip } from '@carbon/react';\nimport { Decimal } from 'decimal.js-light';\nimport { identity } from 'fp-ts/lib/function';\nimport React, { useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { FormattedBEP } from 'src/modules/common/components/FormattedBEP';\nimport { FormattedMathMessage } from 'src/modules/common/components/FormattedMathMessage';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\nimport { SavingTileAmount } from 'src/modules/common/components/SavingTileAmount';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { EvaluationResultsChartsGraphBEP } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphBEP';\nimport { EvaluationResultsChartsGraphCO2 } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphCO2';\nimport { EvaluationResultsChartsGraphIRR } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphIRR';\nimport { EvaluationResultsChartsGraphROI } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphROI';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\n\ntype Props = {\n readonly results: EvaluationResults;\n readonly currency: CurrencyCode;\n};\n\nexport const EvaluationResultsCharts = ({ results, currency }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const project = useSelector(getProjectDetails);\n const hvacAssessmentFormData = useParametricSelector(getHvacAssesmentFormData, project);\n\n const isOnlyOneAreaEnabled = useMemo(() => {\n const { heating, cooling, ventilation } = hvacAssessmentFormData;\n\n return [heating.enabled, cooling.enabled, ventilation.enabled].filter(Boolean).length === 1;\n }, [hvacAssessmentFormData]);\n\n const areCostExclSavingsNegative = (results.savings.costExclCO2?.overall &&\n !results.savings.costExclCO2?.overall?.isPositive()) ||\n false;\n const isInvestmentEmpty = Boolean(\n results.savings.costExclCO2?.overall?.isPositive() &&\n (project.data.evaluation.investmentAmount === null ||\n project.data.evaluation.investmentAmount?.isZero()),\n );\n\n return (\n
\n
\n \n )}\n subtitle={}\n >\n \n\n
\n
\n
\n \n )}\n amount={}\n unit={(\n \n )}\n />\n
\n\n
\n \n )}\n amount={}\n unit={(\n \n )}\n />\n
\n
\n
\n \n\n \n )}\n subtitle={(\n \n )}\n >\n \n )}\n />\n \n
\n\n
\n \n \n\n }\n >\n \n \n
\n )}\n subtitle={(\n \n )}\n >\n \n\n
\n \n \n \n \n \n \n \n \n\n \n {!areCostExclSavingsNegative && results.charts.ROI !== null && results.charts.ROI.map((it) => (\n \n {it.year.toString().padStart(2, '0')}\n \n\n \n \n \n\n \n \n \n \n ))}\n {(areCostExclSavingsNegative || results.charts.ROI === null) && NO_AREA_DATA.map((it) => (\n \n {it.year.toString().padStart(2, '0')}\n \n\n \n \n \n\n \n \n \n \n ))}\n \n
\n \n \n \n \n \n
\n
\n \n\n \n \n\n }\n >\n \n \n
\n )}\n subtitle={(\n \n )}\n >\n \n\n
\n \n \n \n \n \n \n \n \n\n \n {!areCostExclSavingsNegative && results.charts.IRR !== null && results.charts.IRR.map((it) => (\n \n {it.year.toString().padStart(2, '0')}\n \n\n \n \n \n\n \n \n \n \n ))}\n {(areCostExclSavingsNegative || results.charts.IRR === null) && NO_AREA_DATA.map((it) => (\n \n {it.year.toString().padStart(2, '0')}\n \n\n \n \n \n\n \n \n \n \n ))}\n \n
\n \n \n \n \n \n
\n
\n \n \n \n );\n};\n\nconst NO_AREA_DATA = [\n new Decimal(1),\n new Decimal(2),\n new Decimal(3),\n new Decimal(4),\n new Decimal(5),\n new Decimal(10),\n new Decimal(20),\n].map((year) => ({\n year: year,\n exclCO2: null,\n inclCO2: null,\n}));\n","import './EvaluationResultsChartsGraph.scss';\nimport { EvaluationResultsChartsSeria } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { ReadonlyRecord } from 'fp-ts/ReadonlyRecord';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent';\nimport { TooltipProps } from 'recharts/types/component/Tooltip';\nimport { FormattedNumber } from 'src/modules/common/components/FormattedNumber';\nimport { EvaluationResultsChartsXTick } from 'src/modules/evaluation/views/EvaluationResultsChartsXTick';\n\ntype Props = {\n readonly data: EvaluationResultsChartsSeria | null;\n readonly labels: ReadonlyRecord<'year' | 'exclCO2' | 'inclCO2', React.ReactNode>;\n readonly xAxisLabel?: string;\n readonly yAxisLabel?: string;\n readonly interactive: boolean;\n readonly areCostSavingsExcludedNegative: boolean;\n readonly isInvestmentEmpty: boolean;\n};\n\nexport const EvaluationResultsChartsGraphArea = memo((\n { data, labels, xAxisLabel, yAxisLabel, interactive, areCostSavingsExcludedNegative, isInvestmentEmpty }: Props,\n) => {\n const chartData = useMemo(() => {\n if (data === null) {\n return [];\n }\n\n return data.map((point) => ({\n year: point.year.toNumber(),\n exclCO2: point.value.exclCO2.mul(100).toDecimalPlaces(1).toNumber(),\n inclCO2: point.value.inclCO2.mul(100).toDecimalPlaces(1).toNumber(),\n }));\n }, [data]);\n\n const [isChartReady, setChartReady] = useState(chartData.length === 0);\n\n const yStep = useMemo(() => (data ? getYStep(data) : 20), [data]);\n const yDomain = useMemo(() => {\n if (data === null) {\n return [-80, +20];\n }\n\n const roundMin = (v: Decimal): Decimal => v.div(yStep).sub(0.25).toDecimalPlaces(0, Decimal.ROUND_FLOOR).mul(yStep);\n const roundMax = (v: Decimal): Decimal => v.div(yStep).add(0.25).toDecimalPlaces(0, Decimal.ROUND_CEIL).mul(yStep);\n\n const domainMin = Math.min(\n Number.POSITIVE_INFINITY,\n ...data.map((it) => roundMin(it.value.inclCO2.mul(100)).toNumber()),\n ...data.map((it) => roundMin(it.value.exclCO2.mul(100)).toNumber()),\n );\n const domainMax = Math.max(\n Number.NEGATIVE_INFINITY,\n ...data.map((it) => roundMax(it.value.inclCO2.mul(100)).toNumber()),\n ...data.map((it) => roundMax(it.value.exclCO2.mul(100)).toNumber()),\n );\n\n return [\n domainMin,\n domainMax,\n ];\n }, [data, yStep]);\n\n const yTicks = useMemo(() => {\n const [min, max] = yDomain;\n return Array.from({ length: (max - min) / yStep + 1 }, (_, i) => min + i * yStep);\n }, [yStep, yDomain]);\n\n const renderTooltip = useCallback((props: TooltipProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { label } = props;\n\n const value = chartData.find((it) => it.year === label);\n if (value === undefined) {\n return null;\n }\n\n return (\n
\n
\n \n
\n {labels.year}\n
\n
\n \n
\n
\n
\n \n
\n {labels.exclCO2}\n
\n
\n \n
\n
\n
\n \n
\n {labels.inclCO2}\n
\n
\n \n
\n
\n
\n );\n }, [chartData, labels]);\n\n const renderLegend = useMemo(() => (\n
\n
\n
\n \n\n
\n {labels.exclCO2}\n
\n
\n
\n \n\n
\n {labels.inclCO2}\n
\n
\n
\n
\n ), [labels]);\n\n const renderNotification = useMemo(() => {\n if (areCostSavingsExcludedNegative) {\n return (\n
\n \n
\n );\n }\n\n if (isInvestmentEmpty) {\n return (\n
\n \n
\n );\n }\n\n return null;\n }, [areCostSavingsExcludedNegative, isInvestmentEmpty]);\n\n return (\n
\n
\n {renderNotification}\n\n \n \n \n\n it.year)}\n tick={EvaluationResultsChartsXTick}\n fontSize={12}\n />\n\n \n\n {interactive && (\n \n )}\n\n setChartReady(true)}\n dataKey=\"exclCO2\"\n fill={COLORS.exclCO2}\n fillOpacity={0.25}\n stroke={COLORS.exclCO2}\n strokeWidth={2}\n strokeOpacity={1}\n baseValue=\"dataMin\"\n dot={{\n fill: COLORS.exclCO2,\n fillOpacity: 1,\n stroke: COLORS.exclCO2,\n strokeWidth: 4,\n }}\n activeDot={{\n fill: COLORS.exclCO2,\n fillOpacity: 1,\n stroke: COLORS.exclCO2,\n strokeWidth: 5,\n }}\n />\n\n setChartReady(true)}\n dataKey=\"inclCO2\"\n fill={COLORS.inclCO2}\n fillOpacity={0.25}\n stroke={COLORS.inclCO2}\n strokeWidth={2}\n strokeOpacity={1}\n baseValue=\"dataMin\"\n dot={{\n fill: COLORS.inclCO2,\n fillOpacity: 1,\n stroke: COLORS.inclCO2,\n strokeWidth: 4,\n }}\n activeDot={{\n fill: COLORS.inclCO2,\n fillOpacity: 1,\n stroke: COLORS.inclCO2,\n strokeWidth: 5,\n }}\n />\n \n \n\n {renderLegend}\n\n
\n

\n {yAxisLabel}\n

\n
\n\n
\n

\n {xAxisLabel}\n

\n
\n
\n
\n );\n});\n\nconst COLORS = {\n exclCO2: '#375F80',\n inclCO2: '#632E5B',\n};\n\nfunction getYStep(data: EvaluationResultsChartsSeria): number {\n const min = Math.min(\n Number.POSITIVE_INFINITY,\n ...data.map((it) => it.value.inclCO2.mul(100).toNumber()),\n ...data.map((it) => it.value.exclCO2.mul(100).toNumber()),\n );\n const max = Math.max(\n Number.NEGATIVE_INFINITY,\n ...data.map((it) => it.value.inclCO2.mul(100).toNumber()),\n ...data.map((it) => it.value.exclCO2.mul(100).toNumber()),\n );\n\n const diff = max - min;\n const pow = Math.max(1, 10 ** (Math.ceil(Math.log10(diff)) - 1));\n\n for (const x of [1, 2, 5]) {\n if (diff <= x * pow) {\n return x * pow * 0.1;\n }\n }\n\n return pow;\n}\n\nfunction formatYTick(value: unknown): string {\n if (typeof value !== 'number') {\n return '';\n }\n\n if (value >= 1_000_000_000) {\n return `${(value / 1_000_000).toFixed(0)}G`;\n }\n if (value >= 1_000_000) {\n return `${(value / 1_000_000).toFixed(0)}M`;\n }\n if (value >= 1_000) {\n return `${(value / 1_000).toFixed(0)}k`;\n }\n\n return `${value.toFixed(0)}`;\n}\n","import './EvaluationResultsChartsGraph.scss';\nimport { EvaluationResultsChartsBEP } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CartesianGrid, Label, Legend, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\nimport { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent';\nimport { TooltipProps } from 'recharts/types/component/Tooltip';\nimport { FormattedNumber } from 'src/modules/common/components/FormattedNumber';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { EvaluationResultsChartsXTick } from 'src/modules/evaluation/views/EvaluationResultsChartsXTick';\n\ntype Props = {\n readonly data: EvaluationResultsChartsBEP | null;\n readonly xAxisLabel?: string;\n readonly yAxisLabel?: string;\n readonly interactive: boolean;\n readonly areCostSavingsExcludedNegative: boolean;\n readonly isInvestmentEmpty: boolean;\n};\n\nexport const EvaluationResultsChartsGraphBEP = memo(({\n data,\n xAxisLabel,\n yAxisLabel,\n interactive,\n areCostSavingsExcludedNegative,\n isInvestmentEmpty,\n}: Props) => {\n const chartData = useMemo(() => {\n if (data === null) {\n return [];\n }\n\n return data.values.map((point) => ({\n year: point.year.toNumber(),\n exclCO2: point.value.exclCO2.div(DIVIDER).toNumber(),\n inclCO2: point.value.inclCO2.div(DIVIDER).toNumber(),\n investment: data.investment.div(DIVIDER).toNumber(),\n }));\n }, [data]);\n\n const [isChartReady, setChartReady] = useState(chartData.length === 0);\n\n const xDomain = useMemo(() => {\n if (data === null) {\n return [0, 7];\n }\n\n return [\n 0,\n data.values[data.values.length - 1].year\n .toDecimalPlaces(0, Decimal.ROUND_UP).toNumber(),\n ];\n }, [data]);\n\n const xTicks = useMemo(() => {\n const [min, max] = xDomain;\n return Array.from({ length: (max - min) + 1 }, (_, i) => min + i);\n }, [xDomain]);\n\n const yStep = useMemo(() => (data ? getYStep(data) : 50), [data]);\n\n const yDomain = useMemo(() => {\n if (data === null) {\n return [0, 350];\n }\n\n const roundMax = (v: Decimal): Decimal => v.div(yStep).add(0.25).toDecimalPlaces(0, Decimal.ROUND_CEIL).mul(yStep);\n\n const domainMax = Math.max(\n roundMax(data.investment.div(DIVIDER)).toNumber(),\n ...data.values.map((it) => roundMax(it.value.inclCO2.div(DIVIDER)).toNumber()),\n ...data.values.map((it) => roundMax(it.value.exclCO2.div(DIVIDER)).toNumber()),\n );\n\n return [\n 0,\n Math.max(yStep, domainMax),\n ];\n }, [data, yStep]);\n\n const yTicks = useMemo(() => {\n const [min, max] = yDomain;\n return Array.from({ length: (max - min) / yStep + 1 }, (_, i) => min + i * yStep);\n }, [yStep, yDomain]);\n\n const renderTooltip = useCallback((props: TooltipProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { label } = props;\n\n const value = chartData.find((it) => it.year === label);\n if (value === undefined) {\n return null;\n }\n\n return (\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n );\n }, [chartData]);\n\n const renderLegend = useMemo(() => (\n
\n
\n
\n \n\n
\n \n
\n
\n
\n \n\n
\n \n
\n
\n
\n \n\n
\n \n
\n
\n
\n
\n ), []);\n\n const renderNotification = useMemo(() => {\n if (areCostSavingsExcludedNegative) {\n return (\n
\n \n
\n );\n }\n\n if (isInvestmentEmpty) {\n return (\n
\n \n
\n );\n }\n\n return null;\n }, [areCostSavingsExcludedNegative, isInvestmentEmpty]);\n\n return (\n
\n
\n {renderNotification}\n\n \n \n \n\n \n\n \n\n {interactive && (\n \n )}\n\n setChartReady(true)}\n dataKey=\"investment\"\n stroke={COLORS.investment}\n strokeWidth={3}\n strokeOpacity={1}\n dot={false}\n activeDot={false}\n />\n\n setChartReady(true)}\n dataKey=\"exclCO2\"\n stroke={COLORS.exclCO2}\n strokeWidth={3}\n strokeOpacity={1}\n dot={false}\n activeDot={{\n fill: COLORS.exclCO2,\n fillOpacity: 1,\n stroke: COLORS.exclCO2,\n strokeWidth: 5,\n }}\n />\n\n setChartReady(true)}\n dataKey=\"inclCO2\"\n stroke={COLORS.inclCO2}\n strokeWidth={3}\n strokeOpacity={1}\n dot={false}\n activeDot={{\n fill: COLORS.inclCO2,\n fillOpacity: 1,\n stroke: COLORS.inclCO2,\n strokeWidth: 5,\n }}\n />\n \n \n\n {renderLegend}\n\n
\n

\n {yAxisLabel}\n

\n
\n\n
\n

\n {xAxisLabel}\n

\n
\n
\n
\n );\n});\n\nconst COLORS = {\n investment: '#437FA3',\n exclCO2: '#BC7DB3',\n inclCO2: '#BDD2DF',\n};\n\nfunction getYStep(data: EvaluationResultsChartsBEP): number {\n const min = Math.min(\n data.investment.div(DIVIDER).toDecimalPlaces(0).toNumber(),\n ...data.values.map((it) => it.value.inclCO2.div(DIVIDER).toDecimalPlaces(0).toNumber()),\n ...data.values.map((it) => it.value.exclCO2.div(DIVIDER).toDecimalPlaces(0).toNumber()),\n );\n const max = Math.max(\n data.investment.div(DIVIDER).toDecimalPlaces(0).toNumber(),\n ...data.values.map((it) => it.value.inclCO2.div(DIVIDER).toDecimalPlaces(0).toNumber()),\n ...data.values.map((it) => it.value.exclCO2.div(DIVIDER).toDecimalPlaces(0).toNumber()),\n );\n\n const diff = max - min;\n const pow = Math.max(2, 10 ** (Math.ceil(Math.log10(diff)) - 1));\n\n for (const x of [1, 2, 5]) {\n if (diff <= x * pow) {\n return x * pow * 0.1;\n }\n }\n\n return pow;\n}\n\nconst DIVIDER = 1_000;\n\nfunction formatYTick(value: unknown): string {\n if (typeof value !== 'number') {\n return '';\n }\n\n return `${value.toFixed(0)}`;\n}\n","import './EvaluationResultsChartsGraph.scss';\nimport { EvaluationResultsChartsCO2, HvacArea } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { literal } from 'io-ts/es6/Guard';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Bar, BarChart, CartesianGrid, Label, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\nimport { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent';\nimport { TooltipProps } from 'recharts/types/component/Tooltip';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { EvaluationResultsChartsXTick } from 'src/modules/evaluation/views/EvaluationResultsChartsXTick';\nimport { isNotNull } from 'src/utils/guard';\n\ntype Props = {\n readonly data: EvaluationResultsChartsCO2 | null;\n readonly interactive: boolean;\n readonly shouldDisplayOverallData: boolean;\n readonly yAxisLabel: React.ReactNode;\n};\n\nexport const EvaluationResultsChartsGraphCO2 = memo((\n { data, interactive, shouldDisplayOverallData, yAxisLabel }: Props,\n) => {\n const intl = useIntl();\n\n const areaNames = useMemo(() => ({\n overall: intl.formatMessage({ id: 'evaluation/charts/CO2/values/overall' }),\n heating: intl.formatMessage({ id: 'evaluation/hvacArea/heating' }),\n cooling: intl.formatMessage({ id: 'evaluation/hvacArea/cooling' }),\n ventilation: intl.formatMessage({ id: 'evaluation/hvacArea/ventilation' }),\n }), [intl]);\n\n const chartData = useMemo(() => {\n if (data === null) {\n return [];\n }\n\n if (!shouldDisplayOverallData) {\n return HVAC_AREAS.map((area) => {\n const values = data.perArea[area];\n if (values === null) {\n return null;\n }\n\n return {\n area: area,\n actual: values.actual.div(1_000_000).toNumber(),\n future: values.future.div(1_000_000).toNumber(),\n };\n }).filter(isNotNull);\n }\n\n return [\n ...HVAC_AREAS.map((area) => {\n const values = data.perArea[area];\n if (values === null) {\n return null;\n }\n\n return {\n area: area,\n actual: values.actual.div(1_000_000).toNumber(),\n future: values.future.div(1_000_000).toNumber(),\n };\n }).filter(isNotNull),\n {\n area: 'overall' as const,\n actual: data.overall.actual.div(1_000_000).toNumber(),\n future: data.overall.future.div(1_000_000).toNumber(),\n },\n ];\n }, [data, shouldDisplayOverallData]);\n\n const [isChartReady, setChartReady] = useState(chartData.length === 0);\n\n const renderTooltip = useCallback((props: TooltipProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { label } = props;\n\n const value = chartData.find((it) => it.area === label);\n if (value === undefined) {\n return null;\n }\n\n return (\n
\n
\n \n
\n {HVAC_NAMES[value.area]}\n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n );\n }, [chartData]);\n\n const renderLegend = useMemo(() => (\n
\n
\n
\n \n\n
\n \n
\n
\n
\n \n\n
\n \n
\n
\n
\n
\n ), []);\n\n return (\n
\n
\n \n \n \n\n {interactive && (\n \n )}\n\n setChartReady(true)}\n dataKey=\"actual\"\n fill={COLORS.actual}\n fillOpacity={1}\n barSize={shouldDisplayOverallData ? 20 : 40}\n />\n setChartReady(true)}\n dataKey=\"future\"\n fill={COLORS.future}\n fillOpacity={1}\n barSize={shouldDisplayOverallData ? 20 : 40}\n />\n\n (\n SERIA_KEYS.is(value)\n ? areaNames[value]\n : ''\n )}\n tick={EvaluationResultsChartsXTick}\n />\n\n \n \n \n\n {renderLegend}\n\n
\n

\n {yAxisLabel}\n

\n
\n
\n
\n );\n});\n\nconst COLORS = {\n actual: '#BDD2DF',\n future: '#632E5B',\n};\n\nconst HVAC_AREAS = [\n HvacArea.HEATING,\n HvacArea.COOLING,\n HvacArea.VENTILATION,\n];\n\nconst HVAC_NAMES = {\n overall: ,\n heating: ,\n cooling: ,\n ventilation: ,\n};\n\nconst SERIA_KEYS = literal(\n 'overall',\n 'heating',\n 'cooling',\n 'ventilation',\n);\n","import { EvaluationResultsChartsSeria } from '@belimo-retrofit-portal/logic';\nimport React, { useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { EvaluationResultsChartsGraphArea } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphArea';\n\ntype Props = {\n readonly seria: EvaluationResultsChartsSeria | null;\n readonly interactive: boolean;\n readonly areCostSavingsExcludedNegative: boolean;\n readonly isInvestmentEmpty: boolean;\n};\n\nexport const EvaluationResultsChartsGraphIRR = (\n { seria, interactive, areCostSavingsExcludedNegative, isInvestmentEmpty }: Props,\n): React.ReactElement => {\n const intl = useIntl();\n\n const shouldHideData = useMemo(\n () => areCostSavingsExcludedNegative ||\n isInvestmentEmpty,\n [areCostSavingsExcludedNegative, isInvestmentEmpty],\n );\n\n return (\n \n );\n};\n\nconst LABELS = {\n year: (\n \n ),\n exclCO2: (\n \n ),\n inclCO2: (\n \n ),\n};\n","import { EvaluationResultsChartsSeria } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { EvaluationResultsChartsGraphArea } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphArea';\n\ntype Props = {\n readonly seria: EvaluationResultsChartsSeria | null;\n readonly interactive: boolean;\n readonly areCostSavingsExcludedNegative: boolean;\n readonly isInvestmentEmpty: boolean;\n};\n\nexport const EvaluationResultsChartsGraphROI = (\n { seria, interactive, areCostSavingsExcludedNegative, isInvestmentEmpty }: Props,\n): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n );\n};\n\nconst LABELS = {\n year: (\n \n ),\n exclCO2: (\n \n ),\n inclCO2: (\n \n ),\n};\n","import React from 'react';\nimport { TickProps } from 'src/modules/evaluation/types/graph';\n\nexport const EvaluationResultsChartsXTick =\n ({\n fontSize,\n orientation,\n width,\n height,\n stroke,\n x,\n y,\n className,\n fill,\n payload,\n textAnchor,\n tickFormatter,\n }: TickProps):React.ReactElement => (\n \n \n\n \n {tickFormatter ? tickFormatter(payload.value) : payload.value}\n \n \n );\n","import './EvaluationResultsSavings.scss';\nimport { CurrencyCode, EvaluationResults, HvacArea } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\nimport { SavingsAmount } from 'src/modules/common/components/SavingsAmount';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { SavingTileCard } from 'src/modules/common/components/SavingTileCard';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { ChartUpIcon } from 'src/modules/common/icons/ChartUpIcon';\nimport { CloudIcon } from 'src/modules/common/icons/CloudIcon';\nimport { CurrencyExchangeIcon } from 'src/modules/common/icons/CurrencyExchangeIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\n\ntype Props = {\n readonly results: EvaluationResults;\n readonly currency: CurrencyCode;\n};\n\nexport const EvaluationResultsSavings = ({ results, currency }: Props): React.ReactElement => (\n \n )}\n >\n
\n \n )}\n icon={}\n amountTitle={(\n \n )}\n amount={(\n \n )}\n unit={}\n small={false}\n >\n {HVAC_AREAS.map((area) => (\n
\n
\n {HVAC_NAMES[area]}\n
\n
\n \n \n \n \n \n \n
\n
\n ))}\n \n\n \n )}\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={null}\n small={false}\n >\n {HVAC_AREAS.map((area) => (\n
\n
\n {HVAC_NAMES[area]}\n
\n
\n \n
\n
\n ))}\n \n\n \n )}\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={null}\n small={false}\n >\n {HVAC_AREAS.map((area) => (\n
\n
\n {HVAC_NAMES[area]}\n
\n
\n \n
\n
\n ))}\n \n
\n\n
\n \n )}\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={(\n }}\n />\n )}\n small={false}\n >\n
\n \n
\n

\n \n

\n \n\n \n )}\n icon={}\n amountTitle={(\n \n )}\n amount={(\n \n )}\n unit={}\n small={false}\n >\n {HVAC_AREAS.map((area) => (\n
\n
\n {HVAC_NAMES[area]}\n
\n
\n \n
\n
\n \n
\n
\n ))}\n \n
\n
\n);\n\nconst HVAC_AREAS = [\n HvacArea.HEATING,\n HvacArea.COOLING,\n HvacArea.VENTILATION,\n];\n\nconst HVAC_NAMES = {\n heating: ,\n cooling: ,\n ventilation: ,\n};\n","import './EvaluationScreen.scss';\nimport { CurrencyCode, EvaluationResults, ProjectEvaluation } from '@belimo-retrofit-portal/logic';\nimport { useForm } from '@form-ts/react';\nimport React, { useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { BottomNavigationHelper } from 'src/modules/common/components/BottomNavigationHelper';\nimport { EvaluationFormView } from 'src/modules/evaluation/views/EvaluationFormView';\nimport { EvaluationResultsCharts } from 'src/modules/evaluation/views/EvaluationResultsCharts';\nimport { EvaluationResultsSavings } from 'src/modules/evaluation/views/EvaluationResultsSavings';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly projectId: string;\n readonly formData: ProjectEvaluation;\n readonly onChange: (formData: ProjectEvaluation) => void;\n readonly results: EvaluationResults;\n readonly currency: CurrencyCode;\n};\n\nexport const EvaluationScreen = ({ projectId, results, formData, onChange, currency }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const projectSchemaUrl = `/project/${encodeURIComponent(projectId)}/schema`;\n const projectReportUrl = `/project/${encodeURIComponent(projectId)}/report`;\n\n const form = useForm('project.evaluation', {\n reinitialize: false,\n initialValues: formData,\n });\n\n useEffect(() => form.subscribe((prevState) => {\n const nextState = form.currentState;\n if (prevState.values !== nextState.values) {\n onChange(nextState.values);\n }\n }), [form, onChange]);\n\n return (\n
\n
\n \n\n \n\n \n\n \n
\n
\n );\n};\n","import { FormController } from '@form-ts/core';\nimport { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { createActions } from 'src/utils/createActions';\n\nexport const FEEDBACK_SEND = createActions, void>('FEEDBACK_SEND');\n","import { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\n\nexport const FEEDBACK_FORM_DEFAULT_DATA: FeedbackFormData = {\n rating: null,\n comment: '',\n contact: false,\n};\n","import { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\n\nexport const FEEDBACK_FORM_SCHEMA: FormRule = R.struct({\n rating: R.required(),\n comment: R.maxLength(500),\n contact: R.pass(),\n});\n","import { SagaIterator } from 'redux-saga';\nimport { FEEDBACK_SEND } from 'src/modules/feedback/actions/FeedbackActions';\nimport { feedbackSendSaga } from 'src/modules/feedback/sagas/feedbackSendSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* feedbackSaga(): SagaIterator {\n yield* takeLatest(FEEDBACK_SEND.isRequest, feedbackSendSaga);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { FEEDBACK_SEND } from 'src/modules/feedback/actions/FeedbackActions';\nimport { FEEDBACK_FORM_SCHEMA } from 'src/modules/feedback/constants/schema';\nimport { sendFeedback } from 'src/modules/feedback/sagas/utils/sendFeedback';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* feedbackSendSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const form = action.data;\n const values = form.values.get(form.currentState);\n\n const valid = yield* call(formValidate, form, FEEDBACK_FORM_SCHEMA);\n if (!valid) {\n return;\n }\n\n try {\n yield* call(logDebug, 'Sending feedback...');\n yield* put(FEEDBACK_SEND.pending());\n yield* call(formSubmitStart, form);\n\n yield* call(sendFeedback, values);\n yield* call(formSubmitSuccess, form);\n\n yield* call(logDebug, 'Sending feedback... done', values);\n yield* put(FEEDBACK_SEND.success());\n } catch (error) {\n const wrapped = new RuntimeError('Could not send feedback', { values }, NativeError.wrap(error));\n\n yield* call(logError, 'Sending feedback... error', error);\n yield* put(FEEDBACK_SEND.failure(wrapped));\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(formSubmitFailure, form, {});\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\nimport { call } from 'typed-redux-saga';\n\nexport function* sendFeedback(formData: FeedbackFormData): SagaIterator {\n try {\n yield* call(makeRestRequest, 'POST', '/feedback', formData);\n } catch (error) {\n throw new RuntimeError('Could not send feedback', { formData }, NativeError.wrap(error));\n }\n}\n","import './FeedbackButton.scss';\nimport React, { useCallback, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { MailIcon } from 'src/modules/common/icons/MailIcon';\nimport { FeedbackModal } from 'src/modules/feedback/views/FeedbackModal';\n\nexport const FeedbackButton = (): React.ReactElement => {\n const [open, setOpen] = useState(false);\n const handleOpen = useCallback(() => setOpen(true), []);\n const handleClose = useCallback(() => setOpen(false), []);\n\n return (\n <>\n
\n \n
\n \n
\n\n \n \n
\n\n \n \n );\n};\n","import './FeedbackForm.scss';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { RatingField } from 'src/modules/form/components/RatingField';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly form: FormController;\n};\n\nexport const FeedbackForm = ({ form }: Props): React.ReactElement => {\n const intl = useIntl();\n const submitting = useFormWatch(form, form.submitting.get);\n\n return (\n \n
\n
\n \n
\n\n \n
\n\n \n\n \n \n );\n};\n","import './FeedbackModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { FEEDBACK_SEND } from 'src/modules/feedback/actions/FeedbackActions';\nimport { FEEDBACK_FORM_DEFAULT_DATA } from 'src/modules/feedback/constants/formData';\nimport { FEEDBACK_FORM_SCHEMA } from 'src/modules/feedback/constants/schema';\nimport { FeedbackFormData } from 'src/modules/feedback/types/FeedbackFormData';\nimport { FeedbackForm } from 'src/modules/feedback/views/FeedbackForm';\nimport { FeedbackSent } from 'src/modules/feedback/views/FeedbackSent';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly open: boolean;\n readonly onClose: () => void;\n};\n\nexport const FeedbackModal = ({ onClose, open }: Props): React.ReactElement => {\n const intl = useIntl();\n const form = useForm('feedback.form', {\n reinitialize: false,\n initialValues: FEEDBACK_FORM_DEFAULT_DATA,\n });\n\n useFormValidator(form, FEEDBACK_FORM_SCHEMA);\n\n const submitting = useFormWatch(form, form.submitting.get);\n\n const submitForm = useBoundAction(FEEDBACK_SEND.request, form);\n const submitSucceeded = useFormWatch(form, form.submitSucceded.get);\n\n return (\n \n }\n title={}\n />\n\n \n
\n
\n \n
\n\n
\n {submitSucceeded\n ? \n : }\n
\n
\n
\n\n \n \n {submitSucceeded\n ? \n : }\n \n\n (\n
\n \n
\n )}\n >\n \n \n
\n \n );\n};\n","import './FeedbackSent.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport const FeedbackSent = (): React.ReactElement => (\n
\n
\n \n
\n
\n);\n","import './AssetField.scss';\nimport { Close } from '@carbon/icons-react';\nimport { IconButton } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { AssetUpload } from 'src/modules/asset/views/AssetUpload';\nimport { AssetImage } from 'src/modules/common/components/AssetImage';\nimport { FILE_MAX_SIZE_FILED_MB } from 'src/modules/common/constants/fileField';\nimport { Asset } from 'src/modules/common/types/Asset';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly theme?: 'gray' | 'white';\n readonly field: FieldPath;\n};\n\nexport const AssetField: (props: Props) => React.ReactElement = ({ theme = 'gray', field }) => {\n const intl = useIntl();\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((asset: Asset) => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n field.value.set(asset),\n ));\n }, [field]);\n\n const handleReset = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n field.value.set(null),\n ));\n }, [field]);\n\n const handleTouch = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n if (value !== null) {\n return (\n
\n \n\n
\n \n \n \n
\n
\n );\n }\n\n return (\n
\n
\n \n

\n \n

\n \n
\n\n

\n \n

\n
\n );\n};\n","import './AutocompleteField.scss';\nimport { ComboBox, OnChangeData } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { ReactElement, ReactNode, useCallback, useMemo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { AutocompleteOption } from 'src/modules/common/types/AutocompleteOption';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n readonly options: Array>;\n readonly label?: string;\n readonly outlined?: boolean;\n readonly size?: 'sm' | 'md' | 'lg';\n readonly theme?: 'gray' | 'white';\n readonly direction?: 'top' | 'bottom';\n readonly titleText: ReactNode;\n readonly required?: boolean;\n readonly itemToString?: (item: AutocompleteOption | null) => string;\n readonly itemToElement: (item: TValue) => React.ReactNode;\n readonly renderError?: (error: FormError) => React.ReactNode;\n};\n\nexport const AutocompleteField = ({\n wrapperClass,\n field,\n options,\n label,\n size,\n theme = 'gray',\n outlined,\n direction,\n titleText,\n required,\n itemToString,\n itemToElement,\n renderError = renderErrorDefault,\n ...rest\n}: Props): React.ReactElement => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback(({ selectedItem }: OnChangeData | undefined>) => {\n if (!selectedItem?.value) {\n return;\n }\n\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(selectedItem.value),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n const itemToElementHandler = useCallback(\n (option: AutocompleteOption) => itemToElement(option.value),\n [itemToElement],\n );\n\n const selectedItem = React.useMemo(() => {\n const found = options.find((option) => option.value === value);\n return found ?? null;\n }, [value, options]);\n\n return (\n >\n {...rest}\n className={clsx(\n 'bp-autocomplete-field',\n wrapperClass,\n `bp-autocomplete-field--${size}`,\n `bp-autocomplete-field--${theme}`,\n {\n 'bp-autocomplete-field--outlined': outlined,\n 'bp-autocomplete-field--invalid': invalid,\n 'bp-autocomplete-field--required': required,\n },\n )}\n direction={direction}\n titleText={titleText}\n id={`${field.form.name}.${field.path}`}\n onChange={handleChange}\n onBlur={handleBlur}\n invalid={invalid}\n invalidText={error && invalid ? renderError(error) : null}\n items={options}\n itemToString={itemToString}\n itemToElement={itemToElementHandler}\n selectedItem={selectedItem}\n />\n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import './CheckboxField.scss';\nimport { Checkbox, CheckboxProps } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nCheckboxProps,\n'id' |\n'name' |\n'checked' |\n'onChange' |\n'onBlur' |\n'data-field-invalid' |\n'data-field-touched'\n>;\n\ntype Props = BaseProps & {\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n};\n\nexport const CheckboxField: (props: Props) => React.ReactElement = ({\n wrapperClass, field, ...props\n}) => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((event: React.ChangeEvent) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(event.target.checked),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n return (\n \n );\n};\n","import './DateboxField.scss';\nimport './Field.scss';\nimport { DatePicker, DatePickerInput } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { dateFormat } from 'src/modules/common/constants/dateFormat';\nimport { DateIcon } from 'src/modules/common/icons/DateIcon';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly size: 'sm' | 'md' | 'lg';\n readonly label: string;\n readonly field: FieldPath;\n readonly renderError?: (error: FormError) => React.ReactNode;\n};\n\nexport const DateboxField: (props: Props) => React.ReactElement = (\n { size, field, label, renderError = renderErrorDefault },\n) => {\n const intl = useIntl();\n\n const language = useSelector(getLanguage);\n\n const { value, meta, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((newValue: Date[]) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(newValue[0] ? newValue[0] : null),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n return (\n
\n \n \n \n\n
\n \n
\n
\n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import './DecimalField.scss';\nimport './Field.scss';\nimport { TextInput } from '@carbon/react';\nimport { TextInputProps } from '@carbon/react/lib/components/TextInput/TextInput';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { Decimal } from 'decimal.js-light';\nimport { pipe } from 'fp-ts/function';\nimport React, { ReactNode, useCallback, useEffect, useMemo, useState } from 'react';\nimport CurrencyInput, { CurrencyInputOnChangeValues } from 'react-currency-input-field';\nimport { FormattedMessage } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { DECIMAL_PLACES } from 'src/modules/common/constants/decimal';\nimport { getLocale } from 'src/modules/config/selectors/getLocale';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nTextInputProps,\n'className' |\n'id' |\n'name' |\n'invalid' |\n'value' |\n'onChange' |\n'onBlur' |\n'inputMode' |\n'pattern' |\n'allowEmpty'\n>;\n\ntype FieldProps =\n & BaseProps\n & DataProps\n & StyleProps;\n\ntype InputProps =\n & BaseProps\n & ViewProps\n & StyleProps;\n\ntype DataProps = {\n readonly maxValue?: number;\n readonly decimalPlaces?: number;\n readonly decimalScale?: number;\n readonly field: FieldPath;\n};\ntype ViewProps = {\n readonly id: string;\n readonly name: string;\n readonly invalid: boolean;\n readonly error: FormError | undefined;\n readonly value: string;\n};\ntype StyleProps = {\n readonly size: 'sm' | 'md' | 'lg';\n readonly theme?: 'gray' | 'white';\n readonly wrapperClass?: string;\n readonly endAdornment?: ReactNode;\n readonly renderError?: (error: FormError) => React.ReactNode;\n};\n\nexport const DecimalField: (props: FieldProps) => React.ReactElement = ({\n field,\n decimalPlaces = DECIMAL_PLACES,\n decimalScale,\n maxValue,\n ...restProps\n}) => {\n const locale = useSelector(getLocale);\n const intlConfig = useMemo(() => ({ locale }), [locale]);\n\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const [viewValue, setViewValue] = useState(() => value?.toString() ?? '');\n useEffect(() => {\n try {\n if (viewValue.trim()) {\n const parsed = new Decimal(viewValue);\n if (value === null) {\n setViewValue('');\n } else if (!value.equals(parsed)) {\n setViewValue(value.toString());\n }\n } else if (value !== null) {\n setViewValue(value.toString());\n }\n } catch {\n // noop\n }\n }, [value, viewValue]);\n\n const handleChange = useCallback((\n _1: unknown,\n _2: unknown,\n values: CurrencyInputOnChangeValues | undefined,\n ) => {\n if (!values) {\n return;\n }\n\n if (Number(values.float) > (maxValue || Number.MAX_SAFE_INTEGER)) {\n return;\n }\n\n const nextValue = values.float !== null\n ? new Decimal(values.float)\n : null;\n\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(nextValue),\n ));\n\n setViewValue(values.value);\n }, [field, maxValue]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n return (\n 0}\n allowNegativeValue={false}\n disableGroupSeparators={false}\n disableAbbreviations={true}\n formatValueOnBlur={true}\n customInput={DecimalInput}\n intlConfig={intlConfig}\n {...restProps}\n />\n );\n};\n\nconst DecimalInput = React.forwardRef((props: InputProps, ref: React.Ref): React.ReactElement => {\n const {\n error,\n invalid,\n size,\n theme = 'gray',\n disabled,\n wrapperClass,\n endAdornment,\n labelText,\n renderError = renderErrorDefault,\n ...restProps\n } = props;\n\n return (\n
\n \n\n
\n {endAdornment}\n
\n
\n );\n});\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import './DropdownField.scss';\nimport './Field.scss';\nimport { Dropdown } from '@carbon/react';\nimport { DropdownProps, OnChangeData } from '@carbon/react/lib/components/Dropdown/Dropdown';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { ReactElement, useCallback, useMemo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Option = {\n value: T | null;\n label: T | string | null;\n selected: boolean;\n};\n\ntype BaseProps = Omit<\nDropdownProps,\n'className' |\n'id' |\n'onChange' |\n'onBlur' |\n'label' |\n'invalid' |\n'invalidText' |\n'items' |\n'itemToString' |\n'itemToElement' |\n'renderSelectedItem' |\n'selectedItem'\n>;\n\ntype Props = BaseProps & {\n readonly size: 'sm' | 'md' | 'lg';\n readonly theme?: 'gray' | 'white';\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n readonly options: ReadonlyArray;\n readonly label?: string;\n readonly outlined?: boolean;\n readonly itemToString?: (item: TValue | null) => string;\n readonly itemToElement: (item: TValue) => ReactElement;\n readonly renderSelectedItem: (item: TValue) => ReactElement;\n readonly renderError?: (error: FormError) => React.ReactNode;\n};\n\nexport const DropdownField = ({\n size,\n theme = 'gray',\n wrapperClass,\n field,\n options,\n label,\n outlined,\n disabled,\n itemToString,\n itemToElement,\n renderSelectedItem,\n renderError = renderErrorDefault,\n ...rest\n}: Props): React.ReactElement => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const emptyObject = {\n label: '',\n value: null,\n selected: true,\n };\n\n const composedOptions: Array> = useMemo(() => options.map((option) => ({\n label: itemToString ? itemToString(option) : option,\n value: option,\n selected: option === value,\n })), [options, itemToString, value]);\n\n const selectedItem: Option | undefined = useMemo(\n () => composedOptions.find((option) => option.selected),\n [composedOptions],\n );\n\n const handleChange = useCallback((event: OnChangeData>) => {\n const selectedOption = event.selectedItem?.value\n ? event.selectedItem.value\n : null;\n\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(selectedOption),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n const itemToElementHandler = useCallback(\n (option: Option) => (\n option.value ? itemToElement(option.value) : null),\n [itemToElement],\n );\n\n const selectedItemHandler = useCallback(\n (option: Option) => (option.value ? renderSelectedItem(option.value) : null),\n [renderSelectedItem],\n );\n\n return (\n \n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import './FileField.scss';\nimport { Close } from '@carbon/icons-react';\nimport { IconButton } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { FileUpload } from 'src/modules/asset/views/FileUpload';\nimport { BlobImage } from 'src/modules/common/components/BlobImage';\nimport { FILE_MAX_SIZE_FILED_MB } from 'src/modules/common/constants/fileField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly theme?: 'gray' | 'white';\n readonly className?: string;\n readonly field: FieldPath;\n};\n\nexport const FileField: (props: Props) => React.ReactElement = ({ theme = 'gray', className, field }) => {\n const intl = useIntl();\n\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((file: File) => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n field.value.set(file),\n ));\n }, [field]);\n\n const handleReset = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n field.value.set(null),\n ));\n }, [field]);\n\n const handleTouch = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n if (value !== null) {\n return (\n
\n \n\n
\n \n \n \n
\n
\n );\n }\n\n return (\n <>\n
\n \n

\n \n

\n \n
\n\n

\n \n

\n \n );\n};\n","import './Field.scss';\n// @ts-expect-error It works fine, but in the 1.51.1 version TypeScript prints\n// an error Module '\"@carbon/react\"' has no exported member 'PasswordInput'\n// should be resolved soon\nimport { PasswordInput } from '@carbon/react';\nimport { TextInputProps } from '@carbon/react/lib/components/TextInput/TextInput';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nTextInputProps,\n'id' | 'invalid' | 'invalidText' | 'name' | 'value' | 'onChange' | 'onBlur'\n>;\n\ntype Props = BaseProps & {\n readonly size: 'sm' | 'lg' | 'md';\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n readonly renderError?: (error: FormError) => React.ReactNode;\n};\n\nexport const PasswordField: (props: Props) => React.ReactElement = (\n { size, field, wrapperClass, renderError = renderErrorDefault, ...props },\n) => {\n const intl = useIntl();\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((event: React.ChangeEvent) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(event.target.value),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n return (\n
\n \n
\n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import { FieldPath } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Rating } from 'src/modules/common/components/Rating';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly disabled: boolean;\n readonly field: FieldPath;\n};\n\nexport const RatingField: (props: Props) => React.ReactElement = (\n { disabled, field },\n) => {\n const handleChange = useCallback((newRating: number) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(newRating),\n ));\n }, [field]);\n\n return (\n \n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n","import { Search, SearchProps } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nSearchProps,\n'id' | 'value'\n>;\n\ntype Props = BaseProps & {\n readonly size: 'sm' | 'md' | 'lg';\n readonly field: FieldPath;\n};\n\nexport const SearchField: (props: Props) => React.ReactElement = ({ size, field, ...props }) => {\n const { error, meta, value } = useFormField(field);\n\n const { onChange, onBlur } = props;\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((event: { target: HTMLInputElement; type: 'change' }) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(event.target.value),\n ));\n onChange?.(event);\n }, [field, onChange]);\n\n const handleBlur = useCallback((event: React.FocusEvent) => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n onBlur?.(event);\n }, [field, onBlur]);\n\n return (\n \n );\n};\n","import './Field.scss';\nimport './TextAreaField.scss';\nimport { TextArea as CarbonTextArea } from '@carbon/react';\nimport { TextAreaProps } from '@carbon/react/lib/components/TextArea/TextArea';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nTextAreaProps,\n'id' | 'invalid' | 'invalidText' | 'helperText' | 'name' | 'value' | 'onChange'\n| 'onBlur' | 'maxCount' | 'maxLength'\n>;\n\ntype Props = BaseProps & {\n readonly theme?: 'gray' | 'white';\n readonly outlined?: boolean;\n readonly maxLength?: number;\n readonly showHint?: boolean;\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n readonly onBlur?: () => void;\n readonly renderError?: (error: FormError) => React.ReactNode;\n readonly renderHint?: () => React.ReactNode;\n};\n\nexport const TextAreaField: (props: Props) => React.ReactElement = (\n {\n theme = 'gray',\n outlined = false,\n maxLength,\n showHint,\n field,\n wrapperClass,\n onBlur,\n renderError = renderErrorDefault,\n renderHint,\n ...props\n },\n) => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const hint = renderHint || (():React.ReactNode => renderHintDefault(value.length, maxLength));\n\n const handleChange = useCallback((event: React.ChangeEvent) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(event.target.value),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n\n onBlur?.();\n }, [field, onBlur]);\n\n return (\n
\n \n
\n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n\nconst renderHintDefault = (length: number, maxLength?: number): React.ReactNode => (\n \n);\n","import './Field.scss';\nimport './TextField.scss';\nimport { TextInput } from '@carbon/react';\nimport { TextInputProps } from '@carbon/react/lib/components/TextInput/TextInput';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype BaseProps = Omit<\nTextInputProps,\n'id' | 'invalid' | 'invalidText' | 'helperText' | 'name'\n| 'value' | 'onChange' | 'onBlur' | 'maxCount' | 'maxLength'\n>;\n\ntype Props = BaseProps & {\n readonly size: 'sm' | 'md' | 'lg';\n readonly theme?: 'gray' | 'white';\n readonly disabled?: boolean;\n readonly outlined?: boolean;\n readonly maxLength?: number;\n readonly wrapperClass?: string;\n readonly field: FieldPath;\n readonly onBlur?: () => void;\n readonly renderError?: (error: FormError) => React.ReactNode;\n readonly renderHint?: () => React.ReactNode;\n};\n\nexport const TextField: (props: Props) => React.ReactElement = (\n {\n size,\n theme = 'gray',\n disabled,\n outlined = false,\n maxLength,\n field,\n wrapperClass,\n onBlur,\n renderError = renderErrorDefault,\n renderHint,\n ...props\n },\n) => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const hint = (renderHint || ((): React.ReactNode => renderHintDefault(value.length, maxLength)));\n\n const handleChange = useCallback((event: React.ChangeEvent) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(event.target.value),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n\n onBlur?.();\n }, [field, onBlur]);\n\n return (\n
\n \n
\n );\n};\n\nconst renderErrorDefault = (error: FormError): React.ReactNode => (\n \n);\n\nconst renderHintDefault = (length: number, maxLength?: number): React.ReactNode => (\n \n);\n","import './ToggleField.scss';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField, useFormWatch } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { CustomToggle } from 'src/modules/common/components/CustomToggle';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly field: FieldPath;\n readonly label: React.ReactNode;\n readonly disabled?: boolean;\n readonly readOnly?: boolean;\n};\n\nexport const ToggleField: (props: Props) => React.ReactElement = ({\n field,\n label,\n disabled,\n readOnly,\n}) => {\n const { meta, value, error } = useFormField(field);\n\n const submitted = useFormWatch(field.form, field.form.submitted.get);\n const invalid = error !== undefined && (meta.touched || submitted);\n\n const handleChange = useCallback((toggled: boolean) => {\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(toggled),\n ));\n }, [field]);\n\n const handleBlur = useCallback(() => {\n field.form.change(pipe(\n field.form.currentState,\n field.touched.set(true),\n ));\n }, [field]);\n\n return (\n \n );\n};\n","import { FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport { useEffect } from 'react';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { FormResolver } from 'src/modules/form/types/FormResolver';\n\nexport function useFormResolver(\n form: FormController,\n resolver: FormResolver,\n): void {\n useEffect(() => form.middleware((nextState) => {\n const nextValues = nextState.values;\n const prevValues = form.currentState.values;\n\n if (nextValues === prevValues) {\n return nextState;\n }\n\n const syncValues = resolver(prevValues, nextValues);\n return pipe(\n nextState,\n form.values.set(syncValues),\n );\n }), [form, resolver]);\n}\n","import { FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport { useEffect } from 'react';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport { validate } from 'src/modules/form/utils/validate';\n\nexport function useFormValidator(\n form: FormController,\n rule: FormRule,\n): void {\n useEffect(() => form.middleware((nextState) => {\n const nextValues = nextState.values;\n const prevValues = form.currentState.values;\n\n if (nextValues === prevValues) {\n return nextState;\n }\n\n const errors = validate(nextValues, rule);\n return pipe(\n nextState,\n form.errors.set(errors),\n );\n }), [form, rule]);\n}\n","import { FieldMap, FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport { SagaIterator } from 'redux-saga';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { call } from 'typed-redux-saga';\n\nexport function* formSubmitFailure(\n form: FormController,\n errors: FieldMap,\n): SagaIterator {\n yield* call({\n fn: form.change,\n context: form,\n }, pipe(\n form.currentState,\n form.errors.set(errors),\n form.submitted.set(true),\n form.submitting.set(false),\n form.submitSucceded.set(false),\n ));\n}\n","import { FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport { modify } from 'monocle-ts/Lens';\nimport { SagaIterator } from 'redux-saga';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { call } from 'typed-redux-saga';\n\nexport function* formSubmitStart(\n form: FormController,\n): SagaIterator {\n yield* call({\n fn: form.change,\n context: form,\n }, pipe(\n form.currentState,\n form.submitting.set(true),\n pipe(form.submitCount, modify((count) => count + 1)),\n ));\n}\n","import { FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport { SagaIterator } from 'redux-saga';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { call } from 'typed-redux-saga';\n\nexport function* formSubmitSuccess(\n form: FormController,\n): SagaIterator {\n yield* call({\n fn: form.change,\n context: form,\n }, pipe(\n form.currentState,\n form.submitted.set(true),\n form.submitting.set(false),\n form.submitSucceded.set(true),\n ));\n}\n","import { FormController } from '@form-ts/core';\nimport { SagaIterator } from 'redux-saga';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport { validate } from 'src/modules/form/utils/validate';\nimport { call } from 'typed-redux-saga';\n\nexport function* formValidate(\n form: FormController,\n rule: FormRule,\n): SagaIterator {\n const values = form.values.get(form.currentState);\n\n const errors = yield* call(validate, values, rule);\n if (Object.keys(errors).length === 0) {\n return true;\n }\n\n yield* call(formSubmitFailure, form, errors);\n return false;\n}\n","import { Decimal, Numeric } from 'decimal.js-light';\nimport type { Predicate } from 'fp-ts/Predicate';\nimport type { Refinement } from 'fp-ts/Refinement';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { FormRule } from 'src/modules/form/types/FormRule';\n\nexport function required(): FormRule {\n return (value, context) => {\n if (value === null || value === undefined) {\n return [{\n path: context.path.join('.'),\n code: 'required',\n value: value,\n\n context: {},\n message: 'Value should not be empty',\n }];\n }\n\n return NO_ERRORS;\n };\n}\n\nexport function nonEmpty(message?: string): FormRule {\n return (value, context) => {\n if (value === '') {\n return [{\n path: context.path.join('.'),\n code: 'required',\n value: value,\n\n context: {},\n message: message || 'Value should not be empty',\n }];\n }\n\n return NO_ERRORS;\n };\n}\n\nexport function minLength(n: number, message?: string): FormRule {\n return (value, context) => {\n if (value.length >= n) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'minLength',\n value: value,\n\n context: { min: n },\n message: message || `Value should not be shorter than ${n} character(s)`,\n }];\n };\n}\n\nexport function maxLength(n: number, message?: string): FormRule {\n return (value, context) => {\n if (value.length <= n) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'maxLength',\n value: value,\n\n context: { max: n },\n message: message || `Value should not be longer than ${n} character(s)`,\n }];\n };\n}\n\nconst EMAIL_REGEXP = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\nexport function email(): FormRule {\n return (value, context) => {\n if (EMAIL_REGEXP.test(value)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'email',\n value: value,\n\n context: {},\n message: 'Value is not a valid email address',\n }];\n };\n}\n\nexport function literal(literalArray: ReadonlyArray): FormRule {\n return (value, context) => {\n if (literalArray.includes(value)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'literal',\n value: value,\n\n context: {},\n message: 'Value is not a included in the list of literals',\n }];\n };\n}\n\nexport function emailList(): FormRule {\n return (value, context) => {\n const emailsArray = value.split(',')\n .filter((str) => str.trim().length > 0)\n .map((str) => str.trim());\n\n const uniqEmails = removeNonUniqueStrings(emailsArray);\n\n const isValidEmailList = validateEmails(uniqEmails);\n\n if (isValidEmailList) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'emailListInvalid',\n value: value,\n\n context: {},\n message: 'User(s) email address is not valid',\n }];\n };\n}\n\nexport function emailAlreadyExist(existingEmailsArray: string[]): FormRule {\n return (value, context) => {\n const newEmailsArray = value.split(',')\n .filter((str) => str.trim().length > 0)\n .map((str) => str.trim());\n\n const uniqNewEmails = removeNonUniqueStrings(newEmailsArray);\n\n const areSomeEmailsAlreadyAdded = uniqNewEmails.some(\n (newEmail) => existingEmailsArray.includes(newEmail),\n );\n\n if (areSomeEmailsAlreadyAdded) {\n return [{\n path: context.path.join('.'),\n code: 'emailAlreadyExists',\n value: value,\n\n context: {},\n message: 'User(s) email is already added',\n }];\n }\n\n return NO_ERRORS;\n };\n}\n\nfunction validateEmails(uniqEmails: string[]): boolean {\n return uniqEmails.every((emailStr) => EMAIL_REGEXP.test(emailStr));\n}\n\nfunction removeNonUniqueStrings(strings: string[]): string[] {\n return [...new Set(strings.map((string) => string.toLocaleLowerCase()))];\n}\n\nexport function date(): FormRule {\n return (value, context) => {\n if (!Number.isNaN(value.getDate())) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'date',\n value: value,\n\n context: {},\n message: 'Value is not a valid date',\n }];\n };\n}\n\nexport function gt(n: Numeric): FormRule {\n return (value, context) => {\n if (value.gt(n)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'gt',\n value: value,\n\n context: { min: new Decimal(n).toNumber() },\n message: `Value should be greater than ${String(n)}`,\n }];\n };\n}\n\nexport function gte(n: Numeric): FormRule {\n return (value, context) => {\n if (value.gte(n)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'gte',\n value: value,\n\n context: { min: new Decimal(n).toNumber() },\n message: `Value should not be less than ${String(n)}`,\n }];\n };\n}\n\nexport function lt(n: Numeric): FormRule {\n return (value, context) => {\n if (value.lt(n)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'lt',\n value: value,\n\n context: { max: new Decimal(n).toNumber() },\n message: `Value should be less than ${String(n)}`,\n }];\n };\n}\n\nexport function lte(n: Numeric): FormRule {\n return (value, context) => {\n if (value.lte(n)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'lte',\n value: value,\n\n context: { max: new Decimal(n).toNumber() },\n message: `Value should not be greater than ${String(n)}`,\n }];\n };\n}\n\nexport function allOf(rules: ReadonlyArray>): FormRule {\n // FIXME: should we use `reduceRight` to validate from left to right in array (e.g. `allOf([nonEmpty(), email()])`)\n // i.g. it's first validation will be `nonEmpty()` and than `email()`\n return (value, context) => rules.reduce((errors, rule) => {\n const more = rule(value, context);\n\n return more.length > 0\n ? errors.concat(more)\n : errors;\n }, NO_ERRORS);\n}\n\nexport function anyOf(rules: ReadonlyArray>): FormRule {\n return (value, context) => {\n for (const rule of rules) {\n const more = rule(value, context);\n if (more.length === 0) {\n return NO_ERRORS;\n }\n }\n\n return [{\n path: context.path.join('.'),\n code: 'invalid',\n value: value,\n\n context: {},\n message: 'Value does not match any rule',\n }];\n };\n}\n\nexport function struct(rules: { readonly [K in keyof T]: FormRule }): FormRule {\n return (value, context) => {\n let errors = NO_ERRORS;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in rules) {\n // eslint-disable-next-line no-prototype-builtins\n if (!rules.hasOwnProperty(key)) {\n continue;\n }\n\n const path = context.path.concat(key);\n const rule = rules[key];\n const more = rule(value[key], { path });\n\n if (more.length > 0) {\n errors = errors.concat(more);\n }\n }\n\n return errors;\n };\n}\n\nexport function nullable(rule: FormRule): FormRule {\n return (value, context) => (\n value !== null\n ? rule(value, context)\n : NO_ERRORS\n );\n}\n\nexport function array(rule: FormRule): FormRule> {\n return (value, context) => value.reduce((errors, val, key) => {\n const path = context.path.concat(key.toString());\n const more = rule(val, { path });\n\n return more.length > 0\n ? errors.concat(more)\n : errors;\n }, NO_ERRORS);\n}\n\nexport function record(rule: FormRule): FormRule>> {\n return (value, context) => Object.entries(value).reduce((errors, [key, val]) => {\n const path = context.path.concat(key);\n const more = rule(val, { path });\n\n return more.length > 0\n ? errors.concat(more)\n : errors;\n }, NO_ERRORS);\n}\n\nexport function maybe(test: Refinement, rule: FormRule): FormRule;\nexport function maybe(test: Predicate, rule: FormRule): FormRule {\n return (value, context) => (test(value)\n ? rule(value, context)\n : NO_ERRORS);\n}\n\nexport function map(fn: (value: T) => U, rule: FormRule): FormRule {\n return (value, context) => rule(fn(value), context);\n}\n\nexport function pass(): FormRule {\n return () => NO_ERRORS;\n}\n\nexport function match(regex: RegExp, message?: string): FormRule {\n return (value, context) => {\n if (regex.test(value)) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.join('.'),\n code: 'match',\n value: value,\n\n context: { regExp: String(regex) },\n message: message || `Value should match these regular expression: \"${regex}\"`,\n }];\n };\n}\n\nexport function matchField(\n field: Extract,\n reference: Extract,\n message?: string,\n): FormRule {\n return (value, context) => {\n if (Object.is(value[field], value[reference])) {\n return NO_ERRORS;\n }\n\n return [{\n path: context.path.concat(field).join('.'),\n code: 'match',\n value: value,\n\n context: {},\n message: message ?? `Value should match \"${reference}\" field`,\n }];\n };\n}\n\nexport const NO_ERRORS: ReadonlyArray = [];\n","import { Lens } from 'monocle-ts/Lens';\n\nconst NON_NULL_LENS = {\n get: (value: T): T => value,\n set: (value: T | null) => (state: T): T => value ?? state,\n};\n\nexport function ensureNonNull(): Lens {\n return NON_NULL_LENS;\n}\n\nconst NULL_TO_ALL = {\n get: (value: T | null): T | 'All' => value ?? 'All',\n set: (value: T | 'All') => (): T | null => (value === 'All' ? null : value),\n};\n\nexport function nullToAll(): Lens {\n return NULL_TO_ALL;\n}\n","import { FieldMap } from '@form-ts/core';\nimport { Foldable } from 'fp-ts/ReadonlyArray';\nimport { fromFoldableMap } from 'fp-ts/ReadonlyRecord';\nimport { first } from 'fp-ts/Semigroup';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { FormRule, RuleContext } from 'src/modules/form/types/FormRule';\n\nexport function validate(data: T, rule: FormRule): FieldMap {\n const errors = rule(data, ROOT_CONTEXT);\n return fromFoldableMap(first(), Foldable)(errors, (error) => [error.path, error]);\n}\n\nconst ROOT_CONTEXT: RuleContext = {\n path: [],\n};\n","import { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const HVAC_CHANGE = createTrigger('HVAC_CHANGE');\n","import { HvacAssessmentCategories } from 'src/modules/hvac/types/HvacAssessmentCategories';\n\nexport const ISO_CATEGORIES: Record = {\n 1.1: HvacAssessmentCategories.EMISSION,\n '1.1a': HvacAssessmentCategories.EMISSION,\n 1.2: HvacAssessmentCategories.EMISSION,\n 1.3: HvacAssessmentCategories.DISTRIBUTION,\n 1.4: HvacAssessmentCategories.DISTRIBUTION,\n '1.4a': HvacAssessmentCategories.DISTRIBUTION,\n 1.5: HvacAssessmentCategories.DISTRIBUTION,\n 1.6: HvacAssessmentCategories.GENERATION,\n 1.7: HvacAssessmentCategories.GENERATION,\n 1.8: HvacAssessmentCategories.GENERATION,\n 1.9: HvacAssessmentCategories.GENERATION,\n '1.10': HvacAssessmentCategories.GENERATION,\n\n 3.1: HvacAssessmentCategories.EMISSION,\n '3.1a': HvacAssessmentCategories.EMISSION,\n 3.2: HvacAssessmentCategories.EMISSION,\n 3.3: HvacAssessmentCategories.DISTRIBUTION,\n 3.4: HvacAssessmentCategories.DISTRIBUTION,\n '3.4a': HvacAssessmentCategories.DISTRIBUTION,\n 3.5: HvacAssessmentCategories.DISTRIBUTION,\n 3.6: HvacAssessmentCategories.GENERATION,\n 3.7: HvacAssessmentCategories.GENERATION,\n 3.8: HvacAssessmentCategories.GENERATION,\n 3.9: HvacAssessmentCategories.GENERATION,\n\n 4.1: HvacAssessmentCategories.EMISSION,\n 4.2: HvacAssessmentCategories.EMISSION,\n 4.3: HvacAssessmentCategories.EMISSION,\n 4.4: HvacAssessmentCategories.DISTRIBUTION,\n 4.5: HvacAssessmentCategories.DISTRIBUTION,\n 4.6: HvacAssessmentCategories.DISTRIBUTION,\n 4.7: HvacAssessmentCategories.DISTRIBUTION,\n 4.8: HvacAssessmentCategories.DISTRIBUTION,\n 4.9: HvacAssessmentCategories.DISTRIBUTION,\n '4.10': HvacAssessmentCategories.DISTRIBUTION,\n};\n","import './HvacPage.scss';\nimport { useForm } from '@form-ts/react';\nimport React, { useEffect } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { ProjectToolbar } from 'src/modules/common/components/ProjectToolbar';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { useFormResolver } from 'src/modules/form/hooks/useFormResolver';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HVAC_CHANGE } from 'src/modules/hvac/actions/HvacActions';\nimport { getHvacFormCounters } from 'src/modules/hvac/selectors/getHvacFormCounters';\nimport { getHvacFormData } from 'src/modules/hvac/selectors/getHvacFormData';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { getHvacResultsInaccurate } from 'src/modules/hvac/selectors/getHvacResultsInaccurate';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { resolveHvacFormData } from 'src/modules/hvac/utils/resolveHvacFormData';\nimport { HvacFormAssessmentView } from 'src/modules/hvac/views/HvacFormAssessmentView';\nimport { HvacResultEnergyView } from 'src/modules/hvac/views/HvacResultEnergyView';\nimport { HvacResultSavingsView } from 'src/modules/hvac/views/HvacResultSavingsView';\nimport { HvacResultSummaryView } from 'src/modules/hvac/views/HvacResultSummaryView';\nimport { PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const HvacPage = (): React.ReactElement => {\n const intl = useIntl();\n const project = useSelector(getProjectDetails);\n\n const results = useParametricSelector(getHvacResults, project);\n const counters = useParametricSelector(getHvacFormCounters, project);\n const inaccurate = useParametricSelector(getHvacResultsInaccurate, project);\n const formData = useParametricSelector(getHvacFormData, project);\n const saveFormData = useAction(HVAC_CHANGE.trigger);\n const shareProject = useBoundAction(PROJECT_VIEW_SHARE.trigger, project);\n\n const hvacForm = useForm('hvac', {\n reinitialize: false,\n initialValues: formData,\n });\n useFormResolver(hvacForm, resolveHvacFormData);\n\n useEffect(() => hvacForm.subscribe((prevState) => {\n const nextState = hvacForm.currentState;\n if (prevState.values !== nextState.values) {\n saveFormData(nextState.values);\n }\n }), [hvacForm, saveFormData]);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'hvac/pageTitle' })}\n \n \n\n \n \n\n
\n
\n \n\n \n\n \n\n \n
\n
\n
\n\n \n \n );\n};\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { HVAC_CHANGE } from 'src/modules/hvac/actions/HvacActions';\nimport { getReportHvacEnergy } from 'src/modules/hvac/utils/getReportHvacEnergy';\nimport { mapHvacFormToStore } from 'src/modules/hvac/utils/mapHvacFormToStore';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* hvacChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const formData = action.data;\n\n try {\n yield* call(logDebug, 'Saving HVAC data...', formData);\n\n const previous = yield* select(getProjectDetails);\n\n const updatedReport = yield* call(getReportHvacEnergy, formData, previous);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n currency: formData.currency,\n building: formData.building,\n hvac: yield* call(mapHvacFormToStore, formData.assessment),\n report: updatedReport,\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n yield* call(logDebug, 'Saving HVAC data... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save HVAC data', { formData }, NativeError.wrap(error));\n yield* call(logError, 'Saving HVAC data... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { HVAC_CHANGE } from 'src/modules/hvac/actions/HvacActions';\nimport { hvacChangeSaga } from 'src/modules/hvac/sagas/hvacChangeSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* hvacSaga(): SagaIterator {\n yield* takeLatest(HVAC_CHANGE.is, hvacChangeSaga);\n}\n","import { createSelector } from 'reselect';\nimport { getHvacConfig } from 'src/modules/hvac/selectors/getHvacConfig';\nimport { getHvacData } from 'src/modules/hvac/selectors/getHvacData';\nimport { mapHvacStoreToForm } from 'src/modules/hvac/utils/mapHvacStoreToForm';\n\nexport const getHvacAssesmentFormData = createSelector([\n getHvacData,\n getHvacConfig,\n], mapHvacStoreToForm);\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getHvacBuildingFormData = createSelector([\n getProjectLazy,\n], (project) => project.data.building);\n","import {\n HVAC_CONFIG,\n HvacArea,\n HvacConfigAddition,\n HvacConfigOption,\n HvacConfigSection,\n} from '@belimo-retrofit-portal/logic';\nimport { pipe } from 'fp-ts/function';\nimport { mapWithIndex } from 'fp-ts/ReadonlyRecord';\nimport { createSelector } from 'reselect';\nimport { getConfigHvac } from 'src/modules/config/selectors/getHvacConfig';\nimport { ConfigHvacSection } from 'src/modules/config/types/ConfigHvac';\nimport * as App from 'src/modules/hvac/types/HvacConfig';\nimport { assertDefined } from 'src/utils/assert';\n\nexport const getHvacConfig = createSelector([\n getConfigHvac,\n], (config): App.HvacConfig => {\n return pipe(\n HVAC_CONFIG,\n mapWithIndex(mapArea),\n );\n\n function mapArea(\n area: HvacArea,\n sections: ReadonlyArray,\n ): App.HvacConfigSection[] {\n return sections.map((section) => mapSection(area, section));\n }\n\n function mapSection(\n area: HvacArea,\n section: HvacConfigSection,\n ): App.HvacConfigSection {\n const extra = assertDefined(\n config[area].find((it) => it.id === section.id),\n 'Could not find HVAC section translations',\n { area, section, config },\n );\n\n return {\n ...section,\n name: extra.name,\n explanation: extra.explanation,\n option: section.option.map((option) => mapOption(area, extra, option)),\n additionals: section.additionals.map((addition) => mapAddition(area, extra, addition)),\n };\n }\n\n function mapOption(\n area: HvacArea,\n section: ConfigHvacSection,\n option: HvacConfigOption,\n ): App.HvacConfigOption {\n const extra = assertDefined(\n section.option.find((it) => it.id === option.id),\n 'Could not find HVAC option translations',\n { area, section, option, config },\n );\n\n return {\n ...option,\n title: extra.title,\n explanation: extra.explanation,\n };\n }\n\n function mapAddition(\n area: HvacArea,\n section: ConfigHvacSection,\n addition: HvacConfigAddition,\n ): App.HvacConfigAddition {\n const extra = assertDefined(\n section.additionals.find((it) => it.id === addition.id),\n 'Could not find HVAC addition translations',\n { area, section, addition, config },\n );\n\n return {\n ...addition,\n title: extra.title,\n placeholder: extra.placeholder,\n };\n }\n});\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getHvacCurrencyCode = createSelector([\n getProjectLazy,\n], (project) => project.data.currency);\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getHvacData = createSelector([\n getProjectLazy,\n], (project) => project.data.hvac);\n","import { createSelector } from 'reselect';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { HvacFormCounter, HvacFormCounters } from 'src/modules/hvac/types/HvacFormCounter';\nimport { HvacFormChapterData, HvacFormSectionAnswerData } from 'src/modules/hvac/types/HvacFormData';\n\nexport const getHvacFormCounters = createSelector([\n getHvacAssesmentFormData,\n], (formData): HvacFormCounters => ({\n heating: getCounter(formData.heating),\n cooling: getCounter(formData.cooling),\n ventilation: getCounter(formData.ventilation),\n}));\n\nfunction getCounter(formData: HvacFormChapterData): HvacFormCounter {\n return {\n answered: formData.sections.reduce((total, section) => {\n if (!section.enabled) {\n return total;\n }\n\n const answer = isAnswered(section.answer) ? 1 : 0;\n const copies = section.copies.reduce((sum, copy) => (isAnswered(copy.answer) ? sum + 1 : sum), 0);\n\n return total + answer + copies;\n }, 0),\n enabled: formData.sections.reduce((result, section) => {\n if (!section.enabled) {\n return result;\n }\n\n return result + 1 + section.copies.length;\n }, 0),\n };\n}\n\nfunction isAnswered(answer: HvacFormSectionAnswerData): boolean {\n return (\n answer.actual.option !== null &&\n answer.future.option !== null\n );\n}\n","import { createSelector } from 'reselect';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { getHvacBuildingFormData } from 'src/modules/hvac/selectors/getHvacBuildingFormData';\nimport { getHvacCurrencyCode } from 'src/modules/hvac/selectors/getHvacCurrencyCode';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\nexport const getHvacFormData = createSelector([\n getHvacCurrencyCode,\n getHvacBuildingFormData,\n getHvacAssesmentFormData,\n], (currency, building, assessment): HvacFormData => ({\n currency,\n building,\n assessment,\n}));\n","import { HvacResults, getHvacResults as API } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getHvacResults = createSelector([\n getProjectLazy,\n], (project): HvacResults => API(project.data));\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { getHvacFormCounters } from 'src/modules/hvac/selectors/getHvacFormCounters';\n\nexport const getHvacResultsInaccurate = createSelector([\n getHvacFormCounters,\n getHvacAssesmentFormData,\n], (counters, formData): boolean => HVAC_AREAS\n .filter((area) => formData[area].enabled)\n .some((area) => (\n // enabled at least one section\n counters[area].enabled > 0 &&\n // enabled less than 5 sections\n counters[area].enabled < 5 &&\n // all enabled sections answered\n counters[area].enabled === counters[area].answered\n )));\n\nconst HVAC_AREAS = [\n HvacArea.HEATING,\n HvacArea.COOLING,\n HvacArea.VENTILATION,\n];\n","import { HvacResultsRating } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\n\nexport const getHvacResultsOverallRating = createSelector([\n getHvacResults,\n], (results): HvacResultsRating => results.overall.rating);\n","export enum HvacAssessmentCategories {\n EMISSION = 'emission',\n DISTRIBUTION = 'distribution',\n GENERATION = 'generation',\n}\n","import { ISO_CATEGORIES } from 'src/modules/hvac/constants/ISOCategories';\nimport { HvacAssessmentCategories } from 'src/modules/hvac/types/HvacAssessmentCategories';\nimport { HvacFormSectionData } from 'src/modules/hvac/types/HvacFormData';\n\nexport function filterHvacSectionByCategory(\n sections: readonly HvacFormSectionData[],\n category: HvacAssessmentCategories,\n): { section: HvacFormSectionData; index: number }[] {\n const EMPTY_SECTIONS: { section: HvacFormSectionData; index: number }[] = [];\n return sections.reduce((prev, curr, index) => {\n if (ISO_CATEGORIES[curr.config.number] === category) {\n return [\n ...prev,\n {\n section: curr,\n index: index,\n }];\n }\n\n return prev;\n }, EMPTY_SECTIONS);\n}\n","import { HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormSectionAnswerData } from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormVariant } from 'src/modules/hvac/utils/getDefaultFormVariant';\n\nexport function getDefaultFormAnswer(config: HvacConfigSection): HvacFormSectionAnswerData {\n return {\n actual: getDefaultFormVariant(config),\n future: getDefaultFormVariant(config),\n };\n}\n","import { HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormSectionData } from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormAnswer } from 'src/modules/hvac/utils/getDefaultFormAnswer';\n\nexport function getDefaultFormSection(config: HvacConfigSection): HvacFormSectionData {\n return {\n title: '',\n enabled: false,\n config: config,\n copies: [],\n answer: getDefaultFormAnswer(config),\n };\n}\n","import { HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormVariantData } from 'src/modules/hvac/types/HvacFormData';\n\nexport function getDefaultFormVariant(config: HvacConfigSection): HvacFormVariantData {\n return {\n option: null,\n additionals: config.additionals.map((it) => ({\n config: it,\n value: null,\n })),\n };\n}\n","import { ProjectReport } from '@belimo-retrofit-portal/logic';\nimport { Project } from 'src/modules/common/types/Project';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\nexport const getReportHvacEnergy = (formData: HvacFormData, previous: Project): ProjectReport => {\n const currHvacAreas = formData.assessment;\n const prevHvacAreas = previous.data.hvac.areas;\n const prevReportHvac = previous.data.report.hvac;\n const prevReportEnergy = previous.data.report.energy;\n\n const isHeatingAreaChanged = prevHvacAreas.heating.enabled !== currHvacAreas.heating.enabled;\n const isCoolingAreaChanged = prevHvacAreas.cooling.enabled !== currHvacAreas.cooling.enabled;\n const isVentilationAreaChanged = prevHvacAreas.ventilation.enabled !== currHvacAreas.ventilation.enabled;\n\n const report: ProjectReport = {\n ...previous.data.report,\n hvac: {\n ...previous.data.report.hvac,\n showHeating: isHeatingAreaChanged ? currHvacAreas.heating.enabled : prevReportHvac.showHeating,\n showCooling: isCoolingAreaChanged ? currHvacAreas.cooling.enabled : prevReportHvac.showCooling,\n showVentilation: isVentilationAreaChanged ? currHvacAreas.ventilation.enabled : prevReportHvac.showVentilation,\n },\n energy: {\n ...previous.data.report.energy,\n showHeating: isHeatingAreaChanged ? currHvacAreas.heating.enabled : prevReportEnergy.showHeating,\n showCooling: isCoolingAreaChanged ? currHvacAreas.cooling.enabled : prevReportEnergy.showCooling,\n showVentilation: isVentilationAreaChanged ? currHvacAreas.ventilation.enabled : prevReportEnergy.showVentilation,\n showComments: Boolean(currHvacAreas.comment),\n },\n };\n\n return report;\n};\n","import {\n HvacArea,\n ProjectHvac,\n ProjectHvacAnswer,\n ProjectHvacArea,\n ProjectHvacSection,\n ProjectHvacSectionCopy,\n ProjectHvacVariant,\n} from '@belimo-retrofit-portal/logic';\nimport { HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport {\n HvacFormAdditionalValue,\n HvacFormAssessmentData,\n HvacFormChapterData,\n HvacFormSectionAnswerData,\n HvacFormSectionCopyData,\n HvacFormSectionData,\n HvacFormVariantData,\n} from 'src/modules/hvac/types/HvacFormData';\n\nexport function mapHvacFormToStore(form: HvacFormAssessmentData): ProjectHvac {\n return {\n comment: form.comment,\n prices: form.prices,\n areas: {\n [HvacArea.HEATING]: mapHvacFormChapter(form.heating),\n [HvacArea.COOLING]: mapHvacFormChapter(form.cooling),\n [HvacArea.VENTILATION]: mapHvacFormChapter(form.ventilation),\n },\n };\n}\n\nfunction mapHvacFormChapter(form: HvacFormChapterData): ProjectHvacArea {\n return {\n enabled: form.enabled,\n thermal: form.thermal,\n electrical: form.electrical,\n sections: form.sections.map(mapHvacFormSection),\n };\n}\n\nfunction mapHvacFormSection(form: HvacFormSectionData): ProjectHvacSection {\n return {\n id: form.config.id,\n title: form.title,\n enabled: form.enabled,\n answer: mapHvacFormSectionAnswer(form.answer, form.config),\n copies: form.copies.map((copy) => mapHvacFormSectionCopy(copy, form.config)),\n };\n}\n\nfunction mapHvacFormSectionCopy(\n form: HvacFormSectionCopyData,\n config: HvacConfigSection,\n): ProjectHvacSectionCopy {\n return {\n title: form.title,\n answer: mapHvacFormSectionAnswer(form.answer, config),\n };\n}\n\nfunction mapHvacFormSectionAnswer(\n form: HvacFormSectionAnswerData,\n config: HvacConfigSection,\n): ProjectHvacAnswer {\n return {\n actual: mapHvacFormVariant(form.actual),\n future: mapHvacFormVariant(form.future),\n };\n}\n\nfunction mapHvacFormVariant(form: HvacFormVariantData): ProjectHvacVariant {\n return {\n option: form.option?.id ?? null,\n additionals: form.additionals.reduce>((map, it) => {\n // eslint-disable-next-line no-param-reassign\n map[it.config.id] = it.value;\n return map;\n }, {}),\n };\n}\n","import {\n HvacArea,\n ProjectHvac,\n ProjectHvacAnswer,\n ProjectHvacArea,\n ProjectHvacSection,\n ProjectHvacSectionCopy,\n ProjectHvacVariant,\n} from '@belimo-retrofit-portal/logic';\nimport { HvacConfig, HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport {\n HvacFormAssessmentData,\n HvacFormChapterData,\n HvacFormSectionAnswerData,\n HvacFormSectionCopyData,\n HvacFormSectionData,\n HvacFormVariantData,\n} from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormSection } from 'src/modules/hvac/utils/getDefaultFormSection';\n\nexport function mapHvacStoreToForm(\n store: ProjectHvac,\n config: HvacConfig,\n): HvacFormAssessmentData {\n return {\n comment: store.comment,\n prices: store.prices,\n\n heating: mapHvacFormChapter(\n store.areas[HvacArea.HEATING],\n config.heating,\n ),\n cooling: mapHvacFormChapter(\n store.areas[HvacArea.COOLING],\n config.cooling,\n ),\n ventilation: mapHvacFormChapter(\n store.areas[HvacArea.VENTILATION],\n config.ventilation,\n ),\n };\n}\n\nfunction mapHvacFormChapter(\n store: ProjectHvacArea,\n config: ReadonlyArray,\n): HvacFormChapterData {\n return {\n enabled: store.enabled,\n thermal: store.thermal,\n electrical: store.electrical,\n sections: config.map((section) => {\n const data = store.sections.find((it) => it.id === section.id);\n return data\n ? mapHvacFormSection(data, section)\n : getDefaultFormSection(section);\n }),\n };\n}\n\nfunction mapHvacFormSection(\n store: ProjectHvacSection,\n config: HvacConfigSection,\n): HvacFormSectionData {\n return {\n title: store.title,\n enabled: config.deactivation ? store.enabled : true,\n config: config,\n answer: mapHvacFormSectionAnswer(store.answer, config),\n copies: config.multiplication\n ? store.copies.map((copy) => mapHvacFormSectionCopy(copy, config))\n : [],\n };\n}\n\nfunction mapHvacFormSectionCopy(\n store: ProjectHvacSectionCopy,\n config: HvacConfigSection,\n): HvacFormSectionCopyData {\n return {\n title: store.title,\n answer: mapHvacFormSectionAnswer(store.answer, config),\n };\n}\n\nfunction mapHvacFormSectionAnswer(\n store: ProjectHvacAnswer,\n config: HvacConfigSection,\n): HvacFormSectionAnswerData {\n return {\n actual: mapHvacFormVariant(store.actual, config),\n future: mapHvacFormVariant(store.future, config),\n };\n}\n\nfunction mapHvacFormVariant(\n store: ProjectHvacVariant,\n config: HvacConfigSection,\n): HvacFormVariantData {\n return {\n option: config.option.find((it) => it.id === store.option) ?? null,\n additionals: config.additionals.map((it) => ({\n config: it,\n value: store.additionals[it.id] ?? null,\n })),\n };\n}\n","import {\n EnergySource,\n getCarbonIntensityEditable,\n getCarbonIntensityValue,\n HvacArea,\n} from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { pipe } from 'fp-ts/function';\nimport * as L from 'monocle-ts/Lens';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\nconst toFixedDecimal = (decimalValue: Decimal | null, decimalPlaces: number): Decimal | null => (\n decimalValue ? new Decimal(decimalValue.toDecimalPlaces(decimalPlaces)) : null\n);\n\nexport function resolveHvacFormData(\n prevValues: HvacFormData,\n nextValues: HvacFormData,\n): HvacFormData {\n return pipe(\n nextValues,\n resolveThermalCarbonIntensity.bind(null, HvacArea.HEATING, prevValues),\n resolveThermalCarbonIntensity.bind(null, HvacArea.COOLING, prevValues),\n resolveThermalCarbonIntensity.bind(null, HvacArea.VENTILATION, prevValues),\n resolveElectricityCarbonIntensity.bind(null, HvacArea.HEATING, prevValues),\n resolveElectricityCarbonIntensity.bind(null, HvacArea.COOLING, prevValues),\n resolveElectricityCarbonIntensity.bind(null, HvacArea.VENTILATION, prevValues),\n );\n}\n\nfunction resolveThermalCarbonIntensity(\n system: HvacArea,\n prevValues: HvacFormData,\n nextValues: HvacFormData,\n): HvacFormData {\n const prevValue = toFixedDecimal(getCarbonIntensityValue(\n prevValues.assessment[system].thermal.energySource,\n prevValues.building.address.country,\n ), 2);\n const nextValue = toFixedDecimal(getCarbonIntensityValue(\n nextValues.assessment[system].thermal.energySource,\n nextValues.building.address.country,\n ), 2);\n\n const prevEditable = getCarbonIntensityEditable(prevValues.assessment[system].thermal.energySource);\n const nextEditable = getCarbonIntensityEditable(nextValues.assessment[system].thermal.energySource);\n\n if (\n nextEditable &&\n prevEditable &&\n decimalEquals(prevValue, nextValue)\n ) {\n return nextValues;\n }\n\n return pipe(\n L.id(),\n L.prop('assessment'),\n L.prop(system),\n L.prop('thermal'),\n L.prop('carbonIntensity'),\n L.modify((actual) => (\n decimalEquals(actual, nextValue)\n ? actual\n : nextValue\n )),\n )(nextValues);\n}\n\nfunction resolveElectricityCarbonIntensity(\n system: HvacArea,\n prevValues: HvacFormData,\n nextValues: HvacFormData,\n): HvacFormData {\n const nextValue = toFixedDecimal(getCarbonIntensityValue(\n EnergySource.ELECTRICITY,\n nextValues.building.address.country,\n ), 2);\n\n // electricity input is always disabled\n return pipe(\n L.id(),\n L.prop('assessment'),\n L.prop(system),\n L.prop('electrical'),\n L.prop('carbonIntensity'),\n L.modify((actual) => (\n decimalEquals(actual, nextValue)\n ? actual\n : nextValue\n )),\n )(nextValues);\n}\n\nfunction decimalEquals(a: Decimal | null, b: Decimal | null): boolean {\n if (a === null && b === null) {\n return true;\n }\n if (a !== null && b !== null) {\n return a.equals(b);\n }\n\n return false;\n}\n","import './HvacFormAssessmentView.scss';\nimport { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { Tabs, Tooltip } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomTab, CustomTabList } from 'src/modules/common/components/CustomTabList';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormCounters } from 'src/modules/hvac/types/HvacFormCounter';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { HvacFormChapter } from 'src/modules/hvac/views/HvacFormChapter';\n\ntype Props = {\n readonly form: FormController;\n readonly counters: HvacFormCounters;\n};\n\nexport const HvacFormAssessmentView = ({ form, counters }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const isHeatingEnabled = useFormWatch(\n form,\n form.field.at('assessment').at('heating').at('enabled').value.get,\n );\n const isCoolingEnabled = useFormWatch(\n form,\n form.field.at('assessment').at('cooling').at('enabled').value.get,\n );\n const isVentilationEnabled = useFormWatch(\n form,\n form.field.at('assessment').at('ventilation').at('enabled').value.get,\n );\n\n const defaultSelectedTab = useMemo(() => {\n if (isHeatingEnabled) {\n return 0;\n }\n\n if (isCoolingEnabled) {\n return 1;\n }\n\n if (isVentilationEnabled) {\n return 2;\n }\n\n return 0;\n }, [\n isHeatingEnabled,\n isCoolingEnabled,\n isVentilationEnabled,\n ]);\n\n const [activeTab, setActiveTab] = useState(defaultSelectedTab);\n\n const handleTabChange = useCallback((state: { selectedIndex: number }) => {\n setActiveTab(state.selectedIndex);\n }, []);\n\n const currentTab: HvacArea = useMemo(\n () => {\n const tab = [\n HvacArea.HEATING,\n HvacArea.COOLING,\n HvacArea.VENTILATION,\n ][activeTab];\n\n return tab || HvacArea.HEATING;\n },\n [activeTab],\n );\n\n useEffect(() => {\n const isCurrentTabActive = [\n isHeatingEnabled,\n isCoolingEnabled,\n isVentilationEnabled,\n ][activeTab];\n\n if (!isCurrentTabActive) {\n setActiveTab(defaultSelectedTab);\n }\n }, [isHeatingEnabled, isCoolingEnabled, isVentilationEnabled, activeTab, defaultSelectedTab]);\n\n return (\n }>\n
\n \n \n {isHeatingEnabled ? (\n \n
\n \n\n {counters[HvacArea.HEATING].answered}/{counters[HvacArea.HEATING].enabled}\n
\n
\n ) : (\n \n \n
\n \n\n {counters[HvacArea.HEATING].answered}/{counters[HvacArea.HEATING].enabled}\n
\n
\n \n )}\n\n {isCoolingEnabled ? (\n \n
\n \n\n {counters[HvacArea.COOLING].answered}/{counters[HvacArea.COOLING].enabled}\n
\n
\n ) : (\n \n \n
\n \n\n {counters[HvacArea.COOLING].answered}/{counters[HvacArea.COOLING].enabled}\n
\n
\n \n )}\n\n {isVentilationEnabled ? (\n \n
\n \n\n {counters[HvacArea.VENTILATION].answered}/{counters[HvacArea.VENTILATION].enabled}\n
\n
\n ) : (\n \n \n
\n \n\n {counters[HvacArea.VENTILATION].answered}/{counters[HvacArea.VENTILATION].enabled}\n
\n
\n \n )}\n \n
\n\n \n
\n
\n );\n};\n","import './HvacFormChapter.scss';\nimport { Accordion } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport React, { memo, useMemo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { BodyDesktopLargeRegularText } from 'src/modules/common/typography/BodyDesktopLargeRegularText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacAssessmentCategories } from 'src/modules/hvac/types/HvacAssessmentCategories';\nimport { HvacFormChapterData, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { filterHvacSectionByCategory } from 'src/modules/hvac/utils/filterHvacSectonByCategory';\nimport { HvacFormSection } from 'src/modules/hvac/views/HvacFormSection';\nimport { HvacFormSectionCopy } from 'src/modules/hvac/views/HvacFormSectionCopy';\n\ntype Props = {\n readonly path: FieldPath;\n};\n\nexport const HvacFormChapter = memo(({ path }: Props) => {\n const { value } = useFormField(path);\n\n const emission = useMemo(\n () => filterHvacSectionByCategory(value.sections, HvacAssessmentCategories.EMISSION),\n [value.sections],\n );\n\n const distribution = useMemo(\n () => filterHvacSectionByCategory(value.sections, HvacAssessmentCategories.DISTRIBUTION),\n [value.sections],\n );\n\n const generation = useMemo(\n () => filterHvacSectionByCategory(value.sections, HvacAssessmentCategories.GENERATION),\n [value.sections],\n );\n\n return (\n \n {Boolean(emission.length) && (\n <>\n \n \n \n\n {emission.map(({ section, index }) => (\n \n \n\n {section.copies.map((copy, copyIndex) => (\n \n ))}\n \n ))}\n \n )}\n\n {Boolean(distribution.length) && (\n <>\n \n \n \n\n {distribution.map(({ section, index }) => (\n \n \n\n {section.copies.map((copy, copyIndex) => (\n \n ))}\n \n ))}\n \n )}\n\n {Boolean(generation.length) && (\n <>\n \n \n \n\n {generation.map(({ section, index }) => (\n \n \n\n {section.copies.map((copy, copyIndex) => (\n \n ))}\n \n ))}\n \n )}\n \n );\n});\n","import './HvacFormClearConfirmationModal.scss';\nimport { WarningFilled } from '@carbon/icons-react';\nimport { Button, ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { BodyText } from 'src/modules/common/typography/BodyText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n readonly open: boolean;\n readonly onCancel: () => void;\n readonly onSubmit: () => void;\n};\n\nexport const HvacFormClearConfirmationModal = ({\n open,\n onCancel,\n onSubmit,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n \n\n \n
\n \n \n \n\n \n \n \n
\n
\n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import { ModalBody, ModalFooter, ModalHeader, Button } from '@carbon/react';\nimport { useForm } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly open: boolean;\n readonly comment: string;\n readonly onCancel: () => void;\n readonly onSubmit: (title: string) => void;\n};\n\nexport const HvacFormCommentModal = ({ open, comment, onSubmit, onCancel }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const form = useForm('hvac.comment', {\n reinitialize: true,\n initialValues: comment,\n });\n\n const handleSubmit = useCallback(() => {\n onSubmit(form.currentState.values);\n }, [form, onSubmit]);\n const handleCancel = useCallback(() => {\n form.reset(form.initialState);\n onCancel();\n }, [form, onCancel]);\n\n return (\n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './HvacFormSection.scss';\nimport { AccordionItem } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData, HvacFormSectionData } from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormAnswer } from 'src/modules/hvac/utils/getDefaultFormAnswer';\nimport { HvacFormSectionContent } from 'src/modules/hvac/views/HvacFormSectionContent';\nimport { HvacFormSectionCopyTitleModal } from 'src/modules/hvac/views/HvacFormSectionCopyTitleModal';\nimport { HvacFormSectionHeader } from 'src/modules/hvac/views/HvacFormSectionHeader';\n\ntype Props = {\n readonly path: FieldPath;\n readonly readOnly: boolean;\n};\n\nexport const HvacFormSection = ({ path, readOnly }: Props): React.ReactElement => {\n const [titleModalOpen, setTitleModalOpen] = useState(false);\n const [isItemOpened, setItemOpened] = useState(false);\n\n const headerRef = useRef(null);\n\n const { value: section } = useFormField(path);\n\n const handleClick = useCallback((\n {\n isOpen,\n event,\n }: {\n isOpen: boolean;\n event: React.MouseEvent;\n },\n ) => {\n setItemOpened(isOpen);\n\n if (isOpen) {\n event.currentTarget.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n const handleClear = useCallback(() => {\n const current = path.value.get(path.form.currentState);\n const value = getDefaultFormAnswer(current.config);\n\n path.form.change(pipe(\n path.form.currentState,\n path.at('answer').value.set(value),\n ));\n }, [path]);\n\n const handleToggle = useCallback(() => {\n const current = path.value.get(path.form.currentState);\n const value = !current.enabled;\n\n if (value && headerRef.current) {\n setItemOpened(value);\n headerRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n\n path.form.change(pipe(\n path.form.currentState,\n path.at('enabled').value.set(value),\n ));\n }, [path]);\n\n const handleClone = useCallback(() => {\n const current = path.value.get(path.form.currentState);\n const value = current.copies.concat({\n title: 'copy',\n answer: getDefaultFormAnswer(current.config),\n });\n\n path.form.change(pipe(\n path.form.currentState,\n path.at('copies').value.set(value),\n ));\n }, [path]);\n\n const handleTitleModalOpen = useCallback(() => {\n setTitleModalOpen(true);\n }, []);\n\n const handleTitleModalCancel = useCallback(() => {\n setTitleModalOpen(false);\n }, []);\n\n const handleTitleModalSubmit = useCallback((title: string) => {\n setTitleModalOpen(false);\n\n path.form.change(pipe(\n path.form.currentState,\n path.at('title').value.set(title),\n ));\n }, [path]);\n\n const renderToggle: ({ onClick }: {\n onClick?: React.MouseEventHandler;\n }) => React.JSX.Element = useCallback(({ onClick }) => (\n \n {section.config.number}\n  \n \n {section.title && ` \\u2013 ${section.title}`}\n \n ), [\n isItemOpened,\n readOnly,\n handleToggle,\n handleClone,\n handleTitleModalOpen,\n section,\n ]);\n\n return (\n <>\n \n \n \n\n \n \n );\n};\n","import './HvacFormSectionContent.scss';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport * as L from 'monocle-ts/Lens';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormAdditionalData, HvacFormAdditionalValue, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { assertNever } from 'src/utils/assert';\n\ntype Props = {\n readonly labelText: string;\n readonly field: FieldPath;\n readonly disabled: boolean;\n};\n\nexport const HvacFormSectionAdditionalInput = ({ labelText, field, disabled }: Props): React.ReactElement => {\n const intl = useIntl();\n const { value: { config } } = useFormField(field);\n\n if (config.element === 'textarea') {\n const placeholder = config.placeholder ? intl.formatMessage({ id: config.placeholder }) : undefined;\n return (\n \n );\n }\n\n return assertNever('Unexpected additional field', { field });\n};\n\nconst TO_TEXT_VALUE = L.lens(\n (value) => (typeof value === 'string' ? value : ''),\n (value) => (): string => value,\n);\n","import './HvacFormSectionAdditionals.scss';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormAdditionalData, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { HvacFormSectionAdditionalInput } from 'src/modules/hvac/views/HvacFormSectionAdditionalInput';\n\ntype Props = {\n readonly path: FieldPath>;\n readonly disabled: boolean;\n};\n\nexport const HvacFormSectionAdditionals = ({ path, disabled }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const { value } = useFormField(path);\n\n return (\n
\n {value.map((field, index) => (\n \n ))}\n
\n );\n};\n","import './HvacFormSectionContent.scss';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ResetIcon } from 'src/modules/common/icons/ResetIcon';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacConfigOption, HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormData, HvacFormSectionAnswerData } from 'src/modules/hvac/types/HvacFormData';\nimport { HvacFormSectionAdditionals } from 'src/modules/hvac/views/HvacFormSectionAdditionals';\nimport { HvacFormSectionFormBlock } from 'src/modules/hvac/views/HvacFormSectionFormBlock';\nimport { HvacFormSetupField } from 'src/modules/hvac/views/HvacFormSetupField';\nimport { HvacFormSetupOption } from 'src/modules/hvac/views/HvacFormSetupOption';\n\ntype Props = {\n readonly path: FieldPath;\n readonly disabled: boolean;\n readonly config: HvacConfigSection;\n readonly onClear: () => void;\n};\n\nexport const HvacFormSectionContent = ({\n path,\n disabled,\n config,\n onClear,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const { value: answer } = useFormField(path);\n\n return (\n
\n
\n \n {config.explanation !== null && (\n \n )}\n \n\n \n \n\n
\n \n
\n \n
\n\n }\n level={answer.actual.option?.class ?? null}\n >\n \n\n \n \n\n }\n level={answer.future.option?.class ?? null}\n >\n \n\n \n \n
\n );\n};\n\nfunction renderActualSetupOption(\n option: HvacConfigOption,\n): React.ReactElement {\n return (\n }\n comment={option.explanation && }\n renderComment={true}\n renderEfficiencyLabel={true}\n energyEfficiencyClass={option.class}\n />\n );\n}\n\nfunction renderActualSetupOptionSelected(\n option: HvacConfigOption,\n): React.ReactElement {\n return (\n }\n comment={option.explanation && }\n renderComment={false}\n renderEfficiencyLabel={false}\n />\n );\n}\n\nfunction renderFutureSetupOption(\n option: HvacConfigOption,\n): React.ReactElement {\n return (\n }\n comment={option.explanation && }\n renderComment={true}\n renderEfficiencyLabel={true}\n energyEfficiencyClass={option.class}\n />\n );\n}\n\nfunction renderFutureSetupOptionSelected(\n option: HvacConfigOption,\n): React.ReactElement {\n return (\n }\n comment={option.explanation && }\n renderComment={false}\n renderEfficiencyLabel={false}\n />\n );\n}\n","import './HvacFormSectionCopy.scss';\nimport { AccordionItem } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormField } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacConfigSection } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormChapterData, HvacFormData, HvacFormSectionCopyData } from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormAnswer } from 'src/modules/hvac/utils/getDefaultFormAnswer';\nimport { HvacFormSectionContent } from 'src/modules/hvac/views/HvacFormSectionContent';\nimport {\n HvacFormSectionCopyDeleteConfirmationModal,\n} from 'src/modules/hvac/views/HvacFormSectionCopyDeleteConfirmationModal';\nimport { HvacFormSectionCopyTitleModal } from 'src/modules/hvac/views/HvacFormSectionCopyTitleModal';\nimport { HvacFormSectionHeader } from 'src/modules/hvac/views/HvacFormSectionHeader';\n\ntype Props = {\n readonly path: FieldPath;\n readonly config: HvacConfigSection;\n readonly disabled: boolean;\n readonly readOnly: boolean;\n readonly sectionIndex: number;\n readonly copyIndex: number;\n};\n\nexport const HvacFormSectionCopy = ({\n path, config, disabled, readOnly, sectionIndex, copyIndex,\n}: Props): React.ReactElement => {\n const [isItemOpened, setItemOpened] = useState(false);\n const [isDeleteConfirmationModalOpened, setDeleteConfirmationModalOpened] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const field = path.at('sections').at(sectionIndex).at('copies').at(copyIndex);\n\n const { value: section } = useFormField(field);\n\n const handleClick = useCallback((\n {\n isOpen,\n event,\n }: {\n isOpen: boolean;\n event: React.MouseEvent;\n },\n ) => {\n setItemOpened(isOpen);\n\n if (isOpen) {\n event.currentTarget.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n const handleDeleteConfirmationModalOpen = useCallback(() => {\n setDeleteConfirmationModalOpened(true);\n }, []);\n\n const handleDeleteConfirmationModalCancel = useCallback(() => {\n setDeleteConfirmationModalOpened(false);\n }, []);\n\n const handleDeleteConfirmationModalSubmit = useCallback(() => {\n const copiesPath = path.at('sections').at(sectionIndex).at('copies');\n const copiesValues = copiesPath.value\n .get(path.form.currentState)\n .filter((_, index) => index !== copyIndex);\n\n path.form.change(pipe(\n path.form.currentState,\n copiesPath.value.set(copiesValues),\n ));\n\n setDeleteConfirmationModalOpened(false);\n }, [path, copyIndex, sectionIndex]);\n\n const handleClear = useCallback(() => {\n const answer = getDefaultFormAnswer(config);\n\n field.form.change(pipe(\n field.form.currentState,\n field.at('answer').value.set(answer),\n ));\n }, [field, config]);\n\n const handleModalOpen = useCallback(() => {\n setModalOpen(true);\n }, []);\n const handleModalCancel = useCallback(() => {\n setModalOpen(false);\n }, []);\n const handleModalSubmit = useCallback((title: string) => {\n setModalOpen(false);\n\n field.form.change(pipe(\n field.form.currentState,\n field.at('title').value.set(title),\n ));\n }, [field]);\n\n const renderToggle: ({ onClick }: {\n onClick?: React.MouseEventHandler;\n }) => React.JSX.Element = useCallback(({ onClick }) => (\n \n – {section.title}\n \n ), [\n isItemOpened,\n disabled,\n readOnly,\n handleDeleteConfirmationModalOpen,\n handleModalOpen,\n config.name,\n section,\n ]);\n\n return (\n <>\n \n \n \n\n \n\n – {section.title}}\n open={isDeleteConfirmationModalOpened}\n onClose={handleDeleteConfirmationModalCancel}\n onSubmit={handleDeleteConfirmationModalSubmit}\n />\n \n );\n};\n","import './HvacFormSectionCopyDeleteConfirmationModal.scss';\nimport { WarningFilled } from '@carbon/icons-react';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { BodyText } from 'src/modules/common/typography/BodyText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n sectionName: React.ReactNode;\n open: boolean;\n onClose: () => void;\n onSubmit: () => void;\n};\n\nexport const HvacFormSectionCopyDeleteConfirmationModal = (\n { sectionName, open, onClose, onSubmit }: Props,\n): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n }\n iconDescription={intl.formatMessage({ id: 'modal/close/label' })}\n labelClassName=\"bp-hvac-form-section-copy-delete-confirmation-modal__label\"\n />\n\n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { useForm } from '@form-ts/react';\nimport { constNull } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly open: boolean;\n readonly title: string;\n readonly onCancel: () => void;\n readonly onSubmit: (title: string) => void;\n};\n\nexport const HvacFormSectionCopyTitleModal = ({ open, title, onSubmit, onCancel }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const form = useForm('hvac.section.copy.title', {\n reinitialize: true,\n initialValues: title,\n });\n\n const handleSubmit = useCallback(() => {\n onSubmit(form.currentState.values);\n }, [form, onSubmit]);\n const handleCancel = useCallback(() => {\n form.reset(form.initialState);\n onCancel();\n }, [form, onCancel]);\n\n return (\n \n \n\n \n \n }\n maxLength={80}\n />\n \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './HvacFormSectionFormBlock.scss';\nimport { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { EnergyEfficiencyLabel } from 'src/modules/common/components/EnergyEfficiencyLabel';\nimport { LABELS } from 'src/modules/common/constants/energyEfficiencyLabels';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n readonly title: React.ReactNode;\n readonly level: EnergyEfficiencyClass | null;\n readonly children: React.ReactNode;\n};\n\nexport const HvacFormSectionFormBlock = ({ title, level, children }: Props): React.ReactElement => (\n
\n
\n \n {title}\n \n\n
\n \n {level === null ? '\\u2013' : LABELS[level]}\n \n
\n
\n\n
\n {children}\n
\n
\n);\n","import './HvacFormSectionHeader.scss';\nimport { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport { ChevronDown, ChevronUp, OverflowMenuVertical } from '@carbon/icons-react';\nimport clsx from 'clsx';\nimport React, { MouseEventHandler, MutableRefObject, memo, useCallback, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomMenu } from 'src/modules/common/components/CustomMenu';\nimport { CustomMenuItem } from 'src/modules/common/components/CustomMenuItem';\nimport { CustomToggle } from 'src/modules/common/components/CustomToggle';\nimport { EnergyEfficiencyTransition } from 'src/modules/common/components/EnergyEfficiencyTransition';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { CopyIcon } from 'src/modules/common/icons/CopyIcon';\nimport { DeleteIcon } from 'src/modules/common/icons/DeleteIcon';\nimport { EditIcon } from 'src/modules/common/icons/EditIcon';\n\ntype Props = {\n readonly actual: EnergyEfficiencyClass | null;\n readonly future: EnergyEfficiencyClass | null;\n readonly disabled: boolean;\n readonly readOnly: boolean;\n readonly children: React.ReactNode;\n readonly isItemOpened: boolean;\n readonly isCopy: boolean;\n readonly wrapperRef?: MutableRefObject;\n\n readonly onClick?: MouseEventHandler;\n readonly onToggle?: () => void;\n readonly onClone?: () => void;\n readonly onRemove?: () => void;\n readonly onRename?: () => void;\n};\n\nexport const HvacFormSectionHeader = memo(({\n actual,\n future,\n disabled,\n readOnly,\n isItemOpened,\n isCopy,\n wrapperRef,\n onClick,\n onToggle,\n onClone,\n onRemove,\n onRename,\n children,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const isRenameExist = useMemo(() => onRename !== undefined, [onRename]);\n const isCloneExist = useMemo(() => onClone !== undefined, [onClone]);\n const isRemoveExist = useMemo(() => onRemove !== undefined, [onRemove]);\n\n const handleClone = useCallback((event: React.MouseEvent) => {\n stopPropagation(event);\n onClone?.();\n }, [onClone]);\n const handleRemove = useCallback((event: React.MouseEvent) => {\n stopPropagation(event);\n onRemove?.();\n }, [onRemove]);\n const handleRename = useCallback((event: React.MouseEvent) => {\n stopPropagation(event);\n onRename?.();\n }, [onRename]);\n const handleClick = useCallback((event: React.MouseEvent) => {\n stopPropagation(event);\n }, []);\n\n return (\n null}\n style={{\n opacity: readOnly ? 0.5 : undefined,\n pointerEvents: readOnly ? 'none' : 'auto',\n }}\n >\n \n {isItemOpened ? (\n \n ) : (\n \n )}\n \n\n
\n \n {children}\n \n\n \n \n
\n \n\n
\n
\n {onToggle !== undefined && (\n \n )}\n
\n\n {(isRenameExist || isCloneExist || isRemoveExist) && (\n e?.preventDefault()}\n flipped={true}\n className=\"bp-hvac-form-section-header__menu\"\n iconDescription={intl.formatMessage({ id: 'hvac/form/section/actions' })}\n tooltipPosition=\"bottom\"\n disabled={readOnly || disabled}\n renderIcon={() => }\n >\n {isRenameExist && (\n \n
\n \n
\n\n \n \n )}\n />\n )}\n\n {isCloneExist && (\n \n
\n \n
\n\n \n \n )}\n />\n )}\n\n {isRemoveExist && (\n \n
\n \n
\n\n \n \n )}\n />\n )}\n \n )}\n
\n \n );\n});\n\nfunction stopPropagation(event: React.MouseEvent): void {\n event.stopPropagation();\n}\n","import './HvacFormSectionContent.scss';\nimport './HvacFormSetupField.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React, { useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacConfigOption } from 'src/modules/hvac/types/HvacConfig';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly field: FieldPath;\n readonly disabled: boolean;\n readonly options: ReadonlyArray;\n readonly title: string;\n readonly renderOption: (option: HvacConfigOption) => React.ReactElement;\n readonly renderSelectedOption: (option: HvacConfigOption) => React.ReactElement;\n};\n\nexport const HvacFormSetupField = ({\n field,\n disabled,\n options,\n title,\n renderOption,\n renderSelectedOption,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const getOptionLabel = useCallback((option: HvacConfigOption | null) => (\n option\n ? intl.formatMessage({ id: option.title })\n : ''\n ), [intl]);\n\n return (\n \n );\n};\n","import './HvacFormSetupOption.scss';\nimport { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { EnergyEfficiencyLabel } from 'src/modules/common/components/EnergyEfficiencyLabel';\nimport { EnergyEfficiencyLabelWrapper } from 'src/modules/common/components/EnergyEfficiencyLabelWrapper';\nimport { LABELS } from 'src/modules/common/constants/energyEfficiencyLabels';\n\ntype Props = {\n readonly label: React.ReactNode;\n readonly comment: React.ReactNode;\n readonly renderComment: boolean;\n readonly renderEfficiencyLabel?: boolean;\n readonly energyEfficiencyClass?: EnergyEfficiencyClass;\n};\n\nexport const HvacFormSetupOption = ({\n label,\n comment,\n renderComment,\n renderEfficiencyLabel,\n energyEfficiencyClass,\n}: Props): React.ReactElement => (\n
\n {renderEfficiencyLabel && (\n
\n \n {energyEfficiencyClass ? LABELS[energyEfficiencyClass] : '\\u2013' }\n \n
\n )}\n\n
\n
\n
\n {label}\n
\n
\n\n {(renderComment && comment) && (\n
\n {comment}\n
\n )}\n
\n
\n);\n","import './HvacResultEnergyElectricalView.scss';\nimport { EnergySource, getCarbonIntensityEditable, ProjectHvacConsumption } from '@belimo-retrofit-portal/logic';\nimport { FieldPath } from '@form-ts/core';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CarbonIntensityUnit } from 'src/modules/common/components/CarbonIntensityUnit';\nimport { EnergySourceUnit } from 'src/modules/common/components/EnergySourceUnit';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly path: FieldPath;\n readonly disabled: boolean;\n readonly tooltip?: React.ReactNode;\n};\n\nexport const HvacResultEnergyElectricalView = ({ path, disabled, tooltip }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n
\n \n \n\n {tooltip}\n
\n )}\n field={path.at('annualEnergyUse')}\n disabled={disabled}\n autoComplete=\"off\"\n endAdornment={}\n />\n\n }\n />\n \n );\n};\n","import './HvacResultEnergyPricesView.scss';\nimport { CurrencyCode, EnergySource, HvacArea } from '@belimo-retrofit-portal/logic';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { EnergyPriceUnit } from 'src/modules/common/components/EnergyPriceUnit';\nimport { DECIMAL_PLACES, MAX_TRILLION } from 'src/modules/common/constants/decimal';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormAssessmentData, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly path: FieldPath;\n readonly currency: CurrencyCode;\n readonly heatingEnabled: boolean;\n readonly coolingEnabled: boolean;\n readonly horizontal?: boolean;\n};\n\nexport const HvacResultEnergyPricesView = ({\n path,\n currency,\n heatingEnabled,\n coolingEnabled,\n horizontal,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const energyInfo = useFormWatch(path.form, path.value.get);\n const visibleSources = getVisibleEnergySources(energyInfo, heatingEnabled, coolingEnabled);\n\n return (\n
\n {visibleSources.map((source) => (\n \n )}\n />\n ))}\n
\n );\n};\n\nfunction getVisibleEnergySources(\n formData: HvacFormAssessmentData,\n heatingEnabled: boolean,\n coolingEnabled: boolean,\n): EnergySource[] {\n return Array.from(new Set([\n ...getSystemEnergySources(formData, HvacArea.HEATING, heatingEnabled),\n ...getSystemEnergySources(formData, HvacArea.COOLING, coolingEnabled),\n ]));\n}\n\nfunction getSystemEnergySources(\n formData: HvacFormAssessmentData,\n systemType: HvacArea,\n systemEnabled: boolean,\n): EnergySource[] {\n return systemEnabled\n ? [EnergySource.ELECTRICITY, formData[systemType].thermal.energySource]\n : [EnergySource.ELECTRICITY];\n}\n","import './HvacResultEnergyThermalView.scss';\nimport { EnergySource, getCarbonIntensityEditable, ProjectHvacConsumption } from '@belimo-retrofit-portal/logic';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CarbonIntensityUnit } from 'src/modules/common/components/CarbonIntensityUnit';\nimport { EnergySourceUnit } from 'src/modules/common/components/EnergySourceUnit';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly path: FieldPath;\n readonly disabled: boolean;\n readonly energySources: ReadonlyArray;\n};\n\nexport const HvacResultEnergyThermalView = ({ path, disabled, energySources }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const energySource = useFormWatch(path.form, path.at('energySource').value.get);\n\n return (\n
\n \n\n }\n />\n\n }\n />\n
\n );\n};\n\nfunction renderEnergySourceOption(option: EnergySource): React.ReactElement {\n return ;\n}\n","import './HvacResultEnergyView.scss';\nimport { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport { Information } from '@carbon/icons-react';\nimport { Tooltip } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport {\n CURRENCY_CODE_OPTIONS,\n ENERGY_SOURCE_COOLING_OPTIONS,\n ENERGY_SOURCE_HEATING_OPTIONS,\n} from 'src/modules/common/constants/options';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { LightningIcon } from 'src/modules/common/icons/LightningIcon';\nimport { BodyLargeRegularText } from 'src/modules/common/typography/BodyLargeRegularText';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { HvacResultEnergyElectricalView } from 'src/modules/hvac/views/HvacResultEnergyElectricalView';\nimport { HvacResultEnergyPricesView } from 'src/modules/hvac/views/HvacResultEnergyPricesView';\nimport { HvacResultEnergyThermalView } from 'src/modules/hvac/views/HvacResultEnergyThermalView';\n\ntype Props = {\n readonly form: FormController;\n};\n\nexport const HvacResultEnergyView = ({ form }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const currency = useFormWatch(form, form.field.at('currency').value.get);\n const heatingEnabled = useFormWatch(form, form.field.at('assessment').at('heating').at('enabled').value.get);\n const coolingEnabled = useFormWatch(form, form.field.at('assessment').at('cooling').at('enabled').value.get);\n const ventilationEnabled = useFormWatch(form, form.field.at('assessment').at('ventilation').at('enabled').value.get);\n\n return (\n <>\n }>\n
\n
\n
\n
\n
\n \n
\n\n \n \n \n
\n
\n\n \n
\n\n
\n
\n
\n
\n \n
\n\n \n \n \n
\n
\n\n \n
\n
\n\n
\n
\n
\n
\n
\n \n
\n\n \n \n \n
\n
\n\n }\n className={clsx(\n 'bp-hvac-result-energy-view__tooltip',\n {\n 'bp-hvac-result-energy-view__tooltip--disabled': !heatingEnabled,\n },\n )}\n >\n \n \n )}\n />\n
\n\n
\n
\n
\n
\n \n
\n\n \n \n \n
\n
\n\n }\n className={clsx(\n 'bp-hvac-result-energy-view__tooltip',\n {\n 'bp-hvac-result-energy-view__tooltip--disabled': !coolingEnabled,\n },\n )}\n >\n \n \n )}\n />\n
\n\n
\n
\n
\n
\n \n
\n\n \n \n \n
\n
\n\n
\n\n \n
\n
\n \n\n }>\n
\n
\n
\n \n
\n
\n
\n\n
\n \n
\n
\n \n );\n};\n\nfunction renderCurrencyCodeOption(option: CurrencyCode): React.ReactElement {\n return ;\n}\n","import './HvacResultSavingsExplanation.scss';\nimport { HvacResultsOverall } from '@belimo-retrofit-portal/logic';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { BottomNavigationHelper } from 'src/modules/common/components/BottomNavigationHelper';\nimport { FormattedAmount } from 'src/modules/common/components/FormattedAmount';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { SavingsAmount } from 'src/modules/common/components/SavingsAmount';\nimport { WarningIcon } from 'src/modules/common/icons/WarningIcon';\nimport { BodyDesktopSmallLightText } from 'src/modules/common/typography/BodyDesktopSmallLightText';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { TitleText } from 'src/modules/common/typography/TitleText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly projectId: string;\n readonly form: FormController;\n readonly results: HvacResultsOverall;\n readonly inaccurate: boolean;\n};\n\nexport const HvacResultSavingsExplanation = ({ projectId, form, results, inaccurate }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const projectBaseUrl = `/project/${encodeURIComponent(projectId)}`;\n const projectSchemaUrl = `/project/${encodeURIComponent(projectId)}/schema`;\n\n const currency = useFormWatch(form, form.field.at('currency').value.get);\n\n return (\n
\n
\n
\n \n \n \n\n \n \n \n
\n\n {inaccurate && (\n
\n
\n \n
\n
\n \n
\n
\n )}\n\n \n\n
\n \n \n \n\n \n \n \n
\n
\n\n \n\n \n \n \n
\n );\n};\n","import './HvacResultSavingsOverall.scss';\nimport { EnergySource, HvacArea, HvacResults } from '@belimo-retrofit-portal/logic';\nimport { Information } from '@carbon/icons-react';\nimport { Stack, Tooltip } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { EnergyEfficiencyLabelWrapper } from 'src/modules/common/components/EnergyEfficiencyLabelWrapper';\nimport { EnergyEfficiencyStack } from 'src/modules/common/components/EnergyEfficiencyStack';\nimport { EnergySavingsUnit } from 'src/modules/common/components/EnergySavingsUnit';\nimport { FormattedMathMessage } from 'src/modules/common/components/FormattedMathMessage';\nimport { SavingsAmount } from 'src/modules/common/components/SavingsAmount';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { SavingTileCard } from 'src/modules/common/components/SavingTileCard';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { CloudIcon } from 'src/modules/common/icons/CloudIcon';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { FanIcon } from 'src/modules/common/icons/FanIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { LightningIcon } from 'src/modules/common/icons/LightningIcon';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly form: FormController;\n readonly results: HvacResults;\n};\n\nexport const HvacResultSavingsOverall = ({ form, results }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const currency = useFormWatch(form, form.field.at('currency').value.get);\n const heatingEnabled = useFormWatch(form, form.field.at('assessment').at('heating').at('enabled').value.get);\n const coolingEnabled = useFormWatch(form, form.field.at('assessment').at('cooling').at('enabled').value.get);\n const ventilationEnabled = useFormWatch(form, form.field.at('assessment').at('ventilation').at('enabled').value.get);\n\n return (\n <>\n \n
\n
\n
\n\n
\n

\n \n

\n\n
 
\n\n

\n \n

\n
\n
\n\n \n
\n
\n \n
\n\n \n \n \n
\n\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n
\n\n \n
\n
\n \n
\n\n \n \n \n
\n\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n
\n\n \n
\n
\n \n
\n\n

\n \n

\n
\n\n
\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n
\n\n
\n
\n \n \n \n
\n\n
\n
\n
\n \n
\n
\n\n
 
\n\n
\n
\n \n
\n
\n
\n
\n \n \n\n
\n \n )}\n amountTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/thermalSavings/diagram/label' })}\n icon={}\n savingTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/thermalSavings/title' })}\n unit={}\n small={false}\n >\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n\n \n )}\n amountTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/electricalSavings/diagram/label' })}\n icon={}\n savingTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/electricalSavings/title' })}\n unit={}\n small={false}\n >\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n\n \n )}\n amountTitle={(\n \n )}\n icon={}\n savingTitle={(\n \n )}\n unit={(\n
\n \n\n \n )}\n >\n \n \n
\n )}\n small={false}\n >\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n \n
\n \n );\n};\n","import './HvacResultSavingsSystem.scss';\nimport { EnergySource, HvacArea, HvacResultsArea } from '@belimo-retrofit-portal/logic';\nimport { Stack } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { EnergyEfficiencyStack } from 'src/modules/common/components/EnergyEfficiencyStack';\nimport { EnergySavingsUnit } from 'src/modules/common/components/EnergySavingsUnit';\nimport { SavingsAmount } from 'src/modules/common/components/SavingsAmount';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { SavingTileCard } from 'src/modules/common/components/SavingTileCard';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { LightningIcon } from 'src/modules/common/icons/LightningIcon';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { HeadlineSmallText } from 'src/modules/common/typography/HeadlineSmallText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly form: FormController;\n readonly results: HvacResultsArea;\n};\n\nexport const HvacResultSavingsSystem = ({ form, results }: Props): React.ReactElement => {\n const intl = useIntl();\n const currency = useFormWatch(form, form.field.at('currency').value.get);\n\n return (\n \n
\n
\n
\n \n \n \n\n \n \n \n
\n\n
\n \n
\n
\n\n
\n
\n \n \n \n\n \n \n \n
\n\n
\n \n
\n
\n
\n\n
\n {results.type !== HvacArea.VENTILATION && (\n \n )}\n amountTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/thermalSavings/diagram/label' })}\n icon={}\n savingTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/thermalSavings/title' })}\n unit={}\n small={false}\n >\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n )}\n\n \n )}\n amountTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/electricalSavings/diagram/label' })}\n icon={}\n savingTitle={intl.formatMessage({ id: 'hvac/result/savings/potential/electricalSavings/title' })}\n unit={}\n small={false}\n >\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n\n \n )}\n amountTitle={(\n \n )}\n icon={}\n savingTitle={(\n \n )}\n unit={}\n small={false}\n >\n {results.type !== HvacArea.VENTILATION && (\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n )}\n\n
\n
\n \n
\n\n
\n \n
\n
\n \n
\n
\n \n
\n
\n );\n};\n","import './HvacResultSavingsView.scss';\nimport { HvacArea, HvacResults } from '@belimo-retrofit-portal/logic';\nimport { TabPanel, TabPanels, Tabs, Tooltip } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomTab, CustomTabList } from 'src/modules/common/components/CustomTabList';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { HvacResultSavingsExplanation } from 'src/modules/hvac/views/HvacResultSavingsExplanation';\nimport { HvacResultSavingsOverall } from 'src/modules/hvac/views/HvacResultSavingsOverall';\nimport { HvacResultSavingsSystem } from 'src/modules/hvac/views/HvacResultSavingsSystem';\n\ntype Props = {\n readonly projectId: string;\n readonly form: FormController;\n readonly results: HvacResults;\n readonly inaccurate: boolean;\n};\n\nconst overallTabIndex = 0;\nconst heatingTabIndex = 1;\nconst coolingTabIndex = 2;\nconst ventilationTabIndex = 3;\n\nexport const HvacResultSavingsView = ({ projectId, form, results, inaccurate }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const [activeTab, setActiveTab] = useState(0);\n\n const handleTabChange = useCallback((state: { selectedIndex: number }) => {\n setActiveTab(state.selectedIndex);\n }, []);\n\n const heatingEnabled = useFormWatch(form, form.field.at('assessment').at('heating').at('enabled').value.get);\n const coolingEnabled = useFormWatch(form, form.field.at('assessment').at('cooling').at('enabled').value.get);\n const ventilationEnabled = useFormWatch(form, form.field.at('assessment').at('ventilation').at('enabled').value.get);\n\n useEffect(() => {\n if (activeTab === heatingTabIndex && !heatingEnabled) {\n setActiveTab(overallTabIndex);\n }\n if (activeTab === coolingTabIndex && !coolingEnabled) {\n setActiveTab(overallTabIndex);\n }\n if (activeTab === ventilationTabIndex && !ventilationEnabled) {\n setActiveTab(overallTabIndex);\n }\n }, [activeTab, heatingEnabled, coolingEnabled, ventilationEnabled]);\n\n return (\n <>\n }>\n
\n \n \n \n \n \n\n {heatingEnabled ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n\n {coolingEnabled ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n\n {ventilationEnabled ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n \n\n \n \n \n \n\n \n {results.perArea[HvacArea.HEATING].enabled && (\n \n )}\n \n\n \n {results.perArea[HvacArea.COOLING].enabled && (\n \n )}\n \n\n \n {results.perArea[HvacArea.VENTILATION].enabled && (\n \n )}\n \n \n \n
\n
\n\n \n \n );\n};\n","import './HvacResultSummaryChapter.scss';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport { modify } from 'monocle-ts/Lens';\nimport React, { useCallback } from 'react';\nimport { CustomToggle } from 'src/modules/common/components/CustomToggle';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormChapterData, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\n\ntype Props = {\n readonly path: FieldPath;\n readonly title: React.ReactNode;\n readonly icon: React.ReactNode;\n};\n\nexport const HvacResultSummaryChapter = ({ path, title, icon }: Props): React.ReactElement => {\n const enabled = useFormWatch(path.form, path.at('enabled').value.get);\n\n const handleToggle = useCallback(() => {\n path.form.change(pipe(\n path.form.currentState,\n pipe(\n path.at('enabled').value,\n modify((value) => !value),\n ),\n ));\n }, [path]);\n\n return (\n
\n
\n
\n {icon}\n
\n\n \n
\n\n
\n \n {title}\n \n
\n
\n );\n};\n","import './HvacResultSummaryView.scss';\nimport { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport { modify } from 'monocle-ts/Lens';\nimport React, { useCallback, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { CircleCheckFilledIcon } from 'src/modules/common/icons/CircleCheckFilledIcon';\nimport { CommentIcon } from 'src/modules/common/icons/CommentIcon';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { FanIcon } from 'src/modules/common/icons/FanIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { ResetIcon } from 'src/modules/common/icons/ResetIcon';\nimport { BodyLargeLightText } from 'src/modules/common/typography/BodyLargeLightText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { HvacFormAssessmentData, HvacFormData } from 'src/modules/hvac/types/HvacFormData';\nimport { getDefaultFormSection } from 'src/modules/hvac/utils/getDefaultFormSection';\nimport { HvacFormClearConfirmationModal } from 'src/modules/hvac/views/HvacFormClearConfirmationModal';\nimport { HvacFormCommentModal } from 'src/modules/hvac/views/HvacFormCommentModal';\nimport { HvacResultSummaryChapter } from 'src/modules/hvac/views/HvacResultSummaryChapter';\nimport { PROJECT_HVAC_DEFAULT_DATA } from 'src/modules/project-new/constants/projectData';\n\ntype Props = {\n readonly form: FormController;\n};\n\nexport const HvacResultSummaryView = ({ form }: Props): React.ReactElement => {\n const [isCommentModalOpen, setIsCommentModalOpen] = useState(false);\n const handleCommentOpen = useCallback(() => {\n setIsCommentModalOpen(true);\n }, []);\n const handleCommentCancel = useCallback(() => {\n setIsCommentModalOpen(false);\n }, []);\n const handleCommentSubmit = useCallback((comment: string) => {\n setIsCommentModalOpen(false);\n\n form.change(pipe(\n form.currentState,\n form.field.at('assessment').at('comment').value.set(comment),\n ));\n }, [form]);\n\n const [isClearModalOpen, setIsClearModalOpen] = useState(false);\n const handleClearOpen = useCallback(() => {\n setIsClearModalOpen(true);\n }, []);\n const handleClearCancel = useCallback(() => {\n setIsClearModalOpen(false);\n }, []);\n const handleClearSubmit = useCallback(() => {\n setIsClearModalOpen(false);\n\n form.change(pipe(\n form.currentState,\n pipe(\n form.field.at('assessment').value,\n modify((previous): HvacFormAssessmentData => ({\n comment: '',\n prices: PROJECT_HVAC_DEFAULT_DATA.prices,\n heating: {\n ...PROJECT_HVAC_DEFAULT_DATA.areas[HvacArea.HEATING],\n enabled: previous.heating.enabled,\n sections: previous.heating.sections.map((section) => getDefaultFormSection(section.config)),\n },\n cooling: {\n ...PROJECT_HVAC_DEFAULT_DATA.areas[HvacArea.COOLING],\n enabled: previous.cooling.enabled,\n sections: previous.cooling.sections.map((section) => getDefaultFormSection(section.config)),\n },\n ventilation: {\n ...PROJECT_HVAC_DEFAULT_DATA.areas[HvacArea.VENTILATION],\n enabled: previous.ventilation.enabled,\n sections: previous.ventilation.sections.map((section) => getDefaultFormSection(section.config)),\n },\n })),\n ),\n ));\n }, [form]);\n\n const comment = useFormWatch(form, form.field.at('assessment').at('comment').value.get);\n\n return (\n <>\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n\n
\n \n
\n
\n\n \n \n\n
\n \n
\n\n
\n {comment.length > 0 && }\n
\n \n
\n
\n\n \n\n
\n }\n icon={}\n />\n\n }\n icon={}\n />\n\n }\n icon={}\n />\n
\n
\n\n \n\n \n \n );\n};\n","import { createTrigger } from 'src/utils/createTrigger';\n\nexport const LOADER_SHOW = createTrigger('LOADER_SHOW');\nexport const LOADER_HIDE = createTrigger('LOADER_HIDE');\n","import { done, start } from 'nprogress';\nimport { SagaIterator } from 'redux-saga';\nimport { LOADER_HIDE, LOADER_SHOW } from 'src/modules/loader/actions/LoaderActions';\nimport { call, take } from 'typed-redux-saga';\n\nexport function* loaderSaga(): SagaIterator {\n const VISIBLE = new Map();\n\n while (true) {\n const action = yield* take([LOADER_SHOW.is, LOADER_HIDE.is]);\n\n const key = action.meta;\n const show = LOADER_SHOW.is(action);\n\n if (show) {\n if (VISIBLE.has(key)) {\n continue;\n }\n\n VISIBLE.set(key, null);\n if (VISIBLE.size === 1) {\n yield* call(start);\n }\n } else {\n if (!VISIBLE.has(key)) {\n continue;\n }\n\n VISIBLE.delete(key);\n if (VISIBLE.size === 0) {\n yield* call(done);\n }\n }\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { LOADER_HIDE, LOADER_SHOW } from 'src/modules/loader/actions/LoaderActions';\nimport { put } from 'typed-redux-saga';\n\nexport function* showLoadingIndicator(key: string): SagaIterator {\n yield* put(LOADER_SHOW.trigger(undefined, key));\n}\n\nexport function* hideLoadingIndicator(key: string): SagaIterator {\n yield* put(LOADER_HIDE.trigger(undefined, key));\n}\n","import { FormController } from '@form-ts/core';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { LoginFormData } from 'src/modules/login/types/LoginFormData';\nimport { createActions } from 'src/utils/createActions';\n\nexport const LOGIN_PERFORM = createActions, AuthUser>('LOGIN_PERFORM');\n","import { FormController } from '@form-ts/core';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { RequestAccessFormData } from 'src/modules/login/types/RequestAccessFormData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const REQUEST_ACCESS_SUBMIT =\n createTrigger>('REQUEST_ACCESS_SUBMIT');\n","import { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { User } from 'src/modules/common/types/User';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const WHOAMI_ACTION = createTrigger('WHOAMI');\n","import { COUNTRY_CODES } from '@belimo-retrofit-portal/logic';\nimport { trim } from 'fp-ts/string';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { LoginFormData } from 'src/modules/login/types/LoginFormData';\nimport { RequestAccessFormData } from 'src/modules/login/types/RequestAccessFormData';\n\nexport const LOGIN_FORM_SCHEMA: FormRule = R.struct({\n username: R.allOf([R.nonEmpty(), R.email()]),\n password: R.nonEmpty(),\n});\n\nexport const REQUEST_ACCESS_FORM_SCHEMA: FormRule = R.struct({\n email: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.maxLength(40),\n R.email(),\n ]),\n firstName: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.maxLength(40),\n ]),\n lastName: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.maxLength(40),\n ]),\n companyName: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.maxLength(40),\n ]),\n countryCode: R.literal(COUNTRY_CODES),\n});\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useAction } from 'src/hooks/useAction';\nimport { LoginLayout } from 'src/modules/common/layouts/LoginLayout';\nimport { CONFIG_LANGUAGE_SWITCH } from 'src/modules/config/actions/ConfigActions';\nimport { REQUEST_ACCESS_SUBMIT } from 'src/modules/login/actions/RequestAccessActions';\nimport { LoginScreen } from 'src/modules/login/views/LoginScreen';\n\nexport const LoginPage = (): React.ReactElement => {\n const intl = useIntl();\n const switchLanguage = useAction(CONFIG_LANGUAGE_SWITCH.request);\n const submitRequestAccess = useAction(REQUEST_ACCESS_SUBMIT.trigger);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'login/pageTitle' })}\n \n\n \n \n \n \n );\n};\n","import { loginUserReducer } from 'src/modules/login/reducers/loginUserReducer';\nimport { LoginState } from 'src/modules/login/types/LoginState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: LoginState = {\n user: null,\n};\n\nexport const loginReducer = chainReducers(defaultState, [\n loginUserReducer,\n]);\n","import { Action } from 'redux';\nimport { LOGIN_PERFORM } from 'src/modules/login/actions/LoginActions';\nimport { WHOAMI_ACTION } from 'src/modules/login/actions/WhoAmIAction';\nimport { LoginState } from 'src/modules/login/types/LoginState';\n\nexport function loginUserReducer(state: LoginState, action: Action): LoginState {\n if (WHOAMI_ACTION.is(action)) {\n return {\n ...state,\n user: action.data,\n };\n }\n if (LOGIN_PERFORM.isSuccess(action)) {\n return {\n ...state,\n user: action.data,\n };\n }\n\n return state;\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { LOGIN_PERFORM } from 'src/modules/login/actions/LoginActions';\nimport { LOGIN_FORM_SCHEMA } from 'src/modules/login/constants/schema';\nimport { performLogin } from 'src/modules/login/sagas/utils/performLogin';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* loginPerformSaga(action: GetRequestActionType): SagaIterator {\n const form = action.data;\n const values = form.values.get(form.currentState);\n\n const valid = yield* call(formValidate, form, LOGIN_FORM_SCHEMA);\n if (!valid) {\n return;\n }\n\n try {\n yield* call(logDebug, 'Logging in...');\n yield* put(LOGIN_PERFORM.pending());\n yield* call(formSubmitStart, form);\n yield* delay(500);\n\n const user = yield* call(performLogin, values);\n yield* put(replace('/'));\n\n yield* call(logDebug, 'Logging in... done', user);\n yield* put(LOGIN_PERFORM.success(user));\n\n // no need to unlock the form until router transition is completed\n // so there is no `formSubmitSuccess` call\n } catch (error) {\n yield* call(logError, 'Logging in... error', error);\n yield* put(LOGIN_PERFORM.failure(NativeError.wrap(error)));\n\n yield* call(formSubmitFailure, form, {\n username: {\n code: 'invalid',\n path: 'username',\n\n value: values.username,\n message: 'Invalid credentials',\n context: {},\n },\n password: {\n code: 'invalid',\n path: 'password',\n\n value: values.password,\n message: 'Invalid credentials',\n context: {},\n },\n });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { LOGIN_PERFORM } from 'src/modules/login/actions/LoginActions';\nimport { REQUEST_ACCESS_SUBMIT } from 'src/modules/login/actions/RequestAccessActions';\nimport { loginPerformSaga } from 'src/modules/login/sagas/loginPerformSaga';\nimport { requestAccessSubmitSaga } from 'src/modules/login/sagas/requestAccessSubmitSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* loginSaga(): SagaIterator {\n yield* takeLatest(LOGIN_PERFORM.isRequest, loginPerformSaga);\n yield* takeLatest(REQUEST_ACCESS_SUBMIT.is, requestAccessSubmitSaga);\n}\n","import { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { REQUEST_ACCESS_SUBMIT } from 'src/modules/login/actions/RequestAccessActions';\nimport { REQUEST_ACCESS_FORM_SCHEMA } from 'src/modules/login/constants/schema';\nimport { submitRequestAccess } from 'src/modules/login/sagas/utils/submitRequestAccess';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, delay } from 'typed-redux-saga';\n\nexport function* requestAccessSubmitSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const form = action.data;\n const values = form.values.get(form.currentState);\n\n const valid = yield* call(formValidate, form, REQUEST_ACCESS_FORM_SCHEMA);\n if (!valid) {\n return;\n }\n\n try {\n yield* call(logDebug, 'Sending request access...');\n yield* call(formSubmitStart, form);\n\n yield* delay(500);\n yield* call(submitRequestAccess, values);\n\n yield* call(logDebug, 'Sending request access... done');\n yield* call(formSubmitSuccess, form);\n } catch (error) {\n yield* call(logError, 'Sending request access... error', error);\n yield* call(formSubmitFailure, form, {});\n\n yield* call(sentryCatch, error);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { AUTH_USER } from 'src/modules/common/codecs/AuthUser';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadUser(): SagaIterator {\n try {\n const { content } = yield* call(makeRestRequest, 'GET', '/account/profile');\n return yield* call(decodeOrThrow, AUTH_USER, content);\n } catch (error) {\n throw new RuntimeError('Could not load current user', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { loadUser } from 'src/modules/login/sagas/utils/loadUser';\nimport { LoginFormData } from 'src/modules/login/types/LoginFormData';\nimport { call } from 'typed-redux-saga';\n\nexport function* performLogin(form: LoginFormData): SagaIterator {\n try {\n const body = {\n email: form.username,\n password: form.password,\n remember: form.remember,\n };\n\n yield* call(makeRestRequest, 'POST', '/auth/login', body);\n return yield* call(loadUser);\n } catch (error) {\n throw new RuntimeError('Could not perform login', { form }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { call } from 'typed-redux-saga';\n\nexport function* performLogout(): SagaIterator {\n try {\n yield* call(makeRestRequest, 'DELETE', '/auth/logout');\n } catch (error) {\n throw new RuntimeError('Could not perform logout', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { RequestAccessFormData } from 'src/modules/login/types/RequestAccessFormData';\nimport { call } from 'typed-redux-saga';\n\nexport function* submitRequestAccess(form: RequestAccessFormData): SagaIterator {\n try {\n yield* call(makeRestRequest, 'POST', '/auth/request', form);\n } catch (error) {\n throw new RuntimeError('Could not submit request access', { form }, NativeError.wrap(error));\n }\n}\n","import { createSelector } from 'reselect';\nimport { getLoginState } from 'src/modules/login/selectors/getLoginState';\n\nexport const getIsAuthenticated = createSelector([\n getLoginState,\n], (state) => state.user !== null);\n","import { createSelector } from 'reselect';\nimport { getLoginState } from 'src/modules/login/selectors/getLoginState';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getLoggedInUser = createSelector([\n getLoginState,\n], (state) => assertNotNull(\n state.user,\n 'User is not authenticated',\n { state },\n));\n","import { LoginState } from 'src/modules/login/types/LoginState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getLoginState(state: RootState): LoginState {\n return state.login;\n}\n","import './LoginScreen.scss';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { TranslationKey } from '@tolgee/react';\nimport { constNull } from 'fp-ts/function';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { Dropdown } from 'src/modules/common/components/Dropdown';\nimport { TERMS_AND_PRIVACY_LINK_MAP } from 'src/modules/common/constants/links';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { GlobeIcon } from 'src/modules/common/icons/GlobeIcon';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { getEnvironmentLanguages } from 'src/modules/config/selectors/getEnvironmentLanguages';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { PasswordField } from 'src/modules/form/components/PasswordField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { LOGIN_PERFORM } from 'src/modules/login/actions/LoginActions';\nimport { LOGIN_FORM_SCHEMA } from 'src/modules/login/constants/schema';\nimport { LoginFormData } from 'src/modules/login/types/LoginFormData';\nimport { RequestAccessFormData } from 'src/modules/login/types/RequestAccessFormData';\nimport { RequestAccessModal } from 'src/modules/login/views/RequestAccessModal';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly switchLanguage: (language: Language) => void;\n readonly submitRequestAccess: (form: FormController) => void;\n};\n\nexport const LoginScreen = ({ switchLanguage, submitRequestAccess }: Props): React.ReactElement => {\n const requestAccessButtonRef = useRef(null);\n\n const [isRequestAccessModalOpen, setRequestAccessModalOpen] = useState(false);\n const closeRequestForm = useCallback(() => setRequestAccessModalOpen(false), []);\n\n const intl = useIntl();\n\n const form = useForm('login', {\n reinitialize: false,\n initialValues: {\n username: '',\n password: '',\n remember: true,\n },\n });\n\n useFormValidator(form, LOGIN_FORM_SCHEMA);\n\n const formErrors = useFormWatch(form, form.errors.get);\n const isSubmitting = useFormWatch(form, form.submitting.get);\n const isSubmissionFailed = (\n !isSubmitting &&\n Object.keys(formErrors).length > 0 &&\n Object.values(formErrors).every((error) => error?.code === 'invalid')\n );\n\n const submitForm = useAction(LOGIN_PERFORM.request);\n const handleSubmit = useCallback((event: React.FormEvent) => {\n event.preventDefault();\n submitForm(form);\n }, [form, submitForm]);\n\n const language = useSelector(getLanguage);\n const languages = useSelector(getEnvironmentLanguages);\n const termsAndPrivacyLink = TERMS_AND_PRIVACY_LINK_MAP[language];\n\n return (\n <>\n
\n
\n
\n }\n selectedValue={language}\n onChange={switchLanguage}\n shaded={false}\n outlined={true}\n icon={}\n />\n
\n\n
\n

\n \n

\n\n
\n \n \n \n\n setRequestAccessModalOpen(true)}\n aria-label={intl.formatMessage({ id: 'login/requestAccess/button' })}\n >\n \n \n
\n
\n\n
\n \n (\n error && error.code !== 'invalid'\n ? \n : ' '\n )}\n labelText={intl.formatMessage({ id: 'login/username' })}\n type=\"email\"\n size=\"md\"\n disabled={isSubmitting}\n autoFocus={true}\n autoComplete=\"username\"\n placeholder={intl.formatMessage({ id: 'login/emailPlaceholder' })}\n spellCheck={false}\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n renderHint={constNull}\n />\n\n (\n error && error.code !== 'invalid'\n ? \n : ' '\n )}\n labelText={intl.formatMessage({ id: 'login/password' })}\n type=\"password\"\n size=\"lg\"\n disabled={isSubmitting}\n autoComplete=\"current-password\"\n placeholder={intl.formatMessage({ id: 'login/passwordPlaceholder' })}\n spellCheck={false}\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n />\n\n

\n {isSubmissionFailed ? () : null}\n

\n\n
\n
\n }\n field={form.field.at('remember')}\n />\n
\n
\n \n \n \n
\n
\n\n (\n
\n \n
\n )}\n >\n \n \n\n

\n \n

\n\n

\n \n

\n \n
\n
\n
\n\n \n \n \n \n );\n};\n\nconst mailTo = (children: React.ReactNode): React.ReactElement => (\n \n {children}\n
\n);\n\nconst link = (termsAndPrivacyLink: string) => (children: React.ReactNode): React.ReactNode => (\n {children}\n \n);\n\nconst LANGUAGE_KEYS: Record = {\n 'en-US': 'login/language/en-US',\n 'de-CH': 'login/language/de-CH',\n 'fr-FR': 'login/language/fr-FR',\n 'hu-HU': 'login/language/hu-HU',\n 'es-ES': 'login/language/es-ES',\n 'sv-SE': 'login/language/sv-SE',\n 'zh-CN': 'login/language/zh-CN',\n 'it-IT': 'login/language/it-IT',\n 'sr-SR': 'login/language/sr-SR',\n 'mk-MK': 'login/language/mk-MK',\n};\n","import './RequestAccessModal.scss';\nimport { COUNTRY_CODES, CountryCode } from '@belimo-retrofit-portal/logic';\nimport { CheckmarkFilled } from '@carbon/icons-react';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { constNull } from 'fp-ts/function';\nimport React, { useCallback, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { INTL_LOCALE_MAP } from 'src/modules/common/constants/language';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { AutocompleteField } from 'src/modules/form/components/AutocompleteField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { REQUEST_ACCESS_FORM_SCHEMA } from 'src/modules/login/constants/schema';\nimport { RequestAccessFormData } from 'src/modules/login/types/RequestAccessFormData';\n\ntype Props = {\n readonly onClose: () => void;\n readonly onSubmit: (form: FormController) => void;\n};\n\nexport const RequestAccessModal = ({ onClose, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const language = useSelector(getLanguage);\n\n const collator = useMemo(() => new Intl.Collator(INTL_LOCALE_MAP[language]), [language]);\n\n const countryCodesFilteredByLanguage = useMemo(\n () => COUNTRY_CODES.map((code) => ({\n label: intl.formatMessage({ id: `common/country/name/${code}` }),\n value: code,\n }))\n .sort((optionA, optionB) => collator.compare(optionA.label, optionB.label)),\n [intl, collator],\n );\n\n const requestAccessForm = useForm('requestAccess', {\n reinitialize: false,\n initialValues: {\n firstName: '',\n lastName: '',\n companyName: '',\n email: '',\n countryCode: 'CHE',\n },\n });\n useFormValidator(requestAccessForm, REQUEST_ACCESS_FORM_SCHEMA);\n\n const isSubmitting = useFormWatch(requestAccessForm, requestAccessForm.submitting.get);\n const handleSubmit = useCallback((event: React.FormEvent) => {\n event.preventDefault();\n onSubmit(requestAccessForm);\n }, [requestAccessForm, onSubmit]);\n\n const isSubmitted = useFormWatch(requestAccessForm, requestAccessForm.submitSucceded.get);\n if (isSubmitted) {\n return (\n
\n \n\n \n
\n \n\n

\n \n

\n
\n
\n\n \n \n \n \n \n
\n );\n }\n\n return (\n
\n \n\n \n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n
\n\n \n \n \n \n\n \n \n \n \n \n );\n};\n\nfunction renderCountryOption(option: CountryCode): React.ReactElement {\n return ;\n}\n","import { Project } from 'src/modules/common/types/Project';\nimport { UserSnapshot } from 'src/modules/users/types/User';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const MODAL_PROJECT_ERROR_OPEN = createTrigger('MODAL_PROJECT_ERROR_OPEN');\nexport const MODAL_PROJECT_ERROR_RETRY = createActions('MODAL_PROJECT_ERROR_RETRY');\nexport const MODAL_PROJECT_ERROR_CLOSE = createTrigger('MODAL_PROJECT_ERROR_CLOSE');\n\nexport const MODAL_USER_ERROR_OPEN = createTrigger>('MODAL_USER_ERROR_OPEN');\nexport const MODAL_USER_ERROR_RETRY = createActions<\nReadonlyArray,\nReadonlyArray,\nReadonlyArray\n>('MODAL_USER_ERROR_RETRY');\nexport const MODAL_USER_ERROR_CLOSE = createTrigger('MODAL_USER_ERROR_CLOSE');\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { TransitionGroup } from 'react-transition-group';\nimport { ModalWrapper } from 'src/modules/modals/pages/ModalWrapper';\nimport { getModalStack } from 'src/modules/modals/selectors/getModalStack';\nimport { ProjectErrorModal } from 'src/modules/modals/views/ProjectErrorModal';\nimport { UserErrorModal } from 'src/modules/modals/views/UserErrorModal';\n\nexport const ModalStack = (): React.ReactElement => {\n const modals = useSelector(getModalStack);\n\n return (\n \n {modals.map((modal) => {\n if (modal.type === 'project-error') {\n return (\n \n \n \n );\n }\n\n if (modal.type === 'user-error') {\n return (\n \n \n \n );\n }\n\n return null;\n })}\n \n );\n};\n","import * as React from 'react';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\n\ntype Props = {\n readonly in?: boolean;\n readonly children: React.ReactNode;\n};\n\n/* eslint-disable react/destructuring-assignment */\nexport const ModalWrapper = (props: Props): React.ReactElement => (\n false}\n isShaded={false}\n shouldUnmount={true}\n size=\"md\"\n >\n {props.children}\n \n);\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport {\n MODAL_PROJECT_ERROR_CLOSE,\n MODAL_PROJECT_ERROR_OPEN,\n MODAL_PROJECT_ERROR_RETRY,\n} from 'src/modules/modals/actions/ModalActions';\nimport { ModalStackState } from 'src/modules/modals/types/ModalStackState';\n\nexport function modalProjectErrorReducer(state: ModalStackState, action: Action): ModalStackState {\n if (MODAL_PROJECT_ERROR_OPEN.is(action)) {\n const filteredState = state.filter((it) => it.type !== 'project-error');\n\n return [...filteredState, {\n type: 'project-error',\n data: action.data,\n status: null,\n }];\n }\n if (MODAL_PROJECT_ERROR_CLOSE.is(action)) {\n return state.filter((it) => it.type !== 'project-error');\n }\n\n if (MODAL_PROJECT_ERROR_RETRY.isPending(action)) {\n return state.map((it) => (\n it.type === 'project-error'\n ? { ...it, status: FUTURE.pending() }\n : it\n ));\n }\n if (MODAL_PROJECT_ERROR_RETRY.isSuccess(action)) {\n return state.map((it) => (\n it.type === 'project-error'\n ? { ...it, status: FUTURE.success(action.data) }\n : it\n ));\n }\n if (MODAL_PROJECT_ERROR_RETRY.isFailure(action)) {\n return state.map((it) => (\n it.type === 'project-error'\n ? { ...it, status: FUTURE.failure(action.data) }\n : it\n ));\n }\n\n return state;\n}\n","import { modalProjectErrorReducer } from 'src/modules/modals/reducers/modalProjectErrorReducer';\nimport { modalUserErrorReducer } from 'src/modules/modals/reducers/modalUserErrorReducer';\nimport { ModalStackState } from 'src/modules/modals/types/ModalStackState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ModalStackState = [];\n\nexport const modalStackReducer = chainReducers(defaultState, [\n modalProjectErrorReducer,\n modalUserErrorReducer,\n]);\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport {\n MODAL_USER_ERROR_CLOSE,\n MODAL_USER_ERROR_OPEN,\n MODAL_USER_ERROR_RETRY,\n} from 'src/modules/modals/actions/ModalActions';\nimport { ModalStackState } from 'src/modules/modals/types/ModalStackState';\n\nexport function modalUserErrorReducer(state: ModalStackState, action: Action): ModalStackState {\n if (MODAL_USER_ERROR_OPEN.is(action)) {\n const filteredState = state.filter((it) => it.type !== 'user-error');\n\n return [...filteredState, {\n type: 'user-error',\n data: action.data,\n status: null,\n }];\n }\n if (MODAL_USER_ERROR_CLOSE.is(action)) {\n return state.filter((it) => it.type !== 'user-error');\n }\n\n if (MODAL_USER_ERROR_RETRY.isPending(action)) {\n return state.map((it) => (\n it.type === 'user-error'\n ? { ...it, status: FUTURE.pending() }\n : it\n ));\n }\n if (MODAL_USER_ERROR_RETRY.isSuccess(action)) {\n return state.map((it) => (\n it.type === 'user-error'\n ? { ...it, status: FUTURE.success(action.data) }\n : it\n ));\n }\n if (MODAL_USER_ERROR_RETRY.isFailure(action)) {\n return state.map((it) => (\n it.type === 'user-error'\n ? { ...it, status: FUTURE.failure(action.data) }\n : it\n ));\n }\n\n return state;\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { MODAL_PROJECT_ERROR_CLOSE, MODAL_PROJECT_ERROR_RETRY } from 'src/modules/modals/actions/ModalActions';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectForeground } from 'src/modules/project-sync/sagas/utils/syncProjectForeground';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* modalProjectErrorSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const project = action.data;\n\n try {\n yield* call(logDebug, 'Synchronizing project...', project);\n yield* put(MODAL_PROJECT_ERROR_RETRY.pending());\n\n const synchronized = yield* call(syncProjectForeground, project);\n yield* call(logDebug, 'Synchronizing project... done', project);\n\n yield* put(MODAL_PROJECT_ERROR_RETRY.success(synchronized));\n yield* put(MODAL_PROJECT_ERROR_CLOSE.trigger());\n } catch (error) {\n const wrapped = new RuntimeError('Could not save synchronize project', { project }, NativeError.wrap(error));\n yield* call(logError, 'Synchronizing project... error', error);\n yield* put(MODAL_PROJECT_ERROR_RETRY.failure(wrapped));\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { MODAL_PROJECT_ERROR_RETRY, MODAL_USER_ERROR_RETRY } from 'src/modules/modals/actions/ModalActions';\nimport { modalProjectErrorSaga } from 'src/modules/modals/sagas/modalProjectErrorSaga';\nimport { modalUserErrorSaga } from 'src/modules/modals/sagas/modalUserErrorSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* modalStackSaga(): SagaIterator {\n yield* takeLatest(MODAL_PROJECT_ERROR_RETRY.isRequest, modalProjectErrorSaga);\n yield* takeLatest(MODAL_USER_ERROR_RETRY.isRequest, modalUserErrorSaga);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { MODAL_USER_ERROR_CLOSE, MODAL_USER_ERROR_RETRY } from 'src/modules/modals/actions/ModalActions';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncUserForeground } from 'src/modules/users/sagas/utils/syncUserForeground';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* modalUserErrorSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const users = action.data;\n\n try {\n yield* call(logDebug, 'Synchronizing user...');\n yield* put(MODAL_USER_ERROR_RETRY.pending(users));\n\n const synchronized = yield* call(syncUserForeground);\n yield* call(logDebug, 'Synchronizing user... done');\n\n yield* put(MODAL_USER_ERROR_RETRY.success(synchronized, synchronized));\n yield* put(MODAL_USER_ERROR_CLOSE.trigger());\n } catch (error) {\n const wrapped = new RuntimeError('Could not save user', { users }, NativeError.wrap(error));\n yield* call(logError, 'Synchronizing user... error', error);\n yield* put(MODAL_USER_ERROR_RETRY.failure(wrapped, users));\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { ModalStackState } from 'src/modules/modals/types/ModalStackState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getModalStack(state: RootState): ModalStackState {\n return state.modals;\n}\n","import './ErrorModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ProjectTitle } from 'src/modules/common/components/ProjectTitle';\nimport { MODAL_PROJECT_ERROR_CLOSE, MODAL_PROJECT_ERROR_RETRY } from 'src/modules/modals/actions/ModalActions';\nimport { ModalWindowProjectError } from 'src/modules/modals/types/ModalWindow';\n\ntype Props = {\n readonly modal: ModalWindowProjectError;\n};\n\nexport const ProjectErrorModal = ({ modal }: Props): React.ReactElement => {\n const intl = useIntl();\n const closeModal = useBoundAction(MODAL_PROJECT_ERROR_CLOSE.trigger, undefined);\n const saveProject = useBoundAction(MODAL_PROJECT_ERROR_RETRY.request, modal.data);\n\n const loading = modal.status?.state === 'pending';\n\n return (\n <>\n }\n />\n\n \n

\n }}\n />\n

\n\n

\n \n

\n
\n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './ErrorModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { MODAL_USER_ERROR_CLOSE, MODAL_USER_ERROR_RETRY } from 'src/modules/modals/actions/ModalActions';\nimport { ModalWindowUserError } from 'src/modules/modals/types/ModalWindow';\n\ntype Props = {\n readonly modal: ModalWindowUserError;\n};\n\nexport const UserErrorModal = ({ modal }: Props): React.ReactElement => {\n const intl = useIntl();\n const closeModal = useBoundAction(MODAL_USER_ERROR_CLOSE.trigger);\n const retry = useBoundAction(MODAL_USER_ERROR_RETRY.request, modal.data, modal.data);\n\n const loading = modal.status?.state === 'pending';\n\n return (\n <>\n }\n />\n\n \n

\n userSnapshot.user.email).join(', ') }}\n />\n

\n\n

\n \n

\n
\n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import { NotificationData } from 'src/modules/notifications/types/NotificationData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const NOTIFICATION_SHOW = createTrigger('NOTIFICATION_SHOW');\n\nexport const NOTIFICATION_HIDE = createTrigger('NOTIFICATION_HIDE');\n","import { Action } from 'redux';\nimport { NOTIFICATION_HIDE, NOTIFICATION_SHOW } from 'src/modules/notifications/actions/NotificationActions';\nimport { NotificationState } from 'src/modules/notifications/types/NotificationData';\n\nconst defaultState: NotificationState = [];\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nexport const notificationReducer = (state: NotificationState = defaultState, action: Action): NotificationState => {\n if (NOTIFICATION_SHOW.is(action)) {\n return [\n ...state,\n {\n id: action.data.id,\n type: action.data.type,\n variant: action.data.variant,\n messageId: action.data.messageId,\n messageValue: action.data.messageValue,\n }];\n }\n if (NOTIFICATION_HIDE.is(action)) {\n return state.filter((notification) => notification.id !== action.data);\n }\n\n return state;\n};\n","import { SagaIterator } from 'redux-saga';\nimport { NOTIFICATION_SHOW } from 'src/modules/notifications/actions/NotificationActions';\nimport { NotificationData } from 'src/modules/notifications/types/NotificationData';\nimport { put } from 'typed-redux-saga';\n\nlet counter = 1_000_000;\n\nexport function* showNotification(data: Omit): SagaIterator {\n const id = counter++;\n\n yield* put(NOTIFICATION_SHOW.trigger({ ...data, id }));\n}\n","import { NotificationState } from 'src/modules/notifications/types/NotificationData';\nimport { RootState } from 'src/types/RootState';\n\nexport function getNotification(state: RootState): NotificationState {\n return state.notification;\n}\n","import './Notification.scss';\nimport { ToastNotification } from '@carbon/react';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { NotificationData } from 'src/modules/notifications/types/NotificationData';\n\ntype Props = {\n notifications: ReadonlyArray;\n handleClose: (id: number) => void;\n};\n\nexport const Notification: React.FC = ({ notifications, handleClose }) => {\n const intl = useIntl();\n\n return (\n
\n {notifications.map(({ id, type, variant, messageId, messageValue }, index) => (\n handleClose(id)}\n role=\"status\"\n title={intl.formatMessage({ id: messageId || `notificationmessage/${type}` }, messageValue)}\n timeout={3000}\n />\n ))}\n
\n );\n};\n","import { OrganizationFormData } from 'src/modules/organization/types/OrganizationFormData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const ORGANIZATION_CHANGE = createTrigger('ORGANIZATION_CHANGE');\n","import { useForm } from '@form-ts/react';\nimport React, { useEffect } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomBreadcrumbItem } from 'src/modules/common/components/CustomBreadcrumbItem';\nimport { AdminLayout } from 'src/modules/common/layouts/AdminLayout';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ORGANIZATION_CHANGE } from 'src/modules/organization/actions/OrganizationActions';\nimport { getOrganizationFormData } from 'src/modules/organization/selectors/getOrganizationFormData';\nimport { OrganizationFormData } from 'src/modules/organization/types/OrganizationFormData';\nimport { OrganizationSettings } from 'src/modules/organization/views/OrganizationSettings';\n\nexport const OrganizationPage = (): React.ReactElement => {\n const intl = useIntl();\n\n const formData = useSelector(getOrganizationFormData);\n\n const saveForm = useAction(ORGANIZATION_CHANGE.trigger);\n\n const form = useForm('admin.organization', {\n reinitialize: false,\n initialValues: formData,\n });\n\n useEffect(() => form.subscribe((prevState) => {\n const nextState = form.currentState;\n\n if (prevState.values !== nextState.values) {\n saveForm(nextState.values);\n }\n }), [form, saveForm]);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'admin/organization/title' })}\n \n\n \n \n {intl.formatMessage({ id: 'organization/settings/breadcrumbs/project' })}\n \n \n )}\n title={intl.formatMessage({ id: 'admin/organization/title' })}\n >\n \n \n \n );\n};\n","import { SagaIterator } from 'redux-saga';\nimport { ORGANIZATION_CHANGE } from 'src/modules/organization/actions/OrganizationActions';\nimport { updateLogoSaga } from 'src/modules/organization/sagas/updateLogoSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* organizationSaga(): SagaIterator {\n yield* takeLatest(ORGANIZATION_CHANGE.is, updateLogoSaga);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { ORGANIZATION } from 'src/modules/common/codecs/Organization';\nimport { ORGANIZATION_CHANGE } from 'src/modules/organization/actions/OrganizationActions';\nimport { updateUserSaga } from 'src/modules/organization/sagas/updateUserSaga';\nimport { getOrganization } from 'src/modules/organization/selectors/getOrganization';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* updateLogoSaga(action: GetTriggerActionType): SagaIterator {\n try {\n const organization = yield* select(getOrganization);\n\n const { content } = yield* call(\n makeRestRequest,\n 'PUT',\n `/organizations/${encodeURIComponent(organization?.id)}`,\n {\n logoId: action.data.logo?.id || null,\n },\n );\n\n const decodedOrganization = yield* call(decodeOrThrow, ORGANIZATION, content);\n\n yield* call(updateUserSaga, decodedOrganization);\n } catch (error) {\n throw new RuntimeError('Could not update organization', action.data, NativeError.wrap(error));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { Organization } from 'src/modules/common/types/Organization';\nimport { WHOAMI_ACTION } from 'src/modules/login/actions/WhoAmIAction';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* updateUserSaga(organization: Organization): SagaIterator {\n try {\n yield* call(logDebug, 'Updating the user...');\n\n const user = yield* select(getLoggedInUser);\n\n const updatedUser: AuthUser = {\n ...user,\n organization,\n };\n\n yield* put(WHOAMI_ACTION.trigger(updatedUser));\n yield* call(logDebug, 'User updated...', updatedUser);\n } catch (error) {\n yield* call(logError, 'User updating error', { error });\n throw error;\n }\n}\n","import { createSelector } from 'reselect';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\n\nexport const getOrganization = createSelector([\n getLoggedInUser,\n], (state) => state.organization);\n","import { createSelector } from 'reselect';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\n\nexport const getOrganizationFormData = createSelector([\n getLoggedInUser,\n], (state) => ({\n logo: state.organization.logo,\n}));\n","import './OrganizationSettings.scss';\nimport { FormController } from '@form-ts/core';\nimport React, { memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { TileCard } from 'src/modules/common/components/TileCard';\nimport { AssetField } from 'src/modules/form/components/AssetField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { OrganizationFormData } from 'src/modules/organization/types/OrganizationFormData';\n\ntype Props = {\n form: FormController;\n};\n\nexport const OrganizationSettings = memo(({ form }: Props) => (\n
\n
\n }>\n \n\n \n \n
\n
\n));\n","import { constVoid } from 'fp-ts/function';\nimport { createContext } from 'react';\nimport { OutputDocumentPageInfo } from 'src/modules/output/types/OutputDocumentPageInfo';\n\nexport type OutputDocumentContextData = {\n readonly registerPage: (page: OutputDocumentPageInfo) => void;\n readonly unregisterPage: (id: string) => void;\n};\n\nexport const OutputDocumentContext = createContext({\n registerPage: constVoid,\n unregisterPage: constVoid,\n});\n","import { createContext } from 'react';\n\ntype OutputPageContextData = {\n readonly pageNumber: number;\n readonly totalPages: number;\n};\n\nexport const OutputPageContext = createContext({\n pageNumber: 0,\n totalPages: 0,\n});\n","type OutputInnerHeight = number;\ntype OutputOuterHeight = number;\n\nexport type OutputBlock = {\n readonly widows: number;\n readonly orphans: number;\n\n readonly block: TBlock;\n readonly rows: ReadonlyArray>;\n};\nexport type OutputBlockRow = {\n readonly height: (before: ReadonlyArray) => OutputOuterHeight;\n readonly element: TElement;\n};\n\nexport function splitBlocksIntoPages(\n blocks: ReadonlyArray>,\n pageHeight: (pageIndex: number) => OutputInnerHeight,\n onBlockBreak?: (block: TBlock, pageIndex: number) => OutputBlockRow | null,\n): TElement[][] {\n let currentPageIndex = 0;\n let currentPageItems: TElement[] = [];\n let currentPageHeight = 0;\n let maximumPageHeight = pageHeight(currentPageIndex);\n\n let currentBlockIndex = 0;\n let currentBlock = blocks[currentBlockIndex];\n let currentRows = currentBlock ? currentBlock.rows.slice() : [];\n let hasBlockRows = false;\n\n function breakBlock(insertWidowsHeader: boolean): void {\n const widowsHeader = insertWidowsHeader && onBlockBreak\n ? onBlockBreak(currentBlock.block, currentPageIndex)\n : null;\n\n currentPageIndex += 1;\n currentPageItems = widowsHeader ? [widowsHeader.element] : [];\n currentPageHeight = widowsHeader ? widowsHeader.height([]) : 0;\n maximumPageHeight = pageHeight(currentPageIndex);\n\n resultPages.push(currentPageItems);\n }\n function forwardBlock(): void {\n currentBlockIndex += 1;\n currentBlock = blocks[currentBlockIndex];\n currentRows = currentBlock ? currentBlock.rows.slice() : [];\n hasBlockRows = false;\n }\n\n function insertRow(row: OutputBlockRow): void {\n const elementHeight = row.height(currentPageItems);\n\n currentPageItems.push(row.element);\n currentPageHeight += elementHeight;\n hasBlockRows = true;\n }\n\n const resultPages = [currentPageItems];\n while (currentBlockIndex < blocks.length) {\n if (currentRows.length === 0) {\n forwardBlock();\n continue;\n }\n\n const orphansCount = getOrphansCount(maximumPageHeight - currentPageHeight, currentRows, currentPageItems);\n const widowsCount = currentRows.length - orphansCount;\n if (widowsCount === 0) {\n currentRows.forEach(insertRow);\n\n forwardBlock();\n } else if (widowsCount < currentBlock.widows) {\n const orphansRows = currentRows.splice(0, currentRows.length - currentBlock.widows);\n orphansRows.forEach(insertRow);\n breakBlock(true);\n\n currentRows.forEach(insertRow);\n forwardBlock();\n } else if (orphansCount < currentBlock.orphans) {\n const orphansRows = currentRows.splice(0, orphansCount);\n breakBlock(hasBlockRows);\n orphansRows.forEach(insertRow);\n } else {\n const orphansRows = currentRows.splice(0, orphansCount);\n orphansRows.forEach(insertRow);\n breakBlock(true);\n }\n }\n\n return resultPages;\n}\n\nfunction getOrphansCount(\n pageHeight: OutputInnerHeight,\n blockRows: ReadonlyArray>,\n pageItems: ReadonlyArray,\n): number {\n let requiredHeight = 0;\n for (let index = 0; index < blockRows.length; ++index) {\n requiredHeight += blockRows[index].height(pageItems);\n if (requiredHeight > pageHeight) {\n return index;\n }\n }\n\n return blockRows.length;\n}\n","/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/jsx-no-constructed-context-values */\nimport './OutputDocument.scss';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { OutputDocumentContext, OutputDocumentContextData } from 'src/modules/output/context/OutputDocumentContext';\nimport { OutputPageContext } from 'src/modules/output/context/OutputPageContext';\nimport { OutputDocumentPageInfo } from 'src/modules/output/types/OutputDocumentPageInfo';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\n\nexport const OutputDocument = ({ children }: Props): React.ReactElement => {\n const pageContents = useRef(new Map());\n const documentContext = useMemo((): OutputDocumentContextData => ({\n registerPage: (page: OutputDocumentPageInfo): void => {\n pageContents.current = pageContents.current.set(page.id, page);\n },\n unregisterPage: (id: string): void => {\n pageContents.current.delete(id);\n },\n }), []);\n\n const [collectedPages, setCollectedPages] = useState(null);\n useLayoutEffect(() => {\n const timerId = window.setTimeout(() => {\n setCollectedPages(\n [...pageContents.current.values()]\n .filter((it) => it.visible)\n .sort((a, b) => a.order - b.order)\n .map((it) => it.content),\n );\n }, 100);\n return () => window.clearTimeout(timerId);\n }, []);\n\n return (\n
\n {collectedPages !== null && collectedPages.map((page, index) => (\n
\n \n {page}\n \n
\n ))}\n {collectedPages === null && (\n \n
\n {children}\n
\n
\n )}\n
\n );\n};\n","import './OutputDocument.scss';\nimport React, { useContext, useEffect, useLayoutEffect } from 'react';\nimport { OutputDocumentContext } from 'src/modules/output/context/OutputDocumentContext';\n\ntype Props = {\n readonly id: string;\n readonly order: number;\n readonly section: string;\n readonly visible: boolean;\n readonly children: React.ReactElement;\n};\n\nexport const OutputDocumentPage = ({ id, order, section, visible, children }: Props): React.ReactElement => {\n const { registerPage, unregisterPage } = useContext(OutputDocumentContext);\n\n useLayoutEffect(() => {\n registerPage({\n id: id,\n order: order,\n section: section,\n visible: visible,\n content: children,\n });\n }, [children, id, order, section, visible, registerPage]);\n\n useLayoutEffect(() => () => unregisterPage(id), [id, unregisterPage]);\n\n return children;\n};\n","/* eslint-disable max-len */\nimport * as React from 'react';\n\nexport const OutputLogo = (): React.ReactElement => (\n \n \n \n \n \n);\n","import './OutputPage.scss';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { OutputPagination } from 'src/modules/output/views/OutputPagination';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly children: React.ReactNode;\n readonly showPageNumber: boolean;\n};\n\nexport const OutputPage = React.forwardRef((\n {\n language,\n children,\n showPageNumber,\n }: Props,\n forwardedRef: React.ForwardedRef,\n): React.ReactElement => (\n \n
\n {children}\n
\n\n {showPageNumber && (\n
\n \n
\n )}\n \n));\n","import './OutputPagination.scss';\nimport React from 'react';\nimport { OutputPageContext } from 'src/modules/output/context/OutputPageContext';\n\nexport const OutputPagination = (): React.ReactElement => {\n const { pageNumber, totalPages } = React.useContext(OutputPageContext);\n\n return (\n
\n {pageNumber > 0\n ? `${pageNumber} / ${totalPages}`\n : 'x / x'}\n
\n );\n};\n","import './OutputTitle.scss';\nimport React from 'react';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\n\nexport const OutputTitle = ({ children }: Props): React.ReactElement => (\n
\n {children}\n
\n);\n","import { FormController } from '@form-ts/core';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PasswordForgotFormData } from 'src/modules/password-forgot/types/PasswordForgotFormData';\nimport { createActions } from 'src/utils/createActions';\n\nexport const PASSWORD_FORGOT_SUBMIT =\n createActions, void>('PASSWORD_FORGOT_SUBMIT');\n","import { trim } from 'fp-ts/string';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { PasswordForgotFormData } from 'src/modules/password-forgot/types/PasswordForgotFormData';\n\nexport const PASSWORD_FORGOT_FORM_SCHEMA: FormRule = R.struct({\n username: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.email(),\n ]),\n});\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useAction } from 'src/hooks/useAction';\nimport { LoginLayout } from 'src/modules/common/layouts/LoginLayout';\nimport { PASSWORD_FORGOT_SUBMIT } from 'src/modules/password-forgot/actions/PasswordForgotActions';\nimport { PasswordForgotScreen } from 'src/modules/password-forgot/views/PasswordForgotScreen';\n\nexport const PasswordForgotPage = (): React.ReactElement => {\n const intl = useIntl();\n const submitForm = useAction(PASSWORD_FORGOT_SUBMIT.request);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'passwordForgot/pageTitle' })}\n \n\n \n \n \n \n );\n};\n","import { SagaIterator } from 'redux-saga';\nimport { PASSWORD_FORGOT_SUBMIT } from 'src/modules/password-forgot/actions/PasswordForgotActions';\nimport { passwordForgotSubmitSaga } from 'src/modules/password-forgot/sagas/passwordForgotSubmitSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* passwordForgotSaga(): SagaIterator {\n yield* takeLatest(PASSWORD_FORGOT_SUBMIT.isRequest, passwordForgotSubmitSaga);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { PASSWORD_FORGOT_SUBMIT } from 'src/modules/password-forgot/actions/PasswordForgotActions';\nimport { PASSWORD_FORGOT_FORM_SCHEMA } from 'src/modules/password-forgot/constants/schema';\nimport { submitPasswordForgot } from 'src/modules/password-forgot/sagas/utils/submitPasswordForgot';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* passwordForgotSubmitSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const form = action.data;\n const values = form.values.get(form.currentState);\n\n const valid = yield* call(formValidate, form, PASSWORD_FORGOT_FORM_SCHEMA);\n if (!valid) {\n return;\n }\n\n try {\n yield* call(logDebug, 'Requesting password recovery...');\n yield* put(PASSWORD_FORGOT_SUBMIT.pending());\n yield* call(formSubmitStart, form);\n\n yield* delay(500);\n yield* call(submitPasswordForgot, values);\n\n yield* call(logDebug, 'Requesting password recovery... done');\n yield* put(PASSWORD_FORGOT_SUBMIT.success());\n\n yield* call(formSubmitSuccess, form);\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Requesting password recovery... error', error);\n yield* put(PASSWORD_FORGOT_SUBMIT.failure(NativeError.wrap(error)));\n\n yield* call(formSubmitFailure, form, {\n username: {\n code: 'invalid',\n path: 'username',\n\n value: values.username,\n message: 'Invalid response',\n context: {},\n },\n });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { PasswordForgotFormData } from 'src/modules/password-forgot/types/PasswordForgotFormData';\nimport { call } from 'typed-redux-saga';\n\nexport function* submitPasswordForgot(form: PasswordForgotFormData): SagaIterator {\n try {\n const body = {\n email: form.username,\n };\n\n yield* call(makeRestRequest, 'POST', '/auth/reset-password', body);\n } catch (error) {\n throw new RuntimeError('Could not request password recovery', { form }, NativeError.wrap(error));\n }\n}\n","import './PasswordForgotForm.scss';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport { constNull } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PasswordForgotFormData } from 'src/modules/password-forgot/types/PasswordForgotFormData';\n\ntype Props = {\n readonly form: FormController;\n readonly onSubmit: () => void;\n};\n\nexport const PasswordForgotForm = ({ form, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const handleSubmit = useCallback((event: React.FormEvent) => {\n event.preventDefault();\n onSubmit();\n }, [onSubmit]);\n\n const isSubmitting = useFormWatch(form, form.submitting.get);\n\n return (\n \n \n\n (\n
\n \n
\n )}\n size=\"md\"\n >\n \n \n \n );\n};\n","import './PasswordForgotScreen.scss';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PASSWORD_FORGOT_FORM_SCHEMA } from 'src/modules/password-forgot/constants/schema';\nimport { PasswordForgotFormData } from 'src/modules/password-forgot/types/PasswordForgotFormData';\nimport { PasswordForgotForm } from 'src/modules/password-forgot/views/PasswordForgotForm';\n\ntype Props = {\n readonly onSubmit: (form: FormController) => void;\n};\n\nexport const PasswordForgotScreen = ({ onSubmit }: Props): React.ReactElement => {\n const form = useForm('password.forgot', {\n reinitialize: false,\n initialValues: { username: '' },\n });\n useFormValidator(form, PASSWORD_FORGOT_FORM_SCHEMA);\n\n const isSubmitted = useFormWatch(form, form.submitSucceded.get);\n const handleSubmit = useCallback(() => {\n onSubmit(form);\n }, [form, onSubmit]);\n\n return (\n
\n

\n \n

\n\n

\n {isSubmitted\n ? \n : }\n

\n\n {!isSubmitted && (\n
\n \n
\n )}\n\n
\n \n \n \n \n
\n
\n );\n};\n","import { FormController } from '@form-ts/core';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const PASSWORD_RESET_TOKEN =\n createTrigger('PASSWORD_RESET_TOKEN');\n\nexport const PASSWORD_RESET_SUBMIT =\n createActions, void>('PASSWORD_RESET_SUBMIT');\n","import { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\n\n// NOTE: the translations are OK\nexport const PASSWORD_RESET_FORM_SCHEMA: FormRule = R.allOf([\n R.struct({\n confirmation: R.nonEmpty('profile/form/section/changePassword/error/empty'),\n password: R.allOf([\n R.nonEmpty('profile/form/section/changePassword/error/empty'),\n R.minLength(8, 'profile/form/section/changePassword/error/short'),\n R.maxLength(30, 'profile/form/section/changePassword/error/long'),\n R.match(/\\d/, 'profile/form/section/changePassword/error/noDigits'),\n R.match(/[a-z]/i, 'profile/form/section/changePassword/error/noLetters'),\n R.match(/^\\S+$/, 'profile/form/section/changePassword/error/spaces'),\n ]),\n }),\n R.matchField(\n 'confirmation',\n 'password',\n 'profile/form/section/changePassword/error/mismatch',\n ),\n]);\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { LoginLayout } from 'src/modules/common/layouts/LoginLayout';\nimport { PASSWORD_RESET_SUBMIT } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { getPasswordResetValid } from 'src/modules/password-reset/selectors/getPasswordResetValid';\nimport { PasswordResetError } from 'src/modules/password-reset/views/PasswordResetError';\nimport { PasswordResetScreen } from 'src/modules/password-reset/views/PasswordResetScreen';\n\nexport const PasswordResetPage = (): React.ReactElement => {\n const intl = useIntl();\n const tokenValid = useSelector(getPasswordResetValid);\n const submitForm = useAction(PASSWORD_RESET_SUBMIT.request);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'passwordReset/pageTitle' })}\n \n\n \n {tokenValid\n ? \n : }\n \n \n );\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { LoginLayout } from 'src/modules/common/layouts/LoginLayout';\nimport { PASSWORD_RESET_SUBMIT } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { getPasswordResetValid } from 'src/modules/password-reset/selectors/getPasswordResetValid';\nimport { PasswordSetupError } from 'src/modules/password-reset/views/PasswordSetupError';\nimport { PasswordSetupScreen } from 'src/modules/password-reset/views/PasswordSetupScreen';\n\nexport const PasswordSetupPage = (): React.ReactElement => {\n const intl = useIntl();\n const tokenValid = useSelector(getPasswordResetValid);\n const submitForm = useAction(PASSWORD_RESET_SUBMIT.request);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'passwordSetup/pageTitle' })}\n \n\n \n {tokenValid\n ? \n : }\n \n \n );\n};\n","import { passwordResetTokenReducer } from 'src/modules/password-reset/reducers/passwordResetTokenReducer';\nimport { PasswordResetState } from 'src/modules/password-reset/types/PasswordResetState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: PasswordResetState = {\n token: null,\n};\n\nexport const passwordResetReducer = chainReducers(defaultState, [\n passwordResetTokenReducer,\n]);\n","import { Action } from 'redux';\nimport { PASSWORD_RESET_TOKEN } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { PasswordResetState } from 'src/modules/password-reset/types/PasswordResetState';\n\nexport function passwordResetTokenReducer(state: PasswordResetState, action: Action): PasswordResetState {\n if (PASSWORD_RESET_TOKEN.is(action)) {\n return {\n ...state,\n token: action.data,\n };\n }\n\n return state;\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PASSWORD_RESET_SUBMIT } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { passwordResetSubmitSaga } from 'src/modules/password-reset/sagas/passwordResetSubmitSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* passwordResetSaga(): SagaIterator {\n yield* takeLatest(PASSWORD_RESET_SUBMIT.isRequest, passwordResetSubmitSaga);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { PASSWORD_RESET_SUBMIT } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { PASSWORD_RESET_FORM_SCHEMA } from 'src/modules/password-reset/constants/schema';\nimport { submitPasswordReset } from 'src/modules/password-reset/sagas/utils/submitPasswordReset';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* passwordResetSubmitSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const form = action.data;\n const values = form.values.get(form.currentState);\n\n const valid = yield* call(formValidate, form, PASSWORD_RESET_FORM_SCHEMA);\n if (!valid) {\n return;\n }\n\n try {\n yield* call(logDebug, 'Resetting password...');\n yield* put(PASSWORD_RESET_SUBMIT.pending());\n yield* call(formSubmitStart, form);\n\n yield* delay(500);\n yield* call(submitPasswordReset, values);\n\n yield* call(logDebug, 'Resetting password... done');\n yield* put(PASSWORD_RESET_SUBMIT.success());\n\n yield* call(formSubmitSuccess, form);\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Resetting password... error', error);\n yield* put(PASSWORD_RESET_SUBMIT.failure(NativeError.wrap(error)));\n\n yield* call(formSubmitFailure, form, {\n password: {\n code: 'invalid',\n path: 'username',\n\n value: values.password,\n message: 'Invalid response',\n context: {},\n },\n });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { getPasswordResetToken } from 'src/modules/password-reset/selectors/getPasswordResetToken';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* submitPasswordReset(form: PasswordResetFormData): SagaIterator {\n try {\n const token = yield* select(getPasswordResetToken);\n const query = new URLSearchParams({ token });\n\n const body = { password: form.password };\n\n yield* call(makeRestRequest, 'POST', `/auth/set-password?${query.toString()}`, body);\n } catch (error) {\n throw new RuntimeError('Could not reset user password', { form }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { call } from 'typed-redux-saga';\n\nexport function* validateRecoveryToken(token: string): SagaIterator {\n try {\n const query = new URLSearchParams({ token });\n yield* call(makeRestRequest, 'GET', `/auth/check-token?${query.toString()}`);\n } catch (error) {\n throw new RuntimeError('Password recovery token is not valid', { token }, NativeError.wrap(error));\n }\n}\n","import { PasswordResetState } from 'src/modules/password-reset/types/PasswordResetState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getPasswordResetState(state: RootState): PasswordResetState {\n return state.passwordReset;\n}\n","import { createSelector } from 'reselect';\nimport { getPasswordResetState } from 'src/modules/password-reset/selectors/getPasswordResetState';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getPasswordResetToken = createSelector([\n getPasswordResetState,\n], (state) => assertNotNull(\n state.token,\n 'Password recovery token is not valid',\n));\n","import { createSelector } from 'reselect';\nimport { getPasswordResetState } from 'src/modules/password-reset/selectors/getPasswordResetState';\n\nexport const getPasswordResetValid = createSelector([\n getPasswordResetState,\n], (state) => state.token !== null);\n","import './PasswordResetError.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\n\nexport const PasswordResetError = (): React.ReactElement => (\n
\n

\n \n

\n\n

\n \n

\n\n
\n \n \n \n \n
\n
\n);\n","import './PasswordResetForm.scss';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { PasswordField } from 'src/modules/form/components/PasswordField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\n\ntype Props = {\n readonly form: FormController;\n readonly onSubmit: () => void;\n};\n\nexport const PasswordResetForm = ({ form, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n const renderError = useCallback((e: FormError) => intl.formatMessage({ id: e.message }, e.context), [intl]);\n\n const handleSubmit = useCallback((event: React.FormEvent) => {\n event.preventDefault();\n onSubmit();\n }, [onSubmit]);\n\n const isSubmitting = useFormWatch(form, form.submitting.get);\n\n return (\n \n \n\n \n\n (\n
\n \n
\n )}\n size=\"md\"\n >\n \n \n \n );\n};\n","import './PasswordResetScreen.scss';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PASSWORD_RESET_FORM_SCHEMA } from 'src/modules/password-reset/constants/schema';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\nimport { PasswordResetForm } from 'src/modules/password-reset/views/PasswordResetForm';\n\ntype Props = {\n readonly onSubmit: (form: FormController) => void;\n};\n\nexport const PasswordResetScreen = ({ onSubmit }: Props): React.ReactElement => {\n const form = useForm('password.reset', {\n reinitialize: false,\n initialValues: {\n password: '',\n confirmation: '',\n },\n });\n useFormValidator(form, PASSWORD_RESET_FORM_SCHEMA);\n\n const isSubmitted = useFormWatch(form, form.submitSucceded.get);\n const handleSubmit = useCallback(() => {\n onSubmit(form);\n }, [form, onSubmit]);\n\n return (\n
\n

\n \n

\n\n

\n {isSubmitted\n ? \n : }\n

\n\n {!isSubmitted && (\n
\n \n
\n )}\n\n
\n \n \n \n \n
\n
\n );\n};\n","import './PasswordSetupError.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\n\nexport const PasswordSetupError = (): React.ReactElement => (\n
\n

\n \n

\n\n

\n \n

\n\n
\n \n \n \n \n
\n
\n);\n","import './PasswordSetupForm.scss';\nimport { FormController } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { PasswordField } from 'src/modules/form/components/PasswordField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\n\ntype Props = {\n readonly form: FormController;\n readonly onSubmit: () => void;\n};\n\nexport const PasswordSetupForm = ({ form, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n const renderError = useCallback((e: FormError) => intl.formatMessage({ id: e.message }, e.context), [intl]);\n\n const handleSubmit = useCallback((event: React.FormEvent) => {\n event.preventDefault();\n onSubmit();\n }, [onSubmit]);\n\n const isSubmitting = useFormWatch(form, form.submitting.get);\n\n return (\n \n \n\n \n\n (\n
\n \n
\n )}\n >\n \n \n \n );\n};\n","import './PasswordSetupScreen.scss';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PASSWORD_RESET_FORM_SCHEMA } from 'src/modules/password-reset/constants/schema';\nimport { PasswordResetFormData } from 'src/modules/password-reset/types/PasswordResetFormData';\nimport { PasswordSetupForm } from 'src/modules/password-reset/views/PasswordSetupForm';\n\ntype Props = {\n readonly onSubmit: (form: FormController) => void;\n};\n\nexport const PasswordSetupScreen = ({ onSubmit }: Props): React.ReactElement => {\n const form = useForm('password.setup', {\n reinitialize: false,\n initialValues: {\n password: '',\n confirmation: '',\n },\n });\n useFormValidator(form, PASSWORD_RESET_FORM_SCHEMA);\n\n const isSubmitted = useFormWatch(form, form.submitSucceded.get);\n const handleSubmit = useCallback(() => {\n onSubmit(form);\n }, [form, onSubmit]);\n\n return (\n
\n

\n \n

\n\n

\n {isSubmitted\n ? \n : }\n

\n\n {!isSubmitted && (\n
\n \n
\n )}\n\n
\n \n \n\n \n \n
\n
\n );\n};\n","import { FormController } from '@form-ts/core';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ChangePasswordData } from 'src/modules/profile/types/ChangePasswordData';\nimport { createActions } from 'src/utils/createActions';\n\nexport const PROFILE_SAVE = createActions, void>('PROFILE_SAVE');\nexport const PROFILE_CHANGE_PASSWORD = createActions, void>(\n 'PROFILE_CHANGE_PASSWORD',\n);\n","import { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { ChangePasswordData } from 'src/modules/profile/types/ChangePasswordData';\n\nexport const CHANGE_PASSWORD_SCHEMA: FormRule = R.allOf([\n R.struct({\n confirmation: R.pass(),\n password: R.allOf([\n R.nonEmpty('profile/form/section/changePassword/error/empty'),\n R.minLength(8, 'profile/form/section/changePassword/error/short'),\n R.maxLength(30, 'profile/form/section/changePassword/error/long'),\n R.match(/\\d/, 'profile/form/section/changePassword/error/noDigits'),\n R.match(/[a-z]/i, 'profile/form/section/changePassword/error/noLetters'),\n R.match(/^\\S+$/, 'profile/form/section/changePassword/error/spaces'),\n ]),\n }),\n R.matchField(\n 'confirmation',\n 'password',\n 'profile/form/section/changePassword/error/mismatch',\n ),\n]);\n","import './ProfilePage.scss';\nimport React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { ProfileContent } from 'src/modules/profile/views/ProfileContent';\n\nexport const ProfilePage = (): React.ReactElement => {\n const intl = useIntl();\n\n return (\n <>\n \n {intl.formatMessage({ id: 'profile/pageTitle' })}\n \n\n \n \n \n \n );\n};\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROFILE_CHANGE_PASSWORD } from 'src/modules/profile/actions/ProfileActions';\nimport { CHANGE_PASSWORD_SCHEMA } from 'src/modules/profile/constants/schema';\nimport { changePassword } from 'src/modules/profile/sagas/utils/changePassword';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* profileChangePasswordSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const changePasswordForm = action.data;\n const changePasswordValues = changePasswordForm.values.get(changePasswordForm.currentState);\n\n const formValid = yield* call(formValidate, changePasswordForm, CHANGE_PASSWORD_SCHEMA);\n if (!formValid) {\n return;\n }\n\n try {\n yield* put(PROFILE_CHANGE_PASSWORD.pending());\n yield* call(logDebug, 'Changing password...');\n yield* call(formSubmitStart, changePasswordForm);\n\n yield* call(changePassword, changePasswordValues);\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'profile/notification/passwordSaved',\n },\n );\n\n yield* call(logDebug, 'Changing password... done');\n yield* put(PROFILE_CHANGE_PASSWORD.success());\n yield* call(formSubmitSuccess, changePasswordForm);\n yield* call({ context: changePasswordForm, fn: changePasswordForm.reset }, changePasswordForm.initialState);\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Changing password... error', error);\n yield* put(PROFILE_CHANGE_PASSWORD.failure(NativeError.wrap(error)));\n\n yield* call(showNotification, { type: 'error', variant: 'error' });\n\n yield* call(formSubmitFailure, changePasswordForm, {\n '': {\n path: '',\n code: 'unknown',\n value: changePasswordValues,\n\n context: {},\n message: String(error),\n },\n });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROFILE_CHANGE_PASSWORD, PROFILE_SAVE } from 'src/modules/profile/actions/ProfileActions';\nimport { profileChangePasswordSaga } from 'src/modules/profile/sagas/profileChangePasswordSaga';\nimport { profileSaveSaga } from 'src/modules/profile/sagas/profileSaveSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* profileSaga(): SagaIterator {\n yield* takeLatest(PROFILE_SAVE.isRequest, profileSaveSaga);\n yield* takeLatest(PROFILE_CHANGE_PASSWORD.isRequest, profileChangePasswordSaga);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { WHOAMI_ACTION } from 'src/modules/login/actions/WhoAmIAction';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROFILE_SAVE } from 'src/modules/profile/actions/ProfileActions';\nimport { updateProfile } from 'src/modules/profile/sagas/utils/updateProfile';\nimport { USER_EDIT_FORM_SCHEMA } from 'src/modules/users/constants/userEditFormSchema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* profileSaveSaga(action: GetRequestActionType): SagaIterator {\n const profileForm = action.data;\n const profileValues = profileForm.values.get(profileForm.currentState);\n\n const formValid = yield* call(formValidate, profileForm, USER_EDIT_FORM_SCHEMA);\n if (!formValid) {\n return;\n }\n\n try {\n yield* put(PROFILE_SAVE.pending());\n yield* call(logDebug, 'Saving profile...');\n yield* call(formSubmitStart, profileForm);\n\n yield* call(updateProfile, profileValues);\n\n yield* call(showNotification, { type: 'done', variant: 'success', messageId: 'profile/notification/profileSaved' });\n\n yield* call(logDebug, 'Saving profile... done');\n yield* put(PROFILE_SAVE.success());\n yield* call(formSubmitSuccess, profileForm);\n\n const authUser = yield* select(getLoggedInUser);\n yield* put(\n WHOAMI_ACTION.trigger({ ...authUser, firstName: profileValues.firstName, lastName: profileValues.lastName }),\n );\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Saving profile... error', error);\n yield* put(PROFILE_SAVE.failure(NativeError.wrap(error)));\n\n yield* call(showNotification, { type: 'error', variant: 'error' });\n\n yield* call(formSubmitFailure, profileForm, {\n '': {\n path: '',\n code: 'unknown',\n value: profileForm,\n\n message: String(error),\n context: {},\n },\n });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { ChangePasswordData } from 'src/modules/profile/types/ChangePasswordData';\nimport { call } from 'typed-redux-saga';\n\nexport function* changePassword(passwordData: ChangePasswordData): SagaIterator {\n try {\n const body = { password: passwordData.password };\n yield* call(makeRestRequest, 'PUT', '/account/password', body);\n } catch (error) {\n throw new RuntimeError('Could not update password', { passwordData }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { call } from 'typed-redux-saga';\n\nexport function* updateProfile(updateData: UserFormData): SagaIterator {\n try {\n yield* call(makeRestRequest, 'PUT', '/account/profile', updateData);\n } catch (error) {\n throw new RuntimeError('Could not update profile', { updateData }, NativeError.wrap(error));\n }\n}\n","import './PasswordChangeForm.scss';\nimport { Stack } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { PasswordField } from 'src/modules/form/components/PasswordField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { CHANGE_PASSWORD_SCHEMA } from 'src/modules/profile/constants/schema';\nimport { ChangePasswordData } from 'src/modules/profile/types/ChangePasswordData';\n\ntype Props = {\n form: FormController;\n onChange: () => void;\n};\n\nexport const PasswordChangeForm = ({ form, onChange }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const handleSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n onChange();\n };\n\n return (\n \n \n

\n {intl.formatMessage({ id: 'profile/form/section/changePassword/passwordTip1' })}\n

\n

\n {intl.formatMessage({ id: 'profile/form/section/changePassword/passwordTip2' })}\n

\n

\n {intl.formatMessage({ id: 'profile/form/section/changePassword/passwordTip3' })}\n

\n
\n {/* Accessibility: https://www.chromium.org/developers/design-documents/create-amazing-password-forms */}\n \n intl.formatMessage({ id: error.message }, error.context)}\n size=\"md\"\n />\n intl.formatMessage({ id: error.message }, error.context)}\n size=\"md\"\n />\n \n {intl.formatMessage({ id: 'profile/form/section/changePassword/button/update' })}\n \n
\n );\n};\n","import { Stack } from '@carbon/react';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { FormSection } from 'src/modules/common/components/FormSection';\nimport { UserForm } from 'src/modules/common/components/UserForm';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { PROFILE_CHANGE_PASSWORD, PROFILE_SAVE } from 'src/modules/profile/actions/ProfileActions';\nimport { CHANGE_PASSWORD_SCHEMA } from 'src/modules/profile/constants/schema';\nimport { ChangePasswordData } from 'src/modules/profile/types/ChangePasswordData';\nimport { PasswordChangeForm } from 'src/modules/profile/views/PasswordChangeForm';\nimport { ProfileHeader } from 'src/modules/profile/views/ProfileHeader';\nimport { USER_EDIT_FORM_SCHEMA } from 'src/modules/users/constants/userEditFormSchema';\n\nexport const ProfileContent = (): React.ReactElement => {\n const intl = useIntl();\n\n const authUser = useSelector(getLoggedInUser);\n\n const profileForm = useForm('profile.user-settings', {\n initialValues: {\n email: authUser.email,\n firstName: authUser.firstName,\n lastName: authUser.lastName,\n role: authUser.role,\n },\n reinitialize: false,\n });\n\n const changePasswordForm = useForm('profile.password-change', {\n initialValues: {\n confirmation: '',\n password: '',\n },\n reinitialize: false,\n });\n\n useFormValidator(profileForm, USER_EDIT_FORM_SCHEMA);\n useFormValidator(changePasswordForm, CHANGE_PASSWORD_SCHEMA);\n\n const isProfileFormSubmitting = useFormWatch(profileForm, profileForm.submitting.get);\n\n const saveProfile = useBoundAction(PROFILE_SAVE.request, profileForm);\n const changePassword = useBoundAction(PROFILE_CHANGE_PASSWORD.request, changePasswordForm);\n\n return (\n <>\n \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './ProfileHeader.scss';\nimport { Breadcrumb } from '@carbon/react';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomBreadcrumbItem } from 'src/modules/common/components/CustomBreadcrumbItem';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\n\ntype Props = {\n isSubmitting: boolean;\n title: string;\n onSave: () => void;\n};\n\nexport const ProfileHeader = ({ isSubmitting, title, onSave }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n
\n
\n \n \n \n {intl.formatMessage({ id: 'profile/header/breadcrumbs/project' })}\n \n \n \n\n

{title}

\n
\n\n
\n \n {intl.formatMessage({ id: 'profile/header/button/save' })}\n \n
\n
\n );\n};\n","import { Project } from 'src/modules/common/types/Project';\nimport { User } from 'src/modules/common/types/User';\nimport { ProjectListData } from 'src/modules/project-list/types/ProjectListData';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { ProjectListImportData, ProjectListImportEntry } from 'src/modules/project-list/types/ProjectListImport';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const PROJECT_LIST_FETCH = createTrigger('PROJECT_LIST_FETCH');\nexport const PROJECT_LIST_RESET = createTrigger('PROJECT_LIST_RESET');\nexport const PROJECT_LIST_ABORT = createTrigger('PROJECT_LIST_ABORT');\nexport const PROJECT_LIST_FILTER = createTrigger('PROJECT_LIST_FILTER');\nexport const PROJECT_LIST_SHARE = createTrigger('PROJECT_LIST_SHARE');\n\nexport const PROJECT_LIST_EXPORT = createActions('PROJECT_LIST_EXPORT');\nexport const PROJECT_LIST_DOWNLOAD = createActions('PROJECT_LIST_DOWNLOAD');\n\nexport const PROJECT_LIST_REMOVE_CONFIRM = createTrigger('PROJECT_LIST_REMOVE_CONFIRM');\nexport const PROJECT_LIST_REMOVE_CANCEL = createTrigger('PROJECT_LIST_REMOVE_CANCEL');\nexport const PROJECT_LIST_REMOVE_SUBMIT = createActions('PROJECT_LIST_REMOVE_SUBMIT');\n\nexport const PROJECT_LIST_UNFOLLOW_CONFIRM = createTrigger('PROJECT_LIST_UNFOLLOW_CONFIRM');\nexport const PROJECT_LIST_UNFOLLOW_CANCEL = createTrigger('PROJECT_LIST_UNFOLLOW_CANCEL');\nexport const PROJECT_LIST_UNFOLLOW_SUBMIT = createActions('PROJECT_LIST_UNFOLLOW_SUBMIT');\n\nexport const PROJECT_LIST_IMPORT_OPEN =\n createTrigger('PROJECT_LIST_IMPORT_OPEN');\nexport const PROJECT_LIST_IMPORT_CANCEL =\n createTrigger('PROJECT_LIST_IMPORT_CANCEL');\nexport const PROJECT_LIST_IMPORT_UPLOAD =\n createActions('PROJECT_LIST_IMPORT_UPLOAD');\nexport const PROJECT_LIST_IMPORT_SUBMIT =\n createActions, void>('PROJECT_LIST_IMPORT_SUBMIT');\nexport const PROJECT_LIST_IMPORT_COMPLETE =\n createTrigger('PROJECT_LIST_IMPORT_COMPLETE');\n","import * as C from 'io-ts/Codec';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\n\nexport const PROJECT_LIST_VIEW_MODE: C.Codec = C.literal(\n ProjectListViewMode.LIST,\n ProjectListViewMode.GRID,\n);\n","/* eslint-disable max-len,quote-props,@typescript-eslint/dot-notation */\nimport {\n EnergySource,\n getEnergyEfficiencyLabel,\n HvacArea,\n PROJECT_DATA,\n ProjectData,\n UUID,\n} from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport * as E from 'io-ts/Encoder';\nimport { XlsxValue } from 'src/modules/common/types/XlsxValue';\nimport {\n EXPORT_AREA_UNIT_MAP,\n EXPORT_BUILDING_TYPE_MAP,\n EXPORT_COUNTRY_CODE_MAP,\n EXPORT_CURRENCY_CODE_MAP,\n EXPORT_ENERGY_SOURCE_COOLING,\n EXPORT_ENERGY_SOURCE_HEATING,\n EXPORT_HEADER_COLUMNS,\n} from 'src/modules/project-list/constants/export';\nimport { ProjectListExportEntry } from 'src/modules/project-list/types/ProjectListExport';\n\nconst CELL_STRING = E.id();\nconst CELL_DECIMAL_2: E.Encoder = {\n encode: (value) => value.toDecimalPlaces(2).toNumber(),\n};\nconst CELL_DECIMAL_4: E.Encoder = {\n encode: (value) => value.toDecimalPlaces(4).toNumber(),\n};\nconst CELL_ENUM: (mapping: Readonly>) => E.Encoder = (mapping) => ({\n encode: (value) => mapping[value],\n});\nconst CELL_RATING: E.Encoder = {\n encode: (value) => {\n const maxLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_UP));\n const minLabel = getEnergyEfficiencyLabel(value.toDecimalPlaces(0, Decimal.ROUND_DOWN));\n\n return minLabel === maxLabel\n ? minLabel\n : `${minLabel}–${maxLabel}`;\n },\n};\n\nconst CELL_PROJECT_DATA: E.Encoder = {\n encode: (value) => JSON.stringify(PROJECT_DATA.encode(value)),\n};\n\nconst CELL_CARBON_SAVINGS: E.Encoder = {\n encode: (value) => {\n if (value.isNegative()) {\n return '<0';\n }\n if (value.isZero()) {\n return 0;\n }\n if (value.lessThan(1_000_000)) {\n return '<1';\n }\n\n return value.div(1_000_000).toDecimalPlaces(0).toNumber();\n },\n};\n\nconst CELL_ENERGY_SAVINGS: E.Encoder = {\n encode: (value) => {\n if (value.isNegative()) {\n return '<0';\n }\n if (value.isZero()) {\n return 0;\n }\n if (value.lessThan(1_000)) {\n return '<1';\n }\n\n return value.div(1_000).toDecimalPlaces(0).toNumber();\n },\n};\n\nconst CELL_AMOUNT_SAVINGS: E.Encoder = {\n encode: (value) => {\n if (value.isNegative()) {\n return '<0';\n }\n if (value.isZero()) {\n return 0;\n }\n if (value.lessThan(1_000)) {\n return '<1000';\n }\n\n return value.div(1_000).toDecimalPlaces(0).mul(1_000).toNumber();\n },\n};\n\nconst CONTENT_DATA = E.struct({\n 'project id': E.nullable(UUID),\n 'project title': CELL_STRING,\n 'project goal': CELL_STRING,\n\n 'building type': CELL_ENUM(EXPORT_BUILDING_TYPE_MAP),\n 'building size unit': CELL_ENUM(EXPORT_AREA_UNIT_MAP),\n 'building size': E.nullable(CELL_DECIMAL_2),\n 'building street address': CELL_STRING,\n 'building city': CELL_STRING,\n 'building country': CELL_ENUM(EXPORT_COUNTRY_CODE_MAP),\n 'building zip code': CELL_STRING,\n\n 'participants author': CELL_STRING,\n 'participants property manager': CELL_STRING,\n 'participants consulting engineer': CELL_STRING,\n 'participants product engineer': CELL_STRING,\n\n 'currency': CELL_ENUM(EXPORT_CURRENCY_CODE_MAP),\n 'electricity price': E.nullable(CELL_DECIMAL_4),\n 'gas price': E.nullable(CELL_DECIMAL_4),\n 'heating oil price': E.nullable(CELL_DECIMAL_4),\n 'district heating price': E.nullable(CELL_DECIMAL_4),\n 'district cooling price': E.nullable(CELL_DECIMAL_4),\n 'heating other price': E.nullable(CELL_DECIMAL_4),\n 'cooling other price': E.nullable(CELL_DECIMAL_4),\n\n 'heating energy source': CELL_ENUM(EXPORT_ENERGY_SOURCE_HEATING),\n 'heating energy annual consumption': E.nullable(CELL_DECIMAL_2),\n 'heating energy carbon intensity': E.nullable(CELL_DECIMAL_2),\n 'heating electrical aux annual consumption': E.nullable(CELL_DECIMAL_2),\n\n 'cooling energy source': CELL_ENUM(EXPORT_ENERGY_SOURCE_COOLING),\n 'cooling energy annual consumption': E.nullable(CELL_DECIMAL_2),\n 'cooling energy carbon intensity': E.nullable(CELL_DECIMAL_2),\n 'cooling electrical aux annual consumption': E.nullable(CELL_DECIMAL_2),\n\n 'ventilation electrical aux annual consumption': E.nullable(CELL_DECIMAL_2),\n\n 'overall efficiency actual': E.nullable(CELL_RATING),\n 'overall efficiency future': E.nullable(CELL_RATING),\n\n 'heating area efficiency actual': E.nullable(CELL_RATING),\n 'heating area efficiency future': E.nullable(CELL_RATING),\n\n 'cooling area efficiency actual': E.nullable(CELL_RATING),\n 'cooling area efficiency future': E.nullable(CELL_RATING),\n\n 'ventilation area efficiency actual': E.nullable(CELL_RATING),\n 'ventilation area efficiency future': E.nullable(CELL_RATING),\n\n 'heating energy annual savings in MWh or m3': E.nullable(CELL_ENERGY_SAVINGS),\n 'heating energy annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'heating energy annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'heating electrical aux annual savings in MWh': E.nullable(CELL_ENERGY_SAVINGS),\n 'heating electrical aux annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'heating electrical aux annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'cooling energy annual savings in MWh': E.nullable(CELL_ENERGY_SAVINGS),\n 'cooling energy annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'cooling energy annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'cooling electrical aux annual savings in MWh': E.nullable(CELL_ENERGY_SAVINGS),\n 'cooling electrical aux annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'cooling electrical aux annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'ventilation electrical aux annual savings in MWh': E.nullable(CELL_ENERGY_SAVINGS),\n 'ventilation electrical aux annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'ventilation electrical aux annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'overall thermal energy annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'overall thermal energy annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'overall electrical aux annual savings in MWh': E.nullable(CELL_ENERGY_SAVINGS),\n 'overall electrical aux annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n 'overall electrical aux annual savings in co2 tonne': E.nullable(CELL_CARBON_SAVINGS),\n\n 'total potential annual savings in currency': E.nullable(CELL_AMOUNT_SAVINGS),\n\n 'project data and configuration': CELL_PROJECT_DATA,\n});\n\nexport const EXPORT_CONTENT_LINE: E.Encoder = {\n encode: (entry) => {\n const cells = CONTENT_DATA.encode({\n 'project id': entry.project.id,\n 'project title': entry.project.data.title,\n 'project goal': entry.project.data.goals,\n\n 'building type': entry.project.data.building.type,\n 'building size unit': entry.project.data.building.unit,\n 'building size': entry.project.data.building.size,\n 'building street address': entry.project.data.building.address.street,\n 'building city': entry.project.data.building.address.city,\n 'building country': entry.project.data.building.address.country,\n 'building zip code': entry.project.data.building.address.zip,\n\n 'participants author': entry.project.data.participants.author,\n 'participants property manager': entry.project.data.participants.propertyManager,\n 'participants consulting engineer': entry.project.data.participants.consutlingEngineer,\n 'participants product engineer': entry.project.data.participants.productManager,\n\n 'currency': entry.project.data.currency,\n 'electricity price': entry.project.data.hvac.prices[EnergySource.ELECTRICITY],\n 'gas price': entry.project.data.hvac.prices[EnergySource.GAS],\n 'heating oil price': entry.project.data.hvac.prices[EnergySource.HEATING_OIL],\n 'district heating price': entry.project.data.hvac.prices[EnergySource.HEATING_DISTRICT],\n 'district cooling price': entry.project.data.hvac.prices[EnergySource.COOLING_DISTRICT],\n 'heating other price': entry.project.data.hvac.prices[EnergySource.HEATING_OTHER],\n 'cooling other price': entry.project.data.hvac.prices[EnergySource.COOLING_OTHER],\n\n 'heating energy source': entry.project.data.hvac.areas[HvacArea.HEATING].thermal.energySource,\n 'heating energy annual consumption': entry.project.data.hvac.areas[HvacArea.HEATING].thermal.annualEnergyUse,\n 'heating energy carbon intensity': entry.project.data.hvac.areas[HvacArea.HEATING].thermal.carbonIntensity,\n 'heating electrical aux annual consumption': entry.project.data.hvac.areas[HvacArea.HEATING].electrical.annualEnergyUse,\n\n 'cooling energy source': entry.project.data.hvac.areas[HvacArea.COOLING].thermal.energySource,\n 'cooling energy annual consumption': entry.project.data.hvac.areas[HvacArea.COOLING].thermal.annualEnergyUse,\n 'cooling energy carbon intensity': entry.project.data.hvac.areas[HvacArea.COOLING].thermal.carbonIntensity,\n 'cooling electrical aux annual consumption': entry.project.data.hvac.areas[HvacArea.COOLING].electrical.annualEnergyUse,\n\n 'ventilation electrical aux annual consumption': entry.project.data.hvac.areas[HvacArea.VENTILATION].electrical.annualEnergyUse,\n\n 'overall efficiency actual': entry.results.overall.rating.actual,\n 'overall efficiency future': entry.results.overall.rating.future,\n\n 'heating area efficiency actual': entry.results.perArea.heating.rating.actual,\n 'heating area efficiency future': entry.results.perArea.heating.rating.future,\n\n 'cooling area efficiency actual': entry.results.perArea.cooling.rating.actual,\n 'cooling area efficiency future': entry.results.perArea.cooling.rating.future,\n\n 'ventilation area efficiency actual': entry.results.perArea.ventilation.rating.actual,\n 'ventilation area efficiency future': entry.results.perArea.ventilation.rating.future,\n\n 'heating energy annual savings in MWh or m3': entry.results.perArea.heating.savings.thermal.absolute,\n 'heating energy annual savings in currency': entry.results.perArea.heating.savings.thermal.annual,\n 'heating energy annual savings in co2 tonne': entry.results.perArea.heating.savings.carbon.thermal,\n\n 'heating electrical aux annual savings in MWh': entry.results.perArea.heating.savings.electrical.absolute,\n 'heating electrical aux annual savings in currency': entry.results.perArea.heating.savings.electrical.annual,\n 'heating electrical aux annual savings in co2 tonne': entry.results.perArea.heating.savings.carbon.electrical,\n\n 'cooling energy annual savings in MWh': entry.results.perArea.cooling.savings.thermal.absolute,\n 'cooling energy annual savings in currency': entry.results.perArea.cooling.savings.thermal.annual,\n 'cooling energy annual savings in co2 tonne': entry.results.perArea.cooling.savings.carbon.thermal,\n\n 'cooling electrical aux annual savings in MWh': entry.results.perArea.cooling.savings.electrical.absolute,\n 'cooling electrical aux annual savings in currency': entry.results.perArea.cooling.savings.electrical.annual,\n 'cooling electrical aux annual savings in co2 tonne': entry.results.perArea.cooling.savings.carbon.electrical,\n\n 'ventilation electrical aux annual savings in MWh': entry.results.perArea.ventilation.savings.electrical.absolute,\n 'ventilation electrical aux annual savings in currency': entry.results.perArea.ventilation.savings.electrical.annual,\n 'ventilation electrical aux annual savings in co2 tonne': entry.results.perArea.ventilation.savings.carbon.electrical,\n\n 'overall thermal energy annual savings in currency': entry.results.overall.savings.thermal.annual,\n 'overall thermal energy annual savings in co2 tonne': entry.results.overall.savings.carbon.thermal,\n\n 'overall electrical aux annual savings in MWh': entry.results.overall.savings.electrical.absolute,\n 'overall electrical aux annual savings in currency': entry.results.overall.savings.electrical.annual,\n 'overall electrical aux annual savings in co2 tonne': entry.results.overall.savings.carbon.electrical,\n\n 'total potential annual savings in currency': entry.results.overall.savings.overall.annual,\n\n 'project data and configuration': entry.project.data,\n });\n return EXPORT_HEADER_COLUMNS.map((column) => cells[column]);\n },\n};\n","/* eslint-disable quote-props,@typescript-eslint/dot-notation */\nimport { DECIMAL, PROJECT_DATA, ProjectData, UUID } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { altW, flatMap, map, mapLeft } from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport * as J from 'fp-ts/Json';\nimport * as R from 'fp-ts/Reader';\nimport { map as mapRecord } from 'fp-ts/ReadonlyRecord';\nimport * as D from 'io-ts/Decoder';\nimport { XLSX_VALUE } from 'src/modules/common/codecs/XlsxValue';\nimport {\n IMPORT_AREA_UNIT_MAP,\n IMPORT_BUILDING_TYPE_MAP,\n IMPORT_COUNTRY_CODE_MAP,\n IMPORT_CURRENCY_CODE_MAP,\n IMPORT_ENERGY_SOURCE_COOLING,\n IMPORT_ENERGY_SOURCE_HEATING,\n IMPORT_HEADER_COLUMNS,\n} from 'src/modules/project-list/constants/import';\nimport {\n ProjectListImportColumns,\n ProjectListImportLine,\n ProjectListImportLineMapper,\n ProjectListImportRawLine,\n} from 'src/modules/project-list/types/ProjectListImport';\nimport { formatImportError } from 'src/modules/project-list/utils/formatImportError';\n\nconst CELL_BASE: D.Decoder = pipe(\n XLSX_VALUE,\n D.parse((input) => D.success(String(input ?? ''))),\n);\nconst CELL_EMPTY: D.Decoder = {\n decode: (input) => (\n input == null || input === ''\n ? D.success(null)\n : D.failure(input, 'CellEmpty')\n ),\n};\nconst CELL_DECIMAL_2: D.Decoder = pipe(\n DECIMAL,\n D.parse((input) => (\n input.isNegative()\n ? D.failure(input, 'CellDecimal')\n : D.success(input.toDecimalPlaces(2))\n )),\n);\nconst CELL_DECIMAL_4: D.Decoder = pipe(\n DECIMAL,\n D.parse((input) => (\n input.isNegative()\n ? D.failure(input, 'CellDecimal')\n : D.success(input.toDecimalPlaces(4))\n )),\n);\nconst CELL_STRING = (minLength: number, maxLength: number): D.Decoder => pipe(\n CELL_BASE,\n D.parse((input) => (\n input.length < minLength\n ? D.failure(input, `CellString(${minLength},${maxLength})`)\n : D.success(input.substring(0, maxLength))\n )),\n);\nconst CELL_ENUM: (mapping: Readonly>) => D.Decoder = (mapping) => pipe(\n CELL_BASE,\n D.parse((input) => (\n mapping[input] == null\n ? D.failure(input, `CellEnum(${Object.keys(mapping).join('|')})`)\n : D.success(mapping[input])\n )),\n);\nconst CELL_PROJECT_DATA: D.Decoder = pipe(\n CELL_BASE,\n D.parse((input) => pipe(\n J.parse(input),\n flatMap(PROJECT_DATA.decode),\n altW(() => D.failure(input, 'ProjectData')),\n )),\n);\n\nconst CONTENT_DATA: D.Decoder = D.struct({\n 'project id': D.union(CELL_EMPTY, UUID),\n 'project title': CELL_STRING(1, 40),\n 'project goal': CELL_STRING(0, 280),\n\n 'building type': CELL_ENUM(IMPORT_BUILDING_TYPE_MAP),\n 'building size unit': CELL_ENUM(IMPORT_AREA_UNIT_MAP),\n 'building size': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n 'building street address': CELL_STRING(0, 100),\n 'building city': CELL_STRING(0, 40),\n 'building country': CELL_ENUM(IMPORT_COUNTRY_CODE_MAP),\n 'building zip code': CELL_STRING(0, 20),\n\n 'participants author': CELL_STRING(0, 50),\n 'participants property manager': CELL_STRING(0, 50),\n 'participants consulting engineer': CELL_STRING(0, 50),\n 'participants product engineer': CELL_STRING(0, 50),\n\n 'currency': CELL_ENUM(IMPORT_CURRENCY_CODE_MAP),\n 'electricity price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'gas price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'heating oil price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'district heating price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'district cooling price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'heating other price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n 'cooling other price': D.union(CELL_EMPTY, CELL_DECIMAL_4),\n\n 'heating energy source': CELL_ENUM(IMPORT_ENERGY_SOURCE_HEATING),\n 'heating energy annual consumption': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n 'heating energy carbon intensity': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n 'heating electrical aux annual consumption': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n\n 'cooling energy source': CELL_ENUM(IMPORT_ENERGY_SOURCE_COOLING),\n 'cooling energy annual consumption': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n 'cooling energy carbon intensity': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n 'cooling electrical aux annual consumption': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n\n 'ventilation electrical aux annual consumption': D.union(CELL_EMPTY, CELL_DECIMAL_2),\n\n 'project data and configuration': CELL_PROJECT_DATA,\n});\n\nconst COLUMN_ORDER: ProjectListImportColumns = {\n 'project id': Number.NaN,\n 'project title': Number.NaN,\n 'project goal': Number.NaN,\n\n 'building type': Number.NaN,\n 'building size unit': Number.NaN,\n 'building size': Number.NaN,\n 'building street address': Number.NaN,\n 'building city': Number.NaN,\n 'building country': Number.NaN,\n 'building zip code': Number.NaN,\n\n 'participants author': Number.NaN,\n 'participants property manager': Number.NaN,\n 'participants consulting engineer': Number.NaN,\n 'participants product engineer': Number.NaN,\n\n 'currency': Number.NaN,\n 'electricity price': Number.NaN,\n 'gas price': Number.NaN,\n 'heating oil price': Number.NaN,\n 'district heating price': Number.NaN,\n 'district cooling price': Number.NaN,\n 'heating other price': Number.NaN,\n 'cooling other price': Number.NaN,\n\n 'heating energy source': Number.NaN,\n 'heating energy annual consumption': Number.NaN,\n 'heating energy carbon intensity': Number.NaN,\n 'heating electrical aux annual consumption': Number.NaN,\n\n 'cooling energy source': Number.NaN,\n 'cooling energy annual consumption': Number.NaN,\n 'cooling energy carbon intensity': Number.NaN,\n 'cooling electrical aux annual consumption': Number.NaN,\n\n 'ventilation electrical aux annual consumption': Number.NaN,\n\n 'project data and configuration': Number.NaN,\n};\n\nconst HEADER_LINE: D.Decoder = pipe(\n D.array(D.string),\n D.parse((columns) => {\n const result = { ...COLUMN_ORDER };\n\n for (const column of IMPORT_HEADER_COLUMNS) {\n const index = columns.indexOf(column);\n if (index < 0) {\n return D.failure(columns, 'HeaderLine');\n }\n\n result[column] = index;\n }\n\n return D.success(result);\n }),\n);\nconst CONTENT_LINE = (columns: ProjectListImportColumns): D.Decoder => pipe(\n D.array(XLSX_VALUE),\n D.parse((cells) => pipe(\n columns,\n mapRecord((index) => cells[index] ?? null),\n D.success,\n )),\n D.parse(CONTENT_DATA.decode),\n);\n\nexport const IMPORT_CONTENT = pipe(\n R.ask(),\n R.map((mapper): D.Decoder => pipe(\n D.array(D.array(XLSX_VALUE)),\n D.parse((rows) => pipe(\n HEADER_LINE.decode(rows[0]),\n map((columns) => rows.slice(1)\n .map(CONTENT_LINE(columns).decode)\n .map((line, index): ProjectListImportLine => ({\n rowNumber: index + 2,\n importData: pipe(line, map(mapper), mapLeft(formatImportError)),\n }))),\n )),\n )),\n);\n","/* eslint-disable quote-props */\nimport {\n AreaUnit,\n BuildingType,\n COUNTRY_CODES,\n CountryCode,\n CurrencyCode,\n EnergySource,\n} from '@belimo-retrofit-portal/logic';\nimport { CURRENCY_CODE_OPTIONS } from 'src/modules/common/constants/options';\n\nexport const EXPORT_HEADER_COLUMNS = [\n 'project id',\n 'project title',\n 'project goal',\n\n 'building type',\n 'building size unit',\n 'building size',\n 'building street address',\n 'building city',\n 'building country',\n 'building zip code',\n\n 'participants author',\n 'participants property manager',\n 'participants consulting engineer',\n 'participants product engineer',\n\n 'currency',\n 'electricity price',\n 'gas price',\n 'heating oil price',\n 'district heating price',\n 'district cooling price',\n 'heating other price',\n 'cooling other price',\n\n 'heating energy source',\n 'heating energy annual consumption',\n 'heating energy carbon intensity',\n 'heating electrical aux annual consumption',\n\n 'cooling energy source',\n 'cooling energy annual consumption',\n 'cooling energy carbon intensity',\n 'cooling electrical aux annual consumption',\n\n 'ventilation electrical aux annual consumption',\n\n 'overall efficiency actual',\n 'overall efficiency future',\n\n 'heating area efficiency actual',\n 'heating area efficiency future',\n\n 'cooling area efficiency actual',\n 'cooling area efficiency future',\n\n 'ventilation area efficiency actual',\n 'ventilation area efficiency future',\n\n 'heating energy annual savings in MWh or m3',\n 'heating energy annual savings in currency',\n 'heating energy annual savings in co2 tonne',\n\n 'heating electrical aux annual savings in MWh',\n 'heating electrical aux annual savings in currency',\n 'heating electrical aux annual savings in co2 tonne',\n\n 'cooling energy annual savings in MWh',\n 'cooling energy annual savings in currency',\n 'cooling energy annual savings in co2 tonne',\n\n 'cooling electrical aux annual savings in MWh',\n 'cooling electrical aux annual savings in currency',\n 'cooling electrical aux annual savings in co2 tonne',\n\n 'ventilation electrical aux annual savings in MWh',\n 'ventilation electrical aux annual savings in currency',\n 'ventilation electrical aux annual savings in co2 tonne',\n\n 'overall thermal energy annual savings in currency',\n 'overall thermal energy annual savings in co2 tonne',\n\n 'overall electrical aux annual savings in MWh',\n 'overall electrical aux annual savings in currency',\n 'overall electrical aux annual savings in co2 tonne',\n\n 'total potential annual savings in currency',\n\n 'project data and configuration',\n] as const;\n\nexport const EXPORT_BUILDING_TYPE_MAP: Readonly> = {\n [BuildingType.OFFICE]: 'Office',\n [BuildingType.DATA_CENTER]: 'Data center',\n [BuildingType.EDUCATION_ELEMENTARY]: 'Education, elementary',\n [BuildingType.EDUCATION_HIGHER]: 'Education, higher',\n [BuildingType.EDUCATION_OTHER]: 'Education, other',\n [BuildingType.ENTERTAINMENT_LEISURE]: 'Entertainment and Leisure',\n [BuildingType.GOVERNMENT]: 'Government',\n [BuildingType.HEALTH]: 'Health',\n [BuildingType.HOSPITAL]: 'Hospital',\n [BuildingType.HOTEL]: 'Hotel',\n [BuildingType.LIFE_SCIENCE]: 'Life science',\n [BuildingType.RESTAURANT]: 'Restaurant',\n [BuildingType.RETAIL]: 'Retail',\n [BuildingType.WHOLESALE_RETAIL_TRADE]: 'Wholesale/retail trade',\n};\n\nexport const EXPORT_AREA_UNIT_MAP: Readonly> = {\n [AreaUnit.SQM]: 'm2',\n [AreaUnit.SQFT]: 'ft2',\n};\n\nexport const EXPORT_COUNTRY_CODE_MAP: Readonly> =\n Object.fromEntries(COUNTRY_CODES.map((code) => [code, code]));\n\nexport const EXPORT_CURRENCY_CODE_MAP: Readonly> =\n Object.fromEntries(CURRENCY_CODE_OPTIONS.map((code) => [code, code]));\n\nexport const EXPORT_ENERGY_SOURCE_HEATING: Readonly> = {\n [EnergySource.ELECTRICITY]: 'Electricity',\n [EnergySource.GAS]: 'Gas',\n\n [EnergySource.HEATING_OIL]: 'Heating Oil',\n [EnergySource.HEATING_DISTRICT]: 'District',\n [EnergySource.HEATING_OTHER]: 'Other',\n\n [EnergySource.COOLING_DISTRICT]: '',\n [EnergySource.COOLING_OTHER]: '',\n};\n\nexport const EXPORT_ENERGY_SOURCE_COOLING: Readonly> = {\n [EnergySource.ELECTRICITY]: 'Electricity',\n [EnergySource.GAS]: 'Gas',\n\n [EnergySource.HEATING_OIL]: '',\n [EnergySource.HEATING_DISTRICT]: '',\n [EnergySource.HEATING_OTHER]: '',\n\n [EnergySource.COOLING_DISTRICT]: 'District',\n [EnergySource.COOLING_OTHER]: 'Other',\n};\n","/* eslint-disable quote-props */\nimport {\n AreaUnit,\n BuildingType,\n COUNTRY_CODES,\n CountryCode,\n CurrencyCode,\n EnergySource,\n} from '@belimo-retrofit-portal/logic';\nimport { CURRENCY_CODE_OPTIONS } from 'src/modules/common/constants/options';\n\nexport const IMPORT_HEADER_COLUMNS = [\n 'project id',\n 'project title',\n 'project goal',\n\n 'building type',\n 'building size unit',\n 'building size',\n 'building street address',\n 'building city',\n 'building country',\n 'building zip code',\n\n 'participants author',\n 'participants property manager',\n 'participants consulting engineer',\n 'participants product engineer',\n\n 'currency',\n 'electricity price',\n 'gas price',\n 'heating oil price',\n 'district heating price',\n 'district cooling price',\n 'heating other price',\n 'cooling other price',\n\n 'heating energy source',\n 'heating energy annual consumption',\n 'heating energy carbon intensity',\n 'heating electrical aux annual consumption',\n\n 'cooling energy source',\n 'cooling energy annual consumption',\n 'cooling energy carbon intensity',\n 'cooling electrical aux annual consumption',\n\n 'ventilation electrical aux annual consumption',\n\n 'project data and configuration',\n] as const;\n\nexport const IMPORT_BUILDING_TYPE_MAP: Readonly> = {\n 'Office': BuildingType.OFFICE,\n 'Data center': BuildingType.DATA_CENTER,\n 'Education, elementary': BuildingType.EDUCATION_ELEMENTARY,\n 'Education, higher': BuildingType.EDUCATION_HIGHER,\n 'Education, other': BuildingType.EDUCATION_OTHER,\n 'Entertainment and Leisure': BuildingType.ENTERTAINMENT_LEISURE,\n 'Government': BuildingType.GOVERNMENT,\n 'Health': BuildingType.HEALTH,\n 'Hospital': BuildingType.HOSPITAL,\n 'Hotel': BuildingType.HOTEL,\n 'Life science': BuildingType.LIFE_SCIENCE,\n 'Restaurant': BuildingType.RESTAURANT,\n 'Retail': BuildingType.RETAIL,\n 'Wholesale/retail trade': BuildingType.WHOLESALE_RETAIL_TRADE,\n};\n\nexport const IMPORT_AREA_UNIT_MAP: Readonly> = {\n 'm2': AreaUnit.SQM,\n 'ft2': AreaUnit.SQFT,\n};\n\nexport const IMPORT_COUNTRY_CODE_MAP: Readonly> =\n Object.fromEntries(COUNTRY_CODES.map((code) => [code, code]));\n\nexport const IMPORT_CURRENCY_CODE_MAP: Readonly> =\n Object.fromEntries(CURRENCY_CODE_OPTIONS.map((code) => [code, code]));\n\nexport const IMPORT_ENERGY_SOURCE_HEATING: Readonly> = {\n 'Electricity': EnergySource.ELECTRICITY,\n 'District': EnergySource.HEATING_DISTRICT,\n 'Heating Oil': EnergySource.HEATING_OIL,\n 'Gas': EnergySource.GAS,\n 'Other': EnergySource.HEATING_OTHER,\n};\n\nexport const IMPORT_ENERGY_SOURCE_COOLING: Readonly> = {\n 'Electricity': EnergySource.ELECTRICITY,\n 'District': EnergySource.COOLING_DISTRICT,\n 'Gas': EnergySource.GAS,\n 'Other': EnergySource.COOLING_OTHER,\n};\n","import { ReadonlyRecord } from 'fp-ts/ReadonlyRecord';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\n\nexport const PROJECT_LIST_PAGE_SIZE: ReadonlyRecord = {\n [ProjectListViewMode.LIST]: 10,\n [ProjectListViewMode.GRID]: 6,\n};\n","import { ReadonlyRecord } from 'fp-ts/ReadonlyRecord';\nimport { ProjectListSort } from 'src/modules/project-list/types/ProjectListSort';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\n\nexport const PROJECT_LIST_DEFAULT_SORT: ReadonlyRecord = {\n [ProjectListViewMode.LIST]: {\n field: 'updated',\n direction: 'desc',\n },\n [ProjectListViewMode.GRID]: {\n field: 'title',\n direction: 'asc',\n },\n};\n","import './ProjectListPage.scss';\nimport clsx from 'clsx';\nimport React, { useCallback, useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { Project } from 'src/modules/common/types/Project';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport {\n PROJECT_LIST_DOWNLOAD,\n PROJECT_LIST_FILTER,\n PROJECT_LIST_EXPORT,\n PROJECT_LIST_IMPORT_CANCEL,\n PROJECT_LIST_IMPORT_COMPLETE,\n PROJECT_LIST_IMPORT_OPEN,\n PROJECT_LIST_IMPORT_SUBMIT,\n PROJECT_LIST_IMPORT_UPLOAD,\n PROJECT_LIST_REMOVE_CANCEL,\n PROJECT_LIST_REMOVE_CONFIRM,\n PROJECT_LIST_REMOVE_SUBMIT,\n PROJECT_LIST_UNFOLLOW_CONFIRM,\n PROJECT_LIST_UNFOLLOW_SUBMIT,\n PROJECT_LIST_UNFOLLOW_CANCEL,\n PROJECT_LIST_SHARE,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { getProjectListDownloading } from 'src/modules/project-list/selectors/getProjectListDownloading';\nimport { getProjectListExport } from 'src/modules/project-list/selectors/getProjectListExport';\nimport { getProjectListImport } from 'src/modules/project-list/selectors/getProjectListImport';\nimport { getProjectListProjects } from 'src/modules/project-list/selectors/getProjectListProjects';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { getProjectListRemoving } from 'src/modules/project-list/selectors/getProjectListRemoving';\nimport { getProjectListSlice } from 'src/modules/project-list/selectors/getProjectListSlice';\nimport { getProjectListUnfollowing } from 'src/modules/project-list/selectors/getProjectListUnfollowing';\nimport { ProjectListEmpty } from 'src/modules/project-list/views/ProjectListEmpty';\nimport { ProjectListImportModal } from 'src/modules/project-list/views/ProjectListImportModal';\nimport { ProjectListRemoveModal } from 'src/modules/project-list/views/ProjectListRemoveModal';\nimport { ProjectListToolbar } from 'src/modules/project-list/views/ProjectListToolbar';\nimport { ProjectListView } from 'src/modules/project-list/views/ProjectListView';\nimport { UnfollowProjectModal } from 'src/modules/project-list/views/UnfollowProjectModal';\nimport { ProjectCreateModal } from 'src/modules/project-new/views/ProjectCreateModal';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const ProjectListPage = (): React.ReactElement => {\n const intl = useIntl();\n const data = useSelector(getProjectListProjects);\n const slice = useSelector(getProjectListSlice);\n const query = useSelector(getProjectListQuery);\n const applyFilter = useAction(PROJECT_LIST_FILTER.trigger);\n const user = useSelector(getLoggedInUser);\n const language = useSelector(getLanguage);\n\n const [openCreationDialog, setOpenCreationDialog] = useState(false);\n\n const downloading = useSelector(getProjectListDownloading);\n const downloadReport = useAction(PROJECT_LIST_DOWNLOAD.request);\n const handleDownload = useCallback((project: Project) => downloadReport(undefined, project), [downloadReport]);\n\n const removeProjectState = useSelector(getProjectListRemoving);\n const removeProjectOpen = useAction(PROJECT_LIST_REMOVE_CONFIRM.trigger);\n const removeProjectSubmit = useBoundAction(PROJECT_LIST_REMOVE_SUBMIT.request, undefined);\n const removeProjectCancel = useBoundAction(PROJECT_LIST_REMOVE_CANCEL.trigger, undefined);\n\n const unfollowProjectState = useSelector(getProjectListUnfollowing);\n\n const unfollowProjectOpen = useAction(PROJECT_LIST_UNFOLLOW_CONFIRM.trigger);\n const unfollowProjectSubmit = useAction(PROJECT_LIST_UNFOLLOW_SUBMIT.request);\n const unfollowProjectCancel = useAction(PROJECT_LIST_UNFOLLOW_CANCEL.trigger);\n\n const importState = useSelector(getProjectListImport);\n const importProjectOpen = useBoundAction(PROJECT_LIST_IMPORT_OPEN.trigger, undefined);\n const importProjectUpload = useAction(PROJECT_LIST_IMPORT_UPLOAD.request);\n const importProjectCancel = useBoundAction(PROJECT_LIST_IMPORT_CANCEL.trigger, undefined);\n const importProjectSubmit = useAction(PROJECT_LIST_IMPORT_SUBMIT.request);\n const importProjectComplete = useBoundAction(PROJECT_LIST_IMPORT_COMPLETE.trigger, undefined);\n\n const exporting = useSelector(getProjectListExport);\n const exportProjectData = useBoundAction(PROJECT_LIST_EXPORT.request, undefined);\n\n const shareProject = useAction(PROJECT_LIST_SHARE.trigger);\n\n return (\n <>\n \n {\n openCreationDialog\n ? intl.formatMessage({ id: 'projectList/pageTitle/newProject' })\n : intl.formatMessage({ id: 'projectList/pageTitle' })\n }\n \n \n\n \n {data.length !== 0 ? (\n <>\n setOpenCreationDialog(true)}\n onFilter={applyFilter}\n />\n\n unfollowProjectOpen(project, user)}\n onShare={shareProject}\n />\n \n ) : (\n setOpenCreationDialog(true)}/>\n )}\n \n\n \n\n setOpenCreationDialog(false)}\n />\n\n \n\n \n\n \n \n );\n};\n","import { Action } from 'redux';\nimport {\n PROJECT_LIST_ABORT,\n PROJECT_LIST_FETCH,\n PROJECT_LIST_RESET,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListDataReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_FETCH.is(action)) {\n return {\n ...state,\n data: action.data,\n import: null,\n export: null,\n removing: null,\n downloading: null,\n unfollowing: null,\n };\n }\n if (PROJECT_LIST_RESET.is(action)) {\n return {\n ...state,\n data: null,\n import: null,\n export: null,\n removing: null,\n downloading: null,\n unfollowing: null,\n };\n }\n if (PROJECT_LIST_ABORT.is(action)) {\n return {\n ...state,\n import: null,\n export: null,\n removing: null,\n downloading: null,\n unfollowing: null,\n };\n }\n\n return state;\n}\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { PROJECT_LIST_DOWNLOAD } from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListDownloadReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_DOWNLOAD.isPending(action)) {\n return {\n ...state,\n downloading: {\n project: action.meta,\n status: FUTURE.pending(),\n },\n };\n }\n if (PROJECT_LIST_DOWNLOAD.isSuccess(action)) {\n return {\n ...state,\n downloading: {\n project: action.meta,\n status: FUTURE.success(undefined),\n },\n };\n }\n if (PROJECT_LIST_DOWNLOAD.isFailure(action)) {\n return {\n ...state,\n downloading: {\n project: action.meta,\n status: FUTURE.failure(action.data),\n },\n };\n }\n\n return state;\n}\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { PROJECT_LIST_EXPORT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListExportReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_EXPORT.isPending(action)) {\n return {\n ...state,\n export: FUTURE.pending(),\n };\n }\n if (PROJECT_LIST_EXPORT.isSuccess(action)) {\n return {\n ...state,\n export: FUTURE.success(action.data),\n };\n }\n if (PROJECT_LIST_EXPORT.isFailure(action)) {\n return {\n ...state,\n export: FUTURE.failure(action.data),\n };\n }\n\n return state;\n}\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux';\nimport { FUTURE, Future } from 'src/modules/common/types/Future';\nimport {\n PROJECT_LIST_ABORT,\n PROJECT_LIST_IMPORT_CANCEL,\n PROJECT_LIST_IMPORT_COMPLETE,\n PROJECT_LIST_IMPORT_OPEN,\n PROJECT_LIST_IMPORT_SUBMIT,\n PROJECT_LIST_IMPORT_UPLOAD,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListImportData } from 'src/modules/project-list/types/ProjectListImport';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListImportReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_IMPORT_OPEN.is(action)) {\n return {\n ...state,\n import: {\n upload: null,\n submit: null,\n },\n };\n }\n if (PROJECT_LIST_IMPORT_CANCEL.is(action)) {\n return {\n ...state,\n import: null,\n };\n }\n\n if (PROJECT_LIST_IMPORT_UPLOAD.isPending(action)) {\n return modifyUploadStatus(state, FUTURE.pending());\n }\n if (PROJECT_LIST_IMPORT_UPLOAD.isSuccess(action)) {\n return modifyUploadStatus(state, FUTURE.success(action.data));\n }\n if (PROJECT_LIST_IMPORT_UPLOAD.isFailure(action)) {\n return modifyUploadStatus(state, FUTURE.failure(action.data));\n }\n\n if (PROJECT_LIST_IMPORT_SUBMIT.isPending(action)) {\n return modifySubmitStatus(state, FUTURE.pending());\n }\n if (PROJECT_LIST_IMPORT_SUBMIT.isSuccess(action)) {\n return modifySubmitStatus(state, FUTURE.success(undefined));\n }\n if (PROJECT_LIST_IMPORT_SUBMIT.isFailure(action)) {\n return modifySubmitStatus(state, FUTURE.failure(action.data));\n }\n\n if (PROJECT_LIST_IMPORT_COMPLETE.is(action)) {\n return {\n ...state,\n import: null,\n };\n }\n\n return state;\n}\n\nfunction modifyUploadStatus(state: ProjectListState, status: Future): ProjectListState {\n return pipe(\n O.id(),\n O.prop('import'),\n O.fromNullable,\n O.prop('upload'),\n O.modify(() => status),\n )(state);\n}\n\nfunction modifySubmitStatus(state: ProjectListState, status: Future): ProjectListState {\n return pipe(\n O.id(),\n O.prop('import'),\n O.fromNullable,\n O.prop('submit'),\n O.modify(() => status),\n )(state);\n}\n","import { projectListDataReducer } from 'src/modules/project-list/reducers/projectListDataReducer';\nimport { projectListDownloadReducer } from 'src/modules/project-list/reducers/projectListDownloadReducer';\nimport { projectListExportReducer } from 'src/modules/project-list/reducers/projectListExportReducer';\nimport { projectListImportReducer } from 'src/modules/project-list/reducers/projectListImportReducer';\nimport { projectListRemovingReducer } from 'src/modules/project-list/reducers/projectListRemovingReducer';\nimport { projectListUnfollowingReducer } from 'src/modules/project-list/reducers/projectListUnfollowingReducer';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ProjectListState = {\n data: null,\n import: null,\n export: null,\n removing: null,\n downloading: null,\n unfollowing: null,\n};\n\nexport const projectListReducer = chainReducers(defaultState, [\n projectListDataReducer,\n projectListImportReducer,\n projectListExportReducer,\n projectListRemovingReducer,\n projectListDownloadReducer,\n projectListUnfollowingReducer,\n]);\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux';\nimport { FUTURE, Future } from 'src/modules/common/types/Future';\nimport {\n PROJECT_LIST_REMOVE_CANCEL,\n PROJECT_LIST_REMOVE_CONFIRM,\n PROJECT_LIST_REMOVE_SUBMIT,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListRemovingReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_REMOVE_CONFIRM.is(action)) {\n return {\n ...state,\n removing: {\n project: action.data,\n status: null,\n },\n };\n }\n if (PROJECT_LIST_REMOVE_CANCEL.is(action)) {\n return {\n ...state,\n removing: null,\n };\n }\n if (PROJECT_LIST_REMOVE_SUBMIT.isPending(action)) {\n return modifyStatus(state, FUTURE.pending());\n }\n if (PROJECT_LIST_REMOVE_SUBMIT.isSuccess(action)) {\n return modifyStatus(state, FUTURE.success(undefined));\n }\n if (PROJECT_LIST_REMOVE_SUBMIT.isFailure(action)) {\n return {\n ...state,\n removing: null,\n };\n }\n\n return state;\n}\n\nfunction modifyStatus(state: ProjectListState, status: Future): ProjectListState {\n return pipe(\n O.id(),\n O.prop('removing'),\n O.fromNullable,\n O.prop('status'),\n O.modify(() => status),\n )(state);\n}\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux-saga';\nimport { FUTURE, Future } from 'src/modules/common/types/Future';\nimport {\n PROJECT_LIST_UNFOLLOW_CANCEL,\n PROJECT_LIST_UNFOLLOW_CONFIRM,\n PROJECT_LIST_UNFOLLOW_SUBMIT,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\n\nexport function projectListUnfollowingReducer(state: ProjectListState, action: Action): ProjectListState {\n if (PROJECT_LIST_UNFOLLOW_CONFIRM.is(action)) {\n return {\n ...state,\n unfollowing: {\n project: action.data,\n user: action.meta,\n status: null,\n },\n };\n }\n\n if (PROJECT_LIST_UNFOLLOW_CANCEL.is(action)) {\n return {\n ...state,\n unfollowing: null,\n };\n }\n\n if (PROJECT_LIST_UNFOLLOW_SUBMIT.isPending(action)) {\n return modifyStatus(state, FUTURE.pending());\n }\n\n if (PROJECT_LIST_UNFOLLOW_SUBMIT.isSuccess(action)) {\n return {\n ...state,\n unfollowing: null,\n };\n }\n\n if (PROJECT_LIST_UNFOLLOW_SUBMIT.isFailure(action)) {\n return modifyStatus(state, FUTURE.success(undefined));\n }\n\n return state;\n}\n\nfunction modifyStatus(state: ProjectListState, status: Future): ProjectListState {\n return pipe(\n O.id(),\n O.prop('unfollowing'),\n O.fromNullable,\n O.prop('status'),\n O.modify(() => status),\n )(state);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { saveAs } from 'file-saver';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROJECT_LIST_DOWNLOAD } from 'src/modules/project-list/actions/ProjectListActions';\nimport { buildReportDocument } from 'src/modules/report/sagas/utils/buildReportDocument';\nimport { getReportFormData } from 'src/modules/report/selectors/getReportFormData';\nimport { getReportGenerated } from 'src/modules/report/selectors/getReportGenerated';\nimport { getReportDocumentFilename } from 'src/modules/report/utils/getReportDocumentFilename';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* projectListDownloadSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const project = action.meta;\n\n try {\n yield* put(PROJECT_LIST_DOWNLOAD.pending(project));\n yield* call(logDebug, 'Downloading project report...');\n\n const document = yield* select(getReportGenerated, project);\n const formData = yield* select(getReportFormData, project);\n const fileData = yield* call(buildReportDocument, document, formData, project);\n const fileName = yield* call(getReportDocumentFilename, document);\n\n yield* call(\n saveAs,\n fileData,\n `${fileName}.pdf`,\n );\n\n yield* call(logDebug, 'Downloading project report... done', project);\n yield* put(PROJECT_LIST_DOWNLOAD.success(undefined, project));\n } catch (error) {\n yield* call(sentryCatch, error);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, 'Downloading project report... error', error);\n yield* put(PROJECT_LIST_DOWNLOAD.failure(NativeError.wrap(error), project));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { saveAs } from 'file-saver';\nimport { SagaIterator } from 'redux-saga';\nimport { XlsxValue } from 'src/modules/common/types/XlsxValue';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROJECT_LIST_EXPORT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { EXPORT_CONTENT_LINE } from 'src/modules/project-list/codecs/export';\nimport { EXPORT_HEADER_COLUMNS } from 'src/modules/project-list/constants/export';\nimport { loadProjectListFull } from 'src/modules/project-list/sagas/utils/loadProjectListFull';\nimport { getProjectListExportEntry } from 'src/modules/project-list/selectors/getProjectListExportEntry';\nimport { getExportDocumentFilename } from 'src/modules/project-list/utils/getExportDocumentFilename';\nimport { doOnExportWorker } from 'src/sagas/utils/doOnExportWorker';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* projectListExportSaga(): SagaIterator {\n try {\n yield* put(PROJECT_LIST_EXPORT.pending());\n yield* call(logDebug, 'Exporting projects...');\n\n const projects = yield* call(loadProjectListFull);\n const exportData: XlsxValue[][] = [EXPORT_HEADER_COLUMNS.slice()];\n\n for (const project of projects) {\n const exportItem = yield* select(getProjectListExportEntry, project);\n const exportLine = yield* call(EXPORT_CONTENT_LINE.encode, exportItem);\n exportData.push(exportLine);\n }\n\n const fileData = yield* call(doOnExportWorker, exportData);\n const fileName = yield* call(getExportDocumentFilename, new Date());\n yield* call(saveAs, fileData, `${fileName}.xlsx`);\n\n yield* call(logDebug, 'Exporting projects... done', exportData);\n yield* put(PROJECT_LIST_EXPORT.success());\n } catch (error) {\n const wrapped = new RuntimeError('Could not export projects', {}, NativeError.wrap(error));\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, 'Exporting projects... error', error);\n yield* put(PROJECT_LIST_EXPORT.failure(NativeError.wrap(error)));\n }\n}\n","import { replace } from 'connected-react-router';\nimport { Eq, eqStrict, struct } from 'fp-ts/Eq';\nimport { SagaIterator } from 'redux-saga';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { PROJECT_LIST_FILTER } from 'src/modules/project-list/actions/ProjectListActions';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* projectListFilterSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const filter = action.data;\n const query = yield* select(getProjectListQuery);\n if (EQ_FILTER.equals(query.filter, filter)) {\n return;\n }\n\n yield* call(logDebug, 'Applying project filter...', { filter });\n const search = yield* call(buildProjectListQuery, { ...query, filter: filter, page: INTEGER_ONE });\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n}\n\nconst EQ_SET: Eq> = {\n equals: (a, b) => (\n a.size === b.size &&\n new Set([...a, ...b]).size === a.size\n ),\n};\nconst EQ_FILTER: Eq = struct({\n term: eqStrict,\n buildingType: EQ_SET,\n\n country: EQ_SET,\n city: EQ_SET,\n\n ratingActual: EQ_SET,\n ratingFuture: EQ_SET,\n\n ownership: EQ_SET,\n});\n","import { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* projectListImportCompleteSaga(): SagaIterator {\n const query = yield* select(getProjectListQuery);\n const search = yield* call(buildProjectListQuery, query);\n\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { PROJECT_LIST_IMPORT_SUBMIT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { importProjects } from 'src/modules/project-list/sagas/utils/importProjects';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* projectListImportSubmitSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const entries = action.data;\n\n try {\n yield* put(PROJECT_LIST_IMPORT_SUBMIT.pending());\n yield* call(logDebug, 'Importing projects...');\n\n const projects = yield* call(importProjects, entries);\n\n yield* call(logDebug, 'Importing projects... done', projects);\n yield* put(PROJECT_LIST_IMPORT_SUBMIT.success());\n } catch (error) {\n const wrapped = new RuntimeError('Could not import projects', { entries }, NativeError.wrap(error));\n yield* call(sentryCatch, wrapped);\n\n yield* call(logError, 'Importing projects... error', error);\n yield* put(PROJECT_LIST_IMPORT_SUBMIT.failure(NativeError.wrap(error)));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { PROJECT_LIST_IMPORT_UPLOAD } from 'src/modules/project-list/actions/ProjectListActions';\nimport { IMPORT_CONTENT } from 'src/modules/project-list/codecs/import';\nimport { mapImportProjectData } from 'src/modules/project-list/utils/mapImportLine';\nimport { doOnImportWorker } from 'src/sagas/utils/doOnImportWorker';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* projectListImportUploadSaga(\n action: GetRequestActionType,\n): SagaIterator {\n try {\n yield* put(PROJECT_LIST_IMPORT_UPLOAD.pending());\n yield* call(logDebug, 'Reading import file...');\n\n yield* delay(1_000);\n const lines = yield* call(doOnImportWorker, action.data);\n const decoder = yield* call(IMPORT_CONTENT, mapImportProjectData);\n const content = yield* call(decodeOrThrow, decoder, lines);\n\n yield* call(logDebug, 'Reading import file... done', content);\n yield* put(PROJECT_LIST_IMPORT_UPLOAD.success(content));\n } catch (error) {\n yield* call(logError, 'Reading import file... error', error);\n yield* put(PROJECT_LIST_IMPORT_UPLOAD.failure(NativeError.wrap(error)));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { removeProject } from 'src/modules/common/sagas/utils/removeProject';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROJECT_LIST_FETCH, PROJECT_LIST_REMOVE_SUBMIT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { loadProjectList } from 'src/modules/project-list/sagas/utils/loadProjectList';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { getProjectListRemoving } from 'src/modules/project-list/selectors/getProjectListRemoving';\nimport { ProjectListData } from 'src/modules/project-list/types/ProjectListData';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { applyProjectListQuery } from 'src/modules/project-list/utils/slice';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* projectListRemoveSaga(): SagaIterator {\n try {\n yield* put(PROJECT_LIST_REMOVE_SUBMIT.pending());\n yield* call(logDebug, 'Removing project...');\n\n const { project } = assertNotNull(\n yield* select(getProjectListRemoving),\n 'Could not find project to remove',\n );\n\n yield* call(removeProject, project);\n\n const query = yield* select(getProjectListQuery);\n const projects = yield* call(loadProjectList, query);\n const data: ProjectListData = { projects, query };\n\n const authUser = yield* select(getLoggedInUser);\n const { found } = yield* call(applyProjectListQuery, data, authUser);\n\n if (found.length === 0) {\n const search = yield* call(buildProjectListQuery, { ...query, page: INTEGER_ONE });\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n } else {\n yield* put(PROJECT_LIST_FETCH.trigger(data));\n }\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'projectList/notification/remove/success',\n messageValue: {\n projectName: project.data.title,\n },\n },\n );\n\n yield* call(logDebug, 'Removing project... done', project);\n yield* put(PROJECT_LIST_REMOVE_SUBMIT.success());\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, 'Removing project... error', error);\n yield* put(PROJECT_LIST_REMOVE_SUBMIT.failure(NativeError.wrap(error)));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport {\n PROJECT_LIST_DOWNLOAD,\n PROJECT_LIST_EXPORT,\n PROJECT_LIST_FILTER,\n PROJECT_LIST_IMPORT_CANCEL,\n PROJECT_LIST_IMPORT_COMPLETE,\n PROJECT_LIST_IMPORT_SUBMIT,\n PROJECT_LIST_IMPORT_UPLOAD,\n PROJECT_LIST_REMOVE_SUBMIT,\n PROJECT_LIST_RESET,\n PROJECT_LIST_ABORT,\n PROJECT_LIST_UNFOLLOW_SUBMIT,\n PROJECT_LIST_SHARE,\n} from 'src/modules/project-list/actions/ProjectListActions';\nimport { projectListDownloadSaga } from 'src/modules/project-list/sagas/projectListDownloadSaga';\nimport { projectListExportSaga } from 'src/modules/project-list/sagas/projectListExportSaga';\nimport { projectListFilterSaga } from 'src/modules/project-list/sagas/projectListFilterSaga';\nimport { projectListImportCompleteSaga } from 'src/modules/project-list/sagas/projectListImportCompleteSaga';\nimport { projectListImportSubmitSaga } from 'src/modules/project-list/sagas/projectListImportSubmitSaga';\nimport { projectListImportUploadSaga } from 'src/modules/project-list/sagas/projectListImportUploadSaga';\nimport { projectListRemoveSaga } from 'src/modules/project-list/sagas/projectListRemoveSaga';\nimport { projectListShareSaga } from 'src/modules/project-list/sagas/projectListShareSaga';\nimport { projectListUnfollowSaga } from 'src/modules/project-list/sagas/projectListUnfollowSaga';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { cancelSagaOn } from 'src/utils/cancelSagaOn';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* projectListSaga(): SagaIterator {\n yield* takeLatest(PROJECT_LIST_REMOVE_SUBMIT.isRequest, projectListRemoveSaga);\n\n yield* takeLatest(PROJECT_LIST_FILTER.is, cancelSagaOn(projectListFilterSaga, [\n ROUTE_CHANGE.isRequest,\n ]));\n\n yield* takeLatest(PROJECT_LIST_EXPORT.isRequest, cancelSagaOn(projectListExportSaga, [\n PROJECT_LIST_RESET.is,\n PROJECT_LIST_ABORT.is,\n ]));\n\n yield* takeLatest(PROJECT_LIST_IMPORT_COMPLETE.is, projectListImportCompleteSaga);\n yield* takeLatest(PROJECT_LIST_IMPORT_UPLOAD.isRequest, cancelSagaOn(projectListImportUploadSaga, [\n PROJECT_LIST_RESET.is,\n PROJECT_LIST_ABORT.is,\n PROJECT_LIST_IMPORT_CANCEL.is,\n ]));\n yield* takeLatest(PROJECT_LIST_IMPORT_SUBMIT.isRequest, cancelSagaOn(projectListImportSubmitSaga, [\n PROJECT_LIST_RESET.is,\n PROJECT_LIST_ABORT.is,\n PROJECT_LIST_IMPORT_CANCEL.is,\n ]));\n\n yield* takeLatest(PROJECT_LIST_DOWNLOAD.isRequest, cancelSagaOn(projectListDownloadSaga, [\n PROJECT_LIST_RESET.is,\n PROJECT_LIST_ABORT.is,\n PROJECT_LIST_REMOVE_SUBMIT.isRequest,\n PROJECT_LIST_UNFOLLOW_SUBMIT.isRequest,\n ]));\n\n yield* takeLatest(PROJECT_LIST_UNFOLLOW_SUBMIT.isRequest, projectListUnfollowSaga);\n\n yield* takeLatest(PROJECT_LIST_SHARE.is, cancelSagaOn(projectListShareSaga, [\n PROJECT_LIST_RESET.is,\n PROJECT_LIST_ABORT.is,\n ]));\n}\n","import { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { PROJECT_LIST_SHARE } from 'src/modules/project-list/actions/ProjectListActions';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { getProjectListSlice } from 'src/modules/project-list/selectors/getProjectListSlice';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport {\n SHARE_PROJECT_CLOSE,\n SHARE_PROJECT_OPEN,\n SHARE_PROJECT_REMOVE_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, put, select, take } from 'typed-redux-saga';\n\nexport function* projectListShareSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const project = action.data;\n const loggedInUser = yield* select(getLoggedInUser);\n\n yield* put(SHARE_PROJECT_OPEN.trigger(project));\n const trigger = yield* take([SHARE_PROJECT_REMOVE_SUBMIT.isSuccess, SHARE_PROJECT_CLOSE.is]);\n if (SHARE_PROJECT_CLOSE.is(trigger)) {\n // the Share Project modal was closed\n // there is no need to do anything\n return;\n }\n\n const hasAccess = (\n project.owner?.id === loggedInUser.id ||\n trigger.data.some((it) => it.id === loggedInUser.id)\n );\n if (hasAccess) {\n // we still have access to the project\n // there is no need to do anything\n return;\n }\n\n // the project is not accessible for us anymore\n // we need to close the modal immediately\n yield* put(SHARE_PROJECT_CLOSE.trigger());\n\n // and reload the project list\n const projects = yield* select(getProjectListSlice);\n const isOnlyProject = projects.found.every((it) => it.project.id === project.id);\n if (isOnlyProject) {\n const query = yield* select(getProjectListQuery);\n const search = yield* call(buildProjectListQuery, { ...query, page: INTEGER_ONE });\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n } else {\n const query = yield* select(getProjectListQuery);\n const search = yield* call(buildProjectListQuery, query);\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROJECT_LIST_FETCH, PROJECT_LIST_UNFOLLOW_SUBMIT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { loadProjectList } from 'src/modules/project-list/sagas/utils/loadProjectList';\nimport { unfollowProject } from 'src/modules/project-list/sagas/utils/unfollowProject';\nimport { getProjectListQuery } from 'src/modules/project-list/selectors/getProjectListQuery';\nimport { getProjectListUnfollowing } from 'src/modules/project-list/selectors/getProjectListUnfollowing';\nimport { ProjectListData } from 'src/modules/project-list/types/ProjectListData';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { applyProjectListQuery } from 'src/modules/project-list/utils/slice';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* projectListUnfollowSaga(): SagaIterator {\n try {\n yield* put(PROJECT_LIST_UNFOLLOW_SUBMIT.pending());\n yield* call(logDebug, 'Unfollowing project...');\n\n const { project, user } = assertNotNull(\n yield* select(getProjectListUnfollowing),\n 'Could not find project or/and user to unfollow',\n );\n\n yield* call(unfollowProject, project.id);\n\n const query = yield* select(getProjectListQuery);\n const projects = yield* call(loadProjectList, query);\n const data: ProjectListData = { projects, query };\n\n const authUser = yield* select(getLoggedInUser);\n const { found } = yield* call(applyProjectListQuery, data, authUser);\n\n if (found.length === 0) {\n const search = yield* call(buildProjectListQuery, { ...query, page: INTEGER_ONE });\n yield* call(navigate, replace({ pathname: '/projects', search: search.toString() }));\n } else {\n yield* put(PROJECT_LIST_FETCH.trigger(data));\n }\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'projectList/notification/unfollow/success',\n messageValue: {\n projectName: project.data.title,\n },\n },\n );\n\n yield* call(logDebug, 'Unfollowing project... done', project, user);\n yield* put(PROJECT_LIST_UNFOLLOW_SUBMIT.success());\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, 'Unfollowing project... error', error);\n yield* put(PROJECT_LIST_UNFOLLOW_SUBMIT.failure(NativeError.wrap(error)));\n }\n}\n","import { NativeError, RuntimeError, resolveInitialProjectData } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { createProject } from 'src/modules/common/sagas/utils/createProject';\nimport { updateProject } from 'src/modules/common/sagas/utils/updateProject';\nimport { Project } from 'src/modules/common/types/Project';\nimport { loadProjectListFull } from 'src/modules/project-list/sagas/utils/loadProjectListFull';\nimport { ProjectListImportEntry } from 'src/modules/project-list/types/ProjectListImport';\nimport { mergeImportData } from 'src/modules/project-list/utils/mergeImportData';\nimport { call } from 'typed-redux-saga';\n\nexport function* importProjects(entries: ReadonlyArray): SagaIterator {\n try {\n const result: Project[] = [];\n const projects = yield* call(loadProjectListFull);\n\n for (const entry of entries) {\n const project = projects.find((it) => it.id === entry.id);\n if (project) {\n const merged = yield* call(mergeImportData, project, entry.project);\n const resolved = yield* call(resolveInitialProjectData, merged);\n\n const updated = yield* call(updateProject, project.id, resolved);\n result.push(updated);\n } else {\n const resolved = yield* call(resolveInitialProjectData, entry.project);\n\n const created = yield* call(createProject, resolved);\n result.push(created);\n }\n }\n\n return result;\n } catch (error) {\n throw new RuntimeError('Could not import projects', { entries }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { loadProjectListFull } from 'src/modules/project-list/sagas/utils/loadProjectListFull';\nimport { getProjectListItem } from 'src/modules/project-list/selectors/getProjectListItem';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* loadProjectList(): SagaIterator {\n try {\n const projects = yield* call(loadProjectListFull);\n const listItems: ProjectListItem[] = [];\n\n for (const project of projects) {\n const listItem = yield* select(getProjectListItem, project);\n listItems.push(listItem);\n }\n\n return listItems;\n } catch (error) {\n throw new RuntimeError('Could not load project list', {}, NativeError.wrap(error));\n }\n}\n","import { INTEGER, NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { PROJECT } from 'src/modules/common/codecs/Project';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadProjectListChunk(take: number, skip: number): SagaIterator {\n try {\n const query = new URLSearchParams({\n take: take.toString(),\n skip: skip.toString(),\n\n sort: 'title',\n order: 'asc',\n });\n\n const { content } = yield* call(makeRestRequest, 'GET', `/projects?${query.toString()}`);\n const { found } = yield* call(decodeOrThrow, RESPONSE_DATA, content);\n return found;\n } catch (error) {\n throw new RuntimeError('Could not load project list chunk', { take, skip }, NativeError.wrap(error));\n }\n}\n\nconst RESPONSE_DATA = D.struct({\n total: INTEGER,\n found: D.array(PROJECT),\n});\n","import { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { loadProjectListChunk } from 'src/modules/project-list/sagas/utils/loadProjectListChunk';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadProjectListFull(): SagaIterator {\n let projects: Project[] = [];\n\n while (true) {\n // NOTE: 100 is max `take` on the backend\n const limit = 100;\n const chunk = yield* call(loadProjectListChunk, limit, projects.length);\n projects = projects.concat(chunk);\n\n if (chunk.length < limit) {\n return projects;\n }\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrGet } from 'src/io/utils/decodeOrGet';\nimport { PROJECT_LIST_VIEW_MODE } from 'src/modules/project-list/codecs/ProjectListViewMode';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\nimport { storageGet } from 'src/sagas/utils/storage';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadProjectListViewMode(): SagaIterator {\n try {\n const raw = yield* call(storageGet, 'project-list-view-mode');\n return yield* call(decodeOrGet, PROJECT_LIST_VIEW_MODE, raw, ProjectListViewMode.LIST);\n } catch (error) {\n throw new RuntimeError('Could not load project list view mode', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { PROJECT_LIST_VIEW_MODE } from 'src/modules/project-list/codecs/ProjectListViewMode';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\nimport { storageSet } from 'src/sagas/utils/storage';\nimport { call } from 'typed-redux-saga';\n\nexport function* saveProjectListViewMode(viewMode: ProjectListViewMode): SagaIterator {\n try {\n const raw = yield* call(PROJECT_LIST_VIEW_MODE.encode, viewMode);\n yield* call(storageSet, 'project-list-view-mode', raw);\n } catch (error) {\n throw new RuntimeError('Could not save project list view mode', {}, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { call } from 'typed-redux-saga';\n\nexport function* unfollowProject(projectId: Uuid): SagaIterator {\n try {\n yield* call(makeRestRequest, 'DELETE', `/projects/${encodeURIComponent(projectId)}/leave`);\n } catch (error) {\n throw new RuntimeError('Could not unfollow project', { projectId }, NativeError.wrap(error));\n }\n}\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getProjectListData = createSelector([\n getProjectListState,\n], (state) => assertNotNull(\n state.data,\n 'Project list should be fetched first',\n { state },\n));\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\n\nexport const getProjectListDownloading = createSelector([\n getProjectListState,\n], (state) => state.downloading);\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\n\nexport const getProjectListExport = createSelector([\n getProjectListState,\n], (state) => state.export);\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ProjectListExportEntry } from 'src/modules/project-list/types/ProjectListExport';\n\nexport const getProjectListExportEntry = createSelector([\n getProjectLazy,\n getHvacResults,\n], (project, results): ProjectListExportEntry => ({\n project,\n results,\n}));\n","import {\n BuildingType,\n CountryCode,\n EnergyEfficiencyClass,\n getEnergyEfficiencyLabel,\n COUNTRY_CODES,\n} from '@belimo-retrofit-portal/logic';\nimport { eqStrict } from 'fp-ts/Eq';\nimport { pipe } from 'fp-ts/function';\nimport * as N from 'fp-ts/number';\nimport * as O from 'fp-ts/Ord';\nimport * as A from 'fp-ts/ReadonlyArray';\nimport * as S from 'fp-ts/string';\nimport { createSelector } from 'reselect';\nimport { FACTOR_WEIGHTS_LABELS } from 'src/modules/common/constants/factorWeightedLabel';\nimport { BUILDING_TYPE_OPTIONS } from 'src/modules/common/constants/options';\nimport { ordPrecedence } from 'src/modules/common/utils/ord';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getProjectListProjects } from 'src/modules/project-list/selectors/getProjectListProjects';\nimport { ProjectListFilterValues } from 'src/modules/project-list/types/ProjectListFilterValues';\nimport { isDefined, isNotNull } from 'src/utils/guard';\n\nexport const getProjectListFilterValues = createSelector([\n getProjectListProjects,\n getLoggedInUser,\n], (projects, authUser): ProjectListFilterValues => ({\n buildingType: pipe(\n projects,\n (data) => data.map((it) => it.project.data.building.type),\n A.uniq(eqStrict),\n A.sort(BUILDING_TYPE_ORD),\n ),\n\n country: pipe(\n projects,\n (data) => data.map((it) => it.project.data.building.address.country),\n A.uniq(eqStrict),\n A.sort(COUNTRY_CODE_ORD),\n ),\n city: pipe(\n projects,\n (data) => data.map((it) => it.project.data.building.address.city),\n (data) => data.filter((it) => it !== ''),\n A.uniq(S.Eq),\n A.sort(S.Ord),\n ),\n\n ratingActual: pipe(\n projects,\n (data) => data.map((it) => it.rating.actual),\n (data) => data.filter(isNotNull),\n (data) => data.map(getEnergyEfficiencyLabel),\n A.uniq(eqStrict),\n A.sort(EFFICIENCY_LABEL_ORD),\n ),\n ratingFuture: pipe(\n projects,\n (data) => data.map((it) => it.rating.future),\n (data) => data.filter(isNotNull),\n (data) => data.map(getEnergyEfficiencyLabel),\n A.uniq(eqStrict),\n A.sort(EFFICIENCY_LABEL_ORD),\n ),\n\n ownership: pipe(\n projects,\n A.map((it) => it.project.owner?.email),\n A.filter(isDefined),\n A.uniq(eqStrict),\n A.sort(pipe(S.Ord, ordPrecedence(authUser.email))),\n ),\n}));\n\nconst BUILDING_TYPE_ORD = pipe(\n N.Ord,\n O.contramap((value: BuildingType) => BUILDING_TYPE_OPTIONS.indexOf(value)),\n);\n\nconst COUNTRY_CODE_ORD = pipe(\n N.Ord,\n O.contramap((value: CountryCode) => COUNTRY_CODES.indexOf(value)),\n);\n\nconst EFFICIENCY_LABEL_ORD = pipe(\n N.Ord,\n O.contramap((value: EnergyEfficiencyClass) => FACTOR_WEIGHTS_LABELS[value].toNumber()),\n O.reverse,\n);\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\n\nexport const getProjectListImport = createSelector([\n getProjectListState,\n], (state) => state.import);\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { getHvacResultsOverallRating } from 'src/modules/hvac/selectors/getHvacResultsOverallRating';\nimport { getProjectListItemTextBlocks } from 'src/modules/project-list/selectors/getProjectListItemTextBlocks';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\n\nexport const getProjectListItem = createSelector([\n getProjectLazy,\n getHvacResultsOverallRating,\n getProjectListItemTextBlocks,\n], (project, rating, textBlocks): ProjectListItem => ({\n project,\n rating,\n textBlocks,\n}));\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { getTranslator } from 'src/modules/config/selectors/getTranslator';\nimport { isNotNull } from 'src/utils/guard';\n\nexport const getProjectListItemTextBlocks = createSelector([\n getProjectLazy,\n getTranslator,\n], (project, translator): ReadonlyArray => [\n project.data.title,\n project.data.goals,\n\n ...project.owner === null ? [] : [\n project.owner.email,\n project.owner.firstName,\n project.owner.lastName,\n ],\n\n project.data.participants.consutlingEngineer,\n project.data.participants.propertyManager,\n project.data.participants.productManager,\n\n translator(`common/buildingType/${project.data.building.type}`),\n translator(`common/country/name/${project.data.building.address.country}`),\n project.data.building.address.city,\n project.data.building.address.zip,\n project.data.building.address.street,\n\n project.data.hvac.comment,\n\n ...SCHEMA_AREAS\n .map((area) => project.data.schema[area])\n .filter(isNotNull)\n .map((schema) => schema.comment),\n\n project.data.evaluation.proposalDescription,\n]);\n\nconst SCHEMA_AREAS = [\n SchemaArea.HEATING,\n SchemaArea.COOLING,\n SchemaArea.VENTILATION,\n];\n","import { createSelector } from 'reselect';\nimport { getProjectListData } from 'src/modules/project-list/selectors/getProjectListData';\n\nexport const getProjectListProjects = createSelector([\n getProjectListData,\n], (data) => data.projects);\n","import { createSelector } from 'reselect';\nimport { getProjectListData } from 'src/modules/project-list/selectors/getProjectListData';\n\nexport const getProjectListQuery = createSelector([\n getProjectListData,\n], (data) => data.query);\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\n\nexport const getProjectListRemoving = createSelector([\n getProjectListState,\n], (state) => state.removing);\n","import { createSelector } from 'reselect';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getProjectListData } from 'src/modules/project-list/selectors/getProjectListData';\nimport { applyProjectListQuery } from 'src/modules/project-list/utils/slice';\n\nexport const getProjectListSlice = createSelector([\n getProjectListData,\n getLoggedInUser,\n], applyProjectListQuery);\n","import { ProjectListState } from 'src/modules/project-list/types/ProjectListState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getProjectListState(state: RootState): ProjectListState {\n return state.projectList;\n}\n","import { createSelector } from 'reselect';\nimport { getProjectListState } from 'src/modules/project-list/selectors/getProjectListState';\n\nexport const getProjectListUnfollowing = createSelector([\n getProjectListState,\n], (state) => state.unfollowing);\n","export enum ProjectListViewMode {\n LIST = 'list',\n GRID = 'grid',\n}\n","import { EnergyEfficiencyClass } from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { constFalse, constTrue } from 'fp-ts/function';\nimport { and, or, Predicate } from 'fp-ts/Predicate';\nimport { FACTOR_WEIGHTS_LABELS } from 'src/modules/common/constants/factorWeightedLabel';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\n\nexport function getProjectFilter(\n filter: ProjectListFilter,\n): Predicate {\n return buildAndCondition([\n getPredicateTerm(filter),\n getPredicateBuildingType(filter),\n getPredicateCountry(filter),\n getPredicateCity(filter),\n getPredicateRatingActual(filter),\n getPredicateRatingFuture(filter),\n getPredicateOwnership(filter),\n ]);\n}\n\nfunction getPredicateTerm(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = getPredicateStringMatch(filter.term);\n return (item) => predicate(item.textBlocks);\n}\n\nfunction getPredicateBuildingType(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = getPredicateAnyOf(filter.buildingType);\n return (item) => predicate(item.project.data.building.type);\n}\n\nfunction getPredicateCountry(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = getPredicateAnyOf(filter.country);\n return (item) => predicate(item.project.data.building.address.country);\n}\n\nfunction getPredicateCity(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = getPredicateAnyOf(filter.city);\n return (item) => predicate(item.project.data.building.address.city);\n}\n\nfunction getPredicateRatingActual(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = buildOrCondition(Array.from(filter.ratingActual).map(getPredicateEfficiencyClass));\n return (item) => predicate(item.rating.actual);\n}\n\nfunction getPredicateRatingFuture(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = buildOrCondition(Array.from(filter.ratingFuture).map(getPredicateEfficiencyClass));\n return (item) => predicate(item.rating.future);\n}\n\nfunction getPredicateOwnership(\n filter: ProjectListFilter,\n): Predicate {\n const predicate = getPredicateAnyOf(filter.ownership);\n return (item) => predicate(item.project.owner?.email ?? '');\n}\n\nfunction getPredicateEfficiencyClass(\n rating: EnergyEfficiencyClass,\n): Predicate {\n const { minValue, maxValue } = ENERGY_EFFICIENCY_RANGE[rating];\n return (value) => (\n value !== null &&\n value.gte(minValue) &&\n value.lt(maxValue)\n );\n}\n\nfunction getPredicateStringMatch(\n term: string,\n): Predicate> {\n const norm = term.trim().toLowerCase();\n if (norm.length === 0) {\n return constTrue;\n }\n\n return (value) => value.some((chunk) => chunk.toLowerCase().includes(norm));\n}\n\nfunction getPredicateAnyOf(\n options: ReadonlySet,\n): Predicate {\n return (value) => (options.size === 0 || options.has(value));\n}\n\nfunction buildOrCondition(\n predicates: ReadonlyArray>,\n): Predicate {\n if (predicates.length === 0) {\n return constTrue;\n }\n\n const initial: Predicate = constFalse;\n return predicates.reduce((result, predicate) => or(predicate)(result), initial);\n}\n\nfunction buildAndCondition(\n predicates: ReadonlyArray>,\n): Predicate {\n const initial: Predicate = constTrue;\n return predicates.reduce((result, predicate) => and(predicate)(result), initial);\n}\n\nconst ENERGY_EFFICIENCY_RANGE = {\n 'A+': {\n minValue: FACTOR_WEIGHTS_LABELS['A+'],\n maxValue: new Decimal(1_000_000),\n },\n A: {\n minValue: FACTOR_WEIGHTS_LABELS.A,\n maxValue: FACTOR_WEIGHTS_LABELS['A+'],\n },\n B: {\n minValue: FACTOR_WEIGHTS_LABELS.B,\n maxValue: FACTOR_WEIGHTS_LABELS.A,\n },\n C: {\n minValue: FACTOR_WEIGHTS_LABELS.C,\n maxValue: FACTOR_WEIGHTS_LABELS.B,\n },\n D: {\n minValue: FACTOR_WEIGHTS_LABELS.D,\n maxValue: FACTOR_WEIGHTS_LABELS.C,\n },\n};\n","import * as DE from 'io-ts/DecodeError';\nimport * as D from 'io-ts/Decoder';\nimport { ProjectListImportError } from 'src/modules/project-list/types/ProjectListImport';\n\nexport function formatImportError(decodeError: D.DecodeError): ProjectListImportError[] {\n return getColumnErrors(decodeError).map(([column, errors]): ProjectListImportError => {\n const value = getActualValue(errors);\n const reason = value === '' || value == null ? 'required' : 'invalid';\n return { column, reason, value };\n });\n}\n\nfunction getActualValue(decodeError: D.DecodeError): string {\n // eslint-disable-next-line no-underscore-dangle\n if (decodeError._tag === 'Concat') {\n return (\n getActualValue(decodeError.left) ??\n getActualValue(decodeError.right)\n );\n }\n\n return DE.fold({\n Index: (index: number, kind: DE.Kind, errors: D.DecodeError) => getActualValue(errors),\n Key: (key: string, kind: DE.Kind, errors: D.DecodeError) => getActualValue(errors),\n Lazy: (id: string, errors: D.DecodeError) => getActualValue(errors),\n Leaf: (input: unknown, error: string) => String(input),\n Member: (index: number, errors: D.DecodeError) => getActualValue(errors),\n Wrap: (error: string, errors: D.DecodeError) => getActualValue(errors),\n })(decodeError.value);\n}\n\nfunction getColumnErrors(decodeError: D.DecodeError): [string, D.DecodeError][] {\n // eslint-disable-next-line no-underscore-dangle\n if (decodeError._tag === 'Concat') {\n return [\n ...getColumnErrors(decodeError.left),\n ...getColumnErrors(decodeError.right),\n ];\n }\n\n return DE.fold({\n Index: (index: number, kind: DE.Kind, errors: D.DecodeError) => getColumnErrors(errors),\n Key: (key: string, kind: DE.Kind, errors: D.DecodeError) => [[key, errors]],\n Lazy: (id: string, errors: D.DecodeError) => getColumnErrors(errors),\n Leaf: (input: unknown, error: string) => [],\n Member: (index: number, errors: D.DecodeError) => getColumnErrors(errors),\n Wrap: (error: string, errors: D.DecodeError) => getColumnErrors(errors),\n })(decodeError.value);\n}\n","export function getExportDocumentFilename(now: Date): string {\n return [\n 'RetroFIT+ portal projects',\n ' ',\n now.getFullYear(),\n String(now.getMonth() + 1).padStart(2, '0'),\n String(now.getDate()).padStart(2, '0'),\n ' ',\n String(now.getHours()).padStart(2, '0'),\n String(now.getMinutes()).padStart(2, '0'),\n ].join('');\n}\n","/* eslint-disable @typescript-eslint/dot-notation */\nimport { EnergySource, HvacArea } from '@belimo-retrofit-portal/logic';\nimport { DECIMAL_ZERO } from 'src/modules/common/constants/decimal';\nimport { ProjectListImportEntry, ProjectListImportRawLine } from 'src/modules/project-list/types/ProjectListImport';\nimport { PROJECT_VERSION } from 'src/modules/project-new/constants/projectData';\n\nexport function mapImportProjectData(line: ProjectListImportRawLine): ProjectListImportEntry {\n return {\n id: line['project id'],\n project: {\n version: PROJECT_VERSION,\n cover: null,\n title: line['project title'],\n goals: line['project goal'],\n currency: line['currency'],\n building: {\n type: line['building type'],\n size: line['building size'],\n unit: line['building size unit'],\n address: {\n country: line['building country'],\n city: line['building city'],\n street: line['building street address'],\n zip: line['building zip code'],\n },\n },\n participants: {\n author: line['participants author'],\n productManager: line['participants product engineer'],\n propertyManager: line['participants property manager'],\n consutlingEngineer: line['participants consulting engineer'],\n },\n hvac: {\n comment: line['project data and configuration'].hvac.comment,\n prices: {\n [EnergySource.ELECTRICITY]: line['electricity price'],\n [EnergySource.GAS]: line['gas price'],\n\n [EnergySource.HEATING_DISTRICT]: line['district heating price'],\n [EnergySource.HEATING_OIL]: line['heating oil price'],\n [EnergySource.HEATING_OTHER]: line['heating other price'],\n\n [EnergySource.COOLING_DISTRICT]: line['district cooling price'],\n [EnergySource.COOLING_OTHER]: line['cooling other price'],\n },\n areas: {\n [HvacArea.HEATING]: {\n enabled: line['project data and configuration'].hvac.areas[HvacArea.HEATING].enabled,\n sections: line['project data and configuration'].hvac.areas[HvacArea.HEATING].sections,\n thermal: {\n energySource: line['heating energy source'],\n carbonIntensity: line['heating energy carbon intensity'],\n annualEnergyUse: line['heating energy annual consumption'],\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n carbonIntensity: null,\n annualEnergyUse: line['heating electrical aux annual consumption'],\n },\n },\n [HvacArea.COOLING]: {\n enabled: line['project data and configuration'].hvac.areas[HvacArea.COOLING].enabled,\n sections: line['project data and configuration'].hvac.areas[HvacArea.COOLING].sections,\n thermal: {\n energySource: line['cooling energy source'],\n carbonIntensity: line['cooling energy carbon intensity'],\n annualEnergyUse: line['cooling energy annual consumption'],\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n carbonIntensity: null,\n annualEnergyUse: line['cooling electrical aux annual consumption'],\n },\n },\n [HvacArea.VENTILATION]: {\n enabled: line['project data and configuration'].hvac.areas[HvacArea.VENTILATION].enabled,\n sections: line['project data and configuration'].hvac.areas[HvacArea.VENTILATION].sections,\n thermal: {\n energySource: EnergySource.ELECTRICITY,\n carbonIntensity: null,\n annualEnergyUse: DECIMAL_ZERO,\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n carbonIntensity: null,\n annualEnergyUse: line['ventilation electrical aux annual consumption'],\n },\n },\n },\n },\n schema: line['project data and configuration'].schema,\n report: line['project data and configuration'].report,\n evaluation: line['project data and configuration'].evaluation,\n },\n };\n}\n","import { ProjectData } from '@belimo-retrofit-portal/logic';\nimport { Project } from 'src/modules/common/types/Project';\nimport { PROJECT_VERSION } from 'src/modules/project-new/constants/projectData';\n\nexport function mergeImportData(\n project: Project,\n importData: ProjectData,\n): ProjectData {\n return {\n version: PROJECT_VERSION,\n\n title: importData.title,\n goals: importData.goals,\n building: importData.building,\n currency: importData.currency,\n participants: importData.participants,\n hvac: importData.hvac,\n report: importData.report,\n schema: importData.schema,\n evaluation: importData.evaluation,\n\n // these data should stay as it is\n cover: project.data.cover,\n };\n}\n","import { BUILDING_TYPE, COUNTRY_CODE, Integer } from '@belimo-retrofit-portal/logic';\nimport { pipe } from 'fp-ts/function';\nimport * as D from 'io-ts/Decoder';\nimport { INTEGER_FROM_STRING } from 'src/io/codecs/IntegerFromString';\nimport { decodeOrGet } from 'src/io/utils/decodeOrGet';\nimport { ENERGY_EFFICIENCY_CLASS } from 'src/modules/common/codecs/EnergyEfficiencyClass';\nimport { NON_EMPTY_STRING } from 'src/modules/common/codecs/NonEmptyString';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { PROJECT_LIST_VIEW_MODE } from 'src/modules/project-list/codecs/ProjectListViewMode';\nimport { PROJECT_LIST_DEFAULT_SORT } from 'src/modules/project-list/constants/sort';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { ProjectListSort } from 'src/modules/project-list/types/ProjectListSort';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\nimport { isNotNull } from 'src/utils/guard';\n\nexport function parseProjectListQuery(query: URLSearchParams, defaultViewMode: ProjectListViewMode): ProjectListQuery {\n const view = decodeOrGet(PROJECT_LIST_VIEW_MODE, query.get('view'), defaultViewMode);\n const page = decodeOrGet(PAGE_NUMBER, query.get('page'), INTEGER_ONE);\n const sort = decodeOrGet(SORT_ORDER, query.get('sort'), PROJECT_LIST_DEFAULT_SORT[view]);\n const filter = parseProjectListFilter(query);\n\n return { view, page, sort, filter };\n}\n\nexport function buildProjectListQuery(query: ProjectListQuery): URLSearchParams {\n const params = buildProjectListFilter(query.filter);\n if (query.page > 1) {\n params.set('page', query.page.toString());\n }\n\n const sort = (query.sort.direction === 'asc' ? '' : '-') + query.sort.field;\n params.set('sort', sort);\n\n params.set('view', query.view);\n\n return params;\n}\n\nfunction parseProjectListFilter(query: URLSearchParams): ProjectListFilter {\n const buildingType = query.getAll('buildingType')\n .map((it) => decodeOrGet(BUILDING_TYPE, it, null))\n .filter(isNotNull);\n\n const country = query.getAll('country')\n .map((it) => decodeOrGet(COUNTRY_CODE, it, null))\n .filter(isNotNull);\n const city = query.getAll('city')\n .map((it) => decodeOrGet(NON_EMPTY_STRING, it, null))\n .filter(isNotNull);\n\n const ratingActual = query.getAll('ratingActual')\n .map((it) => decodeOrGet(ENERGY_EFFICIENCY_CLASS, it, null))\n .filter(isNotNull);\n const ratingFuture = query.getAll('ratingFuture')\n .map((it) => decodeOrGet(ENERGY_EFFICIENCY_CLASS, it, null))\n .filter(isNotNull);\n\n const ownership = query.getAll('ownership')\n .map((it) => decodeOrGet(NON_EMPTY_STRING, it, null))\n .filter(isNotNull);\n\n return {\n term: decodeOrGet(NON_EMPTY_STRING, query.get('term'), ''),\n\n buildingType: new Set(buildingType),\n\n country: new Set(country),\n city: new Set(city),\n\n ratingActual: new Set(ratingActual),\n ratingFuture: new Set(ratingFuture),\n\n ownership: new Set(ownership),\n };\n}\n\nfunction buildProjectListFilter(filter: ProjectListFilter): URLSearchParams {\n const params = new URLSearchParams();\n\n if (filter.term.length > 0) {\n params.set('term', filter.term);\n }\n if (filter.buildingType.size > 0) {\n filter.buildingType.forEach((it) => params.append('buildingType', it));\n }\n if (filter.country.size > 0) {\n filter.country.forEach((it) => params.append('country', it));\n }\n if (filter.city.size > 0) {\n filter.city.forEach((it) => params.append('city', it));\n }\n if (filter.ratingActual.size > 0) {\n filter.ratingActual.forEach((it) => params.append('ratingActual', it));\n }\n if (filter.ratingFuture.size > 0) {\n filter.ratingFuture.forEach((it) => params.append('ratingFuture', it));\n }\n if (filter.ownership.size > 0) {\n filter.ownership.forEach((it) => params.append('ownership', it));\n }\n\n return params;\n}\n\nconst SORT_MAP: ReadonlyMap = new Map([\n ['title', { field: 'title', direction: 'asc' }],\n ['-title', { field: 'title', direction: 'desc' }],\n\n ['rating', { field: 'rating', direction: 'asc' }],\n ['-rating', { field: 'rating', direction: 'desc' }],\n\n ['updated', { field: 'updated', direction: 'asc' }],\n ['-updated', { field: 'updated', direction: 'desc' }],\n\n ['ownership', { field: 'ownership', direction: 'asc' }],\n ['-ownership', { field: 'ownership', direction: 'desc' }],\n]);\n\nconst PAGE_NUMBER: D.Decoder = pipe(\n INTEGER_FROM_STRING,\n D.parse((input) => (input >= 1 ? D.success(input) : D.failure(input, 'PageNumber'))),\n);\n\nconst SORT_ORDER: D.Decoder = pipe(\n D.string,\n D.parse((input) => {\n const sort = SORT_MAP.get(input);\n return sort ? D.success(sort) : D.failure(input, 'SortOrder');\n }),\n);\n","import { Integer } from '@belimo-retrofit-portal/logic';\nimport { pipe } from 'fp-ts/function';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { PROJECT_LIST_PAGE_SIZE } from 'src/modules/project-list/constants/pageSize';\nimport { ProjectListData } from 'src/modules/project-list/types/ProjectListData';\nimport { ProjectListSlice } from 'src/modules/project-list/types/ProjectListSlice';\nimport { getProjectFilter } from 'src/modules/project-list/utils/filter';\nimport { getProjectOrd } from 'src/modules/project-list/utils/sort';\n\nexport function applyProjectListQuery(\n { projects, query }: ProjectListData,\n authUser: AuthUser,\n): ProjectListSlice {\n const filtered = projects.filter(getProjectFilter(query.filter));\n const pageSize = PROJECT_LIST_PAGE_SIZE[query.view];\n\n return {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n total: filtered.length as Integer,\n found: pipe(\n filtered,\n (data) => data.sort(getProjectOrd(query.sort, authUser).compare),\n (data) => data.slice((query.page - 1) * pageSize, query.page * pageSize),\n ),\n };\n}\n","import { pipe } from 'fp-ts/function';\nimport { concatAll } from 'fp-ts/Monoid';\nimport * as N from 'fp-ts/number';\nimport * as O from 'fp-ts/Ord';\nimport * as S from 'fp-ts/string';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { ordNullable, ordPrecedence } from 'src/modules/common/utils/ord';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\nimport { ProjectListSort } from 'src/modules/project-list/types/ProjectListSort';\n\nexport function getProjectOrd(sort: ProjectListSort, authUser: AuthUser): O.Ord {\n const ord = concatAll(O.getMonoid())([\n SORT_MAP(authUser)[sort.field],\n SORT_BY_ID,\n ]);\n\n return sort.direction === 'asc' ? ord : O.reverse(ord);\n}\n\nconst SORT_BY_ID = pipe(\n S.Ord,\n O.contramap((item: ProjectListItem) => item.project.id),\n);\n\nconst SORT_MAP = (authUser: AuthUser): Readonly>> => ({\n title: pipe(\n S.Ord,\n O.contramap((item) => item.project.data.title),\n ),\n rating: pipe(\n N.Ord,\n O.contramap((item) => item.rating.future?.toNumber() ?? -1),\n ),\n updated: pipe(\n N.Ord,\n O.contramap((item) => item.project.updatedAt.getTime()),\n ),\n ownership: pipe(\n S.Ord,\n ordPrecedence(authUser.email),\n ordNullable,\n O.contramap((item) => item.project.owner?.email ?? null),\n ),\n});\n","import './ProjectListEmpty.scss';\nimport { Add, Upload } from '@carbon/icons-react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { UploadIcon } from 'src/modules/common/icons/UploadIcon';\n\ntype Props = {\n readonly onCreate: () => void;\n readonly onImport: () => void;\n};\n\nexport const ProjectListEmpty = ({ onCreate, onImport }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n
\n
\n
\n \n\n

\n \n

\n
\n\n
\n \n \n\n \n \n\n \n \n\n
\n \n
\n \n
\n
\n
\n );\n};\n","import './ProjectListFilterDropdown.scss';\nimport { BuildingType, CountryCode } from '@belimo-retrofit-portal/logic';\nimport { FormController } from '@form-ts/core';\nimport { identity, pipe } from 'fp-ts/function';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getProjectListFilterValues } from 'src/modules/project-list/selectors/getProjectListFilterValues';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { ProjectListFilterGroup } from 'src/modules/project-list/views/ProjectListFilterGroup';\n\ntype Props = {\n readonly form: FormController;\n readonly onApply: () => void;\n readonly onClose: () => void;\n};\n\nexport const ProjectListFilterDropdown = ({ form, onApply, onClose }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const authUser = useSelector(getLoggedInUser);\n const values = useSelector(getProjectListFilterValues);\n\n const handleClear = useCallback(() => {\n const formValues = form.values.get(form.currentState);\n form.change(pipe(\n form.currentState,\n form.values.set({\n term: formValues.term,\n\n buildingType: new Set(),\n\n country: new Set(),\n city: new Set(),\n\n ratingActual: new Set(),\n ratingFuture: new Set(),\n\n ownership: new Set(),\n }),\n ));\n\n onApply();\n }, [form, onApply]);\n\n // the first group is always here since country and building type are required\n const hasEfficiencyFilter = (\n values.ratingActual.length > 0 ||\n values.ratingFuture.length > 0\n );\n\n return (\n
\n
\n
\n

\n \n

\n\n {values.buildingType.length > 0 && (\n <>\n
\n \n\n \n
\n\n \n \n )}\n\n {values.city.length > 0 && (\n <>\n
\n \n\n \n
\n\n \n \n )}\n\n {values.country.length > 0 && (\n <>\n
\n \n\n \n
\n\n \n \n )}\n\n {values.ownership.length > 0 && (\n <>\n
\n \n\n \n
\n\n (\n authUser.email === option ? intl.formatMessage({ id: 'projectList/item/owned' }) : option\n )}\n onApply={onApply}\n />\n \n )}\n
\n\n {hasEfficiencyFilter && (\n
\n

\n \n

\n\n {values.ratingActual.length > 0 && (\n <>\n
\n \n\n \n
\n\n \n \n )}\n\n {values.ratingFuture.length > 0 && (\n <>\n
\n \n\n \n
\n\n \n \n )}\n
\n )}\n
\n\n
\n \n \n \n\n \n \n \n
\n
\n );\n};\n\nfunction renderBuildingTypeOption(option: BuildingType): React.ReactElement {\n return ;\n}\n\nfunction renderCountryCodeOption(option: CountryCode): React.ReactElement {\n return ;\n}\n","import './ProjectListFilterGroup.scss';\nimport { Checkbox, FormGroup, FormLabel } from '@carbon/react';\nimport { FieldPath } from '@form-ts/core';\nimport { useFormWatch } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\n\ntype Props = {\n readonly field: FieldPath>;\n readonly options: ReadonlyArray;\n readonly renderOption: (option: T) => React.ReactElement | string;\n readonly onApply: () => void;\n};\n\n// eslint-disable-next-line react/function-component-definition\nexport function ProjectListFilterGroup({\n field,\n options,\n renderOption,\n onApply,\n}: Props): React.ReactElement {\n const value = useFormWatch(field.form, field.value.get);\n\n const [isGroupOpened, setGroupOpened] = useState(false);\n\n const groupListRef = useRef(null);\n\n const someSelected = useMemo(() => options.some((it) => value.has(it)), [options, value]);\n\n const formGroupTopOffset = 8;\n const formGroupGap = 4;\n const formGroupRowHeight = 23;\n const formGroupMinRows = Math.min(options.length, 3);\n const formGroupLength = isGroupOpened\n ? options.length\n : formGroupMinRows;\n const formGroupHeight = useMemo(\n () => (formGroupRowHeight * formGroupLength) + (formGroupGap * (formGroupLength - 1)) + formGroupTopOffset,\n [formGroupRowHeight, formGroupLength],\n );\n\n const resetAll = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n\n const newValue = new Set();\n\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(newValue),\n ));\n\n onApply();\n }, [field, onApply]);\n\n const toggleOption = useCallback((option: T) => {\n const oldValue = field.value.get(field.form.currentState);\n const newValue = toggleSetValue(oldValue, option);\n\n field.form.change(pipe(\n field.form.currentState,\n field.value.set(newValue),\n ));\n\n onApply();\n }, [field, onApply]);\n\n return (\n <>\n \n
\n {options.map((option) => (\n \n toggleOption(option)}\n />\n \n ))}\n
\n \n\n
\n {options.length > 3 ? (\n setGroupOpened((prev) => !prev)}>\n {isGroupOpened ? (\n \n ) : (\n \n )}\n \n ) : null}\n\n {someSelected ? (\n \n \n \n ) : null}\n
\n \n );\n}\n\nfunction toggleSetValue(value: ReadonlySet, option: T): Set {\n const newValue = new Set(value);\n if (newValue.has(option)) {\n newValue.delete(option);\n } else {\n newValue.add(option);\n }\n\n return newValue;\n}\n","import './ProjectListHeader.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { ProjectListSortLink } from 'src/modules/project-list/views/ProjectListSortLink';\n\ntype Props = {\n readonly query: ProjectListQuery;\n};\n\nexport const ProjectListHeader = ({ query }: Props): React.ReactElement => (\n
\n
\n\n
\n \n \n \n
\n\n
\n \n \n \n
\n\n
\n \n \n \n
\n\n
\n \n \n \n
\n\n
\n
\n);\n","import './ProjectListImportDataTable.scss';\nimport { Information } from '@carbon/icons-react';\nimport {\n DataTable,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n TableSelectRow,\n Tabs,\n Tag,\n Tooltip,\n} from '@carbon/react';\nimport { fold, isLeft, isRight } from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomTab, CustomTabList } from 'src/modules/common/components/CustomTabList';\nimport { FormattedMathMessage } from 'src/modules/common/components/FormattedMathMessage';\nimport { ProjectListImportData, ProjectListImportEntry } from 'src/modules/project-list/types/ProjectListImport';\n\ntype Props = {\n readonly content: ProjectListImportData;\n readonly selected: ReadonlyArray;\n readonly onChange: (selected: ReadonlyArray) => void;\n};\n\nexport const ProjectListImportDataTable = ({ content, selected, onChange }: Props): React.ReactElement => {\n const allTab = 0;\n\n const intl = useIntl();\n\n const [activeTab, setActiveTab] = useState(allTab);\n const handleTabChange = useCallback((state: {\n selectedIndex: number;\n }) => setActiveTab(state.selectedIndex), []);\n\n const errorCount = content.reduce((sum, it) => (isRight(it.importData) ? sum : sum + 1), 0);\n const visibleProjects = activeTab === allTab ? content : content.filter((it) => isLeft(it.importData));\n const composedContent = visibleProjects.map((row) => ({\n id: String(row.rowNumber),\n importData: row.importData,\n }));\n\n const handleToggle = useCallback((entry: ProjectListImportEntry) => {\n if (selected.includes(entry)) {\n onChange(selected.filter((it) => it !== entry));\n } else {\n onChange(selected.concat(entry));\n }\n }, [selected, onChange]);\n\n return (\n \n \n \n
\n \n\n {content.length}\n
\n
\n\n \n
\n \n\n {errorCount}\n
\n \n \n\n \n {({\n rows,\n getRowProps,\n getSelectionProps,\n getTableProps,\n getTableContainerProps,\n }) => (\n \n \n \n {composedContent.map((row, index) => (\n \n {pipe(row.importData, fold((importErrors) => (\n \n \n {importErrors.map((importError, errorIndex) => (\n // eslint-disable-next-line react/no-array-index-key\n
  • \n

    \n \n

    \n
  • \n ))}\n \n )}\n >\n \n \n
    \n ), (importEntry) => (\n handleToggle(importEntry)}\n checked={selected.includes(importEntry)}\n />\n )))}\n\n \n {pipe(row.importData, fold(() => (\n \n \n \n ), () => (\n \n \n \n )))}\n \n\n \n {pipe(row.importData, fold(() => (\n

    \n \n

    \n ), (importEntry) => (\n

    \n {importEntry.project.title}\n

    \n )))}\n
    \n\n \n \n \n

    \n
    \n \n ))}\n\n {composedContent.length === 0 && (\n \n \n

    \n \n

    \n
    \n
    \n )}\n
    \n
    \n
    \n )}\n
    \n
    \n );\n};\n\nconst code = (children: React.ReactNode): React.ReactElement => (\n {children}\n);\n","import { ModalHeader } from '@carbon/react';\nimport React, { useCallback, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { PreserveContent } from 'src/modules/common/components/PreserveContent';\nimport { ProjectListImport, ProjectListImportEntry } from 'src/modules/project-list/types/ProjectListImport';\nimport { ProjectListImportSelector } from 'src/modules/project-list/views/ProjectListImportSelector';\nimport { ProjectListImportUpload } from 'src/modules/project-list/views/ProjectListImportUpload';\n\ntype Props = {\n readonly data: ProjectListImport | null;\n readonly onUpload: (file: File) => void;\n readonly onCancel: () => void;\n readonly onSubmit: (entries: ReadonlyArray) => void;\n readonly onComplete: () => void;\n};\n\nexport const ProjectListImportModal = ({\n data,\n onUpload,\n onCancel,\n onSubmit,\n onComplete,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const title = useMemo(() => {\n if (data?.upload?.state === 'success') {\n return intl.formatMessage({ id: 'projectList/importModal/selector/title' });\n }\n\n if (data?.upload?.state !== 'failure') {\n return intl.formatMessage({ id: 'projectList/importModal/upload/title' });\n }\n\n return null;\n }, [data?.upload?.state, intl]);\n\n const handleClose = useCallback(() => {\n if (data?.submit?.state !== 'pending') {\n onCancel();\n }\n }, [data?.submit, onCancel]);\n\n return (\n \n \n\n \n {data && (\n <>\n {data.upload?.state === 'success' && (\n \n )}\n {data.upload?.state !== 'success' && (\n \n )}\n \n )}\n \n \n );\n};\n","import './ProjectListImportSelector.scss';\nimport { CheckmarkFilled } from '@carbon/icons-react';\nimport { ModalBody, ModalFooter } from '@carbon/react';\nimport React, { useCallback, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { Future } from 'src/modules/common/types/Future';\nimport { toNullable } from 'src/modules/common/utils/either';\nimport { ProjectListImportData, ProjectListImportEntry } from 'src/modules/project-list/types/ProjectListImport';\nimport { ProjectListImportDataTable } from 'src/modules/project-list/views/ProjectListImportDataTable';\nimport { isNotNull } from 'src/utils/guard';\n\ntype Props = {\n readonly content: ProjectListImportData;\n readonly status: Future | null;\n readonly onSubmit: (entries: ReadonlyArray) => void;\n readonly onCancel: () => void;\n readonly onComplete: () => void;\n};\n\nexport const ProjectListImportSelector = ({\n content,\n status,\n onSubmit,\n onCancel,\n onComplete,\n}: Props): React.ReactElement => {\n const [selected, setSelected] = useState>(() => (\n content\n .map((it) => it.importData)\n .map(toNullable)\n .filter(isNotNull)\n ));\n const handleSubmit = useCallback(() => onSubmit(selected), [selected, onSubmit]);\n\n return (\n <>\n \n {status?.state === 'pending' && (\n
    \n \n\n

    \n \n

    \n
    \n )}\n\n {status?.state === 'success' && (\n
    \n \n\n

    \n \n

    \n
    \n )}\n\n {(status === null || status.state === 'failure') && (\n
    \n \n
    \n )}\n
    \n\n \n {status?.state !== 'success' && (\n <>\n \n \n \n\n \n \n \n \n )}\n\n {status?.state === 'success' && (\n \n \n \n )}\n \n \n );\n};\n","import './ProjectListImportUpload.scss';\nimport { Upload } from '@carbon/icons-react';\nimport { InlineNotification, ModalBody, ModalFooter } from '@carbon/react';\nimport React, { useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { Future } from 'src/modules/common/types/Future';\nimport { ProjectListImportData } from 'src/modules/project-list/types/ProjectListImport';\n\ntype Props = {\n readonly status: Future | null;\n readonly onUpload: (file: File) => void;\n readonly onCancel: () => void;\n};\n\nexport const ProjectListImportUpload = ({ status, onUpload, onCancel }: Props): React.ReactElement => {\n const handleDrop = useCallback((acceptedFiles: File[]) => {\n const file = acceptedFiles[0] ?? new File([], 'invalid.xlsx');\n onUpload(file);\n }, [onUpload]);\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop: handleDrop,\n disabled: status?.state === 'pending',\n accept: {\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],\n },\n });\n\n return (\n <>\n \n

    \n \n

    \n\n {status?.state !== 'pending' && (\n \n \n\n \n\n

    \n \n

    \n
    \n )}\n {status?.state === 'pending' && (\n
    \n \n\n

    \n \n

    \n
    \n )}\n {status?.state === 'failure' && (\n \n \n \n )}\n \n\n \n \n \n \n \n \n );\n};\n\nfunction formatLink(children: React.ReactNode): React.ReactElement {\n return (\n \n {children}\n \n );\n}\n","import './ProjectListItemGridView.scss';\nimport { ProjectAddress } from '@belimo-retrofit-portal/logic';\nimport { DocumentPdf, Folder, OverflowMenuVertical, TrashCan } from '@carbon/icons-react';\nimport { Tag, Tooltip } from '@carbon/react';\nimport clsx from 'clsx';\nimport React, { useCallback } from 'react';\nimport { FormattedDate, FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { AssetImage } from 'src/modules/common/components/AssetImage';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { CustomMenu } from 'src/modules/common/components/CustomMenu';\nimport { CustomMenuItem } from 'src/modules/common/components/CustomMenuItem';\nimport { ProjectTitle } from 'src/modules/common/components/ProjectTitle';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { ShareOff } from 'src/modules/common/icons/ShareOff';\nimport { Project } from 'src/modules/common/types/Project';\nimport { BodyDesktopLargeRegularText } from 'src/modules/common/typography/BodyDesktopLargeRegularText';\nimport { OverlineDesktopSmallText } from 'src/modules/common/typography/OverlineDesktopSmallText';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\nimport { ProjectListRating } from 'src/modules/project-list/views/ProjectListRating';\n\ntype Props = {\n readonly item: ProjectListItem;\n readonly downloading: boolean;\n readonly unfollowing: boolean;\n readonly onRemove: (project: Project) => void;\n readonly onDownload: (project: Project) => void;\n readonly onUnfollow: (project: Project) => void;\n readonly onShare: (project: Project) => void;\n};\n\nexport const ProjectListItemGridView = ({\n item,\n downloading,\n unfollowing,\n onRemove,\n onDownload,\n onUnfollow,\n onShare,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const { project, rating } = item;\n const shared = project.isShared;\n\n const handleRemove = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onRemove(project);\n }, [project, onRemove]);\n\n const handleDownload = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onDownload(project);\n }, [project, onDownload]);\n\n const handleUnfollow = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onUnfollow(project);\n }, [project, onUnfollow]);\n\n const handleOwnershipClick = useCallback((event: React.MouseEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n onShare(project);\n }, [project, onShare]);\n\n const buildingType = intl.formatMessage({ id: `common/buildingType/${project.data.building.type}` });\n const ownershipContent = shared\n ? project.owner?.email ?? '—'\n : intl.formatMessage({ id: 'projectList/item/owned' });\n\n return (\n \n
    \n
    \n \n \n \n
    \n
    \n \n {formatProjectDetailsSubTitle(buildingType, project.data.building.address)}\n \n
    \n
    \n\n
    \n {project.data.cover && (\n \n )}\n {!project.data.cover && (\n
    \n \n
    \n )}\n
    \n\n
    \n
    \n }}\n />\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n \n \n {ownershipContent}\n \n \n
    \n
    \n e?.preventDefault()}\n flipped={true}\n iconDescription={intl.formatMessage({ id: 'projectList/items' })}\n tooltipPosition=\"bottom\"\n renderIcon={() => }\n >\n \n \n
    \n ) : (\n <>\n \n\n \n \n )}\n />\n\n {!shared ? (\n \n \n\n \n \n )}\n />\n ) : (\n \n \n
    \n ) : (\n <>\n \n\n \n \n )}\n />\n )}\n \n
    \n \n \n );\n};\n\nfunction formatProjectDetailsSubTitle(buildingType: string, address: ProjectAddress): string {\n return [buildingType, address.street.trim(), `${address.city} ${address.zip}`.trim()].filter(Boolean).join(', ');\n}\n","import './ProjectListItemListView.scss';\nimport { ProjectAddress } from '@belimo-retrofit-portal/logic';\nimport { DocumentPdf, Folder, OverflowMenuVertical, TrashCan } from '@carbon/icons-react';\nimport { Tag, Tooltip } from '@carbon/react';\nimport clsx from 'clsx';\nimport React, { useCallback } from 'react';\nimport { FormattedDate, FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { AssetImage } from 'src/modules/common/components/AssetImage';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { CustomMenu } from 'src/modules/common/components/CustomMenu';\nimport { CustomMenuItem } from 'src/modules/common/components/CustomMenuItem';\nimport { ProjectTitle } from 'src/modules/common/components/ProjectTitle';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { ShareOff } from 'src/modules/common/icons/ShareOff';\nimport { Project } from 'src/modules/common/types/Project';\nimport { BodyDesktopLargeRegularText } from 'src/modules/common/typography/BodyDesktopLargeRegularText';\nimport { OverlineDesktopSmallText } from 'src/modules/common/typography/OverlineDesktopSmallText';\nimport { ProjectListItem } from 'src/modules/project-list/types/ProjectListItem';\nimport { ProjectListRating } from 'src/modules/project-list/views/ProjectListRating';\n\ntype Props = {\n readonly item: ProjectListItem;\n readonly downloading: boolean;\n readonly unfollowing: boolean;\n readonly onRemove: (project: Project) => void;\n readonly onDownload: (project: Project) => void;\n readonly onUnfollow: (project: Project) => void;\n readonly onShare: (project: Project) => void;\n};\n\nexport const ProjectListItemListView = ({\n item,\n downloading,\n unfollowing,\n onRemove,\n onDownload,\n onUnfollow,\n onShare,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const { project, rating } = item;\n const shared = project.isShared;\n\n const handleRemove = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onRemove(project);\n }, [project, onRemove]);\n\n const handleDownload = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onDownload(project);\n }, [project, onDownload]);\n\n const handleUnfollow = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onUnfollow(project);\n }, [project, onUnfollow]);\n\n const handleOwnershipClick = useCallback((event: React.MouseEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n onShare(project);\n }, [project, onShare]);\n\n const buildingType = intl.formatMessage({ id: `common/buildingType/${project.data.building.type}` });\n const ownershipContent = shared\n ? project.owner?.email ?? '—'\n : intl.formatMessage({ id: 'projectList/item/owned' });\n\n return (\n \n
    \n {project.data.cover && (\n \n )}\n {!project.data.cover && (\n \n )}\n
    \n\n
    \n \n \n \n\n \n {formatProjectDetailsSubTitle(buildingType, project.data.building.address)}\n \n
    \n\n
    \n
    \n \n \n {ownershipContent}\n \n \n
    \n
    \n\n
    \n

    \n \n

    \n
    \n\n
    \n \n
    \n\n
    \n e?.preventDefault()}\n flipped={true}\n iconDescription={intl.formatMessage({ id: 'projectList/items' })}\n tooltipPosition=\"bottom\"\n renderIcon={() => }\n >\n \n \n
    \n ) : (\n <>\n \n\n \n \n )}\n />\n\n {!shared ? (\n \n \n\n \n \n )}\n />\n ) : (\n \n \n \n ) : (\n <>\n \n\n \n \n )}\n />\n )}\n \n \n \n );\n};\n\nfunction formatProjectDetailsSubTitle(buildingType: string, address: ProjectAddress): string {\n return [buildingType, address.street.trim(), `${address.city} ${address.zip}`.trim()].filter(Boolean).join(', ');\n}\n","import './ProjectListPager.scss';\nimport { INTEGER, Integer } from '@belimo-retrofit-portal/logic';\nimport { PaginationNav } from '@carbon/react';\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { decodeOrGet } from 'src/io/utils/decodeOrGet';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { PROJECT_LIST_PAGE_SIZE } from 'src/modules/project-list/constants/pageSize';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\n\ntype Props = {\n readonly total: Integer;\n readonly query: ProjectListQuery;\n};\n\nexport const ProjectListPager = ({ query, total }: Props): React.ReactElement => {\n const history = useHistory();\n\n return (\n history.push(`?${getQueryString(pageIndex + 1, query)}`)}\n />\n );\n};\n\nfunction getQueryString(page: number | null, query: ProjectListQuery): string {\n return buildProjectListQuery({\n ...query,\n page: decodeOrGet(INTEGER, page, INTEGER_ONE),\n }).toString();\n}\n","import './ProjectListRating.scss';\nimport { HvacResultsRating } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { EnergyEfficiencyLabelWrapper } from 'src/modules/common/components/EnergyEfficiencyLabelWrapper';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\n\ntype Props = {\n readonly rating: HvacResultsRating;\n};\n\nexport const ProjectListRating = ({ rating }: Props): React.ReactElement => (\n
    \n \n\n
    \n \n
    \n\n \n
    \n);\n","import './ProjectListRemoveModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { PreserveContent } from 'src/modules/common/components/PreserveContent';\nimport { ProjectTitle } from 'src/modules/common/components/ProjectTitle';\nimport { BodyText } from 'src/modules/common/typography/BodyText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { ProjectListRemoving } from 'src/modules/project-list/types/ProjectListRemoving';\n\ntype Props = {\n readonly data: ProjectListRemoving | null;\n readonly onCancel: () => void;\n readonly onSubmit: () => void;\n};\n\nexport const ProjectListRemoveModal = ({ data, onCancel, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const handleClose = useCallback(() => {\n if (data?.status?.state !== 'pending') {\n onCancel();\n }\n }, [data?.status, onCancel]);\n\n return (\n \n \n {data && (\n <>\n \n\n \n
    \n \n \n \n\n \n }}\n />\n \n
    \n
    \n\n \n \n \n \n\n \n \n \n \n \n )}\n
    \n \n );\n};\n","import './ProjectListSortLink.scss';\nimport { CaretDown, CaretUp } from '@carbon/icons-react';\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { ProjectListSort } from 'src/modules/project-list/types/ProjectListSort';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\n\ntype Props = {\n readonly query: ProjectListQuery;\n readonly field: ProjectListSort['field'];\n readonly children: React.ReactNode;\n};\n\nexport const ProjectListSortLink = ({ query, field, children }: Props): React.ReactElement => (\n \n \n {children}\n \n\n {query.sort.field === field && (\n \n {query.sort.direction === 'asc'\n ? \n : }\n \n )}\n \n);\n\nfunction getSortSearch(query: ProjectListQuery, field: ProjectListSort['field']): string {\n const direction = query.sort.field === field && query.sort.direction === 'asc' ? 'desc' : 'asc';\n\n return buildProjectListQuery({\n ...query,\n page: INTEGER_ONE,\n sort: { field, direction },\n }).toString();\n}\n","import './ProjectListToolbar.scss';\nimport { Popover, PopoverContent } from '@carbon/react';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { flow } from 'fp-ts/function';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { INTEGER_ONE } from 'src/modules/common/constants/integer';\nimport { DownloadIcon } from 'src/modules/common/icons/DownloadIcon';\nimport { FilterIcon } from 'src/modules/common/icons/FilterIcon';\nimport { GridViewIcon } from 'src/modules/common/icons/GridViewIcon';\nimport { ListViewIcon } from 'src/modules/common/icons/ListViewIcon';\nimport { PlusIcon } from 'src/modules/common/icons/PlusIcon';\nimport { UploadIcon } from 'src/modules/common/icons/UploadIcon';\nimport { Future } from 'src/modules/common/types/Future';\nimport { SearchField } from 'src/modules/form/components/SearchField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { PROJECT_LIST_DEFAULT_SORT } from 'src/modules/project-list/constants/sort';\nimport { ProjectListFilter } from 'src/modules/project-list/types/ProjectListFilter';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\nimport { buildProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { ProjectListFilterDropdown } from 'src/modules/project-list/views/ProjectListFilterDropdown';\nimport { useDebouncedCallback } from 'use-debounce';\n\ntype Props = {\n readonly query: ProjectListQuery;\n readonly exporting: Future | null;\n readonly onCreate: () => void;\n readonly onImport: () => void;\n readonly onExport: () => void;\n readonly onFilter: (filter: ProjectListFilter) => void;\n};\n\nexport const ProjectListToolbar = memo(({\n query,\n exporting,\n onCreate,\n onImport,\n onExport,\n onFilter,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const [isFiltersDropdownOpened, setFiltersDropdownOpened] = useState(false);\n\n const form = useForm('project.filter', {\n reinitialize: true,\n initialValues: query.filter,\n });\n\n const count = useFormWatch(form, flow(form.values.get, getAppliedFilterCount));\n\n const handleFilterDebounced = useDebouncedCallback(onFilter, 300);\n\n const handleDropdownOpen = useCallback(() => {\n setFiltersDropdownOpened(true);\n }, []);\n\n const handleDropdownClose = useCallback(() => {\n setFiltersDropdownOpened(false);\n onFilter(form.currentState.values);\n }, [form, onFilter]);\n\n const handleDropdownApply = useCallback(() => {\n onFilter(form.currentState.values);\n }, [form, onFilter]);\n\n const handleChange = useCallback(() => {\n handleFilterDebounced(form.currentState.values);\n }, [form.currentState.values, handleFilterDebounced]);\n\n useEffect(() => () => {\n handleFilterDebounced.cancel();\n }, [handleFilterDebounced]);\n\n return (\n
    \n
    \n
    \n

    \n \n

    \n
    \n\n
    \n
    \n \n \n \n\n \n \n \n
    \n\n
    \n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n\n \n \n\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n});\n\nfunction getAppliedFilterCount(filter: ProjectListFilter): number {\n return (\n (filter.buildingType.size > 0 ? 1 : 0) +\n (filter.country.size > 0 ? 1 : 0) +\n (filter.city.size > 0 ? 1 : 0) +\n (filter.ratingActual.size > 0 ? 1 : 0) +\n (filter.ratingFuture.size > 0 ? 1 : 0)\n );\n}\n","import './ProjectListView.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Project } from 'src/modules/common/types/Project';\nimport { PROJECT_LIST_PAGE_SIZE } from 'src/modules/project-list/constants/pageSize';\nimport { ProjectListDownloading } from 'src/modules/project-list/types/ProjectListDownloading';\nimport { ProjectListQuery } from 'src/modules/project-list/types/ProjectListQuery';\nimport { ProjectListSlice } from 'src/modules/project-list/types/ProjectListSlice';\nimport { ProjectListViewMode } from 'src/modules/project-list/types/ProjectListViewMode';\nimport { ProjectListUnfollowing } from 'src/modules/project-list/types/ProjectUnfollowing';\nimport { ProjectListHeader } from 'src/modules/project-list/views/ProjectListHeader';\nimport { ProjectListItemGridView } from 'src/modules/project-list/views/ProjectListItemGridView';\nimport { ProjectListItemListView } from 'src/modules/project-list/views/ProjectListItemListView';\nimport { ProjectListPager } from 'src/modules/project-list/views/ProjectListPager';\n\ntype Props = {\n readonly query: ProjectListQuery;\n readonly projects: ProjectListSlice;\n readonly downloading: ProjectListDownloading | null;\n readonly unfollowing: ProjectListUnfollowing | null;\n readonly onRemove: (project: Project) => void;\n readonly onDownload: (project: Project) => void;\n readonly onUnfollow: (project: Project) => void;\n readonly onShare: (project: Project) => void;\n};\n\nexport const ProjectListView = ({\n query,\n projects,\n downloading,\n unfollowing,\n onRemove,\n onDownload,\n onUnfollow,\n onShare,\n}: Props): React.ReactElement => (\n
    \n
    \n {query.view === ProjectListViewMode.LIST && (\n
    \n \n\n {projects.found.map((listItem) => (\n \n ))}\n
    \n )}\n {query.view === ProjectListViewMode.GRID && (\n
    \n {projects.found.map((listItem) => (\n \n ))}\n
    \n )}\n\n {projects.total === 0 && (\n

    \n \n

    \n )}\n\n {projects.total > PROJECT_LIST_PAGE_SIZE[query.view] && (\n
    \n \n
    \n )}\n
    \n
    \n);\n","import './UnfollowProjectModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { PreserveContent } from 'src/modules/common/components/PreserveContent';\nimport { ProjectListUnfollowing } from 'src/modules/project-list/types/ProjectUnfollowing';\n\ntype Props = {\n data: ProjectListUnfollowing | null;\n onConfirmUnfollow: () => void;\n onClose: () => void;\n};\n\nexport const UnfollowProjectModal = ({ data, onConfirmUnfollow, onClose }: Props): React.ReactElement => {\n const intl = useIntl();\n return (\n \n \n {\n data && (\n <>\n \n )}\n title={(\n \n )}\n />\n\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n )\n }\n \n \n );\n};\n","import { FormController } from '@form-ts/core';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { BasicFormData } from 'src/modules/project-new/types/BasicFormData';\nimport { BuildingFormData } from 'src/modules/project-new/types/BuildingFormData';\nimport { createActions } from 'src/utils/createActions';\n\nexport const PROJECT_NEW_CREATE =\n createActions('PROJECT_NEW_CREATE');\n\ntype CreateNewData = {\n readonly stepOne: BasicFormData;\n readonly stepTwo: FormController;\n};\n","import { AreaUnit } from '@belimo-retrofit-portal/logic';\nimport { BasicFormData } from 'src/modules/project-new/types/BasicFormData';\nimport { BuildingFormData } from 'src/modules/project-new/types/BuildingFormData';\n\nexport const DEFAULT_BASIC_FORM_DATA: BasicFormData = {\n cover: null,\n projectGoals: '',\n title: '',\n};\n\nexport const DEFAULT_BUILDING_FORM_DATA: BuildingFormData = {\n unit: AreaUnit.SQM,\n type: null,\n size: null,\n address: {\n zip: '',\n city: '',\n street: '',\n country: null,\n },\n};\n","import {\n CurrencyCode,\n EnergySource,\n HvacArea,\n ProjectEvaluation,\n ProjectHvac,\n ProjectParticipants,\n ProjectReport,\n ProjectSchema,\n SchemaArea,\n} from '@belimo-retrofit-portal/logic';\nimport { DECIMAL_ZERO } from 'src/modules/common/constants/decimal';\n\nexport const PROJECT_VERSION = '2024.10.01.0';\n\nexport const PROJECT_CURRENCY_DEFAULT_DATA: CurrencyCode = 'EUR';\n\nexport const PROJECT_SCHEMA_DEFAULT_DATA: ProjectSchema = {\n [SchemaArea.HEATING]: null,\n [SchemaArea.COOLING]: null,\n [SchemaArea.VENTILATION]: null,\n};\n\nexport const PROJECT_REPORT_DEFAULT_DATA: ProjectReport = {\n cover: {\n creationDate: null,\n showBuildingInfo: true,\n showOrganizationLogo: true,\n },\n energy: {\n enabled: true,\n showHeating: false,\n showCooling: false,\n showVentilation: false,\n showComments: false,\n },\n hvac: {\n enabled: true,\n showHeating: false,\n showCooling: false,\n showVentilation: false,\n showComments: true,\n },\n savings: {\n enabled: true,\n showOverallEfficiency: true,\n showPerAreaEfficiency: true,\n showPotentialSavings: true,\n },\n schema: {\n [SchemaArea.HEATING]: {\n enabled: true,\n showZoomedIn: false,\n showComments: false,\n futureVersion: null,\n },\n [SchemaArea.COOLING]: {\n enabled: true,\n showZoomedIn: false,\n showComments: false,\n futureVersion: null,\n },\n [SchemaArea.VENTILATION]: {\n enabled: true,\n showZoomedIn: false,\n showComments: false,\n futureVersion: null,\n },\n },\n evaluation: {\n enabled: true,\n showInitialInvestment: true,\n showAnnualSavings: true,\n showInvestmentPerCarbonSavings: true,\n },\n evaluationCharts: {\n enabled: true,\n showReturnOnInvestment: true,\n showInternalRateOfReturn: true,\n showAnnualCarbonEmmission: true,\n showBreakEvenPoint: true,\n },\n};\n\nexport const PROJECT_PARTICIPANTS_DEFAULT_DATA: ProjectParticipants = {\n author: '',\n consutlingEngineer: '',\n productManager: '',\n propertyManager: '',\n};\n\nexport const PROJECT_HVAC_DEFAULT_DATA: ProjectHvac = {\n comment: '',\n prices: {\n [EnergySource.ELECTRICITY]: null,\n [EnergySource.GAS]: null,\n\n [EnergySource.HEATING_DISTRICT]: null,\n [EnergySource.HEATING_OIL]: null,\n [EnergySource.HEATING_OTHER]: null,\n\n [EnergySource.COOLING_DISTRICT]: null,\n [EnergySource.COOLING_OTHER]: null,\n },\n areas: {\n [HvacArea.HEATING]: {\n enabled: false,\n sections: [],\n thermal: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: null,\n carbonIntensity: null,\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: null,\n carbonIntensity: null,\n },\n },\n [HvacArea.COOLING]: {\n enabled: false,\n sections: [],\n thermal: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: null,\n carbonIntensity: null,\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: null,\n carbonIntensity: null,\n },\n },\n [HvacArea.VENTILATION]: {\n enabled: false,\n sections: [],\n thermal: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: DECIMAL_ZERO,\n carbonIntensity: null,\n },\n electrical: {\n energySource: EnergySource.ELECTRICITY,\n annualEnergyUse: null,\n carbonIntensity: null,\n },\n },\n },\n};\n\nexport const PROJECT_EVALUATION_DEFAULT_DATA: ProjectEvaluation = {\n investmentAmount: null,\n carbonEmissionPrice: null,\n proposalDescription: '',\n};\n","import { trim } from 'fp-ts/string';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { BasicFormData } from 'src/modules/project-new/types/BasicFormData';\nimport { BuildingFormData } from 'src/modules/project-new/types/BuildingFormData';\n\nexport const BASIC_SCHEMA: FormRule = R.struct({\n cover: R.pass(),\n title: R.allOf([\n R.map(trim, R.nonEmpty()),\n R.maxLength(40),\n ]),\n projectGoals: R.maxLength(280),\n});\n\nexport const BUILDING_SCHEMA: FormRule = R.struct({\n unit: R.required(),\n type: R.required(),\n size: R.nullable(R.gt(0)),\n address: R.struct({\n street: R.maxLength(30),\n city: R.maxLength(20),\n country: R.required(),\n zip: R.maxLength(10),\n }),\n});\n","import { NativeError, ProjectData, resolveInitialProjectData } from '@belimo-retrofit-portal/logic';\nimport { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { uploadAsset } from 'src/modules/asset/sagas/utils/uploadAsset';\nimport { createProject } from 'src/modules/common/sagas/utils/createProject';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { PROJECT_NEW_CREATE } from 'src/modules/project-new/actions/ProjectNewActions';\nimport {\n PROJECT_CURRENCY_DEFAULT_DATA,\n PROJECT_EVALUATION_DEFAULT_DATA,\n PROJECT_HVAC_DEFAULT_DATA,\n PROJECT_PARTICIPANTS_DEFAULT_DATA,\n PROJECT_REPORT_DEFAULT_DATA,\n PROJECT_SCHEMA_DEFAULT_DATA,\n PROJECT_VERSION,\n} from 'src/modules/project-new/constants/projectData';\nimport { getRandomDefaultCover } from 'src/modules/project-new/utils/getRandomDefaultCover';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* projectNewCreateSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const basicValues = action.data.stepOne;\n const buildingForm = action.data.stepTwo;\n\n const buildingValues = buildingForm.values.get(buildingForm.currentState);\n\n try {\n yield* put(PROJECT_NEW_CREATE.pending());\n yield* call(logDebug, 'Creating new project...');\n yield* call(formSubmitStart, buildingForm);\n\n const cover = basicValues.cover !== null\n ? basicValues.cover\n : yield* call(getRandomDefaultCover);\n\n const asset = yield* call(uploadAsset, cover);\n\n const user = yield* select(getLoggedInUser);\n\n const projectData: ProjectData = yield* call(resolveInitialProjectData, {\n version: PROJECT_VERSION,\n title: basicValues.title,\n goals: basicValues.projectGoals,\n cover: asset,\n building: {\n type: assertNotNull(\n buildingValues.type,\n 'Building type is not defined',\n { buildingValues },\n ),\n address: {\n country: assertNotNull(\n buildingValues.address.country,\n 'Country is not defined',\n { buildingValues },\n ),\n city: buildingValues.address.city,\n street: buildingValues.address.street,\n zip: buildingValues.address.zip,\n },\n size: buildingValues.size,\n unit: buildingValues.unit,\n },\n participants: {\n ...PROJECT_PARTICIPANTS_DEFAULT_DATA,\n author: `${user.firstName} ${user.lastName}`,\n },\n hvac: PROJECT_HVAC_DEFAULT_DATA,\n currency: PROJECT_CURRENCY_DEFAULT_DATA,\n schema: PROJECT_SCHEMA_DEFAULT_DATA,\n report: PROJECT_REPORT_DEFAULT_DATA,\n evaluation: PROJECT_EVALUATION_DEFAULT_DATA,\n });\n\n const project = yield* call(createProject, projectData);\n yield* put(replace(`/project/${encodeURIComponent(project.id)}`));\n\n yield* call(logDebug, 'Creating new project... done', project);\n yield* put(PROJECT_NEW_CREATE.success());\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'project/create/success',\n messageValue: {\n projectName: basicValues.title,\n },\n },\n );\n\n // no need to unlock the form until router transition is completed\n // so there is no `formSubmitSuccess` call\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Creating new project... error', error);\n yield* put(PROJECT_NEW_CREATE.failure(NativeError.wrap(error)));\n\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(formSubmitFailure, buildingForm, {\n '': {\n path: '',\n code: 'unknown',\n value: buildingValues,\n\n message: String(error),\n context: {},\n },\n });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_NEW_CREATE } from 'src/modules/project-new/actions/ProjectNewActions';\nimport { projectNewCreateSaga } from 'src/modules/project-new/sagas/projectNewCreateSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* projectNewSaga(): SagaIterator {\n yield* takeLatest(PROJECT_NEW_CREATE.isRequest, projectNewCreateSaga);\n}\n","export function getRandomDefaultCover(): Promise {\n const randomIndex = Math.floor(Math.random() * 4) + 1;\n\n return fetch(`/images/newProjectDefault/${randomIndex}.png`)\n .then((response) => response.blob())\n .then((content) => new File([content], 'cover.png'));\n}\n","import './BasicInfoFormModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useForm } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { FileField } from 'src/modules/form/components/FileField';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { BASIC_SCHEMA } from 'src/modules/project-new/constants/schema';\nimport { BasicFormData } from 'src/modules/project-new/types/BasicFormData';\n\ntype Props = {\n readonly formData: BasicFormData;\n readonly onNext: (form: FormController) => void;\n readonly onClose: () => void;\n};\n\nexport const BasicInfoFormModal = ({ formData, onNext, onClose }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const form = useForm('project.create.new.basic', {\n reinitialize: false,\n initialValues: formData,\n });\n useFormValidator(form, BASIC_SCHEMA);\n\n const handleSubmit = useCallback((): void => {\n onNext(form);\n }, [form, onNext]);\n\n return (\n <>\n \n\n \n \n\n \n\n
    \n \n \n \n\n \n
    \n
    \n\n \n \n \n \n\n \n \n\n
    \n \n
    \n \n
    \n \n );\n};\n","import './BuildingInfoFormModal.scss';\nimport { COUNTRY_CODES, AreaUnit, BuildingType, CountryCode } from '@belimo-retrofit-portal/logic';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { constNull } from 'fp-ts/function';\nimport React, { useCallback, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { AreaUnitView } from 'src/modules/common/components/AreaUnitView';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { INTL_LOCALE_MAP } from 'src/modules/common/constants/language';\nimport { BUILDING_TYPE_OPTIONS, UNIT_VERSION_OPTIONS } from 'src/modules/common/constants/options';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { AutocompleteField } from 'src/modules/form/components/AutocompleteField';\nimport { DecimalField } from 'src/modules/form/components/DecimalField';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { BUILDING_SCHEMA } from 'src/modules/project-new/constants/schema';\nimport { BuildingFormData } from 'src/modules/project-new/types/BuildingFormData';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly formData: BuildingFormData;\n readonly onSubmit: (form: FormController) => void;\n readonly onBack: (form: FormController) => void;\n readonly onClose: () => void;\n};\n\nexport const BuildingInfoFormModal = ({ language, formData, onSubmit, onBack, onClose }: Props): React.ReactElement => {\n const intl = useIntl();\n const collator = useMemo(() => new Intl.Collator(INTL_LOCALE_MAP[language]), [language]);\n\n const form = useForm('project.create.new.buidling', {\n reinitialize: false,\n initialValues: formData,\n });\n useFormValidator(form, BUILDING_SCHEMA);\n\n const handleSubmit = useCallback((): void => {\n onSubmit(form);\n }, [form, onSubmit]);\n const handleBack = useCallback((): void => {\n onBack(form);\n }, [form, onBack]);\n\n const countryCodesFilteredByLanguage = useMemo(\n () => COUNTRY_CODES.map((code) => ({\n label: intl.formatMessage({ id: `common/country/name/${code}` }),\n value: code,\n }))\n .sort((optionA, optionB) => collator.compare(optionA.label, optionB.label)),\n [intl, collator],\n );\n\n const isSubmitting = useFormWatch(form, form.submitting.get);\n\n return (\n <>\n \n\n \n
    \n \n {intl.formatMessage({ id: 'basedata/building/type' })}\n *\n \n )}\n itemToElement={renderBuildingTypeOption}\n renderSelectedItem={renderBuildingTypeOption}\n />\n\n \n\n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n size=\"lg\"\n direction=\"top\"\n field={form.field.at('address').at('country')}\n titleText={(\n <>\n \n *\n \n )}\n options={countryCodesFilteredByLanguage}\n itemToElement={renderCountryOption}\n />\n\n \n
    \n
    \n\n \n \n
    \n \n
    \n\n \n \n\n (\n
    \n \n
    \n )}\n >\n \n \n
    \n \n );\n};\n\nfunction renderBuildingTypeOption(option: BuildingType): React.ReactElement {\n return ;\n}\n\nfunction renderUnitOptions(option: AreaUnit): React.ReactElement {\n return ;\n}\n\nfunction renderCountryOption(option: CountryCode | null): React.ReactNode {\n return option ? : null;\n}\n","import './ProjectCreateModal.scss';\nimport { FormController } from '@form-ts/core';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useState } from 'react';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { validate } from 'src/modules/form/utils/validate';\nimport { PROJECT_NEW_CREATE } from 'src/modules/project-new/actions/ProjectNewActions';\nimport { DEFAULT_BASIC_FORM_DATA, DEFAULT_BUILDING_FORM_DATA } from 'src/modules/project-new/constants/formData';\nimport { BASIC_SCHEMA, BUILDING_SCHEMA } from 'src/modules/project-new/constants/schema';\nimport { BasicFormData } from 'src/modules/project-new/types/BasicFormData';\nimport { BuildingFormData } from 'src/modules/project-new/types/BuildingFormData';\nimport { BasicInfoFormModal } from 'src/modules/project-new/views/BasicInfoFormModal';\nimport { BuildingInfoFormModal } from 'src/modules/project-new/views/BuildingInfoFormModal';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly openCreationDialog: boolean;\n readonly onCancel: () => void;\n};\n\nexport const ProjectCreateModal = ({ language, openCreationDialog, onCancel }: Props): React.ReactElement => {\n const [step, setStep] = useState<1 | 2>(1);\n\n const [basicInfoValues, setBasicInfoValues] = useState(DEFAULT_BASIC_FORM_DATA);\n const [buildingInfoValues, setBuildingInfoValues] = useState(DEFAULT_BUILDING_FORM_DATA);\n\n const saveForm = useAction(PROJECT_NEW_CREATE.request);\n\n const handleNext = useCallback((form: FormController): void => {\n const values = form.values.get(form.currentState);\n const errors = validate(values, BASIC_SCHEMA);\n\n if (Object.keys(errors).length !== 0) {\n form.change(\n pipe(\n form.currentState,\n form.errors.set(errors),\n form.submitted.set(true),\n form.submitting.set(false),\n ),\n );\n return;\n }\n\n setBasicInfoValues(values);\n setStep(2);\n }, []);\n\n const handleBack = useCallback((form: FormController): void => {\n const values = form.values.get(form.currentState);\n\n setBuildingInfoValues(values);\n setStep(1);\n }, []);\n\n const handleSubmit = useCallback((form: FormController): void => {\n const values = form.values.get(form.currentState);\n const errors = validate(values, BUILDING_SCHEMA);\n\n if (Object.keys(errors).length !== 0) {\n form.change(\n pipe(\n form.currentState,\n form.errors.set(errors),\n form.submitted.set(true),\n form.submitting.set(false),\n ),\n );\n return;\n }\n\n saveForm({\n stepOne: basicInfoValues,\n stepTwo: form,\n });\n }, [saveForm, basicInfoValues]);\n\n return (\n \n {step === 1\n ? (\n \n )\n : (\n \n )}\n \n );\n};\n","import { Project } from 'src/modules/common/types/Project';\nimport { ProjectSyncMode } from 'src/modules/project-sync/types/ProjectSyncMode';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const PROJECT_SYNC_RESET = createTrigger('PROJECT_SYNC_RESET');\nexport const PROJECT_SYNC_PERFORM = createActions('PROJECT_SYNC_PERFORM');\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { PROJECT_SYNC_PERFORM } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { ProjectSyncState } from 'src/modules/project-sync/types/ProjectSyncState';\n\nexport function projectSyncPerformReducer(state: ProjectSyncState, action: Action): ProjectSyncState {\n if (PROJECT_SYNC_PERFORM.isRequest(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n status: FUTURE.pending(),\n },\n };\n }\n if (PROJECT_SYNC_PERFORM.isPending(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n status: FUTURE.pending(),\n },\n };\n }\n if (PROJECT_SYNC_PERFORM.isSuccess(action)) {\n return {\n ...state,\n data: {\n project: action.data,\n status: FUTURE.success(undefined),\n },\n };\n }\n if (PROJECT_SYNC_PERFORM.isFailure(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n status: FUTURE.failure(action.data),\n },\n };\n }\n\n return state;\n}\n","import { projectSyncPerformReducer } from 'src/modules/project-sync/reducers/projectSyncPerformReducer';\nimport { projectSyncResetReducer } from 'src/modules/project-sync/reducers/projectSyncResetReducer';\nimport { ProjectSyncState } from 'src/modules/project-sync/types/ProjectSyncState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ProjectSyncState = {\n data: null,\n};\n\nexport const projectSyncReducer = chainReducers(defaultState, [\n projectSyncResetReducer,\n projectSyncPerformReducer,\n]);\n","import { Action } from 'redux';\nimport { PROJECT_SYNC_RESET } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { ProjectSyncState } from 'src/modules/project-sync/types/ProjectSyncState';\n\nexport function projectSyncResetReducer(state: ProjectSyncState, action: Action): ProjectSyncState {\n if (PROJECT_SYNC_RESET.is(action)) {\n return {\n ...state,\n data: null,\n };\n }\n\n return state;\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { updateProject } from 'src/modules/common/sagas/utils/updateProject';\nimport { PROJECT_SYNC_PERFORM } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { PROJECT_VIEW_REPLACE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* projectSyncPerformSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const mode = action.data;\n const project = action.meta;\n\n try {\n // optimistically update with the new version\n yield* put(PROJECT_VIEW_REPLACE.trigger(project));\n\n yield* call(logDebug, `Synchronizing project in ${mode}...`, project);\n yield* put(PROJECT_SYNC_PERFORM.pending(project));\n if (mode === 'background') {\n yield* delay(1_000);\n }\n\n const reloaded = yield* call(updateProject, project.id, project.data);\n\n // update with the reloaded version\n yield* put(PROJECT_VIEW_REPLACE.trigger(reloaded));\n\n yield* call(logDebug, `Synchronizing project in ${mode}... done`, reloaded);\n yield* put(PROJECT_SYNC_PERFORM.success(reloaded, project));\n } catch (error) {\n yield* call(logError, `Synchronizing project in ${mode}... error`, error);\n yield* put(PROJECT_SYNC_PERFORM.failure(NativeError.wrap(error), project));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_SYNC_PERFORM, PROJECT_SYNC_RESET } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { projectSyncPerformSaga } from 'src/modules/project-sync/sagas/projectSyncPerformSaga';\nimport { cancel, take, takeLatest } from 'typed-redux-saga';\n\nexport function* projectSyncSaga(): SagaIterator {\n while (true) {\n const task = yield* takeLatest(PROJECT_SYNC_PERFORM.isRequest, projectSyncPerformSaga);\n\n yield* take(PROJECT_SYNC_RESET.is);\n yield* cancel(task);\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { syncProjectForeground } from 'src/modules/project-sync/sagas/utils/syncProjectForeground';\nimport { waitProjectSynchronization } from 'src/modules/project-sync/sagas/utils/waitProjectSynchronization';\nimport { getProjectSyncData } from 'src/modules/project-sync/selectors/getProjectSyncData';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* forceProjectSynchronization(project: Project): SagaIterator {\n // if synchronization is scheduled, new foreground task is triggered\n // to cancel all existing processes and to skip the planned delay\n const syncData = yield* select(getProjectSyncData);\n return syncData?.status.state === 'pending'\n ? yield* call(syncProjectForeground, project)\n : yield* call(waitProjectSynchronization, project);\n}\n","import { SagaIterator } from 'redux-saga';\nimport { call as callEffect, take as takeEffect } from 'redux-saga/effects';\nimport { CancelledError } from 'src/errors/CancelledError';\nimport { Project } from 'src/modules/common/types/Project';\nimport { PROJECT_SYNC_PERFORM } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { waitProjectSynchronization } from 'src/modules/project-sync/sagas/utils/waitProjectSynchronization';\nimport { cancel, put, race } from 'typed-redux-saga';\n\nexport function* syncProjectBackground(project: Project): SagaIterator {\n yield* put(PROJECT_SYNC_PERFORM.request('background', project));\n\n const { synchronized } = yield* race({\n synchronized: callEffect(waitProjectSynchronization, project),\n cancelled: takeEffect(PROJECT_SYNC_PERFORM.isRequest),\n });\n if (synchronized) {\n return synchronized;\n }\n\n yield* cancel();\n throw new CancelledError('Explicit abort of control flow');\n}\n","import { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { PROJECT_SYNC_PERFORM } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { waitProjectSynchronization } from 'src/modules/project-sync/sagas/utils/waitProjectSynchronization';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* syncProjectForeground(project: Project): SagaIterator {\n yield* put(PROJECT_SYNC_PERFORM.request('foreground', project));\n return yield* call(waitProjectSynchronization, project);\n}\n","import { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { PROJECT_SYNC_PERFORM } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { getProjectSyncData } from 'src/modules/project-sync/selectors/getProjectSyncData';\nimport { call, select, take } from 'typed-redux-saga';\n\nexport function* waitProjectSynchronization(project: Project): SagaIterator {\n const saving = yield* select(getProjectSyncData);\n if (saving === null) {\n return project;\n }\n if (saving.status.state === 'success') {\n return saving.project;\n }\n if (saving.status.state === 'failure') {\n throw saving.status.error;\n }\n\n yield* take([PROJECT_SYNC_PERFORM.isSuccess, PROJECT_SYNC_PERFORM.isFailure]);\n return yield* call(waitProjectSynchronization, project);\n}\n","import { createSelector } from 'reselect';\nimport { getProjectSyncState } from 'src/modules/project-sync/selectors/getProjectSyncState';\n\nexport const getProjectSyncData = createSelector([\n getProjectSyncState,\n], (state) => state.data);\n","import { ProjectSyncState } from 'src/modules/project-sync/types/ProjectSyncState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getProjectSyncState(state: RootState): ProjectSyncState {\n return state.projectSync;\n}\n","import { Uuid } from '@belimo-retrofit-portal/logic';\nimport { Project } from 'src/modules/common/types/Project';\nimport { ProjectViewData } from 'src/modules/project-view/types/ProjectViewData';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const PROJECT_VIEW_FETCH = createTrigger('PROJECT_VIEW_FETCH');\nexport const PROJECT_VIEW_RESET = createTrigger('PROJECT_VIEW_RESET');\nexport const PROJECT_VIEW_REPLACE = createTrigger('PROJECT_VIEW_REPLACE');\nexport const PROJECT_VIEW_SHARE = createTrigger('PROJECT_VIEW_SHARE');\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux';\nimport {\n PROJECT_VIEW_FETCH,\n PROJECT_VIEW_RESET,\n PROJECT_VIEW_REPLACE,\n} from 'src/modules/project-view/actions/ProjectViewActions';\nimport { ProjectViewState } from 'src/modules/project-view/types/ProjectViewState';\n\nexport function projectViewDataReducer(state: ProjectViewState, action: Action): ProjectViewState {\n if (PROJECT_VIEW_FETCH.is(action)) {\n return {\n ...state,\n data: action.data,\n };\n }\n if (PROJECT_VIEW_RESET.is(action)) {\n return pipe(\n O.id(),\n O.prop('data'),\n O.filter((current) => current?.project.id === action.meta),\n O.modify(() => null),\n )(state);\n }\n if (PROJECT_VIEW_REPLACE.is(action)) {\n return pipe(\n O.id(),\n O.prop('data'),\n O.fromNullable,\n O.prop('project'),\n O.filter((current) => current.id === action.data.id),\n O.modify(() => action.data),\n )(state);\n }\n\n return state;\n}\n","import { projectViewDataReducer } from 'src/modules/project-view/reducers/projectViewDataReducer';\nimport { ProjectViewState } from 'src/modules/project-view/types/ProjectViewState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ProjectViewState = {\n data: null,\n};\n\nexport const projectViewReducer = chainReducers(defaultState, [\n projectViewDataReducer,\n]);\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_VIEW_RESET, PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { projectViewShareSaga } from 'src/modules/project-view/sagas/projectViewShareSaga';\nimport { cancelSagaOn } from 'src/utils/cancelSagaOn';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* projectViewSaga(): SagaIterator {\n yield* takeLatest(PROJECT_VIEW_SHARE.is, cancelSagaOn(projectViewShareSaga, [\n PROJECT_VIEW_RESET.is,\n ]));\n}\n","import { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { PROJECT_SYNC_RESET } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { navigate } from 'src/modules/routing/utils/navigate';\nimport {\n SHARE_PROJECT_CLOSE,\n SHARE_PROJECT_OPEN,\n SHARE_PROJECT_REMOVE_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, put, select, take } from 'typed-redux-saga';\n\nexport function* projectViewShareSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const project = action.data;\n const loggedInUser = yield* select(getLoggedInUser);\n\n yield* put(SHARE_PROJECT_OPEN.trigger(project));\n const trigger = yield* take([SHARE_PROJECT_REMOVE_SUBMIT.isSuccess, SHARE_PROJECT_CLOSE.is]);\n if (SHARE_PROJECT_CLOSE.is(trigger)) {\n // the Share Project modal was closed\n // there is no need to do anything\n return;\n }\n\n const hasAccess = (\n project.owner?.id === loggedInUser.id ||\n trigger.data.some((it) => it.id === loggedInUser.id)\n );\n if (hasAccess) {\n // we still have access to the project\n // there is no need to do anything\n return;\n }\n\n // the project is not accessible for us anymore\n // we need to close the modal immediately\n yield* put(SHARE_PROJECT_CLOSE.trigger());\n\n // abort project synchronization\n yield* put(PROJECT_SYNC_RESET.trigger());\n\n // and redirect to the project list\n yield* call(navigate, replace({ pathname: '/projects' }));\n}\n","import { createSelector } from 'reselect';\nimport { getProjectViewData } from 'src/modules/project-view/selectors/getProjectViewData';\n\nexport const getProjectDetails = createSelector([\n getProjectViewData,\n], (data) => data.project);\n","import { createSelector } from 'reselect';\nimport { getProjectViewState } from 'src/modules/project-view/selectors/getProjectViewState';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getProjectViewData = createSelector([\n getProjectViewState,\n], (state) => assertNotNull(\n state.data,\n 'Project details should be fetched first',\n { state },\n));\n","import { ProjectViewState } from 'src/modules/project-view/types/ProjectViewState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getProjectViewState(state: RootState): ProjectViewState {\n return state.projectView;\n}\n","import { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const REPORT_RESET = createTrigger('REPORT_RESET');\nexport const REPORT_CHANGE = createTrigger('REPORT_GENERATE');\nexport const REPORT_GENERATE = createActions('REPORT_GENERATE');\n","import { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\n\nconst REPORT_FORM_SCHEMA_COVER: FormRule = R.struct({\n creationDate: R.nullable(R.date()),\n showBuildingInfo: R.pass(),\n showOrganizationLogo: R.pass(),\n});\n\nexport const REPORT_FORM_SCHEMA: FormRule = R.struct({\n cover: REPORT_FORM_SCHEMA_COVER,\n energy: R.pass(),\n hvac: R.pass(),\n savings: R.pass(),\n schema: R.pass(),\n evaluation: R.pass(),\n});\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { DocumentLayout } from 'src/modules/common/layouts/DocumentLayout';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { OutputDocument } from 'src/modules/output/views/OutputDocument';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { getReportFormData } from 'src/modules/report/selectors/getReportFormData';\nimport { getReportGenerated } from 'src/modules/report/selectors/getReportGenerated';\nimport { ReportDocumentContent } from 'src/modules/report/views/ReportDocumentContent';\n\nexport const ReportDocumentPage = (): React.ReactElement => {\n const intl = useIntl();\n const project = useSelector(getProjectDetails);\n const language = useSelector(getLanguage);\n const document = useParametricSelector(getReportGenerated, project);\n const formData = useParametricSelector(getReportFormData, project);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'report/pageTitle' })}\n \n \n\n \n \n \n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { ProjectToolbar } from 'src/modules/common/components/ProjectToolbar';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { REPORT_RESET } from 'src/modules/report/actions/ReportActions';\nimport { getReportFormData } from 'src/modules/report/selectors/getReportFormData';\nimport { getReportGenerated } from 'src/modules/report/selectors/getReportGenerated';\nimport { getReportLoading } from 'src/modules/report/selectors/getReportLoading';\nimport { ReportFormView } from 'src/modules/report/views/ReportFormView';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const ReportPage = (): React.ReactElement => {\n const intl = useIntl();\n const project = useSelector(getProjectDetails);\n const language = useSelector(getLanguage);\n const document = useParametricSelector(getReportGenerated, project);\n const formData = useParametricSelector(getReportFormData, project);\n const loading = useSelector(getReportLoading);\n\n const resetState = useAction(REPORT_RESET.trigger);\n useEffect(() => () => resetState(), [resetState, project.id]);\n\n const shareProject = useBoundAction(PROJECT_VIEW_SHARE.trigger, project);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'report/pageTitle' })}\n \n \n\n \n \n \n \n\n \n \n );\n};\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { REPORT_GENERATE } from 'src/modules/report/actions/ReportActions';\nimport { ReportState } from 'src/modules/report/types/ReportState';\n\nexport function reportGenerateReducer(state: ReportState, action: Action): ReportState {\n if (REPORT_GENERATE.isPending(action)) {\n return { status: FUTURE.pending() };\n }\n if (REPORT_GENERATE.isSuccess(action)) {\n return { status: FUTURE.success(undefined) };\n }\n if (REPORT_GENERATE.isFailure(action)) {\n return { status: FUTURE.failure(action.data) };\n }\n\n return state;\n}\n","import { reportGenerateReducer } from 'src/modules/report/reducers/reportGenerateReducer';\nimport { reportResetReducer } from 'src/modules/report/reducers/reportResetReducer';\nimport { ReportState } from 'src/modules/report/types/ReportState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ReportState = {\n status: null,\n};\n\nexport const reportReducer = chainReducers(defaultState, [\n reportResetReducer,\n reportGenerateReducer,\n]);\n","import { Action } from 'redux';\nimport { REPORT_RESET } from 'src/modules/report/actions/ReportActions';\nimport { ReportState } from 'src/modules/report/types/ReportState';\n\nexport function reportResetReducer(state: ReportState, action: Action): ReportState {\n if (REPORT_RESET.is(action)) {\n return { status: null };\n }\n\n return state;\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { REPORT_CHANGE } from 'src/modules/report/actions/ReportActions';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* reportChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const formData = action.data;\n\n try {\n yield* call(logDebug, 'Saving report data...', formData);\n\n const previous = yield* select(getProjectDetails);\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n report: formData,\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n yield* call(logDebug, 'Saving report data... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save report data', { formData }, NativeError.wrap(error));\n yield* call(logError, 'Saving report data... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { saveAs } from 'file-saver';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectForeground } from 'src/modules/project-sync/sagas/utils/syncProjectForeground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { REPORT_GENERATE } from 'src/modules/report/actions/ReportActions';\nimport { buildReportDocument } from 'src/modules/report/sagas/utils/buildReportDocument';\nimport { getReportGenerated } from 'src/modules/report/selectors/getReportGenerated';\nimport { getReportDocumentFilename } from 'src/modules/report/utils/getReportDocumentFilename';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* reportGenerateSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const formData = action.data;\n\n try {\n yield* put(REPORT_GENERATE.pending());\n yield* call(logDebug, 'Generating report document...', formData);\n\n const previous = yield* select(getProjectDetails);\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n report: formData,\n },\n };\n\n const reloaded = yield* call(syncProjectForeground, modified);\n const document = yield* select(getReportGenerated, reloaded);\n\n const fileData = yield* call(\n buildReportDocument,\n document,\n formData,\n modified,\n );\n const fileName = yield* call(\n getReportDocumentFilename,\n document,\n );\n\n yield* call(\n saveAs,\n fileData,\n `${fileName}.pdf`,\n );\n\n yield* call(logDebug, 'Generating report document... done', document);\n yield* put(REPORT_GENERATE.success());\n } catch (error) {\n const wrapped = new RuntimeError('Could not generate report document', { formData }, NativeError.wrap(error));\n yield* call(logError, 'Generating report document... error', error);\n yield* put(REPORT_GENERATE.failure(wrapped));\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { REPORT_CHANGE, REPORT_GENERATE } from 'src/modules/report/actions/ReportActions';\nimport { reportChangeSaga } from 'src/modules/report/sagas/reportChangeSaga';\nimport { reportGenerateSaga } from 'src/modules/report/sagas/reportGenerateSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* reportSaga(): SagaIterator {\n yield* takeLatest(REPORT_CHANGE.is, reportChangeSaga);\n yield* takeLatest(REPORT_GENERATE.isRequest, reportGenerateSaga);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { TolgeeProvider } from '@tolgee/react';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { SagaIterator } from 'redux-saga';\nimport { call as callEffect, delay as delayEffect } from 'redux-saga/effects';\nimport { Project } from 'src/modules/common/types/Project';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { getTolgeeInstance } from 'src/modules/config/selectors/getTolgeeInstance';\nimport { OutputDocument } from 'src/modules/output/views/OutputDocument';\nimport { waitReportDocument } from 'src/modules/report/sagas/utils/waitReportDocument';\nimport { getReportFakeStore } from 'src/modules/report/selectors/getReportFakeStore';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { createShadowHost } from 'src/modules/report/utils/createShadowHost';\nimport { renderComponent } from 'src/modules/report/utils/renderComponent';\nimport { ReportDocumentContent } from 'src/modules/report/views/ReportDocumentContent';\nimport { htmlToPdf } from 'src/sagas/utils/htmlToPdf';\nimport { call, race, select } from 'typed-redux-saga';\n\nexport function* buildReportDocument(\n document: ReportGenerated,\n formData: ReportFormData,\n project: Project,\n): SagaIterator {\n const host = yield* call(createShadowHost);\n\n try {\n const language = yield* select(getLanguage);\n const store = yield* select(getReportFakeStore);\n const tolgee = yield* select(getTolgeeInstance);\n\n const content = (\n \n \n \n \n \n \n \n );\n\n yield* call(renderComponent, host, content);\n const { timeout } = yield* race({\n timeout: delayEffect(5_000),\n complete: callEffect(waitReportDocument, host),\n });\n if (timeout) {\n throw new RuntimeError('Timeout exceeded for document readiness');\n }\n\n const pages = Array.from(host.element.querySelectorAll('.bp-output-page'));\n return yield* call(htmlToPdf, pages);\n } catch (error) {\n throw new RuntimeError('Could not build report PDF document', {}, NativeError.wrap(error));\n } finally {\n yield* call(host.destroy);\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { ShadowHost } from 'src/modules/report/types/ShadowHost';\nimport { call, delay } from 'typed-redux-saga';\n\nexport function* waitReportDocument(host: ShadowHost): SagaIterator {\n do {\n if (\n (yield* call(checkImageState, host.element)) &&\n (yield* call(checkReadyState, host.element))\n ) {\n return;\n }\n\n yield* call(delay, 50);\n } while (true);\n}\n\nfunction checkImageState(element: Element): boolean {\n return Array.from(element.querySelectorAll('img')).every((it) => it.complete);\n}\n\nfunction checkReadyState(element: Element): boolean {\n return Array.from(element.querySelectorAll('[data-ready]')).every((it) => {\n const value = it.getAttribute('data-ready');\n return value === null || value === 'true';\n });\n}\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\n\nexport const getReportCurrency = createSelector([\n getProjectLazy,\n], (project) => project.data.currency);\n","import { createStore, Store } from 'redux';\nimport { RootState } from 'src/types/RootState';\n\nexport function getReportFakeStore(state: RootState): Store {\n return createStore(() => state);\n}\n","import dayjs from 'dayjs';\nimport { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { getCurrentDate } from 'src/modules/config/selectors/getCurrentDate';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\n\nexport const getReportFormData = createSelector([\n getProjectLazy,\n getCurrentDate,\n getLoggedInUser,\n], (project, currentDate, loggedInUser): ReportFormData => (\n {\n ...project.data.report,\n cover: {\n ...project.data.report.cover,\n creationDate: project.data.report.cover.creationDate || dayjs(currentDate).startOf('day').toDate(),\n showOrganizationLogo: loggedInUser.organization.logo !== null && project.data.report.cover.showOrganizationLogo,\n },\n energy: project.data.report.energy,\n hvac: project.data.report.hvac,\n schema: project.data.report.schema,\n }\n));\n","import { createSelector } from 'reselect';\nimport { getReportGeneratedCover } from 'src/modules/report/selectors/getReportGeneratedCover';\nimport { getReportGeneratedEnergy } from 'src/modules/report/selectors/getReportGeneratedEnergy';\nimport { getReportGeneratedEvaluation } from 'src/modules/report/selectors/getReportGeneratedEvaluation';\nimport { getReportGeneratedHvac } from 'src/modules/report/selectors/getReportGeneratedHvac';\nimport { getReportGeneratedSavings } from 'src/modules/report/selectors/getReportGeneratedSavings';\nimport { getReportGeneratedSchema } from 'src/modules/report/selectors/getReportGeneratedSchema';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGenerated = createSelector([\n getReportGeneratedCover,\n getReportGeneratedEnergy,\n getReportGeneratedHvac,\n getReportGeneratedSavings,\n getReportGeneratedEvaluation,\n getReportGeneratedSchema,\n], (cover, energy, hvac, savings, evaluation, schema): ReportGenerated => ({\n cover,\n energy,\n hvac,\n savings,\n evaluation,\n schema,\n}));\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { getCurrentDate } from 'src/modules/config/selectors/getCurrentDate';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getReportFormData } from 'src/modules/report/selectors/getReportFormData';\nimport { ReportGeneratedCover } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedCover = createSelector([\n getProjectLazy,\n getReportFormData,\n getCurrentDate,\n getLoggedInUser,\n], (project, report, currentDate, loggedInUser): ReportGeneratedCover => ({\n title: project.data.title,\n goals: project.data.goals,\n image: project.data.cover,\n logo: loggedInUser.organization.logo,\n building: project.data.building,\n email: project.owner?.email ?? '',\n author: project.data.participants.author,\n reportDate: report.cover.creationDate ?? currentDate,\n}));\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { getReportCurrency } from 'src/modules/report/selectors/getReportCurrency';\nimport { ReportGeneratedEnergy, ReportGeneratedEnergyAreaDetails } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedEnergy = createSelector([\n getReportCurrency,\n getHvacAssesmentFormData,\n getHvacResults,\n], (currency, hvacForm, results): ReportGeneratedEnergy => {\n return {\n comment: hvacForm.comment,\n currency: currency,\n\n areas: {\n [HvacArea.HEATING]: {\n thermal: mapThermalArea(HvacArea.HEATING),\n electrical: mapElectricalArea(HvacArea.HEATING),\n },\n [HvacArea.COOLING]: {\n thermal: mapThermalArea(HvacArea.COOLING),\n electrical: mapElectricalArea(HvacArea.COOLING),\n },\n [HvacArea.VENTILATION]: {\n thermal: mapThermalArea(HvacArea.VENTILATION),\n electrical: mapElectricalArea(HvacArea.VENTILATION),\n },\n },\n };\n\n function mapThermalArea(area: HvacArea): ReportGeneratedEnergyAreaDetails {\n return {\n source: hvacForm[area].thermal.energySource,\n annualConsumption: hvacForm[area].thermal.annualEnergyUse,\n\n carbonEmission: results.perArea[area].carbonEmission.thermal,\n totalCosts: results.perArea[area].energyCosts.thermal,\n };\n }\n\n function mapElectricalArea(area: HvacArea): ReportGeneratedEnergyAreaDetails {\n return {\n source: hvacForm[area].electrical.energySource,\n annualConsumption: hvacForm[area].electrical.annualEnergyUse,\n\n carbonEmission: results.perArea[area].carbonEmission.electrical,\n totalCosts: results.perArea[area].energyCosts.electrical,\n };\n }\n});\n","import { createSelector } from 'reselect';\nimport { getEvaluationFormData } from 'src/modules/evaluation/selectors/getEvaluationFormData';\nimport { getEvaluationResults } from 'src/modules/evaluation/selectors/getEvaluationResults';\nimport { getReportCurrency } from 'src/modules/report/selectors/getReportCurrency';\nimport { ReportGeneratedEvaluation } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedEvaluation = createSelector([\n getReportCurrency,\n getEvaluationFormData,\n getEvaluationResults,\n], (currency, inputs, results): ReportGeneratedEvaluation => ({\n currency,\n inputs,\n results,\n}));\n","import { createSelector } from 'reselect';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { HvacFormSectionData, HvacFormVariantData } from 'src/modules/hvac/types/HvacFormData';\nimport { ReportGeneratedHvac, ReportGeneratedHvacSection } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedHvac = createSelector([\n getHvacAssesmentFormData,\n], (hvacFormData): ReportGeneratedHvac => ({\n heating: hvacFormData.heating.sections\n .filter((section) => section.enabled)\n .map(mapSection),\n cooling: hvacFormData.cooling.sections\n .filter((section) => section.enabled)\n .map(mapSection),\n ventilation: hvacFormData.ventilation.sections\n .filter((section) => section.enabled)\n .map(mapSection),\n}));\n\nfunction mapSection(section: HvacFormSectionData): ReportGeneratedHvacSection {\n return {\n title: section.title,\n config: section.config,\n actual: {\n rating: section.answer.actual.option?.class ?? null,\n title: section.answer.actual.option?.title ?? null,\n explanation: section.answer.actual.option?.explanation ?? null,\n comment: getComment(section.answer.actual),\n },\n future: {\n rating: section.answer.future.option?.class ?? null,\n title: section.answer.future.option?.title ?? null,\n explanation: section.answer.future.option?.explanation ?? null,\n comment: getComment(section.answer.future),\n },\n copies: section.copies.map((copy, copyIndex) => ({\n id: `${section.config.id}-${copyIndex}`,\n name: copy.title,\n actual: {\n rating: copy.answer.actual.option?.class ?? null,\n title: copy.answer.actual.option?.title ?? null,\n explanation: copy.answer.actual.option?.explanation ?? null,\n comment: getComment(copy.answer.actual),\n },\n future: {\n rating: copy.answer.future.option?.class ?? null,\n title: copy.answer.future.option?.title ?? null,\n explanation: copy.answer.future.option?.explanation ?? null,\n comment: getComment(copy.answer.future),\n },\n })),\n };\n}\n\nfunction getComment(answer: HvacFormVariantData): string {\n const value = answer.additionals.find((it) => it.config.id === 'comment')?.value;\n return typeof value === 'string' ? value : '';\n}\n","import { createSelector } from 'reselect';\nimport { getHvacResultsOverallRating } from 'src/modules/hvac/selectors/getHvacResultsOverallRating';\nimport {\n getReportGeneratedSavingsAnnualSavings,\n} from 'src/modules/report/selectors/getReportGeneratedSavingsAnnualSavings';\nimport {\n getReportGeneratedSavingsRatingPerArea,\n} from 'src/modules/report/selectors/getReportGeneratedSavingsRatingPerArea';\nimport { ReportGeneratedSavings } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavings = createSelector([\n getHvacResultsOverallRating,\n getReportGeneratedSavingsRatingPerArea,\n getReportGeneratedSavingsAnnualSavings,\n], (ratingOverall, ratingPerArea, annualSavings): ReportGeneratedSavings => ({\n ratingOverall,\n ratingPerArea,\n annualSavings,\n}));\n","import { createSelector } from 'reselect';\nimport { getReportCurrency } from 'src/modules/report/selectors/getReportCurrency';\nimport {\n getReportGeneratedSavingsCarbonEmission,\n} from 'src/modules/report/selectors/getReportGeneratedSavingsCarbonEmission';\nimport {\n getReportGeneratedSavingsEnergyAbsolute,\n} from 'src/modules/report/selectors/getReportGeneratedSavingsEnergyAbsolute';\nimport {\n getReportGeneratedSavingsEnergyRelative,\n} from 'src/modules/report/selectors/getReportGeneratedSavingsEnergyRelative';\nimport { getReportGeneratedSavingsTotalCost } from 'src/modules/report/selectors/getReportGeneratedSavingsTotalCost';\nimport { ReportGeneratedSavingsAnnual } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsAnnualSavings = createSelector([\n getReportCurrency,\n getReportGeneratedSavingsTotalCost,\n getReportGeneratedSavingsEnergyRelative,\n getReportGeneratedSavingsEnergyAbsolute,\n getReportGeneratedSavingsCarbonEmission,\n], (currency, totalCost, energyRelative, energyAbsolute, carbonEmission): ReportGeneratedSavingsAnnual => ({\n currency,\n totalCost,\n energyRelative,\n energyAbsolute,\n carbonEmission,\n}));\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ReportGeneratedSavingsAnnualValues } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsCarbonEmission = createSelector([\n getHvacResults,\n], (hvacResults): ReportGeneratedSavingsAnnualValues => ({\n heating: hvacResults.perArea[HvacArea.HEATING].savings.carbon.thermal,\n cooling: hvacResults.perArea[HvacArea.COOLING].savings.carbon.thermal,\n\n total: hvacResults.overall.savings.carbon.overall,\n electricity: hvacResults.overall.savings.carbon.electrical,\n}));\n","import {\n ENERGY_OUTPUT_BY_SOURCE_UNIT,\n HvacArea,\n HvacResultsSavingsEnergy,\n mulDecimals,\n} from '@belimo-retrofit-portal/logic';\nimport { Decimal } from 'decimal.js-light';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ReportGeneratedSavingsAnnualValues } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsEnergyAbsolute = createSelector([\n getHvacResults,\n], (results): ReportGeneratedSavingsAnnualValues => ({\n heating: getEnergySavingsInKWh(results.perArea[HvacArea.HEATING].savings.thermal),\n cooling: getEnergySavingsInKWh(results.perArea[HvacArea.COOLING].savings.thermal),\n\n total: results.overall.savings.overall.absolute,\n electricity: results.overall.savings.electrical.absolute,\n}));\n\nfunction getEnergySavingsInKWh(savings: HvacResultsSavingsEnergy): Decimal | null {\n return mulDecimals(\n savings.absolute,\n ENERGY_OUTPUT_BY_SOURCE_UNIT[savings.source],\n );\n}\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ReportGeneratedSavingsAnnualValues } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsEnergyRelative = createSelector([\n getHvacResults,\n], (results): ReportGeneratedSavingsAnnualValues => ({\n heating: results.perArea[HvacArea.HEATING].savings.thermal.relative,\n cooling: results.perArea[HvacArea.COOLING].savings.thermal.relative,\n\n total: results.overall.savings.overall.relative,\n electricity: results.overall.savings.electrical.relative,\n}));\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { ReadonlyRecord } from 'fp-ts/ReadonlyRecord';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ReportGeneratedSavingsRating } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsRatingPerArea = createSelector([\n getHvacResults,\n], (results): ReadonlyRecord => ({\n [HvacArea.HEATING]: results.perArea[HvacArea.HEATING].rating,\n [HvacArea.COOLING]: results.perArea[HvacArea.COOLING].rating,\n [HvacArea.VENTILATION]: results.perArea[HvacArea.VENTILATION].rating,\n}));\n","import { HvacArea } from '@belimo-retrofit-portal/logic';\nimport { createSelector } from 'reselect';\nimport { getHvacResults } from 'src/modules/hvac/selectors/getHvacResults';\nimport { ReportGeneratedSavingsAnnualValues } from 'src/modules/report/types/ReportGenerated';\n\nexport const getReportGeneratedSavingsTotalCost = createSelector([\n getHvacResults,\n], (results): ReportGeneratedSavingsAnnualValues => ({\n heating: results.perArea[HvacArea.HEATING].savings.thermal.annual,\n cooling: results.perArea[HvacArea.COOLING].savings.thermal.annual,\n\n total: results.overall.savings.overall.annual,\n electricity: results.overall.savings.electrical.annual,\n}));\n","import { pipe } from 'fp-ts/function';\nimport { mapWithIndex } from 'fp-ts/ReadonlyRecord';\nimport { createSelector } from 'reselect';\nimport { getReportFormData } from 'src/modules/report/selectors/getReportFormData';\nimport { ReportGeneratedSchema } from 'src/modules/report/types/ReportGenerated';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { getSchemaMatrix } from 'src/modules/schema/selectors/getSchemaMatrix';\n\nexport const getReportGeneratedSchema = createSelector([\n getReportFormData,\n getSchemaFormData,\n getSchemaMatrix,\n], (report, schema, matrix): ReportGeneratedSchema => pipe(\n schema,\n mapWithIndex((area, selection) => {\n if (selection === null) {\n return null;\n }\n\n return {\n schema: selection.schema,\n comment: selection.comment,\n actual: selection.actual,\n future: selection.future.find((version) => version.number === report.schema[area].futureVersion) ?? null,\n matrix: matrix[area],\n };\n }),\n));\n","import { RootState } from 'src/types/RootState';\n\nexport function getReportLoading(state: RootState): boolean {\n return state.report.status?.state === 'pending';\n}\n","import { createRoot } from 'react-dom/client';\nimport { ShadowHost } from 'src/modules/report/types/ShadowHost';\n\nexport function createShadowHost(): ShadowHost {\n const host = document.createElement('div');\n host.style.position = 'fixed';\n host.style.zIndex = '1';\n host.style.top = '0';\n host.style.left = '10000px';\n host.style.width = '0';\n host.style.height = '0';\n host.style.overflow = 'hidden';\n\n document.body.appendChild(host);\n const root = createRoot(host);\n\n return {\n element: host,\n render: (element): void => {\n root.render(element);\n },\n destroy: (): void => {\n root.unmount();\n document.body.removeChild(host);\n },\n };\n}\n","import { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\n\nexport function getReportDocumentFilename(document: ReportGenerated): string {\n return [\n formatDate(document.cover.reportDate),\n document.cover.title,\n ].filter(Boolean).join(' ');\n}\n\nfunction formatDate(date: Date): string {\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n\n return `${yyyy}${mm}${dd}`;\n}\n","import * as React from 'react';\nimport { Lifecycle } from 'src/modules/common/components/Lifecycle';\nimport { ShadowHost } from 'src/modules/report/types/ShadowHost';\n\nexport async function renderComponent(host: ShadowHost, element: React.ReactElement): Promise {\n await new Promise((resolve, reject) => {\n host.render((\n \n {element}\n \n ));\n });\n}\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { Project } from 'src/modules/common/types/Project';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageCover } from 'src/modules/report/views/document/ReportDocumentPageCover';\nimport { ReportDocumentPageEnergy } from 'src/modules/report/views/document/ReportDocumentPageEnergy';\nimport { ReportDocumentPageEvaluation } from 'src/modules/report/views/document/ReportDocumentPageEvaluation';\nimport { ReportDocumentPageHvac } from 'src/modules/report/views/document/ReportDocumentPageHvac';\nimport { ReportDocumentPageSavings } from 'src/modules/report/views/document/ReportDocumentPageSavings';\nimport { ReportDocumentPageSchema } from 'src/modules/report/views/document/ReportDocumentPageSchema';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n readonly project: Project;\n};\n\nexport const ReportDocumentContent = ({ language, document, formData, project }: Props): React.ReactElement => (\n <>\n \n\n \n\n \n\n \n\n \n\n {[\n SchemaArea.HEATING,\n SchemaArea.COOLING,\n ].map((area) => (\n \n ))}\n \n);\n","import './ReportFormDocument.scss';\nimport React, { useMemo, useRef } from 'react';\nimport { Project } from 'src/modules/common/types/Project';\nimport { OutputDocumentContext, OutputDocumentContextData } from 'src/modules/output/context/OutputDocumentContext';\nimport { OutputPageContext } from 'src/modules/output/context/OutputPageContext';\nimport { OutputDocumentPageInfo } from 'src/modules/output/types/OutputDocumentPageInfo';\nimport { ReportContentPage } from 'src/modules/report/types/ReportContent';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentContent } from 'src/modules/report/views/ReportDocumentContent';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n readonly project: Project;\n readonly onChange: (pages: ReadonlyArray) => void;\n};\n\nexport const ReportFormDocument = React.memo(({\n language, document, formData, project, onChange,\n}: Props): React.ReactElement => {\n const pageContents = useRef(new Map());\n const documentContext = useMemo((): OutputDocumentContextData => ({\n registerPage: (page: OutputDocumentPageInfo): void => {\n pageContents.current = pageContents.current.set(page.id, page);\n\n const content = getReportPages(pageContents.current);\n onChange(content);\n },\n unregisterPage: (id: string): void => {\n pageContents.current.delete(id);\n\n const content = getReportPages(pageContents.current);\n onChange(content);\n },\n }), [onChange]);\n\n return (\n
    \n \n \n \n
    \n );\n});\n\nfunction getReportPages(contents: ReadonlyMap): ReportContentPage[] {\n const sortedPages = [...contents.values()].sort((a, b) => a.order - b.order);\n const shownPages = sortedPages.filter((it) => it.visible);\n\n return sortedPages.map((page) => ({\n id: page.id,\n section: page.section,\n content: (\n \n {page.content}\n \n ),\n }));\n}\n","import './ReportFormFieldToggle.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { ToggleField } from 'src/modules/form/components/ToggleField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\n\ntype Props = {\n readonly field: FieldPath;\n readonly disabled?: boolean;\n readonly children: React.ReactNode;\n};\n\nexport const ReportFormFieldToggle = ({ field, disabled, children }: Props): React.ReactElement => (\n
    \n \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { DateboxField } from 'src/modules/form/components/DateboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n readonly document: ReportGenerated;\n};\n\nexport const ReportFormSectionConfigCover = ({ field, project, document }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n
    \n
    \n \n \n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n
    \n\n \n
    \n\n
    \n \n \n\n
    \n \n
    \n \n
    \n
    \n );\n};\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigEnergy = ({ field, project }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigEvaluation = ({ field, project }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigEvaluationCharts = ({ field, project }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigHvac = ({ field, project }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { FieldPath } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigSavings = ({ field, project }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n","import './ReportFormSectionConfig.scss';\nimport { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { Information } from '@carbon/icons-react';\nimport { FieldPath } from '@form-ts/core';\nimport React, { useMemo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { CheckboxField } from 'src/modules/form/components/CheckboxField';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportFormFieldToggle } from 'src/modules/report/views/ReportFormFieldToggle';\n\ntype Props = {\n readonly area: SchemaArea;\n readonly field: FieldPath;\n readonly project: Project;\n};\n\nexport const ReportFormSectionConfigSchema = ({ area, field, project }: Props): React.ReactElement => {\n const schemaData = project.data.schema[area];\n const futureOptions = useMemo(() => schemaData?.future.map((it) => it?.id) ?? [], [schemaData]);\n\n const isSchemaMissing = schemaData === null;\n const isCommentMissing = !(schemaData?.comment.length);\n\n return (\n
    \n
    \n \n {AREA_NAMES[area]}\n \n\n \n
    \n\n \n\n
    \n \n \n \n\n \n\n \n \n \n\n
    \n \n\n
    \n \n\n \n
    \n
    \n\n }\n itemToElement={renderFutureVariantOption}\n renderSelectedItem={renderFutureVariantOption}\n disabled={isSchemaMissing}\n />\n
    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n );\n};\n\nfunction renderFutureVariantOption(option: number): React.ReactElement {\n return ;\n}\n\nconst AREA_NAMES = {\n [SchemaArea.HEATING]: ,\n [SchemaArea.COOLING]: ,\n [SchemaArea.VENTILATION]: ,\n};\n","import './ReportFormSectionNoSchema.scss';\nimport { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Project } from 'src/modules/common/types/Project';\n\ntype Props = {\n readonly area: SchemaArea;\n readonly project: Project;\n};\n\nexport const ReportFormSectionNoSchema = ({ area, project }: Props): React.ReactElement => (\n
    \n
    \n \n
    \n\n

    \n \n

    \n\n
    \n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n);\n\nconst AREA_NAMES = {\n [SchemaArea.HEATING]: ,\n [SchemaArea.COOLING]: ,\n [SchemaArea.VENTILATION]: ,\n};\n","import './ReportFormSectionPreview.scss';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { ReportContentPage } from 'src/modules/report/types/ReportContent';\nimport { ReportFormSectionPreviewPage } from 'src/modules/report/views/ReportFormSectionPreviewPage';\n\ntype Props = {\n readonly pages: ReadonlyArray;\n readonly enabled: boolean;\n};\n\nexport const ReportFormSectionPreview = ({ pages, enabled }: Props): React.ReactElement => (\n
    \n {pages.map((page) => (\n
    \n
    \n \n {page.content}\n \n
    \n
    \n ))}\n
    \n);\n","import './ReportFormSectionPreviewPage.scss';\nimport React from 'react';\nimport { bind } from 'src/modules/common/utils/decorator';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\ntype State = {\n readonly scale: number;\n readonly ratio: number;\n};\n\nexport class ReportFormSectionPreviewPage extends React.Component {\n public readonly state: State = {\n scale: 1,\n ratio: 0,\n };\n\n private wrapper: React.RefObject = React.createRef();\n\n private content: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n this.updateContent();\n\n window.addEventListener('resize', this.updateContent, { passive: true });\n window.addEventListener('orientationchange', this.updateContent, { passive: true });\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.updateContent);\n window.removeEventListener('orientationchange', this.updateContent);\n }\n\n public componentDidUpdate(): void {\n this.updateContent();\n }\n\n public render(): React.ReactElement {\n const { children } = this.props;\n\n return (\n \n \n {children}\n
    \n \n );\n }\n\n private getWrapperStyle(): React.CSSProperties {\n const { ratio } = this.state;\n return { paddingBottom: `${(ratio * 100).toFixed(5)}%` };\n }\n\n private getContentStyle(): React.CSSProperties {\n const { scale } = this.state;\n return { transform: `scale(${scale.toFixed(5)})` };\n }\n\n @bind()\n private updateContent(): void {\n if (!this.content.current || !this.wrapper.current) {\n return;\n }\n\n const wrapperW = this.wrapper.current.clientWidth;\n const contentW = this.content.current.clientWidth;\n const contentH = this.content.current.clientHeight;\n\n const scale = wrapperW / contentW;\n const ratio = contentH / contentW;\n\n // eslint-disable-next-line react/destructuring-assignment\n if (this.state.scale !== scale || this.state.ratio !== ratio) {\n this.setState({ scale, ratio });\n }\n }\n}\n","import './ReportFormView.scss';\nimport { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { useForm } from '@form-ts/react';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { ArrowLeftIcon } from 'src/modules/common/icons/ArrowLeftIcon';\nimport { FileIcon } from 'src/modules/common/icons/FileIcon';\nimport { Project } from 'src/modules/common/types/Project';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { REPORT_CHANGE, REPORT_GENERATE } from 'src/modules/report/actions/ReportActions';\nimport { REPORT_FORM_SCHEMA } from 'src/modules/report/constants/schema';\nimport { ReportContentPage } from 'src/modules/report/types/ReportContent';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportFormDocument } from 'src/modules/report/views/ReportFormDocument';\nimport { ReportFormSectionConfigCover } from 'src/modules/report/views/ReportFormSectionConfigCover';\nimport { ReportFormSectionConfigEnergy } from 'src/modules/report/views/ReportFormSectionConfigEnergy';\nimport { ReportFormSectionConfigEvaluation } from 'src/modules/report/views/ReportFormSectionConfigEvaluation';\nimport {\n ReportFormSectionConfigEvaluationCharts,\n} from 'src/modules/report/views/ReportFormSectionConfigEvaluationCharts';\nimport { ReportFormSectionConfigHvac } from 'src/modules/report/views/ReportFormSectionConfigHvac';\nimport { ReportFormSectionConfigSavings } from 'src/modules/report/views/ReportFormSectionConfigSavings';\nimport { ReportFormSectionConfigSchema } from 'src/modules/report/views/ReportFormSectionConfigSchema';\nimport { ReportFormSectionNoSchema } from 'src/modules/report/views/ReportFormSectionNoSchema';\nimport { ReportFormSectionPreview } from 'src/modules/report/views/ReportFormSectionPreview';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly project: Project;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n readonly loading: boolean;\n};\n\nexport const ReportFormView = ({ language, project, document, formData, loading }: Props): React.ReactElement => {\n const projectEvaluationUrl = `/project/${encodeURIComponent(project.id)}/evaluation`;\n\n const form = useForm('project.report', {\n reinitialize: false,\n initialValues: formData,\n });\n useFormValidator(form, REPORT_FORM_SCHEMA);\n\n const saveForm = useAction(REPORT_CHANGE.trigger);\n useEffect(() => form.subscribe((prevState) => {\n const nextState = form.currentState;\n\n if (prevState.values !== nextState.values) {\n saveForm(nextState.values);\n }\n }), [form, saveForm]);\n\n const generateReport = useAction(REPORT_GENERATE.request);\n const handleReportClick = useCallback(() => {\n generateReport(form.currentState.values);\n }, [form, generateReport]);\n\n const [reportPages, setReportPages] = useState>([]);\n\n return (\n
    \n
    \n
    \n
    \n\n (\n
    \n \n
    \n )}\n >\n \n \n
    \n\n \n\n
    \n
    \n
    \n it.section === 'cover')}\n enabled={true}\n />\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n it.section === 'savings')}\n enabled={formData.savings.enabled}\n />\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n it.section === 'evaluation')}\n enabled={formData.evaluation.enabled}\n />\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n it.section === 'evaluationCharts')}\n enabled={formData.evaluationCharts.enabled}\n />\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n it.section === 'energy')}\n enabled={formData.energy.enabled}\n />\n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n it.section === 'hvac')}\n enabled={formData.hvac.enabled}\n />\n
    \n
    \n \n
    \n
    \n\n {[\n SchemaArea.HEATING,\n SchemaArea.COOLING,\n ].map((area) => (\n
    \n
    \n {document.schema[area] !== null && (\n it.section === `schema-${area}`)}\n enabled={formData.schema[area].enabled}\n />\n )}\n {document.schema[area] === null && (\n \n )}\n
    \n
    \n \n
    \n
    \n ))}\n
    \n\n
    \n \n
    \n \n
    \n\n \n \n\n (\n
    \n \n
    \n )}\n >\n \n \n
    \n
    \n
    \n );\n};\n","import './ReportDocumentPageAmount.scss';\nimport React, { memo } from 'react';\n\ntype Props = {\n title: React.ReactNode;\n amount: React.ReactNode;\n unit: React.ReactNode;\n};\n\nexport const ReportDocumentPageAmount = memo(({ title, amount, unit }: Props) => (\n
    \n
    \n {title}\n
    \n\n
    \n {amount || '\\u2014'}\n\n {unit}\n
    \n
    \n));\n","import './ReportDocumentPageEnergyValue.scss';\nimport { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\n\ntype Props = {\n readonly title: React.ReactNode;\n readonly value: Decimal | null;\n readonly unit: React.ReactNode;\n};\n\nexport const ReportDocumentPageCO2Value = ({ title, value, unit }: Props): React.ReactElement => (\n
    \n
    \n {title}\n
    \n\n
    \n
    \n \n
    \n\n
    \n {unit}\n
    \n
    \n
    \n);\n","import './ReportDocumentPageCover.scss';\nimport dayjs from 'dayjs';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { AreaUnitView } from 'src/modules/common/components/AreaUnitView';\nimport { AssetImage } from 'src/modules/common/components/AssetImage';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\nimport { ProjectTitle } from 'src/modules/common/components/ProjectTitle';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputLogo } from 'src/modules/output/views/OutputLogo';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageCover = ({ language, document, formData }: Props): React.ReactElement => (\n \n \n
    \n
    \n {document.cover.image !== null && (\n \n )}\n {document.cover.image === null && (\n
    \n )}\n\n
    \n \n
    \n
    \n\n
    \n \n
    \n\n
    \n
    \n {document.cover.logo && formData.cover.showOrganizationLogo && (\n
    \n

    \n \n

    \n\n \n
    \n )}\n\n {document.cover.goals.trim() && (\n <>\n
    \n \n
    \n\n
    {document.cover.goals}
    \n \n )}\n
    \n\n
    \n {formData.cover.showBuildingInfo && (\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n {document.cover.building.size && (\n
    \n \n \n
    \n )}\n\n
    \n {document.cover.building.address.street}\n
    \n\n
    \n {document.cover.building.address.zip} {document.cover.building.address.city}\n {', '}\n \n
    \n
    \n )}\n\n
    \n
    \n \n
    \n\n
    \n {document.cover.author}\n
    \n\n
    \n {document.cover.email}\n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n {dayjs(document.cover.reportDate).format('DD.MM.YYYY')}\n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n\n
    \n
    \n \n
    \n \n
    \n\n
    \n \n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n \n \n);\n","import './ReportDocumentPageEnergy.scss';\nimport { HvacArea } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { FanIcon } from 'src/modules/common/icons/FanIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { OutputTitle } from 'src/modules/output/views/OutputTitle';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageEnergyThermal } from 'src/modules/report/views/document/ReportDocumentPageEnergyThermal';\nimport {\n ReportDocumentPageEnergyVentilation,\n} from 'src/modules/report/views/document/ReportDocumentPageEnergyVentilation';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageEnergy = ({ language, document, formData }: Props): React.ReactElement => (\n \n \n
    \n
    \n \n \n \n
    \n\n
    \n {formData.energy.showHeating && (\n
    \n }\n name={}\n values={document.energy.areas[HvacArea.HEATING]}\n currency={document.energy.currency}\n />\n
    \n )}\n\n {formData.energy.showCooling && (\n
    \n }\n name={}\n values={document.energy.areas[HvacArea.COOLING]}\n currency={document.energy.currency}\n />\n
    \n )}\n\n {formData.energy.showVentilation && (\n
    \n }\n name={}\n values={document.energy.areas[HvacArea.VENTILATION]}\n currency={document.energy.currency}\n />\n
    \n )}\n
    \n\n {(formData.energy.showComments && document.energy.comment) && (\n
    \n
    \n \n
    \n\n
    \n {document.energy.comment}\n
    \n
    \n )}\n
    \n
    \n \n);\n","import './ReportDocumentPageEnergyThermal.scss';\nimport { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { EnergySavingsUnit } from 'src/modules/common/components/EnergySavingsUnit';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ReportGeneratedEnergyArea } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageCO2Value } from 'src/modules/report/views/document/ReportDocumentPageCO2Value';\nimport { ReportDocumentPageEnergyValue } from 'src/modules/report/views/document/ReportDocumentPageEnergyValue';\n\ntype Props = {\n readonly icon: React.ReactElement;\n readonly name: React.ReactNode;\n readonly values: ReportGeneratedEnergyArea;\n readonly currency: CurrencyCode;\n};\n\nexport const ReportDocumentPageEnergyThermal = ({ icon, name, values, currency }: Props): React.ReactElement => (\n
    \n
    \n
    \n {icon}\n
    \n\n
    \n {name}\n
    \n
    \n\n
    \n
    \n
    \n \n
    \n\n
    \n
    \n }\n value={values.thermal.annualConsumption?.div(1_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.thermal.carbonEmission?.div(1_000_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.thermal.totalCosts}\n unit={(\n }}\n />\n )}\n />\n
    \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n
    \n }\n value={values.electrical.annualConsumption?.div(1_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.electrical.carbonEmission?.div(1_000_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.electrical.totalCosts}\n unit={(\n }}\n />\n )}\n />\n
    \n
    \n
    \n
    \n
    \n);\n","import './ReportDocumentPageEnergyValue.scss';\nimport { Decimal } from 'decimal.js-light';\nimport React from 'react';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\n\ntype Props = {\n readonly title: React.ReactNode;\n readonly value: Decimal | null;\n readonly unit: React.ReactNode;\n};\n\nexport const ReportDocumentPageEnergyValue = ({ title, value, unit }: Props): React.ReactElement => (\n
    \n
    \n {title}\n
    \n\n
    \n
    \n \n
    \n\n
    \n {unit}\n
    \n
    \n
    \n);\n","import './ReportDocumentPageEnergyVentilation.scss';\nimport { CurrencyCode } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { EnergySavingsUnit } from 'src/modules/common/components/EnergySavingsUnit';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ReportGeneratedEnergyArea } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageCO2Value } from 'src/modules/report/views/document/ReportDocumentPageCO2Value';\nimport { ReportDocumentPageEnergyValue } from 'src/modules/report/views/document/ReportDocumentPageEnergyValue';\n\ntype Props = {\n readonly icon: React.ReactElement;\n readonly name: React.ReactNode;\n readonly values: ReportGeneratedEnergyArea;\n readonly currency: CurrencyCode;\n};\n\nexport const ReportDocumentPageEnergyVentilation = ({ icon, name, values, currency }: Props): React.ReactElement => (\n
    \n
    \n
    \n {icon}\n
    \n\n
    \n {name}\n
    \n
    \n\n
    \n
    \n }\n value={values.electrical.annualConsumption?.div(1_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.electrical.carbonEmission?.div(1_000_000) ?? null}\n unit={(\n }}\n />\n )}\n />\n
    \n\n
    \n }\n value={values.electrical.totalCosts}\n unit={(\n }}\n />\n )}\n />\n
    \n
    \n
    \n);\n","import './ReportDocumentPageEvaluation.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Project } from 'src/modules/common/types/Project';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { OutputTitle } from 'src/modules/output/views/OutputTitle';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport {\n ReportDocumentPageEvaluationCharts,\n} from 'src/modules/report/views/document/ReportDocumentPageEvaluationCharts';\nimport {\n ReportDocumentPageEvaluationOverview,\n} from 'src/modules/report/views/document/ReportDocumentPageEvaluationOverview';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n readonly project: Project;\n};\n\nexport const ReportDocumentPageEvaluation = ({ language, document, formData, project }: Props): React.ReactElement => (\n <>\n \n \n
    \n
    \n \n \n \n
    \n\n \n
    \n
    \n \n\n \n \n
    \n
    \n \n \n \n
    \n\n \n
    \n
    \n \n \n);\n","import './ReportDocumentPageEvaluationCharts.scss';\nimport { Decimal } from 'decimal.js-light';\nimport React, { memo, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { FormattedBEP } from 'src/modules/common/components/FormattedBEP';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\nimport { sub, sup } from 'src/modules/common/constants/formattingHelpers';\nimport { Project } from 'src/modules/common/types/Project';\nimport { EvaluationResultsChartsGraphBEP } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphBEP';\nimport { EvaluationResultsChartsGraphCO2 } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphCO2';\nimport { EvaluationResultsChartsGraphIRR } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphIRR';\nimport { EvaluationResultsChartsGraphROI } from 'src/modules/evaluation/views/EvaluationResultsChartsGraphROI';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageAmount } from 'src/modules/report/views/document/ReportDocumentPageAmount';\n\ntype Props = {\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n readonly project: Project;\n};\n\nexport const ReportDocumentPageEvaluationCharts = memo(({ document, formData, project }: Props) => {\n const intl = useIntl();\n\n const hvacAssessmentFormData = useParametricSelector(getHvacAssesmentFormData, project);\n\n const isOnlyOneAreaEnabled = useMemo(() => {\n const { heating, cooling, ventilation } = hvacAssessmentFormData;\n\n return [heating.enabled, cooling.enabled, ventilation.enabled].filter(Boolean).length === 1;\n }, [hvacAssessmentFormData]);\n\n const areCostExclSavingsNegative = (document.evaluation.results.savings.costExclCO2?.overall &&\n !document.evaluation.results.savings.costExclCO2?.overall?.isPositive()) ||\n false;\n const isInvestmentEmpty = Boolean(document.evaluation.results.savings.costExclCO2?.overall?.isPositive() &&\n (project.data.evaluation.investmentAmount === null ||\n project.data.evaluation.investmentAmount?.isZero()));\n\n return (\n
    \n {formData.evaluationCharts.showBreakEvenPoint && (\n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n \n\n
    \n }\n amount={}\n unit={}\n />\n\n }\n amount={}\n unit={}\n />\n
    \n
    \n )}\n\n {formData.evaluationCharts.showAnnualCarbonEmmission && (\n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n \n )}\n />\n
    \n )}\n\n {formData.evaluationCharts.showReturnOnInvestment && (\n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n \n\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n {document.evaluation.results.charts.ROI !== null && document.evaluation.results.charts.ROI.map((it) => (\n
    \n
    \n {it.year.toString().padStart(2, '0')}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n ))}\n\n {document.evaluation.results.charts.ROI === null && NO_CHART_DATA.map((it) => (\n
    \n
    \n {it.year.toString().padStart(2, '0')}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n ))}\n
    \n
    \n
    \n )}\n\n {formData.evaluationCharts.showInternalRateOfReturn && (\n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n \n\n
    \n
    \n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n {document.evaluation.results.charts.IRR !== null && document.evaluation.results.charts.IRR.map((it) => (\n
    \n
    \n {it.year.toString().padStart(2, '0')}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n ))}\n\n {document.evaluation.results.charts.IRR === null && NO_CHART_DATA.map((it) => (\n
    \n
    \n {it.year.toString().padStart(2, '0')}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n ))}\n
    \n
    \n
    \n )}\n
    \n );\n});\n\nconst NO_CHART_DATA = [\n new Decimal(1),\n new Decimal(2),\n new Decimal(3),\n new Decimal(4),\n new Decimal(5),\n new Decimal(10),\n new Decimal(20),\n].map((year) => ({\n year: year,\n exclCO2: null,\n inclCO2: null,\n}));\n","import './ReportDocumentPageEvaluationOverview.scss';\nimport { HvacArea } from '@belimo-retrofit-portal/logic';\nimport React, { memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CurrencySymbol } from 'src/modules/common/components/CurrencySymbol';\nimport { FormattedValue } from 'src/modules/common/components/FormattedValue';\nimport { SavingsAmount } from 'src/modules/common/components/SavingsAmount';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { SavingTileCard } from 'src/modules/common/components/SavingTileCard';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ChartUpIcon } from 'src/modules/common/icons/ChartUpIcon';\nimport { CurrencyExchangeIcon } from 'src/modules/common/icons/CurrencyExchangeIcon';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageAmount } from 'src/modules/report/views/document/ReportDocumentPageAmount';\n\ntype Props = {\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageEvaluationOverview = memo(({ document, formData }:Props) => (\n
    \n\n {formData.evaluation.showInitialInvestment && (\n <>\n
    \n \n
    \n\n
    \n }\n amount={(\n \n )}\n unit={null}\n />\n\n }\n amount={(\n \n )}\n unit={null}\n />\n
    \n\n {document.evaluation.inputs.proposalDescription && (\n
    \n
    \n \n
    \n\n
    \n {document.evaluation.inputs.proposalDescription}\n
    \n
    \n )}\n \n )}\n\n {formData.evaluation.showAnnualSavings && (\n <>\n
    \n \n
    \n\n
    \n }\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={null}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n\n }\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={null}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n\n {formData.evaluation.showInvestmentPerCarbonSavings && (\n }\n icon={}\n amountTitle={(\n }}\n />\n )}\n amount={(\n \n )}\n unit={(\n }}\n />\n )}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n )}\n
    \n \n )}\n
    \n));\n","import './ReportDocumentPageHvac.scss';\nimport { HvacArea } from '@belimo-retrofit-portal/logic';\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { EnergyEfficiencyTransition } from 'src/modules/common/components/EnergyEfficiencyTransition';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { OutputBlock, splitBlocksIntoPages } from 'src/modules/output/utils/splitBlocksIntoPages';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { OutputTitle } from 'src/modules/output/views/OutputTitle';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated, ReportGeneratedHvacSection } from 'src/modules/report/types/ReportGenerated';\nimport { Language } from 'src/types/common/Language';\nimport { assertNotEmpty } from 'src/utils/assert';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageHvac = React.memo(({ language, document, formData }: Props): React.ReactElement => (\n <>\n {formData.hvac.showHeating && (\n \n )}\n\n {formData.hvac.showCooling && (\n \n )}\n\n {formData.hvac.showVentilation && (\n \n )}\n \n));\n\ntype AreaProps = {\n readonly language: Language;\n readonly area: HvacArea;\n readonly order: number;\n\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nconst AreaPage = React.memo(({ language, area, order, document, formData }: AreaProps): React.ReactElement => {\n const contentElement = useRef(null);\n const [outputPages, setOutputPages] = useState([]);\n\n useLayoutEffect(() => {\n const pageElement = contentElement.current;\n if (!pageElement) {\n return;\n }\n\n const pages = collectHvacPages(area, document, formData, pageElement);\n setOutputPages(pages);\n }, [area, document, formData]);\n\n return (\n <>\n \n {document.hvac[area]\n .map((section) => linearizeHvacSection(section, formData))\n .flat(1)\n .map((section) => React.cloneElement(section.content, { key: section.id }))}\n \n\n {outputPages.map((pageData, pageIndex) => (\n \n \n
    \n \n \n \n
    \n\n {pageIndex === 0 && (\n
    \n {AREA_TITLES[area]}\n
    \n )}\n\n {pageData.map((section) => React.cloneElement(section.content, { key: section.id }))}\n
    \n \n ))}\n \n );\n});\n\ntype BlockElementSection = {\n readonly id: string;\n readonly content: React.ReactElement;\n};\n\nfunction collectHvacPages(\n area: HvacArea,\n document: ReportGenerated,\n formData: ReportFormData,\n pageElement: HTMLDivElement,\n): BlockElementSection[][] {\n const sectionMargin = pt2px(10);\n const sectionHeight = (sectionId: string): number => assertNotEmpty(\n pageElement.querySelector(`[data-hvac-section=\"${sectionId}\"]`)?.clientHeight,\n `Could not calculate HVAC section \"${sectionId}\" height`,\n {},\n );\n\n const PAGE_HEIGHT = 986;\n const PAGE_HEADER_HEIGHT = pt2px(12) + pt2px(5);\n const AREA_NAME_HEIGHT = pt2px(12) + pt2px(10);\n\n const blocks: OutputBlock<'page', BlockElementSection>[] = [{\n block: 'page',\n widows: 1,\n orphans: 1,\n rows: document.hvac[area]\n .map((section) => linearizeHvacSection(section, formData))\n .flat(1)\n .map((section) => ({\n element: section,\n height: () => sectionHeight(section.id) + sectionMargin,\n })),\n }];\n\n return splitBlocksIntoPages(\n blocks,\n (pageIndex) => (\n pageIndex === 0\n ? PAGE_HEIGHT - PAGE_HEADER_HEIGHT - AREA_NAME_HEIGHT\n : PAGE_HEIGHT - PAGE_HEADER_HEIGHT\n ),\n );\n}\n\nfunction linearizeHvacSection(\n section: ReportGeneratedHvacSection,\n formData: ReportFormData,\n): BlockElementSection[] {\n const result: BlockElementSection[] = [];\n\n const isCommentShown = Boolean(section.actual.comment || section.future.comment);\n\n result.push({\n id: section.config.id,\n content: (\n
    \n
    \n
    \n {section.config.number} \n {Boolean(section.title) && `\\u00A0\\u2013 ${section.title}`}\n
    \n\n
    \n \n
    \n
    \n\n {formData.hvac.showComments && (\n
    \n
    \n
    \n \n
    \n\n {section.actual.title && (\n
    \n \n
    \n )}\n\n {section.actual.explanation && (\n
    \n \n
    \n )}\n\n {isCommentShown && (\n
    \n {section.actual.comment}\n
    \n )}\n
    \n\n
    \n \n
    \n\n
    \n
    \n \n
    \n\n {section.future.title && (\n
    \n \n
    \n )}\n\n {section.future.explanation && (\n
    \n \n
    \n )}\n\n {isCommentShown && (\n
    \n {section.future.comment}\n
    \n )}\n
    \n
    \n )}\n
    \n ),\n });\n\n for (const copy of section.copies) {\n result.push({\n id: copy.id,\n content: (\n
    \n
    \n
    \n {section.config.number}  – {copy.name}\n
    \n\n
    \n \n
    \n
    \n\n {formData.hvac.showComments && (\n
    \n
    \n
    \n \n
    \n\n {copy.actual.title && (\n
    \n \n
    \n )}\n\n {copy.actual.explanation && (\n
    \n \n
    \n )}\n\n {isCommentShown && (\n
    \n {copy.actual.comment}\n
    \n )}\n
    \n\n
    \n \n
    \n\n
    \n
    \n \n
    \n\n {copy.future.title && (\n
    \n \n
    \n )}\n\n {copy.future.explanation && (\n
    \n \n
    \n )}\n\n {isCommentShown && (\n
    \n {copy.future.comment}\n
    \n )}\n
    \n
    \n )}\n
    \n ),\n });\n }\n\n return result;\n}\n\nfunction pt2px(value: number): number {\n return value / 0.75;\n}\n\nconst AREA_TITLES = {\n heating: ,\n cooling: ,\n ventilation: ,\n};\n","import './ReportDocumentPageSavings.scss';\nimport { EnergySource, HvacArea } from '@belimo-retrofit-portal/logic';\nimport { Cloud, Lightning } from '@carbon/icons-react';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CarbonSavingsUnit } from 'src/modules/common/components/CarbonSavingsUnit';\nimport { EnergyEfficiencyLabelWrapper } from 'src/modules/common/components/EnergyEfficiencyLabelWrapper';\nimport { EnergyEfficiencyStack } from 'src/modules/common/components/EnergyEfficiencyStack';\nimport { EnergySavingsUnit } from 'src/modules/common/components/EnergySavingsUnit';\nimport { SavingsValue } from 'src/modules/common/components/SavingsValue';\nimport { SavingTileCard } from 'src/modules/common/components/SavingTileCard';\nimport { sub } from 'src/modules/common/constants/formattingHelpers';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { FanIcon } from 'src/modules/common/icons/FanIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { OutputTitle } from 'src/modules/output/views/OutputTitle';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageSavings = ({ language, document, formData }: Props): React.ReactElement => (\n \n \n
    \n
    \n \n \n \n
    \n\n {(formData.savings.showOverallEfficiency || formData.savings.showPerAreaEfficiency) && (\n
    \n {formData.savings.showPotentialSavings && (\n
    \n
    \n \n
    \n\n
    \n }\n icon={}\n amountTitle={}\n amount={(\n \n )}\n unit={}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n \n\n \n )}\n icon={}\n amountTitle={(\n \n )}\n amount={(\n \n )}\n unit={}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n \n\n \n }\n icon={\n \n }\n amountTitle={}\n amount={(\n \n )}\n unit={}\n small={true}\n >\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n\n
    \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    \n )}\n\n
    \n {formData.savings.showOverallEfficiency && (\n
    \n
    \n \n
    \n\n \n
    \n \n\n \n
    \n\n
    \n \n\n \n
    \n
    \n
    \n )}\n\n {formData.savings.showPerAreaEfficiency && (\n
    \n
    \n \n
    \n\n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n \n
    \n\n \n
    \n\n
    \n \n\n
    \n \n
    \n\n \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n\n \n
    \n\n
    \n \n\n
    \n \n
    \n\n \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n\n \n
    \n\n
    \n \n\n
    \n \n
    \n\n \n
    \n
    \n
    \n
    \n )}\n\n {formData.savings.showPotentialSavings && (\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n )}\n
    \n
    \n )}\n
    \n
    \n \n);\n\nconst a = (children: React.ReactNode): React.ReactElement => {children};\nconst b = (children: React.ReactNode): React.ReactElement => {children};\n","import './ReportDocumentPageSchema.scss';\nimport { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { CoolingIcon } from 'src/modules/common/icons/CoolingIcon';\nimport { FanIcon } from 'src/modules/common/icons/FanIcon';\nimport { HeatingIcon } from 'src/modules/common/icons/HeatingIcon';\nimport { OutputDocumentPage } from 'src/modules/output/views/OutputDocumentPage';\nimport { OutputPage } from 'src/modules/output/views/OutputPage';\nimport { OutputTitle } from 'src/modules/output/views/OutputTitle';\nimport { ReportFormData } from 'src/modules/report/types/ReportFormData';\nimport { ReportGenerated } from 'src/modules/report/types/ReportGenerated';\nimport { ReportDocumentPageSchemaCanvas } from 'src/modules/report/views/document/ReportDocumentPageSchemaCanvas';\nimport { Language } from 'src/types/common/Language';\n\ntype Props = {\n readonly language: Language;\n readonly area: SchemaArea;\n readonly document: ReportGenerated;\n readonly formData: ReportFormData;\n};\n\nexport const ReportDocumentPageSchema = ({ language, area, document, formData }: Props): React.ReactElement | null => {\n const currentSchema = document.schema[area];\n if (!currentSchema) {\n return null;\n }\n\n const { showZoomedIn, showComments } = formData.schema[area];\n const matrix = showZoomedIn\n ? currentSchema.matrix\n : MATRIX_IDENTITY;\n\n return (\n \n \n
    \n
    \n \n {AREA_TITLES[area]}\n \n
    \n\n
    \n
    \n
    \n {AREA_ICONS[area]}\n
    \n\n \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n\n {currentSchema.future && (\n
    \n
    \n
    \n {AREA_ICONS[area]}\n
    \n\n \n
    \n\n
    \n
    \n \n
    \n
    \n\n
    \n )}\n\n {showComments && currentSchema.comment.length > 0 && (\n <>\n
    \n\n
    \n
    \n \n
    \n\n
    \n {currentSchema.comment}\n
    \n
    \n \n )}\n
    \n \n \n );\n};\n\nconst SECTION_ORDER = {\n [SchemaArea.HEATING]: 6_000,\n [SchemaArea.COOLING]: 7_000,\n [SchemaArea.VENTILATION]: 8_000,\n};\n\nconst AREA_TITLES = {\n [SchemaArea.HEATING]: ,\n [SchemaArea.COOLING]: ,\n [SchemaArea.VENTILATION]: ,\n};\n\nconst AREA_ICONS = {\n [SchemaArea.HEATING]: ,\n [SchemaArea.COOLING]: ,\n [SchemaArea.VENTILATION]: ,\n};\n","import './ReportDocumentPageSchemaCanvas.scss';\nimport { Matrix } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { SvgFile } from 'src/modules/common/components/SvgFile';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport {\n SCHEMA_CONTAINER_SIZE,\n} from 'src/modules/schema/constants/schema';\nimport { SchemaContainer } from 'src/modules/schema/types/SchemaContainer';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { SchemaVersion } from 'src/modules/schema/types/SchemaVersion';\nimport { SchemaDeviceView } from 'src/modules/schema/views/canvas/SchemaDeviceView';\n\ntype Props = {\n readonly schema: ConfigSchema;\n readonly version: SchemaVersion;\n readonly matrix: Matrix;\n};\n\nexport const ReportDocumentPageSchemaCanvas = ({ schema, version, matrix }: Props): React.ReactElement => {\n const transformLine = [\n matrix.a.toFixed(5),\n matrix.b.toFixed(5),\n matrix.c.toFixed(5),\n matrix.d.toFixed(5),\n matrix.e.toFixed(5),\n matrix.f.toFixed(5),\n ].join(' ');\n\n return (\n \n \n \n {version.assignments.map((assignment) => assignment.selection && (\n \n ))}\n \n \n );\n};\n\ntype DeviceProps = {\n readonly container: SchemaContainer;\n readonly selection: SchemaDevice;\n};\n\nconst DeviceShape = ({ container, selection }: DeviceProps): React.ReactElement => {\n const position = {\n x: container.position.x,\n y: container.position.y,\n };\n\n return (\n \n \n \n \n );\n};\n","import { Location } from 'src/modules/routing/types/Location';\nimport { TransitionTarget } from 'src/modules/routing/types/TransitionTarget';\nimport { createActions } from 'src/utils/createActions';\n\ntype RouteChangeRequestData = {\n readonly location: Location;\n};\n\nexport const ROUTE_CHANGE = createActions('ROUTE_CHANGE');\n","import { hideLoadingIndicator, showLoadingIndicator } from 'src/modules/loader/sagas/utils/loadingIndicator';\nimport { errorTransitionHandling } from 'src/modules/routing/hooks/errorTransitionHandling';\nimport { errorTransitionLogging } from 'src/modules/routing/hooks/errorTransitionLogging';\nimport { createGlobalTransitionLoggingSaga } from 'src/modules/routing/hooks/globalTransitionLogging';\nimport { ErrorHook } from 'src/modules/routing/types/ErrorHook';\nimport { TransitionHook } from 'src/modules/routing/types/TransitionHook';\nimport { scrollRestore } from 'src/modules/scroll/utils/scrollRestore';\n\nexport const ROUTING_PRE_HOOKS: ReadonlyArray = [\n createGlobalTransitionLoggingSaga('Starting transition'),\n showLoadingIndicator.bind(null, 'routing-transition'),\n];\n\nexport const ROUTING_POST_HOOKS: ReadonlyArray = [\n createGlobalTransitionLoggingSaga('Finishing transition'),\n hideLoadingIndicator.bind(null, 'routing-transition'),\n scrollRestore,\n];\n\nexport const ROUTING_ERROR_HOOKS: ReadonlyArray = [\n errorTransitionLogging,\n errorTransitionHandling,\n hideLoadingIndicator.bind(null, 'routing-transition'),\n];\n","import { ROUTING_ADMIN_STATES } from 'src/modules/routing/states/AdminStates';\nimport { ROUTING_HOME_STATES } from 'src/modules/routing/states/HomeStates';\nimport { ROUTING_LAYOUT_STATES } from 'src/modules/routing/states/LayoutStates';\nimport { ROUTING_LOGIN_STATES } from 'src/modules/routing/states/LoginStates';\nimport { ROUTING_ORGANIZATION_STATES } from 'src/modules/routing/states/OrganizationStates';\nimport { ROUTING_PROFILE_STATE } from 'src/modules/routing/states/ProfileState';\nimport { ROUTING_PROJECT_STATES } from 'src/modules/routing/states/ProjectStates';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\n\nexport const ROUTING_STATES: ReadonlyArray = [\n ...ROUTING_LAYOUT_STATES,\n ...ROUTING_LOGIN_STATES,\n ...ROUTING_HOME_STATES,\n ...ROUTING_PROJECT_STATES,\n ...ROUTING_ADMIN_STATES,\n ...ROUTING_PROFILE_STATE,\n ...ROUTING_ORGANIZATION_STATES,\n];\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { ErrorPage } from 'src/modules/error/pages/ErrorPage';\nimport { getRoutingState } from 'src/modules/routing/selectors/getRoutingState';\nimport { RouterLoader } from 'src/modules/routing/views/RouterLoader';\n\ntype Props = {\n readonly children: React.ReactElement;\n};\n\nexport const Initialization = ({ children }: Props): React.ReactElement => {\n const routing = useSelector(getRoutingState);\n\n if (routing.transitionError) {\n return ;\n }\n if (routing.currentState) {\n return children;\n }\n\n return ;\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Switch } from 'react-router';\nimport { getCurrentLocation } from 'src/modules/routing/selectors/getCurrentLocation';\n\ntype Props = {\n readonly children: React.ReactNode;\n};\n\nexport const RouteSwitch = ({ children }: Props): React.ReactElement | null => {\n const location = useSelector(getCurrentLocation);\n\n return location\n ? {children}\n : null;\n};\n","import { RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { Location } from 'src/modules/routing/types/Location';\n\nexport class RouteNotFoundError extends RuntimeError {\n public constructor(\n public readonly location: Location,\n ) {\n super(`Route \"${location.pathname}\" not found`, { location });\n }\n\n public get name(): string {\n return 'RouteNotFoundError';\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { TransitionHook } from 'src/modules/routing/types/TransitionHook';\nimport { delay } from 'typed-redux-saga';\n\nexport function emulateTransitionDelay(firstDuration: number, enterDuration: number): TransitionHook {\n return function* saga(transition): SagaIterator {\n const duration = transition.from === null\n ? firstDuration\n : enterDuration;\n yield* delay(duration);\n };\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { CancelledError } from 'src/errors/CancelledError';\nimport { restoreCurrentUrl } from 'src/modules/routing/sagas/restoreCurrentUrl';\nimport { call, cancel } from 'typed-redux-saga';\n\nexport function* cancelledErrorHandler(error: BaseError): SagaIterator {\n if (!(error instanceof CancelledError)) {\n return;\n }\n\n yield* call(restoreCurrentUrl);\n yield* cancel();\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { isHttpError } from 'src/modules/api/utils/isHttpError';\nimport { cancel, put } from 'typed-redux-saga';\n\nexport function* unauthorizedErrorHandler(error: BaseError): SagaIterator {\n if (!isHttpError(error, 401)) {\n return;\n }\n\n yield* put(replace('/login'));\n yield* cancel();\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { call } from 'typed-redux-saga';\n\nexport function* unknownErrorHandler(error: BaseError): SagaIterator {\n yield* call(sentryCatch, error);\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { cancelledErrorHandler } from 'src/modules/routing/hooks/errorHandlers/cancelledErrorHandler';\nimport { unauthorizedErrorHandler } from 'src/modules/routing/hooks/errorHandlers/unauthorizedErrorHandler';\nimport { unknownErrorHandler } from 'src/modules/routing/hooks/errorHandlers/unknownErrorHandler';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { call } from 'typed-redux-saga';\n\nexport function* errorTransitionHandling(transition: Transition, error: BaseError): SagaIterator {\n yield* call(unauthorizedErrorHandler, error);\n yield* call(cancelledErrorHandler, error);\n yield* call(unknownErrorHandler, error);\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logError } from 'src/sagas/utils/logging';\nimport { call } from 'typed-redux-saga';\n\nexport function* errorTransitionLogging(transition: Transition, error: BaseError): SagaIterator {\n yield* call(logError, 'ROUTER. Transition failed', { transition, error });\n}\n","import { SagaIterator } from 'redux-saga';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { TransitionHook } from 'src/modules/routing/types/TransitionHook';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call } from 'typed-redux-saga';\n\nexport function createGlobalTransitionLoggingSaga(stage: string): TransitionHook {\n return function* saga(transition: Transition): SagaIterator {\n yield* call(logDebug, `ROUTER. ${stage}`, { transition });\n };\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_LIST_ABORT } from 'src/modules/project-list/actions/ProjectListActions';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* abortProjectList(): SagaIterator {\n yield* call(logDebug, 'Aborting project list operations...');\n yield* put(PROJECT_LIST_ABORT.trigger());\n yield* call(logDebug, 'Aborting project list operations... done');\n}\n","import { SagaIterator } from 'redux-saga';\nimport { WHOAMI_ACTION } from 'src/modules/login/actions/WhoAmIAction';\nimport { loadUser } from 'src/modules/login/sagas/utils/loadUser';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* authenticate(): SagaIterator {\n try {\n yield* call(logDebug, 'Performing authentication...');\n\n const user = yield* call(loadUser);\n\n yield* call(logDebug, 'Performing authentication... done', { user });\n yield* put(WHOAMI_ACTION.trigger(user));\n } catch (error) {\n yield* call(logError, 'Performing authentication... error', { error });\n throw error;\n }\n}\n","import { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { getIsAuthenticated } from 'src/modules/login/selectors/getIsAuthenticated';\nimport { cancel, put, select } from 'typed-redux-saga';\n\nexport function* checkIsAuthenticated(): SagaIterator {\n const isAuthenticated = yield* select(getIsAuthenticated);\n if (!isAuthenticated) {\n yield* put(replace('/login'));\n yield* cancel();\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { WHOAMI_ACTION } from 'src/modules/login/actions/WhoAmIAction';\nimport { performLogout } from 'src/modules/login/sagas/utils/performLogout';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call, delay, put } from 'typed-redux-saga';\n\nexport function* destroySession(): SagaIterator {\n try {\n yield* call(logDebug, 'Logging out...');\n\n yield* delay(100);\n yield* call(performLogout);\n\n yield* call(logDebug, 'Logging out... done');\n yield* put(WHOAMI_ACTION.trigger(null));\n } catch (error) {\n yield* call(logDebug, 'Logging out... error', error);\n yield* put(WHOAMI_ACTION.trigger(null));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { PASSWORD_RESET_TOKEN } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { validateRecoveryToken } from 'src/modules/password-reset/sagas/utils/validateRecoveryToken';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* fetchPasswordResetToken(transition: Transition): SagaIterator {\n const params = new URLSearchParams(transition.to.location.search);\n const token = params.get('token') ?? '';\n\n try {\n yield* call(logDebug, 'Checking password reset token...');\n\n yield* call(validateRecoveryToken, token);\n\n yield* call(logDebug, 'Checking password reset token... done');\n yield* put(PASSWORD_RESET_TOKEN.trigger(token));\n } catch (error) {\n yield* call(sentryCatch, error);\n yield* call(logError, 'Checking password reset token... error');\n yield* put(PASSWORD_RESET_TOKEN.trigger(null));\n }\n}\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { loadProject } from 'src/modules/common/sagas/utils/loadProject';\nimport { PROJECT_VIEW_FETCH } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertDecode } from 'src/utils/assert';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* fetchProjectDetails(transition: Transition, match: RouteMatch): SagaIterator {\n const id = assertDecode(\n match.params.id,\n UUID,\n 'Missing \"id\" route parameter',\n { transition, match },\n );\n\n try {\n yield* call(logDebug, `Fetching project \"${id}\" details...`);\n\n const project = yield* call(loadProject, id);\n const data = { project };\n\n yield* put(PROJECT_VIEW_FETCH.trigger(data, id));\n yield* call(logDebug, `Fetching project \"${id}\" details... done`, data);\n } catch (error) {\n yield* call(logError, `Fetching project \"${id}\" details... error`, error);\n throw error;\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_LIST_FETCH } from 'src/modules/project-list/actions/ProjectListActions';\nimport { loadProjectList } from 'src/modules/project-list/sagas/utils/loadProjectList';\nimport { loadProjectListViewMode } from 'src/modules/project-list/sagas/utils/loadProjectListViewMode';\nimport { saveProjectListViewMode } from 'src/modules/project-list/sagas/utils/saveProjectListViewMode';\nimport { ProjectListData } from 'src/modules/project-list/types/ProjectListData';\nimport { parseProjectListQuery } from 'src/modules/project-list/utils/query';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* fetchProjectList(transition: Transition): SagaIterator {\n const viewMode = yield* call(loadProjectListViewMode);\n const params = new URLSearchParams(transition.to.location.search);\n const query = yield* call(parseProjectListQuery, params, viewMode);\n\n try {\n yield* call(logDebug, 'Fetching project list...', query);\n\n const projects = yield* call(loadProjectList, query);\n const data: ProjectListData = { projects, query };\n\n // store selected view mode if overriden by URL\n yield* call(saveProjectListViewMode, query.view);\n\n yield* put(PROJECT_LIST_FETCH.trigger(data));\n yield* call(logDebug, 'Fetching project list... done', data);\n } catch (error) {\n yield* call(logError, 'Fetching project list... error', error);\n throw error;\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { USERS_LIST_FETCH } from 'src/modules/users/actions/UsersActions';\nimport { loadUsersList } from 'src/modules/users/sagas/utils/loadUsersList';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* fetchUsersList(): SagaIterator {\n try {\n yield* call(logDebug, 'Fetching users list...');\n\n const data = yield* call(loadUsersList);\n\n yield* put(USERS_LIST_FETCH.trigger(data));\n yield* call(logDebug, 'Fetching users list... done', data);\n } catch (error) {\n yield* call(logError, 'Fetching users list... error', error);\n throw error;\n }\n}\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrGet } from 'src/io/utils/decodeOrGet';\nimport { getConfigSchemas } from 'src/modules/config/selectors/getConfigSchemas';\nimport { SCHEMA_SELECTIONSTATE_FETCH } from 'src/modules/schema/actions/SchemaActions';\nimport {\n MULTIPLE_SCHEMA_FILTER_FORM,\n MULTIPLE_SCHEMA_PRESELECTED_CODEC,\n} from 'src/modules/schema/codecs/MultipleSchemaForm';\nimport { DEFAULT_MULTIPLE_FILTER_FORM_DATA } from 'src/modules/schema/constants/filterFormData';\nimport { FILTER_FORM_SELECTED, SCHEMA_PRESELECTED } from 'src/modules/schema/constants/localStorageKeys';\nimport { PRESELECTED_SCHEMA_DATA } from 'src/modules/schema/constants/schema';\nimport {\n MultipleSchemaFilterForm,\n MultipleSchemaPreselectedData,\n} from 'src/modules/schema/types/SchemaSelectionState';\nimport { filterSchemas } from 'src/modules/schema/utils/filter';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { storageGet } from 'src/sagas/utils/storage';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* loadSchemaSelectionState(): SagaIterator {\n try {\n yield* call(logDebug, 'Loading schema selection filter state...');\n\n const storedSchemaFilter = yield* call(storageGet, FILTER_FORM_SELECTED);\n\n const schemaSelection: MultipleSchemaFilterForm = yield* call(\n decodeOrGet,\n MULTIPLE_SCHEMA_FILTER_FORM,\n storedSchemaFilter,\n DEFAULT_MULTIPLE_FILTER_FORM_DATA,\n );\n\n const storedSchemaSelected = yield* call(storageGet, SCHEMA_PRESELECTED);\n\n const schemaSelected: MultipleSchemaPreselectedData = yield* call(\n decodeOrGet,\n MULTIPLE_SCHEMA_PRESELECTED_CODEC,\n storedSchemaSelected,\n PRESELECTED_SCHEMA_DATA,\n );\n\n const allCurrentSchemas = yield* select(getConfigSchemas);\n\n const checkedPreselectedSchema = Object.values(SchemaArea)\n .reduce((acc: MultipleSchemaPreselectedData, key: SchemaArea): MultipleSchemaPreselectedData => {\n const schemaSelectedArea = schemaSelected[key];\n const schemaSelectionArea = schemaSelection[key];\n\n if (!schemaSelectedArea || !schemaSelectionArea) {\n return {\n ...acc,\n [key]: null,\n };\n }\n const filteredSchemas = filterSchemas(allCurrentSchemas, schemaSelectionArea);\n\n const isExist = filteredSchemas.some((schema) => schema.id === schemaSelectedArea.id);\n\n return isExist ? {\n ...acc,\n [key]: schemaSelectedArea,\n } : {\n ...acc,\n [key]: null,\n };\n }, PRESELECTED_SCHEMA_DATA);\n\n yield* put(SCHEMA_SELECTIONSTATE_FETCH.trigger({\n filter: schemaSelection ?? DEFAULT_MULTIPLE_FILTER_FORM_DATA,\n schemaSelected: checkedPreselectedSchema,\n }));\n\n yield* call(logDebug, 'Loading schema selection filter state... done', schemaSelection);\n } catch (error) {\n yield* call(logError, 'Loading schema selection filter... error', error);\n throw error;\n }\n}\n","import { replace } from 'connected-react-router';\nimport { LocationDescriptorObject } from 'history';\nimport { RouteHook } from 'src/modules/routing/types/RouteHook';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call, cancel, put } from 'typed-redux-saga';\n\nexport function redirectTo(location: LocationDescriptorObject): RouteHook {\n return function* goto() {\n yield* call(logDebug, 'ROUTER. Redirecting to', location);\n yield* put(replace(location));\n yield* cancel();\n };\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PASSWORD_RESET_TOKEN } from 'src/modules/password-reset/actions/PasswordResetActions';\nimport { put } from 'typed-redux-saga';\n\nexport function* resetPasswordResetToken(): SagaIterator {\n yield* put(PASSWORD_RESET_TOKEN.trigger(null));\n}\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { PROJECT_VIEW_RESET } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { assertDecode, assertNotEmpty } from 'src/utils/assert';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* resetProjectDetails(transition: Transition, match: RouteMatch): SagaIterator {\n const id = assertDecode(\n match.params.id,\n UUID,\n 'Missing \"id\" route parameter',\n { transition, match },\n );\n\n yield* call(logDebug, `Resetting project \"${id}\" details...`);\n yield* put(PROJECT_VIEW_RESET.trigger(undefined, id));\n yield* call(logDebug, `Resetting project \"${id}\" details... done`);\n}\n","import { SagaIterator } from 'redux-saga';\nimport { PROJECT_LIST_RESET } from 'src/modules/project-list/actions/ProjectListActions';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* resetProjectList(): SagaIterator {\n yield* call(logDebug, 'Resetting project list...');\n yield* put(PROJECT_LIST_RESET.trigger());\n yield* call(logDebug, 'Resetting project list... done');\n}\n","import { SagaIterator } from 'redux-saga';\nimport { USERS_LIST_RESET } from 'src/modules/users/actions/UsersActions';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* resetUsersList(): SagaIterator {\n yield* call(logDebug, 'Resetting users list...');\n yield* put(USERS_LIST_RESET.trigger());\n yield* call(logDebug, 'Resetting users list... done');\n}\n","import { SagaIterator } from 'redux-saga';\nimport { MODAL_PROJECT_ERROR_CLOSE, MODAL_PROJECT_ERROR_OPEN } from 'src/modules/modals/actions/ModalActions';\nimport { PROJECT_SYNC_RESET } from 'src/modules/project-sync/actions/ProjectSyncActions';\nimport { forceProjectSynchronization } from 'src/modules/project-sync/sagas/utils/forceProjectSynchronization';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { call, put, select, take } from 'typed-redux-saga';\n\nexport function* syncProjectDetails(): SagaIterator {\n const project = yield* select(getProjectDetails);\n\n try {\n yield* call(forceProjectSynchronization, project);\n } catch (error) {\n yield* put(MODAL_PROJECT_ERROR_OPEN.trigger(project));\n yield* take(MODAL_PROJECT_ERROR_CLOSE.is);\n\n // reset current synchronization status\n yield* put(PROJECT_SYNC_RESET.trigger());\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { MODAL_USER_ERROR_CLOSE, MODAL_USER_ERROR_OPEN } from 'src/modules/modals/actions/ModalActions';\nimport { USER_SYNC_RESET } from 'src/modules/users/actions/UserActions';\nimport { forceUserSynchronization } from 'src/modules/users/sagas/utils/forceUserSynchronization';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { call, put, select, take } from 'typed-redux-saga';\n\nexport function* syncUser(): SagaIterator {\n const userSnapshots = yield* select(getUsersListData);\n const userSnapshotsToSync = userSnapshots.filter((userSnapshot) => userSnapshot.action !== null);\n\n try {\n yield* call(forceUserSynchronization, userSnapshotsToSync);\n } catch (error) {\n yield* put(MODAL_USER_ERROR_OPEN.trigger(userSnapshotsToSync));\n yield* take(MODAL_USER_ERROR_CLOSE.is);\n\n // reset current synchronization status\n yield* put(USER_SYNC_RESET.trigger());\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { RouteHook } from 'src/modules/routing/types/RouteHook';\nimport { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { logDebug } from 'src/sagas/utils/logging';\nimport { call } from 'typed-redux-saga';\n\nexport function createStateTransitionLoggingSaga(stage: string): RouteHook {\n return function* saga(transition: Transition, match: RouteMatch): SagaIterator {\n yield* call(logDebug, `ROUTER. ${stage}: ${match.state.name}`, { match, transition });\n };\n}\n","import { Action } from 'redux';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { RoutingState } from 'src/modules/routing/types/RoutingState';\n\nexport function routeChangeReducer(\n state: RoutingState,\n action: Action,\n): RoutingState {\n if (ROUTE_CHANGE.isPending(action)) {\n return {\n ...state,\n isTransitioning: true,\n };\n }\n\n if (ROUTE_CHANGE.isSuccess(action)) {\n return {\n ...state,\n isTransitioning: false,\n currentState: action.data,\n transitionError: null,\n };\n }\n\n if (ROUTE_CHANGE.isFailure(action)) {\n return {\n ...state,\n isTransitioning: false,\n transitionError: action.data,\n };\n }\n\n return state;\n}\n","import { routeChangeReducer } from 'src/modules/routing/reducers/routeChangeReducer';\nimport { RoutingState } from 'src/modules/routing/types/RoutingState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: RoutingState = {\n isTransitioning: false,\n currentState: null,\n transitionError: null,\n};\n\nexport const routingReducer = chainReducers(defaultState, [\n routeChangeReducer,\n]);\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { ROUTING_ERROR_HOOKS } from 'src/modules/routing/constants/RoutingHooks';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { call } from 'typed-redux-saga';\n\nexport function* handleTransitionError(transition: Transition, error: BaseError): SagaIterator {\n for (const errorHook of ROUTING_ERROR_HOOKS) {\n yield* call(errorHook, transition, error);\n }\n}\n","import { LocationChangeAction } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { getIsRoutingBlocked } from 'src/modules/routing/selectors/getIsRoutingBlocked';\nimport { put, select } from 'typed-redux-saga';\n\nexport function* locationChangeSaga({ payload: { location } }: LocationChangeAction): SagaIterator {\n const isBlocked = yield* select(getIsRoutingBlocked);\n if (isBlocked) {\n return;\n }\n\n yield* put(ROUTE_CHANGE.request({ location }));\n}\n","import { SagaIterator } from 'redux-saga';\nimport { ROUTING_PRE_HOOKS, ROUTING_POST_HOOKS } from 'src/modules/routing/constants/RoutingHooks';\nimport { Transition } from 'src/modules/routing/types/Transition';\nimport { getStatesToEnter, getStatesToLeave, getStatesToRetain } from 'src/modules/routing/utils/transitionUtils';\nimport { call } from 'typed-redux-saga';\n\nexport function* performPreTransition(transition: Transition): SagaIterator {\n for (const preHook of ROUTING_PRE_HOOKS) {\n yield* call(preHook, transition);\n }\n\n const statesToLeave = yield* call(\n getStatesToLeave,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToLeave) {\n if (state.state.onLeaving) {\n yield* call(state.state.onLeaving, transition, state);\n }\n }\n\n const statesToRetain = yield* call(\n getStatesToRetain,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToRetain) {\n if (state.state.onRetaining) {\n yield* call(state.state.onRetaining, transition, state);\n }\n }\n\n const statesToEnter = yield* call(\n getStatesToEnter,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToEnter) {\n if (state.state.onEntering) {\n yield* call(state.state.onEntering, transition, state);\n }\n }\n}\n\nexport function* performPostTransition(transition: Transition): SagaIterator {\n const statesToLeave = yield* call(\n getStatesToLeave,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToLeave) {\n if (state.state.onLeft) {\n yield* call(state.state.onLeft, transition, state);\n }\n }\n\n const statesToRetain = yield* call(\n getStatesToRetain,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToRetain) {\n if (state.state.onRetained) {\n yield* call(state.state.onRetained, transition, state);\n }\n }\n\n const statesToEnter = yield* call(\n getStatesToEnter,\n transition.to.match,\n transition.from?.match ?? null,\n );\n for (const state of statesToEnter) {\n if (state.state.onEntered) {\n yield* call(state.state.onEntered, transition, state);\n }\n }\n\n for (const postHook of ROUTING_POST_HOOKS) {\n yield* call(postHook, transition);\n }\n}\n","import { replace } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { getCurrentLocation } from 'src/modules/routing/selectors/getCurrentLocation';\nimport { put, select } from 'typed-redux-saga';\n\nexport function* restoreCurrentUrl(): SagaIterator {\n const location = yield* select(getCurrentLocation);\n yield* put(location ? replace(location) : replace('/'));\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { ROUTING_STATES } from 'src/modules/routing/constants/RoutingStates';\nimport { RouteNotFoundError } from 'src/modules/routing/errors/RouteNotFoundError';\nimport { handleTransitionError } from 'src/modules/routing/sagas/handleTransitionError';\nimport { performPostTransition, performPreTransition } from 'src/modules/routing/sagas/performTransition';\nimport { getCurrentState } from 'src/modules/routing/selectors/getCurrentState';\nimport { TransitionTarget } from 'src/modules/routing/types/TransitionTarget';\nimport { createTransitionUid } from 'src/modules/routing/utils/createTransitionUid';\nimport { matchState } from 'src/modules/routing/utils/matchState';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* routeChangeSaga(\n { data: { location } }: GetRequestActionType,\n): SagaIterator {\n const match = yield* call(matchState, ROUTING_STATES, location.pathname);\n if (!match) {\n yield* put(ROUTE_CHANGE.failure(new RouteNotFoundError(location)));\n return;\n }\n\n const from = yield* select(getCurrentState);\n const to: TransitionTarget = {\n uid: yield* call(createTransitionUid),\n match: match,\n location: location,\n };\n\n try {\n yield* put(ROUTE_CHANGE.pending());\n yield* call(performPreTransition, { to, from });\n yield* put(ROUTE_CHANGE.success(to));\n yield* call(performPostTransition, { to, from });\n } catch (error) {\n const wrapped = NativeError.wrap(error);\n\n yield* call(handleTransitionError, { to, from }, wrapped);\n yield* put(ROUTE_CHANGE.failure(wrapped));\n }\n}\n","import { LOCATION_CHANGE } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { locationChangeSaga } from 'src/modules/routing/sagas/locationChangeSaga';\nimport { routeChangeSaga } from 'src/modules/routing/sagas/routeChangeSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* routingSaga(): SagaIterator {\n yield* takeLatest(LOCATION_CHANGE, locationChangeSaga);\n yield* takeLatest(ROUTE_CHANGE.isRequest, routeChangeSaga);\n}\n","import { createSelector } from 'reselect';\nimport { getCurrentState } from 'src/modules/routing/selectors/getCurrentState';\n\nexport const getCurrentLocation = createSelector([\n getCurrentState,\n], (state) => state?.location ?? null);\n","import { createSelector } from 'reselect';\nimport { getCurrentState } from 'src/modules/routing/selectors/getCurrentState';\n\nexport const getCurrentMatch = createSelector([\n getCurrentState,\n], (state) => state?.match ?? null);\n","import { createSelector } from 'reselect';\nimport { getRoutingState } from 'src/modules/routing/selectors/getRoutingState';\n\nexport const getCurrentState = createSelector([\n getRoutingState,\n], (state) => state.currentState);\n","import { RootState } from 'src/types/RootState';\n\nexport function getIsRoutingBlocked(state: RootState): boolean {\n return state.modals.length > 0;\n}\n","import { RoutingState } from 'src/modules/routing/types/RoutingState';\nimport { RootState } from 'src/types/RootState';\n\nexport const getRoutingState = (state: RootState): RoutingState => state.routing;\n","import { emulateTransitionDelay } from 'src/modules/routing/hooks/emulateTransitionDelay';\nimport { fetchUsersList } from 'src/modules/routing/hooks/resolvers/fetchUsersList';\nimport { resetUsersList } from 'src/modules/routing/hooks/resolvers/resetUsersList';\nimport { syncUser } from 'src/modules/routing/hooks/resolvers/syncUser';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_ADMIN_STATES: ReadonlyArray = [\n {\n url: '/admin/users',\n name: 'bp:admin:users',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n fetchUsersList,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncUser,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n fetchUsersList,\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n resetUsersList,\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { redirectTo } from 'src/modules/routing/hooks/resolvers/redirectTo';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_HOME_STATES: ReadonlyArray = [\n {\n url: '/',\n name: 'bp:home',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n redirectTo({ pathname: '/projects' }),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { fetchAnnouncements } from 'src/modules/announcements/sagas/fetchAnnouncements';\nimport { emulateTransitionDelay } from 'src/modules/routing/hooks/emulateTransitionDelay';\nimport { authenticate } from 'src/modules/routing/hooks/resolvers/authenticate';\nimport { checkIsAuthenticated } from 'src/modules/routing/hooks/resolvers/checkIsAuthenticated';\nimport { destroySession } from 'src/modules/routing/hooks/resolvers/destroySession';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_LAYOUT_STATES: ReadonlyArray = [\n {\n url: '',\n name: 'bp:global',\n parent: null,\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '',\n name: 'bp:anonymous',\n parent: 'bp:global',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 500),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n destroySession,\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '',\n name: 'bp:authorized',\n parent: 'bp:global',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(300, 300),\n authenticate,\n fetchAnnouncements,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n checkIsAuthenticated,\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { fetchPasswordResetToken } from 'src/modules/routing/hooks/resolvers/fetchPasswordResetToken';\nimport { resetPasswordResetToken } from 'src/modules/routing/hooks/resolvers/resetPasswordResetToken';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_LOGIN_STATES: ReadonlyArray = [\n {\n url: '/login',\n name: 'bp:login',\n parent: 'bp:anonymous',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '/password/forgot',\n name: 'bp:password:forgot',\n parent: 'bp:anonymous',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '/password/reset',\n name: 'bp:password:reset',\n parent: 'bp:anonymous',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n fetchPasswordResetToken,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n fetchPasswordResetToken,\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n resetPasswordResetToken,\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '/password/setup',\n name: 'bp:password:setup',\n parent: 'bp:anonymous',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n fetchPasswordResetToken,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n fetchPasswordResetToken,\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n resetPasswordResetToken,\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { emulateTransitionDelay } from 'src/modules/routing/hooks/emulateTransitionDelay';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_ORGANIZATION_STATES: ReadonlyArray = [\n {\n url: '/admin/organization',\n name: 'bp:admin:organization',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { emulateTransitionDelay } from 'src/modules/routing/hooks/emulateTransitionDelay';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_PROFILE_STATE: ReadonlyArray = [\n {\n url: '/profile',\n name: 'bp:profile',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { emulateTransitionDelay } from 'src/modules/routing/hooks/emulateTransitionDelay';\nimport { abortProjectList } from 'src/modules/routing/hooks/resolvers/abortProjectList';\nimport { fetchProjectDetails } from 'src/modules/routing/hooks/resolvers/fetchProjectDetails';\nimport { fetchProjectList } from 'src/modules/routing/hooks/resolvers/fetchProjectList';\nimport { loadSchemaSelectionState } from 'src/modules/routing/hooks/resolvers/loadSchemaSelectionState';\nimport { resetProjectDetails } from 'src/modules/routing/hooks/resolvers/resetProjectDetails';\nimport { resetProjectList } from 'src/modules/routing/hooks/resolvers/resetProjectList';\nimport { syncProjectDetails } from 'src/modules/routing/hooks/resolvers/syncProjectDetails';\nimport { createStateTransitionLoggingSaga } from 'src/modules/routing/hooks/stateTransitionLogging';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { composeSagas } from 'src/modules/routing/utils/composeSagas';\n\nexport const ROUTING_PROJECT_STATES: ReadonlyArray = [\n {\n url: '/projects',\n name: 'bp:project:list',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n fetchProjectList,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n abortProjectList,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n abortProjectList,\n fetchProjectList,\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n resetProjectList,\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n abortProjectList,\n ),\n },\n {\n url: '/project/:id([-a-f0-9]+)',\n name: 'bp:project:view',\n parent: 'bp:authorized',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n fetchProjectDetails,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n resetProjectDetails,\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '',\n name: 'bp:project:basedata',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncProjectDetails,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n {\n url: '/hvac',\n name: 'bp:project:hvac',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 200),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncProjectDetails,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n\n {\n url: '/schema',\n name: 'bp:project:schema',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n loadSchemaSelectionState,\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncProjectDetails,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n\n {\n url: '/evaluation',\n name: 'bp:project:evaluation',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncProjectDetails,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n\n {\n url: '/report',\n name: 'bp:project:report',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n syncProjectDetails,\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n\n {\n url: '/report/document',\n name: 'bp:project:report-document',\n parent: 'bp:project:view',\n\n onEntering: composeSagas(\n createStateTransitionLoggingSaga('Entering'),\n emulateTransitionDelay(0, 300),\n ),\n onLeaving: composeSagas(\n createStateTransitionLoggingSaga('Leaving'),\n ),\n onRetaining: composeSagas(\n createStateTransitionLoggingSaga('Retaining'),\n ),\n\n onEntered: composeSagas(\n createStateTransitionLoggingSaga('Entered'),\n ),\n onLeft: composeSagas(\n createStateTransitionLoggingSaga('Left'),\n ),\n onRetained: composeSagas(\n createStateTransitionLoggingSaga('Retained'),\n ),\n },\n];\n","import { SagaIterator } from 'redux-saga';\nimport { call } from 'typed-redux-saga';\n\ntype SagaFactory = (...args: TArgs) => SagaIterator;\n\nexport function composeSagas(\n ...sagas: ReadonlyArray>\n): SagaFactory {\n return function* chain(...args: TArgs): SagaIterator {\n for (const saga of sagas) {\n yield* call(saga, ...args);\n }\n };\n}\n","import { SagaIterator } from 'redux-saga';\nimport { call } from 'typed-redux-saga';\n\nexport function* createTransitionUid(): SagaIterator {\n const n = yield* call(Math.random);\n return n.toString(36).substring(2);\n}\n","import { matchPath } from 'react-router';\nimport { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { RouteState } from 'src/modules/routing/types/RouteState';\nimport { assertNotNull } from 'src/utils/assert';\n\ntype StateTreeItem = {\n readonly url: string;\n readonly state: RouteState;\n readonly parent: StateTreeItem | null;\n};\n\nexport function matchState(\n states: ReadonlyArray,\n pathname: string,\n): RouteMatch | null {\n const stateTree = createStateTree(states, null);\n for (const statePath of stateTree) {\n const stateMatch = matchPath(pathname, { path: statePath.url, strict: true, sensitive: true, exact: true });\n if (!stateMatch) {\n continue;\n }\n\n return statePathToMatch(statePath, pathname);\n }\n\n return null;\n}\n\nfunction statePathToMatch(\n statePath: StateTreeItem,\n pathname: string,\n): RouteMatch {\n const stateMatch = assertNotNull(\n matchPath(pathname, { path: statePath.url, strict: true, sensitive: true, exact: false }),\n `Invalid route state \"${statePath.state.name}\" configuration`,\n { statePath, pathname },\n );\n\n return {\n state: statePath.state,\n params: stateMatch.params,\n parent: statePath.parent\n ? statePathToMatch(statePath.parent, pathname)\n : null,\n };\n}\n\nfunction createStateTree(\n states: ReadonlyArray,\n parent: StateTreeItem | null,\n): StateTreeItem[] {\n const parentName = parent\n ? parent.state.name\n : null;\n\n return states\n .filter((state) => state.parent === parentName)\n .reduce((result: StateTreeItem[], state: RouteState) => {\n const treeItem: StateTreeItem = {\n state: state,\n parent: parent,\n url: parent\n ? parent.url + state.url\n : state.url,\n };\n\n const children = createStateTree(states, treeItem);\n return children.length\n ? [...children, ...result]\n : [treeItem, ...result];\n }, []);\n}\n","import { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { RouteParams } from 'src/modules/routing/types/RouteParams';\n\nexport function isMatchEqual(match1: RouteMatch, match2: RouteMatch): boolean {\n return (\n match1.state.name === match2.state.name &&\n isParamsEqual(match1.params, match2.params)\n );\n}\n\nexport function isMatchContain(possibleAncestor: RouteMatch, match: RouteMatch): boolean {\n if (isMatchEqual(possibleAncestor, match)) {\n return true;\n }\n\n return possibleAncestor.parent\n ? isMatchContain(possibleAncestor.parent, match)\n : false;\n}\n\nfunction isParamsEqual(\n params1: RouteParams,\n params2: RouteParams,\n): boolean {\n const aKeys = Object.keys(params1);\n const bKeys = Object.keys(params2);\n\n return (\n aKeys.length === bKeys.length &&\n aKeys.every((key) => params1[key] === params2[key])\n );\n}\n","import { CallHistoryMethodAction } from 'connected-react-router';\nimport { SagaIterator } from 'redux-saga';\nimport { ROUTE_CHANGE } from 'src/modules/routing/actions/RouteChange';\nimport { put, take } from 'typed-redux-saga';\n\nexport function* navigate(\n action: CallHistoryMethodAction,\n): SagaIterator {\n yield* put(action);\n\n const result = yield* take([\n ROUTE_CHANGE.isSuccess,\n ROUTE_CHANGE.isFailure,\n ]);\n if (ROUTE_CHANGE.isFailure(result)) {\n throw result.data;\n }\n}\n","import { RouteMatch } from 'src/modules/routing/types/RouteMatch';\nimport { isMatchContain } from 'src/modules/routing/utils/matchUtils';\n\nexport function getStatesToLeave(to: RouteMatch, from: RouteMatch | null): RouteMatch[] {\n if (!from) {\n return [];\n }\n\n if (isMatchContain(to, from)) {\n return [];\n }\n\n return [from, ...getStatesToLeave(to, from.parent)];\n}\n\nexport function getStatesToEnter(to: RouteMatch, from: RouteMatch | null): RouteMatch[] {\n if (!from) {\n return getEnterPath(to);\n }\n\n if (isMatchContain(from, to)) {\n return [];\n }\n\n return to.parent\n ? [...getStatesToEnter(to.parent, from), to]\n : [to];\n}\n\nexport function getStatesToRetain(to: RouteMatch, from: RouteMatch | null): RouteMatch[] {\n if (!from) {\n return [];\n }\n\n if (isMatchContain(from, to)) {\n return getEnterPath(to);\n }\n\n return to.parent\n ? getStatesToRetain(to.parent, from)\n : [];\n}\n\nfunction getEnterPath(match: RouteMatch): RouteMatch[] {\n return match.parent\n ? [...getEnterPath(match.parent), match]\n : [match];\n}\n","import './RouterLoader.scss';\nimport { Loading } from '@carbon/react';\nimport React from 'react';\n\nexport const RouterLoader = (): React.ReactElement => (\n
    \n \n
    \n);\n","import { Matrix, SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport {\n MultipleSchemaFilterForm,\n MultipleSchemaPreselectedData,\n SchemaSelectedData,\n SchemaSelectionData,\n} from 'src/modules/schema/types/SchemaSelectionState';\nimport { SchemaVersion } from 'src/modules/schema/types/SchemaVersion';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const SCHEMA_TEMPLATE_SELECT =\n createTrigger('SCHEMA_TEMPLATE_SELECT');\n\nexport const SCHEMA_VERSION_CREATE =\n createTrigger('SCHEMA_VERSION_CREATE');\n\nexport const SCHEMA_VERSION_CHANGE =\n createTrigger('SCHEMA_VERSION_CHANGE');\n\nexport const SCHEMA_VERSION_REMOVE =\n createTrigger('SCHEMA_VERSION_REMOVE');\n\nexport const SCHEMA_COMMENT_CHANGE =\n createTrigger('SCHEMA_COMMENT_CHANGE');\n\nexport const SCHEMA_SELECTIONSTATE_FETCH = createTrigger('SCHEMA_SELECTIONSTATE_FETCH');\n\nexport const SCHEMA_SELECTION_FILTER_CHANGE = createActions<\nSchemaFilterForm,\nMultipleSchemaFilterForm,\nSchemaArea\n>('SCHEMA_SELECTION_FILTER_CHANGE');\n\nexport const PRESELECTED_SCHEMA_CHANGE = createActions<\nSchemaSelectedData | null,\nMultipleSchemaPreselectedData,\nSchemaArea\n>('PRESELECTED_CHEMA_CHANGE');\n\nexport const SCHEMA_MATRIX_CHANGE = createTrigger('SCHEMA_MATRIX_CHANGE');\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { CHANGE_OVER_LEVEL, DIFFERENT_TEMPERATURE_LEVEL, WATER_TO_AIR } from 'src/modules/config/codecs/ConfigSchema';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport {\n MultipleSchemaFilterForm,\n MultipleSchemaPreselectedData,\n SchemaSelectedData,\n} from 'src/modules/schema/types/SchemaSelectionState';\n\nexport const SCHEMA_FILTER_FORM: C.Codec = C.struct({\n waterToAir: C.nullable(WATER_TO_AIR),\n changeOverLevel: C.nullable(CHANGE_OVER_LEVEL),\n differentTemperatureLevel: C.nullable(DIFFERENT_TEMPERATURE_LEVEL),\n});\n\nexport const SCHEMA_PRESELECTED_CODEC: C.Codec = C.struct({\n id: C.string,\n});\n\nexport const MULTIPLE_SCHEMA_FILTER_FORM: C.Codec = C.struct({\n [SchemaArea.HEATING]: SCHEMA_FILTER_FORM,\n [SchemaArea.COOLING]: SCHEMA_FILTER_FORM,\n [SchemaArea.VENTILATION]: SCHEMA_FILTER_FORM,\n});\n\nexport const MULTIPLE_SCHEMA_PRESELECTED_CODEC: C.Codec = C.struct({\n [SchemaArea.HEATING]: C.nullable(SCHEMA_PRESELECTED_CODEC),\n [SchemaArea.COOLING]: C.nullable(SCHEMA_PRESELECTED_CODEC),\n [SchemaArea.VENTILATION]: C.nullable(SCHEMA_PRESELECTED_CODEC),\n});\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport { MultipleSchemaFilterForm } from 'src/modules/schema/types/SchemaSelectionState';\n\nexport const DEFAULT_FILTER_FORM_DATA: SchemaFilterForm = {\n waterToAir: null,\n changeOverLevel: null,\n differentTemperatureLevel: null,\n};\n\nexport const DEFAULT_MULTIPLE_FILTER_FORM_DATA: MultipleSchemaFilterForm = {\n [SchemaArea.HEATING]: DEFAULT_FILTER_FORM_DATA,\n [SchemaArea.COOLING]: DEFAULT_FILTER_FORM_DATA,\n [SchemaArea.VENTILATION]: DEFAULT_FILTER_FORM_DATA,\n};\n","export const SCHEMA_PRESELECTED = 'MULTIPLE_SCHEMA_PRESELECTED';\nexport const FILTER_FORM_SELECTED = 'MULTIPLE_FILTER_FORM_SELECTED';\n","import { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { MultipleSchemaMatrix } from 'src/modules/schema/types/MultipleSchemaMatrix';\n\nexport const DEFAULT_MULTIPLE_SCHEMA_MATRIX: MultipleSchemaMatrix = {\n [SchemaArea.HEATING]: MATRIX_IDENTITY,\n [SchemaArea.COOLING]: MATRIX_IDENTITY,\n [SchemaArea.VENTILATION]: MATRIX_IDENTITY,\n};\n","import { DeviceType } from 'src/modules/common/types/DeviceType';\n\nexport const DEVICE_OPTIONS = [\n DeviceType.THROTTLING_CIRCUIT,\n DeviceType.DIVERTING_CIRCUIT,\n DeviceType.INJECTION_CIRCUIT,\n DeviceType.MIXING_CIRCUIT,\n DeviceType.BYPASS,\n DeviceType.PUMP,\n DeviceType.ACTIVE_OR_PASSIVE_CIRCUIT,\n DeviceType.SPECIFIC_CIRCUIT,\n DeviceType.CHANGEOVER,\n];\n","import { ProjectSchema, SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { ThermalEnergy } from 'src/modules/common/types/ThermalEnergy';\nimport { MultipleSchemaPreselectedData, SchemaSelectedData } from 'src/modules/schema/types/SchemaSelectionState';\n\nexport const SCHEMA_CONTAINER_SIZE = {\n x: 100,\n y: 100,\n};\n\nexport const DEFAULT_PROJECT_SCHEMA_DATA: ProjectSchema = {\n [SchemaArea.HEATING]: null,\n [SchemaArea.COOLING]: null,\n [SchemaArea.VENTILATION]: null,\n};\n\nexport const SCHEMA_AREA_MAP: Record = {\n [ThermalEnergy.HEATING]: SchemaArea.HEATING,\n [ThermalEnergy.COOLING]: SchemaArea.COOLING,\n [ThermalEnergy.MIXED]: SchemaArea.HEATING, // TODO: ?!\n};\n\nexport const DEFAULT_MULTIPLE_PRESELECTED_DATA: Record = {\n [SchemaArea.HEATING]: null,\n [SchemaArea.COOLING]: null,\n [SchemaArea.VENTILATION]: null,\n};\n\nexport const PRESELECTED_SCHEMA_DATA: MultipleSchemaPreselectedData = {\n [SchemaArea.HEATING]: null,\n [SchemaArea.COOLING]: null,\n [SchemaArea.VENTILATION]: null,\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { useParametricSelector } from 'src/hooks/useParametricSelector';\nimport { ProjectToolbar } from 'src/modules/common/components/ProjectToolbar';\nimport { AppLayout } from 'src/modules/common/layouts/AppLayout';\nimport { getConfigSchemas } from 'src/modules/config/selectors/getConfigSchemas';\nimport { getHvacAssesmentFormData } from 'src/modules/hvac/selectors/getHvacAssesmentFormData';\nimport { PROJECT_VIEW_SHARE } from 'src/modules/project-view/actions/ProjectViewActions';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport {\n PRESELECTED_SCHEMA_CHANGE,\n SCHEMA_COMMENT_CHANGE,\n SCHEMA_MATRIX_CHANGE,\n SCHEMA_SELECTION_FILTER_CHANGE,\n SCHEMA_TEMPLATE_SELECT,\n SCHEMA_VERSION_CHANGE,\n SCHEMA_VERSION_CREATE,\n SCHEMA_VERSION_REMOVE,\n} from 'src/modules/schema/actions/SchemaActions';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { getSchemaMatrix } from 'src/modules/schema/selectors/getSchemaMatrix';\nimport { getSchemaPreselected, getSchemaSelectionFilter } from 'src/modules/schema/selectors/getSchemaSelectionState';\nimport { MultipleSchemasScreen } from 'src/modules/schema/views/MultipleSchemasScreen';\nimport { ShareProject } from 'src/modules/sharing-projects/containers/ShareProject';\n\nexport const SchemaPage = (): React.ReactElement => {\n const intl = useIntl();\n\n const project = useSelector(getProjectDetails);\n const hvacAssessmentFormData = useParametricSelector(getHvacAssesmentFormData, project);\n const schemas = useParametricSelector(getSchemaFormData, project);\n const multipleSchemasMatrix = useParametricSelector(getSchemaMatrix, project);\n const allConfigschemas = useSelector(getConfigSchemas);\n\n const storedFilterFormValue = useSelector(getSchemaSelectionFilter);\n const storedPreselectedSchema = useSelector(getSchemaPreselected);\n\n const selectTemplate = useAction(SCHEMA_TEMPLATE_SELECT.trigger);\n\n const createVersion = useAction(SCHEMA_VERSION_CREATE.trigger);\n const changeVersion = useAction(SCHEMA_VERSION_CHANGE.trigger);\n const removeVersion = useAction(SCHEMA_VERSION_REMOVE.trigger);\n\n const syncSchemaMatrix = useAction(SCHEMA_MATRIX_CHANGE.trigger);\n const savePreselectedSchema = useAction(PRESELECTED_SCHEMA_CHANGE.request);\n const saveSchemaFilter = useAction(SCHEMA_SELECTION_FILTER_CHANGE.request);\n\n const changeSchemaAreaComment = useAction(SCHEMA_COMMENT_CHANGE.trigger);\n\n const shareProject = useBoundAction(PROJECT_VIEW_SHARE.trigger, project);\n\n return (\n <>\n \n \n {intl.formatMessage({ id: 'schema/pageTitle' })}\n \n \n\n \n \n\n \n \n\n \n \n );\n};\n","import { DEFAULT_MULTIPLE_FILTER_FORM_DATA } from 'src/modules/schema/constants/filterFormData';\nimport { DEFAULT_MULTIPLE_PRESELECTED_DATA } from 'src/modules/schema/constants/schema';\nimport { schemaSelectionReducer } from 'src/modules/schema/reducers/schemaSelectionReducer';\nimport { SchemaSelectionState } from 'src/modules/schema/types/SchemaSelectionState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: SchemaSelectionState = {\n data: {\n filter: DEFAULT_MULTIPLE_FILTER_FORM_DATA,\n schemaSelected: DEFAULT_MULTIPLE_PRESELECTED_DATA,\n },\n};\n\nexport const schemaReducer = chainReducers(defaultState, [\n schemaSelectionReducer,\n]);\n","import { Action } from 'redux';\nimport {\n PRESELECTED_SCHEMA_CHANGE,\n SCHEMA_SELECTIONSTATE_FETCH,\n SCHEMA_SELECTION_FILTER_CHANGE,\n} from 'src/modules/schema/actions/SchemaActions';\nimport { SchemaSelectionState } from 'src/modules/schema/types/SchemaSelectionState';\n\nexport function schemaSelectionReducer(state: SchemaSelectionState, action: Action): SchemaSelectionState {\n if (SCHEMA_SELECTIONSTATE_FETCH.is(action)) {\n return {\n ...state,\n data: action.data,\n };\n }\n\n if (SCHEMA_SELECTION_FILTER_CHANGE.isSuccess(action)) {\n return {\n ...state,\n data: {\n ...state.data,\n filter: action.data,\n },\n };\n }\n\n if (PRESELECTED_SCHEMA_CHANGE.isSuccess(action)) {\n return {\n ...state,\n data: {\n ...state.data,\n schemaSelected: action.data,\n },\n };\n }\n\n return state;\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { PRESELECTED_SCHEMA_CHANGE } from 'src/modules/schema/actions/SchemaActions';\nimport { savePreselectedSchema } from 'src/modules/schema/sagas/savePreselectedSchema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* preselectedSchemaChangeSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const { data, meta: area } = action;\n try {\n yield* call(logDebug, 'Save preselected schema...');\n yield* put(PRESELECTED_SCHEMA_CHANGE.pending(area));\n\n const saved = yield* call(savePreselectedSchema, data, area);\n\n yield* call(logDebug, 'Save preselected schema... done');\n\n yield* put(PRESELECTED_SCHEMA_CHANGE.success(saved, area));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Save preselected schema... error', { error });\n yield* put(PRESELECTED_SCHEMA_CHANGE.failure(NativeError.wrap(error), area));\n }\n}\n","import { NativeError, RuntimeError, SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { MULTIPLE_SCHEMA_PRESELECTED_CODEC } from 'src/modules/schema/codecs/MultipleSchemaForm';\nimport { SCHEMA_PRESELECTED } from 'src/modules/schema/constants/localStorageKeys';\nimport { getSchemaPreselected } from 'src/modules/schema/selectors/getSchemaSelectionState';\nimport { MultipleSchemaPreselectedData, SchemaSelectedData } from 'src/modules/schema/types/SchemaSelectionState';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { storageSet } from 'src/sagas/utils/storage';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* savePreselectedSchema(\n data: SchemaSelectedData | null,\n area: SchemaArea,\n): SagaIterator {\n const previous = yield* select(getSchemaPreselected);\n\n try {\n yield* call(logDebug, 'Saving preselected schema...', data);\n\n const modified: MultipleSchemaPreselectedData = {\n ...previous,\n [area]: data,\n };\n\n const stored = yield* call(MULTIPLE_SCHEMA_PRESELECTED_CODEC.encode, modified);\n yield* call(storageSet, SCHEMA_PRESELECTED, stored);\n\n yield* call(logDebug, 'Saving preselected schema... done', data);\n return modified;\n } catch (error) {\n const wrapped = new RuntimeError('Could not save preselected schema', { data }, NativeError.wrap(error));\n\n yield* call(logError, 'Saving preselected schema... error', error);\n yield* call(sentryCatch, wrapped);\n throw wrapped;\n }\n}\n","import { NativeError, RuntimeError, SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { MULTIPLE_SCHEMA_FILTER_FORM } from 'src/modules/schema/codecs/MultipleSchemaForm';\nimport { FILTER_FORM_SELECTED } from 'src/modules/schema/constants/localStorageKeys';\nimport { getSchemaSelectionFilter } from 'src/modules/schema/selectors/getSchemaSelectionState';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport { MultipleSchemaFilterForm } from 'src/modules/schema/types/SchemaSelectionState';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { storageSet } from 'src/sagas/utils/storage';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* saveSchemaSelection(\n data: SchemaFilterForm,\n area: SchemaArea,\n): SagaIterator {\n const previous = yield* select(getSchemaSelectionFilter);\n\n try {\n yield* call(logDebug, 'Saving schema selection...', data);\n\n const modified: MultipleSchemaFilterForm = {\n ...previous,\n [area]: data,\n };\n\n const stored = yield* call(MULTIPLE_SCHEMA_FILTER_FORM.encode, modified);\n yield* call(storageSet, FILTER_FORM_SELECTED, stored);\n\n yield* call(logDebug, 'Saving schema selection... done', data);\n\n return modified;\n } catch (error) {\n const wrapped = new RuntimeError('Could not save schema selection', { data }, NativeError.wrap(error));\n\n yield* call(logError, 'Saving schema selection... error', error);\n yield* call(sentryCatch, wrapped);\n throw wrapped;\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_COMMENT_CHANGE } from 'src/modules/schema/actions/SchemaActions';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { mapSchemaFormDataToProject } from 'src/modules/schema/utils/mapSchema';\nimport { resolveReportSchemaSelection } from 'src/modules/schema/utils/resolveReportSchemaSelection';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaAreaCommentChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const comment = action.data;\n const area = action.meta;\n\n try {\n yield* call(logDebug, 'Saving schema area comment...', comment);\n\n const previous = yield* select(getProjectDetails);\n\n const previousProjectSchemaArea = assertNotNull(\n previous.data.schema[area],\n 'Could not find schema to change',\n );\n\n const previousSchema = yield* select(getSchemaFormData, previous);\n\n const previousSchemaArea = assertNotNull(\n previousSchema[area],\n 'Could not find schema to change',\n );\n\n const modifiedSchema: SchemaFormData = {\n ...previousSchemaArea,\n comment,\n };\n\n const schemaSelectionResult = yield* call(mapSchemaFormDataToProject, modifiedSchema);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: {\n ...schemaSelectionResult,\n matrix: previousProjectSchemaArea.matrix,\n },\n },\n },\n };\n\n const modifiedReportProjectData = yield* call(resolveReportSchemaSelection, previous.data, modified.data, area);\n\n const modifiedReportProject: Project = {\n ...previous,\n data: modifiedReportProjectData,\n };\n\n const reloaded = yield* call(syncProjectBackground, modifiedReportProject);\n yield* call(logDebug, 'Saving schema area comment... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save schema area comment', { comment }, NativeError.wrap(error));\n yield* call(logError, 'Saving schema area comment... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_MATRIX_CHANGE } from 'src/modules/schema/actions/SchemaActions';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaMatrixChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const matrix = action.data;\n const area = action.meta;\n\n try {\n yield* call(logDebug, 'Saving schema matrix...', matrix);\n\n const previous = yield* select(getProjectDetails);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: {\n ...previous.data.schema[area],\n matrix,\n },\n },\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n\n yield* call(logDebug, 'Saving schema matrix... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save schema version', { matrix }, NativeError.wrap(error));\n yield* call(logError, 'Saving schema version... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport {\n PRESELECTED_SCHEMA_CHANGE,\n SCHEMA_COMMENT_CHANGE,\n SCHEMA_MATRIX_CHANGE,\n SCHEMA_SELECTION_FILTER_CHANGE,\n SCHEMA_TEMPLATE_SELECT,\n SCHEMA_VERSION_CHANGE,\n SCHEMA_VERSION_CREATE,\n SCHEMA_VERSION_REMOVE,\n} from 'src/modules/schema/actions/SchemaActions';\nimport { preselectedSchemaChangeSaga } from 'src/modules/schema/sagas/preselectedSchemaChangeSaga';\nimport { schemaAreaCommentChangeSaga } from 'src/modules/schema/sagas/schemaAreaCommentChangeSaga';\nimport { schemaMatrixChangeSaga } from 'src/modules/schema/sagas/schemaMatrixChangeSaga';\nimport { schemaSelectionChangeSaga } from 'src/modules/schema/sagas/schemaSelectionChangeSaga';\nimport { schemaTemplateSelectSaga } from 'src/modules/schema/sagas/schemaTemplateSelectSaga';\nimport { schemaVersionChangeSaga } from 'src/modules/schema/sagas/schemaVersionChangeSaga';\nimport { schemaVersionCreateSaga } from 'src/modules/schema/sagas/schemaVersionCreateSaga';\nimport { schemaVersionRemoveSaga } from 'src/modules/schema/sagas/schemaVersionRemoveSaga';\nimport { takeLatest } from 'typed-redux-saga';\n\nexport function* schemaSaga(): SagaIterator {\n yield* takeLatest(SCHEMA_TEMPLATE_SELECT.is, schemaTemplateSelectSaga);\n yield* takeLatest(SCHEMA_VERSION_CREATE.is, schemaVersionCreateSaga);\n yield* takeLatest(SCHEMA_VERSION_CHANGE.is, schemaVersionChangeSaga);\n yield* takeLatest(SCHEMA_VERSION_REMOVE.is, schemaVersionRemoveSaga);\n\n yield* takeLatest(SCHEMA_COMMENT_CHANGE.is, schemaAreaCommentChangeSaga);\n\n yield* takeLatest(SCHEMA_SELECTION_FILTER_CHANGE.isRequest, schemaSelectionChangeSaga);\n yield* takeLatest(PRESELECTED_SCHEMA_CHANGE.isRequest, preselectedSchemaChangeSaga);\n\n yield* takeLatest(SCHEMA_MATRIX_CHANGE.is, schemaMatrixChangeSaga);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { SCHEMA_SELECTION_FILTER_CHANGE } from 'src/modules/schema/actions/SchemaActions';\nimport { saveSchemaSelection } from 'src/modules/schema/sagas/saveSchemaSelection';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* schemaSelectionChangeSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const { data, meta: area } = action;\n try {\n yield* call(logDebug, 'Save preselected schema...');\n yield* put(SCHEMA_SELECTION_FILTER_CHANGE.pending(area));\n\n const saved = yield* call(saveSchemaSelection, data, area);\n\n yield* call(logDebug, 'Save preselected schema... done');\n\n yield* put(SCHEMA_SELECTION_FILTER_CHANGE.success(saved, area));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Save preselected schema... error', { error });\n yield* put(SCHEMA_SELECTION_FILTER_CHANGE.failure(NativeError.wrap(error), area));\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_TEMPLATE_SELECT } from 'src/modules/schema/actions/SchemaActions';\nimport { SCHEMA_AREA_MAP } from 'src/modules/schema/constants/schema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaTemplateSelectSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const schema = action.data;\n\n try {\n yield* call(logDebug, 'Saving schema template...', schema);\n const { id, thermal_energy: thermalEnergy } = schema;\n const area = SCHEMA_AREA_MAP[thermalEnergy];\n\n const previous = yield* select(getProjectDetails);\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: {\n schema: id,\n comment: '',\n actual: {\n assignments: {},\n },\n future: [],\n matrix: MATRIX_IDENTITY,\n },\n },\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n yield* call(logDebug, 'Saving schema template... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save schema template', { schema }, NativeError.wrap(error));\n yield* call(logError, 'Saving schema template... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_VERSION_CREATE } from 'src/modules/schema/actions/SchemaActions';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { mapSchemaFormDataToProject } from 'src/modules/schema/utils/mapSchema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaVersionChangeSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const version = action.data;\n const area = action.meta;\n\n try {\n yield* call(logDebug, 'Saving schema version...', version);\n\n const previous = yield* select(getProjectDetails);\n\n const previousProjectSchemaArea = assertNotNull(\n previous.data.schema[area],\n 'Could not find schema to change',\n );\n\n const previousSchema = yield* select(getSchemaFormData, previous);\n\n const previousSchemaArea = assertNotNull(\n previousSchema[area],\n 'Could not find schema to change',\n );\n\n const modifiedSchema: SchemaFormData = {\n ...previousSchemaArea,\n actual: version.type === 'actual'\n ? version\n : previousSchemaArea.actual,\n future: version.type === 'future'\n ? previousSchemaArea.future.map((it) => (it.number === version.number ? version : it))\n : previousSchemaArea.future,\n };\n\n const schemaSelectionResult = yield* call(mapSchemaFormDataToProject, modifiedSchema);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: {\n ...schemaSelectionResult,\n matrix: previousProjectSchemaArea.matrix,\n },\n },\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modified);\n yield* call(logDebug, 'Saving schema version... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not save schema version', { version }, NativeError.wrap(error));\n yield* call(logError, 'Saving schema version... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_VERSION_CREATE } from 'src/modules/schema/actions/SchemaActions';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { getReportPreselectedFutureVersion } from 'src/modules/schema/utils/getReportPreselectedFutureVersion';\nimport { mapSchemaFormDataToProject } from 'src/modules/schema/utils/mapSchema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaVersionCreateSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const version = action.data;\n const area = action.meta;\n\n try {\n yield* call(logDebug, 'Creating schema version...', version);\n\n const previous = yield* select(getProjectDetails);\n\n const previousProjectSchemaArea = assertNotNull(\n previous.data.schema[area],\n 'Could not find schema to change',\n );\n\n const previousSchema = yield* select(getSchemaFormData, previous);\n\n const previousSchemaArea = assertNotNull(\n previousSchema[area],\n 'Could not find schema to change',\n );\n\n const modifiedSchemaNumber = previousSchemaArea.future\n .reduce((maxId, future) => Math.max(maxId, future.number), 0) + 1;\n\n const modifiedSchema: SchemaFormData = {\n ...previousSchemaArea,\n future: previousSchemaArea.future.concat({\n type: 'future',\n number: modifiedSchemaNumber,\n assignments: version.assignments,\n }),\n };\n\n const schemaSelectionResult = yield* call(mapSchemaFormDataToProject, modifiedSchema);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: {\n ...schemaSelectionResult,\n matrix: previousProjectSchemaArea.matrix,\n },\n },\n },\n };\n\n const updatedReport = yield* call(\n getReportPreselectedFutureVersion,\n previous.data,\n modified.data,\n area,\n );\n\n const modifiedWithReport: Project = {\n ...modified,\n data: {\n ...modified.data,\n report: updatedReport,\n },\n };\n\n yield* call(\n showNotification,\n {\n type: 'done',\n variant: 'success',\n messageId: 'schema/versionCreate/success',\n messageValue: { schemaNumber: modifiedSchemaNumber },\n },\n );\n\n const reloaded = yield* call(syncProjectBackground, modifiedWithReport);\n\n yield* call(logDebug, 'Creating schema version... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not create schema version', { version }, NativeError.wrap(error));\n yield* call(logError, 'Creating schema version... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { Project } from 'src/modules/common/types/Project';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { syncProjectBackground } from 'src/modules/project-sync/sagas/utils/syncProjectBackground';\nimport { getProjectDetails } from 'src/modules/project-view/selectors/getProjectDetails';\nimport { SCHEMA_VERSION_CREATE } from 'src/modules/schema/actions/SchemaActions';\nimport { getSchemaFormData } from 'src/modules/schema/selectors/getSchemaFormData';\nimport { SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { getReportPreselectedFutureVersion } from 'src/modules/schema/utils/getReportPreselectedFutureVersion';\nimport { mapSchemaFormDataToProject } from 'src/modules/schema/utils/mapSchema';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { assertNotNull } from 'src/utils/assert';\nimport { GetTriggerActionType } from 'src/utils/createTrigger';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* schemaVersionRemoveSaga(\n action: GetTriggerActionType,\n): SagaIterator {\n const version = action.data;\n const area = action.meta;\n\n try {\n yield* call(logDebug, 'Removing schema version...', version);\n\n const previous = yield* select(getProjectDetails);\n\n const previousProjectSchemaArea = assertNotNull(\n previous.data.schema[area],\n 'Could not find schema to change',\n );\n\n const previousSchema = yield* select(getSchemaFormData, previous);\n\n const previousSchemaArea = assertNotNull(\n previousSchema[area],\n 'Could not find schema to delete',\n );\n\n const modifiedSchema: SchemaFormData = {\n ...previousSchemaArea,\n future: version.type === 'future'\n ? previousSchemaArea.future.filter((it) => it.number !== version.number)\n : previousSchemaArea.future,\n };\n\n const schemaSelectionResult = yield* call(mapSchemaFormDataToProject, modifiedSchema);\n\n const modified: Project = {\n ...previous,\n data: {\n ...previous.data,\n schema: {\n ...previous.data.schema,\n [area]: version.type === 'actual'\n ? null\n : {\n ...schemaSelectionResult,\n matrix: previousProjectSchemaArea.matrix,\n },\n },\n },\n };\n\n const updatedReport = yield* call(\n getReportPreselectedFutureVersion,\n previous.data,\n modified.data,\n area,\n );\n\n const modifiedWithReport: Project = {\n ...modified,\n data: {\n ...modified.data,\n report: updatedReport,\n },\n };\n\n const reloaded = yield* call(syncProjectBackground, modifiedWithReport);\n yield* call(logDebug, 'Removing schema version... done', reloaded);\n } catch (error) {\n const wrapped = new RuntimeError('Could not remove schema version', { version }, NativeError.wrap(error));\n yield* call(logError, 'Removing schema version... error', error);\n\n yield* call(sentryCatch, wrapped);\n yield* call(showNotification, { variant: 'error', type: 'error' });\n }\n}\n","import { createSelector } from 'reselect';\nimport { getProjectLazy } from 'src/modules/common/selectors/getProjectLazy';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getProjectSchema = createSelector([\n getProjectLazy,\n], (project) => assertNotNull(\n project.data.schema,\n 'Project schema is not selected',\n { project },\n));\n","import { createSelector } from 'reselect';\nimport { getConfigData } from 'src/modules/config/selectors/getConfigData';\nimport { getProjectSchema } from 'src/modules/schema/selectors/getProjectSchema';\nimport { mapSchemaProjectToFormData } from 'src/modules/schema/utils/mapSchema';\n\nexport const getSchemaFormData = createSelector([\n getProjectSchema,\n getConfigData,\n], mapSchemaProjectToFormData);\n","import { createSelector } from 'reselect';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { DEFAULT_MULTIPLE_SCHEMA_MATRIX } from 'src/modules/schema/constants/multipleSchemaMatrix';\nimport { getProjectSchema } from 'src/modules/schema/selectors/getProjectSchema';\n\nexport const getSchemaMatrix = createSelector([getProjectSchema], (schema) => Object.entries(schema).reduce(\n (result, [area, s]) => {\n if (s === null) {\n return {\n ...result,\n [area]: MATRIX_IDENTITY,\n };\n }\n\n return {\n ...result,\n [area]: s.matrix,\n };\n },\n DEFAULT_MULTIPLE_SCHEMA_MATRIX,\n));\n","import { createSelector } from 'reselect';\nimport { SchemaSelectionState } from 'src/modules/schema/types/SchemaSelectionState';\nimport { RootState } from 'src/types/RootState';\n\nfunction getSchemaSelectionState(state: RootState): SchemaSelectionState {\n return state.schemaSelection;\n}\n\nexport const getSchemaSelectionFilter = createSelector([\n getSchemaSelectionState,\n], (state) => state.data.filter);\n\nexport const getSchemaPreselected = createSelector([\n getSchemaSelectionState,\n], (state) => state.data.schemaSelected);\n","import { fromEvent, NEVER, Observable } from 'rxjs';\nimport { filter, map, pairwise, switchMap, takeUntil, takeWhile, tap } from 'rxjs/operators';\nimport { SchemaEventCanvas } from 'src/modules/schema/types/SchemaEvent';\n\nexport function canvasGesture(\n element: Element,\n): Observable {\n const useGesture = (\n window.GestureEvent !== undefined &&\n window.TouchEvent === undefined\n );\n if (!useGesture) {\n // we are not using Safari on macOS\n return NEVER;\n }\n\n const start$ = fromEvent(element, 'gesturestart', {\n once: false,\n capture: false,\n passive: false,\n });\n const change$ = fromEvent(element, 'gesturechange', {\n once: false,\n capture: false,\n passive: false,\n });\n const stop$ = fromEvent(element, 'gestureend', {\n once: false,\n capture: false,\n passive: true,\n });\n\n return start$.pipe(\n filter((event) => event.cancelable),\n tap((event) => event.preventDefault()),\n switchMap(() => change$.pipe(\n takeUntil(stop$),\n takeWhile((event) => event.cancelable),\n tap((event) => event.preventDefault()),\n pairwise(),\n map(([prev, curr]): SchemaEventCanvas => ({\n type: 'zoom',\n mode: 'relative',\n delta: curr.scale / prev.scale,\n point: {\n x: curr.pageX,\n y: curr.pageY,\n },\n })),\n )),\n );\n}\n","import { fromEvent, merge, Observable } from 'rxjs';\nimport { filter, map, mergeAll, pairwise, scan, skipWhile, switchMap, takeUntil, takeWhile } from 'rxjs/operators';\nimport { SchemaEventCanvas } from 'src/modules/schema/types/SchemaEvent';\n\nconst menu$ = fromEvent(window, 'contextmenu', {\n once: false,\n capture: true,\n passive: true,\n});\n\nexport function canvasPointer(\n element: Element,\n): Observable {\n const down$ = fromEvent(element, 'pointerdown', {\n once: false,\n capture: false,\n passive: true,\n });\n const move$ = fromEvent(element, 'pointermove', {\n once: false,\n capture: false,\n passive: true,\n });\n const stop$ = merge(\n ...[\n 'pointerup',\n 'pointercancel',\n 'pointerleave',\n ].map((eventName) => fromEvent(element, eventName, {\n once: false,\n capture: false,\n passive: true,\n })),\n );\n\n return down$.pipe(\n filter((event) => event.isPrimary),\n switchMap((start) => {\n const initial: ReadonlyMap = new Map([[start.pointerId, start]]);\n\n return merge(stop$, down$, move$).pipe(\n takeUntil(menu$),\n scan((store, event) => {\n const next = new Map(store);\n if (event.type === 'pointermove' || event.type === 'pointerdown') {\n next.set(event.pointerId, event);\n } else {\n next.delete(event.pointerId);\n }\n return next;\n }, initial),\n takeWhile((store) => store.size > 0),\n skipWhile((store) => ignoreMove(store, start)),\n pairwise(),\n map(([prev, curr]) => handleMove(prev, curr)),\n mergeAll(),\n );\n }),\n );\n}\n\nfunction ignoreMove(\n currStore: ReadonlyMap,\n initPoint: PointerEvent,\n): boolean {\n if (currStore.size > 1) {\n return false;\n }\n\n const currPoint = currStore.get(initPoint.pointerId);\n if (!currPoint) {\n return false;\n }\n\n return (\n Math.abs(currPoint.pageX - initPoint.pageX) <= UNCERTAINTY_THRESHOLD &&\n Math.abs(currPoint.pageY - initPoint.pageY) <= UNCERTAINTY_THRESHOLD\n );\n}\n\nfunction handleMove(\n prevStore: ReadonlyMap,\n nextStore: ReadonlyMap,\n): SchemaEventCanvas[] {\n if (nextStore.size < prevStore.size) {\n return [];\n }\n\n const [nextA, nextB = null] = nextStore.values();\n const prevA = prevStore.get(nextA.pointerId);\n if (!prevA) {\n return [];\n }\n\n if (nextB === null) {\n return [{\n type: 'move',\n delta: {\n x: nextA.pageX - prevA.pageX,\n y: nextA.pageY - prevA.pageY,\n },\n }];\n }\n\n const prevB = prevStore.get(nextB.pointerId);\n if (!prevB) {\n return [];\n }\n\n const prevCenter = {\n x: (prevA.pageX + prevB.pageX) / 2,\n y: (prevA.pageY + prevB.pageY) / 2,\n };\n const nextCenter = {\n x: (nextA.pageX + nextB.pageX) / 2,\n y: (nextA.pageY + nextB.pageY) / 2,\n };\n\n const prevDistance = Math.hypot(\n prevA.pageX - prevB.pageX,\n prevA.pageY - prevB.pageY,\n );\n const nextDistance = Math.hypot(\n nextA.pageX - nextB.pageX,\n nextA.pageY - nextB.pageY,\n );\n\n return [{\n type: 'move',\n delta: {\n x: nextCenter.x - prevCenter.x,\n y: nextCenter.y - prevCenter.y,\n },\n }, {\n type: 'zoom',\n mode: 'relative',\n delta: nextDistance / prevDistance,\n point: nextCenter,\n }];\n}\n\nconst UNCERTAINTY_THRESHOLD = 3;\n","import { fromEvent, Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { SchemaEventCanvas } from 'src/modules/schema/types/SchemaEvent';\n\nexport function canvasWheel(\n element: Element,\n): Observable {\n const wheel$ = fromEvent(element, 'wheel', {\n once: false,\n capture: false,\n passive: false,\n });\n\n return wheel$.pipe(\n tap((event) => event.preventDefault()),\n map((event): SchemaEventCanvas => {\n if (!event.ctrlKey) {\n return {\n type: 'move',\n delta: {\n x: -event.deltaX,\n y: -event.deltaY,\n },\n };\n }\n\n const wheelDelta = Math.abs(getWheelDelta(event));\n const isMouseWheel = MOUSE_WHEEL_STEPS.has(wheelDelta) || MOUSE_WHEEL_STEPS.has(-wheelDelta);\n if (isMouseWheel) {\n return {\n type: 'zoom',\n mode: 'absolute',\n delta: -Math.sign(event.deltaY),\n point: {\n x: event.pageX,\n y: event.pageY,\n },\n };\n }\n\n return {\n type: 'zoom',\n mode: 'relative',\n delta: 1 - event.deltaY / 120,\n point: {\n x: event.pageX,\n y: event.pageY,\n },\n };\n }),\n );\n}\n\nfunction getWheelDelta(event: WheelEvent): number {\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n return event.deltaY * 60;\n }\n if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n return event.deltaY * 20;\n }\n\n return event.deltaY;\n}\n\nconst MOUSE_WHEEL_STEPS = new Set([\n 200,\n 160,\n 120,\n 100,\n 80,\n]);\n","import { ChangeOverLevel } from 'src/modules/common/types/ChangeOverLevel';\nimport { DifferentTemperatureLevel } from 'src/modules/common/types/DifferentTemperatureLevel';\nimport { WaterToAir } from 'src/modules/common/types/WaterToAir';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\n\nconst filterByWaterToAir = (\n value: WaterToAir | null,\n schema: ConfigSchema,\n): boolean => (\n value === null || schema.water_to_air === value\n);\n\nconst filterByChangeOverLevel = (\n value: ChangeOverLevel | null,\n schema: ConfigSchema,\n): boolean => (\n value === null || schema.change_over_level === value\n);\n\nconst filterByDifferentTemperatureLevel = (\n value: DifferentTemperatureLevel | null,\n schema: ConfigSchema,\n): boolean => (\n value === null || schema.different_temperature_level === value\n);\n\nexport const filterSchemas = (\n schemas: ReadonlyArray,\n filterFormValues: SchemaFilterForm,\n): ReadonlyArray => schemas.filter(\n (schema) => filterByWaterToAir(filterFormValues.waterToAir, schema) &&\n filterByChangeOverLevel(filterFormValues.changeOverLevel, schema) &&\n filterByDifferentTemperatureLevel(filterFormValues.differentTemperatureLevel, schema),\n\n);\n","import { ProjectData, ProjectReport, SchemaArea } from '@belimo-retrofit-portal/logic';\n\nexport function getReportPreselectedFutureVersion(\n prevProjectData: ProjectData,\n nextProjectData: ProjectData,\n area: SchemaArea,\n): ProjectReport {\n const futureSchemaFirstId = nextProjectData.schema[area]?.future[0]?.id ?? null;\n\n const previousReport = prevProjectData.report;\n const previousFutureVersionSelected = previousReport.schema[area].futureVersion;\n const previousFutureVersionFound = nextProjectData.schema[area]?.future\n .find((version) => version.id === previousFutureVersionSelected);\n\n const report: ProjectReport = {\n ...previousReport,\n schema: {\n ...previousReport.schema,\n [area]: {\n ...previousReport.schema[area],\n futureVersion: previousFutureVersionFound\n ? previousFutureVersionFound.id\n : futureSchemaFirstId,\n },\n },\n };\n\n return report;\n}\n","import {\n DeviceIdentifier,\n ProjectSchema,\n ProjectSchemaArea,\n ProjectSchemaAssignments,\n SchemaArea,\n} from '@belimo-retrofit-portal/logic';\nimport { ConfigData } from 'src/modules/config/types/ConfigData';\nimport { ConfigSchema, ConfigSchemaContainer } from 'src/modules/config/types/ConfigSchema';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaContainer } from 'src/modules/schema/types/SchemaContainer';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { MultipleSchemaFormData, SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { assertDefined } from 'src/utils/assert';\n\nexport function mapSchemaFormDataToProject(schema: SchemaFormData): Omit {\n return {\n schema: schema.schema.id,\n comment: schema.comment,\n actual: {\n assignments: mapAssignments(schema.actual.assignments),\n },\n future: schema.future.map((future) => ({\n id: future.number,\n assignments: mapAssignments(future.assignments),\n })),\n };\n\n function mapAssignments(assignments: ReadonlyArray): ProjectSchemaAssignments {\n const result: Record = {};\n for (const assignment of assignments) {\n if (assignment.selection) {\n result[assignment.container.id] = {\n deviceId: assignment.selection.device.id,\n valvePosition: assignment.selection.valvePosition,\n };\n }\n }\n\n return result;\n }\n}\n\nexport function mapSchemaProjectToFormData(schema: ProjectSchema, config: ConfigData): MultipleSchemaFormData {\n return {\n [SchemaArea.HEATING]: mapSchemaByArea(SchemaArea.HEATING),\n [SchemaArea.COOLING]: mapSchemaByArea(SchemaArea.COOLING),\n [SchemaArea.VENTILATION]: mapSchemaByArea(SchemaArea.VENTILATION),\n };\n\n function mapSchemaByArea(area: SchemaArea): SchemaFormData | null {\n const currentSchema = schema[area];\n if (!currentSchema) {\n return null;\n }\n\n const currentSchemaArea = assertDefined(\n config.schemas.find((configSchema) => configSchema.id === currentSchema.schema),\n `Schema template \"${currentSchema.schema}\" could not be found`,\n { schema, config },\n );\n\n return {\n schema: currentSchemaArea,\n comment: currentSchema.comment,\n actual: {\n type: 'actual',\n assignments: mapAssignments(currentSchema.actual.assignments, currentSchemaArea),\n },\n future: currentSchema.future.map((future) => ({\n type: 'future',\n number: future.id,\n assignments: mapAssignments(future.assignments, currentSchemaArea),\n })),\n };\n }\n\n function mapAssignments(assignments: ProjectSchemaAssignments, currentSchema: ConfigSchema): SchemaAssignment[] {\n return Object.entries(currentSchema.children).map(([id, child]) => {\n const container = mapContainer(id, child);\n const assignment = assignments[id];\n\n return {\n container: container,\n selection: assignment ? mapAssignment(container, assignment) : null,\n };\n });\n }\n\n function mapContainer(id: string, container: ConfigSchemaContainer): SchemaContainer {\n const configContainer = assertDefined(\n config.containers.find((it) => it.type === container.type),\n 'Could not find container configuration',\n { container, config },\n );\n\n return {\n id: id,\n type: container.type,\n\n name: configContainer.name,\n description: configContainer.description,\n\n position: {\n x: container.left,\n y: container.top,\n },\n devices: configContainer.children.map((device) => mapDevice(container, device)),\n };\n }\n\n function mapDevice(container: ConfigSchemaContainer, device: DeviceIdentifier): SchemaDevice {\n const configDevice = assertDefined(\n config.devices.find((it) => it.id === device.deviceId),\n 'Could not find device configuration',\n { container, device },\n );\n\n return {\n device: configDevice,\n orientation: container.orientation,\n valvePosition: device.valvePosition,\n flowDirection: container.flow_direction,\n thermalEnergy: container.termal_energy,\n };\n }\n\n function mapAssignment(container: SchemaContainer, assignment: DeviceIdentifier): SchemaDevice {\n const device = container.devices.find((it) => (\n it.device.id === assignment.deviceId &&\n it.valvePosition === assignment.valvePosition\n ));\n\n return assertDefined(\n device,\n 'Could not find assigned device',\n { assignment },\n );\n }\n}\n","import { ProjectData, SchemaArea } from '@belimo-retrofit-portal/logic';\n\nexport function resolveReportSchemaSelection(\n prevProjectData: ProjectData,\n nextProjectData: ProjectData,\n area: SchemaArea,\n): ProjectData {\n const isSchemaCommentArea = Boolean(nextProjectData.schema[area]?.comment.length);\n\n return {\n ...nextProjectData,\n report: {\n ...nextProjectData.report,\n schema: {\n ...nextProjectData.report.schema,\n [area]: {\n ...nextProjectData.report.schema[area],\n showComments: isSchemaCommentArea ? nextProjectData.report.schema[area].showComments : false,\n },\n },\n },\n };\n}\n","import { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { useForm } from '@form-ts/react';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { TextAreaField } from 'src/modules/form/components/TextAreaField';\nimport { FormError } from 'src/modules/form/types/FormError';\n\ntype Props = {\n readonly isOpen: boolean;\n readonly comment: string;\n readonly onSubmit: (comment: string) => void;\n readonly onClose: () => void;\n};\n\nexport const CommentVersionModal = (\n { isOpen, comment, onSubmit, onClose }: Props,\n): React.ReactElement => {\n const intl = useIntl();\n\n const form = useForm('schema.comment', {\n reinitialize: true,\n initialValues: comment || '',\n });\n\n const handleSubmit = useCallback(() => {\n onSubmit(form.currentState.values);\n onClose();\n }, [form, onSubmit, onClose]);\n\n return (\n \n }\n title={}\n />\n\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './DeleteVersionDialog.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { SchemaVersion } from 'src/modules/schema/types/SchemaVersion';\n\ntype Props = {\n readonly isOpen: boolean;\n readonly version: SchemaVersion;\n readonly onClose: () => void;\n readonly onConfirm: () => void;\n};\n\nexport const DeleteVersionDialog = ({ isOpen, onClose, onConfirm, version }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n \n\n \n
    \n \n {\n version.type === 'actual' ? (\n \n ) : (\n \n )\n }\n \n\n {version.type === 'actual' && (\n \n \n \n )}\n
    \n
    \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './MultipleSchemasScreen.scss';\nimport { Matrix, SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { Checkmark } from '@carbon/icons-react';\nimport { RadioButton, RadioButtonGroup } from '@carbon/react';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { BottomNavigationHelper } from 'src/modules/common/components/BottomNavigationHelper';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { CircleCheckFilledIcon } from 'src/modules/common/icons/CircleCheckFilledIcon';\nimport { CommentIcon } from 'src/modules/common/icons/CommentIcon';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { HvacFormAssessmentData } from 'src/modules/hvac/types/HvacFormData';\nimport { SCHEMA_AREA_MAP } from 'src/modules/schema/constants/schema';\nimport { MultipleSchemaMatrix } from 'src/modules/schema/types/MultipleSchemaMatrix';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport { MultipleSchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport {\n MultipleSchemaFilterForm,\n MultipleSchemaPreselectedData,\n SchemaSelectedData,\n} from 'src/modules/schema/types/SchemaSelectionState';\nimport { SchemaVersion } from 'src/modules/schema/types/SchemaVersion';\nimport { filterSchemas } from 'src/modules/schema/utils/filter';\nimport { SchemaEditScreen } from 'src/modules/schema/views/SchemaEditScreen';\nimport { SchemaSelectScreen } from 'src/modules/schema/views/SchemaSelectScreen';\n\ntype Props = {\n readonly projectId: string;\n readonly schemas: MultipleSchemaFormData;\n readonly hvacAssessmentFormData: HvacFormAssessmentData;\n readonly storedFilterFormValue: MultipleSchemaFilterForm;\n readonly storedPreselectedSchema: MultipleSchemaPreselectedData;\n readonly multipleSchemasMatrix: MultipleSchemaMatrix;\n readonly allConfigschemas: ReadonlyArray;\n readonly selectTemplate: (data: ConfigSchema) => void;\n readonly createVersion: (data: SchemaVersion, meta: SchemaArea) => void;\n readonly changeVersion: (data: SchemaVersion, meta: SchemaArea) => void;\n readonly removeVersion: (data: SchemaVersion, meta: SchemaArea) => void;\n readonly changeComment: (data: string, meta: SchemaArea) => void;\n readonly syncSchemaMatrix: (data: Matrix, meta: SchemaArea) => void;\n readonly savePreselectedSchema: (data: SchemaSelectedData | null, meta: SchemaArea) => void;\n readonly saveSchemaFilter: (data: SchemaFilterForm, meta: SchemaArea) => void;\n};\n\nexport const MultipleSchemasScreen = memo(({\n projectId,\n storedFilterFormValue,\n schemas,\n hvacAssessmentFormData,\n storedPreselectedSchema,\n multipleSchemasMatrix,\n allConfigschemas,\n selectTemplate,\n createVersion,\n changeVersion,\n removeVersion,\n changeComment,\n syncSchemaMatrix,\n savePreselectedSchema,\n saveSchemaFilter,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const projectHvacUrl = `/project/${encodeURIComponent(projectId)}/hvac`;\n const projectEvaluationUrl = `/project/${encodeURIComponent(projectId)}/evaluation`;\n\n const [activeTab, setActiveTab] = useState(SchemaArea.HEATING);\n const [selectedVersionIndex, setSelectedVersionIndex] = useState(0);\n const [isCommentModalOpen, setCommentModalOpen] = useState(false);\n\n const currentSchema = useMemo(() => schemas[activeTab] || null, [schemas, activeTab]);\n\n const currentMatrix = multipleSchemasMatrix[activeTab];\n\n const activeSchemas = useMemo(\n () => allConfigschemas.filter((s) => SCHEMA_AREA_MAP[s.thermal_energy] === activeTab),\n [activeTab, allConfigschemas],\n );\n\n const filteredSchemas = useMemo(\n () => filterSchemas(activeSchemas, storedFilterFormValue[activeTab]),\n [\n activeSchemas,\n storedFilterFormValue,\n activeTab,\n ],\n );\n\n const currentSelectedSchema = useMemo(() => {\n if (!storedPreselectedSchema[activeTab]) {\n return null;\n }\n\n return filteredSchemas.find((item) => item.id === storedPreselectedSchema[activeTab]?.id) || null;\n }, [activeTab, filteredSchemas, storedPreselectedSchema]);\n\n const handleTabChange = useCallback((selection: unknown) => {\n setSelectedVersionIndex(0);\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n setActiveTab(selection as SchemaArea);\n }, []);\n\n const handleSavePreselectedSchema = useCallback((data: SchemaSelectedData | null) => {\n savePreselectedSchema(data, activeTab);\n }, [activeTab, savePreselectedSchema]);\n\n const handleSaveSchemaFilter = useCallback((data: SchemaFilterForm) => {\n saveSchemaFilter(data, activeTab);\n }, [activeTab, saveSchemaFilter]);\n\n const handleSchemaCreate = useCallback(() => {\n if (currentSelectedSchema) {\n selectTemplate(currentSelectedSchema);\n }\n }, [currentSelectedSchema, selectTemplate]);\n\n useEffect(() => {\n if (!currentSelectedSchema && activeSchemas.length > 0 && filteredSchemas.length > 0) {\n handleSavePreselectedSchema(filteredSchemas[0] ? filteredSchemas[0] : null);\n }\n }, [currentSelectedSchema, filteredSchemas, handleSavePreselectedSchema, activeSchemas.length]);\n\n return (\n
    \n
    \n
    \n \n {SCHEMA_AREAS.map((area) => (\n \n \n\n {schemas[area]\n ? (\n \n )\n : null}\n
    \n )}\n />\n ))}\n \n\n {currentSchema && (\n setCommentModalOpen(true)}\n >\n \n\n
    \n \n
    \n\n
    \n {(currentSchema?.comment?.length || 0) > 0 && }\n
    \n \n )}\n
    \n\n {currentSchema ? (\n setCommentModalOpen(false)}\n isCommentModalOpen={isCommentModalOpen}\n key={activeTab}\n schema={currentSchema}\n schemaMatrix={currentMatrix}\n selectedVersionIndex={selectedVersionIndex}\n onSelectVersionIndex={setSelectedVersionIndex}\n onChangeSchemaMatrix={(matrix) => syncSchemaMatrix(matrix, activeTab)}\n onCreateVersion={(version) => createVersion(version, activeTab)}\n onRemoveVersion={(version) => removeVersion(version, activeTab)}\n onChangeVersion={(version) => changeVersion(version, activeTab)}\n changeComment={(comment) => changeComment(comment, activeTab)}\n />\n ) : (\n \n )}\n\n \n
    \n
    \n );\n});\n\nconst SCHEMA_AREAS = [\n SchemaArea.HEATING,\n SchemaArea.COOLING,\n];\n","import './SchemaCanvas.scss';\nimport { Matrix } from '@belimo-retrofit-portal/logic';\nimport { ZoomIn, ZoomOut, Maximize, Minimize, ZoomReset } from '@carbon/icons-react';\nimport { ModalBody, ModalFooter, ModalHeader, Tooltip } from '@carbon/react';\nimport { pipe } from 'fp-ts/function';\nimport React from 'react';\nimport { FormattedMessage, injectIntl, WrappedComponentProps } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { PreserveContent } from 'src/modules/common/components/PreserveContent';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { Point } from 'src/modules/common/types/Point';\nimport { bind } from 'src/modules/common/utils/decorator';\nimport { INTERPOLATION_MATRIX } from 'src/modules/common/utils/interpolation';\nimport { matrixInverse, matrixMultiply, matrixScale, matrixTranslate } from 'src/modules/common/utils/matrix';\nimport { pointTransform } from 'src/modules/common/utils/point';\nimport { spring } from 'src/modules/common/utils/spring';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaContainer } from 'src/modules/schema/types/SchemaContainer';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { SchemaEventCanvas, SchemaEventCanvasMove, SchemaEventCanvasZoom } from 'src/modules/schema/types/SchemaEvent';\nimport { SchemaAssignments } from 'src/modules/schema/views/canvas/SchemaAssignments';\nimport { SchemaBackground } from 'src/modules/schema/views/canvas/SchemaBackground';\nimport { SchemaContainerPreview } from 'src/modules/schema/views/SchemaContainerPreview';\nimport { SchemaContainerSelect } from 'src/modules/schema/views/SchemaContainerSelect';\nimport { SchemaGesture } from 'src/modules/schema/views/SchemaGesture';\nimport { SchemaInputLayer } from 'src/modules/schema/views/SchemaInputLayer';\n\ntype Props = {\n readonly schema: ConfigSchema;\n readonly assignments: ReadonlyArray;\n readonly schemaMatrix: Matrix;\n readonly onChange: (assignments: ReadonlyArray) => void;\n readonly onChangeSchemaMatrix: (matrix: Matrix) => void;\n};\ntype State = {\n readonly matrix: Matrix;\n readonly modal: SchemaAssignment | null;\n readonly preview: AssignedContainer | null;\n readonly isFullScreen: boolean;\n};\ntype AssignedContainer = {\n readonly container: SchemaContainer;\n readonly selection: SchemaDevice;\n};\n\nclass SchemaCanvasWithContext extends React.Component, State> {\n private readonly animation = spring({\n mass: 1,\n tension: 1000,\n friction: 65,\n\n // eslint-disable-next-line react/destructuring-assignment\n initialPosition: this.props.schemaMatrix,\n initialVelocity: { a: 0, b: 0, c: 0, d: 0, e: 0, f: 0 },\n\n onChange: (matrix, completed) => {\n this.setState({ matrix });\n\n if (completed) {\n // eslint-disable-next-line react/destructuring-assignment\n this.props.onChangeSchemaMatrix(matrix);\n }\n },\n\n precision: 0.001,\n interpolation: INTERPOLATION_MATRIX,\n });\n\n public readonly state: State = {\n // eslint-disable-next-line react/destructuring-assignment\n matrix: this.props.schemaMatrix,\n modal: null,\n preview: null,\n isFullScreen: false,\n };\n\n public render(): React.ReactElement {\n const { isFullScreen } = this.state;\n\n return (\n <>\n \n {isFullScreen\n ? null\n : this.renderContent()}\n \n\n {this.renderModals()}\n \n );\n }\n\n private renderContent(): React.ReactElement {\n const { schema } = this.props;\n const { matrix: { a: zoom } } = this.state;\n\n return (\n
    \n
    \n {\n zoom > 1\n ? (\n
    \n \n
    \n )\n : null\n }\n\n \n {this.renderCanvas()}\n \n
    \n
    \n {this.renderControls()}\n
    \n
    \n );\n }\n\n private renderCanvas(): React.ReactElement {\n const { matrix } = this.state;\n const { schema, assignments } = this.props;\n\n const transformLine = [\n matrix.a.toFixed(5),\n matrix.b.toFixed(5),\n matrix.c.toFixed(5),\n matrix.d.toFixed(5),\n matrix.e.toFixed(5),\n matrix.f.toFixed(5),\n ].join(',');\n\n return (\n \n \n \n \n \n
    \n \n
    \n
    \n );\n }\n\n private renderControls(): React.ReactElement {\n const { matrix, isFullScreen } = this.state;\n const { intl } = this.props;\n const zoomFactor = Math.round(matrix.a * 100);\n\n return (\n
    \n
    \n \n \n \n\n \n

    \n {zoomFactor}%\n

    \n \n\n = ZOOM_MAX * 100}\n onClick={this.handleZoomIn}\n hasIconOnly={true}\n iconDescription={intl.formatMessage({ id: 'schema/canvas/control/zoomIn' })}\n tooltipPosition=\"bottom\"\n >\n \n \n
    \n\n \n \n \n\n \n {isFullScreen ? : }\n \n
    \n );\n }\n\n private renderModals(): React.ReactElement {\n const { modal, preview, isFullScreen } = this.state;\n\n return (\n <>\n \n \n \n {isFullScreen ? this.renderContent() : null}\n \n \n \n\n \n \n {modal && (\n <>\n }\n titleClassName=\"bp-schema-canvas-modal__title\"\n title={}\n />\n\n \n \n \n \n )}\n \n \n\n \n \n {preview && (\n <>\n }\n titleClassName=\"bp-schema-canvas-modal__title\"\n title={}\n />\n\n \n \n \n\n \n \n \n \n\n this.handleContainerChange(preview)}\n >\n \n \n \n \n )}\n \n \n \n );\n }\n\n @bind()\n private handleFullScreenOpen(): void {\n this.setState({ isFullScreen: true });\n }\n\n @bind()\n private handleFullScreenClose(): void {\n this.setState({ isFullScreen: false });\n }\n\n @bind()\n private handleCanvasEvent(event: SchemaEventCanvas): void {\n if (event.type === 'zoom') {\n this.handleZoomEvent(event);\n } else if (event.type === 'move') {\n this.handleMoveEvent(event);\n }\n }\n\n private handleZoomEvent(event: SchemaEventCanvasZoom): void {\n const origin = this.getViewboxPoint(event.point);\n const scale = pipe(\n this.animation.target.a,\n (v) => (event.mode === 'relative' ? v * event.delta : v + event.delta * ZOOM_STEP),\n (v) => (event.mode === 'relative' ? v : Math.round(v / ZOOM_STEP) * ZOOM_STEP),\n (v) => Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, v)),\n );\n\n this.zoomWithOrigin(origin, scale);\n }\n\n private handleMoveEvent(event: SchemaEventCanvasMove): void {\n const delta = {\n x: event.delta.x / this.animation.target.a,\n y: event.delta.y / this.animation.target.a,\n };\n\n const result = matrixMultiply(\n this.animation.target,\n matrixTranslate(delta),\n );\n\n this.animation.animate(this.applyMatrixConstraint(result));\n }\n\n @bind()\n private handleZoomIn(): void {\n const { schema } = this.props;\n\n const origin = this.getViewboxPoint({\n x: schema.width / 2,\n y: schema.height / 2,\n });\n const scale = pipe(\n this.animation.target.a,\n (v) => Math.floor(v / ZOOM_STEP) * ZOOM_STEP + ZOOM_STEP,\n (v) => Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, v)),\n );\n\n this.zoomWithOrigin(origin, scale);\n }\n\n @bind()\n private handleZoomOut(): void {\n const { schema } = this.props;\n\n const origin = this.getViewboxPoint({\n x: schema.width / 2,\n y: schema.height / 2,\n });\n const scale = pipe(\n this.animation.target.a,\n (v) => Math.ceil(v / ZOOM_STEP) * ZOOM_STEP - ZOOM_STEP,\n (v) => Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, v)),\n );\n\n this.zoomWithOrigin(origin, scale);\n }\n\n @bind()\n private handleZoomReset(): void {\n this.animation.animate(MATRIX_IDENTITY);\n }\n\n @bind()\n private handleContainerSelect(assignment: SchemaAssignment): void {\n if (!assignment.selection) {\n this.setState({ modal: assignment });\n return;\n }\n\n this.setState({\n preview: {\n container: assignment.container,\n selection: assignment.selection,\n },\n });\n }\n\n @bind()\n private handleContainerChange(assignment: SchemaAssignment): void {\n this.setState({ modal: assignment, preview: null });\n }\n\n @bind()\n private handleDeviceSelect(assignment: SchemaAssignment): void {\n const { assignments, onChange } = this.props;\n onChange(assignments.map((it) => (it.container.id === assignment.container.id ? assignment : it)));\n\n this.setState({ modal: null });\n }\n\n @bind()\n private handleContainerCancel(): void {\n this.setState({ modal: null, preview: null });\n }\n\n private getViewboxPoint(schemaPoint: Point): Point {\n return pointTransform(\n schemaPoint,\n matrixInverse(this.animation.target),\n );\n }\n\n private zoomWithOrigin(origin: Point, scale: number): void {\n const result = matrixMultiply(\n this.animation.target,\n matrixScale(scale / this.animation.target.a, origin),\n );\n\n this.animation.animate(this.applyMatrixConstraint(result));\n }\n\n private applyMatrixConstraint(matrix: Matrix): Matrix {\n const { schema } = this.props;\n\n const lt = {\n x: 0,\n y: 0,\n };\n const rb = {\n x: schema.width,\n y: schema.height,\n };\n\n const realLT = pointTransform(lt, matrix);\n const realRB = pointTransform(rb, matrix);\n\n const deltaX = realLT.x > lt.x\n ? lt.x - realLT.x\n : realRB.x < rb.x\n ? rb.x - realRB.x\n : 0;\n const deltaY = realLT.y > lt.y\n ? lt.y - realLT.y\n : realRB.y < rb.y\n ? rb.y - realRB.y\n : 0;\n if (deltaX === 0 && deltaY === 0) {\n return matrix;\n }\n\n return matrixMultiply(\n matrixTranslate({ x: deltaX, y: deltaY }),\n matrix,\n );\n }\n}\n\nconst ZOOM_MIN = 1.00;\nconst ZOOM_MAX = 6.00;\nconst ZOOM_STEP = 0.50;\n\nexport const SchemaCanvas = injectIntl(SchemaCanvasWithContext);\n","import './SchemaCard.scss';\nimport clsx from 'clsx';\nimport React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\n\ntype Props = {\n readonly schema: ConfigSchema;\n readonly selected: boolean;\n readonly onSelect: (schema: ConfigSchema) => void;\n};\n\nexport const SchemaCard = React.forwardRef(\n ({ schema, selected, onSelect }: Props, ref): React.ReactElement => {\n const handleSelect = useCallback(() => {\n onSelect(schema);\n }, [schema, onSelect]);\n\n return (\n \n
    \n {schema.id}\n
    \n\n

    \n \n

    \n\n
    \n \n
    \n \n );\n },\n);\n","import './SchemaClearContainersConfirmation.scss';\nimport { WarningFilled } from '@carbon/icons-react';\nimport { Button, ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { CARBON_THEME } from 'src/modules/common/constants/theme';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\n\ntype Props = {\n readonly isOpen: boolean;\n readonly onCancel: () => void;\n readonly onSubmit: () => void;\n};\n\nexport const SchemaClearContainersConfirmation = ({ isOpen, onCancel, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n \n \n\n \n
    \n \n \n \n\n \n \n \n
    \n
    \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './SchemaContainerPreview.scss';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { BodySmallText } from 'src/modules/common/typography/BodySmallText';\nimport { LeadText } from 'src/modules/common/typography/LeadText';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { SchemaDeviceView } from 'src/modules/schema/views/canvas/SchemaDeviceView';\n\ntype Props = {\n readonly selection: SchemaDevice;\n};\n\nexport const SchemaContainerPreview = ({ selection }: Props): React.ReactElement => (\n
    \n
    \n \n \n \n
    \n\n \n \n \n\n {selection.device.explanation && (\n \n \n \n )}\n
    \n);\n\nconst PREVIEW_SIZE = {\n x: 250,\n y: 250,\n};\n","import './SchemaContainerSelect.scss';\nimport { Dropdown, OnChangeData } from '@carbon/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { DeviceType } from 'src/modules/common/types/DeviceType';\nimport { bind, memoize } from 'src/modules/common/utils/decorator';\nimport { DEVICE_OPTIONS } from 'src/modules/schema/constants/options';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { SchemaDeviceView } from 'src/modules/schema/views/canvas/SchemaDeviceView';\n\ntype OptionType = {\n readonly value: DeviceType | 'allDevices';\n readonly label: DeviceType | 'allDevices';\n};\n\ntype Props = {\n readonly assignment: SchemaAssignment;\n readonly onSelectDevice: (assignment: SchemaAssignment) => void;\n};\ntype State = {\n readonly group: OptionType | null;\n};\n\nexport class SchemaContainerSelect extends React.Component {\n public readonly state: State = {\n group: null,\n };\n\n public render(): React.ReactElement {\n const { group } = this.state;\n const { assignment: { container, selection } } = this.props;\n\n return (\n
    \n }\n onChange={this.handleGroupChange}\n items={this.filteredDeviceOptions}\n itemToElement={this.renderItem}\n className=\"bp-dropdown-field bp-dropdown-field--lg\"\n selectedItem={group || this.filteredDeviceOptions[0]}\n renderSelectedItem={this.renderItem}\n />\n\n
    \n {container.devices\n .filter((it) => group === null || it.device.type === group.value)\n .map((device) => (\n \n
    \n \n \n \n
    \n\n
    \n \n
    \n\n {device.device.explanation && (\n

    \n \n

    \n )}\n \n ))}\n
    \n
    \n );\n }\n\n private renderItem(deviceType: OptionType): React.ReactElement {\n if (deviceType.value === 'allDevices') {\n return ;\n }\n\n return (\n \n );\n }\n\n private get filteredDeviceOptions(): OptionType[] {\n const { assignment: { container } } = this.props;\n\n const filteredOptions = DEVICE_OPTIONS.filter(\n (type) => container.devices.some((it) => it.device.type === type),\n );\n\n const composedOptions = filteredOptions.map((option) => ({\n value: option,\n label: option,\n }));\n\n if (filteredOptions.length > 1) {\n return [\n { value: 'allDevices', label: 'allDevices' },\n ...composedOptions,\n ];\n }\n\n return composedOptions;\n }\n\n @bind()\n private handleGroupChange(event: OnChangeData): void {\n this.setState({ group: event.selectedItem || { value: 'allDevices', label: 'allDevices' } });\n }\n\n @memoize((device) => device)\n private getDeviceSelectHandler(device: SchemaDevice): () => void {\n return () => {\n const { assignment, onSelectDevice } = this.props;\n onSelectDevice({ ...assignment, selection: device });\n };\n }\n}\n\nconst PREVIEW_SIZE = {\n x: 150,\n y: 150,\n};\n","import './SchemaEditScreen.scss';\nimport { Matrix } from '@belimo-retrofit-portal/logic';\nimport { Add } from '@carbon/icons-react';\nimport { Tabs, Tooltip } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, WrappedComponentProps, injectIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomTab, CustomTabList } from 'src/modules/common/components/CustomTabList';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { DeleteIcon } from 'src/modules/common/icons/DeleteIcon';\nimport { ResetIcon } from 'src/modules/common/icons/ResetIcon';\nimport { bind } from 'src/modules/common/utils/decorator';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaFormData } from 'src/modules/schema/types/SchemaFormData';\nimport { SchemaVersion } from 'src/modules/schema/types/SchemaVersion';\nimport { CommentVersionModal } from 'src/modules/schema/views/CommentVersionModal';\nimport { DeleteVersionDialog } from 'src/modules/schema/views/DeleteVersionDialog';\nimport { SchemaCanvas } from 'src/modules/schema/views/SchemaCanvas';\nimport { SchemaClearContainersConfirmation } from 'src/modules/schema/views/SchemaClearContainersConfirmation';\n\ntype Props = {\n readonly schema: SchemaFormData;\n readonly selectedVersionIndex: number;\n readonly isCommentModalOpen: boolean;\n\n readonly handleCommentModalClose: () => void;\n readonly onSelectVersionIndex: React.Dispatch>;\n readonly onCreateVersion: (version: SchemaVersion) => void;\n readonly onRemoveVersion: (version: SchemaVersion) => void;\n readonly onChangeVersion: (version: SchemaVersion) => void;\n readonly onChangeSchemaMatrix: (matrix: Matrix) => void;\n readonly changeComment: (comment: string) => void;\n readonly schemaMatrix: Matrix;\n};\ntype State = {\n readonly schema: SchemaFormData;\n\n readonly isClearConfirmationOpen: boolean;\n readonly isDeleteConfirmationOpen: boolean;\n};\n\nclass SchemaEditScreenWithoutContext extends React.Component, State> {\n public readonly state: State = {\n // eslint-disable-next-line react/destructuring-assignment\n schema: this.props.schema,\n\n isClearConfirmationOpen: false,\n isDeleteConfirmationOpen: false,\n };\n\n public static getDerivedStateFromProps(nextProps: Props, prevState: State): Partial | null {\n const { onSelectVersionIndex } = nextProps;\n\n if (nextProps.schema.future.length !== prevState.schema.future.length) {\n onSelectVersionIndex(nextProps.schema.future.length);\n }\n\n return nextProps;\n }\n\n public render(): React.ReactElement {\n const {\n schema,\n intl,\n isCommentModalOpen,\n selectedVersionIndex,\n schemaMatrix,\n onSelectVersionIndex,\n handleCommentModalClose,\n onChangeSchemaMatrix,\n changeComment,\n } = this.props;\n const { isClearConfirmationOpen, isDeleteConfirmationOpen } = this.state;\n\n const isMaximumVersionAmountExceeded = schema.future.length >= 5;\n\n return (\n
    \n
    \n

    \n ,\n }}\n />\n

    \n
    \n\n \n\n
    \n
    \n \n \n onSelectVersionIndex(0)}\n >\n \n \n\n {schema.future.map((future, index) => (\n onSelectVersionIndex(index + 1)}\n >\n \n \n ))}\n \n \n\n
    \n \n \n \n\n \n \n \n\n {isMaximumVersionAmountExceeded ? (\n \n \n \n\n \n \n \n ) : (\n \n \n\n \n \n )}\n\n
    \n
    \n\n \n
    \n\n \n\n \n\n \n
    \n );\n }\n\n private get currentVersion(): SchemaVersion {\n const { selectedVersionIndex } = this.props;\n const { schema } = this.state;\n\n const versions = [schema.actual, ...schema.future];\n\n const currentVersion = selectedVersionIndex\n ? versions[selectedVersionIndex]\n : schema.actual;\n\n return currentVersion;\n }\n\n @bind()\n private handleDeleleOpen(): void {\n this.setState({ isDeleteConfirmationOpen: true });\n }\n\n @bind()\n private handleDeleleCancel(): void {\n this.setState({ isDeleteConfirmationOpen: false });\n }\n\n @bind()\n private handleDeleleSubmit(): void {\n this.setState({ isDeleteConfirmationOpen: false });\n\n const { onRemoveVersion, onSelectVersionIndex } = this.props;\n\n onRemoveVersion(this.currentVersion);\n // in case of deleting the actual version\n onSelectVersionIndex((prev) => Math.max(prev - 1, 0));\n }\n\n @bind()\n private handleClearOpen(): void {\n this.setState({ isClearConfirmationOpen: true });\n }\n\n @bind()\n private handleClearCancel(): void {\n this.setState({ isClearConfirmationOpen: false });\n }\n\n @bind()\n private handleClearSubmit(): void {\n this.setState({ isClearConfirmationOpen: false });\n\n const { onChangeVersion } = this.props;\n\n onChangeVersion({ ...this.currentVersion, assignments: [] });\n }\n\n @bind()\n private handleAssignmentsChange(assignments: ReadonlyArray): void {\n const { onChangeVersion } = this.props;\n\n onChangeVersion({ ...this.currentVersion, assignments });\n }\n\n @bind()\n private handleVersionCreate(): void {\n const { schema, onCreateVersion, onChangeVersion } = this.props;\n\n // only 5 future versions are allowed\n if (schema.future.length >= 5) {\n return;\n }\n\n onCreateVersion(this.currentVersion);\n onChangeVersion(this.currentVersion);\n }\n}\n\nexport const SchemaEditScreen = injectIntl(SchemaEditScreenWithoutContext);\n","/* eslint-disable react/no-unused-class-component-methods */\nimport './SchemaGesture.scss';\nimport { Matrix } from '@belimo-retrofit-portal/logic';\nimport React from 'react';\nimport { merge, Subscription } from 'rxjs';\nimport { MATRIX_IDENTITY } from 'src/modules/common/constants/matrix';\nimport { BBox } from 'src/modules/common/types/BBox';\nimport { Point } from 'src/modules/common/types/Point';\nimport { bind } from 'src/modules/common/utils/decorator';\nimport { matrixInverse, matrixMultiply, matrixScale, matrixTranslate } from 'src/modules/common/utils/matrix';\nimport { pointTransform } from 'src/modules/common/utils/point';\nimport { SchemaEventCanvas, SchemaEventCanvasMove, SchemaEventCanvasZoom } from 'src/modules/schema/types/SchemaEvent';\nimport { canvasGesture } from 'src/modules/schema/utils/event/canvasGesture';\nimport { canvasPointer } from 'src/modules/schema/utils/event/canvasPointer';\nimport { canvasWheel } from 'src/modules/schema/utils/event/canvasWheel';\n\ntype Props = {\n readonly width: number;\n readonly height: number;\n\n readonly onEvent: (event: SchemaEventCanvas) => void;\n readonly children: React.ReactNode;\n};\ntype State = {\n readonly bbox: BBox;\n readonly scale: Matrix;\n};\n\nexport class SchemaGesture extends React.PureComponent {\n private events = Subscription.EMPTY;\n\n private readonly container: React.RefObject = React.createRef();\n\n public readonly state: State = {\n bbox: { x: 0, y: 0, w: 0, h: 0 },\n scale: MATRIX_IDENTITY,\n };\n\n public componentDidMount(): void {\n this.handleResize();\n\n window.addEventListener('resize', this.handleResize, { passive: true });\n window.addEventListener('orientationchange', this.handleResize, { passive: true });\n\n if (this.container.current) {\n this.events.unsubscribe();\n this.events = merge(\n canvasGesture(this.container.current),\n canvasPointer(this.container.current),\n canvasWheel(this.container.current),\n ).subscribe(this.handleCanvasEvent);\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.handleResize);\n window.removeEventListener('orientationchange', this.handleResize);\n\n this.events.unsubscribe();\n }\n\n public render(): React.ReactElement {\n const { children, width, height } = this.props;\n const { scale } = this.state;\n\n const transformLine = [\n scale.a.toFixed(5),\n scale.b.toFixed(5),\n scale.c.toFixed(5),\n scale.d.toFixed(5),\n scale.e.toFixed(5),\n scale.f.toFixed(5),\n ].join(',');\n\n return (\n \n \n {children}\n \n \n );\n }\n\n @bind()\n private handleResize(): void {\n const rect = this.container.current?.getBoundingClientRect();\n if (!rect) {\n return;\n }\n\n const bbox: BBox = {\n x: rect.left,\n y: rect.top,\n w: rect.width,\n h: rect.height,\n };\n\n this.setState({\n bbox: bbox,\n scale: this.getScaleMatrix(bbox),\n });\n }\n\n @bind()\n private handleCanvasEvent(event: SchemaEventCanvas): void {\n if (event.type === 'zoom') {\n this.handleZoomEvent(event);\n } else if (event.type === 'move') {\n this.handleMoveEvent(event);\n }\n }\n\n @bind()\n private handleZoomEvent(event: SchemaEventCanvasZoom): void {\n const { bbox } = this.state;\n\n const origin = this.getViewboxPoint({\n x: Math.max(0, Math.min(bbox.w, event.point.x - bbox.x)),\n y: Math.max(0, Math.min(bbox.h, event.point.y - bbox.y)),\n });\n\n const { onEvent } = this.props;\n onEvent({\n type: 'zoom',\n mode: event.mode,\n delta: event.delta,\n point: origin,\n });\n }\n\n @bind()\n private handleMoveEvent(event: SchemaEventCanvasMove): void {\n const { scale } = this.state;\n\n const delta = {\n x: event.delta.x / scale.a,\n y: event.delta.y / scale.a,\n };\n\n const { onEvent } = this.props;\n onEvent({\n type: 'move',\n delta: delta,\n });\n }\n\n private getViewboxPoint(bboxPoint: Point): Point {\n const { scale } = this.state;\n\n return pointTransform(\n bboxPoint,\n matrixInverse(scale),\n );\n }\n\n private getScaleMatrix(bbox: BBox): Matrix {\n const { width, height } = this.props;\n\n const viewBoxRatio = bbox.w / bbox.h;\n const contentRatio = width / height;\n\n const scale = contentRatio > viewBoxRatio\n ? bbox.w / width\n : bbox.h / height;\n const delta = {\n x: (bbox.w - width) / 2,\n y: (bbox.h - height) / 2,\n };\n const center = {\n x: width / 2,\n y: height / 2,\n };\n\n return matrixMultiply(\n matrixTranslate(delta),\n matrixScale(scale, center),\n );\n }\n}\n","import './SchemaInputLayer.scss';\nimport { AddAlt } from '@carbon/icons-react';\nimport { Button } from '@carbon/react';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { memoize } from 'src/modules/common/utils/decorator';\nimport { SCHEMA_CONTAINER_SIZE } from 'src/modules/schema/constants/schema';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaContainer } from 'src/modules/schema/types/SchemaContainer';\n\ntype Props = {\n readonly assignments: ReadonlyArray;\n readonly onSelect: (assignment: SchemaAssignment) => void;\n};\n\nexport class SchemaInputLayer extends React.PureComponent {\n public render(): React.ReactElement {\n const { assignments } = this.props;\n\n return (\n
    \n {assignments.map((assignment) => (\n \n \n \n ))}\n
    \n );\n }\n\n @memoize((assignment) => assignment)\n private getSelectHandler(assignment: SchemaAssignment): () => void {\n return () => {\n const { onSelect } = this.props;\n onSelect(assignment);\n };\n }\n\n private getButtonStyles(container: SchemaContainer): React.CSSProperties {\n return {\n left: container.position.x,\n top: container.position.y,\n width: SCHEMA_CONTAINER_SIZE.x,\n height: SCHEMA_CONTAINER_SIZE.y,\n };\n }\n}\n","import './SchemaSelectScreen.scss';\nimport { SchemaArea } from '@belimo-retrofit-portal/logic';\nimport { InlineNotification } from '@carbon/react';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport React, { useEffect, useRef } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { HorizontalDivider } from 'src/modules/common/components/HorizontalDivider';\nimport { ChangeOverLevel } from 'src/modules/common/types/ChangeOverLevel';\nimport { DifferentTemperatureLevel } from 'src/modules/common/types/DifferentTemperatureLevel';\nimport { WaterToAir } from 'src/modules/common/types/WaterToAir';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { nullToAll } from 'src/modules/form/utils/transform';\nimport { SchemaFilterForm } from 'src/modules/schema/types/SchemaFilterForm';\nimport { SchemaSelectedData } from 'src/modules/schema/types/SchemaSelectionState';\nimport { SchemaCard } from 'src/modules/schema/views/SchemaCard';\n\ntype Props = {\n readonly area: SchemaArea;\n readonly schemas: ReadonlyArray;\n readonly storedFilterFormValue: SchemaFilterForm;\n readonly filteredSchemas: ReadonlyArray;\n readonly currentSelectedSchema: ConfigSchema | null;\n readonly onSavePreselectedSchema: (data: SchemaSelectedData | null) => void;\n readonly onSaveSchemaFilter: (data: SchemaFilterForm) => void;\n readonly handleSchemaCreate: () => void;\n};\n\nexport const SchemaSelectScreen = ({\n area,\n schemas,\n storedFilterFormValue,\n filteredSchemas,\n currentSelectedSchema,\n onSavePreselectedSchema,\n onSaveSchemaFilter,\n handleSchemaCreate,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n const cardRefs = useRef<{ [key: ConfigSchema['id']]: HTMLButtonElement | null }>({});\n\n const form = useForm('schema.filter', {\n reinitialize: false,\n initialValues: storedFilterFormValue,\n });\n\n const values = useFormWatch(form, form.values.get);\n\n const handleSelectSchema = (schema: ConfigSchema): void => {\n onSavePreselectedSchema({ id: schema.id });\n };\n\n useEffect(() => {\n if (values) {\n onSaveSchemaFilter(values);\n }\n }, [onSaveSchemaFilter, values]);\n\n useEffect(() => {\n if (currentSelectedSchema && cardRefs.current[currentSelectedSchema.id]) {\n cardRefs.current[currentSelectedSchema.id]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [currentSelectedSchema]);\n\n return schemas.length !== 0 ? (\n
    \n

    \n \n

    \n\n \n\n
    \n \n \n \n
    \n\n
    \n {/* RPA-248 — Schema drawing — hide the filters but keep them in the codebase */}\n {/*
    \n \n\n \n\n \n
    */}\n\n
    \n
    \n {filteredSchemas.map((schema) => (\n {\n cardRefs.current[schema.id] = el;\n }}\n key={schema.id}\n schema={schema}\n selected={schema === currentSelectedSchema}\n onSelect={handleSelectSchema}\n />\n ))}\n
    \n\n
    \n {currentSelectedSchema && (\n
    \n
    \n

    \n {currentSelectedSchema.id}\n

    \n\n {currentSelectedSchema.explanation && (\n

    \n \n

    \n )}\n
    \n\n
    \n \n
    \n
    \n )}\n
    \n
    \n
    \n
    \n ) : (\n \n );\n};\n\nconst renderWaterToAirItem = (option: WaterToAir | 'All'): React.ReactElement => (\n \n);\n\nconst renderChangeOverLevelItem = (option: ChangeOverLevel | 'All'): React.ReactElement => (\n \n);\n\nconst renderDifferentTemperatureLevelItem = (option: DifferentTemperatureLevel | 'All'): React.ReactElement => (\n \n);\n","import React from 'react';\nimport { SCHEMA_CONTAINER_SIZE } from 'src/modules/schema/constants/schema';\nimport { SchemaAssignment } from 'src/modules/schema/types/SchemaAssignment';\nimport { SchemaContainer } from 'src/modules/schema/types/SchemaContainer';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\nimport { SchemaDeviceView } from 'src/modules/schema/views/canvas/SchemaDeviceView';\n\ntype Props = {\n readonly assignments: ReadonlyArray;\n};\n\nexport const SchemaAssignments = React.memo(({ assignments }: Props): React.ReactElement => (\n \n {assignments.map((assignment) => (\n assignment.selection\n ? (\n \n )\n : (\n \n )\n ))}\n \n));\n\ntype ContainerProps = {\n readonly container: SchemaContainer;\n};\n\nconst SchemaContainerShape = ({ container }: ContainerProps): React.ReactElement => {\n const position = {\n x: container.position.x,\n y: container.position.y,\n };\n\n return (\n \n \n \n );\n};\n\ntype DeviceProps = {\n readonly container: SchemaContainer;\n readonly selection: SchemaDevice;\n};\n\nconst SchemaDeviceShape = ({ container, selection }: DeviceProps): React.ReactElement => {\n const position = {\n x: container.position.x,\n y: container.position.y,\n };\n\n return (\n \n \n\n \n \n \n\n \n \n );\n};\n","import React from 'react';\nimport { SvgFile } from 'src/modules/common/components/SvgFile';\nimport { ConfigSchema } from 'src/modules/config/types/ConfigSchema';\n\ntype Props = {\n readonly schema: ConfigSchema;\n};\n\nexport const SchemaBackground = React.memo(({ schema }: Props): React.ReactElement => (\n \n \n \n));\n","import React from 'react';\nimport { SvgFile } from 'src/modules/common/components/SvgFile';\nimport { Point } from 'src/modules/common/types/Point';\nimport { SchemaDevice } from 'src/modules/schema/types/SchemaDevice';\n\ntype Props = {\n readonly size: Point;\n readonly device: SchemaDevice;\n};\n\nexport const SchemaDeviceView = ({ size, device }: Props): React.ReactElement => (\n \n `/images/devices/${encodeURIComponent(\n [\n 'C',\n device.device.id,\n device.valvePosition,\n device.orientation,\n flowDirection,\n device.thermalEnergy,\n ].join(''),\n )}.svg`)}\n width={size.x}\n height={size.y}\n />\n \n);\n","import './ScreenSizeGuard.scss';\nimport { ModalBody } from '@carbon/react';\nimport { constUndefined } from 'fp-ts/lib/function';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ScreenSizeGuard = memo(({ children }: Props) => {\n const [screenWidth, setScreenWidth] = useState(window.innerWidth);\n\n const screenWidthChangeListener = useCallback(() => {\n setScreenWidth(window.innerWidth);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', screenWidthChangeListener);\n\n window.screen.orientation.addEventListener('change', screenWidthChangeListener);\n\n return (): void => {\n window.removeEventListener('resize', screenWidthChangeListener);\n\n window.screen.orientation.removeEventListener('change', screenWidthChangeListener);\n };\n }, [screenWidthChangeListener]);\n\n return screenWidth >= supportedScreenWidth\n ? children\n : (\n
    \n \n \n

    \n \n

    \n\n

    \n \n

    \n\n

    \n \n

    \n\n

    \n \n

    \n
    \n \n
    \n );\n});\n\nconst supportedScreenWidth = 1024;\n","import { ScrollRestoration } from 'src/modules/scroll/types/ScrollRestoration';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const SCROLL_RESTORE = createTrigger('SCROLL_RESTORE');\n","import { History } from 'history';\nimport { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { SCROLL_RESTORE } from 'src/modules/scroll/actions/ScrollRestoration';\nimport { getScrollRestoration } from 'src/modules/scroll/selectors/getScrollRestoration';\n\ntype Props = {\n readonly history: History;\n};\n\nexport const ScrollRestoration = ({ history }: Props): null => {\n const scrollPosition = useSelector(getScrollRestoration);\n const scrollRestore = useAction(SCROLL_RESTORE.trigger);\n\n useEffect(() => {\n window.history.scrollRestoration = 'manual';\n\n const unlisten = history.listen((location, action) => {\n if (action === 'REPLACE') {\n scrollRestore({\n isRestoring: false,\n lastScrollPosition: window.scrollY,\n });\n }\n\n if (action === 'PUSH') {\n scrollRestore({\n isRestoring: false,\n lastScrollPosition: window.scrollY,\n });\n }\n\n if (action === 'POP') {\n scrollRestore({\n isRestoring: true,\n lastScrollPosition: scrollPosition.lastScrollPosition,\n });\n }\n });\n\n return () => {\n unlisten();\n window.history.scrollRestoration = 'auto';\n };\n }, [history, scrollRestore, scrollPosition.lastScrollPosition]);\n\n return null;\n};\n","import { scrollRestorationReducer } from 'src/modules/scroll/reducers/scrollRestorationReducer';\nimport { ScrollState } from 'src/modules/scroll/types/ScrollState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ScrollState = {\n scrollRestoration: {\n isRestoring: false,\n lastScrollPosition: 0,\n },\n};\n\nexport const scrollReducer = chainReducers(defaultState, [\n scrollRestorationReducer,\n]);\n","import { Action } from 'redux';\nimport { SCROLL_RESTORE } from 'src/modules/scroll/actions/ScrollRestoration';\nimport { ScrollState } from 'src/modules/scroll/types/ScrollState';\n\nexport function scrollRestorationReducer(\n state: ScrollState,\n action: Action,\n): ScrollState {\n if (SCROLL_RESTORE.is(action)) {\n return {\n ...state,\n scrollRestoration: {\n isRestoring: action.data.isRestoring,\n lastScrollPosition: action.data.lastScrollPosition,\n },\n };\n }\n\n return state;\n}\n","import { createSelector } from 'reselect';\nimport { getScrollState } from 'src/modules/scroll/selectors/getScrollState';\n\nexport const getScrollRestoration = createSelector([\n getScrollState,\n], (state) => state.scrollRestoration);\n","import { ScrollState } from 'src/modules/scroll/types/ScrollState';\nimport { RootState } from 'src/types/RootState';\n\nexport const getScrollState = (state: RootState): ScrollState => state.scroll;\n","import { SagaIterator } from 'redux-saga';\nimport { SCROLL_RESTORE } from 'src/modules/scroll/actions/ScrollRestoration';\nimport { getScrollRestoration } from 'src/modules/scroll/selectors/getScrollRestoration';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* scrollRestore(): SagaIterator {\n const scrollRestoration = yield* select(getScrollRestoration);\n\n if (scrollRestoration.isRestoring) {\n window.requestAnimationFrame(() => window.scrollTo(0, scrollRestoration.lastScrollPosition));\n\n yield* put(SCROLL_RESTORE.trigger({\n isRestoring: false,\n lastScrollPosition: 0,\n }));\n } else {\n yield* call(window.scrollTo, 0, 0);\n }\n}\n","import { FormController } from '@form-ts/core';\nimport { Project } from 'src/modules/common/types/Project';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { ShareProjectForm } from 'src/modules/sharing-projects/types/ShareProjectForm';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const SHARE_PROJECT_OPEN = createTrigger('SHARE_PROJECT_OPEN');\nexport const SHARE_PROJECT_CLOSE = createTrigger('SHARE_PROJECT_CLOSE');\n\nexport const SHARE_PROJECT_FETCH = createActions, Project>('SHARE_PROJECT_FETCH');\nexport const SHARE_PROJECT_SUBMIT = createActions<\nFormController,\nReadonlyArray\n>('SHARE_PROJECT_SUBMIT');\n\nexport const SHARE_PROJECT_REMOVE_OPEN = createTrigger('SHARE_PROJECT_REMOVE_OPEN');\nexport const SHARE_PROJECT_REMOVE_CLOSE = createTrigger('SHARE_PROJECT_REMOVE_CLOSE');\nexport const SHARE_PROJECT_REMOVE_SUBMIT = createActions<\nvoid,\nReadonlyArray\n>('SHARE_PROJECT_REMOVE_SUBMIT');\n","import { UUID } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\n\nexport const SHARED_USER: D.Decoder = D.struct({\n id: UUID,\n email: D.string,\n firstName: D.string,\n lastName: D.string,\n});\n","import { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\nimport { ShareProjectForm } from 'src/modules/sharing-projects/types/ShareProjectForm';\n\nexport const SHARE_PROJECT_FORM_SCHEMA:\n(emailsArray: string[]) => FormRule = (emailsArray) => R.struct({\n users: R.allOf([R.emailAlreadyExist(emailsArray), R.emailList(), R.nonEmpty()]),\n});\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useAction } from 'src/hooks/useAction';\nimport { useBoundAction } from 'src/hooks/useBoundAction';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { PreserveContent } from 'src/modules/common/components/PreserveContent';\nimport {\n SHARE_PROJECT_CLOSE,\n SHARE_PROJECT_SUBMIT,\n SHARE_PROJECT_REMOVE_CLOSE,\n SHARE_PROJECT_REMOVE_OPEN,\n SHARE_PROJECT_REMOVE_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { getShareProjectData } from 'src/modules/sharing-projects/selectors/getShareProjectData';\nimport { ShareProjectModal } from 'src/modules/sharing-projects/views/ShareProjectModal';\nimport { ShareProjectRemoveModal } from 'src/modules/sharing-projects/views/ShareProjectRemoveModal';\n\nexport const ShareProject = (): React.ReactElement => {\n const modalData = useSelector(getShareProjectData);\n\n const shareProjectClose = useBoundAction(SHARE_PROJECT_CLOSE.trigger, undefined);\n const shareProjectSubmit = useAction(SHARE_PROJECT_SUBMIT.request);\n\n const removeUserClose = useBoundAction(SHARE_PROJECT_REMOVE_CLOSE.trigger, undefined);\n const removeUserRequest = useAction(SHARE_PROJECT_REMOVE_OPEN.trigger);\n const removeUserConfirm = useAction(SHARE_PROJECT_REMOVE_SUBMIT.request);\n\n return (\n <>\n \n \n {modalData !== null && (\n \n )}\n \n \n\n \n \n {modalData !== null && modalData.removing !== null && (\n \n )}\n \n \n \n );\n};\n","import { Action } from 'redux-saga';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { SHARE_PROJECT_CLOSE, SHARE_PROJECT_OPEN } from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { ShareProjectState } from 'src/modules/sharing-projects/types/ShareProjectState';\n\nexport function shareProjectDataReducer(state: ShareProjectState, action: Action): ShareProjectState {\n if (SHARE_PROJECT_CLOSE.is(action)) {\n return { ...state, data: null };\n }\n if (SHARE_PROJECT_OPEN.is(action)) {\n return {\n ...state,\n data: {\n project: action.data,\n users: FUTURE.pending(),\n removing: null,\n },\n };\n }\n\n return state;\n}\n","import { shareProjectDataReducer } from 'src/modules/sharing-projects/reducers/shareProjectDataReducer';\nimport { shareProjectRemoveReducer } from 'src/modules/sharing-projects/reducers/shareProjectRemoveReducer';\nimport { shareProjectUsersReducer } from 'src/modules/sharing-projects/reducers/shareProjectUsersReducer';\nimport { ShareProjectState } from 'src/modules/sharing-projects/types/ShareProjectState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: ShareProjectState = {\n data: null,\n};\n\nexport const shareProjectReducer = chainReducers(defaultState, [\n shareProjectDataReducer,\n shareProjectUsersReducer,\n shareProjectRemoveReducer,\n]);\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux-saga';\nimport { Future, FUTURE } from 'src/modules/common/types/Future';\nimport {\n SHARE_PROJECT_REMOVE_OPEN,\n SHARE_PROJECT_REMOVE_CLOSE,\n SHARE_PROJECT_REMOVE_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { ShareProjectRemoving, ShareProjectState } from 'src/modules/sharing-projects/types/ShareProjectState';\n\nexport function shareProjectRemoveReducer(state: ShareProjectState, action: Action): ShareProjectState {\n if (SHARE_PROJECT_REMOVE_OPEN.is(action)) {\n return pipe(state, modifyRemoving({ user: action.data, status: null }));\n }\n if (SHARE_PROJECT_REMOVE_CLOSE.is(action)) {\n return pipe(state, modifyRemoving(null));\n }\n\n if (SHARE_PROJECT_REMOVE_SUBMIT.isPending(action)) {\n return pipe(state, modifyStatus(FUTURE.pending()));\n }\n if (SHARE_PROJECT_REMOVE_SUBMIT.isSuccess(action)) {\n return pipe(state, modifyRemoving(null));\n }\n if (SHARE_PROJECT_REMOVE_SUBMIT.isFailure(action)) {\n return pipe(state, modifyStatus(FUTURE.failure(action.data)));\n }\n\n return state;\n}\n\nconst dataLens = pipe(\n O.id(),\n O.prop('data'),\n O.fromNullable,\n);\n\nfunction modifyRemoving(\n value: ShareProjectRemoving | null,\n): (state: ShareProjectState) => ShareProjectState {\n return pipe(\n dataLens,\n O.prop('removing'),\n O.modify(() => value),\n );\n}\n\nfunction modifyStatus(\n value: Future,\n): (state: ShareProjectState) => ShareProjectState {\n return pipe(\n dataLens,\n O.prop('removing'),\n O.fromNullable,\n O.prop('status'),\n O.modify(() => value),\n );\n}\n","import { pipe } from 'fp-ts/function';\nimport * as O from 'monocle-ts/Optional';\nimport { Action } from 'redux-saga';\nimport { Future, FUTURE } from 'src/modules/common/types/Future';\nimport {\n SHARE_PROJECT_FETCH,\n SHARE_PROJECT_REMOVE_SUBMIT,\n SHARE_PROJECT_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { ShareProjectState } from 'src/modules/sharing-projects/types/ShareProjectState';\n\nexport function shareProjectUsersReducer(state: ShareProjectState, action: Action): ShareProjectState {\n if (SHARE_PROJECT_FETCH.isPending(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n users: FUTURE.pending(),\n removing: null,\n },\n };\n }\n if (SHARE_PROJECT_FETCH.isSuccess(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n users: FUTURE.success(action.data),\n removing: null,\n },\n };\n }\n if (SHARE_PROJECT_FETCH.isFailure(action)) {\n return {\n ...state,\n data: {\n project: action.meta,\n users: FUTURE.failure(action.data),\n removing: null,\n },\n };\n }\n\n if (SHARE_PROJECT_SUBMIT.isSuccess(action)) {\n return pipe(state, modifyUsers(FUTURE.success(action.data)));\n }\n if (SHARE_PROJECT_REMOVE_SUBMIT.isSuccess(action)) {\n return pipe(state, modifyUsers(FUTURE.success(action.data)));\n }\n\n return state;\n}\n\nfunction modifyUsers(\n users: Future>,\n): (state: ShareProjectState) => ShareProjectState {\n return pipe(\n O.id(),\n O.prop('data'),\n O.fromNullable,\n O.prop('users'),\n O.modify(() => users),\n );\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { SHARE_PROJECT_FETCH } from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { loadSharedProjectUsers } from 'src/modules/sharing-projects/sagas/utils/loadSharedProjectUsers';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* shareProjectFetchSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const project = action.meta;\n\n try {\n yield* put(SHARE_PROJECT_FETCH.pending(project));\n yield* call(logDebug, 'Fetching project access list...', { project });\n\n const users = yield* call(loadSharedProjectUsers, project);\n\n yield* put(SHARE_PROJECT_FETCH.success(users, project));\n yield* call(logDebug, 'Fetching project access list... done', { project, users });\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Fetching project access list... error', { project, error });\n yield* put(SHARE_PROJECT_FETCH.failure(NativeError.wrap(error), project));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { SHARE_PROJECT_REMOVE_SUBMIT } from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { removeUserFromSharedProject } from 'src/modules/sharing-projects/sagas/utils/removeUserFromSharedProject';\nimport { getShareProjectProject } from 'src/modules/sharing-projects/selectors/getShareProjectProject';\nimport { getShareProjectRemovingUser } from 'src/modules/sharing-projects/selectors/getShareProjectRemovingUser';\nimport { getShareProjectUsers } from 'src/modules/sharing-projects/selectors/getShareProjectUsers';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* shareProjectRemoveSaga(): SagaIterator {\n const project = yield* select(getShareProjectProject);\n const users = yield* select(getShareProjectUsers);\n const user = yield* select(getShareProjectRemovingUser);\n\n try {\n yield* call(logDebug, 'Removing user from project...', { project, user });\n yield* put(SHARE_PROJECT_REMOVE_SUBMIT.pending());\n\n yield* call(removeUserFromSharedProject, user, project);\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'shareProject/notification/removeUser/success',\n },\n );\n\n yield* call(logDebug, 'Removing user from project... done', { project, user });\n yield* put(SHARE_PROJECT_REMOVE_SUBMIT.success(users.filter((it) => it.id !== user.id)));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(showNotification, { variant: 'error', type: 'error' });\n\n yield* call(logError, 'Removing user from project... error', { project, user, error });\n yield* put(SHARE_PROJECT_REMOVE_SUBMIT.failure(NativeError.wrap(error)));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport {\n SHARE_PROJECT_CLOSE,\n SHARE_PROJECT_FETCH,\n SHARE_PROJECT_OPEN,\n SHARE_PROJECT_REMOVE_SUBMIT,\n SHARE_PROJECT_SUBMIT,\n} from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { shareProjectFetchSaga } from 'src/modules/sharing-projects/sagas/shareProjectFetchSaga';\nimport { shareProjectRemoveSaga } from 'src/modules/sharing-projects/sagas/shareProjectRemoveSaga';\nimport { shareProjectSubmitSaga } from 'src/modules/sharing-projects/sagas/shareProjectSubmitSaga';\nimport { cancel, fork, put, take, takeLatest } from 'typed-redux-saga';\n\nexport function* shareProjectSaga(): SagaIterator {\n do {\n const { data: project } = yield* take(SHARE_PROJECT_OPEN.is);\n\n const task = yield* fork(shareProjectModalSaga);\n yield* put(SHARE_PROJECT_FETCH.request(undefined, project));\n\n yield* take(SHARE_PROJECT_CLOSE.is);\n yield* cancel(task);\n } while (true);\n}\n\nfunction* shareProjectModalSaga(): SagaIterator {\n yield* takeLatest(SHARE_PROJECT_FETCH.isRequest, shareProjectFetchSaga);\n yield* takeLatest(SHARE_PROJECT_SUBMIT.isRequest, shareProjectSubmitSaga);\n yield* takeLatest(SHARE_PROJECT_REMOVE_SUBMIT.isRequest, shareProjectRemoveSaga);\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport * as A from 'fp-ts/Array';\nimport { pipe } from 'fp-ts/function';\nimport { not } from 'fp-ts/Predicate';\nimport * as S from 'fp-ts/string';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { SHARE_PROJECT_SUBMIT } from 'src/modules/sharing-projects/actions/ShareProjectActions';\nimport { SHARE_PROJECT_FORM_SCHEMA } from 'src/modules/sharing-projects/constants/schema';\nimport { loadSharedProjectUsers } from 'src/modules/sharing-projects/sagas/utils/loadSharedProjectUsers';\nimport { shareProjectWith } from 'src/modules/sharing-projects/sagas/utils/shareProjectWith';\nimport { getShareProjectProject } from 'src/modules/sharing-projects/selectors/getShareProjectProject';\nimport { getShareProjectUsers } from 'src/modules/sharing-projects/selectors/getShareProjectUsers';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* shareProjectSubmitSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const form = action.data;\n\n const project = yield* select(getShareProjectProject);\n const currentUsers = yield* select(getShareProjectUsers);\n const schema = SHARE_PROJECT_FORM_SCHEMA(\n currentUsers\n .map((it) => it.email)\n .concat(project.owner ? [project.owner.email] : []),\n );\n\n const formValid = yield* call(formValidate, form, schema);\n if (!formValid) {\n return;\n }\n\n const values = form.values.get(form.currentState);\n const emails = pipe(\n values.users.split(','),\n A.map(S.trim),\n A.map(S.toLowerCase),\n A.filter(not(S.isEmpty)),\n A.uniq(S.Eq),\n );\n\n try {\n yield* call(logDebug, 'Post emails to share project... started');\n yield* put(SHARE_PROJECT_SUBMIT.pending());\n yield* call(formSubmitStart, form);\n\n yield* call(shareProjectWith, project, emails);\n const updatedUsers = yield* call(loadSharedProjectUsers, project);\n\n yield* call({\n fn: form.reset,\n context: form,\n }, form.initialState);\n yield* call(formSubmitSuccess, form);\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'shareProject/notification/share/success',\n messageValue: {\n userList: values.users,\n },\n },\n );\n\n yield* call(logDebug, 'Post emails to share project... done');\n yield* put(SHARE_PROJECT_SUBMIT.success(updatedUsers));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(formSubmitFailure, form, {\n users: {\n path: '',\n code: 'emailListFailure',\n value: values,\n\n message: String(error),\n context: {},\n },\n });\n\n yield* call(logError, 'Post emails to share project... error', { error });\n yield* put(SHARE_PROJECT_SUBMIT.failure(NativeError.wrap(error)));\n }\n}\n","import { NativeError, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { array } from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { Project } from 'src/modules/common/types/Project';\nimport { SHARED_USER } from 'src/modules/sharing-projects/codecs/SharedUser';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { call } from 'typed-redux-saga';\n\nexport function* loadSharedProjectUsers(project: Project): SagaIterator> {\n try {\n const { content } = yield* call(\n makeRestRequest,\n 'GET',\n `/projects/${encodeURIComponent(project.id)}/users`,\n );\n\n return yield* call(decodeOrThrow, array(SHARED_USER), content);\n } catch (error) {\n throw new RuntimeError(\n 'Could not load list of project users (shared)',\n { project },\n NativeError.wrap(error),\n );\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { Project } from 'src/modules/common/types/Project';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { call } from 'typed-redux-saga';\n\nexport function* removeUserFromSharedProject(sharedUser: SharedUser, project: Project): SagaIterator {\n try {\n yield* call(\n makeRestRequest,\n 'DELETE',\n `/projects/${encodeURIComponent(project.id)}/users/${encodeURIComponent(sharedUser.id)}`,\n );\n } catch (error) {\n throw new RuntimeError(\n 'Could not delete user from sharing project',\n { sharedUser, project },\n NativeError.wrap(error),\n );\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { Project } from 'src/modules/common/types/Project';\nimport { call } from 'typed-redux-saga';\n\nexport function* shareProjectWith(\n project: Project,\n users: ReadonlyArray,\n): SagaIterator {\n try {\n yield* call(makeRestRequest, 'POST', `/projects/${encodeURIComponent(project.id)}/users`, { users });\n } catch (error) {\n throw new RuntimeError('Could not post user to share project with', { users, project }, NativeError.wrap(error));\n }\n}\n","import { ShareProjectData } from 'src/modules/sharing-projects/types/ShareProjectState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getShareProjectData(state: RootState): ShareProjectData | null {\n return state.shareProject.data;\n}\n","import { createSelector } from 'reselect';\nimport { getShareProjectData } from 'src/modules/sharing-projects/selectors/getShareProjectData';\nimport { assertNever } from 'src/utils/assert';\n\nexport const getShareProjectProject = createSelector([\n getShareProjectData,\n], (data) => {\n if (data !== null) {\n return data.project;\n }\n\n return assertNever('Project to share is not initialed yet', { data });\n});\n","import { createSelector } from 'reselect';\nimport { getShareProjectData } from 'src/modules/sharing-projects/selectors/getShareProjectData';\nimport { assertNever } from 'src/utils/assert';\n\nexport const getShareProjectRemovingUser = createSelector([\n getShareProjectData,\n], (data) => {\n if (data?.removing?.user) {\n return data.removing.user;\n }\n\n return assertNever('Project to remove is not initialed yet', { data });\n});\n","import { createSelector } from 'reselect';\nimport { getShareProjectData } from 'src/modules/sharing-projects/selectors/getShareProjectData';\nimport { assertNever } from 'src/utils/assert';\n\nexport const getShareProjectUsers = createSelector([\n getShareProjectData,\n], (data) => {\n if (data?.users.state === 'success') {\n return data.users.value;\n }\n\n return assertNever('Project users is not initialed yet', { data });\n});\n","import './ShareProjectModal.scss';\nimport { Loading, ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { FormController } from '@form-ts/core';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomLoading } from 'src/modules/common/components/CustomLoading';\nimport { ArrowRightIcon } from 'src/modules/common/icons/ArrowRightIcon';\nimport { Future } from 'src/modules/common/types/Future';\nimport { Project } from 'src/modules/common/types/Project';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { ShareProjectForm } from 'src/modules/sharing-projects/types/ShareProjectForm';\nimport { ShareProjectShareForm } from 'src/modules/sharing-projects/views/ShareProjectShareForm';\nimport { ShareProjectUserList } from 'src/modules/sharing-projects/views/ShareProjectUserList';\n\ntype Props = {\n readonly project: Project;\n readonly users: Future>;\n\n readonly onSubmit: (form: FormController) => void;\n readonly onCancel: () => void;\n readonly onRemove: (user: SharedUser) => void;\n};\n\nexport const ShareProjectModal = ({\n project,\n users,\n onSubmit,\n onCancel,\n onRemove,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n <>\n }\n title={}\n buttonOnClick={onCancel}\n />\n\n \n {users.state === 'success' && (\n
    \n \n
    \n )}\n\n {users.state === 'success' && (\n
    \n \n
    \n )}\n\n {users.state === 'pending' && (\n
    \n \n
    \n )}\n
    \n\n \n \n \n \n \n \n );\n};\n","import './ShareProjectRemoveModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { Project } from 'src/modules/common/types/Project';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\n\ntype Props = {\n readonly project: Project;\n readonly user: SharedUser;\n readonly submitting: boolean;\n\n readonly onConfirm: () => void;\n readonly onCancel: () => void;\n};\n\nexport const ShareProjectRemoveModal = ({\n project,\n user,\n submitting,\n onConfirm,\n onCancel,\n}: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n <>\n }\n buttonOnClick={onCancel}\n />\n\n \n
    \n \n
    \n
    \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n","import './ShareProjectShareForm.scss';\nimport { FormController } from '@form-ts/core';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { pipe } from 'fp-ts/function';\nimport React, { useCallback, useMemo } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { Project } from 'src/modules/common/types/Project';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { SHARE_PROJECT_FORM_SCHEMA } from 'src/modules/sharing-projects/constants/schema';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\nimport { ShareProjectForm } from 'src/modules/sharing-projects/types/ShareProjectForm';\n\ntype Props = {\n readonly project: Project;\n readonly users: ReadonlyArray;\n readonly onSubmit: (form: FormController) => void;\n};\n\nexport const ShareProjectShareForm = ({ project, users, onSubmit }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const form = useForm('shareProject.form', {\n reinitialize: false,\n initialValues: {\n users: '',\n },\n });\n\n const validationSchema = useMemo(() => SHARE_PROJECT_FORM_SCHEMA(\n users\n .map((item) => item.email)\n .concat(project.owner ? [project.owner.email] : []),\n ), [users, project]);\n useFormValidator(form, validationSchema);\n\n const submitting = useFormWatch(form, form.submitting.get);\n const submitSucceeded = useFormWatch(form, form.submitSucceded.get);\n\n const handleBlur = useCallback(() => {\n form.change(pipe(\n form.currentState,\n form.submitSucceded.set(false),\n ));\n }, [form]);\n const handleSubmit = useCallback((event: React.FormEvent): void => {\n event.preventDefault();\n onSubmit(form);\n }, [form, onSubmit]);\n\n return (\n \n (submitSucceeded ? (\n
    \n \n
    \n ) : '')}\n />\n\n \n \n \n \n );\n};\n","import './ShareProjectUserList.scss';\nimport {\n StructuredListBody,\n StructuredListCell,\n StructuredListHead,\n StructuredListRow,\n StructuredListWrapper,\n} from '@carbon/react';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { Project } from 'src/modules/common/types/Project';\nimport { SharedUser } from 'src/modules/sharing-projects/types/SharedUser';\n\ntype Props = {\n readonly project: Project;\n readonly users: ReadonlyArray;\n readonly onRemove: (user: SharedUser) => void;\n};\n\nexport const ShareProjectUserList = ({ project, users, onRemove }: Props): React.ReactElement => (\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n {project.owner\n ? project.owner.lastName\n : '—'}\n \n\n \n {project.owner\n ? project.owner.firstName\n : '—'}\n \n\n \n {project.owner\n ? project.owner.email\n : '—'}\n \n\n \n \n \n\n \n \n\n {users.map((user) => (\n \n \n {user.lastName}\n \n\n \n {user.firstName}\n \n\n \n {user.email}\n \n\n \n \n \n\n \n onRemove(user)}\n >\n \n \n \n \n ))}\n \n \n);\n","import { FormController } from '@form-ts/core';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { User } from 'src/modules/users/types/User';\nimport { UserSyncMode } from 'src/modules/users/types/UserSyncMode';\nimport { createActions } from 'src/utils/createActions';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const USER_SAVE = createActions<\nUser,\nUser,\nUser\n>('USER_SAVE');\nexport const USER_ADD = createActions, User>('USER_ADD');\nexport const USER_DELETE = createActions, void, ReadonlyArray>('USER_DELETE');\n\nexport const USER_SYNC_PERFORM = createActions<\nUserSyncMode,\nvoid\n>('USER_SYNC_PERFORM');\nexport const USER_SYNC_RESET = createTrigger('USER_SYNC_RESET');\n","import { SortingOrder, SortingTarget } from 'src/modules/users/types/Sorting';\nimport { User } from 'src/modules/users/types/User';\nimport { createTrigger } from 'src/utils/createTrigger';\n\nexport const USERS_LIST_FETCH = createTrigger>('USERS_LIST_FETCH');\nexport const USERS_LIST_RESET = createTrigger('USERS_LIST_RESET');\n\nexport const USERS_LIST_QUERY = createTrigger('USER_LIST_QUERY');\nexport const USERS_LIST_TARGET = createTrigger('USERS_LIST_TARGET');\nexport const USERS_LIST_ORDER = createTrigger('USERS_LIST_ORDER');\n","import { DATE_TIME, UUID } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport * as C from 'io-ts/Codec';\nimport { USER_ROLE } from 'src/modules/common/codecs/UserRole';\nimport { User } from 'src/modules/users/types/User';\n\nexport const ORGANIZATION_USER: C.Codec = C.struct({\n createdAt: DATE_TIME,\n email: C.string,\n firstName: C.string,\n id: UUID,\n lastName: C.string,\n role: USER_ROLE,\n latestActivity: C.nullable(DATE_TIME),\n});\n","import './UserListActions.scss';\nimport React, { ChangeEvent, memo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'src/migration/react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CrossIcon } from 'src/modules/common/icons/CrossIcon';\nimport { PlusIcon } from 'src/modules/common/icons/PlusIcon';\nimport { SearchIcon } from 'src/modules/common/icons/SearchIcon';\n\ntype Props = {\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n handleAddUserOpen: () => void;\n};\n\nexport const UserListActions = memo(({ searchQuery, setSearchQuery, handleAddUserOpen }: Props) => {\n const intl = useIntl();\n\n const handleSearchChange = (event: ChangeEvent): void => {\n const value = event.target.value.trim().toLowerCase();\n\n if (value.length > 100) {\n return;\n }\n\n setSearchQuery(value);\n };\n\n const handleSearchClear = (): void => {\n setSearchQuery('');\n };\n\n return (\n
    \n
    \n
    \n \n
    \n\n \n\n {searchQuery && (\n null}\n tabIndex={0}\n aria-label={intl.formatMessage({ id: 'admin/users/search/clear/label' })}\n >\n \n
    \n )}\n
    \n\n \n \n\n
    \n \n
    \n
    \n \n );\n});\n","import './UserListHeader.scss';\nimport React, { memo } from 'react';\nimport { FormattedMessage, useIntl } from 'src/migration/react-intl';\nimport { Checkbox } from 'src/modules/common/components/Checkbox';\nimport { ArrowDownIcon } from 'src/modules/common/icons/ArrowDownIcon';\nimport { ArrowUpIcon } from 'src/modules/common/icons/ArrowUpIcon';\nimport { SortingOrder, SortingTarget } from 'src/modules/users/types/Sorting';\n\ntype Props = {\n areAllSelected: boolean;\n areSomeSelected: boolean;\n sortingTarget: SortingTarget;\n setSortingTarget: (target: SortingTarget) => void;\n sortingOrder: SortingOrder;\n setSortingOrder: (order: SortingOrder) => void;\n handleHeaderCheckboxChange: () => void;\n};\n\nexport const UserListHeader = memo(({\n areAllSelected,\n areSomeSelected,\n sortingTarget,\n sortingOrder,\n setSortingTarget,\n setSortingOrder,\n handleHeaderCheckboxChange,\n}: Props) => {\n const intl = useIntl();\n\n const onSortingChange = (target: SortingTarget): void => {\n if (sortingTarget !== target) {\n setSortingTarget(target);\n return setSortingOrder('asc');\n }\n\n if (sortingOrder === 'asc') {\n return setSortingOrder('desc');\n }\n\n setSortingTarget('firstName');\n return setSortingOrder('asc');\n };\n\n return (\n
    \n
    \n\n \n\n onSortingChange('firstName')}\n aria-label={intl.formatMessage({ id: 'admin/users/list/content/header/firstName' })}\n >\n \n\n {sortingTarget === 'firstName' && (\n
    \n {sortingOrder === 'asc'\n ? ()\n : ()}\n
    \n )}\n \n\n onSortingChange('lastName')}\n aria-label={intl.formatMessage({ id: 'admin/users/list/content/header/lastName' })}\n >\n \n\n {sortingTarget === 'lastName' && (\n
    \n {sortingOrder === 'asc'\n ? ()\n : ()}\n
    \n )}\n \n\n onSortingChange('email')}\n aria-label={intl.formatMessage({ id: 'admin/users/list/content/header/username' })}\n >\n \n\n {sortingTarget === 'email' && (\n
    \n {sortingOrder === 'asc'\n ? ()\n : ()}\n
    \n )}\n \n\n onSortingChange('role')}\n aria-label={intl.formatMessage({ id: 'admin/users/list/content/header/role' })}\n >\n \n\n {sortingTarget === 'role' && (\n
    \n {sortingOrder === 'asc'\n ? ()\n : ()}\n
    \n )}\n \n
    \n );\n});\n","import './UserRow.scss';\nimport { useForm } from '@form-ts/react';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { constNull } from 'fp-ts/lib/function';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { useAction } from 'src/hooks/useAction';\nimport { FormattedMessage } from 'src/migration/react-intl';\nimport { Checkbox } from 'src/modules/common/components/Checkbox';\nimport { userDateFormat } from 'src/modules/common/constants/dateFormat';\nimport { ChevronDownIcon } from 'src/modules/common/icons/ChevronDownIcon';\nimport { ChevronUpIcon } from 'src/modules/common/icons/ChevronUpIcon';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { UserRole } from 'src/modules/common/types/UserRole';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { USER_SAVE } from 'src/modules/users/actions/UserActions';\nimport { USER_EDIT_FORM_SCHEMA } from 'src/modules/users/constants/userEditFormSchema';\nimport { User } from 'src/modules/users/types/User';\n\ntype Props = {\n readonly isSelf: boolean;\n readonly currentUser: User;\n readonly isSelected: boolean;\n readonly onSelectHandler: (user: User) => void;\n};\n\nexport const UserRow = memo(({\n isSelf,\n currentUser,\n isSelected,\n onSelectHandler,\n}: Props) => {\n const [isRowOpened, setRowOpened] = useState(false);\n const [contentHeight, setContentHeight] = useState(40);\n\n const form = useForm('admin.users.edit', {\n initialValues: {\n email: currentUser.email,\n firstName: currentUser.firstName,\n lastName: currentUser.lastName,\n role: currentUser.role,\n },\n reinitialize: false,\n });\n useFormValidator(form, USER_EDIT_FORM_SCHEMA);\n\n const saveUser = useAction(USER_SAVE.request);\n\n const handleSaveUser = useCallback(() => {\n const formData = form.currentState.values;\n\n const updatedUser = {\n ...currentUser,\n ...formData,\n };\n\n return saveUser(updatedUser, updatedUser);\n }, [saveUser, form, currentUser]);\n\n const onSelect = useCallback((event: React.MouseEvent) => {\n event.stopPropagation();\n\n onSelectHandler(currentUser);\n }, [onSelectHandler, currentUser]);\n\n useEffect(() => form.subscribe((prevState) => {\n const nextState = form.currentState;\n\n const errors = form.errors.get(form.currentState);\n const isValid = Object.entries(errors).length === 0;\n\n if (isValid && prevState.values !== nextState.values) {\n handleSaveUser();\n }\n }), [form, handleSaveUser]);\n\n return (\n \n setRowOpened((prev) => !prev)}\n role=\"row\"\n tabIndex={0}\n onKeyDown={() => null}\n >\n
    \n {isRowOpened ? () : ()}\n
    \n\n
    \n {!isSelf && (\n \n )}\n
    \n\n

    \n {currentUser.firstName}\n

    \n\n

    \n {currentUser.lastName}\n

    \n\n

    \n {currentUser.email}\n

    \n\n

    \n \n

    \n
    \n\n setContentHeight(current?.offsetHeight || 40)}\n className=\"bp-user-row__content\"\n >\n
    \n
    \n }\n required={true}\n size=\"md\"\n maxLength={50}\n theme=\"white\"\n />\n\n }\n maxLength={50}\n renderHint={constNull}\n required={true}\n size=\"md\"\n theme=\"white\"\n />\n
    \n\n
    \n }\n maxLength={50}\n renderHint={constNull}\n required={true}\n size=\"md\"\n theme=\"white\"\n />\n\n }\n disabled={isSelf}\n itemToElement={RenderItem}\n options={ROLE_LIST}\n renderSelectedItem={renderSelectedItem}\n size=\"md\"\n theme=\"white\"\n />\n
    \n
    \n\n
    \n
    \n

    \n\n

    {dayjs(currentUser.createdAt).format(userDateFormat)}

    \n
    \n\n
    \n

    \n\n

    \n {currentUser.latestActivity\n ? dayjs(currentUser.latestActivity).format(userDateFormat)\n : (\n \n )}\n

    \n
    \n
    \n \n \n );\n});\n\nconst renderSelectedItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\nconst RenderItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\n\nconst ROLE_LIST = [\n UserRole.USER,\n UserRole.ADMIN,\n];\nconst ROLE_NAMES = {\n [UserRole.USER]: ,\n [UserRole.ADMIN]: ,\n};\n","import { trim } from 'fp-ts/string';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\n\nexport const USER_ADD_FORM_SCHEMA:\n(emailsArray: string[]) => FormRule = (emailsArray) => R.struct({\n email: R.map(trim, R.allOf([R.emailAlreadyExist(emailsArray), R.nonEmpty(), R.email()])),\n firstName: R.map(trim, R.allOf([R.nonEmpty(), R.maxLength(50)])),\n lastName: R.map(trim, R.allOf([R.nonEmpty(), R.maxLength(50)])),\n role: R.nonEmpty(),\n});\n","import { trim } from 'fp-ts/string';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { FormRule } from 'src/modules/form/types/FormRule';\nimport * as R from 'src/modules/form/utils/rules';\n\nexport const USER_EDIT_FORM_SCHEMA: FormRule = R.struct({\n email: R.map(trim, R.allOf([R.nonEmpty(), R.email()])),\n firstName: R.map(trim, R.allOf([R.nonEmpty(), R.maxLength(50)])),\n lastName: R.map(trim, R.allOf([R.nonEmpty(), R.maxLength(50)])),\n role: R.nonEmpty(),\n});\n","import React, { memo, useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomBreadcrumbItem } from 'src/modules/common/components/CustomBreadcrumbItem';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { AdminLayout } from 'src/modules/common/layouts/AdminLayout';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { USER_DELETE } from 'src/modules/users/actions/UserActions';\nimport { USERS_LIST_ORDER, USERS_LIST_QUERY, USERS_LIST_TARGET } from 'src/modules/users/actions/UsersActions';\nimport { getSortedFoundSelectableUsers } from 'src/modules/users/selectors/getSortedFoundSelectableUsers';\nimport { getSortedFoundUsers } from 'src/modules/users/selectors/getSortedFoundUsers';\nimport { getUserDeleting } from 'src/modules/users/selectors/getUserDeleting';\nimport { getUserEditing } from 'src/modules/users/selectors/getUserEditing';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { getUsersQuery } from 'src/modules/users/selectors/getUsersQuery';\nimport { getUsersSortingOrder } from 'src/modules/users/selectors/getUsersSortingOrder';\nimport { getUsersSortingTarget } from 'src/modules/users/selectors/getUsersSortingTarget';\nimport { User } from 'src/modules/users/types/User';\nimport { AddUserModal } from 'src/modules/users/views/AddUserModal';\nimport { UsersListBody } from 'src/modules/users/views/UsersListBody';\n\nexport const UsersPage = memo((): React.ReactElement => {\n const intl = useIntl();\n\n const [isAddUserModalOpen, setAddUserModalOpen] = useState(false);\n\n const userDeleting = useSelector(getUserDeleting);\n const userEditing = useSelector(getUserEditing);\n const loggedInUser = useSelector(getLoggedInUser);\n const searchQuery = useSelector(getUsersQuery);\n const sortingTarget = useSelector(getUsersSortingTarget);\n const sortingOrder = useSelector(getUsersSortingOrder);\n const allUserSnapshots = useSelector(getUsersListData);\n const sortedFoundUsers = useSelector(getSortedFoundUsers);\n const sortedFoundSelectableUsers = useSelector(getSortedFoundSelectableUsers);\n\n const deleteUser = useAction(USER_DELETE.request);\n const setSearchQuery = useAction(USERS_LIST_QUERY.trigger);\n const setSortingTarget = useAction(USERS_LIST_TARGET.trigger);\n const setSortingOrder = useAction(USERS_LIST_ORDER.trigger);\n\n const handleAddUserOpen = (): void => {\n setAddUserModalOpen(true);\n };\n\n const handleAddUserCancel = (): void => {\n setAddUserModalOpen(false);\n };\n\n const handleDeleteUserSubmit = (usersToDelete: ReadonlyArray): void => deleteUser(usersToDelete, usersToDelete);\n\n return (\n <>\n \n {intl.formatMessage({ id: 'admin/users/list/title' })}\n \n\n \n \n {intl.formatMessage({ id: 'admin/users/header/breadcrumbs/project' })}\n \n \n )}\n title={\n intl.formatMessage(\n { id: 'admin/users/list/header/title' },\n { organization: loggedInUser.organization.name },\n )\n }\n >\n \n\n \n \n \n \n \n );\n});\n","import { Action } from 'redux';\nimport {\n USER_ADD,\n} from 'src/modules/users/actions/UserActions';\nimport { UsersState } from 'src/modules/users/types/UsersState';\n\nexport function userAddingReducer(state: UsersState, action: Action): UsersState {\n if (USER_ADD.isSuccess(action)) {\n return {\n ...state,\n userSnapshots: [...state.userSnapshots, { user: action.data, action: null }],\n };\n }\n\n return state;\n}\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport {\n USER_DELETE,\n} from 'src/modules/users/actions/UserActions';\nimport { UsersState } from 'src/modules/users/types/UsersState';\n\nexport function userDeletingReducer(state: UsersState, action: Action): UsersState {\n if (USER_DELETE.isPending(action)) {\n const deletingUserIds = action.meta.map((deletingUser) => deletingUser.id);\n\n return {\n ...state,\n userSnapshots: state.userSnapshots.map((userSnapshot) => (deletingUserIds.includes(userSnapshot.user.id)\n ? { ...userSnapshot, action: 'deleting' }\n : userSnapshot\n )),\n deleting: {\n status: FUTURE.pending(),\n },\n };\n }\n if (USER_DELETE.isSuccess(action)) {\n const deletedUserIds = action.meta.map((user) => user.id);\n return {\n ...state,\n userSnapshots: state.userSnapshots.filter((userSnapshot) => !deletedUserIds.includes(userSnapshot.user.id)),\n deleting: {\n status: FUTURE.success(undefined),\n },\n };\n }\n if (USER_DELETE.isFailure(action)) {\n return {\n ...state,\n userSnapshots: state.userSnapshots.map((userSnapshot) => (userSnapshot.action === 'deleting'\n ? { ...userSnapshot, action: null }\n : userSnapshot\n )),\n deleting: {\n status: FUTURE.failure(action.data),\n },\n };\n }\n return state;\n}\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport { USER_SAVE } from 'src/modules/users/actions/UserActions';\nimport { UsersState } from 'src/modules/users/types/UsersState';\n\nexport function userEditingReducer(state: UsersState, action: Action): UsersState {\n if (USER_SAVE.isPending(action)) {\n return {\n ...state,\n userSnapshots: state.userSnapshots\n .filter((userSnapshot) => userSnapshot.action !== 'deleting')\n .map((userSnapshot) => (userSnapshot.user.id === action.meta.id\n ? { user: action.meta, action: 'editing' }\n : userSnapshot\n )),\n editing: {\n status: FUTURE.pending(),\n },\n };\n }\n if (USER_SAVE.isSuccess(action)) {\n return {\n ...state,\n userSnapshots: state.userSnapshots\n .filter((userSnapshot) => userSnapshot.action !== 'deleting')\n .map((userSnapshot) => (userSnapshot.user.id === action.data.id\n ? { ...userSnapshot, action: null }\n : userSnapshot\n )),\n editing: {\n status: FUTURE.success(undefined),\n },\n };\n }\n if (USER_SAVE.isFailure(action)) {\n return {\n ...state,\n editing: {\n status: FUTURE.failure(action.data),\n },\n };\n }\n return state;\n}\n","import { Action } from 'redux';\nimport { FUTURE } from 'src/modules/common/types/Future';\nimport {\n USER_SYNC_PERFORM,\n USER_SYNC_RESET,\n} from 'src/modules/users/actions/UserActions';\nimport { UsersState } from 'src/modules/users/types/UsersState';\n\nexport function userSyncReducer(state: UsersState, action: Action): UsersState {\n const isDeletingUsers = state.userSnapshots.some((userSnapshot) => userSnapshot.action === 'deleting');\n\n if (USER_SYNC_PERFORM.isRequest(action)) {\n return {\n ...state,\n deleting: isDeletingUsers ? {\n status: FUTURE.pending(),\n } : state.deleting,\n editing: {\n status: FUTURE.pending(),\n },\n };\n }\n if (USER_SYNC_PERFORM.isPending(action)) {\n return {\n ...state,\n deleting: isDeletingUsers ? {\n status: FUTURE.pending(),\n } : state.deleting,\n editing: {\n status: FUTURE.pending(),\n },\n };\n }\n if (USER_SYNC_PERFORM.isSuccess(action)) {\n return {\n ...state,\n deleting: isDeletingUsers ? {\n status: FUTURE.success(undefined),\n } : state.deleting,\n editing: {\n status: FUTURE.success(undefined),\n },\n };\n }\n if (USER_SYNC_PERFORM.isFailure(action)) {\n return {\n ...state,\n deleting: isDeletingUsers ? {\n status: FUTURE.failure(action.data),\n } : state.deleting,\n editing: {\n status: FUTURE.failure(action.data),\n },\n };\n }\n if (USER_SYNC_RESET.is(action)) {\n return {\n ...state,\n deleting: null,\n editing: null,\n };\n }\n return state;\n}\n","import { Action } from 'redux';\nimport {\n USERS_LIST_FETCH,\n USERS_LIST_ORDER,\n USERS_LIST_QUERY,\n USERS_LIST_RESET,\n USERS_LIST_TARGET,\n} from 'src/modules/users/actions/UsersActions';\nimport { UsersState } from 'src/modules/users/types/UsersState';\n\nexport function usersListDataReducer(state: UsersState, action: Action): UsersState {\n if (USERS_LIST_FETCH.is(action)) {\n return {\n ...state,\n userSnapshots: action.data.map((user) => ({ user: user, action: null })),\n };\n }\n if (USERS_LIST_RESET.is(action)) {\n return {\n ...state,\n query: '',\n sortingOrder: 'asc',\n sortingTarget: 'firstName',\n userSnapshots: [],\n };\n }\n if (USERS_LIST_QUERY.is(action)) {\n return {\n ...state,\n query: action.data,\n };\n }\n if (USERS_LIST_TARGET.is(action)) {\n return {\n ...state,\n sortingTarget: action.data,\n };\n }\n if (USERS_LIST_ORDER.is(action)) {\n return {\n ...state,\n sortingOrder: action.data,\n };\n }\n return state;\n}\n","import { userAddingReducer } from 'src/modules/users/reducers/userAddingReducer';\nimport { userDeletingReducer } from 'src/modules/users/reducers/userDeletingReducer';\nimport { userEditingReducer } from 'src/modules/users/reducers/userEditingReducer';\nimport { usersListDataReducer as usersDataReducer } from 'src/modules/users/reducers/usersListDataReducer';\nimport { userSyncReducer } from 'src/modules/users/reducers/userSyncReducer';\nimport { UsersState } from 'src/modules/users/types/UsersState';\nimport { chainReducers } from 'src/utils/chainReducers';\n\nconst defaultState: UsersState = {\n userSnapshots: [],\n deleting: null,\n editing: null,\n query: '',\n sortingTarget: 'firstName',\n sortingOrder: 'asc',\n};\n\nexport const usersReducer = chainReducers(defaultState, [\n userAddingReducer,\n userDeletingReducer,\n userEditingReducer,\n usersDataReducer,\n userSyncReducer,\n]);\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { formSubmitFailure } from 'src/modules/form/sagas/utils/formSubmitFailure';\nimport { formSubmitStart } from 'src/modules/form/sagas/utils/formSubmitStart';\nimport { formSubmitSuccess } from 'src/modules/form/sagas/utils/formSubmitSuccess';\nimport { formValidate } from 'src/modules/form/sagas/utils/formValidate';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { USER_ADD } from 'src/modules/users/actions/UserActions';\nimport { USER_ADD_FORM_SCHEMA } from 'src/modules/users/constants/userAddFormSchema';\nimport { createUser } from 'src/modules/users/sagas/utils/createUser';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* userCreateSaga(action: GetRequestActionType): SagaIterator {\n const userForm = action.data;\n const userValues = userForm.values.get(userForm.currentState);\n\n const userSnapshots = yield* select(getUsersListData);\n const emails = userSnapshots.map((userSnapshot) => userSnapshot.user.email);\n const schema = USER_ADD_FORM_SCHEMA(emails);\n\n const formValid = yield* call(formValidate, userForm, schema);\n if (!formValid) {\n return;\n }\n\n try {\n yield* put(USER_ADD.pending(action.meta));\n yield* call(logDebug, 'Saving user...');\n yield* call(formSubmitStart, userForm);\n\n const savedUserData = { ...userValues, email: userValues.email.trim() };\n const savedUser = yield* call(createUser, savedUserData);\n\n yield* put(USER_ADD.success(savedUser));\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'admin/user/notification/add/success',\n },\n );\n\n yield* call(logDebug, 'Saving user... done', savedUser);\n yield* call(formSubmitSuccess, userForm);\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Saving user... error', error);\n yield* put(USER_ADD.failure(NativeError.wrap(error)));\n\n yield* call(showNotification, { type: 'error', variant: 'error' });\n\n yield* call(formSubmitFailure, userForm, {\n '': {\n path: '',\n code: 'unknown',\n value: userValues,\n\n message: String(error),\n context: {},\n },\n });\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { call as callEffect } from 'redux-saga/effects';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { USER_DELETE } from 'src/modules/users/actions/UserActions';\nimport { deleteUser } from 'src/modules/users/sagas/utils/deleteUser';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { all, call, put } from 'typed-redux-saga';\n\nexport function* userRemoveSaga(action: GetRequestActionType): SagaIterator {\n try {\n yield* put(USER_DELETE.pending(action.data));\n yield* call(logDebug, 'Removing user...');\n\n yield* all(action.data.map(\n (user) => callEffect(deleteUser, user.id),\n ));\n\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'admin/user/notification/remove/success',\n },\n );\n\n yield* call(logDebug, 'Removing user... done');\n yield* put(USER_DELETE.success(undefined, action.meta));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(showNotification, { type: 'error', variant: 'error' });\n\n yield* call(logError, 'Removing user... error', error);\n yield* put(USER_DELETE.failure(NativeError.wrap(error), action.meta));\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { sentryCatch } from 'src/modules/config/utils/sentryCatch';\nimport { validate } from 'src/modules/form/utils/validate';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { USER_SAVE } from 'src/modules/users/actions/UserActions';\nimport { USER_EDIT_FORM_SCHEMA } from 'src/modules/users/constants/userEditFormSchema';\nimport { syncUserBackground } from 'src/modules/users/sagas/utils/syncUserBackground';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { call, put, select } from 'typed-redux-saga';\n\nexport function* userSaveSaga(action: GetRequestActionType): SagaIterator {\n try {\n yield* put(USER_SAVE.pending(action.meta));\n yield* call(logDebug, 'Saving users...');\n\n const userSnapshots = yield* select(getUsersListData);\n\n for (const userSnapshot of userSnapshots) {\n const savedUserData = {\n ...userSnapshot.user,\n email: userSnapshot.user.email.trim(),\n };\n\n const errors = validate(savedUserData, USER_EDIT_FORM_SCHEMA);\n\n if (Object.keys(errors).length) {\n throw new Error('Saving user validation failed');\n }\n }\n\n const synchronizedUsers = yield* call(syncUserBackground);\n\n yield* call(logDebug, 'Saving users... done', synchronizedUsers);\n yield* put(USER_SAVE.success(action.data, action.data));\n } catch (error) {\n yield* call(sentryCatch, error);\n\n yield* call(logError, 'Saving users... error', error);\n yield* put(USER_SAVE.failure(NativeError.wrap(error), action.meta));\n\n yield* call(showNotification, { type: 'error', variant: 'error' });\n }\n}\n","import { NativeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { call as callEffect } from 'redux-saga/effects';\nimport { showNotification } from 'src/modules/notifications/sagas/showNotification';\nimport { USER_SYNC_PERFORM } from 'src/modules/users/actions/UserActions';\nimport { deleteUser } from 'src/modules/users/sagas/utils/deleteUser';\nimport { updateUser } from 'src/modules/users/sagas/utils/updateUser';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { logDebug, logError } from 'src/sagas/utils/logging';\nimport { GetRequestActionType } from 'src/utils/createActions';\nimport { all, call, delay, put, select } from 'typed-redux-saga';\n\nexport function* userSyncPerformSaga(\n action: GetRequestActionType,\n): SagaIterator {\n const mode = action.data;\n\n try {\n yield* call(logDebug, `Synchronizing users in ${mode}...`);\n yield* put(USER_SYNC_PERFORM.pending(action.meta));\n\n if (mode === 'background') {\n yield* delay(1_000);\n }\n\n const userSnapshots = yield* select(getUsersListData);\n const usersToUpdate = userSnapshots\n .filter((userSnapshot) => userSnapshot.action === 'editing')\n .map((userSnapshot) => userSnapshot.user);\n const usersToDelete = userSnapshots\n .filter((userSnapshot) => userSnapshot.action === 'deleting')\n .map((userSnapshot) => userSnapshot.user);\n\n if (usersToUpdate.length === 0 && usersToDelete.length === 0) {\n return;\n }\n\n yield* all(usersToUpdate.map(\n (user) => callEffect(updateUser, user),\n ));\n\n yield* all(usersToDelete.map(\n (user) => callEffect(deleteUser, user.id),\n ));\n\n yield* call(logDebug, `Synchronizing users in ${mode}... done`);\n yield* put(USER_SYNC_PERFORM.success(action.meta, action.meta));\n yield* call(\n showNotification,\n {\n variant: 'success',\n type: 'done',\n messageId: 'admin/user/notification/save/success',\n },\n );\n } catch (error) {\n yield* call(logError, `Synchronizing users in ${mode}... error`, error);\n yield* put(USER_SYNC_PERFORM.failure(NativeError.wrap(error), action.meta));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport {\n USER_ADD,\n USER_DELETE,\n USER_SYNC_PERFORM,\n USER_SYNC_RESET,\n USER_SAVE,\n} from 'src/modules/users/actions/UserActions';\nimport { userCreateSaga } from 'src/modules/users/sagas/userCreateSaga';\nimport { userRemoveSaga } from 'src/modules/users/sagas/userRemoveSaga';\nimport { userSaveSaga } from 'src/modules/users/sagas/userSaveSaga';\nimport { userSyncPerformSaga } from 'src/modules/users/sagas/userSyncPerformSaga';\nimport { cancel, take, takeLatest } from 'typed-redux-saga';\n\nexport function* usersSaga(): SagaIterator {\n yield* takeLatest(USER_ADD.isRequest, userCreateSaga);\n yield* takeLatest(USER_SAVE.isRequest, userSaveSaga);\n yield* takeLatest(USER_DELETE.isRequest, userRemoveSaga);\n\n while (true) {\n const task = yield* takeLatest(USER_SYNC_PERFORM.isRequest, userSyncPerformSaga);\n\n yield* take(USER_SYNC_RESET.is);\n yield* cancel(task);\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { ORGANIZATION_USER } from 'src/modules/users/codecs/OrganizationUser';\nimport { User } from 'src/modules/users/types/User';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* createUser(userData: UserFormData): SagaIterator {\n const authUser = yield* select(getLoggedInUser);\n\n try {\n const { content } = yield* call(\n makeRestRequest,\n 'POST',\n `/organizations/${encodeURIComponent(authUser.organization.id)}/users`,\n userData,\n );\n return yield* call(decodeOrThrow, ORGANIZATION_USER, content);\n } catch (error) {\n throw new RuntimeError('Could not save user', { userData }, NativeError.wrap(error));\n }\n}\n","import { NativeError, RuntimeError, Uuid } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* deleteUser(userId: Uuid): SagaIterator {\n const authUser = yield* select(getLoggedInUser);\n\n try {\n yield* call(\n makeRestRequest,\n 'DELETE',\n `/organizations/${encodeURIComponent(authUser.organization.id)}/users/${encodeURIComponent(userId)}`,\n );\n } catch (error) {\n throw new RuntimeError('Could not delete user', { userId }, NativeError.wrap(error));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { syncUserForeground } from 'src/modules/users/sagas/utils/syncUserForeground';\nimport { waitUserSynchronization } from 'src/modules/users/sagas/utils/waitUserSynchronization';\nimport { getUserEditing } from 'src/modules/users/selectors/getUserEditing';\nimport { UserSnapshot } from 'src/modules/users/types/User';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* forceUserSynchronization(\n users: ReadonlyArray,\n): SagaIterator {\n // if synchronization is scheduled, new foreground task is triggered\n // to cancel all existing processes and to skip the planned delay\n const userEditing = yield* select(getUserEditing);\n if (userEditing?.status.state === 'pending') {\n yield* call(syncUserForeground, users);\n } else {\n yield* call(waitUserSynchronization, users);\n }\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { ORGANIZATION_USER } from 'src/modules/users/codecs/OrganizationUser';\nimport { User } from 'src/modules/users/types/User';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* loadUsersList(): SagaIterator> {\n const authUser = yield* select(getLoggedInUser);\n\n try {\n const { content } = yield* call(\n makeRestRequest,\n 'GET',\n `/organizations/${encodeURIComponent(authUser.organization.id)}/users`,\n );\n\n return yield* call(decodeOrThrow, USERS, content);\n } catch (error) {\n throw new RuntimeError('Could not load organization users', {}, NativeError.wrap(error));\n }\n}\n\nconst USERS: D.Decoder> = D.array(ORGANIZATION_USER);\n","import { SagaIterator } from 'redux-saga';\nimport { call as callEffect, take as takeEffect } from 'redux-saga/effects';\nimport { CancelledError } from 'src/errors/CancelledError';\nimport { USER_SYNC_PERFORM } from 'src/modules/users/actions/UserActions';\nimport { waitUserSynchronization } from 'src/modules/users/sagas/utils/waitUserSynchronization';\nimport { UserSnapshot } from 'src/modules/users/types/User';\nimport { cancel, put, race } from 'typed-redux-saga';\n\nexport function* syncUserBackground(): SagaIterator> {\n yield* put(USER_SYNC_PERFORM.request('background'));\n\n const { synchronized } = yield* race({\n synchronized: callEffect(waitUserSynchronization),\n cancelled: takeEffect(USER_SYNC_PERFORM.isRequest),\n });\n if (synchronized) {\n return synchronized;\n }\n\n yield* cancel();\n throw new CancelledError('Explicit abort of control flow');\n}\n","import { SagaIterator } from 'redux-saga';\nimport { USER_SYNC_PERFORM } from 'src/modules/users/actions/UserActions';\nimport { waitUserSynchronization } from 'src/modules/users/sagas/utils/waitUserSynchronization';\nimport { UserSnapshot } from 'src/modules/users/types/User';\nimport { call, put } from 'typed-redux-saga';\n\nexport function* syncUserForeground(): SagaIterator> {\n yield* put(USER_SYNC_PERFORM.request('foreground'));\n return yield* call(waitUserSynchronization);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { makeRestRequest } from 'src/modules/api/sagas/utils/makeRestRequest';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { ORGANIZATION_USER } from 'src/modules/users/codecs/OrganizationUser';\nimport { User } from 'src/modules/users/types/User';\nimport { call, select } from 'typed-redux-saga';\n\nexport function* updateUser(user: User): SagaIterator {\n const authUser = yield* select(getLoggedInUser);\n\n try {\n const { content } = yield* call(\n makeRestRequest,\n 'PUT',\n `/organizations/${encodeURIComponent(authUser.organization.id)}/users/${encodeURIComponent(user.id)}`,\n {\n firstName: user.firstName,\n lastName: user.lastName,\n email: user.email,\n role: user.role,\n },\n );\n return yield* call(decodeOrThrow, ORGANIZATION_USER, content);\n } catch (error) {\n throw new RuntimeError('Could not update user', { user }, NativeError.wrap(error));\n }\n}\n","import { SagaIterator } from 'redux-saga';\nimport { USER_SYNC_PERFORM } from 'src/modules/users/actions/UserActions';\nimport { getUserEditing } from 'src/modules/users/selectors/getUserEditing';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { UserSnapshot } from 'src/modules/users/types/User';\nimport { call, select, take } from 'typed-redux-saga';\n\nexport function* waitUserSynchronization(): SagaIterator> {\n const userSnapshots = yield* select(getUsersListData);\n const userEditing = yield* select(getUserEditing);\n\n if (userEditing === null) {\n return userSnapshots;\n }\n if (userEditing.status.state === 'success') {\n return userSnapshots;\n }\n if (userEditing.status.state === 'failure') {\n throw userEditing.status.error;\n }\n\n yield* take([USER_SYNC_PERFORM.isSuccess, USER_SYNC_PERFORM.isFailure]);\n return yield* call(waitUserSynchronization);\n}\n","import { createSelector } from 'reselect';\nimport { getUsersListData } from 'src/modules/users/selectors/getUsersListData';\nimport { getUsersQuery } from 'src/modules/users/selectors/getUsersQuery';\nimport { User } from 'src/modules/users/types/User';\n\nexport const getFoundUsers = createSelector(\n [getUsersListData, getUsersQuery],\n (userSnapshots, query): ReadonlyArray => {\n const users = userSnapshots.map((userSnapshot) => userSnapshot.user);\n if (query.length < 3) {\n return users;\n }\n\n const lowerCasedQuery = query.toLowerCase();\n\n return users.filter(\n ({ firstName, lastName, email }) => firstName.toLowerCase().includes(lowerCasedQuery) ||\n lastName.toLowerCase().includes(lowerCasedQuery) ||\n email.toLowerCase().includes(lowerCasedQuery),\n );\n },\n);\n","import { createSelector } from 'reselect';\nimport { getLoggedInUser } from 'src/modules/login/selectors/getLoggedInUser';\nimport { getSortedFoundUsers } from 'src/modules/users/selectors/getSortedFoundUsers';\n\nexport const getSortedFoundSelectableUsers = createSelector(\n [getSortedFoundUsers, getLoggedInUser],\n (sortedFoundUsers, loggedInUser) => sortedFoundUsers.filter((user) => user.id !== loggedInUser.id),\n);\n","import { createSelector } from 'reselect';\nimport { INTL_LOCALE_MAP } from 'src/modules/common/constants/language';\nimport { getLanguage } from 'src/modules/config/selectors/getLanguage';\nimport { getFoundUsers } from 'src/modules/users/selectors/getFoundUsers';\nimport { getUsersSortingOrder } from 'src/modules/users/selectors/getUsersSortingOrder';\nimport { getUsersSortingTarget } from 'src/modules/users/selectors/getUsersSortingTarget';\n\nexport const getSortedFoundUsers = createSelector(\n [getLanguage, getFoundUsers, getUsersSortingTarget, getUsersSortingOrder],\n (language, foundUsers, sortingTarget, sortingOrder) => [...foundUsers].sort((a, b) => {\n const collator = new Intl.Collator(INTL_LOCALE_MAP[language]);\n const targetA = a[sortingTarget];\n const targetB = b[sortingTarget];\n\n if (sortingOrder === 'asc') {\n return collator.compare(targetA, targetB);\n }\n return collator.compare(targetB, targetA);\n }),\n);\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\n\nexport const getUserDeleting = createSelector([\n getUsersState,\n], (state) => state.deleting);\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\n\nexport const getUserEditing = createSelector([\n getUsersState,\n], (state) => state.editing);\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\nimport { assertNotNull } from 'src/utils/assert';\n\nexport const getUsersListData = createSelector([\n getUsersState,\n], (state) => assertNotNull(\n state.userSnapshots,\n 'Users list should be fetched first',\n { state },\n));\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\n\nexport const getUsersQuery = createSelector([\n getUsersState,\n], (state) => state.query);\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\n\nexport const getUsersSortingOrder = createSelector([\n getUsersState,\n], (state) => state.sortingOrder);\n","import { createSelector } from 'reselect';\nimport { getUsersState } from 'src/modules/users/selectors/getUsersState';\n\nexport const getUsersSortingTarget = createSelector([\n getUsersState,\n], (state) => state.sortingTarget);\n","import { UsersState } from 'src/modules/users/types/UsersState';\nimport { RootState } from 'src/types/RootState';\n\nexport function getUsersState(state: RootState): UsersState {\n return state.users;\n}\n","import './AddUserModal.scss';\nimport { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport { useForm, useFormWatch } from '@form-ts/react';\nimport { constNull } from 'fp-ts/lib/function';\nimport React, { useEffect } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useAction } from 'src/hooks/useAction';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { UserFormData } from 'src/modules/common/types/UserFormData';\nimport { UserRole } from 'src/modules/common/types/UserRole';\nimport { DropdownField } from 'src/modules/form/components/DropdownField';\nimport { TextField } from 'src/modules/form/components/TextField';\nimport { useFormValidator } from 'src/modules/form/hooks/useFormValidator';\nimport { FormError } from 'src/modules/form/types/FormError';\nimport { ensureNonNull } from 'src/modules/form/utils/transform';\nimport { USER_ADD } from 'src/modules/users/actions/UserActions';\nimport { USER_ADD_FORM_SCHEMA } from 'src/modules/users/constants/userAddFormSchema';\nimport { UserSnapshot } from 'src/modules/users/types/User';\n\ntype Props = {\n readonly allUserSnapshots: ReadonlyArray;\n readonly onCancel: () => void;\n};\n\nexport const AddUserModal = ({ allUserSnapshots, onCancel }: Props): React.ReactElement => {\n const intl = useIntl();\n\n const addUser = useAction(USER_ADD.request);\n\n const form = useForm('admin.users.add', {\n initialValues: {\n email: '',\n firstName: '',\n lastName: '',\n role: UserRole.USER,\n },\n reinitialize: false,\n });\n\n const schema = USER_ADD_FORM_SCHEMA(\n allUserSnapshots\n .map((userSnapshot) => userSnapshot.user.email),\n );\n\n useFormValidator(form, schema);\n\n const isLoading = useFormWatch(form, form.submitting.get);\n const addUserSubmitted = useFormWatch(form, form.submitted.get);\n const addUserErrors = useFormWatch(form, form.errors.get);\n\n const onSubmit = (): void => addUser(form);\n\n useEffect(() => {\n if (addUserSubmitted && Object.entries(addUserErrors).length === 0) {\n onCancel();\n\n form.change(form.initialState);\n }\n }, [addUserErrors, addUserSubmitted, form, onCancel]);\n\n return (\n <>\n \n\n \n
    \n
    \n \n\n \n
    \n\n
    \n \n\n \n
    \n
    \n
    \n\n \n \n \n \n\n \n \n \n \n \n );\n};\n\nconst ROLE_LIST = [\n UserRole.USER,\n UserRole.ADMIN,\n];\nconst ROLE_NAMES = {\n [UserRole.USER]: ,\n [UserRole.ADMIN]: ,\n};\n\nconst renderSelectedItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\nconst RenderItem = (role: UserRole): React.ReactElement => (\n {ROLE_NAMES[role]}\n);\n","import { ModalBody, ModalFooter, ModalHeader } from '@carbon/react';\nimport React from 'react';\nimport { useIntl } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { User } from 'src/modules/users/types/User';\n\ntype Props = {\n onClose: () => void;\n onDelete: () => void;\n removing: boolean;\n selectedUsers: ReadonlyArray;\n};\n\nexport const DeleteUserModal = ({ onClose, onDelete, removing, selectedUsers }: Props): React.ReactElement => {\n const intl = useIntl();\n\n return (\n <>\n \n\n \n {intl.formatMessage(\n { id: 'admin/user/deleteModal/body/content' },\n { users: selectedUsers.map((user) => `${user.firstName} ${user.lastName}`).join(', ') },\n )}\n \n\n \n \n {intl.formatMessage({ id: 'admin/user/deleteModal/footer/cancel' })}\n \n\n \n {intl.formatMessage({ id: 'admin/user/deleteModal/footer/confirm' })}\n \n \n \n );\n};\n","import './UsersListBody.scss';\nimport React, { memo, useCallback, useEffect, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { CustomButton } from 'src/modules/common/components/CustomButton';\nimport { CustomModal } from 'src/modules/common/components/CustomModal';\nimport { DeleteIcon } from 'src/modules/common/icons/DeleteIcon';\nimport { AuthUser } from 'src/modules/common/types/AuthUser';\nimport { UserListActions } from 'src/modules/users/components/UserListActions';\nimport { UserListHeader } from 'src/modules/users/components/UserListHeader';\nimport { UserRow } from 'src/modules/users/components/UserRow';\nimport { SortingOrder, SortingTarget } from 'src/modules/users/types/Sorting';\nimport { User } from 'src/modules/users/types/User';\nimport { UserDeleting } from 'src/modules/users/types/UserDeleting';\nimport { UserEditing } from 'src/modules/users/types/UserEditing';\nimport { DeleteUserModal } from 'src/modules/users/views/DeleteUserModal';\n\ntype Props = {\n readonly searchQuery: string;\n readonly setSearchQuery: (query: string) => void;\n readonly sortingTarget: SortingTarget;\n readonly setSortingTarget: (target: SortingTarget) => void;\n readonly sortingOrder: SortingOrder;\n readonly setSortingOrder: (order: SortingOrder) => void;\n readonly sortedFoundUsers: ReadonlyArray;\n readonly sortedFoundSelectableUsers: ReadonlyArray;\n readonly loggedInUser: AuthUser;\n readonly userDeleting: UserDeleting | null;\n readonly handleDelete: (data: ReadonlyArray) => void;\n readonly handleAddUserOpen: () => void;\n};\n\nexport const UsersListBody = memo(({\n searchQuery,\n setSearchQuery,\n sortingTarget,\n setSortingTarget,\n sortingOrder,\n setSortingOrder,\n sortedFoundUsers,\n sortedFoundSelectableUsers,\n loggedInUser,\n userDeleting,\n handleDelete,\n handleAddUserOpen,\n}: Props): React.ReactElement => {\n const [isDeleteUserModalOpen, setDeleteUserModalOpen] = useState(false);\n const [selectedUsers, setSelectedUsers] = useState>([]);\n\n const areSomeSelected = selectedUsers.length !== 0 &&\n selectedUsers.length !== sortedFoundSelectableUsers.length;\n const areAllSelected = selectedUsers.length !== 0 &&\n selectedUsers.length === sortedFoundSelectableUsers.length;\n\n const handleSelectAll = (): void => {\n setSelectedUsers(sortedFoundSelectableUsers);\n };\n\n const handleSelectNone = (): void => {\n setSelectedUsers([]);\n };\n\n const handleHeaderCheckboxChange = (): void => {\n if (areAllSelected) {\n return setSelectedUsers([]);\n }\n\n return setSelectedUsers(sortedFoundSelectableUsers);\n };\n\n const handleDeleteUserCancel = (): void => {\n setDeleteUserModalOpen(false);\n };\n\n const handleDeleteUserSubmit = (): void => handleDelete(selectedUsers);\n\n const handleSelect = useCallback((selectedUser: User): void => {\n const selectedUserIds = selectedUsers.map((user) => user.id);\n const checked = selectedUserIds.includes(selectedUser.id);\n\n if (!checked) {\n return setSelectedUsers((prev) => [...prev, selectedUser]);\n }\n\n const filteredUsers = selectedUsers.filter((user) => user.id !== selectedUser.id);\n\n return setSelectedUsers(filteredUsers);\n }, [selectedUsers]);\n\n useEffect(() => {\n const allSelectableUserIds = sortedFoundSelectableUsers.map((user) => user.id);\n setSelectedUsers((prev) => prev.filter((user) => allSelectableUserIds.includes(user.id)));\n }, [sortedFoundSelectableUsers]);\n\n useEffect(() => {\n if (userDeleting?.status.state === 'success') {\n setDeleteUserModalOpen(false);\n }\n }, [userDeleting?.status]);\n\n return (\n
    \n
    \n\n {selectedUsers.length !== 0 ? (\n
    \n
    \n \n\n
    \n\n
    \n \n \n \n
    \n
    \n\n
    \n setDeleteUserModalOpen(true)}>\n \n\n
    \n \n
    \n
    \n\n
    \n\n \n \n \n
    \n
    \n ) : (\n \n )}\n\n \n\n {sortedFoundUsers.map((user) => (\n selectedUser.id).includes(user.id)}\n onSelectHandler={handleSelect}\n />\n ))}\n\n \n \n \n
    \n
    \n );\n});\n","import { connectRouter } from 'connected-react-router';\nimport { History } from 'history';\nimport { combineReducers, Reducer } from 'redux';\nimport { announcementsReducer } from 'src/modules/announcements/reducers/announcementsReducer';\nimport { assetReducer } from 'src/modules/asset/reducers/assetReducer';\nimport { configReducer } from 'src/modules/config/reducers/configReducer';\nimport { loginReducer } from 'src/modules/login/reducers/loginReducer';\nimport { modalStackReducer } from 'src/modules/modals/reducers/modalStackReducer';\nimport { notificationReducer } from 'src/modules/notifications/reducers/notificationReducer';\nimport { passwordResetReducer } from 'src/modules/password-reset/reducers/passwordResetReducer';\nimport { projectListReducer } from 'src/modules/project-list/reducers/projectListReducer';\nimport { projectSyncReducer } from 'src/modules/project-sync/reducers/projectSyncReducer';\nimport { projectViewReducer } from 'src/modules/project-view/reducers/projectViewReducer';\nimport { reportReducer } from 'src/modules/report/reducers/reportReducer';\nimport { routingReducer } from 'src/modules/routing/reducers/routingReducer';\nimport { schemaReducer } from 'src/modules/schema/reducers/schemaReducer';\nimport { scrollReducer } from 'src/modules/scroll/reducers/scrollReducer';\nimport { shareProjectReducer } from 'src/modules/sharing-projects/reducers/shareProjectReducer';\nimport { usersReducer } from 'src/modules/users/reducers/usersReducer';\nimport { RootState } from 'src/types/RootState';\n\nexport const rootReducer = (\n history: History,\n): Reducer => combineReducers({\n router: connectRouter(history),\n routing: routingReducer,\n\n scroll: scrollReducer,\n\n config: configReducer,\n login: loginReducer,\n asset: assetReducer,\n report: reportReducer,\n modals: modalStackReducer,\n schemaSelection: schemaReducer,\n\n projectList: projectListReducer,\n projectView: projectViewReducer,\n projectSync: projectSyncReducer,\n notification: notificationReducer,\n announcements: announcementsReducer,\n\n users: usersReducer,\n shareProject: shareProjectReducer,\n passwordReset: passwordResetReducer,\n});\n","import { ConnectedRouter } from 'connected-react-router';\nimport { History } from 'history';\nimport * as React from 'react';\nimport { HelmetProvider } from 'react-helmet-async';\nimport { Provider } from 'react-redux';\nimport { Route, RouteComponentProps } from 'react-router-dom';\nimport { Store } from 'redux';\nimport { BasedataPage } from 'src/modules/basedata/pages/BasedataPage';\nimport { ConfigProvider } from 'src/modules/config/containers/ConfigProvider';\nimport { ErrorBoundary } from 'src/modules/error/containers/ErrorBoundary';\nimport { ErrorPage } from 'src/modules/error/pages/ErrorPage';\nimport { EvaluationPage } from 'src/modules/evaluation/pages/EvaluationPage';\nimport { HvacPage } from 'src/modules/hvac/pages/HvacPage';\nimport { LoginPage } from 'src/modules/login/pages/LoginPage';\nimport { ModalStack } from 'src/modules/modals/pages/ModalStack';\nimport { OrganizationPage } from 'src/modules/organization/pages/OrganizationPage';\nimport { PasswordForgotPage } from 'src/modules/password-forgot/pages/PasswordForgotPage';\nimport { PasswordResetPage } from 'src/modules/password-reset/pages/PasswordResetPage';\nimport { PasswordSetupPage } from 'src/modules/password-reset/pages/PasswordSetupPage';\nimport { ProfilePage } from 'src/modules/profile/page/ProfilePage';\nimport { ProjectListPage } from 'src/modules/project-list/pages/ProjectListPage';\nimport { ReportDocumentPage } from 'src/modules/report/pages/ReportDocumentPage';\nimport { ReportPage } from 'src/modules/report/pages/ReportPage';\nimport { Initialization } from 'src/modules/routing/containers/Initialization';\nimport { RouteSwitch } from 'src/modules/routing/containers/RouteSwitch';\nimport { RouteNotFoundError } from 'src/modules/routing/errors/RouteNotFoundError';\nimport { SchemaPage } from 'src/modules/schema/pages/SchemaPage';\nimport { ScreenSizeGuard } from 'src/modules/screen-size-guard/views/ScreenSizeGuard';\nimport { ScrollRestoration } from 'src/modules/scroll/containers/ScrollRestoration';\nimport { UsersPage } from 'src/modules/users/pages/UsersPage';\nimport { RootState } from 'src/types/RootState';\n\ntype Props = {\n readonly store: Store;\n readonly history: History;\n};\n\nexport const Root = ({ store, history }: Props): React.ReactElement => (\n \n \n \n \n \n \n \n \n <>\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nconst NotFound = ({ location }: RouteComponentProps): React.ReactElement => {\n const query = Object.fromEntries(new URLSearchParams(location.search));\n const error = new RouteNotFoundError({ ...location, query });\n return ;\n};\n","import { SagaIterator } from 'redux-saga';\nimport { announcementsSaga } from 'src/modules/announcements/sagas/announcementsSaga';\nimport { assetSaga } from 'src/modules/asset/sagas/assetSaga';\nimport { basedataSaga } from 'src/modules/basedata/sagas/basedataSaga';\nimport { CONFIG_FETCH } from 'src/modules/config/actions/ConfigActions';\nimport { configSaga } from 'src/modules/config/sagas/configSaga';\nimport { evaluationSaga } from 'src/modules/evaluation/sagas/evaluationSaga';\nimport { feedbackSaga } from 'src/modules/feedback/sagas/feedbackSaga';\nimport { hvacSaga } from 'src/modules/hvac/sagas/hvacSaga';\nimport { loaderSaga } from 'src/modules/loader/sagas/loaderSaga';\nimport { loginSaga } from 'src/modules/login/sagas/loginSaga';\nimport { modalStackSaga } from 'src/modules/modals/sagas/modalStackSaga';\nimport { organizationSaga } from 'src/modules/organization/sagas/organizationSaga';\nimport { passwordForgotSaga } from 'src/modules/password-forgot/sagas/passwordForgotSaga';\nimport { passwordResetSaga } from 'src/modules/password-reset/sagas/passwordResetSaga';\nimport { profileSaga } from 'src/modules/profile/sagas/profileSaga';\nimport { projectListSaga } from 'src/modules/project-list/sagas/projectListSaga';\nimport { projectNewSaga } from 'src/modules/project-new/sagas/projectNewSaga';\nimport { projectSyncSaga } from 'src/modules/project-sync/sagas/projectSyncSaga';\nimport { projectViewSaga } from 'src/modules/project-view/sagas/projectViewSaga';\nimport { reportSaga } from 'src/modules/report/sagas/reportSaga';\nimport { routingSaga } from 'src/modules/routing/sagas/routingSaga';\nimport { schemaSaga } from 'src/modules/schema/sagas/schemaSaga';\nimport { shareProjectSaga } from 'src/modules/sharing-projects/sagas/shareProjectSaga';\nimport { usersSaga } from 'src/modules/users/sagas/usersSaga';\nimport { fork, put, take } from 'typed-redux-saga';\n\nexport function* rootSaga(): SagaIterator {\n yield* fork(loaderSaga);\n yield* fork(configSaga);\n\n // prefetch configuration before starting the app\n yield* put(CONFIG_FETCH.request());\n yield* take(CONFIG_FETCH.isSuccess);\n\n yield* fork(routingSaga);\n yield* fork(loginSaga);\n yield* fork(passwordForgotSaga);\n yield* fork(passwordResetSaga);\n yield* fork(schemaSaga);\n yield* fork(hvacSaga);\n yield* fork(basedataSaga);\n yield* fork(projectNewSaga);\n yield* fork(projectSyncSaga);\n yield* fork(projectListSaga);\n yield* fork(projectViewSaga);\n yield* fork(evaluationSaga);\n yield* fork(reportSaga);\n yield* fork(assetSaga);\n yield* fork(modalStackSaga);\n yield* fork(feedbackSaga);\n yield* fork(profileSaga);\n yield* fork(usersSaga);\n yield* fork(organizationSaga);\n yield* fork(shareProjectSaga);\n yield* fork(announcementsSaga);\n}\n","import { RuntimeError } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { NATIVE_BLOB } from 'src/io/codecs/NativeBlob';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { XlsxValue } from 'src/modules/common/types/XlsxValue';\nimport { doOnWorker } from 'src/sagas/utils/doOnWorker';\nimport { ExportWorkerResponse } from 'src/types/worker/ExportWorker';\nimport { call } from 'typed-redux-saga';\n\nexport function* doOnExportWorker(\n request: ReadonlyArray>,\n): SagaIterator {\n const response = yield* call(doOnWorker, '/export-worker.js', request);\n const data = decodeOrThrow(\n WORKER_RESULT,\n response,\n );\n if (data.type === 'failure') {\n throw new RuntimeError(\n `Error while executing export worker (${data.error.name}: ${data.error.message})`,\n { error: data.error },\n );\n }\n\n return data.content;\n}\n\nconst WORKER_ERROR = D.struct({\n name: D.string,\n message: D.string,\n});\n\nconst WORKER_RESULT_SUCCESS = D.struct({\n type: D.literal('success'),\n content: NATIVE_BLOB,\n});\n\nconst WORKER_RESULT_FAILURE = D.struct({\n type: D.literal('failure'),\n error: WORKER_ERROR,\n});\n\nconst WORKER_RESULT: D.Decoder = D.sum('type')({\n success: WORKER_RESULT_SUCCESS,\n failure: WORKER_RESULT_FAILURE,\n});\n","import { RuntimeError } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { XLSX_VALUE } from 'src/modules/common/codecs/XlsxValue';\nimport { XlsxValue } from 'src/modules/common/types/XlsxValue';\nimport { doOnWorker } from 'src/sagas/utils/doOnWorker';\nimport { ImportWorkerResponse } from 'src/types/worker/ImportWorker';\nimport { call } from 'typed-redux-saga';\n\nexport function* doOnImportWorker(\n request: File,\n): SagaIterator {\n const response = yield* call(doOnWorker, '/import-worker.js', request);\n const data = decodeOrThrow(\n WORKER_RESULT,\n response,\n );\n if (data.type === 'failure') {\n throw new RuntimeError(\n `Error while executing import worker (${data.error.name}: ${data.error.message})`,\n { error: data.error },\n );\n }\n\n return data.content;\n}\n\nconst WORKER_ERROR = D.struct({\n name: D.string,\n message: D.string,\n});\n\nconst WORKER_RESULT_SUCCESS = D.struct({\n type: D.literal('success'),\n content: D.array(D.array(XLSX_VALUE)),\n});\n\nconst WORKER_RESULT_FAILURE = D.struct({\n type: D.literal('failure'),\n error: WORKER_ERROR,\n});\n\nconst WORKER_RESULT: D.Decoder = D.sum('type')({\n success: WORKER_RESULT_SUCCESS,\n failure: WORKER_RESULT_FAILURE,\n});\n","import { RuntimeError } from '@belimo-retrofit-portal/logic';\nimport * as D from 'io-ts/Decoder';\nimport { SagaIterator } from 'redux-saga';\nimport { NATIVE_BLOB } from 'src/io/codecs/NativeBlob';\nimport { decodeOrThrow } from 'src/io/utils/decodeOrThrow';\nimport { doOnWorker } from 'src/sagas/utils/doOnWorker';\nimport { HtmlToPdfWorkerRequest, HtmlToPdfWorkerResponse } from 'src/types/worker/HtmlToPdfWorker';\nimport { call } from 'typed-redux-saga';\n\nexport function* doOnPdfWorker(\n request: HtmlToPdfWorkerRequest,\n): SagaIterator {\n const response = yield* call(doOnWorker, '/html-to-pdf-worker.js', request);\n const data = decodeOrThrow(\n WORKER_RESULT,\n response,\n );\n if (data.type === 'failure') {\n throw new RuntimeError(\n `Error while executing PDF worker (${data.error.name}: ${data.error.message})`,\n { error: data.error },\n );\n }\n\n return data.content;\n}\n\nconst WORKER_ERROR = D.struct({\n name: D.string,\n message: D.string,\n});\n\nconst WORKER_RESULT_SUCCESS = D.struct({\n type: D.literal('success'),\n content: NATIVE_BLOB,\n});\n\nconst WORKER_RESULT_FAILURE = D.struct({\n type: D.literal('failure'),\n error: WORKER_ERROR,\n});\n\nconst WORKER_RESULT: D.Decoder = D.sum('type')({\n success: WORKER_RESULT_SUCCESS,\n failure: WORKER_RESULT_FAILURE,\n});\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { SagaIterator } from 'redux-saga';\nimport { CpsCallback } from 'redux-saga/effects';\nimport { cps, SagaGenerator } from 'typed-redux-saga';\n\nexport function* doOnWorker(\n workerUrl: string,\n request: unknown,\n): SagaIterator {\n const worker = new Worker(workerUrl);\n try {\n return yield* doRequest(worker, request);\n } finally {\n worker.terminate();\n }\n}\n\nfunction* doRequest(\n worker: Worker,\n message: unknown,\n): SagaGenerator {\n const channel = new MessageChannel();\n\n try {\n return yield* cps(doWorkerRequestUsingMessagePort, worker, channel, message);\n } catch (error) {\n throw new RuntimeError('Error while sending Worker request', { message }, NativeError.wrap(error));\n } finally {\n channel.port1.close();\n channel.port1.onmessage = null;\n channel.port1.onmessageerror = null;\n\n channel.port2.close();\n channel.port2.onmessage = null;\n channel.port2.onmessageerror = null;\n }\n}\n\nfunction doWorkerRequestUsingMessagePort(\n worker: Worker,\n channel: MessageChannel,\n message: unknown,\n callback: CpsCallback,\n): void {\n worker.postMessage(message, [channel.port1]);\n\n // eslint-disable-next-line no-param-reassign\n channel.port2.onmessage = (event): void => callback(null, event.data);\n // eslint-disable-next-line no-param-reassign\n channel.port2.onmessageerror = (event): void => callback(event.data, undefined);\n}\n","import { HtmlNode, parse as parseHtmlToPdf } from '@belimo-retrofit-portal/html2pdf/lib/parse';\nimport { SagaIterator } from 'redux-saga';\nimport { doOnPdfWorker } from 'src/sagas/utils/doOnPdfWorker';\nimport { HtmlToPdfWorkerRequest } from 'src/types/worker/HtmlToPdfWorker';\nimport { call } from 'typed-redux-saga';\n\nexport function* htmlToPdf(\n pages: ReadonlyArray,\n): SagaIterator {\n const nodes: HtmlNode[] = [];\n for (const child of pages) {\n const pageNode = yield* call(parseHtmlToPdf, child);\n nodes.push(pageNode);\n }\n\n const imageUrls = getImageUrls(nodes);\n const resources = new Map();\n for (const imageUrl of imageUrls) {\n const response = yield* call(fetch, imageUrl);\n const imageData = yield* call({ fn: response.arrayBuffer, context: response });\n resources.set(imageUrl, imageData);\n }\n\n const workerRequest: HtmlToPdfWorkerRequest = { nodes, resources };\n return yield* call(doOnPdfWorker, workerRequest);\n}\n\nfunction getImageUrls(nodes: ReadonlyArray): string[] {\n const imageUrls: string[] = [];\n for (const node of nodes) {\n if (node.type === 'block') {\n imageUrls.push(...getImageUrls(node.children));\n }\n if (node.type === 'image') {\n imageUrls.push(node.imageSource);\n }\n }\n\n return imageUrls;\n}\n","import { SagaIterator } from 'redux-saga';\nimport { call } from 'typed-redux-saga';\n\nexport function* logDebug(message: string, context?: unknown): SagaIterator {\n yield* call({\n // eslint-disable-next-line no-console\n fn: console.debug,\n context: console,\n }, message, context);\n}\n\nexport function* logInfo(message: string, context?: unknown): SagaIterator {\n yield* call({\n // eslint-disable-next-line no-console\n fn: console.info,\n context: console,\n }, message, context);\n}\n\nexport function* logError(message: string, context?: unknown): SagaIterator {\n yield* call({\n // eslint-disable-next-line no-console\n fn: console.error,\n context: console,\n }, message, context);\n}\n","import { NativeError, RuntimeError } from '@belimo-retrofit-portal/logic';\nimport { Json } from 'fp-ts/Json';\nimport { SagaIterator } from 'redux-saga';\nimport { call } from 'typed-redux-saga';\n\nexport function* storageGet(key: string): SagaIterator {\n try {\n const stored = yield* call({\n context: window.localStorage,\n fn: window.localStorage.getItem,\n }, key);\n if (stored === null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(stored);\n } catch (error) {\n throw new RuntimeError(`Could not get \"${key}\" storage value`, { key }, NativeError.wrap(error));\n }\n}\n\nexport function* storageSet(key: string, val: Json): SagaIterator {\n try {\n const stored = JSON.stringify(val);\n yield* call({\n context: window.localStorage,\n fn: window.localStorage.setItem,\n }, key, stored);\n } catch (error) {\n throw new RuntimeError(`Could not set \"${key}\" storage value`, { key, val }, NativeError.wrap(error));\n }\n}\n","import { AssertionError, DecodingError } from '@belimo-retrofit-portal/logic';\nimport { fold } from 'fp-ts/Either';\nimport { pipe } from 'fp-ts/function';\nimport { Decoder } from 'io-ts/Decoder';\nimport { isDefined, isNotEmpty, isNotNull } from 'src/utils/guard';\n\nexport function assertDefined(\n value: TValue | undefined,\n message: string,\n context?: unknown,\n): TValue {\n if (isDefined(value)) {\n return value;\n }\n\n throw new AssertionError(message, context);\n}\n\nexport function assertNotNull(\n value: TValue | null,\n message: string,\n context?: unknown,\n): TValue {\n if (isNotNull(value)) {\n return value;\n }\n\n throw new AssertionError(message, context);\n}\n\nexport function assertNotEmpty(\n value: TValue | null | undefined,\n message: string,\n context?: unknown,\n): TValue {\n if (isNotEmpty(value)) {\n return value;\n }\n\n throw new AssertionError(message, context);\n}\n\nexport function assertDecode(\n input: unknown,\n decoder: Decoder,\n message: string,\n context?: unknown,\n): TValue {\n return pipe(\n input,\n decoder.decode,\n fold(\n (error) => new AssertionError(message, context, new DecodingError(input, error)).throw(),\n (value) => value,\n ),\n );\n}\n\nexport function assertNever(\n message: string,\n context?: unknown,\n): never {\n throw new AssertionError(message, context);\n}\n","import { AnyAction } from 'redux';\nimport { SagaIterator } from 'redux-saga';\nimport { call, take, Pattern } from 'redux-saga/effects';\nimport { race } from 'typed-redux-saga';\n\ntype Saga = (...args: TArgs) => SagaIterator;\n\nexport function cancelSagaOn(\n saga: Saga,\n cancelOn: Pattern,\n): Saga {\n return function* wrapped(...args: TArgs): SagaIterator {\n const { cancel, result } = yield* race({\n result: call(saga, ...args),\n cancel: take(cancelOn),\n });\n if (cancel) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return result as TResult;\n };\n}\n","import { Action, Reducer } from 'redux';\n\ntype StrictReducer = (state: TState, action: Action) => TState;\n\nexport function chainReducers(\n initialState: TState,\n reducers: ReadonlyArray>,\n): Reducer {\n // eslint-disable-next-line @typescript-eslint/default-param-last\n return (state = initialState, action) => reducers.reduce((result, reducer) => reducer(result, action), state);\n}\n","import { BaseError } from '@belimo-retrofit-portal/logic';\nimport { AnyAction } from 'redux';\n\ntype ActionHelper = {\n request(data: TRequest, meta: TMeta): ActionRequest;\n pending(meta: TMeta): ActionPending;\n success(data: TSuccess, meta: TMeta): ActionSuccess;\n failure(error: BaseError, meta: TMeta): ActionFailure;\n\n isRequest(action: AnyAction): action is ActionRequest;\n isPending(action: AnyAction): action is ActionPending;\n isSuccess(action: AnyAction): action is ActionSuccess;\n isFailure(action: AnyAction): action is ActionFailure;\n};\n\ntype ActionBase = {\n readonly type: string;\n readonly data: TData;\n readonly meta: TMeta;\n};\n\ntype ActionRequest = ActionBase;\ntype ActionPending = ActionBase;\ntype ActionSuccess = ActionBase;\ntype ActionFailure = ActionBase;\n\nexport type GetRequestActionType>\n = TActions extends ActionHelper\n ? ActionRequest\n : never;\nexport type GetPendingActionType>\n = TActions extends ActionHelper\n ? ActionPending\n : never;\nexport type GetSuccessActionType>\n = TActions extends ActionHelper\n ? ActionSuccess\n : never;\nexport type GetFailureActionType>\n = TActions extends ActionHelper\n ? ActionFailure\n : never;\n\nexport function createActions<\n TRequest,\n TSuccess,\n TMeta = void,\n>(type: string): ActionHelper {\n const REQUEST = `${type}_REQUEST`;\n const PENDING = `${type}_PENDING`;\n const SUCCESS = `${type}_SUCCESS`;\n const FAILURE = `${type}_FAILURE`;\n\n return {\n isRequest: (action): action is ActionRequest => action.type === REQUEST,\n isPending: (action): action is ActionPending => action.type === PENDING,\n isSuccess: (action): action is ActionSuccess => action.type === SUCCESS,\n isFailure: (action): action is ActionFailure => action.type === FAILURE,\n\n request: (data, meta) => ({\n type: REQUEST,\n data: data,\n meta: meta,\n }),\n pending: (meta) => ({\n type: PENDING,\n data: undefined,\n meta: meta,\n }),\n success: (data, meta) => ({\n type: SUCCESS,\n data: data,\n meta: meta,\n }),\n failure: (data, meta) => ({\n type: FAILURE,\n data: data,\n meta: meta,\n }),\n };\n}\n","import { AnyAction } from 'redux';\n\ntype ActionHelper = {\n trigger(data: TData, meta: TMeta): ActionTrigger;\n is(action: AnyAction): action is ActionTrigger;\n};\n\ntype ActionTrigger = {\n readonly type: string;\n readonly data: TData;\n readonly meta: TMeta;\n};\n\nexport type GetTriggerActionType>\n = TActions extends ActionHelper\n ? ActionTrigger\n : never;\n\nexport function createTrigger(type: string): ActionHelper {\n const TRIGGER = `${type}_TRIGGER`;\n\n return {\n trigger: (data, meta) => ({ type: TRIGGER, data: data, meta: meta }),\n is: (action): action is ActionTrigger => action.type === TRIGGER,\n };\n}\n","export function isDefined(value: T | undefined): value is T {\n return value !== undefined;\n}\n\nexport function isNotNull(value: T | null): value is T {\n return value !== null;\n}\n\nexport function isNotEmpty(value: T | undefined | null): value is T {\n return value !== null && value !== undefined;\n}\n","import { ParametricSelector, Selector } from 'reselect';\nimport { RootState } from 'src/types/RootState';\n\nexport function createParameterSelector(): ParametricSelector {\n return (state, param) => param;\n}\n\nexport function createConditionalSelector(\n condition: Selector,\n thenSelector: Selector,\n elseSelector: Selector,\n): Selector;\n\nexport function createConditionalSelector(\n condition: ParametricSelector,\n thenSelector: ParametricSelector,\n elseSelector: ParametricSelector,\n): ParametricSelector;\n\nexport function createConditionalSelector(\n condition: ParametricSelector,\n thenSelector: ParametricSelector,\n elseSelector: ParametricSelector,\n): ParametricSelector {\n /* eslint-disable @typescript-eslint/no-unsafe-argument */\n return (state, param, ...args) => (condition(state, param, ...args)\n ? thenSelector(state, param, ...args)\n : elseSelector(state, param, ...args));\n}\n\nexport function createChainedSelector(\n selector1: Selector,\n selector2: ParametricSelector,\n): Selector;\n\nexport function createChainedSelector(\n selector1: ParametricSelector,\n selector2: ParametricSelector,\n): ParametricSelector;\n\nexport function createChainedSelector(\n selector1: ParametricSelector,\n selector2: ParametricSelector,\n): ParametricSelector {\n return (state, param) => selector2(state, selector1(state, param));\n}\n"],"sourceRoot":""}