{"version":3,"file":"common.a167ce0c347c8cbd.js","mappings":"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","names":["AcceptTokenComponent","component_abstract","constructor","cdr","router","oidcSecurityService","super","this","ngOnInit","checkAuth","pipe","take","subscribe","getAuthenticationResult","result","navigateRoute","state","replace","navigateByUrl","paramsStartAt","indexOf","navigate","url","substring","params","split","reduce","param","paramPair","queryParams","ngOnDestroy","core","selectors","__decorate","ngneat_until_destroy","routes","path","component","data","route_data","dashboard_view_type","AcceptTokenModule","common","progress_spinner","ngx_lottie","animation_module","selectBoardsState","_ngrx_store__WEBPACK_IMPORTED_MODULE_1__","_boards_reducer__WEBPACK_IMPORTED_MODULE_0__","selectBoardList","boards","selectBoardListLoading","boardsLoading","_angular_core__WEBPACK_IMPORTED_MODULE_2__","ManagementCardComponent","_app_components_abstract_component_abstract__WEBPACK_IMPORTED_MODULE_0__","openSubmenu","sectionItem","urlPath","queryParamsHandling","then","ctx","ManagementCardModule","_angular_common__WEBPACK_IMPORTED_MODULE_2__","_ui_components_components_icon_icon_module__WEBPACK_IMPORTED_MODULE_0__","selectSystemConfigurationState","_system_configuration_reducer__WEBPACK_IMPORTED_MODULE_0__","selectSystemConfig","systemConfigurationState","systemConfig","selectSystemConfigUpdateInProgress","updateSystemInProgress","selectSystemConfigLoading","systemConfigLoading","selectChatHooksChannels","chatHooksChannels","selectTimerReportLoading","timerReportLoading","selectTimerReport","timerReport","selectExpandedSections","expandedSections","PortfolioHeaderComponent","_angular_core__WEBPACK_IMPORTED_MODULE_0__","PortfolioHeaderModule","_angular_common__WEBPACK_IMPORTED_MODULE_1__","UnitDetailsDescriptionSectionModule","input_area_module","fesm2020_forms","pipes_module","radio_button_dropdown_module","input_module","UnitDetailsInspectionsModule","icon_module","fesm2020_button","icon","sort","table","divider","menu","UnitDetailsPicturesSectionModule","attachment_module","input_file_module","picture_module","UnitDetailsPropertySectionModule","UnitDetailsModule","portfolio_header_module","empty_data_module","dashboard_container_module","dashboard_user_header_module","fesm2020_checkbox","tooltip","allowedProps","creatorOptions","showLogicTab","isAutoSave","showJSONEditorTab","questionTypes","allowChangeThemeInPreview","showSimulatorInTestSurveyTab","isStartFromGuid","name","test","survey_core__WEBPACK_IMPORTED_MODULE_0__","category","type","visibleIndex","readOnly","title","onCreated","question","isRequired","onAfterRender","htmlElement","container","querySelector","style","display","gap","questionJSON","choices","value","text","CommonSurveyCreatorComponent","id","iconName","showTitle","enabled","action","surveyJson","surveyCreatorModel","getSurveyJSON","template","JSON","stringify","saveActionLogic","discardActionLogic","creator","survey_creator_core__WEBPACK_IMPORTED_MODULE_1__","toolbarItems","push","saveAction","discardAction","onShowingProperty","add","sender","options","canShow","includes","property","onQuestionAdded","guid","uuid__WEBPACK_IMPORTED_MODULE_2__","onPropertyChanged","propertySender","propertyOptions","newValue","onItemValuePropertyChanged","obj","propertyName","customQuestion","questions","survey","getAllQuestions","filter","q","length","panel","page","addNewPanel","visibleIf","requiredIf","addNewQuestion","parent","logoPosition","pages","loadSurveyJson","detectChanges","_angular_core__WEBPACK_IMPORTED_MODULE_3__","selectSurveysState","_reducers_surveys_reducer__WEBPACK_IMPORTED_MODULE_0__","selectSurveyTemplates","surveyTemplates","TurnoverKanbanService","getExpandedSections","userId","parse","localStorage","getItem","getFieldName","setExpandedSection","sectionsId","setItem","_shared_enums_local_storage_data_enum__WEBPACK_IMPORTED_MODULE_0__","factory","_angular_core__WEBPACK_IMPORTED_MODULE_6__","TurnoverListWidgetComponent","_app_components_abstract_component_abstract__WEBPACK_IMPORTED_MODULE_1__","_shared_enums_color_palette_enum__WEBPACK_IMPORTED_MODULE_2__","showTextTooltip","showTooltip","showDataLabel","cutoutLevel","widgetItem","_widgetItem","lodash__WEBPACK_IMPORTED_MODULE_0__","total","chartDataList","backgroundColor","chartColor","label","header","oppositeLabel","_oppositeValue","Math","round","abbreviateNumber","num","fixed","measureType","b","toPrecision","k","floor","min","slice","c","toFixed","pow","abs","TurnoverListWidgetModule","_angular_common__WEBPACK_IMPORTED_MODULE_3__","_angular_material_progress_spinner__WEBPACK_IMPORTED_MODULE_4__","_ui_components_components_chart_chart_module__WEBPACK_IMPORTED_MODULE_1__","_shared_pipes_pipes_module__WEBPACK_IMPORTED_MODULE_0__","EditedCellModule","TableActionButtonsComponent","edit","$event","stopPropagation","editEvent","emit","save","saveEvent","delete","deleteEvent","TableActionButtonsModule","_angular_material_button__WEBPACK_IMPORTED_MODULE_3__","_app_modules_ui_components_components_icon_icon_module__WEBPACK_IMPORTED_MODULE_0__","_angular_material_tooltip__WEBPACK_IMPORTED_MODULE_4__","BidManagementService","service","getTurnInfo","jwtToken","get","comment","post","accept","approve","reject","reason","deny","_angular_core__WEBPACK_IMPORTED_MODULE_1__","BoardBuilderService","markAsDone","reschedule","date","dateWithoutTimezone","_main_application_management_components_system_configuration_components_timezone_helper__WEBPACK_IMPORTED_MODULE_1__","newDueDate","getTurnStepInfo","rxjs__WEBPACK_IMPORTED_MODULE_2__","turnInfo","dateMoveIn","turnStepScheduleInfo","dueDate","postComment","CommentWidgetState","CommonCommentWidgetComponent","route","snapshot","jwt","isCommentValid","getMainInfo","next","info","setPredefineInfo","InProgress","setTimeout","commentInput","nativeElement","focus","error","err","errorCode","Fail","scrollToButton","document","scrollIntoView","behavior","block","inProgress","sendComment","Success","_angular_common__WEBPACK_IMPORTED_MODULE_4__","_angular_forms__WEBPACK_IMPORTED_MODULE_5__","_widgets_translate_code_pipe__WEBPACK_IMPORTED_MODULE_0__","styles","_ngneat_until_destroy__WEBPACK_IMPORTED_MODULE_7__","JustDoneWidgetState","JustDoneWidgetComponent","doneText","getDoneText","doWork","Message","_ngneat_until_destroy__WEBPACK_IMPORTED_MODULE_6__","OpenApiService","http","composeRoute","src_environments_environment__WEBPACK_IMPORTED_MODULE_0__","customPatchData","body","patch","generateHeaders","update","put","upload","file","formData","FormData","append","environmentUrl","headers","_angular_common_http__WEBPACK_IMPORTED_MODULE_1__","localizationDictionary","INVALID_JWT_CANT_VERIFY_SIGNATURE","INVALID_JWT_ASSIGNEE_CHANGED","INVALID_JWT_LINK_IS_EXPIRED","INVALID_JWT_TURN_CANCELLED","INVALID_JWT_TURN_COMPLETED","INVALID_JWT_BOARD_COMPLETED","INVALID_JWT_STEP_WAS_NOT_FOUND","INVALID_JWT_CANT_VERIFY_ISSUER","TranslateCodePipe","transform","code","values","localizedText","forEach","v","i","RegExp","pure"],"sourceRoot":"webpack:///","sources":["./src/app/modules/accept-token/accept-token.component.ts","./src/app/modules/accept-token/accept-token.component.html","./src/app/modules/accept-token/accept-token.module.ts","./src/app/modules/main-application/boards/store/boards.selectors.ts","./src/app/modules/main-application/management/components/management-card/management-card.component.html","./src/app/modules/main-application/management/components/management-card/management-card.component.ts","./src/app/modules/main-application/management/components/management-card/management-card.module.ts","./src/app/modules/main-application/management/components/system-configuration/store/system-configuration.selectors.ts","./src/app/modules/main-application/portfolio/components/portfolio-header/portfolio-header.component.ts","./src/app/modules/main-application/portfolio/components/portfolio-header/portfolio-header.component.html","./src/app/modules/main-application/portfolio/components/portfolio-header/portfolio-header.module.ts","./src/app/modules/main-application/portfolio/components/unit-details/components/unit-details-description-section/unit-details-description-section.module.ts","./src/app/modules/main-application/portfolio/components/unit-details/components/unit-details-inspections/unit-details-inspections.module.ts","./src/app/modules/main-application/portfolio/components/unit-details/components/unit-details-pictures-section/unit-details-pictures-section.module.ts","./src/app/modules/main-application/portfolio/components/unit-details/components/unit-details-property-section/unit-details-property-section.module.ts","./src/app/modules/main-application/portfolio/components/unit-details/unit-details.module.ts","./src/app/modules/main-application/survey-creator/components/survey-editor/common-survey-creator.component.ts","./src/app/modules/main-application/survey-creator/selectors/surveys.selectors.ts","./src/app/modules/main-application/turnovers/components/turnover-kanban/sevices/turnover-kanban.service.ts","./src/app/modules/main-application/turnovers/components/turnover-list/turnover-list-widget/turnover-list-widget.component.html","./src/app/modules/main-application/turnovers/components/turnover-list/turnover-list-widget/turnover-list-widget.component.ts","./src/app/modules/main-application/turnovers/components/turnover-list/turnover-list-widget/turnover-list-widget.module.ts","./src/app/modules/ui-components/components/edited-cell/edited-cell.module.ts","./src/app/modules/ui-components/components/table-action-buttons/table-action-buttons.component.html","./src/app/modules/ui-components/components/table-action-buttons/table-action-buttons.component.ts","./src/app/modules/ui-components/components/table-action-buttons/table-action-buttons.module.ts","./src/app/modules/widgets/bid-management/bid-management.service.ts","./src/app/modules/widgets/board-builder/board-builder.service.ts","./src/app/modules/widgets/common-abstract-widget/common-comment-widget/common-comment-widget.component.html","./src/app/modules/widgets/common-abstract-widget/common-comment-widget/common-comment-widget.component.ts","./src/app/modules/widgets/common-abstract-widget/just-done-widget/just-done-widget.component.ts","./src/app/modules/widgets/common-abstract-widget/just-done-widget/just-done-widget.component.html","./src/app/modules/widgets/open-api.service.ts","./src/app/modules/widgets/translate-code.pipe.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { OidcSecurityService } from 'angular-auth-oidc-client';\nimport { take } from 'rxjs/operators';\n\nimport { ComponentAbstract } from '@app/components/abstract/component.abstract';\n\n@UntilDestroy()\n@Component({\n selector: 'app-accept-token',\n templateUrl: './accept-token.component.html',\n styleUrls: ['./accept-token.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AcceptTokenComponent extends ComponentAbstract implements OnInit, OnDestroy {\n constructor(\n protected cdr: ChangeDetectorRef,\n private router: Router,\n private oidcSecurityService: OidcSecurityService\n ) {\n super(cdr);\n }\n\n ngOnInit() {\n this.oidcSecurityService\n .checkAuth()\n .pipe(take(1))\n .subscribe(() => {\n this.oidcSecurityService.getAuthenticationResult().subscribe(result => {\n //as oidcSecurityService can not work with '&' it was replaced by '??' so we should do reverse replacement\n const navigateRoute: string = result?.state?.replace(/\\?\\?/g, '&');\n if (!navigateRoute) {\n this.router.navigateByUrl('/login');\n return;\n }\n\n const paramsStartAt = navigateRoute.indexOf('?');\n if (paramsStartAt === -1) {\n this.router.navigate([navigateRoute]);\n return;\n }\n\n const url = navigateRoute.substring(0, paramsStartAt);\n const params = navigateRoute\n .substring(paramsStartAt + 1)\n .split('&')\n .reduce((params: { [paramKey: string]: string }, param) => {\n const paramPair = param.split('=');\n params[paramPair[0]] = paramPair[1];\n return params;\n }, {});\n this.router.navigate([url], { queryParams: params });\n });\n });\n }\n\n ngOnDestroy(): void {}\n}\n","\n \n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LottieModule } from 'ngx-lottie';\n\nimport { AcceptTokenComponent } from '@app/modules/accept-token/accept-token.component';\nimport { DashboardViewType } from '@shared/enums/dashboard-view-type';\nimport { RouteData } from '@shared/enums/route-data';\nimport { AnimationModule } from '@ui-components/components/animation/animation.module';\n\nconst routes: Routes = [\n {\n path: '',\n component: AcceptTokenComponent,\n data: { [RouteData.DASHBOARD_VIEW_TYPE]: DashboardViewType.NONE },\n },\n];\n\n@NgModule({\n declarations: [AcceptTokenComponent],\n imports: [CommonModule, MatProgressSpinnerModule, LottieModule, AnimationModule, RouterModule.forChild(routes)],\n exports: [AcceptTokenComponent],\n})\nexport class AcceptTokenModule {}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\n\nimport * as fromBoards from './boards.reducer';\n\nexport const selectBoardsState = createFeatureSelector(fromBoards.boardsFeatureKey);\n\nexport const selectBoardList = createSelector(selectBoardsState, state => state.boards);\nexport const selectBoardListLoading = createSelector(selectBoardsState, state => state.boardsLoading);\n","\n \n
{{ sectionItem?.label }}
\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ComponentAbstract } from '@app/components/abstract/component.abstract';\nimport { MenuSectionItem } from '@shared/interfaces/menu-config.interface';\n\n@Component({\n selector: 'app-management-card',\n templateUrl: './management-card.component.html',\n styleUrls: ['./management-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManagementCardComponent extends ComponentAbstract implements OnInit {\n @Input() sectionItem: MenuSectionItem;\n\n constructor(protected cdr: ChangeDetectorRef, private router: Router) {\n super(cdr);\n }\n\n ngOnInit(): void {}\n\n openSubmenu() {\n if (this.sectionItem.urlPath) {\n this.router\n .navigate([this.sectionItem.urlPath], {\n queryParamsHandling: 'merge',\n })\n .then();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '@ui-components/components/icon/icon.module';\n\nimport { ManagementCardComponent } from './management-card.component';\n\n@NgModule({\n declarations: [ManagementCardComponent],\n exports: [ManagementCardComponent],\n imports: [CommonModule, IconModule],\n})\nexport class ManagementCardModule {}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\n\nimport * as fromSystemConfiguration from './system-configuration.reducer';\n\nexport const selectSystemConfigurationState = createFeatureSelector(\n fromSystemConfiguration.systemConfigurationFeatureKey\n);\n\nexport const selectSystemConfig = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.systemConfig\n);\n\nexport const selectSystemConfigUpdateInProgress = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.updateSystemInProgress\n);\n\nexport const selectSystemConfigLoading = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.systemConfigLoading\n);\n\nexport const selectChatHooksChannels = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.chatHooksChannels\n);\n\nexport const selectTimerReportLoading = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.timerReportLoading\n);\n\nexport const selectTimerReport = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.timerReport\n);\n\nexport const selectExpandedSections = createSelector(\n selectSystemConfigurationState,\n systemConfigurationState => systemConfigurationState.expandedSections\n);\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-portfolio-header',\n templateUrl: './portfolio-header.component.html',\n styleUrls: ['./portfolio-header.component.scss'],\n})\nexport class PortfolioHeaderComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","
\n \n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PortfolioHeaderComponent } from './portfolio-header.component';\n\n@NgModule({\n declarations: [PortfolioHeaderComponent],\n imports: [CommonModule],\n exports: [PortfolioHeaderComponent],\n})\nexport class PortfolioHeaderModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { PipesModule } from '@shared/pipes/pipes.module';\nimport { InputModule } from '@ui-components/components/input/input.module';\nimport { InputAreaModule } from '@ui-components/components/input-area/input-area.module';\nimport { RadioButtonDropdownModule } from '@ui-components/components/radio-button-dropdown/radio-button-dropdown.module';\n\nimport { UnitDetailsDescriptionSectionComponent } from './unit-details-description-section.component';\n\n@NgModule({\n declarations: [UnitDetailsDescriptionSectionComponent],\n exports: [UnitDetailsDescriptionSectionComponent],\n imports: [\n CommonModule,\n InputAreaModule,\n ReactiveFormsModule,\n PipesModule,\n RadioButtonDropdownModule,\n MatProgressSpinnerModule,\n InputModule,\n ],\n})\nexport class UnitDetailsDescriptionSectionModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { IconModule } from '@ui-components/components/icon/icon.module';\n\nimport { UnitDetailsInspectionsComponent } from './unit-details-inspections.component';\n\n@NgModule({\n declarations: [UnitDetailsInspectionsComponent],\n imports: [\n CommonModule,\n IconModule,\n MatButtonModule,\n MatIconModule,\n MatSortModule,\n MatTableModule,\n MatDividerModule,\n MatMenuModule,\n ],\n exports: [UnitDetailsInspectionsComponent],\n})\nexport class UnitDetailsInspectionsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { AttachmentModule } from '@ui-components/components/attachment/attachment.module';\nimport { IconModule } from '@ui-components/components/icon/icon.module';\nimport { InputFileModule } from '@ui-components/components/input-file/input-file.module';\nimport { PictureModule } from '@ui-components/components/picture/picture.module';\n\nimport { UnitDetailsPicturesSectionComponent } from './unit-details-pictures-section.component';\n\n@NgModule({\n declarations: [UnitDetailsPicturesSectionComponent],\n exports: [UnitDetailsPicturesSectionComponent],\n imports: [\n CommonModule,\n IconModule,\n MatButtonModule,\n AttachmentModule,\n InputFileModule,\n ReactiveFormsModule,\n PictureModule,\n MatProgressSpinnerModule,\n ],\n})\nexport class UnitDetailsPicturesSectionModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { PipesModule } from '@shared/pipes/pipes.module';\nimport { IconModule } from '@ui-components/components/icon/icon.module';\nimport { InputAreaModule } from '@ui-components/components/input-area/input-area.module';\nimport { RadioButtonDropdownModule } from '@ui-components/components/radio-button-dropdown/radio-button-dropdown.module';\n\nimport { UnitDetailsPropertySectionComponent } from './unit-details-property-section.component';\n\n@NgModule({\n declarations: [UnitDetailsPropertySectionComponent],\n exports: [UnitDetailsPropertySectionComponent],\n imports: [CommonModule, IconModule, InputAreaModule, ReactiveFormsModule, PipesModule, RadioButtonDropdownModule],\n})\nexport class UnitDetailsPropertySectionModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IconModule } from '@app/modules/ui-components/components/icon/icon.module';\nimport { InputModule } from '@app/modules/ui-components/components/input/input.module';\nimport { DashboardUserHeaderModule } from '@dashboards/components/dashboard-user-header/dashboard-user-header.module';\nimport { UnitDetailsDescriptionSectionModule } from '@portfolio/components/unit-details/components/unit-details-description-section/unit-details-description-section.module';\nimport { UnitDetailsInspectionsModule } from '@portfolio/components/unit-details/components/unit-details-inspections/unit-details-inspections.module';\nimport { UnitDetailsPicturesSectionModule } from '@portfolio/components/unit-details/components/unit-details-pictures-section/unit-details-pictures-section.module';\nimport { UnitDetailsPropertySectionModule } from '@portfolio/components/unit-details/components/unit-details-property-section/unit-details-property-section.module';\nimport { PipesModule } from '@shared/pipes/pipes.module';\nimport { DashboardContainerModule } from '@ui-components/components/dashboard-container/dashboard-container.module';\nimport { EmptyDataModule } from '@ui-components/components/empty-data/empty-data.module';\nimport { InputAreaModule } from '@ui-components/components/input-area/input-area.module';\nimport { RadioButtonDropdownModule } from '@ui-components/components/radio-button-dropdown/radio-button-dropdown.module';\n\nimport { UnitDetailsComponent } from './unit-details.component';\nimport { PortfolioHeaderModule } from '../portfolio-header/portfolio-header.module';\n\n@NgModule({\n declarations: [UnitDetailsComponent],\n imports: [\n CommonModule,\n PortfolioHeaderModule,\n InputModule,\n IconModule,\n MatButtonModule,\n MatTableModule,\n MatSortModule,\n EmptyDataModule,\n DashboardContainerModule,\n DashboardUserHeaderModule,\n ReactiveFormsModule,\n InputAreaModule,\n PipesModule,\n UnitDetailsPicturesSectionModule,\n UnitDetailsPropertySectionModule,\n UnitDetailsDescriptionSectionModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatProgressSpinnerModule,\n FormsModule,\n UnitDetailsInspectionsModule,\n RadioButtonDropdownModule,\n ],\n})\nexport class UnitDetailsModule {}\n","import { ChangeDetectorRef, Directive, OnDestroy, OnInit } from '@angular/core';\nimport { Action, ComponentCollection, PanelModel, Question, QuestionCustomModel, Serializer } from 'survey-core';\nimport { ICreatorOptions, SurveyCreatorModel } from 'survey-creator-core';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst allowedProps = ['visibleIf', 'enableIf', 'requiredIf', 'title', 'description', 'enableFlagForMaintenanceOption'];\n\nconst creatorOptions: ICreatorOptions = {\n showLogicTab: false,\n isAutoSave: true,\n showJSONEditorTab: true,\n questionTypes: ['checkbox', 'radiogroup', 'dropdown', 'boolean', 'comment', 'panel', 'file', 'propertyState'],\n allowChangeThemeInPreview: false,\n showSimulatorInTestSurveyTab: false,\n};\n\nSerializer.addProperty('survey', {\n name: 'enableFlagForMaintenanceOption',\n category: 'general',\n type: 'boolean',\n visibleIndex: 3,\n});\n\nSerializer.addProperty('question', {\n name: 'guid',\n category: 'general',\n type: 'string',\n readOnly: true,\n visibleIndex: 1,\n});\n\nComponentCollection.Instance.add({\n name: 'propertyState',\n title: 'Property State',\n onCreated: question => {\n question.isRequired = true;\n question.title = 'Property state';\n question.name = question.title;\n },\n onAfterRender(question: Question, htmlElement: HTMLElement) {\n const container = htmlElement.querySelector('.sd-selectbase') as HTMLElement;\n if (container) {\n container.style.display = 'flex';\n container.style.gap = '32px';\n }\n },\n questionJSON: {\n type: 'radiogroup',\n choices: [\n {\n value: 'poor',\n text: 'Poor',\n },\n {\n value: 'fair',\n text: 'Fair',\n },\n {\n value: 'good',\n text: 'Good',\n },\n ],\n },\n});\n\nfunction isStartFromGuid(name: string) {\n return /[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}/.test(name.substring(0, 36));\n}\n\n@Directive()\nexport abstract class CommonSurveyCreatorComponent implements OnInit, OnDestroy {\n surveyCreatorModel: SurveyCreatorModel;\n\n protected abstract saveActionLogic(templateJson: string, title: string): void;\n protected abstract discardActionLogic(): void;\n protected abstract loadSurveyJson(): void;\n\n saveAction = new Action({\n id: 'save-changes',\n iconName: 'icon-checked',\n title: 'Save changes',\n showTitle: false,\n enabled: true,\n visibleIndex: 0,\n action: () => {\n const surveyJson = this.surveyCreatorModel.getSurveyJSON();\n const template = JSON.stringify(surveyJson);\n const title = surveyJson.title;\n this.saveActionLogic(template, title);\n },\n });\n\n discardAction = new Action({\n id: 'discard-changes',\n iconName: 'icon-clear_16x16',\n title: 'Discard changes',\n showTitle: false,\n enabled: true,\n visibleIndex: 1,\n action: () => this.discardActionLogic(),\n });\n\n constructor(protected cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n const creator = new SurveyCreatorModel(creatorOptions);\n creator.toolbarItems.push(this.saveAction);\n creator.toolbarItems.push(this.discardAction);\n creator.onShowingProperty.add(function (sender, options) {\n options.canShow = allowedProps.includes(options.property.name);\n });\n creator.onQuestionAdded.add((sender, options) => {\n const question = options.question;\n question.guid = uuidv4();\n if (!isStartFromGuid(question.name)) {\n question.title = question.name;\n question.name = uuidv4() + question.name;\n }\n\n question.onPropertyChanged.add((propertySender, propertyOptions) => {\n if (propertyOptions.name === 'title') {\n question.name = propertyOptions.newValue;\n if (isStartFromGuid(question.name)) {\n question.name = question.name.substring(0, 36) + propertyOptions.newValue;\n } else {\n question.name = uuidv4() + propertyOptions.newValue;\n }\n }\n });\n\n question.onItemValuePropertyChanged.add((sender, { obj, propertyName, name, newValue }) => {\n if (propertyName === 'choices' && name === 'text') {\n obj.value = newValue;\n }\n });\n\n if (question.customQuestion?.name === 'propertystate') {\n const questions = creator.survey.getAllQuestions().filter(q => q instanceof QuestionCustomModel);\n if (questions.length > 1) {\n question.title += questions.length - 1;\n }\n\n question.name = question.title;\n\n const panel = question.page.addNewPanel();\n panel.visibleIf = `{${question.name}} = 'poor' or {${question.name}} = 'fair'`;\n panel.requiredIf = `{${question.name}} = 'poor' or {${question.name}} = 'fair'`;\n panel.addNewQuestion('boolean');\n panel.addNewQuestion('boolean');\n panel.addNewQuestion('text');\n }\n\n if (question.parent instanceof PanelModel) {\n question.requiredIf = question.parent.requiredIf;\n }\n });\n creator.JSON = {\n logoPosition: 'right',\n pages: [\n {\n name: 'page1',\n },\n ],\n };\n this.surveyCreatorModel = creator;\n\n this.loadSurveyJson();\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {}\n}\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\n\nimport * as fromSurveys from '../reducers/surveys.reducer';\n\nexport const selectSurveysState = createFeatureSelector(fromSurveys.surveysFeatureKey);\n\nexport const selectSurveyTemplates = createSelector(selectSurveysState, state => state.surveyTemplates);\n","import { Injectable } from '@angular/core';\n\nimport { LocalStorageDataEnum } from '@shared/enums/local-storage-data.enum';\n\n@Injectable()\nexport class TurnoverKanbanService {\n constructor() {}\n\n getExpandedSections(userId: number): number[] {\n return (JSON.parse(localStorage.getItem(this.getFieldName(userId))) as number[]) || [];\n }\n\n setExpandedSection(userId: number, sectionsId: number[]) {\n localStorage.setItem(this.getFieldName(userId), JSON.stringify(sectionsId));\n }\n\n private getFieldName(userId: number): string {\n return `${LocalStorageDataEnum.KANBAN_ACTIVE_SECTIONS}_${userId}`;\n }\n}\n","
\n \n
\n\n\n
\n

{{ header }}

\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
{{ oppositeLabel }}
\n
{{ _oppositeValue }}%
\n
\n
\n\n\n
\n \n
\n
\n\n\n -\n\n\n\n \n \n {{\n measureType | measureType: _widgetItem.value:shortFormat\n }}\n {{ abbreviateNumber(_widgetItem.value, 0) }}\n {{\n measureType | measureType: _widgetItem.value:shortFormat\n }}\n \n \n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { isNumber } from 'lodash';\n\nimport { ComponentAbstract } from '@app/components/abstract/component.abstract';\nimport { TurnoverListWidgetItem } from '@main-application/turnovers/config/interfaces/turnover-list-widget-item.interface';\nimport { EColorPalette } from '@shared/enums/color-palette.enum';\nimport { ChartConfig, ChartDataItem } from '@shared/interfaces/chart-data-item';\nimport { MeasureType } from '@shared/interfaces/measure-type';\n\n@Component({\n selector: 'app-turnover-list-widget',\n templateUrl: './turnover-list-widget.component.html',\n styleUrls: ['./turnover-list-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TurnoverListWidgetComponent extends ComponentAbstract {\n _widgetItem: TurnoverListWidgetItem;\n _oppositeValue?: number = null;\n\n @Input() header: string;\n @Input() oppositeLabel: string;\n @Input() measureType: MeasureType;\n @Input() withChart = true;\n @Input() chartColor: EColorPalette = EColorPalette.cBlack;\n @Input() isLoading = true;\n @Input() collapsed = false;\n\n @Input() set widgetItem(widgetItem: TurnoverListWidgetItem) {\n this._widgetItem = widgetItem;\n if (isNumber(widgetItem.total) && isNumber(widgetItem.value)) {\n this.chartDataList = [\n {\n value: widgetItem.value,\n backgroundColor: this.chartColor,\n label: this.header,\n },\n {\n value: widgetItem.total - widgetItem.value,\n backgroundColor: EColorPalette.cGray2,\n label: this.oppositeLabel,\n },\n ];\n if (widgetItem.total) {\n this._oppositeValue = 100 - Math.round((widgetItem.value / widgetItem.total) * 100);\n } else {\n this._oppositeValue = null;\n }\n } else {\n this.chartDataList = [];\n this._oppositeValue = null;\n }\n this.cdr.detectChanges();\n }\n\n chartDataList: ChartDataItem[] = [];\n chartConfig: ChartConfig = {\n showTextTooltip: false,\n showTooltip: true,\n showDataLabel: false,\n cutoutLevel: 70,\n };\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n abbreviateNumber(num, fixed) {\n if (this.measureType === '$') {\n if (num === null) {\n return null;\n } // terminate early\n if (num === 0) {\n return '0';\n } // terminate early\n fixed = !fixed || fixed < 0 ? 0 : fixed; // number of decimal places to show\n const b = num.toPrecision(2).split('e'), // get power\n k = b.length === 1 ? 0 : Math.floor(Math.min(b[1].slice(1), 14) / 3), // floor at decimals, ceiling at trillions\n c = k < 1 ? num.toFixed(0 + fixed) : (num / Math.pow(10, k * 3)).toFixed(1 + fixed), // divide by power\n d = c < 0 ? c : Math.abs(c), // enforce -0 is 0\n e = d + ['', 'k', 'm', 'b', 't'][k]; // append power\n return e;\n } else {\n return num;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { TurnoverListWidgetComponent } from '@main-application/turnovers/components/turnover-list/turnover-list-widget/turnover-list-widget.component';\nimport { PipesModule } from '@shared/pipes/pipes.module';\nimport { ChartModule } from '@ui-components/components/chart/chart.module';\n\n@NgModule({\n declarations: [TurnoverListWidgetComponent],\n imports: [CommonModule, MatProgressSpinnerModule, ChartModule, PipesModule],\n exports: [TurnoverListWidgetComponent],\n})\nexport class TurnoverListWidgetModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EditedCellComponent } from './edited-cell.component';\n\n@NgModule({\n declarations: [EditedCellComponent],\n exports: [EditedCellComponent],\n imports: [CommonModule],\n})\nexport class EditedCellModule {}\n","
\n \n \n \n \n \n \n \n \n \n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ComponentAbstract } from '@app/components/abstract/component.abstract';\n\n@Component({\n selector: 'app-table-action-buttons',\n templateUrl: './table-action-buttons.component.html',\n styleUrls: ['./table-action-buttons.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableActionButtonsComponent extends ComponentAbstract implements OnInit {\n @Input() rowReference: Object;\n @Input() currentRowReference;\n @Input() disableEdit = false;\n @Input() disableSave = false;\n @Input() disableDelete = false;\n @Input() lockFields = false;\n @Input() allowDelete = true;\n @Input() allowEdit = true;\n\n @Output() editEvent: EventEmitter = new EventEmitter();\n @Output() saveEvent: EventEmitter = new EventEmitter();\n @Output() deleteEvent: EventEmitter = new EventEmitter();\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n ngOnInit(): void {}\n\n edit($event: Event) {\n $event.stopPropagation();\n this.editEvent.emit();\n }\n\n save($event: Event) {\n $event.stopPropagation();\n this.saveEvent.emit();\n }\n\n delete($event: Event) {\n $event.stopPropagation();\n this.deleteEvent.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IconModule } from '@app/modules/ui-components/components/icon/icon.module';\n\nimport { TableActionButtonsComponent } from './table-action-buttons.component';\n\n@NgModule({\n declarations: [TableActionButtonsComponent],\n exports: [TableActionButtonsComponent],\n imports: [CommonModule, MatButtonModule, IconModule, MatTooltipModule],\n})\nexport class TableActionButtonsModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { OpenApiService } from '@widgets/open-api.service';\n\nexport class JwtInfo {\n assignee: number;\n authKey: string; //guid\n exp: number;\n iat: number;\n iss: string;\n linkType: number;\n nbf: number;\n tenantSubscriptionId: number;\n turnoverDataBidId: number;\n}\nexport class WidgetTurnBidResponce {\n assignee: number;\n bidInfo: {\n approved: boolean;\n bidAmount: number;\n bidDate: Date;\n id: number;\n invoices: any[];\n status: number;\n turnoverDataBidCategoryId: number;\n turnoverId: number;\n vendorId: number;\n };\n timeZone: {\n id: string;\n displayName: string;\n utcOffsetMinutes: number;\n };\n turnInfo: {};\n unitInfo: {\n unitName: string;\n unitType: string;\n propertyName: string;\n propertyAddress: {\n propertyToAddressLinkId: number;\n id: number;\n addressType: number;\n addressTypeUrn: string;\n title: string;\n street1: string;\n street2: string;\n city: string;\n state: string;\n zip: string;\n url: string;\n };\n };\n users: {\n userId: number;\n firstName: string;\n lastName: string;\n displayName: string;\n email: string;\n }[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BidManagementService {\n constructor(protected service: OpenApiService) {}\n\n public getTurnInfo(jwtToken: string): Observable {\n return this.service.get(`bids/getTurnBidInfo?jwtToken=${jwtToken}`);\n }\n\n public comment(jwtToken: string, comment: string): Observable {\n return this.service.post(`bids/comment?jwtToken=${jwtToken}`, { comment });\n }\n\n public accept(jwtToken: string): Observable {\n return this.service.post(`bids/accept?jwtToken=${jwtToken}`);\n }\n\n public approve(jwtToken: string): Observable {\n return this.service.post(`bids/approve?jwtToken=${jwtToken}`);\n }\n\n public reject(jwtToken: string, reason: string): Observable {\n return this.service.post(`bids/reject?jwtToken=${jwtToken}`, { reason });\n }\n\n public deny(jwtToken: string, reason: string): Observable {\n return this.service.post(`bids/deny?jwtToken=${jwtToken}`, { reason });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\nimport { ScheduleCellStatus } from '@main-application/boards/interfaces/board.enums';\nimport { TimezoneHelper } from '@main-application/management/components/system-configuration/components/timezone.helper';\nimport { OpenApiService } from '@widgets/open-api.service';\n\nclass WidgetTurnScheduleResponce {\n unitInfo: {\n unitName: string;\n unitType: string;\n propertyName: string;\n propertyAddress: {\n propertyToAddressLinkId: number;\n id: number;\n addressType: number;\n addressTypeUrn: string;\n title: string;\n street1: string;\n street2: string;\n city: string;\n state: string;\n zip: string;\n url: string;\n };\n };\n turnInfo: {\n dateMoveIn: Date;\n };\n turnStepScheduleInfo: {\n assignee: number;\n dueDate: Date;\n dateCompleted: Date;\n name: string;\n status: ScheduleCellStatus;\n };\n}\n\nexport class JwtInfo {\n tenantSubscriptionId: number;\n turnStepScheduleId: number;\n authKey: string;\n assignee: number;\n nbf: number;\n exp: number;\n iat: number;\n iss: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BoardBuilderService {\n constructor(protected service: OpenApiService) {}\n public markAsDone(jwtToken: string): Observable {\n return this.service.post(`BB/markAsDone?jwtToken=${jwtToken}`);\n }\n\n public reschedule(jwtToken: string, date: Date): Observable {\n const dateWithoutTimezone = TimezoneHelper.removeTimeZone(date);\n return this.service.post(`BB/reschedule?jwtToken=${jwtToken}`, { newDueDate: dateWithoutTimezone });\n }\n\n public getTurnStepInfo(jwtToken: string): Observable {\n return this.service.get(`BB/getTurnStepInfo?jwtToken=${jwtToken}`).pipe(\n map(data => {\n data.turnInfo.dateMoveIn = TimezoneHelper.addTimeZoneAndKeepOnlyDatePart(data.turnInfo.dateMoveIn);\n data.turnStepScheduleInfo.dueDate = TimezoneHelper.addTimeZoneAndKeepOnlyDatePart(\n data.turnStepScheduleInfo.dueDate\n );\n return data;\n })\n );\n }\n\n public postComment(jwtToken: string, comment: string): Observable {\n return this.service.post(`BB/postComment?jwtToken=${jwtToken}`, { comment });\n }\n}\n","
\n
\n \n \n \n
\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute } from '@angular/router';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { Observable, finalize } from 'rxjs';\n\nimport { TranslateCodePipe } from '@widgets/translate-code.pipe';\n\nenum CommentWidgetState {\n InProgress,\n Success,\n Fail,\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-common-comment-widget',\n templateUrl: './common-comment-widget.component.html',\n styleUrls: ['./common-comment-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule, MatIconModule, TranslateCodePipe],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport abstract class CommonCommentWidgetComponent implements OnInit {\n header: string;\n state: CommentWidgetState;\n CommentWidgetState = CommentWidgetState;\n errorCode = 'Failure';\n comment = '';\n inProgress = false;\n doneText = 'Thank you!';\n placeholder = 'Comment...';\n sendText = 'Send comment';\n\n get jwtToken(): string {\n return this.route.snapshot.queryParams.jwt;\n }\n\n @ViewChild('commentInput', { read: ElementRef, static: false }) commentInput: ElementRef;\n\n constructor(protected cdr: ChangeDetectorRef, private route: ActivatedRoute) {}\n\n protected abstract getMainInfo(jwtToken: string): Observable;\n protected abstract setPredefineInfo(info: T): void;\n protected abstract sendComment(jwtToken: string, comment: string): Observable;\n\n isCommentValid() {\n return !!this.comment;\n }\n\n ngOnInit() {\n this.getMainInfo(this.jwtToken)\n .pipe(finalize(() => this.cdr.detectChanges()))\n .subscribe({\n next: info => {\n this.setPredefineInfo(info);\n this.state = CommentWidgetState.InProgress;\n setTimeout(() => this.commentInput.nativeElement.focus());\n },\n error: err => {\n this.errorCode = err?.error ?? '';\n this.state = CommentWidgetState.Fail;\n },\n });\n }\n\n scrollToButton() {\n const buttonElement = document.querySelector('.button-panel');\n buttonElement?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n\n post() {\n if (this.inProgress || !this.isCommentValid()) {\n return;\n }\n this.inProgress = true;\n this.sendComment(this.jwtToken, this.comment)\n .pipe(finalize(() => (this.inProgress = false)))\n .subscribe({\n next: () => {\n this.state = CommentWidgetState.Success;\n this.cdr.detectChanges;\n },\n error: err => {\n this.errorCode = err?.error ?? '';\n this.state = CommentWidgetState.Fail;\n this.cdr.detectChanges;\n },\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { Observable, finalize } from 'rxjs';\n\nimport { TranslateCodePipe } from '@widgets/translate-code.pipe';\n\nenum JustDoneWidgetState {\n Success,\n Fail,\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-just-done-widget',\n templateUrl: './just-done-widget.component.html',\n styleUrls: ['./just-done-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateCodePipe],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport abstract class JustDoneWidgetComponent implements OnInit {\n state: JustDoneWidgetState;\n JustDoneWidgetState = JustDoneWidgetState;\n errorCode = 'Failure';\n doneText: string;\n\n get jwtToken(): string {\n return this.route.snapshot.queryParams.jwt;\n }\n\n constructor(protected cdr: ChangeDetectorRef, private route: ActivatedRoute) {}\n\n protected abstract doWork(jwtToken: string): Observable;\n protected abstract getDoneText(): string;\n\n ngOnInit() {\n this.doneText = this.getDoneText();\n\n this.doWork(this.jwtToken)\n .pipe(finalize(() => this.cdr.detectChanges()))\n .subscribe({\n next: () => (this.state = JustDoneWidgetState.Success),\n error: err => {\n this.errorCode = err?.error?.Message ?? err?.error ?? '';\n this.state = JustDoneWidgetState.Fail;\n },\n });\n }\n}\n","
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OpenApiService {\n constructor(protected http: HttpClient) {}\n\n public get(route: string): Observable {\n return this.http.get(this.composeRoute(route, environment.openApiUrl));\n }\n\n public customPatchData(route: string, body: unknown): Observable {\n return this.http.patch(this.composeRoute(route, environment.openApiUrl), body);\n }\n\n public post(route: string, body?: unknown): Observable {\n return this.http.post(this.composeRoute(route, environment.openApiUrl), body, this.generateHeaders());\n }\n\n public update(route: string, body: unknown): Observable {\n return this.http.put(this.composeRoute(route, environment.openApiUrl), body, this.generateHeaders());\n }\n\n public delete(route: string, body: unknown = {}): Observable {\n return this.http.delete(this.composeRoute(route, environment.openApiUrl), body);\n }\n\n public upload(route: string, file: File): Observable {\n const formData = new FormData();\n formData.append('file', file);\n return this.http.post(this.composeRoute(route, environment.openApiUrl), formData);\n }\n\n private composeRoute(route: string, environmentUrl: string) {\n return `${environmentUrl}/${route}`;\n }\n\n private generateHeaders() {\n return {\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst localizationDictionary: { [code: string]: string } = {\n INVALID_JWT_CANT_VERIFY_SIGNATURE: 'This link is invalid',\n INVALID_JWT_ASSIGNEE_CHANGED: 'You are no longer the assignee for this task',\n INVALID_JWT_LINK_IS_EXPIRED: 'This link has expired',\n INVALID_JWT_TURN_CANCELLED: 'This turn was cancelled',\n INVALID_JWT_TURN_COMPLETED: 'This turn is no longer on the board',\n INVALID_JWT_BOARD_COMPLETED: 'This turn is no longer on the board',\n INVALID_JWT_STEP_WAS_NOT_FOUND: 'This task no longer exists',\n INVALID_JWT_CANT_VERIFY_ISSUER: 'Your link is not valid',\n};\n\n@Pipe({\n name: 'translateCode',\n standalone: true,\n})\nexport class TranslateCodePipe implements PipeTransform {\n transform(code: string, ...values): string {\n let localizedText = localizationDictionary[code] ?? code;\n if (values) {\n values.forEach((v, i) => (localizedText = localizedText.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), v)));\n }\n return localizedText;\n }\n}\n"],"x_google_ignoreList":[]}