{"version":3,"file":"main.2c24f8648a7cfa25.js","mappings":"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BACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACA2V,EAEA,YAEA7I,kBACA,uBAEAA,YACA21C,aACA31C","names":["EnvService","o","this","factory","MaterialModule","MatButtonModule","MatTabsModule","MatSortModule","MatTableModule","MatDatepickerModule","MatMomentDateModule","MatInputModule","MatSelectModule","MatFormFieldModule","MatIconModule","MatBadgeModule","MatMenuModule","MatDialogModule","A11yModule","MatExpansionModule","MatDividerModule","MatSlideToggleModule","MatCheckboxModule","MatRadioModule","MatAutocompleteModule","MatSnackBarModule","MatChipsModule","SETTINGS_GROUPS","loadPaymentTypes","createAction","lazyLoadPaymentTypes","loadPaymentTypesSuccess","props","loadPaymentTypesFailure","loadFSPaymentTypes","lazyLoadFSPaymentTypes","loadFSPaymentTypesSuccess","loadFSPaymentTypesFailure","loadDielines","lazyLoadDielines","loadDielinesSuccess","loadDielinesFailure","loadDataPinFileTypes","lazyLoadDataPinFileTypes","loadDataPinFileTypesSuccess","loadDataPinFileTypesFailure","loadSubstrates","lazyLoadSubstrates","loadSubstratesSuccess","loadSubstratesFailure","loadRedemptionTypes","lazyLoadRedemptionTypes","loadRedemptionTypesSuccess","loadRedemptionTypesFailure","loadRequestItemTypes","lazyLoadRequestItemTypes","loadRequestItemTypesSuccess","loadRequestItemTypesFailure","loadRegions","lazyLoadRegions","loadRegionsSuccess","loadRegionsFailure","loadWarehouses","lazyLoadWarehouses","loadWarehousesSuccess","loadWarehousesFailure","loadCompanies","lazyLoadCompanies","loadCompaniesSuccess","loadCompaniesFailure","loadPartnerGroups","lazyLoadPartnerGroups","loadPartnerGroupsSuccess","loadPartnerGroupsFailure","loadDesignLineOfBusiness","loadDesignLineOfBusinessSuccess","loadDesignLineOfBusinessFailure","lazyLoadDesignLineOfBusiness","loadArtLocationsTypes","lazyLoadArtLocationsTypes","loadArtLocationsTypesSuccess","loadArtLocationsTypesFailure","loadDesignSourceTypes","lazyLoadDesignSourceTypes","loadDesignSourceTypesSuccess","loadDesignSourceTypesFailure","loadChannelTypes","lazyLoadChannelTypes","loadChannelTypesSuccess","loadChannelTypesFailure","loadPopChannelTypes","lazyLoadPopChannelTypes","loadPopChannelTypesSuccess","loadPopChannelTypesFailure","loadInventoryTypes","lazyLoadInventoryTypes","loadInventoryTypesSuccess","loadInventoryTypesFailure","loadComponentTypes","lazyLoadComponentTypes","loadComponentTypesSuccess","loadComponentTypesFailure","loadPopItemTypes","lazyLoadPopItemTypes","loadPopItemTypesSuccess","loadPopItemTypesFailure","loadColorTypes","lazyLoadColorTypes","loadColorTypesSuccess","loadColorTypesFailure","loadDimensionTypes","lazyLoadDimensionTypes","loadDimensionTypesSuccess","loadDimensionTypesFailure","loadFinancialTypes","lazyLoadFinancialTypes","loadFinancialTypesSuccess","loadFinancialTypesFailure","loadPopProdEventTypes","lazyLoadPopProdEventTypes","loadPopProdEventTypesSuccess","loadPopProdEventTypesFailure","loadPopProdFundingTypes","lazyLoadPopProdFundingTypes","loadPopProdFundingTypesSuccess","loadPopProdFundingTypesFailure","loadPopProdUsageDurationTypes","lazyLoadPopProdUsageDurationTypes","loadPopProdUsageDurationTypesSuccess","loadPopProdUsageDurationTypesFailure","loadPopProdItemTypes","lazyLoadPopProdItemTypes","loadPopProdItemTypesSuccess","loadPopProdItemTypesFailure","lazyLoadPopProdCuttingTypes","loadPopProdCuttingTypes","loadPopProdCuttingTypesSuccess","loadPopProdCuttingTypesFailure","lazyLoadPopProdMaterialTypes","loadPopProdMaterialTypes","loadPopProdMaterialTypesSuccess","loadPopProdMaterialTypesFailure","lazyLoadPopProdTapeTypes","loadPopProdTapeTypes","loadPopProdTapeTypesSuccess","loadPopProdTapeTypesFailure","loadPopProdInventoryTypes","lazyLoadPopProdInventoryTypes","loadPopProdInventoryTypesSuccess","loadPopProdInventoryTypesFailure","loadPrinters","lazyLoadPrinters","loadPrintersSuccess","loadPrintersFailure","loadBifComponentTypes","lazyLoadBifComponentTypes","loadBifComponentTypesSuccess","loadBifComponentTypesFailure","loadBifFulfillmentTypes","lazyLoadBifFulfillmentTypes","loadBifFulfillmentTypesSuccess","loadBifFulfillmentTypesFailure","loadThirdPartyDataPinFileTypes","lazyLoadThirdPartyDataPinFileTypes","loadThirdPartyDataPinFileTypesSuccess","loadThirdPartyDataPinFileTypesFailure","loadThirdPartyOrderTypes","lazyLoadThirdPartyOrderTypes","loadThirdPartyOrderTypesSuccess","loadThirdPartyOrderTypesFailure","loadThirdPartyPrintOwnerTypes","lazyLoadThirdPartyPrintOwnerTypes","loadThirdPartyPrintOwnerTypesSuccess","loadThirdPartyPrintOwnerTypesFailure","loadIhComponents","lazyLoadIhComponents","loadIhComponentsSuccess","loadIhComponentsFailure","loadIhHealthPlans","lazyLoadIhHealthPlans","loadIhHealthPlansSuccess","loadIhHealthPlansFailure","loadIhHealthPrograms","lazyLoadIhHealthPrograms","loadIhHealthProgramsSuccess","loadIhHealthProgramsFailure","clearIhHealthPrograms","loadIhPriorities","lazyLoadIhPriorities","loadIhPrioritiesSuccess","loadIhPrioritiesFailure","loadReturnFileTypes","lazyLoadReturnFileTypes","loadReturnFileTypesSuccess","loadReturnFileTypesFailure","loadImageFormatTypes","lazyLoadImageFormatTypes","loadImageFormatTypesSuccess","loadImageFormatTypesFailure","requestRefDataFeatureKey","refDataInitialState","paymentTypes","fsPaymentTypes","dielines","dataPinFileTypes","substrates","redemptionTypes","requestItemTypes","regions","warehouses","companies","partnerGroups","designLineOfBusiness","artLocationTypes","designSourceTypes","channelTypes","popChannelTypes","inventoryTypes","componentTypes","popItemTypes","colorTypes","dimensionTypes","financialTypes","popProdEventTypes","popProdFundingTypes","popUsageDurationTypes","popProdItemTypes","popProdCuttingTypes","popProdMaterialTypes","popProdTapeTypes","popProdInventoryTypes","printers","bifComponentTypes","bifFulfillmentTypes","thirdPartyDataPinFileTypes","thirdPartyOrderTypes","thirdPartyPrintOwnerTypes","ihComponents","ihHealthPlans","ihHealthPrograms","ihPriorities","returnFileTypes","imageFormatTypes","refDataReducer","createReducer","on","Object","state","action","popProdInvenprinterstoryTypes","p","ImageFormatTypes","selectRefData","createFeatureSelector","selectPaymentTypes","createSelector","selectDielines","selectRequestItemTypes","selectDataPinFileTypes","selectRedemptionTypes","selectSubstrates","selectRegions","selectWarehouses","selectCompanies","selectPopProdInventoryTypes","selectPrinters","selectPartnerGroups","selectDesignLineOfBusiness","selectArtLocationTypes","selectDesignSourceTypes","selectChannelTypes","selectPopChannelTypes","selectInventoryTypes","selectComponentTypes","selectPopItemTypes","selectColorTypes","selectDimensionTypes","selectFinancialTypes","selectPopProdEventTypes","selectPopProdFundingTypes","selectPopProdUsageDurationTypes","selectPopProdItemTypes","selectPopProdCuttingTypes","selectPopProdMaterialTypes","selectPopProdTapeTypes","selectFSPaymentTypes","selectBifComponentTypes","selectBifFulfillmentTypes","selectThirdPartyDataPinFileTypes","selectThirdPartyOrderTypes","selectThirdPartyPrintOwnerTypes","selectIhComponents","selectIhHealthPlans","selectIhHealthPrograms","selectIhPriorities","selectIhPrioritiesPrioterized","UtilsService","priotiries","codeName","value","code","reverse","selectReturnFileTypes","selectImageFormatTypes","setUser","setUserSubstitutees","setUserTheme","setUserSettings","resetUser","userFeatureKey","userInitialState","initialized","user","substitutees","theme","settings","userReducer","selectUserState","selectUserWithSubstitutees","userState","selectUserTheme","AbstractRoleProvider","RequestActionReasonComponent","actionsReasonService","cd","fb","getAction","position","getPosition","mainButtonTitle","getMainButtonTitle","isRequired","getIsRequired","form","group","comment","get","setValidators","Validators","valid","controls","confirmAction","keys","forEach","control","K","key","pristine","markAsTouched","updateValueAndValidity","onlySelf","emitEvent","markForCheck","cancelAction","invalid","hasError","D","i0","selectors","ctx","ARTWORK_STATUSES","unreviewed","approved","rejected","ARTWORK_SUMMARY_STATUSES","MAX_ITEMS_PER_REQUEST","MAX_ITEMS_PER_IMAGE_REQUEST","NOTE_MAX_LENGTH","QUANTITY_MAX_LENGTH","PKID_MAX_LENGTH","PRICE_PATTERN","REQUEST_NAME_PATTERN","INTEGER_PATTERN","INTEGER_PATTERN_EXCEPT_ZERO_VALUE","IMAGE_DENOM_PATTERN","MAX_PO_TOTAL","MAX_PO_SUB_TOTAL","MAX_POP_PROD_COST_TOTAL","MAX_BIF_COST_TOTAL","MAX_REBILL_TOTAL","MAX_BIF_REBILL_TOTAL","IH_MAX_PACKAGES","IH_MAX_COMPONENTS_PER_ITEM","IH_LABELS_QUANTITY_MULTIPLIER","THIRD_MAX_RANGES_PER_ITEM","POP_PRODUCTION_REQUEST","POP_DESIGN_REQUEST","CARD_DESIGN_REQUEST","PRODUCTION_REQUEST","FINANCIAL_SERVICES_REQUEST","BIF_PRODUCTION_REQUEST","PRODUCTION_REQUEST_3RD_PARTY","IH_PRODUCTION_REQUEST","IMAGE_REQUEST","SUPPORTED_REQUEST_TYPES","DUPLICATE_SUPPORTED_REQUEST_TYPES","CHANGE_OWNER_REQUEST_TYPES","REQUEST_TYPE","ActionsReasonService","Subject","currentAction","currentPosition","title","actionReason","next","buttonClicked","setAction","asObservable","AssigneeService","errorHandlingHttpClient","values","httpParams","HttpParams","append","v","API","params","query","s","FileUploadService","errorHandlingHttp","requestId","fileType","file","sizeLimit","FILE_SIZE_RESTRICTIONS","size","post","fileName","name","throwError","Error","sizeNumber","sizeType","uploadUrl","put","headers","uploadLink","pendingUploads","push","uploadId","reportProgress","observe","pipe","switchMap","uploadIndex","m","indexOf","uploadCanceled","event","type","HttpEventType","error","of","splice","requestType","attachmentFileType","requestItemId","createUploadItemArtworkUrl","shouldRequestHasFileTypeParameter","uploadAndCreateAttachment","createAttachmentUrl","requestAttachmentUploadLink","Z","uploadFileWithProgress","createAttachmentRequest","attachmentId","apiUrl","delete","U","RequestsService","http","fileUploadService","userService","messageService","translateService","eventService","ReplaySubject","shareReplay","bufferSize","refCount","warehousesObservable","replayAndClone","companiesObservable","lineOfBusinessObservable","channelTypesObservable","inventoryTypesObservable","europeanCountriesObservable","fileTypesWhiteList","designerList","nameBeginning","groupKeys","UserGroups","requestTypes$","details","draft","arguments","requestName","requestObj","resetRequestDetails","downloadFile","poId","url","responseType","subscribe","B","getFileNameFromHeader","resp","getFileNameFromUrl","saveAs","body","has","components","decodeURIComponent","split","length","item","getFileUrl","id","createProofOfPayments","reqItemId","reqType","Ce","createExternalPin","username","getCurrentUserName","status","rejectionReason","isPrinterProofs","itemId","Pe","createSowAttachment","queryParams","WPN","wpnDetailsByWpnId","limit","merchantName","request","observable","data","err","poDetails","ue","emit","eventName","Events","actionType","stageCode","reqObj","assign","callPO","response","objectObservable","map","cloneDeep","requestDetails","getVersions","versionsUri","catchError","printerId","milestoneId","ae","createCardProductionWorkItemMilestoneAsn","printerItem","milestone","printerDetails","createArtworkAttachment","tap","showSystemMessage","instant","Ye","CustomFieldErrorMatcher","customControl","touched","AppDatePickerComponent","element","renderer","ctrl","EventEmitter","moment","toDate","DatePickerHeaderComponent","valueAccessor","hasFocusInitial","nativeElement","getAttribute","removeAttribute","oldTouched","oldValid","disabled","oldDisabled","datePickerToggle","datePickerInput","setDisabledState","Ie","q","_a","_changeDetectorRef","_b","testId","valueChanges","takeUntil","ngUnsubscribe","newDate","dateSelected","statusChanges","toggleElement","querySelector","addClass","removeClass","fn","onChange","onTouched","MatDatepickerToggle","MatDatepickerInput","_calendar","_dateAdapter","_dateFormats","cdr","stateChanges","_destroyed","complete","format","activeDate","display","monthYearA11yLabel","mode","addCalendarMonths","addCalendarYears","MAT_DATE_FORMATS","ctx_r9","ctx_r11","AppInputFormComponent","formControlAccessor","base","fm","elRef","se","digitGroupSeparator","decimalCharacter","decimalCharacterAlternative","currencySymbol","currencySymbolPlacement","roundingMethod","minimumValue","maximumValue","undefined","decimalPlaces","decimalPlacesShownOnBlur","watchExternalChanges","monitor","focused","origin","_required","set","_readonly","_maxLength","autoFocus","setTimeout","fe","focusVia","matInput","stopMonitoring","changes","decimals","currencyControlOptions","numeric","repeat","input","instance","clear","ke","oldValue","checkControlChanges","errors","getControlErrorMessage","ye","JSON","stringify","oldErrors","bind","AutonumericDirective","MatInput","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","AppTextareaFormComponent","O","textarea","oldControl","BackLinkComponent","CheckboxComponent","change","_value","val","isDisabled","isChecked","W","decls","ctx_r7","InputSearchDropdownComponent","FormControl","j","ItemsFormCtrl","disable","inputCtrl","enable","setValue","filteredItemsList","itemsList","slice","ItemsFormFilterCtrl","_onDestroy","debounceTime","search","searching","onSearch","switchMapTo","isLoading","loading","Y","he","resultControl","currentValue","getOptionLabel","opened","isEmpty","reset","itemLabelFn","itemLabel","onClear","target","dataset","clearInputValue","ItemsSelect","toggle","content","regex","RegExp","replace","originalContent","prefilteredExtras","extras","filter","e","toLowerCase","join","k","MAT_INPUT_VALUE_ACCESSOR","ItemListProvider","ctx_r8","ctx_r14","MultiSelectSearchDropdownComponent","ngControl","Map","BehaviorSubject","loadingSubject","_e","He","matSelect","_propagateChanges","localControl","obj","selectedItemList$","combineLatest","merge","filterControl","startWith","cachedValues","itemListProvider","loadValues","addToCached","fetched","assignLabels","Je","label","searchedItemList$","debounce","timer","searchValues","list","visibleList","showNotFound","X","selectionListCombined$","b","isOverlayOpened","valueChange","stopPropagation","index","$event","take","fil","i","Qe","MatSelect","MAT_SELECT_CONFIG","useValue","disableOptionCentering","Link","Quill","PROTOCOL_WHITELIST","CustomLinkSanitizer","sanitizedUrl","some","protocol","startsWith","_MatQuillMixinBase","mixinErrorState","mixinDisabled","MatQuillBase","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","injector","elementRef","domSanitizer","platformId","zone","service","Dt","QuillEditorBase","_MatQuillBase","defaultErrorStateMatcher","parentForm","parentFormGroup","doc","ct","contentChangedSubscription","onContentChanged","distinctUntilChanged","updateErrorState","blurSubscription","onBlur","focusSubscription","onFocus","unsubscribe","coerceBooleanProperty","empty","valueGetter","quillEditor","editorElem","writeValue","childNodes","blur","focus","ids","_describedBy","st","closest","oe","PLATFORM_ID","DOCUMENT","hostVars","nextUniqueId","QuillInputComponent","controlType","Te","concat","_testId","setAttribute","t","MatFormFieldControl","RichTextComponent","_extras","matEditor","Fe","_c","_d","Le","lt","_f","CustomHintDirective","partNumber","merchantId","reqId","fileId","requestAlternateId","orderAlternateId","productUpc","artworkFileId","versionId","tpsId","substituteUsername","requestNumber","a","getPrinterWorkItems","updateMilestoneDetails","doBulkWorkItemMilestoneUpdate","PAGES_CONFIG","DASHBOARD","REQUESTS","REPORTS","HELP","VERSIONS","ERROR","ERROR_AUTH","SUBSTITUTES","ERRORS","GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER","GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER","GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER","GROUP_FN_PRODUCEIT_DESIGNER","GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR","PermissionGroups","REQUEST_DETAILS_REQUESTER","CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER","POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER","ASSIGNED_TM","SpecificRoles","TrafficManagers","POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS","POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2","POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW","CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS","CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2","CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW","UserRoles","CREATE_REQUEST","REQUEST_DETAILS","REQUEST_REVIEW","FINANCE_APPROVAL","UPLOAD_ARTWORK","ART_APPROVAL","PO_SOW","COMMITTEE_APPROVAL","PRINT","PRODUCTION_MANAGER","TRAFFIC_MANAGER","PRODUCTION_TRAFFIC_MANAGER","I","VIEW","PRODUCTION_REVIEW","PRINTER_QUOTE_REQUEST","INTERNAL_REQUESTOR_REVIEW","PRINTER_PROOF_REQUEST","INTERNAL_PRINTER_PROOF_REVIEW","POP_PRODUCTION_TRAFFIC_MANAGER","PO","ART_REQUEST_APPROVAL","ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION","PO_SOW_TPS","CONFIRM_PRINTER","INTERNAL_EXTERNAL_OPERATIONS","IN_PRODUCTION","IH_QUOTE_PROCESS","TM_REVIEW","DESIGN_PROCESS","TM_REVIEW_2","TRAFFIC_MANAGERS","CAN_ASSIGN_TM","TM_AUTO_ASSIGN","PO_REPORT_ROLE","APP","MIMIC_USER","ADMIN","SUPER_USER","ALLOWED_PRINT_FINANCE_PO","SETTINGS","EMAIL","AUTONUMERIC_CONTROL_VALUE_ACCESSOR","elm","defaults","AutoNumeric","getOptions","options","normalized","unsubscribeFormat","listen","formatted","unsubscribeRawValueModified","autonumericUpdateTriggerEventType","onChangeFn","detail","newRawValue","rawValueModified","getFormatted","predefined","normalize","strategy","update","remove","initialValue","onTouchedFn","setProperty","domElement","R","ClickStopPropagationDirective","subscription","propagationStopped","n","templateRef","EasyAriaDirective","tagName","setStyle","RendererStyleFlags2","removeListener","dispatchEvent","Event","preventDefault","_","UserPermissionsDirective","viewContainer","userPermissionsService","roleProvider","permission","arrayPermission","flat","userPermissionsSubject","checkUserPermissions","isActionAvailable","isAllowed","createEmbeddedView","AuthGuard","router","stateProviderService","userPermissionService","isLoggedInProduceit","login","userGroupRoles","setLoggedInProduceit","setUserRoles","updateUserDetails","putParam","navigate","UsernameHeaderInterceptor","clone","setHeaders","encodeURIComponent","handle","DEFAULT_FILE_SIZE_RESTRICTION","GLOBAL","CARD_PRODUCTION","ARTWORK","ASN","PROOF_OF_PAYMENT","EXTERNAL_PIN","CARD_DESIGN","ART","POP_DESIGN","FS_FILE","POP_PRODUCTION","OTHER","PARTNER_ART","PRINTER_PROOF","PRINTER_QUOTE","FINANCIAL_SERVICES","FINANCE","BIF_PRODUCTION","THIRD_PARTY_PRODUCTION","OPS","IMAGE","ART_FILE","IH_PRODUCTION","UserTheme","DatePipeTz","locale","timezone","DatePipe","LOCALE_ID","pure","JoinPipe","separator","ToSelectSearchDropdownOptions","labelField","Function","valueField","extrasField","items","level","parent","flatMap","flatternOptions","children","labelFieldInput","createLabelFromValue","flatternedItems","option","getValue","getLabel","getExtras","optionIndex","find","errorCodes","ErrorHandlingHttpClient","errorOptions","handleError","errorPromise","Promise","resolve","ee","Blob","Response","text","then","parse","errorDetailsJson","statusText","message","T","displayError","errorDetails","duration","errorMessage","le","CardDesignEvents","PopDesignEvents","PopProductionEvents","FsrEvents","BifEvents","ThirdPartyEvents","IhEvents","ImageEvents","EventService","subject$","takeUntilBy","LoaderService","loader","ctx_r6","SystemMessageComponent","toastrService","toastPackage","ngZone","easeTime","config","easing","originalTimeout","timeOut","toastRef","afterActivate","ve","activateToast","manualClosed","timeoutReset","resetTimeout","countDuplicate","duplicatesCount","count","clearTimeout","timeout","hideTime","clearInterval","intervalId","width","disableTimeOut","extendedTimeOut","outsideTimeout","E","Date","getTime","progressBar","outsideInterval","updateProgress","func","runOutsideAngular","runInsideAngular","setInterval","run","now","progressAnimation","mainElement","toastId","trigger","style","opacity","transition","animate","changeDetection","MessageService","toastr","toastrConfig","toastComponent","autoDismiss","positionClass","required","notEmpty","minlength","requiredLength","maxlength","max","min","unique","maxCalculation","fieldName","pattern","requiredPattern","String","wpnError","upcError","email","notFound","userValidator","printerInfoValidator","packageIdTBDValidator","productionQtyValidator","cardProductionQtyValidator","header","extendedTimeoutDuration","show","messageClass","closeButton","tapToDismiss","ctx_r5","ctx_r10","NewRequestComponent","dialogRef","env","requestTypes","roundDuration","close","expectedDurationWeeks","Math","round","expectedDurationDays","Q","MAT_DIALOG_DATA","RequestNameFormComponent","dataItem","te","buildForm","maxNameLength","minNameLength","redirect","ConfirmCloseModalComponent","translate","confirmBtn","closeBtn","isCloseModal","TooltipDirective","el","tooltip","hide","create","setPosition","removeChild","document","createElement","appendChild","createText","tooltipText","customClass","offsetWidth","longTextTooltip","top","left","hostPos","getBoundingClientRect","tooltipPos","scrollPos","window","pageYOffset","documentElement","scrollTop","height","offset","bottom","right","ctx_r46","ctx_r60","ctx_r62","ctx_r64","ctx_r66","ctx_r74","ctx_r76","ctx_r79","ctx_r81","ctx_r83","ctx_r85","ctx_r89","ctx_r97","ctx_r105","ctx_r107","ApprovalManagerComponent","overlay","pdfViewerService","approvalManagerService","selectedRequestItemId","selectedArtworkFileId","fileTypesToAccept","restrictionOptions","onRequestNameChange","onRequestItemsChange","requestItems","selectedRequestItem","artworkFiles","getArtworkFiles","selectedArtworkFile","setSelectedRequestItem","setSelectedArtworkFile","showViewer","getRequestItemLabel","propagateArtworkFile","De","selectedArtwork","versions","setSelectedVersion","getActiveVersion","canUpload","canUploadSelectedArtwork","canReview","selectedVersion","canReviewSelectedArtwork","version","oldId","compareVersion","setCompareVersion","artworkFile","active","reviewFinalized","canApprove","getLatestResolution","hideViewer","openReasonModal","addVersionResolution","Ue","isRestrictionSizeWarningExist","tt","uploadVersion","transform","comparisonOn","enableCompareMode","selectedVersionIndex","downloadVersion","attachment","triggerDownloadWithAnnotations","triggerDownloadAllWithAnnotations","artwork","isReject","setMainButtonTitle","setIsRequired","positionStrategy","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","offsetX","offsetY","overlayRef","hasBackdrop","scrollStrategy","scrollStrategies","block","reasonPortal","ComponentPortal","ref","attach","isRedConfirmButton","getReason","first","detach","Lt","getActiveVersionForFile","activeVersion","filledRI","ri","every","rejectedOrApproved","inProgress","latestResolution","reviewer","ModalService","dialog","openModal","afterClosed","openRequestNameModal","shouldHideConfirmBtn","approvalManagerConfig","MatDialogConfig","disableClose","panelClass","backdropClass","maxWidth","open","template","dialogClass","autofocus","extra","PdfViewerService","rendererFactory","createRenderer","compareModeSubject$","turnOn","approvalManagerService$","am","selectedVersionSubject$","compareVersionSubject$","initializedSubject$","viewer","getElementById","downloadSubject$","downloadAllSubject$","PitMsalService","msalService","getAllAccounts","getAccount","accountSubject","addEventCallback","eventType","EventType","payload","account","logoutRequest","logout","silentRequest","acquireTokenSilent","acquireTokenRedirect","loginRedirect","hash","handleRedirectObservable","StateProviderService","path","stateParamMap","param","UserPermissionsService","setUserNameSubscription","roles","userRoles","userRolesSubject","toPromise","Array","isArray","permissionChecks","from","takeWhile","permissionAllowed","scan","acc","getRoles","specificRoles","includes","usernameChange","currentUserName","je","SettingsModalComponent","dialogData","loaderService","settings$","selectedIndex","section","initForm","loadSettingsIntent","showLoader","finalize","hideLoader","patchValue","displayMode","emailSignature","EMAIL_SIGNATURE","field","markAllAsTouched","UserSettingsService","store","modalService","select","dispatch","getLocalUserTheme","newTheme","setLocalUserTheme","localStorage","getItem","setItem","UserService","pitMsalService","newUserName","nameSubject","getAccount$","authAccount$","removeItem","fullyLoaded","loggedInProduceit","userDetails","userDetailsSubject","substitutedUsers","authUserEmail","realUserName","substring","mimicUserName","toLocaleLowerCase","systemUser","targetUser","targetUserLogin","userName","array","fullName","firstName","lastName","trim","bytes","dm","sizes","floor","log","parseFloat","pow","toFixed","sort","codeA","toUpperCase","codeB","parentCode","child","merchant","fcmsId","mdmId","nameA","nameB","date1","createdAt","date2","Number","codeNames","reduce","logInvalidControls","console","touchFormControls","types","table","printer","INTERNAL","isIncludesType","EXTERNAL","CERTIFIED_WRAP","CERTIFIED_MULTIPACK","reqItems","itemsControlsArray","idx","itemForm","at","merchantsArray","merchants","country","accountManagers","total","formArr","sum","getRawValue","curr","quantity","hasNotZeroSum","formGroup","versionQuantities","compareSum","multiplier","multiplicity","getArtworkFileStatuses","notAllApproved","isAnyRejected","af","resolutions","validationObject","ac","isEqual","noChanges","arr","allInFalse","evaluator","actual","endControl","startControl","start","end","bigStart","BigJs","bigEnd","gt","markAsUntouched","startRange","endRange","checkboxTrueValidator","masterCaseSizeControl","caseSizeControl","sortFields","sortBy","fileSize","restrictionSizeTypeIndex","fileSizeTypeIndex","files","maxBytesLength","maxBytesLabel","TextEncoder","encode","warehouse","fileTypeAccepted","exec","fileExtensionAccepted","siblingName","test","SharedModule","CurrencyPipe","useClass","imports","CommonModule","AutonumericModule","NgxMatSelectSearchModule","TranslateModule","ReactiveFormsModule","NgxDaterangepickerMd","FormsModule","OverlayModule","OverlayscrollbarsModule","ToastrModule","RouterModule","QuillModule","customOptions","import","whitelist","DashboardComponent","titleService","setTitle","HelpComponent","ErrorPageComponent","errorType","getParam","P","HasParamGuard","requiredParams","hasAllRequiredParams","w","skipRedirect","navigateFallback","environment","appVersion","require","production","locales","defaultLocale","commitId","PitTranslateLoader","prefix","suffix","translationLoadedSubject","lang","forkJoin","resources","h","TranslationLoadedGuard","pitTranslateLoader","translationLoaded$","createUrlTree","ctx_r3","VersionComponent","requestService","envService","api","ui","updateVersions","getAPIversion","getFnVersion","u","fnVersion","ctx_r1","ErrorAuthComponent","authService","realUserEmail","isMimicMode","currentUser","userName1","setCurrentUserName","location","reload","routes","loadChildren","RequestsModule","canActivate","MsalGuard","component","ReportsModule","redirectTo","pathMatch","AppRoutingModule","relativeLinkResolution","ApplicationInsightsService","appInsights","ApplicationInsights","instrumentationKey","appInsightsKey","loadAppInsights","loadCustomTelemetryProperties","createRouterSubscription","setUserId","clearAuthenticatedUserContext","setAuthenticatedUserContext","uri","trackPageView","trackException","exception","addTelemetryInitializer","envelope","baseData","properties","ApplicationPlatform","ApplicationName","events","NavigationEnd","logPageView","urlAfterRedirects","NAV_MENU","route","ProfilePictureProvider","httpClient","l","blob","reader","FileReader","onloadend","result","readAsDataURL","base64","fetch","res","ProfilePictureCacheWrapper","profilePictureProvider","accountName","accountCacheKey","cachedItem","itemValue","base64ToBlob","getProfilePicture","profilePicture","blobToBase64","base64ProfilePicture","TTL","NavProfilePictureComponent","sanitizer","getLoggedInProduceit","__awaiter","cachedWrapper","M","userImage","bypassSecurityTrustUrl","URL","createObjectURL","ctx_r19","ctx_r24","ctx_r25","ctx_r26","ctx_r28","ctx_r30","ctx_r34","ctx_r38","ctx_r40","NavHeaderPanelComponent","userSettingsService","translateSerivce","FormGroup","enableDarkMode","settingsVisible$","all","substituteEnabled","initialUserName","apiVersion","subscriptions","loggedIn","userTheme$","darkModeForm","updateUserTheme","darkModeEnabled","buttonLoader","createRequest","openNewRequestModal","postCreateNewRequest","sub","loginClicked","logoutClicked","authLogout","resetMimicUser","substitutes","mimicUser","authUserName","displayName","PdfViewerComponent","Ae","pdftronLicenseKey","fullAPI","licenseKey","enableAzureWorkaround","disabledElements","WebViewer","annotManager","exportAnnotations","saveComments","ht","currentVersionObs","selectedVersionChanged","compareVersionObs","compareVersionChanged","downloadWithAnnotObs","downloadClicked","downloadAllWithAnnotObs","getDownloadAllSubject","compareModeChanged","compareMode","initializedChanged","detectChanges","initializeViewers","initMainViewer","initCompareViewer","vwInstances","wvInstance","compareWvInstance","viewers","docViewer","docContainers","contentDocument","compareViewer","syncZoom","syncRotation","addScrollListener","disableTools","initClips","initToolListeners","currentVersion","loadDoc","filename","downloadWithAnnotations","downloadAllWithAnnotations","WebViewerFunc","webViewerConfig","userTheme","setTheme","annotations","y","imported","verifyAnnotationCanBeAdded","updateAnnotations","initAnnotationUser","loadAnnot","isDownloadAllInProgress","fileAnnotations","annotation","getFileData","lobs","lob","deleteAnnotations","downloadPdf","loadedSubject","getComments","mergeMap","qt","importAnnotations","St","off","onDocumentLoaderCallback","Nt","ie","closeDocument","getDownloadRequest","downloadRequest","extension","getVersionFileExtension","loadDocument","customHeaders","PDFNet","runWithoutCleanup","PDFDoc","newDoc","initSecurityHandler","lock","Filter","createURLFilter","tiffFile","Convert","fromTiff","unlock","getUserDetails","setCurrentUser","canAnnotate","setReadOnly","disableElements","f","getLocalStorageOpenNotesKey","openElements","iframeWindow","frameElement","getZoomLevel","zoom","setZoomLevel","getRotation","rotation","setRotation","documentContainer","onscroll","originalScroller","syncScrolls","scrollLeft","scrollTimeout","timeoutForIE","dateAndTime","innerHTML","DateModified","toUTCString","getTool","selectAnnotation","focusNote","Id","dangerouslySetNoteTransformFunction","wrapper","div","href","onclick","fileMetadata","getMetadata","formatDate","getReplies","annotationReply","replyDateContainer","getFileMetadata","initFileClip","addEventListener","isElementOpen","disposeViewer","dispose","Ne","AppComponent","appInsightsService","broadcastService","errorHandler","msalGuardConfig","getUserDetails$","FontFaceObserver","load","Ze","catch","checkAccount","loginSubscription","msalSubject$","logoutErrorsCount","logoutSubscription","warn","InteractionRequiredAuthError","authRequest","authError","allowLogout","spinnerStatus","isLoader","checkMimic","setAuthUserName","initiate","link","rel","media","head","getElementsByTagName","primaryStyles","insertBefore","nextSibling","MSAL_GUARD_CONFIG","DashboardModule","EnvServiceProvider","useFactory","envKey","browserWindowEnv","hasOwnProperty","deps","ErrorPageModule","TranslatePipe","HelpModule","NavHeaderModule","MatListModule","loadSubstitutes","reloadSubstitutes","loadSubstitutesSuccess","loadSubstitutesFailure","deleteSubstitute","substituteFeatureKey","substituteInitialState","loaded","scope","substituteReducer","reducers","Dn","metaReducers","RequestRefDataEffects","actions$","utilsService","createEffect","ofType","exhaustMap","withLatestFrom","refdataInitialState","EMPTY","sortAZNames","consoleListPrinters","healthPlanCode","SubstituteEffects","dataProvider","re","forwardData","substituteUserName","startDate","endDate","UserEffects","MissingTranslationService","sr","isIe","BrowserService","navigator","userAgent","msalApplicationScope","rr","adClientId","msalProtectedResourceMap","interactionType","InteractionType","scopes","prompt","loginFailedRoute","msalInterceptorConfig","protectedResourceMap","XWwwUrlEncodedParamEncoder","EncodeHttpParamsInterceptor","req","encoder","fromString","toString","ApplicationInsightsErrorHandler","logException","SubstituteDepsModule","selectSubstituteState","selectSubstitutes","selectSubstitutesLoaded","selectSubstitutesLoading","selectSubstitutesScope","SubstituteService","share","substitute","ctx_r2","UserListDataSource","users","makeLabel","EditSubstituteFormComponent","controlContainer","assigneeService","o1","o2","isUserLoading","userListProvider","searchUsers","userSearch","AddSubstituteComponent","substituteService","is_permanent","substituteUser","errorSubject","canEditUser","isPermanent","add$","responses","hasSuccessResponse","r","HttpErrorResponse","EditSubstituteComponent","ot","it","edit$","ctx_r21","ctx_r23","SubstituteListComponent","translatePipe","handleAfterClosed","dialogResponse","openConfirmationModal","confirm","SubstitesComponent","scopeSubject","load$","loading$","SubstituteRoutingModule","SubstituteModule","VersionModule","disableAnimations","AppModule","MomentSettingsInitializer","bootstrap","ErrorHandler","HTTP_INTERCEPTORS","MsalInterceptor","APP_INITIALIZER","MAT_MOMENT_DATE_ADAPTER_OPTIONS","useUtc","MAT_FORM_FIELD_DEFAULT_OPTIONS","hideRequiredMarker","HttpClientModule","BrowserModule","BrowserAnimationsModule","MsalModule","PublicClientApplication","auth","clientId","authority","c","tenantId","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","piiLoggingEnabled","StoreModule","EffectsModule","TranslateLoader","missingTranslationHandler","MissingTranslationHandler","defaultLanguage","StoreDevtoolsModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","xe"],"sourceRoot":"webpack:///","sources":["./src/app/env.service.ts","./src/app/material.module.ts","./src/app/nav-header/components/settings-modal/settings-modal.model.ts","./src/app/reducers/ref-data/refdata.actions.ts","./src/app/reducers/ref-data/refdata.reducer.ts","./src/app/reducers/ref-data/refdata.selectors.ts","./src/app/reducers/user/user.actions.ts","./src/app/reducers/user/user.reducer.ts","./src/app/reducers/user/user.selector.ts","./src/app/requests/classes/role-provider.ts","./src/app/requests/components/request-action-reason/request-action-reason.component.ts","./src/app/requests/components/request-action-reason/request-action-reason.component.html","./src/app/requests/constants/artwork-file-statuses.constants.ts","./src/app/requests/constants/request-details.constants.ts","./src/app/requests/constants/request-types.constant.ts","./src/app/requests/services/actions-reason.service.ts","./src/app/requests/services/assignee.service.ts","./src/app/requests/services/file-upload.service.ts","./src/app/requests/services/requests.service.ts","./src/app/shared/components/app-date-picker/app-date-picker.component.html","./src/app/shared/components/app-date-picker/app-date-picker.component.ts","./src/app/shared/components/app-date-picker/date-picker-header/date-picker-header.component.ts","./src/app/shared/components/app-date-picker/date-picker-header/date-picker-header.component.html","./src/app/shared/components/app-input-form/app-input-form.component.html","./src/app/shared/components/app-input-form/app-input-form.component.ts","./src/app/shared/components/with-control-check/with-control-check.mixin.ts","./src/app/shared/components/app-textarea-form/app-textarea-form.component.html","./src/app/shared/components/app-textarea-form/app-textarea-form.component.ts","./src/app/shared/components/back-link/back-link.component.ts","./src/app/shared/components/back-link/back-link.component.html","./src/app/shared/components/checkbox/checkbox.component.html","./src/app/shared/components/checkbox/checkbox.component.ts","./src/app/shared/components/input-search-dropdown/input-search-dropdown.component.html","./src/app/shared/components/input-search-dropdown/input-search-dropdown.component.ts","./src/app/shared/components/multiselect-search-dropdown/item-list.provider.ts","./src/app/shared/components/multiselect-search-dropdown/multiselect-search-dropdown.component.html","./src/app/shared/components/multiselect-search-dropdown/multiselect-search-dropdown.component.ts","./src/app/shared/components/quill/quill.component.ts","./src/app/shared/components/rich-text/rich-text.component.html","./src/app/shared/components/rich-text/rich-text.component.ts","./src/app/shared/constants/api.constants.ts","./src/app/shared/constants/pages.constants.ts","./src/app/shared/constants/user-groups.enum.ts","./src/app/shared/constants/user-roles.constant.ts","./src/app/shared/directives/autonumeric.directive.ts","./src/app/shared/directives/click-stop-propagation.directive.ts","./src/app/shared/directives/custom-hint.directive.ts","./src/app/shared/directives/easy-aria.directive.ts","./src/app/shared/directives/user-permissions.directive.ts","./src/app/shared/guards/auth.guard.ts","./src/app/shared/interceptors/username-header.interceptor.ts","./src/app/shared/models/upload-file-restrictions.model.ts","./src/app/shared/models/user.model.ts","./src/app/shared/pipes/date-pipe-tz.pipe.ts","./src/app/shared/pipes/join.pipe.ts","./src/app/shared/pipes/to-select-search-dropdown-options.pipe.ts","./src/app/shared/constants/error-code.constants.ts","./src/app/shared/services/error-handling-http-client.service.ts","./src/app/shared/services/event-service.service.ts","./src/app/shared/services/loader.service.ts","./src/app/shared/components/system-message/system-message.component.html","./src/app/shared/components/system-message/system-message.component.ts","./src/app/shared/services/message-service.service.ts","./src/app/requests/components/new-request/new-request.component.html","./src/app/requests/components/new-request/new-request.component.ts","./src/app/requests/components/request-name-form/request-name-form.component.html","./src/app/requests/components/request-name-form/request-name-form.component.ts","./src/app/requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component.html","./src/app/requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component.ts","./src/app/shared/directives/tooltip.directive.ts","./src/app/shared/components/approval-manager/approval-manager/approval-manager.component.ts","./src/app/shared/components/approval-manager/approval-manager/approval-manager.component.html","./src/app/shared/services/modal-service.service.ts","./src/app/shared/services/pdf-viewer.service.ts","./src/app/shared/services/pit-msal.service.ts","./src/app/shared/services/state-provider.service.ts","./src/app/shared/services/user-permissions.service.ts","./src/app/nav-header/components/settings-modal/settings-modal.component.ts","./src/app/nav-header/components/settings-modal/settings-modal.component.html","./src/app/shared/services/user-settings.service.ts","./src/app/shared/services/user.service.ts","./src/app/shared/services/utils.service.ts","./src/app/shared/shared.module.ts","./src/app/dashboard/components/dashboard/dashboard.component.ts","./src/app/dashboard/components/dashboard/dashboard.component.html","./src/app/help/components/help/help.component.ts","./src/app/help/components/help/help.component.html","./src/app/error-page/components/error-page/error-page.component.html","./src/app/error-page/components/error-page/error-page.component.ts","./src/app/shared/guards/has-param.guard.ts","./src/environments/environment.prod.ts","./src/app/shared/services/pit-translate-loader.service.ts","./src/app/shared/guards/translation-loaded.guard.ts","./src/app/version/components/version/version.component.html","./src/app/version/components/version/version.component.ts","./src/app/error-page/components/not-authorized/error-auth.component.html","./src/app/error-page/components/not-authorized/error-auth.component.ts","./src/app/app-routing.module.ts","./src/app/shared/services/application-insights.service.ts","./src/app/shared/constants/navigation.constants.ts","./src/app/nav-header/components/nav-profile-picture/profile-picture.provider.ts","./src/app/nav-header/components/nav-profile-picture/nav-profile-picture.component.ts","./src/app/nav-header/components/nav-profile-picture/nav-profile-picture.component.html","./src/app/nav-header/components/nav-header-panel/nav-header-panel.component.html","./src/app/nav-header/components/nav-header-panel/nav-header-panel.component.ts","./src/app/shared/components/approval-manager/pdf-viewer/pdf-viewer.component.ts","./src/app/shared/components/approval-manager/pdf-viewer/pdf-viewer.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/dashboard/dashboard.module.ts","./src/app/env.service.provider.ts","./src/app/error-page/error-page.module.ts","./src/app/help/help.module.ts","./src/app/nav-header/nav-header.module.ts","./src/app/reducers/substitute/substitute.actions.ts","./src/app/reducers/substitute/substitute.reducer.ts","./src/app/reducers/index.ts","./src/app/reducers/ref-data/refdata.effects.ts","./src/app/reducers/substitute/substitute.effects.ts","./src/app/reducers/user/user.effects.ts","./src/app/services/missing-translation.service.ts","./src/app/services/moment-settings.initializer.ts","./src/app/shared/constants/msal.constants.ts","./src/app/shared/services/browser.service.ts","./src/app/shared/interceptors/encode-http-params.interceptor.ts","./src/app/shared/services/application-insights-error-handler.ts","./src/app/substitute/substitute-deps.module.ts","./src/app/reducers/substitute/substitute.selectors.ts","./src/app/shared/services/substitute.service.ts","./src/app/substitute/common/edit-substitute-form/edit-substitute-form.component.html","./src/app/substitute/common/edit-substitute-form/edit-substitute-form.component.ts","./src/app/substitute/modals/add-substitute/add-substitute.component.html","./src/app/substitute/modals/add-substitute/add-substitute.component.ts","./src/app/substitute/modals/edit-substitute/edit-substitute.component.html","./src/app/substitute/modals/edit-substitute/edit-substitute.component.ts","./src/app/substitute/common/substitute-list/substitute-list.component.html","./src/app/substitute/common/substitute-list/substitute-list.component.ts","./src/app/substitute/pages/substites/substitutes.component.html","./src/app/substitute/substitute-routing.module.ts","./src/app/substitute/pages/substites/substitutes.component.ts","./src/app/substitute/substitute.module.ts","./src/app/version/version.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvService {\n public appVersion;\n public appInsightsKey;\n public enableDebug = true;\n public adClientId;\n\n public reportsEnabled: {\n po?: boolean;\n creativeServices?: boolean;\n ih?: boolean;\n popProduction?: boolean;\n thirdParty?: boolean;\n cardRanges?: boolean;\n production?: boolean;\n };\n\n public hideVersion: boolean;\n public hideSomeUIElements: boolean;\n public substituteEnabled: boolean;\n public emailTpsEnabled?: boolean;\n}\n","import { NgModule } from '@angular/core';\n\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatTabsModule,\n MatSortModule,\n MatTableModule,\n MatDatepickerModule,\n MatMomentDateModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n MatIconModule,\n MatBadgeModule,\n MatMenuModule,\n MatDialogModule,\n A11yModule,\n MatExpansionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatRadioModule,\n MatAutocompleteModule,\n MatSnackBarModule,\n MatChipsModule,\n ],\n exports: [\n MatButtonModule,\n MatTabsModule,\n MatSortModule,\n MatTableModule,\n MatDatepickerModule,\n MatMomentDateModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n MatIconModule,\n MatBadgeModule,\n MatMenuModule,\n MatDialogModule,\n A11yModule,\n MatExpansionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatRadioModule,\n MatAutocompleteModule,\n MatSnackBarModule,\n MatChipsModule,\n ],\n})\nexport class MaterialModule { }\n","export enum SETTINGS_GROUPS {\n EMAIL_SIGNATURE = 0\n}\n\nexport interface SettingsModalComponentData {\n section: SETTINGS_GROUPS;\n}\n","import { createAction, props } from '@ngrx/store';\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport { PopItemTypeModel } from '../../requests/models/pop-design-request.model';\n\n/**\n * Payment types\n */\nexport const loadPaymentTypes = createAction(\n '[RequestDetails RefData] Load Payment Types'\n);\nexport const lazyLoadPaymentTypes = createAction(\n '[RequestDetails RefData] Lazy Load Payment Types'\n);\nexport const loadPaymentTypesSuccess = createAction(\n '[RequestDetails RefData] Load Payment Types Success',\n props<{ paymentTypes: PaymentType[] }>()\n);\nexport const loadPaymentTypesFailure = createAction(\n '[RequestDetails RefData] Load Payment Types Failure',\n);\n\n/**\n * Financial Service Payment types\n */\nexport const loadFSPaymentTypes = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types'\n);\nexport const lazyLoadFSPaymentTypes = createAction(\n '[RequestDetails RefData] Lazy Load Financial Service Payment Types'\n);\nexport const loadFSPaymentTypesSuccess = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types Success',\n props<{ fsPaymentTypes: PaymentType[] }>()\n);\nexport const loadFSPaymentTypesFailure = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types Failure',\n);\n\n/**\n * Dielines\n */\nexport const loadDielines = createAction(\n '[RequestDetails RefData] Load Dielines'\n);\nexport const lazyLoadDielines = createAction(\n '[RequestDetails RefData] Lazy Load Dielines'\n);\nexport const loadDielinesSuccess = createAction(\n '[RequestDetails RefData] Load Dielines Success',\n props<{ dielines: CodeNameModel[] }>()\n);\nexport const loadDielinesFailure = createAction(\n '[RequestDetails RefData] Load Dielines Failure',\n);\n\n/**\n * Data pin file types\n */\nexport const loadDataPinFileTypes = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes'\n);\nexport const lazyLoadDataPinFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load DataPinFileTypes'\n);\nexport const loadDataPinFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes Success',\n props<{ dataPinFileTypes: CodeNameModel[] }>()\n);\nexport const loadDataPinFileTypesFailure = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes Failure',\n);\n\n/**\n * Substrates\n */\nexport const loadSubstrates = createAction(\n '[RequestDetails RefData] Load Substrates'\n);\nexport const lazyLoadSubstrates = createAction(\n '[RequestDetails RefData] Lazy Load Substrates'\n);\nexport const loadSubstratesSuccess = createAction(\n '[RequestDetails RefData] Load Substrates Success',\n props<{ substrates: CodeNameModel[] }>()\n);\nexport const loadSubstratesFailure = createAction(\n '[RequestDetails RefData] Load Substrates Failure',\n);\n\n/**\n * RedemptionTypes\n */\nexport const loadRedemptionTypes = createAction(\n '[RequestDetails RefData] Load RedemptionTypes'\n);\nexport const lazyLoadRedemptionTypes = createAction(\n '[RequestDetails RefData] Lazy Load RedemptionTypes'\n);\nexport const loadRedemptionTypesSuccess = createAction(\n '[RequestDetails RefData] Load RedemptionTypes Success',\n props<{ redemptionTypes: CodeNameModel[] }>()\n);\nexport const loadRedemptionTypesFailure = createAction(\n '[RequestDetails RefData] Load RedemptionTypes Failure',\n);\n\n/**\n * RequestItemTypes\n */\nexport const loadRequestItemTypes = createAction(\n '[RequestDetails RefData] Load RequestItemTypes'\n);\nexport const lazyLoadRequestItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load RequestItemTypes'\n);\nexport const loadRequestItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load RequestItemTypes Success',\n props<{ requestItemTypes: CodeNameModel[] }>()\n);\nexport const loadRequestItemTypesFailure = createAction(\n '[RequestDetails RefData] Load RequestItemTypes Failure',\n);\n\n/**\n * Regions\n */\nexport const loadRegions = createAction(\n '[RequestDetails RefData] Load Regions'\n);\nexport const lazyLoadRegions = createAction(\n '[RequestDetails RefData] Lazy Load Regions'\n);\nexport const loadRegionsSuccess = createAction(\n '[RequestDetails RefData] Load Regions Success',\n props<{ regions: CodeNameModel[] }>()\n);\nexport const loadRegionsFailure = createAction(\n '[RequestDetails RefData] Load Regions Failure',\n);\n\n/**\n * Warehouses\n */\nexport const loadWarehouses = createAction(\n '[RequestDetails RefData] Load Warehouses'\n);\nexport const lazyLoadWarehouses = createAction(\n '[RequestDetails RefData] Lazy Load Warehouses'\n);\nexport const loadWarehousesSuccess = createAction(\n '[RequestDetails RefData] Load Warehouses Success',\n props<{ warehouses: Warehouse[] }>()\n);\nexport const loadWarehousesFailure = createAction(\n '[RequestDetails RefData] Load Warehouses Failure',\n);\n/**\n * Companies\n */\nexport const loadCompanies = createAction(\n '[RequestDetails RefData] Load Companies'\n);\nexport const lazyLoadCompanies = createAction(\n '[RequestDetails RefData] Lazy Load Companies'\n);\nexport const loadCompaniesSuccess = createAction(\n '[RequestDetails RefData] Load Companies Success',\n props<{ companies: CodeNameModel[] }>()\n);\nexport const loadCompaniesFailure = createAction(\n '[RequestDetails RefData] Load Companies Failure',\n);\n/**\n * PartnerGroups\n */\nexport const loadPartnerGroups = createAction(\n '[RequestDetails RefData] Load PartnerGroups'\n);\nexport const lazyLoadPartnerGroups = createAction(\n '[RequestDetails RefData] Lazy Load PartnerGroups'\n);\nexport const loadPartnerGroupsSuccess = createAction(\n '[RequestDetails RefData] Load PartnerGroups Success',\n props<{ partnerGroups: CodeNameModel[] }>()\n);\nexport const loadPartnerGroupsFailure = createAction(\n '[RequestDetails RefData] Load PartnerGroups Failure',\n);\n\n/**\n * Design line of business\n */\nexport const loadDesignLineOfBusiness = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness'\n);\nexport const loadDesignLineOfBusinessSuccess = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness Success',\n props<{ designLineOfBusiness: CodeNameModel[] }>()\n);\nexport const loadDesignLineOfBusinessFailure = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness Failure',\n);\nexport const lazyLoadDesignLineOfBusiness = createAction(\n '[RequestDetails RefData] Lazy Load DesignLineOfBusiness'\n);\n\n/**\n * ArtLocationsTypes\n */\nexport const loadArtLocationsTypes = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes'\n);\nexport const lazyLoadArtLocationsTypes = createAction(\n '[RequestDetails RefData] Lazy Load ArtLocationsTypes'\n);\nexport const loadArtLocationsTypesSuccess = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes Success',\n props<{ artLocationTypes: CodeNameModel[] }>()\n);\nexport const loadArtLocationsTypesFailure = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes Failure',\n);\n\n/**\n * DesignSourceTypes\n */\nexport const loadDesignSourceTypes = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes'\n);\nexport const lazyLoadDesignSourceTypes = createAction(\n '[RequestDetails RefData] Lazy Load DesignSourceTypes'\n);\nexport const loadDesignSourceTypesSuccess = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes Success',\n props<{ designSourceTypes: CodeNameModel[] }>()\n);\nexport const loadDesignSourceTypesFailure = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes Failure',\n);\n\n/**\n * ChannelTypes\n */\nexport const loadChannelTypes = createAction(\n '[RequestDetails RefData] Load ChannelTypes'\n);\nexport const lazyLoadChannelTypes = createAction(\n '[RequestDetails RefData] Lazy Load ChannelTypes'\n);\nexport const loadChannelTypesSuccess = createAction(\n '[RequestDetails RefData] Load ChannelTypes Success',\n props<{ channelTypes: CodeNameModel[] }>()\n);\nexport const loadChannelTypesFailure = createAction(\n '[RequestDetails RefData] Load ChannelTypes Failure',\n);\n/**\n * Pop ChannelTypes\n */\nexport const loadPopChannelTypes = createAction(\n '[RequestDetails RefData] Load PopChannelTypes'\n);\nexport const lazyLoadPopChannelTypes = createAction(\n '[RequestDetails RefData] Lazy Load PopChannelTypes'\n);\nexport const loadPopChannelTypesSuccess = createAction(\n '[RequestDetails RefData] Load PopChannelTypes Success',\n props<{ popChannelTypes: CodeNameModel[] }>()\n);\nexport const loadPopChannelTypesFailure = createAction(\n '[RequestDetails RefData] Load PopChannelTypes Failure',\n);\n\n/**\n * InventoryTypes\n */\nexport const loadInventoryTypes = createAction(\n '[RequestDetails RefData] Load InventoryTypes'\n);\nexport const lazyLoadInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load InventoryTypes'\n);\nexport const loadInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load InventoryTypes Success',\n props<{ inventoryTypes: CodeNameModel[] }>()\n);\nexport const loadInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load InventoryTypes Failure',\n);\n\n/**\n * ComponentTypes\n */\nexport const loadComponentTypes = createAction(\n '[RequestDetails RefData] Load ComponentTypes'\n);\nexport const lazyLoadComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load ComponentTypes'\n);\nexport const loadComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load ComponentTypes Success',\n props<{ componentTypes: CodeNameModel[] }>()\n);\nexport const loadComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load ComponentTypes Failure',\n);\n\n/**\n * PopItemTypes\n */\nexport const loadPopItemTypes = createAction(\n '[RequestDetails RefData] Load PopItemTypes'\n);\nexport const lazyLoadPopItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load PopItemTypes'\n);\nexport const loadPopItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load PopItemTypes Success',\n props<{ popItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopItemTypesFailure = createAction(\n '[RequestDetails RefData] Load PopItemTypes Failure',\n);\n\n/**\n * ColorTypes\n */\nexport const loadColorTypes = createAction(\n '[RequestDetails RefData] Load ColorTypes'\n);\nexport const lazyLoadColorTypes = createAction(\n '[RequestDetails RefData] Lazy Load ColorTypes'\n);\nexport const loadColorTypesSuccess = createAction(\n '[RequestDetails RefData] Load ColorTypes Success',\n props<{ colorTypes: CodeNameModel[] }>()\n);\nexport const loadColorTypesFailure = createAction(\n '[RequestDetails RefData] Load ColorTypes Failure',\n);\n\n/**\n * DimensionTypes\n */\nexport const loadDimensionTypes = createAction(\n '[RequestDetails RefData] Load DimensionTypes'\n);\nexport const lazyLoadDimensionTypes = createAction(\n '[RequestDetails RefData] Lazy Load DimensionTypes'\n);\nexport const loadDimensionTypesSuccess = createAction(\n '[RequestDetails RefData] Load DimensionTypes Success',\n props<{ dimensionTypes: CodeNameModel[] }>()\n);\nexport const loadDimensionTypesFailure = createAction(\n '[RequestDetails RefData] Load DimensionTypes Failure',\n);\n\n/**\n * FinancialTypes\n */\nexport const loadFinancialTypes = createAction(\n '[RequestDetails RefData] Load FinancialTypes'\n);\nexport const lazyLoadFinancialTypes = createAction(\n '[RequestDetails RefData] Lazy Load FinancialTypes'\n);\nexport const loadFinancialTypesSuccess = createAction(\n '[RequestDetails RefData] Load FinancialTypes Success',\n props<{ financialTypes: CodeNameModel[] }>()\n);\nexport const loadFinancialTypesFailure = createAction(\n '[RequestDetails RefData] Load FinancialTypes Failure',\n);\n/**\n * Pop EventTypes\n */\nexport const loadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Load EventTypes'\n);\nexport const lazyLoadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Lazy Load EventTypes'\n);\nexport const loadPopProdEventTypesSuccess = createAction(\n '[RequestDetails RefData] Load EventTypes Success',\n props<{ popProdEventTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdEventTypesFailure = createAction(\n '[RequestDetails RefData] Load EventTypes Failure',\n);\n/**\n * Pop FundingTypes\n */\nexport const loadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Load FundingTypes'\n);\nexport const lazyLoadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Lazy Load FundingTypes'\n);\nexport const loadPopProdFundingTypesSuccess = createAction(\n '[RequestDetails RefData] Load FundingTypes Success',\n props<{ popProdFundingTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdFundingTypesFailure = createAction(\n '[RequestDetails RefData] Load FundingTypes Failure',\n);\n/**\n * Pop UsageDurationTypes\n */\nexport const loadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes'\n);\nexport const lazyLoadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Lazy Load UsageDurationTypes'\n);\nexport const loadPopProdUsageDurationTypesSuccess = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Success',\n props<{ popUsageDurationTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdUsageDurationTypesFailure = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Failure',\n);\n/**\n * Pop Prod ItemTypes\n */\nexport const loadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes'\n);\nexport const lazyLoadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod ItemTypes'\n);\nexport const loadPopProdItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Success',\n props<{ popProdItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopProdItemTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Failure',\n);\nexport const lazyLoadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod CuttingTypes',\n);\n/**\n * Pop Prod CuttingTypes\n */\nexport const loadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes',\n);\nexport const loadPopProdCuttingTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Success',\n props<{ popProdCuttingTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdCuttingTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Failure',\n);\nexport const lazyLoadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod MaterialTypes',\n);\n/**\n * Pop Prod MaterialTypes\n */\nexport const loadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes',\n);\nexport const loadPopProdMaterialTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Success',\n props<{ popProdMaterialTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdMaterialTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Failure',\n);\nexport const lazyLoadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod TapeTypes',\n);\n/**\n * Pop Prod TapeTypes\n */\nexport const loadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes',\n);\nexport const loadPopProdTapeTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Success',\n props<{ popProdTapeTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdTapeTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Failure',\n);\n/**\n * Pop Prod InventoryTypes\n */\nexport const loadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes'\n);\nexport const lazyLoadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod InventoryTypes'\n);\nexport const loadPopProdInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Success',\n props<{ popProdInventoryTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Failure',\n);\n\n/**\n * Printers\n */\nexport const loadPrinters = createAction(\n '[RequestDetails RefData] Load Printers'\n);\nexport const lazyLoadPrinters = createAction(\n '[RequestDetails RefData] Lazy Load Printers'\n);\nexport const loadPrintersSuccess = createAction(\n '[RequestDetails RefData] Load Printers Success',\n props<{ printers: any[] }>()\n);\nexport const loadPrintersFailure = createAction(\n '[RequestDetails RefData] Load Printers Failure',\n);\n\n/**\n * BifComponentTypes\n */\nexport const loadBifComponentTypes = createAction(\n '[RequestDetails RefData] Load BifComponentTypes'\n);\nexport const lazyLoadBifComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifComponentTypes'\n);\nexport const loadBifComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Success',\n props<{ bifComponentTypes: CodeNameModel[] }>()\n);\nexport const loadBifComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Failure',\n);\n\n/**\n * BifFulfillmentTypes\n */\nexport const loadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes'\n);\nexport const lazyLoadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifFulfillmentTypes'\n);\nexport const loadBifFulfillmentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Success',\n props<{ bifFulfillmentTypes: CodeNameModel[] }>()\n);\nexport const loadBifFulfillmentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Failure',\n);\n\n/**\n * ThirdPartyDataPinFileTypes\n */\nexport const loadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes'\n);\nexport const lazyLoadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyDataPinFileTypes'\n);\nexport const loadThirdPartyDataPinFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Success',\n props<{ thirdPartyDataPinFileTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyDataPinFileTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Failure',\n);\n\n/**\n * ThirdPartyOrderTypes\n */\nexport const loadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes'\n);\nexport const lazyLoadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyOrderTypes'\n);\nexport const loadThirdPartyOrderTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Success',\n props<{ thirdPartyOrderTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyOrderTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Failure',\n);\n\n/**\n * ThirdPartyPrintOwnerTypes\n */\nexport const loadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes'\n);\nexport const lazyLoadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyPrintOwnerTypes'\n);\nexport const loadThirdPartyPrintOwnerTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Success',\n props<{ thirdPartyPrintOwnerTypes: Array }>()\n);\nexport const loadThirdPartyPrintOwnerTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Failure',\n);\n\n/**\n * IhComponents\n */\nexport const loadIhComponents = createAction(\n '[RequestDetails RefData] Load IhComponents',\n);\nexport const lazyLoadIhComponents = createAction(\n '[RequestDetails RefData] Lazy Load IhComponents',\n);\nexport const loadIhComponentsSuccess = createAction(\n '[RequestDetails RefData] Load IhComponents Success',\n props<{ ihComponents: CodeNameModel[] }>(),\n);\nexport const loadIhComponentsFailure = createAction(\n '[RequestDetails RefData] Load IhComponents Failure',\n);\n\n/**\n * IhHealthPlans\n */\nexport const loadIhHealthPlans = createAction(\n '[RequestDetails RefData] Load IhHealthPlans',\n);\nexport const lazyLoadIhHealthPlans = createAction(\n '[RequestDetails RefData] Lazy Load IhHealthPlans',\n);\nexport const loadIhHealthPlansSuccess = createAction(\n '[RequestDetails RefData] Load IhHealthPlans Success',\n props<{ ihHealthPlans: CodeNameModel[] }>(),\n);\nexport const loadIhHealthPlansFailure = createAction(\n '[RequestDetails RefData] Load IhHealthPlans Failure',\n);\n\n/**\n * IhHealthPrograms\n */\nexport const loadIhHealthPrograms = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms',\n props<{ healthPlanCode: string }>(),\n);\nexport const lazyLoadIhHealthPrograms = createAction(\n '[RequestDetails RefData] Lazy Load IhHealthPrograms',\n props<{ healthPlanCode: string }>(),\n);\nexport const loadIhHealthProgramsSuccess = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms Success',\n props<{ ihHealthPrograms: CodeNameModel[] }>(),\n);\nexport const loadIhHealthProgramsFailure = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms Failure',\n);\nexport const clearIhHealthPrograms = createAction(\n '[RequestDetails RefData] clear IhHealthPrograms',\n);\n\n/**\n * IhPriorities\n */\nexport const loadIhPriorities = createAction(\n '[RequestDetails RefData] Load IhPriorities',\n);\nexport const lazyLoadIhPriorities = createAction(\n '[RequestDetails RefData] Lazy Load IhPriorities',\n);\nexport const loadIhPrioritiesSuccess = createAction(\n '[RequestDetails RefData] Load IhPriorities Success',\n props<{ ihPriorities: Array }>(),\n);\nexport const loadIhPrioritiesFailure = createAction(\n '[RequestDetails RefData] Load IhPriorities Failure',\n);\n\n/**\n * ReturnFileTypes\n */\nexport const loadReturnFileTypes = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes',\n);\nexport const lazyLoadReturnFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load ReturnFileTypes',\n);\nexport const loadReturnFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes Success',\n props<{ returnFileTypes: CodeNameModel[] }>(),\n);\nexport const loadReturnFileTypesFailure = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes Failure',\n);\n\n/**\n * ImageFormatType\n */\nexport const loadImageFormatTypes = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes',\n);\nexport const lazyLoadImageFormatTypes = createAction(\n '[RequestDetails RefData] Lazy Load ImageFormatTypes',\n);\nexport const loadImageFormatTypesSuccess = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes Success',\n props<{ imageFormatTypes: CodeNameModel[] }>(),\n);\nexport const loadImageFormatTypesFailure = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes Failure',\n);\n","import {createReducer, on} from '@ngrx/store';\n\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {PopItemTypeModel} from '../../requests/models/pop-design-request.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {\n clearIhHealthPrograms,\n loadArtLocationsTypes,\n loadArtLocationsTypesFailure,\n loadArtLocationsTypesSuccess,\n loadBifComponentTypes,\n loadBifComponentTypesFailure,\n loadBifComponentTypesSuccess,\n loadBifFulfillmentTypes,\n loadBifFulfillmentTypesFailure,\n loadBifFulfillmentTypesSuccess,\n loadChannelTypes,\n loadChannelTypesFailure,\n loadChannelTypesSuccess,\n loadColorTypes,\n loadColorTypesFailure,\n loadColorTypesSuccess,\n loadCompanies,\n loadCompaniesFailure,\n loadCompaniesSuccess,\n loadComponentTypes,\n loadComponentTypesFailure,\n loadComponentTypesSuccess,\n loadDataPinFileTypes,\n loadDataPinFileTypesFailure,\n loadDataPinFileTypesSuccess,\n loadDesignLineOfBusiness,\n loadDesignLineOfBusinessFailure,\n loadDesignLineOfBusinessSuccess,\n loadDesignSourceTypes,\n loadDesignSourceTypesFailure,\n loadDesignSourceTypesSuccess,\n loadDielines,\n loadDielinesFailure,\n loadDielinesSuccess,\n loadDimensionTypes,\n loadDimensionTypesFailure,\n loadDimensionTypesSuccess,\n loadFinancialTypes,\n loadFinancialTypesFailure,\n loadFinancialTypesSuccess,\n loadFSPaymentTypes,\n loadFSPaymentTypesFailure,\n loadFSPaymentTypesSuccess,\n loadIhComponents,\n loadIhComponentsFailure,\n loadIhComponentsSuccess,\n loadIhHealthPlans,\n loadIhHealthPlansFailure,\n loadIhHealthPlansSuccess,\n loadIhHealthPrograms,\n loadIhHealthProgramsFailure,\n loadIhHealthProgramsSuccess,\n loadIhPriorities,\n loadIhPrioritiesFailure,\n loadIhPrioritiesSuccess,\n loadImageFormatTypes,\n loadImageFormatTypesFailure,\n loadImageFormatTypesSuccess,\n loadInventoryTypes,\n loadInventoryTypesFailure,\n loadInventoryTypesSuccess,\n loadPartnerGroups,\n loadPartnerGroupsFailure,\n loadPartnerGroupsSuccess,\n loadPaymentTypes,\n loadPaymentTypesFailure,\n loadPaymentTypesSuccess,\n loadPopChannelTypes,\n loadPopChannelTypesFailure,\n loadPopChannelTypesSuccess,\n loadPopItemTypes,\n loadPopItemTypesFailure,\n loadPopItemTypesSuccess,\n loadPopProdCuttingTypes,\n loadPopProdCuttingTypesFailure,\n loadPopProdCuttingTypesSuccess,\n loadPopProdEventTypes,\n loadPopProdEventTypesFailure,\n loadPopProdEventTypesSuccess,\n loadPopProdFundingTypes,\n loadPopProdFundingTypesFailure,\n loadPopProdFundingTypesSuccess,\n loadPopProdInventoryTypes,\n loadPopProdInventoryTypesFailure,\n loadPopProdInventoryTypesSuccess,\n loadPopProdItemTypes,\n loadPopProdItemTypesFailure,\n loadPopProdItemTypesSuccess,\n loadPopProdMaterialTypes,\n loadPopProdMaterialTypesFailure,\n loadPopProdMaterialTypesSuccess,\n loadPopProdTapeTypes,\n loadPopProdTapeTypesFailure,\n loadPopProdTapeTypesSuccess,\n loadPopProdUsageDurationTypes,\n loadPopProdUsageDurationTypesFailure,\n loadPopProdUsageDurationTypesSuccess,\n loadPrinters,\n loadPrintersFailure,\n loadPrintersSuccess,\n loadRedemptionTypes,\n loadRedemptionTypesFailure,\n loadRedemptionTypesSuccess,\n loadRegions,\n loadRegionsFailure,\n loadRegionsSuccess,\n loadRequestItemTypes,\n loadRequestItemTypesFailure,\n loadRequestItemTypesSuccess,\n loadReturnFileTypes,\n loadReturnFileTypesFailure,\n loadReturnFileTypesSuccess,\n loadSubstrates,\n loadSubstratesFailure,\n loadSubstratesSuccess,\n loadThirdPartyDataPinFileTypes,\n loadThirdPartyDataPinFileTypesFailure,\n loadThirdPartyDataPinFileTypesSuccess,\n loadThirdPartyOrderTypes,\n loadThirdPartyOrderTypesFailure,\n loadThirdPartyOrderTypesSuccess,\n loadThirdPartyPrintOwnerTypes,\n loadThirdPartyPrintOwnerTypesFailure,\n loadThirdPartyPrintOwnerTypesSuccess,\n loadWarehouses,\n loadWarehousesFailure,\n loadWarehousesSuccess\n} from './refdata.actions';\n\nexport const requestRefDataFeatureKey = 'refData';\n\nexport interface RequestRefDataState {\n paymentTypes: PaymentType[];\n fsPaymentTypes: PaymentType[];\n dielines: CodeNameModel[];\n dataPinFileTypes: CodeNameModel[];\n substrates: CodeNameModel[];\n redemptionTypes: CodeNameModel[];\n requestItemTypes: CodeNameModel[];\n regions: CodeNameModel[];\n warehouses: Warehouse[];\n companies: CodeNameModel[];\n partnerGroups: CodeNameModel[];\n designLineOfBusiness: CodeNameModel[];\n artLocationTypes: CodeNameModel[];\n designSourceTypes: CodeNameModel[];\n channelTypes: CodeNameModel[];\n popChannelTypes: CodeNameModel[];\n inventoryTypes: CodeNameModel[];\n componentTypes: CodeNameModel[];\n popItemTypes: PopItemTypeModel[];\n colorTypes: CodeNameModel[];\n dimensionTypes: CodeNameModel[];\n financialTypes: CodeNameModel[];\n popProdEventTypes: CodeNameModel[];\n popProdFundingTypes: Array<\n CodeNameModel & {\n mask?: string;\n tooltip?: string;\n }\n >;\n popUsageDurationTypes: CodeNameModel[];\n popProdItemTypes: PopItemTypeModel[];\n popProdCuttingTypes: CodeNameModel[];\n popProdMaterialTypes: CodeNameModel[];\n popProdTapeTypes: CodeNameModel[];\n popProdInventoryTypes: CodeNameModel[];\n printers: any[];\n bifComponentTypes: CodeNameModel[];\n bifFulfillmentTypes: CodeNameModel[];\n thirdPartyDataPinFileTypes: CodeNameModel[];\n thirdPartyOrderTypes: CodeNameModel[];\n thirdPartyPrintOwnerTypes: Array;\n ihComponents: CodeNameModel[];\n ihHealthPlans: CodeNameModel[];\n ihHealthPrograms: CodeNameModel[];\n ihPriorities: Array;\n returnFileTypes: CodeNameModel[];\n imageFormatTypes: CodeNameModel[];\n}\n\nexport const refDataInitialState: RequestRefDataState = {\n paymentTypes: [],\n fsPaymentTypes: [],\n dielines: [],\n dataPinFileTypes: [],\n substrates: [],\n redemptionTypes: [],\n requestItemTypes: [],\n regions: [],\n warehouses: [],\n companies: [],\n partnerGroups: [],\n designLineOfBusiness: [],\n artLocationTypes: [],\n designSourceTypes: [],\n channelTypes: [],\n popChannelTypes: [],\n inventoryTypes: [],\n componentTypes: [],\n popItemTypes: [],\n colorTypes: [],\n dimensionTypes: [],\n financialTypes: [],\n popProdEventTypes: [],\n popProdFundingTypes: [],\n popUsageDurationTypes: [],\n popProdItemTypes: [],\n popProdCuttingTypes: [],\n popProdMaterialTypes: [],\n popProdTapeTypes: [],\n popProdInventoryTypes: [],\n printers: [],\n bifComponentTypes: [],\n bifFulfillmentTypes: [],\n thirdPartyDataPinFileTypes: [],\n thirdPartyOrderTypes: [],\n thirdPartyPrintOwnerTypes: [],\n ihComponents: [],\n ihHealthPlans: [],\n ihHealthPrograms: [],\n ihPriorities: [],\n returnFileTypes: [],\n imageFormatTypes: []\n};\n\nexport const refDataReducer = createReducer(\n refDataInitialState,\n\n on(loadPaymentTypes, state => ({...state, paymentTypes: []})),\n on(loadPaymentTypesSuccess, (state, action) => ({...state, paymentTypes: action.paymentTypes})),\n on(loadPaymentTypesFailure, state => ({...state, paymentTypes: []})),\n\n on(loadFSPaymentTypes, state => ({...state, fsPaymentTypes: []})),\n on(loadFSPaymentTypesSuccess, (state, action) => ({...state, fsPaymentTypes: action.fsPaymentTypes})),\n on(loadFSPaymentTypesFailure, state => ({...state, fsPaymentTypes: []})),\n\n on(loadDielines, state => ({...state, dielines: []})),\n on(loadDielinesSuccess, (state, action) => ({...state, dielines: action.dielines})),\n on(loadDielinesFailure, state => ({...state, dielines: []})),\n\n on(loadDataPinFileTypes, state => ({...state, dataPinFileTypes: []})),\n on(loadDataPinFileTypesSuccess, (state, action) => ({...state, dataPinFileTypes: action.dataPinFileTypes})),\n on(loadDataPinFileTypesFailure, state => ({...state, dataPinFileTypes: []})),\n\n on(loadSubstrates, state => ({...state, substrates: []})),\n on(loadSubstratesSuccess, (state, action) => ({...state, substrates: action.substrates})),\n on(loadSubstratesFailure, state => ({...state, substrates: []})),\n\n on(loadRedemptionTypes, state => ({...state, redemptionTypes: []})),\n on(loadRedemptionTypesSuccess, (state, action) => ({...state, redemptionTypes: action.redemptionTypes})),\n on(loadRedemptionTypesFailure, state => ({...state, redemptionTypes: []})),\n\n on(loadRequestItemTypes, state => ({...state, requestItemTypes: []})),\n on(loadRequestItemTypesSuccess, (state, action) => ({...state, requestItemTypes: action.requestItemTypes})),\n on(loadRequestItemTypesFailure, state => ({...state, requestItemTypes: []})),\n\n on(loadRegions, state => ({...state, regions: []})),\n on(loadRegionsSuccess, (state, action) => ({...state, regions: action.regions})),\n on(loadRegionsFailure, state => ({...state, regions: []})),\n\n on(loadWarehouses, state => ({...state, warehouses: []})),\n on(loadWarehousesSuccess, (state, action) => ({...state, warehouses: action.warehouses})),\n on(loadWarehousesFailure, state => ({...state, warehouses: []})),\n\n on(loadCompanies, state => ({...state, companies: []})),\n on(loadCompaniesSuccess, (state, action) => ({...state, companies: action.companies})),\n on(loadCompaniesFailure, state => ({...state, companies: []})),\n\n on(loadPopProdInventoryTypes, state => ({...state, popProdInventoryTypes: []})),\n on(loadPopProdInventoryTypesSuccess, (state, action) => ({...state, popProdInventoryTypes: action.popProdInventoryTypes})),\n on(loadPopProdInventoryTypesFailure, state => ({...state, popProdInventoryTypes: []})),\n\n on(loadPrinters, state => ({...state, printers: []})),\n on(loadPrintersSuccess, (state, action) => ({...state, printers: action.printers})),\n on(loadPrintersFailure, state => ({...state, popProdInvenprinterstoryTypes: []})),\n\n on(loadPartnerGroups, state => ({...state, partnerGroups: []})),\n on(loadPartnerGroupsSuccess, (state, action) => ({...state, partnerGroups: action.partnerGroups})),\n on(loadPartnerGroupsFailure, state => ({...state, partnerGroups: []})),\n\n on(loadDesignLineOfBusiness, state => ({...state, designLineOfBusiness: []})),\n on(loadDesignLineOfBusinessSuccess, (state, action) => ({...state, designLineOfBusiness: action.designLineOfBusiness})),\n on(loadDesignLineOfBusinessFailure, state => ({...state, designLineOfBusiness: []})),\n\n on(loadArtLocationsTypes, state => ({...state, artLocationTypes: []})),\n on(loadArtLocationsTypesSuccess, (state, action) => ({...state, artLocationTypes: action.artLocationTypes})),\n on(loadArtLocationsTypesFailure, state => ({...state, artLocationTypes: []})),\n\n on(loadDesignSourceTypes, state => ({...state, designSourceTypes: []})),\n on(loadDesignSourceTypesSuccess, (state, action) => ({...state, designSourceTypes: action.designSourceTypes})),\n on(loadDesignSourceTypesFailure, state => ({...state, designSourceTypes: []})),\n\n on(loadChannelTypes, state => ({...state, channelTypes: []})),\n on(loadChannelTypesSuccess, (state, action) => ({...state, channelTypes: action.channelTypes})),\n on(loadChannelTypesFailure, state => ({...state, channelTypes: []})),\n\n on(loadPopChannelTypes, state => ({...state, popChannelTypes: []})),\n on(loadPopChannelTypesSuccess, (state, action) => ({...state, popChannelTypes: action.popChannelTypes})),\n on(loadPopChannelTypesFailure, state => ({...state, popChannelTypes: []})),\n\n on(loadInventoryTypes, state => ({...state, inventoryTypes: []})),\n on(loadInventoryTypesSuccess, (state, action) => ({...state, inventoryTypes: action.inventoryTypes})),\n on(loadInventoryTypesFailure, state => ({...state, inventoryTypes: []})),\n\n on(loadComponentTypes, state => ({...state, componentTypes: []})),\n on(loadComponentTypesSuccess, (state, action) => ({...state, componentTypes: action.componentTypes})),\n on(loadComponentTypesFailure, state => ({...state, componentTypes: []})),\n\n on(loadPopItemTypes, state => ({...state, popItemTypes: []})),\n on(loadPopItemTypesSuccess, (state, action) => ({...state, popItemTypes: action.popItemTypes})),\n on(loadPopItemTypesFailure, state => ({...state, popItemTypes: []})),\n\n on(loadColorTypes, state => ({...state, colorTypes: []})),\n on(loadColorTypesSuccess, (state, action) => ({...state, colorTypes: action.colorTypes})),\n on(loadColorTypesFailure, state => ({...state, colorTypes: []})),\n\n on(loadDimensionTypes, state => ({...state, dimensionTypes: []})),\n on(loadDimensionTypesSuccess, (state, action) => ({...state, dimensionTypes: action.dimensionTypes})),\n on(loadDimensionTypesFailure, state => ({...state, dimensionTypes: []})),\n\n on(loadFinancialTypes, state => ({...state, financialTypes: []})),\n on(loadFinancialTypesSuccess, (state, action) => ({...state, financialTypes: action.financialTypes})),\n on(loadFinancialTypesFailure, state => ({...state, financialTypes: []})),\n\n on(loadPopProdEventTypes, state => ({...state, popProdEventTypes: []})),\n on(loadPopProdEventTypesSuccess, (state, action) => ({...state, popProdEventTypes: action.popProdEventTypes})),\n on(loadPopProdEventTypesFailure, state => ({...state, popProdEventTypes: []})),\n\n on(loadPopProdFundingTypes, state => ({...state, popProdFundingTypes: []})),\n on(loadPopProdFundingTypesSuccess, (state, action) => ({...state, popProdFundingTypes: action.popProdFundingTypes})),\n on(loadPopProdFundingTypesFailure, state => ({...state, popProdFundingTypes: []})),\n\n on(loadPopProdUsageDurationTypes, state => ({...state, popUsageDurationTypes: []})),\n on(loadPopProdUsageDurationTypesSuccess, (state, action) => ({\n ...state,\n popUsageDurationTypes: action.popUsageDurationTypes\n })),\n on(loadPopProdUsageDurationTypesFailure, state => ({...state, popUsageDurationTypes: []})),\n\n on(loadPopProdItemTypes, state => ({...state, popProdItemTypes: []})),\n on(loadPopProdItemTypesSuccess, (state, action) => ({...state, popProdItemTypes: action.popProdItemTypes})),\n on(loadPopProdItemTypesFailure, state => ({...state, popProdItemTypes: []})),\n\n on(loadPopProdCuttingTypes, loadPopProdCuttingTypesFailure, state => ({...state, popProdItemTypes: []})),\n on(loadPopProdCuttingTypesSuccess, (state, {popProdCuttingTypes}) => ({\n ...state,\n popProdCuttingTypes\n })),\n\n on(loadPopProdMaterialTypes, loadPopProdMaterialTypesFailure, state => ({\n ...state,\n popProdMaterialTypes: []\n })),\n on(loadPopProdMaterialTypesSuccess, (state, {popProdMaterialTypes}) => ({\n ...state,\n popProdMaterialTypes\n })),\n\n on(loadPopProdTapeTypes, loadPopProdTapeTypesFailure, state => ({...state, popProdTapeTypes: []})),\n on(loadPopProdTapeTypesSuccess, (state, {popProdTapeTypes}) => ({\n ...state,\n popProdTapeTypes\n })),\n\n on(loadBifComponentTypes, state => ({...state, bifComponentTypes: []})),\n on(loadBifComponentTypesSuccess, (state, action) => ({...state, bifComponentTypes: action.bifComponentTypes})),\n on(loadBifComponentTypesFailure, state => ({...state, bifComponentTypes: []})),\n\n on(loadBifFulfillmentTypes, state => ({...state, bifFulfillmentTypes: []})),\n on(loadBifFulfillmentTypesSuccess, (state, action) => ({...state, bifFulfillmentTypes: action.bifFulfillmentTypes})),\n on(loadBifFulfillmentTypesFailure, state => ({...state, bifFulfillmentTypes: []})),\n /**\n * ThirdPartyDataPinFileTypes\n */\n on(loadThirdPartyDataPinFileTypes, state => ({...state, thirdPartyDataPinFileTypes: []})),\n on(loadThirdPartyDataPinFileTypesSuccess, (state, action) => ({\n ...state,\n thirdPartyDataPinFileTypes: action.thirdPartyDataPinFileTypes\n })),\n on(loadThirdPartyDataPinFileTypesFailure, state => ({...state, thirdPartyDataPinFileTypes: []})),\n /**\n * ThirdPartyOrderTypes\n */\n on(loadThirdPartyOrderTypes, state => ({...state, thirdPartyOrderTypes: []})),\n on(loadThirdPartyOrderTypesSuccess, (state, action) => ({...state, thirdPartyOrderTypes: action.thirdPartyOrderTypes})),\n on(loadThirdPartyOrderTypesFailure, state => ({...state, thirdPartyOrderTypes: []})),\n /**\n * ThirdPartyPrintOwnerTypes\n */\n on(loadThirdPartyPrintOwnerTypes, state => ({...state, thirdPartyPrintOwnerTypes: []})),\n on(loadThirdPartyPrintOwnerTypesSuccess, (state, action) => ({\n ...state,\n thirdPartyPrintOwnerTypes: action.thirdPartyPrintOwnerTypes\n })),\n on(loadThirdPartyPrintOwnerTypesFailure, state => ({...state, thirdPartyPrintOwnerTypes: []})),\n /**\n * Ih refdata\n */\n on(loadIhComponents, state => ({...state, ihComponents: []})),\n on(loadIhComponentsSuccess, (state, action) => ({...state, ihComponents: action.ihComponents})),\n on(loadIhComponentsFailure, state => ({...state, ihComponents: []})),\n\n on(loadIhHealthPlans, state => ({...state, ihHealthPlans: []})),\n on(loadIhHealthPlansSuccess, (state, action) => ({...state, ihHealthPlans: action.ihHealthPlans})),\n on(loadIhHealthPlansFailure, state => ({...state, ihHealthPlans: []})),\n\n on(loadIhHealthPrograms, state => ({...state, ihHealthPrograms: []})),\n on(loadIhHealthProgramsSuccess, (state, action) => ({...state, ihHealthPrograms: action.ihHealthPrograms})),\n on(loadIhHealthProgramsFailure, state => ({...state, ihHealthPrograms: []})),\n on(clearIhHealthPrograms, state => ({...state, ihHealthPrograms: []})),\n\n on(loadIhPriorities, state => ({...state, ihPriorities: []})),\n on(loadIhPrioritiesSuccess, (state, action) => ({...state, ihPriorities: action.ihPriorities})),\n on(loadIhPrioritiesFailure, state => ({...state, ihPriorities: []})),\n\n on(loadReturnFileTypes, state => ({...state, returnFileTypes: []})),\n on(loadReturnFileTypesSuccess, (state, action) => ({...state, returnFileTypes: action.returnFileTypes})),\n on(loadReturnFileTypesFailure, state => ({...state, returnFileTypes: []})),\n\n on(loadImageFormatTypes, state => ({...state, ImageFormatTypes: []})),\n on(loadImageFormatTypesSuccess, (state, action) => ({...state, imageFormatTypes: action.imageFormatTypes})),\n on(loadImageFormatTypesFailure, state => ({...state, ImageFormatTypes: []}))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { UtilsService } from 'src/app/shared/services/utils.service';\nimport { requestRefDataFeatureKey, RequestRefDataState } from './refdata.reducer';\n\nexport const selectRequestRefDataState = createFeatureSelector(\n requestRefDataFeatureKey\n);\n\nexport const selectRefData = createFeatureSelector(\n requestRefDataFeatureKey\n);\n\nexport const selectPaymentTypes = createSelector(\n selectRefData,\n (state) => state.paymentTypes\n);\n\nexport const selectDielines = createSelector(\n selectRefData,\n (state) => state.dielines\n);\n\nexport const selectRequestItemTypes = createSelector(\n selectRefData,\n (state) => state.requestItemTypes\n);\n\nexport const selectDataPinFileTypes = createSelector(\n selectRefData,\n (state) => state.dataPinFileTypes\n);\n\nexport const selectRedemptionTypes = createSelector(\n selectRefData,\n (state) => state.redemptionTypes\n);\n\nexport const selectSubstrates = createSelector(\n selectRefData,\n (state) => state.substrates\n);\n\nexport const selectRegions = createSelector(\n selectRefData,\n (state) => state.regions\n);\n\nexport const selectWarehouses = createSelector(\n selectRefData,\n (state) => state.warehouses\n);\n\nexport const selectCompanies = createSelector(\n selectRefData,\n (state) => state.companies\n);\n\nexport const selectPopProdInventoryTypes = createSelector(\n selectRefData,\n (state) => state.popProdInventoryTypes\n);\n// 2\nexport const selectPrinters = createSelector(\n selectRefData,\n (state) => state.printers\n);\n\nexport const selectPartnerGroups = createSelector(\n selectRefData,\n (state) => state.partnerGroups\n);\n\nexport const selectDesignLineOfBusiness = createSelector(\n selectRefData,\n (state) => state.designLineOfBusiness\n);\n\nexport const selectArtLocationTypes = createSelector(\n selectRefData,\n (state) => state.artLocationTypes\n);\n\nexport const selectDesignSourceTypes = createSelector(\n selectRefData,\n (state) => state.designSourceTypes\n);\n\nexport const selectChannelTypes = createSelector(\n selectRefData,\n (state) => state.channelTypes\n);\n\nexport const selectPopChannelTypes = createSelector(\n selectRefData,\n (state) => state.popChannelTypes\n);\n\nexport const selectInventoryTypes = createSelector(\n selectRefData,\n (state) => state.inventoryTypes\n);\n\nexport const selectComponentTypes = createSelector(\n selectRefData,\n (state) => state.componentTypes\n);\n\nexport const selectPopItemTypes = createSelector(\n selectRefData,\n (state) => state.popItemTypes\n);\n\nexport const selectColorTypes = createSelector(\n selectRefData,\n (state) => state.colorTypes\n);\n\nexport const selectDimensionTypes = createSelector(\n selectRefData,\n (state) => state.dimensionTypes\n);\n\nexport const selectFinancialTypes = createSelector(\n selectRefData,\n (state) => state.financialTypes\n);\n\nexport const selectPopProdEventTypes = createSelector(\n selectRefData,\n (state) => state.popProdEventTypes\n);\n\nexport const selectPopProdFundingTypes = createSelector(\n selectRefData,\n (state) => state.popProdFundingTypes\n);\n\nexport const selectPopProdUsageDurationTypes = createSelector(\n selectRefData,\n (state) => state.popUsageDurationTypes\n);\n\nexport const selectPopProdItemTypes = createSelector(\n selectRefData,\n (state) => state.popProdItemTypes\n);\n\nexport const selectPopProdCuttingTypes = createSelector(\n selectRefData,\n (state) => state.popProdCuttingTypes,\n);\n\nexport const selectPopProdMaterialTypes = createSelector(\n selectRefData,\n (state) => state.popProdMaterialTypes,\n);\n\nexport const selectPopProdTapeTypes = createSelector(\n selectRefData,\n (state) => state.popProdTapeTypes,\n);\n\nexport const selectFSPaymentTypes = createSelector(\n selectRefData,\n (state) => state.fsPaymentTypes\n);\n\nexport const selectBifComponentTypes = createSelector(\n selectRefData,\n (state) => state.bifComponentTypes,\n);\n\nexport const selectBifFulfillmentTypes = createSelector(\n selectRefData,\n (state) => state.bifFulfillmentTypes,\n);\n\n/**\n * ThirdPartyDataPinFileTypes\n */\nexport const selectThirdPartyDataPinFileTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyDataPinFileTypes,\n);\n/**\n * ThirdPartyOrderTypes\n */\nexport const selectThirdPartyOrderTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyOrderTypes,\n);\n/**\n * ThirdPartyPrintOwnerTypes\n */\nexport const selectThirdPartyPrintOwnerTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyPrintOwnerTypes,\n);\n\nexport const selectIhComponents = createSelector(\n selectRefData,\n (state) => state.ihComponents,\n);\n\nexport const selectIhHealthPlans = createSelector(\n selectRefData,\n (state) => state.ihHealthPlans,\n);\n\nexport const selectIhHealthPrograms = createSelector(\n selectRefData,\n (state) => state.ihHealthPrograms,\n);\n\nexport const selectIhPriorities = createSelector(\n selectRefData,\n (state) => state.ihPriorities,\n);\n\nexport const selectIhPrioritiesPrioterized = createSelector(selectIhPriorities, priotiries =>\n UtilsService.sortByFields(priotiries, codeName => {\n if (codeName.value) {\n return codeName.value;\n }\n if (codeName.code === 'HIGH') {\n return 3 as number;\n }\n if (codeName.code === 'MEDIUM') {\n return 2 as number;\n }\n if (codeName.code === 'LOW') {\n return 1 as number;\n }\n\n return 0 as number;\n }).reverse()\n);\n\n\nexport const selectReturnFileTypes = createSelector(\n selectRefData,\n (state) => state.returnFileTypes,\n);\n\nexport const selectImageFormatTypes = createSelector(\n selectRefData,\n (state) => state.imageFormatTypes,\n);\n","import { createAction, props } from '@ngrx/store';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\n\nexport const setUser = createAction(\n '[User] Set User',\n props<{ user: string }>()\n);\n\nexport const setUserSubstitutees = createAction(\n '[User] Set User Substitutees',\n props<{ substitutees: string[] }>()\n);\nexport const setUserTheme = createAction(\n '[User] Set User Theme',\n props<{ theme: string }>()\n);\nexport const setUserSettings = createAction(\n '[User] Set User Settings',\n props<{ settings: UserSettings }>()\n);\n\nexport const resetUser = createAction(\n '[User] Reset User',\n props<{ user: string }>()\n);\n","import { createReducer, on } from '@ngrx/store';\n\nimport { resetUser, setUser, setUserSettings, setUserSubstitutees, setUserTheme } from './user.actions';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\n\nexport const userFeatureKey = 'user';\n\nexport interface UserState {\n initialized: boolean;\n user: string;\n substitutees: string[];\n theme: string;\n settings: UserSettings;\n}\n\nexport const userInitialState: UserState = {\n initialized: false,\n user: null,\n substitutees: null,\n theme: null,\n settings: null,\n};\n\nexport const userReducer = createReducer(\n userInitialState,\n\n on(setUser, (state, {user}) => ({...state, initialized: true, user})),\n on(setUserSubstitutees, (state, {substitutees}) => ({...state, initialized: true, substitutees})),\n on(setUserTheme, (state, {theme}) => ({...state, theme })),\n on(setUserSettings, (state, {settings}) => ({...state, settings })),\n on(resetUser, state => ({...state, initialized: true, user: null, substitutees: null}))\n);\n","import {State} from '../index';\nimport {userFeatureKey, UserState} from './user.reducer';\nimport {createSelector} from '@ngrx/store';\n\nexport const selectUserState = (state: State): UserState => state[userFeatureKey];\n\nexport const selectUserSubstitutees = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.substitutees\n);\n\nexport const selectUserInitialized = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.initialized\n);\n\nexport const selectUserWithSubstitutees = createSelector(\n selectUserState,\n\n (userState: UserState) => [...(userState.user ? [userState.user] : []), ...(userState.substitutees || [])]\n);\n\nexport const selectUserTheme = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.theme\n);\nexport const selectUserSettings = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.settings\n);\n","export abstract class AbstractRoleProvider {\n public abstract getRoles(): Promise>;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { ActionsReasonService } from '../../services/actions-reason.service';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-request-action-reason',\n templateUrl: './request-action-reason.component.html',\n styleUrls: ['./request-action-reason.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequestActionReasonComponent implements OnInit {\n public action: string;\n public position: string;\n public form: FormGroup;\n public mainButtonTitle: string;\n public isRequired: boolean;\n public fileName: string;\n public isRedConfirmButton: boolean;\n\n private value = '';\n\n constructor(\n private actionsReasonService: ActionsReasonService,\n private cd: ChangeDetectorRef,\n private fb: FormBuilder,\n ) { }\n\n public ngOnInit(): void {\n this.action = this.actionsReasonService.getAction();\n this.position = this.actionsReasonService.getPosition();\n this.mainButtonTitle = this.actionsReasonService.getMainButtonTitle();\n this.isRequired = this.actionsReasonService.getIsRequired();\n\n this.form = this.fb.group({\n comment: [this.value]\n });\n\n if (this.isRequired) {\n this.form.get('comment').setValidators([Validators.required]);\n }\n }\n\n public onConfirm(): void {\n if (this.form.valid && this.form.controls && this.form.controls.comment) {\n this.actionsReasonService.confirmAction(this.form.controls.comment.value);\n } else {\n Object.keys(this.form.controls).forEach(key => {\n const control = this.form.get(key);\n if (control.pristine) {\n control.markAsTouched();\n control.updateValueAndValidity({ onlySelf: true, emitEvent: true });\n }\n });\n }\n\n this.cd.markForCheck();\n }\n\n public onCancel(): void {\n this.actionsReasonService.cancelAction();\n }\n\n public getErrorMessage(): string {\n if (this.form.invalid) {\n if (this.form.get('comment').hasError('required') || this.form.get('comment').hasError('notEmpty')) {\n return 'You must enter a value';\n }\n\n return 'Invalid value';\n } return null;\n }\n\n}\n","
\n
\n {{'module.requests.text.add-reason' | translate}}\n {{ ('common.button.' + action | translate) + (fileName ? ' ' + fileName : '') }}:\n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n\n","export const ARTWORK_STATUSES: {\n unreviewed: 'UNREVIEWED';\n approved: 'APPROVED';\n rejected: 'REJECTED';\n} = {\n unreviewed: 'UNREVIEWED',\n approved: 'APPROVED',\n rejected: 'REJECTED'\n};\n\nexport enum ARTWORK_SUMMARY_STATUSES {\n approved = 'APPROVED',\n rejected = 'REJECTED',\n inProgress = 'IN_PROGRESS',\n}\n","/* eslint-disable no-useless-escape */\nexport const MAX_ITEMS_PER_REQUEST = 999;\nexport const MAX_ITEMS_PER_IMAGE_REQUEST = 30;\nexport const NOTE_MAX_LENGTH = 10000;\nexport const QUANTITY_MAX_LENGTH = 10;\nexport const PKID_MAX_LENGTH = 4;\nexport const PRICE_PATTERN = /^(\\d+(?:[\\.]\\d{1,6})?)$/;\nexport const REQUEST_NAME_PATTERN = /[a-zA-Z0-9]*((-|,|.|:|\\s)*[a-zA-Z0-9])/;\nexport const INTEGER_PATTERN = /[0-9]*/;\nexport const INTEGER_PATTERN_EXCEPT_ZERO_VALUE = /^[1-9][0-9]*$/;\nexport const IMAGE_DENOM_PATTERN = /^[0-9 .,-]*$/;\nexport const MAX_PO_TOTAL = 999999999.9999; // <9>.<4>\nexport const MAX_PO_SUB_TOTAL = 9999999.99; // <7>.<2>\nexport const MAX_POP_PROD_COST_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_COST_TOTAL = 99999999.99; // <8>.<2>\nexport const MAX_REBILL_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_REBILL_TOTAL = 99999999.9999; // <8>.<4>\n\nexport const IH_MAX_PACKAGES = 99;\nexport const IH_MAX_COMPONENTS_PER_ITEM = 10;\nexport const IH_LABELS_QUANTITY_MULTIPLIER = 5000;\n\nexport const THIRD_MAX_RANGES_PER_ITEM = 99;\n\nexport interface PaymentType {\n code: string;\n name: string;\n}\n","export const POP_PRODUCTION_REQUEST = 'POP_PRODUCTION_REQUEST';\nexport const POP_DESIGN_REQUEST = 'POP_DESIGN_REQUEST';\nexport const CARD_DESIGN_REQUEST = 'CARD_DESIGN_REQUEST';\nexport const PRODUCTION_REQUEST = 'PRODUCTION_REQUEST';\nexport const FINANCIAL_SERVICES_REQUEST = 'FINANCIAL_SERVICES_REQUEST';\nexport const BIF_PRODUCTION_REQUEST = 'BIF_PRODUCTION_REQUEST';\nexport const PRODUCTION_REQUEST_3RD_PARTY = 'PRODUCTION_REQUEST_3RD_PARTY';\nexport const DIGITAL_ASSETS_REQUEST = 'DIGITAL_ASSETS_REQUEST';\nexport const IH_PRODUCTION_REQUEST = 'IH_PRODUCTION_REQUEST';\nexport const IMAGE_REQUEST = 'IMAGE_REQUEST';\n\nexport const SUPPORTED_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const DUPLICATE_SUPPORTED_REQUEST_TYPES = [\n PRODUCTION_REQUEST,\n BIF_PRODUCTION_REQUEST,\n IH_PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n POP_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n CARD_DESIGN_REQUEST,\n POP_DESIGN_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const CHANGE_OWNER_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport enum REQUEST_TYPE {\n CPR = 'PRODUCTION_REQUEST',\n CDR = 'CARD_DESIGN_REQUEST',\n PPR = 'POP_PRODUCTION_REQUEST',\n PDR = 'POP_DESIGN_REQUEST',\n FSR = 'FINANCIAL_SERVICES_REQUEST',\n BPR = 'BIF_PRODUCTION_REQUEST',\n TPPR = 'PRODUCTION_REQUEST_3RD_PARTY',\n DAR = 'DIGITAL_ASSETS_REQUEST',\n IPR = 'IH_PRODUCTION_REQUEST',\n IR = 'IMAGE_REQUEST',\n}\n\nexport const REQUEST_TYPES = [\n {\n label: '3rd Party Card Production Request',\n value: PRODUCTION_REQUEST_3RD_PARTY\n },\n {\n label: 'BIF Production Request',\n value: BIF_PRODUCTION_REQUEST\n },\n {\n label: 'Card Design Request',\n value: CARD_DESIGN_REQUEST\n },\n {\n label: 'Digital Assets Request',\n value: DIGITAL_ASSETS_REQUEST\n },\n {\n label: 'Financial Services Request',\n value: FINANCIAL_SERVICES_REQUEST\n },\n {\n label: 'IH Production Request',\n value: IH_PRODUCTION_REQUEST\n },\n {\n label: 'POP Design Request',\n value: POP_DESIGN_REQUEST\n },\n {\n label: 'POP Production Request',\n value: POP_PRODUCTION_REQUEST\n },\n {\n label: 'Production Request',\n value: PRODUCTION_REQUEST\n },\n {\n label: 'Image Request',\n value: IMAGE_REQUEST\n },\n];\n","import { Injectable } from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActionsReasonService {\n private currentAction = '';\n private currentPosition = '';\n private mainButtonTitle = 'confirm';\n private isRequired = false;\n\n private actionReason: Subject<{action: string; buttonClicked?: 'confirm' | 'cancel'; comment?: string}> =\n new Subject<{action: string; comment?: string}>();\n\n public setAction(action: string): void {\n this.currentAction = action;\n this.mainButtonTitle = '';\n }\n public setPosition(position: string): void {\n this.currentPosition = position;\n }\n public setMainButtonTitle(title: string): string {\n this.mainButtonTitle = title;\n return this.mainButtonTitle;\n }\n public setIsRequired(isRequired: boolean): void {\n this.isRequired = isRequired;\n }\n public getAction(): string {\n return this.currentAction;\n }\n public getPosition(): string {\n return this.currentPosition;\n }\n public getMainButtonTitle(): string {\n return this.mainButtonTitle ? this.mainButtonTitle : 'confirm';\n }\n public getIsRequired(): boolean {\n return this.isRequired;\n }\n\n public cancelAction(): void {\n this.actionReason.next({action: this.currentAction, buttonClicked: 'cancel'});\n this.setAction('');\n }\n\n public confirmAction(comment: string): void {\n this.actionReason.next({action: this.currentAction, buttonClicked: 'confirm', comment});\n this.setAction('');\n }\n\n public getReason(): Observable {\n return this.actionReason.asObservable();\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { UserModel } from 'src/app/shared/models/user.model';\n\nimport { API } from '../../shared/constants/api.constants';\nimport { ErrorHandlingHttpClient } from 'src/app/shared/services/error-handling-http-client.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssigneeService {\n constructor(private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n\n loadValues(values: string[]): Observable {\n let httpParams = new HttpParams();\n\n values.forEach(v => {\n httpParams = httpParams.append('usernames', v);\n });\n\n return this.errorHandlingHttpClient.get(`${API.searchUsersByUsernameFullMatch}`, {\n params: httpParams\n });\n }\n\n searchValues(query: string): Observable {\n const httpParams = (new HttpParams()).append(\n 'nameBeginning', query\n );\n\n return this.errorHandlingHttpClient.get(`${API.getUsers}`, {\n params: httpParams\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, of, throwError} from 'rxjs';\nimport {UploadLinkModel} from '../models/upload-link.model';\nimport {API} from '../../shared/constants/api.constants';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {FILE_SIZE_RESTRICTIONS} from '../../shared/models/upload-file-restrictions.model';\nimport {switchMap} from 'rxjs/operators';\nimport {HttpEvent, HttpEventType} from '@angular/common/http';\nimport {REQUEST_TYPE} from '../constants/request-types.constant';\nimport {CardDesignRequestItemModel} from '../models/card-design-request.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n pendingUploads: Array = [];\n\n constructor(private errorHandlingHttp: ErrorHandlingHttpClient) {\n }\n\n public requestAttachmentUploadLink(requestId: number | string, fileType: string, file: File): Observable {\n const sizeLimit = FILE_SIZE_RESTRICTIONS.GLOBAL;\n if (UtilsService.isFileFitsBySize(file.size, sizeLimit)) {\n return this.errorHandlingHttp.post(API.createAttachmentUploadLink(requestId, fileType), {fileName : file.name});\n }\n return throwError(new Error(\n `Unable to upload ${file.name} as it is larger than ${sizeLimit.sizeNumber} ${sizeLimit.sizeType}`\n ));\n\n }\n\n public overwriteFile(uploadUrl: string, file: File): Observable {\n return this.errorHandlingHttp.put(uploadUrl, file, {\n headers: {\n 'x-ms-blob-type': 'BlockBlob',\n 'x-ms-version': '2019-12-12',\n }\n });\n }\n\n public uploadFileWithProgress(uploadLink: UploadLinkModel, file: File): Observable {\n this.pendingUploads.push(uploadLink.uploadId);\n return this.errorHandlingHttp.put(uploadLink.uploadUrl, file, {\n headers: {\n 'x-ms-blob-type': 'BlockBlob',\n 'x-ms-client-request-id': uploadLink.uploadId,\n 'x-ms-version': '2019-12-12',\n },\n reportProgress: true,\n observe: 'events',\n }).pipe(switchMap(event => {\n const uploadIndex = this.pendingUploads.indexOf(uploadLink.uploadId);\n const uploadCanceled = uploadIndex === -1;\n if (event.type === HttpEventType.Response && !uploadCanceled) {\n this.pendingUploads.splice(uploadIndex, 1);\n return of(event);\n }\n if (uploadCanceled) {\n return throwError({\n error: 'Upload canceled!'\n });\n }\n return of(event);\n }));\n }\n\n public cancelUploads() {\n this.pendingUploads = [];\n }\n\n// Common Upload Artwork functionality\n public uploadArtworkForRequestItem(file: File,\n requestId: number | string,\n requestType: REQUEST_TYPE,\n attachmentFileType: string,\n requestItemId?: number): Observable> {\n let createUploadItemArtworkUrl: string;\n let shouldRequestHasFileTypeParameter: boolean;\n switch (requestType) {\n case REQUEST_TYPE.CPR: {\n createUploadItemArtworkUrl = API.createAttachment(requestId as string);\n shouldRequestHasFileTypeParameter = true;\n break;\n }\n case REQUEST_TYPE.TPPR: {\n createUploadItemArtworkUrl = API.createThirdPartyArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.PPR: {\n createUploadItemArtworkUrl = API.createPopProductionArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.FSR: {\n createUploadItemArtworkUrl = API.createFsrArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.BPR: {\n createUploadItemArtworkUrl = API.createBifArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.IPR: {\n createUploadItemArtworkUrl = API.createIHProductionArtwork(requestId as string);\n break;\n }\n }\n return this.uploadAndCreateAttachment(\n file, requestId, createUploadItemArtworkUrl, attachmentFileType, shouldRequestHasFileTypeParameter);\n }\n\n public uploadAndCreateAttachment(file: File,\n requestId: number | string,\n createAttachmentUrl: string,\n attachmentFileType: string,\n shouldRequestHasFileTypeParameter?: boolean) {\n return this.requestAttachmentUploadLink(requestId, attachmentFileType, file).pipe(\n switchMap(uploadLink => this.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createAttachmentRequest(\n createAttachmentUrl, uploadLink.uploadId, shouldRequestHasFileTypeParameter, attachmentFileType)\n : of(event))\n ))\n );\n }\n\n public createAttachmentRequest(\n createAttachmentUrl: string,\n uploadId: string,\n shouldRequestHasFileTypeParameter: boolean,\n fileType: string) {\n return this.errorHandlingHttp.post(createAttachmentUrl, null,\n {\n reportProgress: true,\n observe: 'events',\n params: shouldRequestHasFileTypeParameter ? {uploadId, fileType} : {uploadId},\n });\n }\n\n public deleteArtwork(requestId: string | number,\n requestItemId: string | number,\n attachmentId: string | number,\n requestType: REQUEST_TYPE): Observable {\n let apiUrl: string;\n switch (requestType) {\n case REQUEST_TYPE.CPR: {\n apiUrl = API.deleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.PPR: {\n apiUrl = API.ppDeleteArtwork(requestId, requestItemId, attachmentId);\n break;\n }\n case REQUEST_TYPE.TPPR: {\n apiUrl = API.thirdPartyDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.FSR: {\n apiUrl = API.fsrDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.BPR: {\n apiUrl = API.bifDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.IPR: {\n apiUrl = API.ihProductionDeleteArtwork(requestId, attachmentId);\n break;\n }\n }\n return this.errorHandlingHttp.delete(apiUrl);\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpEventType, HttpResponse} from '@angular/common/http';\nimport { Observable, of, ReplaySubject, Subject } from 'rxjs';\nimport {RequestModel} from '../models/request.model';\nimport {API} from '../../shared/constants/api.constants';\nimport {catchError, map, shareReplay, switchMap, tap} from 'rxjs/operators';\nimport {Warehouse} from '../models/warehouse.model';\nimport {ProductionPoModel} from '../models/production-po.model';\nimport {UserService} from '../../shared/services/user.service';\nimport {saveAs} from 'file-saver';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MilestoneItem, PrinterItemModel} from '../models/printer-item.model';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UserModel} from '../../shared/models/user.model';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {UserGroups} from '../../shared/constants/user-groups.enum';\nimport {FileUploadService} from './file-upload.service';\nimport {RequestTypeModel} from '../models/request-type.model';\nimport { MessageService } from '../../shared/services/message-service.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Events, EventService } from '../../shared/services/event-service.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RequestsService {\n constructor(\n private http: HttpClient,\n private errorHandlingHttp: ErrorHandlingHttpClient,\n private fileUploadService: FileUploadService,\n private userService: UserService,\n private messageService: MessageService,\n private translateService: TranslateService,\n private eventService: EventService\n ) {\n this.warehousesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.warehouses}`));\n this.companiesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.companies}`));\n this.lineOfBusinessObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.lineOfBusinessTypes}`));\n this.channelTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.chnTypes}`));\n this.inventoryTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.inventoryTypes}`));\n this.europeanCountriesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.europeCountries}`));\n this.printers = this.replayAndClone(this.errorHandlingHttp.get(`${API.printers}`));\n this.fileTypesWhiteList = this.replayAndClone(this.errorHandlingHttp.get(`${API.fileTypes}`));\n this.designerList = this.replayAndClone(\n this.errorHandlingHttp.get(`${API.getUsers}`, {params: {nameBeginning: '', groupKeys: UserGroups.Designer}})\n );\n }\n\n // tslint:disable-next-line:no-unused-variable\n private requestDetails: ReplaySubject = new ReplaySubject(1);\n private requestName: ReplaySubject = new ReplaySubject(1);\n private poDetails: ReplaySubject = new ReplaySubject(1);\n\n private warehousesObservable: Observable;\n private companiesObservable: Observable;\n private lineOfBusinessObservable: Observable;\n private channelTypesObservable: Observable;\n private inventoryTypesObservable: Observable;\n private europeanCountriesObservable: Observable;\n private printers: Observable;\n private fileTypesWhiteList: Observable;\n private designerList: Observable>;\n private wpnDetailsByWpnId = {};\n\n private requestTypes$ = this.errorHandlingHttp.get(`${API.requestTypes}`).pipe(\n shareReplay({\n bufferSize: 1,\n refCount: false,\n })\n );\n\n public createRequest(): Observable {\n return this.requestTypes$;\n }\n\n public updateRequestDetails(requestId: string | number, details: any, draft = false): Observable {\n return this.errorHandlingHttp.put(API.getRequestId(requestId, draft), details);\n }\n\n public postCreateNewRequest(requestName: string, requestType: string): Observable {\n const requestObj = {\n name: requestName,\n type: requestType,\n };\n this.resetRequestDetails();\n\n return this.errorHandlingHttp.post(`${API.createNewRequest}`, requestObj);\n }\n\n public downloadAttachment(requestId: string | number, attachmentId: string | number) {\n this.downloadFile(API.attachmentDownload(requestId, attachmentId));\n }\n\n public downloadPoPdf(requestId: string | number, poId: number, type: string): void {\n this.downloadFile(API.poPdfDownload(requestId, poId, type));\n }\n\n public downloadFile(url: string, fileName?: string): void {\n this.errorHandlingHttp.get>(url,\n {\n observe: 'response',\n responseType: 'blob' as 'json'\n })\n .subscribe(resp => {\n const name = this.getFileNameFromHeader(resp) || fileName || this.getFileNameFromUrl(url);\n saveAs(resp.body, name);\n });\n }\n\n private getFileNameFromHeader(resp: HttpResponse): string {\n if (resp.headers.has('file-name')) {\n return UtilsService.getFileNameFromHeaders(resp.headers);\n }\n return null;\n\n }\n\n private getFileNameFromUrl(url: string): string {\n url = decodeURIComponent(url);\n const base = url.split('?')[0];\n const components = base.split('/');\n // fileName\n return components[components.length - 1];\n }\n\n public downloadItemFile(item, requestId: number | string): void {\n this.downloadFile(this.getFileUrl(item, requestId));\n }\n\n public getFileUrl(item, requestId: number | string): string {\n let url: string;\n\n if (item.url) {\n return item.url;\n }\n\n switch (item.type) {\n case 'po':\n case 'sow':\n case 'printer':\n url = API.poPdfDownload(requestId, item.id, item.type);\n break;\n case 'file':\n url = API.getFile(item.id);\n break;\n default:\n url = API.attachmentDownload(requestId, item.attachmentId || item.id);\n }\n\n return url;\n }\n\n public getBlob(url: string): Observable {\n return this.errorHandlingHttp.get(url,\n {\n observe: 'response',\n responseType: 'blob' as 'json'\n });\n }\n\n public getFileTypes(): Observable {\n return this.fileTypesWhiteList;\n }\n\n public uploadProofOfPayments(requestId: string | number, file: File): Observable {\n return this.fileUploadService.requestAttachmentUploadLink(requestId, 'finance', file).pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createProofOfPayments(requestId, uploadLink.uploadId)\n : of(event))\n ))\n );\n }\n\n public createProofOfPayments(requestId: string | number, uploadId: string): Observable {\n return this.errorHandlingHttp.post(`${API.createProofOfPayment(requestId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId},\n });\n }\n\n public uploadExternalPin(requestId: string | number, file: File, reqItemId: string | number, reqType: string): Observable {\n return this.fileUploadService.requestAttachmentUploadLink(requestId, 'external-pin', file).pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createExternalPin(requestId, uploadLink.uploadId, reqItemId, reqType)\n : of(event))\n ))\n );\n }\n\n public createExternalPin(requestId: string | number, uploadId: string, reqItemId: string | number, reqType: string): Observable {\n return this.errorHandlingHttp.post(`${API.createExternalPin[reqType](requestId, reqItemId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId},\n });\n }\n\n public linkFileToReqItem(requestId: string | number, reqItemId: string | number, attachmentId: string | number): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n return this.http.post(`${API.linkAttachment(requestId, reqItemId)}`, [{attachmentId}],\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n });\n }\n\n public updateAttachmentStatus(requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n attachmentId: string | number,\n status: string, rejectionReason?: string, isPrinterProofs?: boolean): Observable {\n return this.errorHandlingHttp.put( `${API.updateAttachmentStatus[requestType](requestId, reqItemId, attachmentId, isPrinterProofs)}`,\n {attachmentId, status, rejectionReason},\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n });\n }\n\n public updateItemStatus(requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n status: string,\n rejectionReason?: string,\n isPrinterProofs?: boolean): Observable {\n return this.errorHandlingHttp.put(`${API.updateRequestItemStatus[requestType](requestId, reqItemId, isPrinterProofs)}`,\n {status, rejectionReason},\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n }\n );\n }\n\n public deleteProofOfPayment(requestId: string | number, attachmentId: string | number): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteProofOfPayment(requestId, attachmentId)}`);\n }\n\n public deleteExternalPin(\n requestId: string | number,\n attachmentId: string | number,\n itemId: string | number,\n reqType: string\n ): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteExternalPin[reqType](requestId, attachmentId, itemId)}`);\n }\n\n public uploadSOWFile(requestId: string | number, poId: string | number, file: File): Observable {\n return this.fileUploadService.requestAttachmentUploadLink(requestId, 'sow', file).pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createSowAttachment(requestId, poId, uploadLink.uploadId)\n : of(event))\n ))\n );\n }\n\n private createSowAttachment(requestId: string | number, poId: string | number, uploadId: string): Observable {\n return this.errorHandlingHttp.post(`${API.createSowAttachment(requestId, poId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId},\n });\n }\n\n public deleteSOWFile(requestId: string | number, poId: string | number, attachmentId: string | number): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteSOWFile(requestId, poId, attachmentId)}`);\n }\n\n public getUsers(nameBeginning: string, groupKeys?: string[]): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n const queryParams = {\n params: {\n nameBeginning,\n ...(groupKeys && {groupKeys})\n }\n };\n return this.http.get(`${API.getUsers}`, queryParams);\n }\n\n public getDesignerList(): Observable> {\n return this.designerList;\n }\n\n public getWPNdata(WPN: number): Observable {\n if (!this.wpnDetailsByWpnId[WPN]) {\n /**\n * Important to use http client in order to catch errors\n */\n this.wpnDetailsByWpnId[WPN] = this.replayAndClone(this.http.get(`${API.getWPNdetails(WPN)}`));\n }\n return this.wpnDetailsByWpnId[WPN];\n }\n\n public getEuropeCountriesList(): Observable {\n return this.europeanCountriesObservable;\n }\n\n public getMerchants(name: string, limit?: number): Observable {\n const queryParams = {\n params: {\n merchantName: name\n }\n };\n return this.errorHandlingHttp.get(`${API.getMerchants}`, queryParams);\n }\n\n public getMerchantInfo(id: number): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n return this.http.get(`${API.getMerchantInfo(id)}`);\n }\n\n public getContacts(nameBeginning: string): Observable {\n const queryParams = {\n params: {\n nameBeginning\n }\n };\n return this.errorHandlingHttp.get(`${API.getContacts}`, queryParams);\n }\n\n public getShipments(): Observable> {\n return this.warehousesObservable;\n }\n\n public deleteRequest(id: string): Observable {\n return this.errorHandlingHttp.delete(`${API.getRequestId(id)}`);\n }\n\n public updateRequest(id: string | number, request: any): Observable {\n return this.errorHandlingHttp.put(API.getRequestId(id), request);\n }\n\n public updateRequestName(id: string, name: string): Observable {\n const observable = new Subject();\n\n this.errorHandlingHttp.put(API.updateRequestName(id), {value: name})\n .subscribe((data: { value: string }) => {\n this.requestName.next(data.value);\n observable.next(data);\n }, err => observable.error(err)\n );\n\n return observable.asObservable();\n }\n\n public getRequestNameListener(): Observable {\n return this.requestName.asObservable();\n }\n\n public getPOListener(): Observable {\n return this.poDetails.asObservable();\n }\n\n public callPO(requestId: number | string): void {\n this.http.get(`${API.managePO(requestId)}`).subscribe((data: ProductionPoModel) => {\n this.poDetails.next(data);\n });\n this.eventService.emit({eventName: Events.UpdateActionHistory});\n }\n\n public performAction(requestId: string | number, actionType: string, stageCode: string, comment?: string): Observable> {\n return this.errorHandlingHttp.post(`${API.performAction(requestId)}`, {\n actionType, stageCode, comment\n }, {\n headers: {\n username: this.userService.getCurrentUserName()\n },\n observe: 'response'\n });\n }\n\n public createPO(requestId: number | string, data: any): Observable {\n const reqObj = Object.assign(data);\n return this.errorHandlingHttp.post(`${API.managePO(requestId)}`, reqObj);\n }\n\n public updatePO(requestId: number | string, poId: number, data: any): Observable {\n const observable = new Subject();\n\n const reqObj = Object.assign(data);\n this.errorHandlingHttp.put(`${API.updatePO(requestId, poId)}`, reqObj)\n .subscribe(response => {\n this.callPO(requestId);\n observable.next(response);\n }, error => observable.error(error));\n return observable.asObservable();\n }\n\n public deletePO(requestId: number | string, poId: number): Observable {\n const observable = new Subject();\n\n this.errorHandlingHttp.delete(`${API.updatePO(requestId, poId)}`)\n .subscribe(() => {\n this.callPO(requestId);\n observable.next();\n }, err => observable.error(err));\n\n return observable.asObservable();\n }\n\n public getPrinters(): Observable {\n return this.printers;\n }\n\n public getCompanies(): Observable {\n return this.companiesObservable;\n }\n\n public getChnTypes(): Observable {\n return this.channelTypesObservable;\n }\n\n public getInventoryTypes(): Observable {\n return this.inventoryTypesObservable;\n }\n\n public getLinesOfBusinessTypes(): Observable {\n return this.lineOfBusinessObservable;\n }\n\n private replayAndClone(objectObservable: Observable) {\n // cloning to avoid data corruption\n return objectObservable.pipe(shareReplay({\n refCount: false,\n bufferSize: 1\n }), map(data => cloneDeep(data)));\n }\n\n private resetRequestDetails(): void {\n this.requestDetails = new ReplaySubject(1);\n }\n\n public getAPIversion(): Observable {\n return this.getVersions(API.version);\n }\n\n public getUIversion(): Observable {\n return this.getVersions(API.uiVersion);\n }\n\n public getFnVersion(): Observable {\n return this.getVersions(API.fnVersion);\n }\n\n private getVersions(versionsUri: string): Observable {\n const httpOptions = {\n responseType: 'text' as 'json'\n };\n\n return this.http.get(versionsUri, httpOptions).pipe(\n catchError(() => of('')),\n );\n }\n\n public getRequestPrinterWorkItems(requestId: number | string): Observable {\n return this.http.get(`${API.getRequestPrinterWorkItems(requestId)}`);\n }\n\n /**\n * @todo move to AtPrinterService implementation\n */\n public uploadCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n file: File\n ): Observable {\n return this.fileUploadService.requestAttachmentUploadLink(requestId, 'asn', file).pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId, uploadLink.uploadId)\n : of(event))\n ))\n );\n }\n\n /**\n * @todo move to AtPrinterService implementation\n */\n private createCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n uploadId: string\n ): Observable {\n return this.http.post(\n `${API.createCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId)}`, null,\n {\n reportProgress: true,\n observe: 'events',\n params: {uploadId},\n }\n );\n }\n\n public deleteCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ): Observable {\n return this.errorHandlingHttp.delete(\n `${API.deleteCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId, attachmentId)}`\n );\n }\n\n public updateRequestStatus(requestId: number | string, status: string): any {\n const reqObj = {value: status};\n\n return this.errorHandlingHttp.put(`${API.updateRequestStatus(requestId)}`, reqObj);\n }\n\n public bulkUpdateCardProductionAtPrinter(requestId: string, printerId: number, itemId: number, data: any) {\n return this.errorHandlingHttp.put(`${API.doCardProductionBulkWorkItemMilestoneUpdate(requestId, printerId, itemId)}`, data);\n }\n\n public bulkUpdatePopProductionAtPrinter(requestId: string, printerId: number, itemId: number, data: any) {\n return this.errorHandlingHttp.put(`${API.doPopProdBulkWorkItemMilestoneUpdate(requestId, printerId, itemId)}`, data);\n }\n\n public updateMilestoneDetails(\n requestId: number | string,\n printerItem: PrinterItemModel,\n milestone: MilestoneItem,\n data: any): Observable {\n return this.errorHandlingHttp.put(\n API.updateMilestoneDetails(requestId, printerItem.printerDetails.id, printerItem.id, milestone.id),\n data,\n );\n }\n\n public uploadArtworkAttachment(requestId: number | string, file: File): Observable {\n return this.fileUploadService.requestAttachmentUploadLink(requestId, 'art', file).pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => event.type === HttpEventType.Response\n ? this.createArtworkAttachment(uploadLink.uploadId, requestId)\n : of(event))\n ))\n );\n }\n\n private createArtworkAttachment(uploadId: string, requestId: number | string): Observable {\n return this.errorHandlingHttp.post(API.createArtworkAttachment(requestId), null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId},\n });\n }\n\n public deleteArtworkAttachment(requestId: number | string, attachmentId: number): Observable {\n return this.errorHandlingHttp.delete(API.deleteArtworkAttachment(requestId, attachmentId));\n }\n\n public duplicateRequest(requestId: number | string): Observable {\n return this.errorHandlingHttp.post(API.duplicateRequest(requestId), {}).pipe(\n tap(() => {\n this.messageService.showSystemMessage(\n 'success',\n null,\n this.translateService.instant('common.message.request-successfully-created', {requestId})\n );\n })\n );\n }\n}\n","\n \n {{inputLabel}}\n *:\n \n \n \n \n \n\n \n\n \n \n {{inputHint}}\n \n\n \n \n {{warningMessage}}\n \n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Renderer2,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DatePickerHeaderComponent } from './date-picker-header/date-picker-header.component';\nimport { ViewChild } from '@angular/core';\nimport {MatDatepickerInput, MatDatepickerToggle} from '@angular/material/datepicker';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './app-date-picker.component.html',\n styleUrls: ['./app-date-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppDatePickerComponent implements OnInit, AfterViewInit, ControlValueAccessor, DoCheck {\n @Input() public filterDateFn?: (d: Date | null) => boolean;\n @Input() public inputLabel: string;\n @Input() public shouldShowLabel = true;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public testId?: string;\n @Input() public disabled?: boolean;\n @Input() public useRequiredProperty = true;\n\n /**\n * Html form validation flag\n */\n @Input() isRequired = true;\n\n @Output() public dateSelected: EventEmitter\n = new EventEmitter();\n\n /**\n * Restrict date selection that out of the project scope\n */\n @Input() public minDate = moment('1900-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss').toDate();\n @Input() public maxDate = moment('2199-12-31 23:59:59', 'YYYY-MM-DD HH:mm:ss').toDate();\n @ViewChild('datePickerToggle', {\n read: MatDatepickerToggle,\n static: false\n }) datePickerToggle: MatDatepickerToggle;\n @ViewChild(MatDatepickerInput, {\n read: MatDatepickerInput\n }) datePickerInput: MatDatepickerInput;\n\n private ngUnsubscribe = new Subject();\n public hasFocusInitial = false;\n private oldTouched = null;\n private oldValid = null;\n private oldDisabled = null;\n\n constructor(private element: ElementRef,\n private renderer: Renderer2,\n private cd: ChangeDetectorRef,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n this.hasFocusInitial = element.nativeElement.getAttribute('cdkFocusInitial') != null;\n renderer.removeAttribute(element.nativeElement, 'cdkFocusInitial');\n }\n\n public selectedDate: Date;\n datePickerHeaderHeader = DatePickerHeaderComponent;\n\n private toggleElement: HTMLElement;\n\n onChange: any = (value: string) => { };\n onTouched: any = () => {};\n\n ngDoCheck() {\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n if (this.ctrl.valid !== this.oldValid) {\n this.oldValid = this.ctrl.valid;\n this.cd.markForCheck();\n }\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n if (this.datePickerToggle) {\n this.datePickerToggle.disabled = this.ctrl.disabled;\n this.datePickerInput.setDisabledState(this.ctrl.disabled);\n (this.datePickerToggle as any)?._changeDetectorRef?.markForCheck();\n }\n this.cd.markForCheck();\n }\n }\n\n ngOnInit() {\n this.testId = this.testId || 'date-picker-toggle';\n\n if (this.ctrl.control) {\n this.ctrl.control.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((newDate: Date) => {\n this.dateSelected.emit(newDate);\n });\n this.ctrl.control.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => this.cd.markForCheck());\n }\n }\n\n ngAfterViewInit(): void {\n this.toggleElement = this.element.nativeElement.querySelector(`[data-test-id=${this.testId}]`);\n }\n\n public focusInput(): void {\n this.renderer.addClass(this.toggleElement, 'mat-datepicker-toggle-active');\n }\n\n public blurInput(): void {\n this.renderer.removeClass(this.toggleElement, 'mat-datepicker-toggle-active');\n }\n\n writeValue(value: any): void {\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState?(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public errorMatcher(): CustomFieldErrorMatcher {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {MatCalendar} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'app-date-picker-header',\n templateUrl: './date-picker-header.component.html',\n styleUrls: ['./date-picker-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerHeaderComponent implements OnDestroy {\n // tslint:disable-next-line:variable-name\n private _destroyed = new Subject();\n\n // tslint:disable-next-line:variable-name max-line-length\n constructor(private _calendar: MatCalendar, private _dateAdapter: DateAdapter, @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n cdr: ChangeDetectorRef) {\n _calendar.stateChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => cdr.markForCheck());\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n get periodLabel(): string {\n return this._dateAdapter\n .format(this._calendar.activeDate, this._dateFormats.display.monthYearA11yLabel);\n }\n\n previousClicked(mode: 'month' | 'year'): void {\n this._calendar.activeDate = mode === 'month' ?\n this._dateAdapter.addCalendarMonths(this._calendar.activeDate, -1) :\n this._dateAdapter.addCalendarYears(this._calendar.activeDate, -1);\n }\n\n nextClicked(mode: 'month' | 'year'): void {\n this._calendar.activeDate = mode === 'month' ?\n this._dateAdapter.addCalendarMonths(this._calendar.activeDate, 1) :\n this._dateAdapter.addCalendarYears(this._calendar.activeDate, 1);\n }\n}\n","
\n \n {{periodLabel}}\n \n
\n","\n \n {{inputLabel}}\n *:\n \n \n \n \n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n \n \n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\n/* eslint-disable no-underscore-dangle */\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatInput} from '@angular/material/input';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AutonumericDirective, AutonumericUpdateTriggerEventType} from '../../directives/autonumeric.directive';\nimport {MessageService} from '../../services/message-service.service';\nimport {WithControlCheck} from '../with-control-check/with-control-check.mixin';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) {}\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && this.customControl.invalid;\n }\n}\n\n// tslint:disable-next-line:no-conflicting-lifecycle\n@Component({\n selector: 'app-input-form',\n templateUrl: './app-input-form.component.html',\n styleUrls: ['./app-input-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AppInputFormComponent),\n multi: true\n }\n ]\n})\nexport class AppInputFormComponent\n extends WithControlCheck(function() {\n return this.control;\n })\n implements ControlValueAccessor, OnChanges, OnInit, AfterViewInit, DoCheck, OnDestroy\n{\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\n @ViewChild(MatInput) matInput: ElementRef;\n @Input() public placeholder: string;\n @Input() public inputType: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public showLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public inputHintClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public shouldShowErrorMessage = true;\n @Input() public numeric = false;\n @Input() public decimals = 0;\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public control: FormControl;\n @Input() public isTouched: boolean;\n @Input() public autoFocus?: boolean;\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = value;\n }\n\n @Input()\n get maxLength(): number {\n return this._maxLength || null;\n }\n set maxLength(value: number) {\n this._maxLength = value;\n }\n\n @Output() public blurChange = new EventEmitter();\n /**\n * By default we have based our autonumeric update tracking by it's raw value update event, which is not correct\n * for the case when we update autonumeric value from outside the component (by form.patchValue, ...)\n * In order to skip extra model update event please use 'change' that only covers the cases when update came from user input.\n */\n @Input() autonumericUpdateTriggerEventType: AutonumericUpdateTriggerEventType = 'raw';\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n private ngUnsubscribe = new Subject();\n\n public focused = false;\n\n public currencyControlOptions = {\n digitGroupSeparator: '',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n currencySymbol: '',\n currencySymbolPlacement: 's',\n roundingMethod: 'U',\n minimumValue: '0',\n maximumValue: undefined,\n decimalPlaces: 0,\n decimalPlacesShownOnBlur: 0,\n watchExternalChanges: true\n };\n private oldTouched = null;\n private oldValue = null;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n private messageService: MessageService,\n private cd: ChangeDetectorRef,\n private fm: FocusMonitor,\n private elRef: ElementRef\n ) {\n super();\n fm.monitor(elRef.nativeElement, true)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(origin => {\n this.focused = !!origin;\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.matInput, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }, 0);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.decimals) {\n this.currencyControlOptions.decimalPlaces = this.decimals;\n this.currencyControlOptions.decimalPlacesShownOnBlur = this.decimals;\n }\n\n if (this.numeric && this._maxLength) {\n this.currencyControlOptions.maximumValue = this.currencyControlOptions.decimalPlaces\n ? '9'.repeat(this._maxLength - this.currencyControlOptions.decimalPlaces - 1) +\n '.' +\n '9'.repeat(this.currencyControlOptions.decimalPlaces)\n : '9'.repeat(this._maxLength);\n } else {\n this.currencyControlOptions.maximumValue = undefined;\n }\n\n if (changes.control && this.input) {\n if (this.control && this.control.value) {\n this.input.instance.set(this.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n }\n\n ngOnInit() {\n this.control?.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck() {\n if (this.control.touched !== this.oldTouched) {\n this.oldTouched = this.control.touched;\n this.cd.markForCheck();\n }\n if (this.numeric && this.control.value !== this.oldValue) {\n if (!this.control.value) {\n this.input?.instance.clear();\n }\n this.oldValue = this.control.value;\n }\n const hasControlChange = this.checkControlChanges();\n if (hasControlChange) {\n this.cd.markForCheck();\n }\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.control);\n }\n\n public getErrorMessage(): string {\n if (this.control && this.control.errors) {\n return this.messageService.getControlErrorMessage(this.control.errors);\n }\n return null;\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import {FormControl} from '@angular/forms';\nimport {AbstractConstructor, Constructor} from '@angular/material/core/common-behaviors/constructor';\n\nexport interface HasWithControlCheck {\n checkControlChanges(): boolean;\n}\n\nexport type CanWithControlCheck = {\n get fieldControl(): FormControl;\n};\n\nexport type HasWithControlCheckCtor = Constructor & AbstractConstructor;\n\nexport function mixinHasControlCheck | AbstractConstructor>(\n base: T\n): HasWithControlCheckCtor & T {\n return class extends base {\n private oldTouched = null;\n private oldValue = null;\n private oldDisabled = null;\n private oldErrors = null;\n\n checkControlChanges(): boolean {\n const control = super.fieldControl;\n\n if (control?.touched !== this.oldTouched) {\n this.oldTouched = control.touched;\n return true;\n }\n if (control?.disabled !== this.oldDisabled) {\n this.oldDisabled = control?.disabled;\n return true;\n }\n if (control?.value && control.value !== this.oldValue) {\n this.oldValue = control.value;\n return true;\n }\n if (JSON.stringify(control?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = control.errors;\n return true;\n }\n return false;\n }\n };\n}\nconst defaultClass = class {};\nexport type FormControlAccessorFn = () => FormControl;\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithControlCheckFn = | AbstractConstructor = typeof defaultClass>(\n formControlAccessor: FormControlAccessorFn,\n base?: T\n) => HasWithControlCheckCtor & T;\n\nexport const WithControlCheck: WithControlCheckFn = (formControlAccessor: FormControlAccessorFn, base?) =>\n (base\n ? mixinHasControlCheck(\n class extends base {\n get fieldControl() {\n return formControlAccessor.bind(this)();\n }\n }\n )\n : mixinHasControlCheck(\n class {\n get fieldControl() {\n return formControlAccessor.bind(this)();\n }\n }\n )) as unknown as any;\n","\n \n {{inputLabel | titlecase}}\n *:\n \n \n\n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { MessageService } from '../../services/message-service.service';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n@Component({\n selector: 'app-textarea-form',\n templateUrl: './app-textarea-form.component.html',\n styleUrls: ['./app-textarea-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AppTextareaFormComponent implements ControlValueAccessor, AfterViewInit, DoCheck, OnDestroy {\n @ViewChild(MatInput) textarea: ElementRef;\n @Input() public placeholder: string;\n @Input() public showLabel?: boolean;\n @Input() public testId: string;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: string;\n @Input() public autoFocus?: boolean;\n\n @Input()\n get isRequired(): boolean { return this._required; }\n set isRequired(value: boolean) { this._required = value; }\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = value; }\n @Input()\n get maxLength(): number { return this._maxLength || null; }\n set maxLength(value: number) { this._maxLength = value; }\n\n // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean; private _maxLength: number;\n\n public focused = false;\n private oldDisabled = null;\n private oldTouched = null;\n private oldControl: FormControl = null;\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n constructor(private messageService: MessageService, private cd: ChangeDetectorRef,\n private fm: FocusMonitor, private elRef: ElementRef,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n\n fm.monitor(elRef.nativeElement, true).pipe(takeUntil(this.ngUnsubscribe)).subscribe(origin => {\n this.focused = !!origin;\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.textarea, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement); }, 0);\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n this.cd.markForCheck();\n }\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n if (this.ctrl.control !== this.oldControl) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n\n public getErrorMessage(): string {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n } return null;\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-back-link',\n templateUrl: './back-link.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BackLinkComponent {\n @Input() public page: string;\n @Input() public label: string;\n @Input() public testId: string;\n\n}\n","\n \n {{ label }}\n\n","
\n \n {{ label }}\n \n\n \n \n {{ inputHint }}\n \n\n \n \n {{ errorMessage }}\n \n
\n","import { Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\n\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() public isErrorExist: boolean;\n @Input() public errorMessage?: string;\n @Input() public isDisabled?: boolean;\n @Input() public isBoldLabel?: boolean;\n @Input() public label?: string;\n @Input() public testId?: string;\n @Input() public inputHint?: string;\n @Input() public hideHint = false;\n // tslint:disable-next-line:variable-name no-input-rename\n @Input('isChecked') _value = false;\n\n // tslint:disable-next-line:no-output-native\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() change = new EventEmitter();\n\n onChange: any = (event) => {\n this.change.emit(event);\n };\n onTouched: any = () => {};\n\n get isChecked() {\n return this._value;\n }\n\n set isChecked(val) {\n this._value = val;\n this.onChange(val);\n this.onTouched();\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n registerOnChange(fn): void {\n this.onChange = fn;\n }\n\n writeValue(value): void {\n this.isChecked = !!value;\n }\n\n registerOnTouched(fn): void {\n this.onTouched = fn;\n }\n}\n","\n \n {{inputLabel}}*:\n \n
\n \n
\n \n
\n \n close\n \n
\n \n \n \n \n \n \n
{{getOptionLabel(item)}}
\n
{{item[itemLabel]}}
\n
\n \n
\n
\n
\n \n
\n\n \n {{inputHint}}\n\n \n {{getErrorMessage()}}\n
\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {MatSelect} from '@angular/material/select';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {debounceTime, map, switchMapTo, takeUntil} from 'rxjs/operators';\nimport {MessageService} from '../../services/message-service.service';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport isEmpty from 'lodash/isEmpty';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '@angular/material/input';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) {}\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && this.customControl.invalid;\n }\n}\n\n// tslint:disable-next-line:no-conflicting-lifecycle\n@Component({\n selector: 'app-input-search-dropdown',\n templateUrl: './input-search-dropdown.component.html',\n styleUrls: ['./input-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputSearchDropdownComponent),\n multi: true\n },\n {provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: InputSearchDropdownComponent}\n ]\n})\nexport class InputSearchDropdownComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges, DoCheck {\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public inputLabel?: string;\n @Input() public inputClass?: string;\n @Input() inputType? = 'text';\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public resultControl: FormControl;\n @Input() public itemsList: any[];\n @Input() public itemLabel: string;\n @Input() public itemLabelFn?: (optionValue: any) => string;\n @Input() public itemFilterFn?: (optionValue: any) => any;\n @Input() public isLoading: Observable;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() highlights = false;\n\n @ViewChild('ItemsSelect', {static: true}) ItemsSelect: MatSelect;\n\n // tslint:disable-next-line:no-output-on-prefix\n @Output() private onSearch: EventEmitter = new EventEmitter();\n @Output() private onClear: EventEmitter = new EventEmitter();\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private isDisabled: boolean;\n\n public inputCtrl: FormControl = new FormControl();\n public ItemsFormCtrl: FormControl = new FormControl();\n public ItemsFormFilterCtrl: FormControl = new FormControl();\n public filteredItemsList: ReplaySubject = new ReplaySubject(1);\n public searching = false;\n\n /** Subject that emits when the component has been destroyed. */\n // tslint:disable-next-line:variable-name\n private _onDestroy = new Subject();\n private oldTouched = null;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private messageService: MessageService, private cd: ChangeDetectorRef) {}\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (isDisabled) {\n this.ItemsFormCtrl.disable();\n this.inputCtrl.disable();\n } else {\n this.ItemsFormCtrl.enable();\n this.inputCtrl.enable();\n }\n this.cd.markForCheck();\n }\n\n ngOnInit() {\n // set initial selection\n this.ItemsFormCtrl.setValue([]);\n\n // load the initial items list\n this.filteredItemsList.next(this.itemsList.slice());\n\n // listen for search field value changes\n this.ItemsFormFilterCtrl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .pipe(debounceTime(1000))\n .pipe(\n map(search => {\n if (search.length) {\n this.searching = true;\n this.onSearch.emit(search);\n }\n }),\n switchMapTo(this.isLoading)\n )\n .subscribe(loading => {\n // this.onSearch.emit(value)\n this.filteredItemsList.next(this.itemsList);\n if (!loading) {\n this.searching = false;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.resultControl?.currentValue?.value) {\n this.inputCtrl.setValue(this.getOptionLabel(this.resultControl.value));\n }\n\n if (changes.resultControl) {\n if (this.resultControl.disabled) {\n this.inputCtrl.disable();\n } else {\n this.inputCtrl.enable();\n }\n }\n }\n\n ngDoCheck(): void {\n if (this.resultControl.touched !== this.oldTouched) {\n this.oldTouched = this.resultControl.touched;\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n public openedChange(opened: boolean) {\n if (!opened && !isEmpty(this.ItemsFormCtrl.value)) {\n // Set value to parent control\n if (!isEmpty(this.ItemsFormCtrl.value)) {\n this.resultControl.setValue(this.ItemsFormCtrl.value);\n }\n // set value to inner input control\n if (this.resultControl.value) {\n this.inputCtrl.setValue(this.getOptionLabel(this.resultControl.value));\n } else {\n this.inputCtrl.setValue(this.resultControl.value);\n }\n\n // reset selected from dropdown value\n this.ItemsFormCtrl.reset();\n }\n\n if (!this.resultControl.touched) {\n this.resultControl.markAsTouched();\n }\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.resultControl);\n }\n\n public getErrorMessage(): string {\n if (this.resultControl && this.resultControl.errors) {\n return this.messageService.getControlErrorMessage(this.resultControl.errors);\n }\n return null;\n }\n\n public getOptionLabel(item): any {\n if (!this.itemLabelFn) {\n return item && item[this.itemLabel] ? item[this.itemLabel] : '';\n }\n return this.itemLabelFn(item);\n }\n\n public clearInputValue(): void {\n if (!this.isDisabled) {\n this.resultControl.reset();\n this.inputCtrl.reset();\n this.onClear.next();\n }\n }\n\n public togglePanel(event: Event): void {\n if ((event.target as HTMLSpanElement).dataset.testId === `clear_button_${this.testId}`) {\n this.clearInputValue();\n } else {\n this.ItemsSelect.toggle();\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n highlighted(content: string, search: string) {\n if(search.length > 0) {\n // eslint-disable-next-line no-useless-escape\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'gi');\n return '' + content.replace(regex, '$&');\n }\n return content;\n }\n\n withExtras(originalContent: string, item: {extras: string[]}, search) {\n const prefilteredExtras = (item.extras || []).filter(\n e =>\n e\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n );\n if (prefilteredExtras.length) {\n return `${originalContent} (${prefilteredExtras.join(', ')})`;\n }\n return originalContent;\n }\n}\n","import {Observable} from 'rxjs';\n\nexport interface MultiSelectSearchDropdownOption {\n label: string;\n value: string;\n}\n\nexport abstract class ItemListProvider {\n abstract loadValues(values: string[]): Observable;\n abstract searchValues(query: string): Observable;\n}\n","\n
\n \n 0\"\n (click)=\"removeAllSelectedItems($event)\"\n class=\"remove-selected-items\"\n data-test-id=\"remove-selected-items\"\n class=\"filtered row ai-center remove-all-button\"\n [attr.data-test-id]=\"[testId, 'remove_all_items'].join('_')\"\n >\n {{ value.length }}\n \n \n
\n\n \n {{ label }}\n *:\n \n\n \n \n close\n \n \n\n \n \n 0 && value.length === (selectionListCombined$ | async)?.length\"\n [toggleAllCheckboxTooltipMessage]=\"'common.label.select-all' | translate\"\n [toogleAllCheckboxTooltipPosition]=\"'above'\"\n (toggleAll)=\"toggleSelectAll($event)\"\n [placeholderLabel]=\"'common.label.search' | translate\"\n >\n \n\n \n \n
\n
\n\n
\n
\n \n {{ 'common.statuses.loading' | translate }}\n
\n
\n\n \n
Not found
\n
\n\n \n \n \n
\n \n
\n
\n \n \n \n \n {{inputHint\n }}\n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable no-useless-escape */\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, FormControl, NgControl} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, timer, merge} from 'rxjs';\nimport {debounce, filter, map, shareReplay, startWith, switchMap, takeUntil, tap, catchError, take} from 'rxjs/operators';\n\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from './item-list.provider';\nimport {MatSelect, MatSelectConfig, MAT_SELECT_CONFIG} from '@angular/material/select';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\n\nexport type SelectSearchDropdownOptionsInput = string | {label: string; value: string};\n\n@Component({\n selector: 'app-multiselect-search-dropdown',\n templateUrl: './multiselect-search-dropdown.component.html',\n styleUrls: ['./multiselect-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: {\n disableOptionCentering: true\n } as MatSelectConfig\n }\n ]\n})\nexport class MultiSelectSearchDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @Input() public set value(value: string[]) {\n this.control?.setValue(value || []);\n if (value.length === 0) {\n // tslint:disable-next-line: no-unused-expression\n this.matSelect && ((this.matSelect as unknown) as any)._propagateChanges();\n }\n this.cd.markForCheck();\n }\n public get value(): string[] {\n return this.control?.value;\n }\n\n @Output() public valueChange = new EventEmitter();\n\n public filterControl: FormControl = new FormControl('');\n\n public isOverlayOpened: boolean;\n\n @Input() itemListProvider: ItemListProvider;\n @Input() useCustomToggler = true;\n @Input() testId: string = null;\n @Input() label: string = null;\n @Input() isRequired = false;\n @Input() useSelectAll = false;\n @Input() disableOptionCentering = null;\n @Input() inputHint: string = null;\n @Input() inputHintIcon: string = null;\n\n @ViewChild('matSelect', {read: MatSelect}) matSelect: MatSelect;\n\n private cachedValues = new Map();\n private ngUnsubscribe = new Subject();\n\n private localControl: AbstractControl = new FormControl([]);\n public get control() {\n if (this.ngControl) {\n return this.ngControl.control;\n }\n return this.localControl;\n }\n\n constructor(@Self() @Optional() private ngControl: NgControl, private cd: ChangeDetectorRef, private messageService: MessageService) {\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n selectedItemList$: Observable;\n private loadingSubject = new BehaviorSubject(false);\n selectedItemListLoading$ = this.loadingSubject.asObservable();\n selectionListCombined$: Observable;\n\n searchedItemList$: Observable;\n\n writeValue(obj: any): void {}\n registerOnChange(fn: any): void {}\n registerOnTouched(fn: any): void {}\n\n ngOnInit() {\n /**\n * Control input value changes\n */\n this.selectedItemList$ = combineLatest([\n // tslint:disable-next-line:deprecation\n merge(of(this.filterControl.value), this.filterControl.valueChanges),\n this.control.valueChanges.pipe(\n startWith(this.control.value || []),\n switchMap((value: string[]) => {\n const usernamesToLoad = value.filter(v => !this.cachedValues.has(v));\n if (usernamesToLoad.length) {\n this.loadingSubject.next(true);\n return this.itemListProvider.loadValues(value).pipe(\n tap(() => this.loadingSubject.next(false)),\n tap(fetched => {\n this.addToCached(fetched);\n }),\n map(() => this.assignLabels(value)),\n catchError(() => of([] as MultiSelectSearchDropdownOption[]))\n );\n }\n return of(this.assignLabels(value));\n\n }),\n tap(() => {\n this.loadingSubject.next(false);\n })\n )\n ]).pipe(\n map(([search, options]) => options.map(v => {\n if (!search) {\n return v;\n }\n\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'i');\n return {...v, label: v.label.replace(regex, '$&')};\n })),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n /**\n * Search item list\n */\n this.searchedItemList$ = combineLatest([\n this.filterControl.valueChanges.pipe(\n filter(v => typeof v === 'string'),\n debounce(v => (v.length ? timer(300) : timer(0))),\n switchMap((value: string) => {\n if (value.length === 0) {\n return of([]);\n }\n\n this.loadingSubject.next(true);\n return this.itemListProvider.searchValues(value).pipe(\n tap(() => this.loadingSubject.next(false)),\n tap(fetched => {\n this.addToCached(fetched);\n }),\n catchError(() => of([]))\n );\n }),\n tap(() => {\n this.loadingSubject.next(false);\n })\n ),\n this.control.valueChanges.pipe(startWith(this.control.value || []))\n ]).pipe(\n map(([list, value]) => {\n const visibleList = list\n .filter(v => value.indexOf(v.value) === -1)\n .map(v => {\n const search: string = this.filterControl.value;\n if (!search) {\n return v;\n }\n\n const regex = new RegExp(search, 'i');\n return {...v, label: v.label.replace(regex, '$&')};\n });\n\n return Object.assign(visibleList, {\n showNotFound: list.length === 0 && this.filterControl.value?.length > 0\n });\n }),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n this.selectionListCombined$ = combineLatest([this.selectedItemList$, merge(of([]), this.searchedItemList$)]).pipe(\n map(([a, b]) => [...a, ...b]),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n }\n\n private addToCached(fetched: Array) {\n fetched.forEach(v => {\n this.cachedValues.set(v.value, v.label);\n });\n }\n\n private assignLabels(value: string[]): MultiSelectSearchDropdownOption[] {\n return value.map(v => ({\n value: v,\n label: this.cachedValues.get(v)\n }));\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public openedChange(opened: boolean) {\n this.isOverlayOpened = opened;\n\n if (!opened) {\n this.valueChange.emit(this.control.value);\n }\n }\n\n public removeAllSelectedItems(event: Event): void {\n event.stopPropagation();\n\n this.control.setValue([]);\n this.filterControl.setValue('');\n this.valueChange.emit(this.control.value);\n ((this.matSelect as unknown) as any)._propagateChanges(); // refreshed the MatOption state\n }\n\n public trackByItem(index: number, element: MultiSelectSearchDropdownOption) {\n return element.value;\n }\n\n public toggleSelectAll($event: boolean) {\n if (!$event) {\n this.control.setValue([]);\n this.valueChange.emit(this.control.value);\n ((this.matSelect as unknown) as any)._propagateChanges(); // refreshed the MatOption state\n } else {\n this.selectionListCombined$.pipe(take(1)).subscribe(fil => {\n this.control.setValue(fil.map(i => i.value));\n this.valueChange.emit(this.control.value);\n fil.forEach(i => {\n ((this.matSelect as unknown) as any)._propagateChanges(i);\n });\n });\n }\n }\n\n reset(): void {\n this.control.setValue([]);\n this.valueChange.emit(this.control.value);\n }\n\n\n public getErrorMessage(): string {\n if (this.control && this.control.errors) {\n return this.messageService.getControlErrorMessage(this.control.errors);\n } return null;\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Inject,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n Renderer2,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm, Validator } from '@angular/forms';\nimport { CanDisable, CanUpdateErrorState, ErrorStateMatcher, mixinDisabled, mixinErrorState } from '@angular/material/core';\nimport { HasErrorState } from '@angular/material/core/common-behaviors/error-state';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { QuillEditorBase, QuillService } from 'ngx-quill';\nimport Quill from 'quill';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nconst Link = Quill.import('formats/link');\n// Override the existing property on the Quill global object and add custom protocols\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel', 'sms'];\n\nclass CustomLinkSanitizer extends Link {\n static sanitize(url) {\n // Run default sanitize method from Quill\n const sanitizedUrl = super.sanitize(url);\n\n // Not whitelisted URL based on protocol so, let's return `blank`\n if (!sanitizedUrl || sanitizedUrl === 'about:blank') {return sanitizedUrl;}\n\n // Verify if the URL already have a whitelisted protocol\n const hasWhitelistedProtocol = (this as any).PROTOCOL_WHITELIST.some(function(protocol) {\n return sanitizedUrl.startsWith(protocol);\n });\n\n if (hasWhitelistedProtocol) {return sanitizedUrl;}\n\n // if not, then append only 'http' to not to be a relative URL\n return `http://${sanitizedUrl}`;\n }\n}\n\nQuill.register(CustomLinkSanitizer, true);\nclass MatQuillBase extends QuillEditorBase\n{\n stateChanges = new Subject();\n bounds ='self';\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n injector: Injector,\n cdr: ChangeDetectorRef,\n elementRef: ElementRef,\n domSanitizer: DomSanitizer,\n platformId: any,\n renderer: Renderer2,\n zone: NgZone,\n service: QuillService\n ) {\n super(\n injector, elementRef, cdr, domSanitizer, platformId,\n renderer, zone, service\n );\n }\n}\n\nconst _MatQuillMixinBase =\n mixinErrorState(mixinDisabled(MatQuillBase));\n\n@Directive()\nexport abstract class _MatQuillBase\n extends _MatQuillMixinBase\n implements AfterViewInit, CanDisable, CanUpdateErrorState,\n ControlValueAccessor, HasErrorState,\n MatFormFieldControl, OnChanges,\n OnDestroy, Validator\n{\n abstract controlType: string;\n focused = false;\n abstract id: string;\n private contentChangedSubscription: Subscription;\n private blurSubscription: Subscription;\n private focusSubscription: Subscription;\n\n constructor(\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() @Self() public ngControl: NgControl,\n cdr: ChangeDetectorRef,\n elementRef: ElementRef,\n domSanitizer: DomSanitizer,\n @Inject(PLATFORM_ID) platformId: any,\n renderer: Renderer2,\n zone: NgZone,\n injector: Injector,\n service: QuillService,\n @Inject(DOCUMENT) doc: any,\n ) {\n super(\n defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl,\n injector, cdr, elementRef, domSanitizer, platformId, renderer, zone, service\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.contentChangedSubscription = this.onContentChanged.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {\n this.updateErrorState();\n this.stateChanges.next();\n });\n\n this.blurSubscription = this.onBlur.subscribe(() => {\n this.focused = false;\n if (!!this.ngControl && !this.ngControl.control.touched) {\n this.ngControl.control.markAsTouched();\n this.updateErrorState();\n }\n this.stateChanges.next();\n });\n\n this.focusSubscription = this.onFocus.subscribe(() => {\n this.focused = true;\n this.stateChanges.next();\n });\n }\n\n ngOnDestroy() {\n this.contentChangedSubscription.unsubscribe();\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n /*\n * GETTERS & SETTERS\n */\n\n @Input()\n disabled = false;\n\n get empty() {\n return !coerceBooleanProperty(this.value);\n }\n\n @Input()\n placeholder = '';\n\n @Input()\n required = false;\n\n @HostBinding('class.floating')\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n get value(): any {\n try {\n return this.valueGetter(this.quillEditor, this.editorElem!);\n } catch (e) {\n return;\n }\n }\n set value(value: any) {\n this.writeValue(value);\n this.stateChanges.next();\n }\n\n /*\n * METHODS\n */\n\n blur(): void {\n (this.editorElem.childNodes as NodeListOf)[0].blur();\n }\n\n focus(): void {\n this.quillEditor.focus();\n }\n\n @HostBinding('attr.aria-describedby') _describedBy = '';\n setDescribedByIds(ids: string[]): void {\n this._describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent): void {\n if((event.target as HTMLElement)?.closest('.ql-tooltip')) {\n return;\n }\n if (!this.focused) {\n this.quillEditor.focus();\n }\n }\n\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\n static ngAcceptInputType_required: boolean | string | null | undefined;\n}\n// Increasing integer for generating unique ids for mat-quill components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'app-quill',\n exportAs: 'appQuill',\n template: `\n \n
\n
\n    
\n \n \n
\n
\n    
\n \n `,\n styleUrls: ['./quill.component.scss'],\n providers: [{provide: MatFormFieldControl, useExisting: QuillInputComponent}],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QuillInputComponent extends _MatQuillBase implements AfterViewInit {\n private _testId: string;\n @Input() set testId(testId: string) {\n if (this.elementRef) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'data-test-id', testId);\n }\n this._testId = testId;\n }\n get testId(): string {\n return this._testId;\n }\n @Input() disabled;\n controlType = 'app-quill';\n @HostBinding() id = `${'app-quill'}-${nextUniqueId++}`;\n @Input() errorStateMatcher: ErrorStateMatcher;\n @Input() styles: any;\n\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\n static ngAcceptInputType_required: boolean | string | null | undefined;\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.renderer.setAttribute(\n this.elementRef.nativeElement.querySelector('[quill-editor-element]'),\n 'data-test-id',\n [this.testId, 'input'].join('_')\n );\n }\n}\n","\n \n {{ inputLabel | titlecase }}\n *:\n \n\n \n
\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n \n \n \n
\n \n\n \n \n \n \n\n \n \n \n \n\n \n \n {{ warningMessage }}\n \n\n \n \n {{ getErrorMessage() }}\n \n\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\n\nimport { CustomHintDirective } from '../../directives/custom-hint.directive';\nimport { QuillInputComponent } from '../quill/quill.component';\nimport { RichTextExtra } from './rich-text.model';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl): boolean {\n return control && control.touched && control.invalid;\n }\n}\n\n@Component({\n selector: 'app-rich-text',\n templateUrl: './rich-text.component.html',\n styleUrls: ['./rich-text.component.scss'],\n encapsulation: ViewEncapsulation.Emulated\n})\nexport class RichTextComponent implements OnDestroy, DoCheck, ControlValueAccessor {\n @ViewChild(MatInput) textarea: ElementRef;\n @Input() public placeholder: string;\n @Input() public showLabel?: boolean;\n @Input() public testId = 'rich_text';\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: string;\n @Input() public autoFocus?: boolean;\n @ViewChild('matEditor', {\n static: true\n }) matEditor: QuillInputComponent;\n @ContentChild(CustomHintDirective, {\n static: false,\n }) customHint: CustomHintDirective;\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = value;\n }\n get maxLength(): number {\n return this._maxLength || null;\n }\n @Input()\n set maxLength(value: number) {\n this._maxLength = value;\n }\n private _extras: Array = [];\n get extras(): Array {\n return this._extras;\n }\n @Input()\n set extras(extras: Array) {\n this._extras = extras;\n }\n\n @Input() minHeight = 150;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n public focused = false;\n private oldDisabled = null;\n private oldTouched = null;\n private oldValid = null;\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n constructor(\n private messageService: MessageService,\n private cd: ChangeDetectorRef,\n private fm: FocusMonitor,\n private elRef: ElementRef,\n @Self() @Optional() public ctrl: NgControl\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n if (this.ctrl.valid !== this.oldValid) {\n this.oldValid = this.ctrl.valid;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n writeValue(value: any): void { }\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n errorMatcher() {\n return new CustomFieldErrorMatcher();\n }\n\n public getErrorMessage(): string {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n }\n return null;\n }\n}\n","import { REQUEST_TYPE } from '../../requests/constants/request-types.constant';\nexport class API {\n public static version = '/api/versions';\n public static fnVersion = '/api/fn/versions';\n public static uiVersion = '/assets/versions.txt';\n\n public static requestTypes = '/api/requests/types';\n public static paymentTypes = '/api/reference/request/card-production/payment-types';\n public static requestItemsTypes = '/api/reference/request/card-production/request-item-types';\n public static createNewRequest = '/api/requests';\n public static searchRequests = '/api/public/requests';\n\n public static searchUsersByUsernameFullMatch = '/api/public/users/search/usernames';\n public static getUsers = '/api/public/users/search';\n\n public static dataPINfileTypes = '/api/reference/request/card-production/data-pin-file-types';\n public static europeCountries = '/api/reference/request/countries/europe';\n public static getMerchants = '/api/reference/request/merchants';\n public static getContacts = '/api/public/contacts';\n public static redemptionTypes = '/api/reference/request/card-production/redemption-types';\n public static dielines = '/api/reference/request/card-production/dielines';\n public static substrates = '/api/reference/request/card-production/substrates';\n public static warehouses = '/api/reference/request/card-production/warehouses';\n\n public static logout = '/api/logout';\n public static authorities = '/api/authorization/user/authorities';\n public static userDetails = '/api/authorization/user/details';\n public static darkModeChange = '/api/users/profiles/settings/display-mode';\n\n public static printers = '/api/reference/request/card-production/printers';\n public static companies = '/api/reference/request/card-production/companies';\n public static chnTypes = '/api/reference/request/card-production/chn-types';\n public static popChannelTypes = '/api/reference/request/pop/channel-types';\n public static inventoryTypes = '/api/reference/request/card-production/inventory-types';\n public static lineOfBusinessTypes = '/api/reference/request/card-production/line-of-business-types';\n public static designLineOfBusinessTypes = '/api/reference/request/design-line-of-business-types';\n public static regions = '/api/reference/request/card-design/regions';\n public static artLocationTypes = '/api/reference/request/card-design/art-location-types';\n public static designSourceTypes = '/api/reference/request/card-design/design-source-types';\n public static popItemTypes = '/api/reference/request/pop/item-types';\n public static colorTypes = '/api/reference/request/colors';\n public static dimensionTypes = '/api/reference/request/dimensions';\n public static financialTypes = '/api/reference/request/pop/financial-types';\n public static ppEventTypes = '/api/reference/request/pop-production/event-types';\n public static ppFundingTypes = '/api/reference/request/pop-production/funding-types';\n public static ppCuttingTypes = '/api/reference/request/pop-production/items/cutting-types';\n public static ppMaterialTypes = '/api/reference/request/pop-production/items/material-types';\n public static ppTapeTypes = '/api/reference/request/pop-production/items/tape-types';\n public static ppUsageDurationTypes = '/api/reference/request/pop-production/items/usage-duration-types';\n public static ppInventoryTypes = '/api/reference/request/pop-production/inventory-types';\n\n public static fsPaymentTypes = '/api/reference/request/financial-services/payment-types';\n public static fsComponentTypes = '/api/reference/request/financial-services/po/component-types';\n\n public static bifComponentTypes = '/api/reference/request/bif-production/component-types';\n public static bifFulfillmentTypes = '/api/reference/request/bif-production/fulfillment-types';\n\n public static thirdPartyOrderTypes = '/api/reference/request/third-party-production/items/order-types';\n public static thirdPartyDataPinFileTypes = '/api/reference/request/third-party-production/items/data-pin-file-types';\n public static thirdPartyPrintOwnerTypes = '/api/reference/request/third-party-production/print-owner-types';\n public static thirdPartyIssuer = '/api/reference/request/third-party-production/issuers/search';\n public static thirdPartyReturnFileTypes = '/api/reference/request/third-party-production/items/return-file-types';\n\n public static ihComponents = '/api/reference/request/ih-production/components';\n public static ihHealthPlans = '/api/reference/request/ih-production/health-plans';\n public static ihHealthPrograms = '/api/reference/request/ih-production/health-programs';\n public static ihPriorities = '/api/reference/request/ih-production/priorities';\n\n public static imageBrand = '/api/reference/request/image/brand/search';\n public static imageFormatTypes = '/api/reference/request/image/image-format-types';\n\n public static fileTypes = '/api/requests/attachments/types';\n\n // Reports\n public static reportsPopProduction = '/api/fn/reports/preview/pop-production-report';\n public static reportsPopProductionDownload = '/api/fn/reports/download/pop-production-report';\n public static reportsCreativeServices = '/api/fn/reports/preview/creative-services-report';\n public static reportsCreativeServicesDownload = '/api/fn/reports/download/creative-services-report/';\n public static reportsCreativeServicesFilters = '/api/fn/reports/aggregate-filters/creative-services-report';\n\n public static reportsShipping = '/api/fn/reports/preview/shipping-report';\n public static reportsShippingDownload = '/api/fn/reports/download/shipping-report/';\n public static reportsShippingFilters = '/api/fn/reports/aggregate-filters/shipping-report';\n\n public static reportsPO = '/api/fn/reports/preview/po-report';\n public static reportsPODownload = '/api/fn/reports/download/po-report';\n public static reportsPOFilters = '/api/fn/reports/aggregate-filters/po-report';\n public static thirdParty = '/api/fn/reports/preview/third-party-report';\n public static thirdPartyDownload = '/api/fn/reports/download/third-party-report';\n public static thirdPartyFilters = '/api/fn/reports/aggregate-filters/third-party-report';\n public static production = '/api/fn/reports/preview/production-report';\n public static productionDownload = '/api/fn/reports/download/production-report';\n public static productionFilters = '/api/fn/reports/aggregate-filters/production-report';\n public static reportsIh = '/api/fn/reports/preview/ih-report';\n public static reportsIhDownload = '/api/fn/reports/download/ih-report';\n public static cardRanges = '/api/fn/reports/preview/card-ranges-report';\n public static cardRangesDownload = '/api/fn/reports/download/card-ranges-report';\n public static cardRangesFilters = '/api/fn/reports/aggregate-filters/card-ranges-report';\n // Reports End\n\n public static updateAttachmentStatus = {\n PRODUCTION_REQUEST: (requestId, requestItemId, attachmentId) => `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks/${attachmentId}`,\n POP_PRODUCTION_REQUEST: (requestId, requestItemId, attachmentId) => `/api/requests/pop-production/${requestId}/items/${requestItemId}/printer-proofs/${attachmentId}/review`,\n };\n\n public static updateRequestItemStatus = {\n PRODUCTION_REQUEST: (requestId, requestItemId) => `/api/requests/card-production/${requestId}/artworks/items/${requestItemId}/review`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, requestItemId) => `api/requests/third-party-production/${requestId}/items/${requestItemId}/artworks/review`,\n FINANCIAL_SERVICES_REQUEST: (requestId, requestItemId) => `/api/requests/financial-services/${requestId}/items/${requestItemId}/artworks/review`,\n BIF_PRODUCTION_REQUEST: (requestId, requestItemId) => `/api/requests/bif-production/${requestId}/items/${requestItemId}/printer-proofs/review`,\n [REQUEST_TYPE.IPR]: (requestId, requestItemId, isPrinterProofs = false) =>\n `/api/requests/ih-production/${requestId}/items/${requestItemId}/${isPrinterProofs ? 'printer-proofs' : 'artworks'}/review`,\n [REQUEST_TYPE.PPR]: (requestId, requestItemId, isPrinterProofs = false) =>\n `/api/requests/pop-production/${requestId}/items/${requestItemId}/${isPrinterProofs ? 'printer-proofs' : 'artworks'}/review`,\n };\n\n public static createExternalPin = {\n PRODUCTION_REQUEST: (requestId, itemId) => `/api/requests/card-production/${requestId}/items/${itemId}/external-pin-files/`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, itemId) => `/api/requests/third-party-production/${requestId}/items/${itemId}/external-pin-files/`,\n };\n\n public static deleteExternalPin = {\n PRODUCTION_REQUEST: (requestId, attachmentId, itemId) => `/api/requests/card-production/${requestId}/items/${itemId}/external-pin-files/${attachmentId}`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, attachmentId, itemId) => `/api/requests/third-party-production/${requestId}/items/${itemId}/external-pin-files/${attachmentId}`\n };\n\n public static IH_PRODUCTION_PRINTER = {\n getPrinterWorkItems: (requestId) => `/api/requests/ih-production/${requestId}/printers/work-items`,\n updateMilestoneDetails: (requestId, printerId, itemId, milestoneId) => `/api/requests/ih-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`,\n doBulkWorkItemMilestoneUpdate: (requestId, printerId, itemId) => `/api/requests/ih-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`,\n };\n public static duplicateRequest(requestId: string | number) {\n return `/api/requests/${requestId}`;\n }\n\n public static createProofOfPayment(requestId) { return `/api/requests/card-production/${requestId}/finance/attachments/`; }\n public static deleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/finance/attachments/${attachmentId}`; }\n public static fsCreateProofOfPayment(requestId) {return `api/requests/financial-services/${requestId}/details/proofs-of-payment`; }\n public static fsDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/financial-services/${requestId}/details/proofs-of-payment/${attachmentId}`; }\n public static bifCreateProofOfPayment(requestId) {return `api/requests/bif-production/${requestId}/details/proofs-of-payment`; }\n public static bifDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/bif-production/${requestId}/details/proofs-of-payment/${attachmentId}`; }\n public static thirdPartyCreateProofOfPayment(requestId) {return `api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment`; }\n public static thirdPartyCreateOperationsAttachment(requestId) { return `api/requests/third-party-production/${requestId}/details/operations-attachments`; }\n public static thirdPartyDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment/${attachmentId}`; }\n public static thirdPartyDeleteOperationsAttachment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/operations-attachments/${attachmentId}`; }\n public static thirdPartyUpdateOperationsNotes(requestId) { return `api/requests/third-party-production/${requestId}/details/operations-notes`; }\n public static thirdPartyUpdateItemOperationsDetails(requestId, itemId) {\n return `api/requests/third-party-production/${requestId}/items/${itemId}/operations-details`; }\n public static thirdPartyUpdateCardCollateralDetails(requestId, itemId) {\n return `/api/requests/third-party-production/${requestId}/items/${itemId}/card-collateral-confirmation-details`; }\n public static thirdPartyUpdateConfirmedPrinters(requestId) {\n return `/api/requests/third-party-production/${requestId}/items/confirmed-printers`; }\n public static bifUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/items/${itemId}/printer-proofs/${attachmentId}/review`;\n }\n public static imageCreateArtFile(requestId) {return `api/requests/image/${requestId}/art-file/attachments`; }\n public static imageDeleteArtFile(requestId, attachmentId) {\n return `/api/requests/image/${requestId}/art-file/attachments/${attachmentId}`; }\n public static imageUpdateDesigner = (requestId) => `/api/requests/image/${requestId}/designer/`;\n public static imageUpdateArtFilePath = (requestId) => `/api/requests/image/${requestId}/final-art-file-path/`;\n public static imageUpdateRequestItemsCompleted(requestId) {return `api/requests/image/${requestId}/request-items/completed`; }\n public static bifPoPdfDownload(requestId, poId, type) {\n return `/api/requests/bif-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static bifPO(requestId) {\n return `/api/requests/bif-production/${requestId}/purchase-orders`;\n }\n public static bifUpdatePO(requestId, poId) {\n return `/api/requests/bif-production/${requestId}/purchase-orders/${poId}`;\n }\n public static createAttachment(requestId) { return `/api/requests/card-production/${requestId}/artworks`; }\n public static attachmentDownload(requestId, attachmentId) { return `/api/requests/${requestId}/attachments/${attachmentId}`; }\n public static poPdfDownload(requestId, poId, type) {\n return `/api/requests/card-production/${requestId}/purchase-orders/${poId}/documents/${type}`; }\n public static linkAttachment(requestId, requestItemId) {\n return `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks`; }\n public static deleteArtwork(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/artworks/${attachmentId}`; }\n public static getRequestId(id, draft = false) { return `/api/requests/${id}${draft ? '?draft' : ''}`; }\n public static updateRequestName(id) { return `/api/requests/${id}/name`; }\n public static updateRequestStatus(id) { return `/api/requests/${id}/status`; }\n public static updatePpm(requestId) { return `/api/requests/${requestId}/print-production-manager`; }\n public static changeRequestOwner(requestId) { return `/api/requests/${requestId}/request-owner`; }\n public static changeRequestTrafficManager(requestId) { return `/api/requests/${requestId}/traffic-manager`; }\n public static refreshProductOwner(requestId: number | string): string {\n return `/api/requests/${requestId}/events/product-owner-refresh`;\n }\n public static getWPNdetails(partNumber) {return `/api/reference/request/wpn/${partNumber}`; }\n public static getMerchantInfo(merchantId) {return `/api/reference/request/merchants/${merchantId}/details`; }\n public static getRequestSteps(requestId) {return `/api/requests/${requestId}/stages`; }\n public static managePO(requestId) {return `/api/requests/card-production/${requestId}/purchase-orders/`; }\n public static updatePO(requestId, poId) {return `/api/requests/card-production/${requestId}/purchase-orders/${poId}`; }\n public static performAction(requestId) {return `/api/requests/${requestId}/stages/actions`; }\n public static getRequestPrinterWorkItems(requestId) {return `/api/requests/card-production/${requestId}/printers/work-items`; }\n public static getPopProductionRequestPrinterWorkItems(requestId) {\n return `/api/requests/pop-production/${requestId}/printers/work-items`;\n }\n public static getFsrPrinterWorkItems(requestId) {\n return `/api/requests/financial-services/${requestId}/printers/work-items`;\n }\n public static getBifPrinterWorkItems(requestId) {\n return `/api/requests/bif-production/${requestId}/printers/work-items`;\n }\n public static getThirdProdPrinterWorkItems(requestId) {\n return `/api/requests/third-party-production/${requestId}/printers/work-items`;\n }\n public static updateMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`; }\n public static updatePopProdMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`; }\n public static updateFsrMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`; }\n public static updateBifMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`; }\n public static updateThirdProdMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`; }\n public static createSowAttachment(reqId, poId) {return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments`; }\n public static deleteSOWFile(reqId, poId, attachmentId) {\n return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments/${attachmentId}`; }\n public static getFile(fileId) {return `/api/files/${fileId}`; }\n\n public static createThirdSowAttachment(requestAlternateId, orderAlternateId) {\n return `/api/requests/third-party-production/${requestAlternateId}/purchase-orders/${orderAlternateId}/sow/attachments`;\n }\n public static deleteThirdSowFile(requestAlternateId, orderAlternateId, attachmentId) {\n return `/api/requests/third-party-production/${requestAlternateId}/purchase-orders/${orderAlternateId}/sow/attachments/${attachmentId}`;\n }\n\n public static createCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number\n ) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createPopProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number\n ) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createFsrWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number\n ) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createBifWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number\n ) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createThirdProdWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number\n ) {\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static deleteCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deletePopProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteFsrWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteBifWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteThirdProdWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static doCardProductionBulkWorkItemMilestoneUpdate(\n requestId: string,\n printerId: number,\n itemId: number\n ) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doPopProdBulkWorkItemMilestoneUpdate(\n requestId: string,\n printerId: number,\n itemId: number\n ) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doFsrBulkWorkItemMilestoneUpdate(\n requestId: string,\n printerId: number,\n itemId: number\n ) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doBifBulkWorkItemMilestoneUpdate(\n requestId: string,\n printerId: number,\n itemId: number\n ) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doThirdProdBulkWorkItemMilestoneUpdate(\n requestId: string,\n printerId: number,\n itemId: number\n ) {\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static cardProductionUpdateOperationsNotes(requestId) { return `api/requests/card-production/${requestId}/printers/details/operations-notes`; }\n\n public static getActionHistory(requestId) {\n return `/api/requests/${requestId}/action-history`;\n }\n\n public static createAttachmentUploadLink(requestId, fileType) {\n return `/api/requests/${requestId}/attachments/${fileType}/upload-link`;\n }\n\n public static createArtworkAttachment = (requestId) => `/api/requests/${requestId}/art-file/attachments/`;\n public static deleteArtworkAttachment = (requestId, attachmentId) => `/api/requests/${requestId}/art-file/attachments/${attachmentId}`;\n\n public static requestDeleteArtworkAttachment(requestId, attachmentId) {\n return `/api/requests/${requestId}/art-file/attachments/${attachmentId}`; }\n public static cdUpdateDesigner(requestId) { return `/api/requests/card-design/${requestId}/designer/`; }\n public static cdUpdateCsJobs(requestId) { return `/api/requests/card-design/${requestId}/cs-job-id/`; }\n public static getProductUpc(productUpc) { return `/api/reference/request/product/${productUpc}`; }\n public static cdUpdateTmDatesApproval(requestId) { return `/api/requests/card-design/${requestId}/tm-review/`; }\n public static cdUpdateFinalArtDueDate = (requestId) => `/api/requests/card-design/${requestId}/final-art-due`;\n public static cdDeleteItem = (requestId, requestItemId) => `/api/requests/card-design/${requestId}/request-item/${requestItemId}/`;\n public static createCardDesignItemArtwork = (requestId: string, requestItemId: number) => `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks`;\n public static createCardDesignArtworkVersion(requestId, requestItemId, artworkFileId) {\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions`;\n }\n public static deleteArtworkItem(requestId, requestItemId, artworkFileId){\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}`;\n }\n public static cdAddVersionResolution(requestId, requestItemId, artworkFileId, versionId) {\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions/${versionId}/resolution`;\n }\n\n public static cdTmReview2StageData(requestId) {\n return `/api/requests/card-design/${requestId}/tm-review-2`;\n }\n public static updateArtPathNotes(requestId) {\n return `/api/requests/card-design/${requestId}/request-items/art-path-notes`;\n }\n public static pdUpdateTmDatesApproval = (requestId) => `/api/requests/pop-design/${requestId}/tm-review/`;\n public static pdUpdateFinalArtDueDate = (requestId) => `/api/requests/pop-design/${requestId}/delivery-date`;\n public static pdDeleteItem = (requestId, requestItemId) => `/api/requests/pop-design/${requestId}/request-item/${requestItemId}/`;\n public static pdUpdateDesigner = (requestId) => `/api/requests/pop-design/${requestId}/designer/`;\n\n public static createPopDesignItemArtwork = (requestId: string, requestItemId: number) => `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks`;\n public static createPopDesignArtworkVersion(requestId, requestItemId, artworkFileId) {\n return `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions`;\n }\n public static pdAddVersionResolution(requestId, requestItemId, artworkFileId, versionId) {\n return `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions/${versionId}/resolution`;\n }\n\n public static pdTmReview2StageData(requestId) {\n return `/api/requests/pop-design/${requestId}/tm-review-2`;\n }\n\n public static updateRequestItemWithFinancialServicesProductLines(requestAlternateId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/financial-services-product-lines`;\n }\n public static createFinancialServicesArtwork(requestAlternateId: number, itemId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/${itemId}/financial-services-artworks`;\n }\n public static deleteFinancialServicesArtworkFile(requestAlternateId: number, itemId: number, attachmentId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/${itemId}/financial-services-artworks/${attachmentId}`;\n }\n public static pdUpdateArtPathNotes(requestId) {\n return `/api/requests/pop-design/${requestId}/request-items/art-path-notes`;\n }\n public static pdDeleteArtworkItem(requestId, requestItemId, artworkFileId){\n return `api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}`;\n }\n public static createPopProductionPartnerAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/partner-art-attachments`;\n }\n public static createPopProductionPrinterQuoteAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/printer-quote-attachments`;\n }\n public static ppRemovePartnerAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/partner-art-attachments/${attachmentId}`;\n }\n public static ppRemovePrinterQuoteAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/printer-quote-attachments/${attachmentId}`;\n }\n public static createPopProductionAdditionalAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/additional-attachments`;\n }\n public static ppRemoveAdditionalAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/additional-attachments/${attachmentId}`;\n }\n public static createPopProductionArtwork(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/artworks`;\n }\n public static ppDeleteArtwork(requestId: string | number, itemId: string | number | undefined, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/artworks/${attachmentId}`;\n }\n public static createPopProductionPrinterProof(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs`;\n }\n public static ppDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs/${attachmentId}`;\n }\n public static ppUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs/${attachmentId}/review`;\n }\n public static ppPoPdfDownload(requestId, poId, type) {\n return `/api/requests/pop-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static ppPrinterQuoteStageDownload(requestId) {\n return `/api/requests/pop-production/${requestId}/documents/request-process-printer-quote`;\n }\n public static fsrDetailsStageDownload(requestId) {\n return `/api/requests/financial-services/${requestId}/documents/request-for-quote`;\n }\n public static ppPO(requestId) {\n return `/api/requests/pop-production/${requestId}/purchase-orders`;\n }\n public static ppUpdatePO(requestId, poId) {\n return `/api/requests/pop-production/${requestId}/purchase-orders/${poId}`;\n }\n public static ppUpdateConversionToProduction(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/production-conversion`;\n }\n public static createFsrArtwork(requestId: string) {\n return `/api/requests/financial-services/${requestId}/details/artworks`;\n }\n public static fsrDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/financial-services/${requestId}/details/artworks/${attachmentId}`;\n }\n public static fsrPoPdfDownload(requestId, poId, type) {\n return `/api/requests/financial-services/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static fsrPO(requestId) {\n return `/api/requests/financial-services/${requestId}/purchase-orders`;\n }\n public static fsrUpdatePO(requestId, poId) {\n return `/api/requests/financial-services/${requestId}/purchase-orders/${poId}`;\n }\n public static fsUpdateArtworkReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/financial-services/${requestId}/items/${itemId}/artworks/${attachmentId}/review`;\n }\n public static createBifArtwork(requestId: string) {\n return `/api/requests/bif-production/${requestId}/artworks`;\n }\n public static bifDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/artworks/${attachmentId}`;\n }\n public static createBifPrinterProof(requestId: string) {\n return `/api/requests/bif-production/${requestId}/printer-proofs`;\n }\n public static bifDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/printer-proofs/${attachmentId}`;\n }\n public static createThirdPartyArtwork(requestId: string) {\n return `api/requests/third-party-production/${requestId}/details/artworks`;\n }\n public static thirdPartyDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `api/requests/third-party-production/${requestId}/details/artworks/${attachmentId}`;\n }\n public static thirdProdPo(requestId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders`;\n }\n public static thirdProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static thirdProdTpsReportDownload() {\n return `/api/fn/reports/download/third-party-tps-report`;\n }\n public static thirdProdUpdatePO(requestId, poId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}`;\n }\n public static thirdPartyItemPrinters(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/items/printers`;\n }\n public static thirdPartyCreateTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyGetRequestTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyDeleteTps(requestId: string | number, tpsId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/${tpsId}`;\n }\n public static thirdPartyBulkUpdateItems(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details`;\n }\n public static thirdPartyBulkUpdateCardRanges(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details/card-ranges`;\n }\n public static thirdPartyBulkUpdateCC(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/card-collateral-confirmation-details`;\n }\n /**\n * @deprecated\n */\n public static createIHProductionItemArtwork(requestId: string, itemId: number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks`;\n }\n public static createIHProductionArtwork(requestId: string) {\n return `/api/requests/ih-production/${requestId}/artworks`;\n }\n /**\n * @deprecated\n */\n public static ihProductionDeleteItemArtwork(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks/${attachmentId}`;\n }\n\n public static ihProductionDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/artworks/${attachmentId}`;\n }\n\n /**\n * IH Production Request\n */\n public static ihProdPo(requestId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders`;\n }\n public static ihProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static ihProdUpdatePO(requestId, poId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}`;\n }\n public static createIhPrinterProof(requestId: string) {\n return `/api/requests/ih-production/${requestId}/printer-proofs`;\n }\n public static ihDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/printer-proofs/${attachmentId}`;\n }\n public static ihUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/printer-proofs/${attachmentId}/review`;\n }\n\n static substitutes() {\n return `/api/users/substitutes`;\n }\n\n static substitute(substituteUsername: string) {\n return `/api/users/substitutes/${substituteUsername}`;\n }\n\n static adminSubstitute(username: string, substituteUsername: string) {\n return `/api/admin/users/substitutes/${username}/${substituteUsername}`;\n }\n\n static adminSubstitutes(username?: string) {\n if(username == null) {\n return `/api/admin/users/substitutes`;\n }\n return `/api/admin/users/substitutes/${username}`;\n }\n\n static emailTps() {\n return `/api/fn/reports/email/tps`;\n }\n\n static emailTpsTemplates() {\n return `/api/requests/third-party-production/spreadsheets/email-templates`;\n }\n\n static userSettings() {\n return `/api/users/profiles/settings`;\n }\n\n static userEmailSignature() {\n return `/api/users/profiles/settings/email-signature`;\n }\n\n static cardDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/card-design/${requestId}/prep-artifacts-designer`;\n }\n\n static popDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/pop-design/${requestId}/prep-artifacts-designer`;\n }\n static editAdditionalOtherContacts(requestNumber) { return `/api/requests/${requestNumber}/contacts`; }\n}\n","export const PAGES_CONFIG = {\n DASHBOARD: 'dashboard',\n REQUESTS: 'requests',\n REPORTS: 'reports',\n HELP: 'help',\n VERSIONS: 'versions',\n ERROR: 'error',\n ERROR_AUTH: 'error-authorization',\n SUBSTITUTES: 'substitutes',\n};\n\nexport enum ERRORS {\n auth = 'auth',\n permission = 'permission',\n notFound = '404'\n}\n","export enum UserGroups {\n PPM = 'FN_PRODUCEIT_PRODUCTION_MANAGER',\n FA = 'FN_PRODUCEIT_FINANCE_APPROVER',\n Designer = 'FN_PRODUCEIT_DESIGNER',\n TM = 'FN_PRODUCEIT_TRAFFIC_MANAGER',\n CD = 'FN_PRODUCEIT_CREATIVE_DIRECTOR',\n POP_PPM = 'FN_PRODUCEIT_POP_PRODUCTION_MANAGER',\n FSR_PPM = 'FN_PRODUCEIT_FSR_PRODUCTION_MANAGER',\n BIF_PPM = 'FN_PRODUCEIT_BIF_PRODUCTION_MANAGER',\n IH_PPM = 'FN_PRODUCEIT_IHA_PRODUCTION_MANAGER',\n THIRD_PARTY_PPM = 'FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER',\n IM_TM = 'FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER',\n}\n","const GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS';\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER';\nconst GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER = 'FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER = 'FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER = 'FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER';\n\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_DESIGNER = 'GROUP_FN_PRODUCEIT_DESIGNER';\nconst GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR = 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR';\nconst GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT = 'GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT';\nconst GROUP_FN_PRODUCEIT_FSM_BLUEBIRD = 'GROUP_FN_PRODUCEIT_FSM_BLUEBIRD';\nconst GROUP_FN_PRODUCEIT_FSM_CUENTAS = 'GROUP_FN_PRODUCEIT_FSM_CUENTAS';\nconst GROUP_FN_PRODUCEIT_FSM_FS_TAX = 'GROUP_FN_PRODUCEIT_FSM_FS_TAX';\nconst GROUP_FN_PRODUCEIT_FSM_GO_RAN = 'GROUP_FN_PRODUCEIT_FSM_GO_RAN';\nconst GROUP_FN_PRODUCEIT_FSM_MY_VANILLA = 'GROUP_FN_PRODUCEIT_FSM_MY_VANILLA';\nconst GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND = 'GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND';\nconst GROUP_FN_PRODUCEIT_FSM_SERVE = 'GROUP_FN_PRODUCEIT_FSM_SERVE';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GO = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GO';\nconst GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER = 'GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER';\nconst GROUP_FN_PRODUCEIT_ADMIN = 'GROUP_FN_PRODUCEIT_ADMIN';\nconst GROUP_FN_PRODUCEIT_USER = 'GROUP_FN_PRODUCEIT_USER';\nconst GROUP_FN_PRODUCEIT_SUPER_USER = 'GROUP_FN_PRODUCEIT_SUPER_USER';\nconst GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN = 'GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN';\nconst GROUP_FN_PRODUCEIT_PO_REPORT_USER = 'GROUP_FN_PRODUCEIT_PO_REPORT_USER';\n\nexport class PermissionGroups {\n static readonly PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER;\n static readonly POP_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER;\n static readonly FSR_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER;\n static readonly BIF_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER;\n static readonly IHA_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER;\n static readonly ['3RD_PARTY_CARD_PRODUCTION_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER;\n static readonly FINANCE_APPROVER_PREPAID = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID;\n static readonly FINANCE_APPROVER_REBILL = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL;\n static readonly FINANCE_APPROVER_INCOMM_PAYS = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS;\n static readonly POP_PRODUCTION_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER;\n static readonly TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER;\n static readonly PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER;\n static readonly CARD_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER;\n static readonly POP_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER;\n static readonly IMAGE_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER;\n static readonly POP_PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER;\n static readonly ['3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER;\n static readonly DESIGNER = GROUP_FN_PRODUCEIT_DESIGNER;\n static readonly CREATIVE_DIRECTOR = GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR;\n static readonly FSM_AMERICAN_EXPRESS_GIFT = GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT;\n static readonly FSM_BLUEBIRD = GROUP_FN_PRODUCEIT_FSM_BLUEBIRD;\n static readonly FSM_CUENTAS = GROUP_FN_PRODUCEIT_FSM_CUENTAS;\n static readonly FSM_FS_TAX = GROUP_FN_PRODUCEIT_FSM_FS_TAX;\n static readonly FSM_GO_RAN = GROUP_FN_PRODUCEIT_FSM_GO_RAN;\n static readonly FSM_MY_VANILLA = GROUP_FN_PRODUCEIT_FSM_MY_VANILLA;\n static readonly FSM_SECURE_SPEND = GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND;\n static readonly FSM_SERVE = GROUP_FN_PRODUCEIT_FSM_SERVE;\n static readonly FSM_VANILLA_DIRECT = GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT;\n static readonly FSM_VANILLA_GIFT = GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT;\n static readonly FSM_VANILLA_GO = GROUP_FN_PRODUCEIT_FSM_VANILLA_GO;\n static readonly POP_DESIGN_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER;\n static readonly ADMIN = GROUP_FN_PRODUCEIT_ADMIN;\n static readonly USER = GROUP_FN_PRODUCEIT_USER;\n static readonly SUPER_USER = GROUP_FN_PRODUCEIT_SUPER_USER;\n static readonly SUBSTITUTION_ADMIN = GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN;\n static readonly PO_REPORT_USER = GROUP_FN_PRODUCEIT_PO_REPORT_USER;\n}\n\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT = 'FN_PRODUCEIT_CARD_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT = 'FN_PRODUCEIT_POP_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT = 'FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT = 'FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT = 'FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT = 'FN_PRODUCEIT_IMAGE_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION = 'FN_PRODUCEIT_IMAGE_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_PO_REPORT = 'FN_PRODUCEIT_PO_REPORT';\nconst ROLE_FN_PRODUCEIT_MIMIC_USER = 'FN_PRODUCEIT_MIMIC_USER';\nconst ROLE_FN_PRODUCEIT_ADMIN_USER = 'FN_PRODUCEIT_ADMIN_USER';\n\nexport class PermissionRoles {\n static readonly CARD_PROD_UPLD_ART_SUBMIT = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT;\n static readonly CARD_PROD_UPLD_ART_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK;\n static readonly CARD_PROD_UPLD_ART_CANCEL = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL;\n static readonly CARD_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW;\n static readonly CARD_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT;\n static readonly CARD_DESIGN_CD_REVIEW_APPROVE = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE;\n static readonly CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_ROUT_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_CANCEL = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL;\n static readonly CARD_DESIGN_IEC_PROOF_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK;\n static readonly CARD_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION;\n static readonly POP_DESIGN_FS_REVIEW_1_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT;\n static readonly POP_DESIGN_FS_REVIEW_2_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT;\n static readonly POP_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT;\n static readonly POP_DESIGN_CD_REVIEW_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT;\n static readonly POP_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW;\n static readonly POP_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION;\n static readonly POP_PROD_FIN_APPR_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT;\n static readonly POP_PROD_UPLD_ART_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT;\n static readonly IMAGE_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW;\n static readonly IMAGE_TM_EDIT = ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT;\n static readonly IMAGE_NOTATE_VERSION = ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION;\n static readonly PO_REPORT = ROLE_FN_PRODUCEIT_PO_REPORT;\n static readonly MIMIC_USER = ROLE_FN_PRODUCEIT_MIMIC_USER;\n static readonly ADMIN_USER = ROLE_FN_PRODUCEIT_ADMIN_USER;\n}\n\nconst REQUEST_DETAILS_REQUESTER = 'REQUESTER';\n// Can assign designer\nconst CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED = 'ASSIGNEE_STEP_INCLUDED';\nconst ASSIGNED_TM = 'ASSIGNED_TM';\n\nexport class SpecificRoles {\n static readonly REQUEST_DETAILS_REQUESTER = REQUEST_DETAILS_REQUESTER;\n static readonly CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER;\n static readonly POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER;\n static readonly REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED = REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED;\n static readonly ASSIGNED_TM = ASSIGNED_TM;\n}\n\nexport class TrafficManagers {\n static readonly CDR = FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER;\n static readonly PDR = FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER;\n static readonly IR = FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER;\n}\n\nexport const POP_DESIGN_REQUEST_STAGE_REQUEST_DETAILS = 'REQUEST_DETAILS';\nexport const POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW = 'FINANCIAL_SERVICES_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW = 'TM_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS = 'DESIGN_PROCESS';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2 = 'TM_REVIEW_2';\nexport const POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW = 'CREATIVE_DIRECTOR_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW_2 = 'FINANCIAL_SERVICES_REVIEW_2';\nexport const POP_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF = 'INT_EXT_CLIENT_PROOF';\nexport const POP_DESIGN_REQUEST_STAGE_PREP_POST_ARTIFACTS = 'PREP_POST_ARTIFACTS';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW_3 = 'TM_REVIEW_3';\nexport const POP_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS = 'PREP_ARTIFACTS';\nexport const POP_DESIGN_REQUEST_STAGE_POST_ARTIFACTS = 'POST_ARTIFACTS';\n\nexport const CARD_DESIGN_REQUEST_STAGE_REQUEST_DETAILS = 'REQUEST_DETAILS';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW = 'TM_REVIEW';\nexport const CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS = 'DESIGN_PROCESS';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2 = 'TM_REVIEW_2';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_3 = 'TM_REVIEW_3';\nexport const CARD_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS = 'PREP_ARTIFACTS';\nexport const CARD_DESIGN_REQUEST_STAGE_POST_ARTIFACTS = 'POST_ARTIFACTS';\n\nexport const CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW = 'CREATIVE_DIRECTOR_REVIEW';\nexport const CARD_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF = 'INT_EXT_CLIENT_PROOF';\nexport const CARD_DESIGN_REQUEST_STAGE_PREP_POST_ARTIFACTS = 'PREP_POST_ARTIFACTS';\n\nexport const UserRoles = {\n PRODUCTION_REQUEST: {\n CREATE_REQUEST: 'ROLE_FN_PRODUCEIT_CARD_PROD_REQUEST_CREATE',\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n REQUEST_REVIEW: {\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED'],\n 'step-submit': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED']\n },\n FINANCE_APPROVAL: {\n 'step-approve': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED'],\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED']\n },\n UPLOAD_ARTWORK: {\n 'step-submit': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT', 'PRINT_PRODUCTION_MANAGER'],\n 'step-back': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK', 'PRINT_PRODUCTION_MANAGER'],\n 'step-cancel': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL', 'PRINT_PRODUCTION_MANAGER']\n },\n ART_APPROVAL: {\n 'step-approve': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER'],\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER'],\n 'step-cancel': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER']\n },\n PO_SOW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n COMMITTEE_APPROVAL: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-approve': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups.PRODUCTION_TRAFFIC_MANAGER\n },\n CARD_DESIGN_REQUEST: {\n CREATE_REQUEST: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_REQUEST_CREATE',\n [CARD_DESIGN_REQUEST_STAGE_REQUEST_DETAILS]: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM],\n 'step-save': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n [CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS]: {\n 'step-back': ['DESIGNER', 'ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK'],\n 'step-submit': 'DESIGNER'\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW]: {\n 'step-submit': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE',\n 'step-back': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK',\n 'step-cancel': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL'\n },\n [CARD_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF]: {\n 'step-back': [REQUEST_DETAILS_REQUESTER, 'ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK'],\n 'step-submit': REQUEST_DETAILS_REQUESTER,\n VIEW: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_VIEW'\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_3]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [CARD_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS]: {\n 'step-submit': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-save': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-back': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'auto-assign': GROUP_FN_PRODUCEIT_DESIGNER,\n 'can-assign-designer': [\n GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER,\n GROUP_FN_PRODUCEIT_DESIGNER,\n ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE,\n GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR\n ]\n },\n [CARD_DESIGN_REQUEST_STAGE_POST_ARTIFACTS]: {\n 'step-close': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n 'step-back': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT'\n },\n DESIGNER: 'DESIGNER',\n DESIGNER_GROUP: 'GROUP_FN_PRODUCEIT_DESIGNER',\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CREATIVE_DIRECTOR: 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR',\n APPROVAL_MANAGER_ANNOTATE: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION',\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n },\n POP_DESIGN_REQUEST: {\n [POP_DESIGN_REQUEST_STAGE_REQUEST_DETAILS]: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW]: {\n 'step-back': ['ASSIGNEE_STEP_INCLUDED'],\n 'step-submit': ['ASSIGNEE_STEP_INCLUDED'],\n 'upload-art-files': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW]: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM],\n 'step-save': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n [POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS]: {\n 'step-back': 'DESIGNER',\n 'step-submit': 'DESIGNER'\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2]: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM]\n },\n [POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW]: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT',\n 'step-cancel': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW_2]: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF]: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW_3]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [POP_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS]: {\n 'step-submit': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-save': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-back': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'auto-assign': GROUP_FN_PRODUCEIT_DESIGNER,\n 'can-assign-designer': [\n GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER,\n GROUP_FN_PRODUCEIT_DESIGNER,\n ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT,\n GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR\n ]\n },\n [POP_DESIGN_REQUEST_STAGE_POST_ARTIFACTS]: {\n 'step-close': 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT'\n },\n DESIGNER: 'DESIGNER',\n DESIGNER_GROUP: 'GROUP_FN_PRODUCEIT_DESIGNER',\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CREATIVE_DIRECTOR: 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR',\n FINANCE_APPROVER: 'GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER',\n APPROVAL_MANAGER_ANNOTATE: 'ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION',\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n },\n POP_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n PRODUCTION_REVIEW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINTER_QUOTE_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_REQUESTOR_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT',\n 'step-approve': 'ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT'\n },\n PO_SOW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups.POP_PRODUCTION_TRAFFIC_MANAGER\n },\n FINANCIAL_SERVICES_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n ART_REQUEST_APPROVAL: {\n 'step-back': 'PRODUCT_OWNER',\n 'step-approve': 'PRODUCT_OWNER'\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER'\n },\n BIF_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER'\n },\n PRODUCTION_REQUEST_3RD_PARTY: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-cancel': 'ASSIGNEE_STEP_INCLUDED',\n 'step-submit': 'ASSIGNEE_STEP_INCLUDED'\n },\n ART_REQUEST_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n PO_SOW_TPS: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n COMMITTEE_APPROVAL: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-approve': 'PRINT_PRODUCTION_MANAGER'\n },\n CONFIRM_PRINTER: {\n 'step-back': 'PRODUCT_OWNER',\n 'step-submit': 'PRODUCT_OWNER'\n },\n INTERNAL_EXTERNAL_OPERATIONS: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n IN_PRODUCTION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups['3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER']\n },\n IH_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_REQUESTOR_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n IH_QUOTE_PROCESS: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER'\n },\n IMAGE_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n TM_REVIEW: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n DESIGN_PROCESS: {\n 'step-back': 'DESIGNER',\n 'step-submit': 'DESIGNER'\n },\n TM_REVIEW_2: {\n 'step-back': [ASSIGNED_TM],\n 'step-close': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT',\n },\n REPORTS: {\n PO_REPORT_ROLE: 'ROLE_FN_PRODUCEIT_PO_REPORT' // 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER'\n },\n APP: {\n MIMIC_USER: 'ROLE_FN_PRODUCEIT_MIMIC_USER',\n ADMIN: PermissionGroups.ADMIN,\n SUPER_USER: PermissionGroups.SUPER_USER\n },\n ALLOWED_PRINT_FINANCE_PO: [\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL',\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID',\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS',\n 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER',\n 'GROUP_FN_PRODUCEIT_PO_REPORT_USER'\n ],\n SETTINGS: {\n EMAIL: GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER\n }\n};\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n// @ts-ignore\nimport AutoNumeric from 'autonumeric';\nimport {AutonumericDefaults} from '@angularfy/autonumeric';\nexport const AUTONUMERIC_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutonumericDirective),\n multi: true\n};\n\nexport type AutonumericUpdateTriggerEventType = 'raw' | 'change';\n\n@Directive({\n selector: '[appAutonumeric]',\n providers: [AUTONUMERIC_CONTROL_VALUE_ACCESSOR],\n // tslint:disable-next-line:use-host-property-decorator no-host-metadata-property\n host: { '(blur)': 'onTouchedFn()' },\n})\nexport class AutonumericDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\n\n /* Defines the strategy to apply when options change.\n * reset will drop any previous options\n * update will change old values one by one but keep those that are not mentioned in the new options\n */\n @Input() strategy: 'reset' | 'update' = 'reset';\n\n @Input() options: any;\n @Input() predefined: string;\n\n instance: AutoNumeric;\n private isDisabled = false;\n // tslint:disable-next-line:no-unused-variable\n private initialValue: any;\n unsubscribeFormat: () => void;\n unsubscribeRawValueModified: () => void;\n @Output()\n formatted = new EventEmitter();\n @Output()\n rawValueModified = new EventEmitter();\n onChangeFn: (value: any) => void = () => {};\n @Input() autonumericUpdateTriggerEventType: AutonumericUpdateTriggerEventType = 'raw';\n\n onTouchedFn = () => {};\n\n constructor(\n private elm: ElementRef,\n private defaults: AutonumericDefaults,\n private renderer: Renderer2,\n ) {}\n\n ngOnInit(): void {\n this.instance = new AutoNumeric(\n this.elm.nativeElement,\n this.getOptions() as any\n );\n }\n\n private normalize(options: any) {\n const normalized = {};\n Object.keys((AutoNumeric as any).options).forEach(key => {\n if (typeof options[key] === 'undefined') {\n normalized[key] = (this.defaults as any)[key];\n } else {\n normalized[key] = options[key];\n }\n });\n return normalized;\n }\n\n ngAfterViewInit(): void {\n this.setDisabledState(this.isDisabled);\n this.unsubscribeFormat = this.renderer.listen(this.elm.nativeElement, 'autoNumeric:formatted', ($event) => {\n this.formatted.emit($event);\n });\n this.unsubscribeRawValueModified = this.renderer.listen(this.elm.nativeElement, 'autoNumeric:rawValueModified', ($event) => {\n if(this.autonumericUpdateTriggerEventType === 'raw') {\n this.onChangeFn($event.detail.newRawValue);\n }\n this.rawValueModified.emit($event);\n });\n this.unsubscribeRawValueModified = this.renderer.listen(this.elm.nativeElement, 'change', ($event) => {\n if(this.autonumericUpdateTriggerEventType === 'change') {\n this.onChangeFn(this.instance.getFormatted());\n }\n });\n}\n\n private getOptions() {\n if (this.options === undefined && this.predefined === undefined) {\n return this.defaults;\n }\n if (this.options !== undefined && this.predefined !== undefined) {\n throw new Error('predefined attribute could not be combined with options. Please use either predefined or options');\n }\n if (this.options !== undefined) {\n return this.normalize(this.options);\n }\n const predefined = AutoNumeric.getPredefinedOptions()[this.predefined];\n return this.normalize(predefined);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) {\n return;\n }\n if (changes.options || changes.predefined) {\n if (this.strategy === 'reset') {\n (this.instance as any).options.reset();\n }\n this.instance.update(this.getOptions());\n }\n }\n\n ngOnDestroy(): void {\n if(this.unsubscribeFormat){\n this.unsubscribeFormat();\n }\n if(this.unsubscribeRawValueModified) {\n this.unsubscribeRawValueModified();\n }\n try {\n this.instance.remove(); // remove listeners\n } catch (e) {\n }\n }\n\n writeValue(value: any): void {\n if (this.instance) {\n this.instance.set(value);\n } else {\n // autonumeric hasn't been initialised yet, store the value for later use\n this.initialValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty((this.instance as any).domElement, 'disabled', 'disabled');\n } else {\n this.renderer.removeAttribute((this.instance as any).domElement, 'disabled');\n }\n }\n }\n}\n","import {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\n\n/**\n * Prevents click if selection has been started\n *\n * @example ```html\n *
Some selectable content
\n * ```\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[click.stop-propagation]'\n})\nexport class ClickStopPropagationDirective implements OnInit, OnDestroy {\n private subscription: () => void;\n @Output('click.stop-propagation') public propagationStopped = new EventEmitter();\n\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit(): void {\n this.subscription = this.renderer.listen(this.element.nativeElement, 'click', event => {\n event.stopPropagation();\n this.propagationStopped.next(event);\n });\n }\n\n ngOnDestroy(): void {\n this.subscription();\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n *\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[appCustomHint]'\n})\nexport class CustomHintDirective {\n @Input() hintClass = 'hint d-flex';\n @Input() showDefaultIcon = true;\n constructor(public templateRef: TemplateRef) {}\n}\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, RendererStyleFlags2} from '@angular/core';\n\n/**\n * Prevents click if selection has been started\n *\n * @example ```html\n *
Some selectable content
\n * ```\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[easyAria]'\n})\nexport class EasyAriaDirective implements OnInit, OnDestroy {\n @Input('easyAria') label: string;\n @Input() clickable: string;\n private removeListener: () => void;\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit() {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.label);\n if (this.element.nativeElement.tagName !== 'BUTTON') {\n this.renderer.setAttribute(this.element.nativeElement, 'tabindex', '0');\n this.renderer.setStyle(this.element.nativeElement, 'outline', 'none', RendererStyleFlags2.Important);\n }\n this.removeListener = this.renderer.listen(this.element.nativeElement, 'keydown', event => {\n if (event.key === ' ') {\n this.element.nativeElement.dispatchEvent(new Event('click'));\n event.preventDefault();\n }\n });\n }\n\n ngOnDestroy() {\n this.removeListener();\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef, OnInit, Optional, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {ReplaySubject, Subject} from 'rxjs';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport { takeUntil} from 'rxjs/operators';\nimport {AbstractRoleProvider} from '../../requests/classes/role-provider';\n\n/**\n * @usageNotes\n *\n * Use exportsAs and isAllowed properties of this directive to disable component\n * @example\n * ```\n *
\n * \n *
\n *\n * To remove from template a component inaccessible due to permissions use directive\n * on ng-template component\n * @example\n * \n *
...
\n *
...
\n *
\n * ```\n * Content of ng-template will not be rendered\n */\n\n@Directive({\n selector: '[appUserPermissions]',\n exportAs: 'appUserPermissions'\n})\nexport class UserPermissionsDirective implements OnInit, OnDestroy {\n public isAllowed: boolean;\n\n private userPermissionsSubject = new ReplaySubject(1);\n private ngUnsubscribe = new Subject();\n\n constructor(private viewContainer: ViewContainerRef,\n private userPermissionsService: UserPermissionsService,\n private cd: ChangeDetectorRef,\n @Optional() private roleProvider: AbstractRoleProvider,\n @Optional() private templateRef?: TemplateRef,\n ) {\n }\n\n @Input() set appUserPermissions(permission: string | string[]) {\n const arrayPermission = [permission].flat();\n this.userPermissionsSubject.next(arrayPermission);\n }\n\n ngOnInit() {\n this.userPermissionsSubject\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((permission) => this.checkUserPermissions(permission));\n }\n\n private async checkUserPermissions(permission: string | Array) {\n const isAllowed = await this.userPermissionsService.isActionAvailable(permission, this.roleProvider);\n\n if (isAllowed) {\n if (this.templateRef) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n this.isAllowed = true;\n } else {\n if (this.templateRef) {\n this.viewContainer.clear();\n }\n this.isAllowed = false;\n }\n this.cd.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {UserService} from '../services/user.service';\nimport {catchError, map, tap} from 'rxjs/operators';\nimport {StateProviderService} from '../services/state-provider.service';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport {PAGES_CONFIG} from '../constants/pages.constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n public router: Router,\n private userService: UserService,\n private stateProviderService: StateProviderService,\n private userPermissionService: UserPermissionsService\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n if (this.userService.isLoggedInProduceit()) {\n return true;\n }\n\n return this.userService.login().pipe(\n map((userGroupRoles: string[]) => {\n this.userService.setLoggedInProduceit(true);\n this.userPermissionService.setUserRoles(userGroupRoles);\n return true;\n }),\n tap(() => {\n this.userService.updateUserDetails();\n }),\n catchError(err => {\n this.stateProviderService.putParam('user', this.userService.getCurrentUserName());\n this.router.navigate([PAGES_CONFIG.ERROR_AUTH]);\n return of(false);\n })\n );\n }\n}\n","import {UserService} from '../services/user.service';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class UsernameHeaderInterceptor implements HttpInterceptor {\n\n constructor(public userService: UserService) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n\n if (this.userService.getCurrentUserName()) {\n request = request.clone({\n setHeaders: {\n username: this.userService.getCurrentUserName() ?\n encodeURIComponent(this.userService.getCurrentUserName()) :\n this.userService.getCurrentUserName()\n }\n });\n }\n return next.handle(request);\n }\n}\n","export interface RestrictionOptionsObject {\n fileType?: string;\n fileSize?: FileSizeRestriction;\n}\n\nexport interface FileSizeRestriction {\n sizeNumber: number;\n sizeType: string;\n}\n\nexport interface FileSizeRestrictions {\n GLOBAL: FileSizeRestriction;\n CARD_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n PROOF_OF_PAYMENT: FileSizeRestriction;\n EXTERNAL_PIN: FileSizeRestriction;\n PO_SOW: FileSizeRestriction;\n };\n CARD_DESIGN: {\n ART: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n };\n POP_DESIGN: {\n ART: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n FS_FILE: FileSizeRestriction;\n };\n POP_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n OTHER: FileSizeRestriction;\n PARTNER_ART: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n PRINTER_QUOTE: FileSizeRestriction;\n };\n FINANCIAL_SERVICES: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n FINANCE: FileSizeRestriction;\n };\n BIF_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n ASN: FileSizeRestriction;\n };\n THIRD_PARTY_PRODUCTION: {\n FINANCE: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n OPS: FileSizeRestriction;\n ASN: FileSizeRestriction;\n EXTERNAL_PIN: FileSizeRestriction;\n };\n IMAGE: {\n ART_FILE: FileSizeRestriction;\n };\n IH_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n };\n}\n\nconst DEFAULT_FILE_SIZE_RESTRICTION: FileSizeRestriction = {\n sizeNumber: 50,\n sizeType: 'MB'\n};\n\nexport const FILE_SIZE_RESTRICTIONS: FileSizeRestrictions = {\n GLOBAL: DEFAULT_FILE_SIZE_RESTRICTION,\n CARD_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n PROOF_OF_PAYMENT: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n PO_SOW: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n CARD_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n FS_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n OTHER: DEFAULT_FILE_SIZE_RESTRICTION,\n PARTNER_ART: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_QUOTE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n FINANCIAL_SERVICES: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n BIF_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n THIRD_PARTY_PRODUCTION: {\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n OPS: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IMAGE: {\n ART_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IH_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n }\n};\n","import { UserSettings } from './user-settings.model';\n\nexport interface UserModel {\n firstName: string;\n userName: string;\n lastName: string;\n mdmId?: number;\n middleName?: string;\n incomm?: boolean;\n groups?: string[];\n}\n\n/**\n * Model, descripting current logged in user\n */\nexport interface SystemUserModel {\n userName: string;\n firstName: string;\n lastName: string;\n substitutedUsers: string[];\n settings: UserSettings;\n}\n\nexport enum UserTheme {\n 'LIGHT' = 'LIGHT',\n 'DARK' = 'DARK',\n}\n","import {DatePipe} from '@angular/common';\nimport {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\n// eslint-disable-next-line no-restricted-syntax\nimport * as moment from 'moment-timezone';\n\n@Pipe({\n name: 'date',\n})\nexport class DatePipeTz extends DatePipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) locale: string) {\n super(locale);\n }\n transform(value: any, format?: string, timezone: string = 'America/New_York', locale?: string): any {\n return super.transform(value, format, timezone !== null ? moment.tz(value, timezone).format('z') : undefined, locale);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'join'\n})\nexport class JoinPipe implements PipeTransform {\n\n transform(value: Array, separator = '_'): string {\n return value.filter(i => i != null).join(separator);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport get from 'lodash/get';\n\ntype LabelGeneratorFn = (...args: any[]) => string;\ntype ExtrasGeneratorFn = (...args: any[]) => string[];\ntype LabelFieldInput = string | LabelGeneratorFn;\ntype SearchExtrasFieldInput = string | ExtrasGeneratorFn;\n@Pipe({\n name: 'toSelectDropdownOptions',\n pure: true\n})\nexport class ToSelectSearchDropdownOptions implements PipeTransform {\n public getLabel = (item: any, labelField: LabelFieldInput): string => {\n switch (true) {\n case item == null:\n return item;\n case typeof labelField === 'string':\n return get(item, labelField as string);\n case labelField instanceof Function:\n const itemLabel = labelField as (item: any) => string;\n return itemLabel(item);\n }\n return item;\n };\n\n public getValue = (item: any, valueField: LabelFieldInput): any => {\n switch (true) {\n case item == null:\n return null;\n case valueField === null:\n return item;\n case typeof valueField === 'string':\n return get(item, valueField as string);\n case valueField instanceof Function:\n const itemValue = valueField as (item: any) => string;\n return itemValue(item);\n }\n return item;\n };\n public getExtras = (item: any, extrasField: SearchExtrasFieldInput): string[] => {\n switch (true) {\n case item == null:\n return [];\n case typeof extrasField === 'string':\n return [get(item, extrasField as string)].flat();\n case extrasField instanceof Function:\n const itemExtras = extrasField as (item: any) => string[];\n return itemExtras(item);\n }\n return null;\n };\n\n private flatternOptions(items: {level: number; children: any[]}[], level = 0, parent: any = null) {\n return items.flatMap(item => [[item, level, parent], ...('children' in item ? this.flatternOptions(item.children, level + 1, item) : [])]);\n }\n\n transform(\n options: any[],\n valueField: string = 'code',\n labelFieldInput: LabelFieldInput = 'name',\n createLabelFromValue = false,\n extrasField: SearchExtrasFieldInput = null\n ): {label: string; value: any}[] {\n if(!options) {\n return [];\n }\n const flatternedItems = this.flatternOptions(options);\n\n return flatternedItems\n .map(([option, level, parent]) => {\n const value = this.getValue(option, valueField);\n const label = this.getLabel(createLabelFromValue ? value : option, labelFieldInput);\n const extras = this.getExtras(extrasField ? value : option, extrasField);\n return {\n label,\n value,\n option,\n parent,\n level,\n extras\n };\n })\n .map((option, optionIndex, list) => {\n option.parent = option.parent ? list.find(o => o.option === option.parent) : null;\n return option;\n });\n }\n}\n","export enum errorCodes {\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n}\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\r\nimport {MessageService} from './message-service.service';\r\nimport {catchError} from 'rxjs/operators';\r\nimport {Observable, throwError} from 'rxjs';\r\nimport {Router} from '@angular/router';\r\nimport {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\r\nimport {StateProviderService} from './state-provider.service';\r\nimport {errorCodes} from '../constants/error-code.constants';\r\n\r\ntype ErrorOptions = {\r\n duration?: number;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlingHttpClient {\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private stateProviderService: StateProviderService,\r\n private router: Router\r\n ) {}\r\n\r\n public post(url: string, body: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.post(url, body, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n get(url: string, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.get(url, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public put(url: string, body: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.put(url, body, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public delete(url: string, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.delete(url, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public handleError(error: HttpErrorResponse, errorOptions?: ErrorOptions): Observable {\r\n let errorPromise = Promise.resolve(error?.error);\r\n if (error.error instanceof Blob) {\r\n errorPromise = new Response(error.error).text().then(errorDetailsJson => {\r\n try {\r\n return JSON.parse(errorDetailsJson);\r\n } catch (e) {\r\n return {message: `${error.status} ${error.statusText}`};\r\n }\r\n });\r\n }\r\n errorPromise.then(errorDetails => this.displayError(error.status, errorDetails, errorOptions));\r\n return throwError(error);\r\n }\r\n\r\n private displayError(status: number, errorDetails: any, errorOptions: ErrorOptions = {}) {\r\n const {duration} = errorOptions;\r\n const errorMessage = errorDetails?.message;\r\n if (status === errorCodes.FORBIDDEN) {\r\n this.stateProviderService.putParam('error', ERRORS.permission);\r\n this.router.navigate([PAGES_CONFIG.ERROR]);\r\n } else if (status === errorCodes.NOT_FOUND) {\r\n this.stateProviderService.putParam('error', ERRORS.notFound);\r\n this.messageService.showSystemMessage('error', 'Could not perform action', errorMessage, duration);\r\n } else {\r\n this.messageService.showSystemMessage('error', 'Could not perform action', errorMessage, duration);\r\n }\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {Subject, Subscription, Observable} from 'rxjs';\nimport {filter, map, takeUntil} from 'rxjs/operators';\n\nexport enum Events {\n RequestDetailsSubmit = 'request-details-submit',\n RequestDetailsSave = 'request-details-save',\n TmReviewSave = 'tm-review-save',\n RequestDetailsDelete = 'request-details-delete',\n RequestDetailsValidation = 'request-details-submit-validation',\n ApproveSubmitValidated = 'approve-art-submit-validation',\n PoSowSubmitValidated = 'pow-sow-submit-validation',\n AtPrinterSubmitValidated = 'at-printer-submit-validation',\n DesignProcessValidation = 'design-process-validation',\n DesignProcessSubmit = 'design-process-submit',\n StepApprove = 'step-approve',\n StepSubmit = 'step-submit',\n StepCancel = 'step-cancel',\n StepBack = 'step-back',\n StepClose = 'step-close',\n StepActivate = 'step-activate',\n UploadArtworkSubmit = 'upload-submit',\n ChangeRequestStage = 'change-request-stage',\n StartRecalculatePoTotalPrice = 'start-recalculate-po-total-price',\n SowSubmit = 'sow-submit',\n PoSubmit = 'po-submit',\n TpsSubmit = 'tps-submit',\n UpdateActionHistory = 'update-action-history',\n UpdateCommentCount = 'update-comment-count',\n RequestDetails = 'requestDetails',\n PopFinancialServicesSubmitValidation = 'popFinancialServicesSubmitValidation',\n PopFinancialServicesSubmit = 'popFinancialServicesSubmit',\n PopFinancialServicesRollbackValidation = 'popFinancialServicesRollbackValidation',\n PopFinancialServicesRollback = 'popFinancialServicesRollback',\n FinancialServicesReview2Submit = 'financialServicesReview2Submit',\n ProductionReviewSubmit = 'production-review-submut',\n ProductionReviewRollback = 'production-review-rollback',\n ProductionReviewValidation = 'production-review-validation',\n PpVendorProofSubmit = 'pp-vendor-proof-submit',\n UploadPrinterProofValidation = 'upload-printer-proof-validation',\n UploadPrinterProofSubmit = 'upload-printer-proof-submit',\n TmReviewRollback = 'tm-review-rollback'\n}\n\nexport enum CardDesignEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n TmReview2SubmitValidated = 'tm-review-2-submit-validation',\n TmReview2Submit = 'tm-review-2-submit',\n TmReview3Submit = 'tm-review-3-submit',\n CreativeReviewSubmitValidated = 'creative-review-submit-validation',\n CreativeReviewSubmit = 'creative-review-submit',\n IntExtClientProofApproveValidated = 'client-proof-approve-validation',\n IntExtClientProofApprove = 'client-proof-approve',\n PrepArtifactValidated = 'prep-artifact-validation',\n PrepArtifactSave = 'prep-artifact-save',\n PrepArtifactSubmit = 'prep-artifact-submit',\n PostArtifactSubmit = 'post-artifact-submit'\n}\n\nexport enum PopDesignEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n TmReview2SubmitValidated = 'tm-review-2-submit-validation',\n TmReview2Submit = 'tm-review-2-submit',\n TmReview3Submit = 'pop-tm-review-3-submit',\n FinancialServicesReview2Validation = 'financial-services-review-2-validation',\n FinancialServicesReview2Submit = 'financial-services-review-2-submit',\n PrepArtifactValidated = 'pop-prep-artifact-validation',\n PrepArtifactSave = 'pop-prep-artifact-save',\n PrepArtifactSubmit = 'pop-prep-artifact-submit',\n PostArtifactSubmit = 'pop-post-artifact-submit'\n}\n\nexport enum PopProductionEvents {\n PrinterQuoteSubmitValidated = 'printer-quote-submit-validation',\n PrinterQuoteSubmit = 'printer-quote-submit',\n InternalRequesterReviewSubmitValidation = 'internal-requester-review-submit-validation',\n InternalRequesterReviewSubmit = 'internal-requester-review-submit',\n ReviewPrinterProofApproveValidation = 'review-printer-proof-approve-validation',\n ReviewPrinterProofApprove = 'review-printer-proof-approve'\n}\n\nexport enum FsrEvents {\n UploadSubmit = 'fsr-upload',\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve'\n}\n\nexport enum BifEvents {\n UploadArtworkValidation = 'upload-artwork-validation',\n UploadArtworkSubmit = 'upload-artwork-submit',\n InternalReviewPrinterProofValidated = 'internal-review-printer-proof-validation',\n InternalReviewPrinterProofApprove = 'internal-review-printer-proof-approve'\n}\n\nexport enum ThirdPartyEvents {\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve',\n InternalExternalOperationsValidation = 'internal-external-operations-validation',\n InternalExternalOperationsSubmit = 'internal-external-operations-submit',\n ConfirmPrinter = 'confirm-printer',\n ConfirmPrinterValidation = 'confirm-printer-validation',\n BulkChangeTps = 'bulk-change-tps'\n}\n\nexport enum IhEvents {\n UploadArtworkValidation = 'upload-artwork-validation',\n UploadArtworkSubmit = 'upload-artwork-submit',\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve',\n InternalPrinterProofValidation = 'internal-printer-proof-validation',\n InternalPrinterProofApprove = 'internal-printer-proof-approve'\n}\nexport enum ImageEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n DesignProcessSubmitValidated = 'design-process-submit-validation',\n DesignProcessSubmit = 'design-process-submit'\n}\n\nexport type RequestEvents =\n | Events\n | CardDesignEvents\n | PopDesignEvents\n | PopProductionEvents\n | FsrEvents\n | BifEvents\n | ThirdPartyEvents\n | IhEvents\n | ImageEvents;\n\ninterface EventObject {\n eventName: string;\n value?: T;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n private subject$ = new Subject();\n\n public emit(event: EventObject): void {\n this.subject$.next(event);\n }\n\n public on(eventName: string, action: (value: T) => any, takeUntilBy: Observable = new Subject()): Subscription {\n return this.subject$\n .pipe(\n filter((e: EventObject) => e.eventName === eventName),\n map((e: EventObject) => e.value),\n takeUntil(takeUntilBy)\n )\n .subscribe(action);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderService {\n private loader = new BehaviorSubject(false);\n loading$ = this.loader.asObservable();\n\n public showLoader(): void {\n this.loader.next(true);\n }\n\n public hideLoader(): void {\n this.loader.next(false);\n }\n\n public get spinnerStatus(): Observable {\n return this.loader.asObservable();\n }\n}\n","
\n
\n \n \n \n
\n
\n

{{title}}

\n

\n
\n
\n \n
\n
\n
\n
\n
\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {IndividualConfig, ToastPackage, ToastrService} from 'ngx-toastr';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'app-system-message',\n templateUrl: './system-message.component.html',\n styleUrls: ['./system-message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({opacity: 0})),\n state('active', style({opacity: 1})),\n state('removed', style({opacity: 0})),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ]\n})\nexport class SystemMessageComponent implements OnDestroy {\n message?: string | null;\n title?: string;\n options: IndividualConfig;\n duplicatesCount!: number;\n originalTimeout: number;\n /** width of progress bar */\n width = -1;\n private timeout: any;\n intervalId: any;\n private hideTime!: number;\n private ngUnsubscribe = new Subject();\n @ViewChild('main') mainElement;\n\n constructor(\n protected toastrService: ToastrService,\n private toastPackage: ToastPackage,\n private cd: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n\n toastPackage.toastRef\n .afterActivate()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.activateToast();\n });\n toastPackage.toastRef\n .manualClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.remove();\n });\n toastPackage.toastRef\n .timeoutReset()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTimeout();\n });\n toastPackage.toastRef\n .countDuplicate()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n\n /** controls animation */\n @HostBinding('@flyInOut')\n public state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime || '300',\n easing: 'ease-in'\n }\n };\n\n @HostListener('mouseenter')\n stickAround(): void {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n @HostListener('mouseleave')\n delayedHideToast(): void {\n if (\n this.options.disableTimeOut === true ||\n this.options.disableTimeOut === 'extendedTimeOut' ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed'\n ) {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n\n outsideTimeout(func: () => any, timeout: number): void {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n } else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n\n outsideInterval(func: () => any, timeout: number): void {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n } else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n\n private runInsideAngular(func: () => any): void {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n } else {\n func();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n\n /**\n * activates toast and sets timeout\n */\n private activateToast(): void {\n this.state = {...this.state, value: 'active'};\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress(): void {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n this.cd.markForCheck();\n }\n\n resetTimeout(): void {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = {...this.state, value: 'active'};\n\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove(): void {\n (this.mainElement.nativeElement as HTMLDivElement).removeAttribute('role');\n (this.mainElement.nativeElement as HTMLDivElement).removeAttribute('aria-live');\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = {...this.state, value: 'removed'};\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport {PRICE_PATTERN} from '../../requests/constants/request-details.constants';\nimport {SystemMessageComponent} from '../components/system-message/system-message.component';\nimport {ToastrService} from 'ngx-toastr';\n\nexport const DEFAULT_DURATION = 10000;\nexport const DEFAULT_EXTENDED_DURATION = 2000;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n\n constructor(private toastr: ToastrService) {\n this.toastr.toastrConfig.toastComponent = SystemMessageComponent;\n this.toastr.toastrConfig.autoDismiss = true;\n this.toastr.toastrConfig.positionClass = 'toast-bottom-left';\n }\n\n public getControlErrorMessage(errors: ValidationErrors): string {\n if (errors.required) { return 'You must enter a value'; }\n if (errors.notEmpty) { return 'You must enter a value'; }\n if (errors.minlength) { return `Minimum length is ${errors.minlength.requiredLength}`; }\n if (errors.maxlength) { return `Maximum length is ${errors.maxlength.requiredLength}`; }\n if (errors.max) { return `Please enter value less than ${errors.max.max}`; }\n if (errors.min) { return `The minimum value for this field is ${errors.min.min}`; }\n if (errors.unique) { return `Value should be unique`; }\n if (errors.maxCalculation) { return `Please enter value so field ${errors.maxCalculation.fieldName\n } is less than ${errors.maxCalculation.max}`; }\n\n if (errors.pattern) {\n let message = 'Invalid value';\n if (errors.pattern.requiredPattern === String(PRICE_PATTERN)) {\n message = 'Please use numeric format XXXXXX.XXXXXX (ex. 999999.000000)';\n }\n return message;\n }\n\n if (errors.wpnError) {\n return 'Please recheck entered WPN';\n }\n\n if (errors.upcError) {\n return 'Please recheck entered Product UPC';\n }\n\n if (errors.email) {\n return 'Please enter a well-formed email address';\n }\n\n if (errors.notFound) {\n return 'No results found';\n }\n\n if (errors.userValidator) {\n return 'Please select user from dropdown list';\n }\n\n if (errors.printerInfoValidator) {\n return 'You must enter a value';\n }\n\n if (errors.packageIdTBDValidator) {\n return 'Package Id must be defined (no TBD)';\n }\n\n if (errors.productionQtyValidator) {\n return 'Production Qty must have a quantity in multiples of Master Case Size. Please re-enter quantity.';\n }\n\n if (errors.cardProductionQtyValidator) {\n return 'Production Qty must have a quantity in multiples of Case Size. Please re-enter quantity.';\n }\n\n return 'Invalid value';\n }\n\n public showSystemMessage(status: string, header?: string, body?: string | any, duration: number = DEFAULT_DURATION, extendedTimeoutDuration = DEFAULT_EXTENDED_DURATION): void {\n this.toastr.show(body, header, {\n messageClass: status,\n closeButton: true,\n timeOut: duration,\n extendedTimeOut: duration !== 0 ? extendedTimeoutDuration : 0,\n disableTimeOut: duration !== 0 ? false : 'extendedTimeOut',\n tapToDismiss: true,\n progressBar: true,\n easeTime: 300,\n });\n }\n}\n","
\n \n

{{'module.requests.text.create-new' | translate}}

\n \n
{{'module.requests.text.production' | translate}}:
\n
\n
\n
\n \n {{request.name}}\n \n {{request.taskCount}} {{'module.requests.text.stages' | translate}}, - \n {{request.expectedDurationWeeks}} {{'module.requests.text.weeks' | translate}}\n \n
\n
\n
\n
{{'module.requests.text.design' | translate}}:
\n
\n
\n
\n
\n \n {{item.name}}\n \n {{item.taskCount}} {{'module.requests.text.stages' | translate}}, - \n {{item.expectedDurationWeeks}} {{'module.requests.text.weeks' | translate}}\n \n
\n
\n
\n
\n
\n
\n","import {Component, Inject, OnInit, ViewEncapsulation} from '@angular/core';\nimport {RequestTypeModel} from '../../models/request-type.model';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {SUPPORTED_REQUEST_TYPES, REQUEST_TYPE} from '../../constants/request-types.constant';\nimport {EnvService} from '../../../env.service';\n\n@Component({\n selector: 'app-new-request',\n templateUrl: './new-request.component.html',\n styleUrls: ['./new-request.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NewRequestComponent implements OnInit {\n\n public items: RequestTypeModel[] = [];\n\n constructor(private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data,\n public env: EnvService) {\n this.items = data.requestTypes;\n }\n\n ngOnInit(): void {\n this.roundDuration();\n }\n\n public selectRequestType(item: RequestTypeModel): void {\n if (SUPPORTED_REQUEST_TYPES.indexOf(item.type) !== -1) {\n this.dialogRef.close(item);\n }\n }\n\n public isItemDisabled(type: string): boolean {\n return SUPPORTED_REQUEST_TYPES.indexOf(type) === -1;\n }\n\n private roundDuration(): void {\n this.items.forEach(item => {\n let expectedDurationWeeks = Math.round(item.expectedDurationDays / 7);\n if(item.type === REQUEST_TYPE.IR) {\n expectedDurationWeeks = 2;\n }\n item.expectedDurationWeeks = expectedDurationWeeks;\n });\n }\n\n}\n","
\n \n

{{'module.requests.text.request-name' | translate}}

\n\n
\n \n \n \n {{inputHint | translate }}\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { REQUEST_NAME_PATTERN } from '../../constants/request-details.constants';\nimport { POP_PRODUCTION_REQUEST, SUPPORTED_REQUEST_TYPES } from '../../constants/request-types.constant';\n\n\ntype ArrayItemType = T extends Array ? R : any;\n\nexport interface RequestNameFormData {\n name: string;\n type: ArrayItemType;\n}\n\n@Component({\n selector: 'app-request-name-form',\n templateUrl: './request-name-form.component.html',\n styleUrls: ['./request-name-form.component.scss']\n})\nexport class RequestNameFormComponent implements OnInit {\n\n public maxNameLength = 128;\n public minNameLength = 3;\n public form: FormGroup;\n public dataItem: RequestNameFormData;\n private value = '';\n get placeholder(): string {\n switch(this.dataItem?.type) {\n case POP_PRODUCTION_REQUEST:\n return 'module.requests.label.request-name-placeholder';\n }\n return null;\n }\n\n get inputHint(): string {\n switch(this.dataItem?.type) {\n case POP_PRODUCTION_REQUEST:\n return 'module.requests.label.request-name-hint';\n }\n return null;\n }\n\n constructor(\n private dialogRef: MatDialogRef,\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) data: RequestNameFormData,\n ) {\n this.dataItem = { ...data };\n }\n\n public ngOnInit(): void {\n if (this.dataItem?.name) {\n this.value = this.dataItem?.name;\n }\n\n this.buildForm();\n }\n\n private buildForm(): void {\n this.form = this.fb.group({\n name: [this.value, Validators.compose([\n Validators.required,\n Validators.maxLength(this.maxNameLength),\n Validators.minLength(this.minNameLength),\n Validators.pattern(REQUEST_NAME_PATTERN)\n ])]\n });\n }\n\n public getErrorMessage(): string {\n if (this.form.invalid) {\n if (this.form.get('name').hasError('required') || this.form.get('name').hasError('notEmpty')) {\n return 'You must enter a value';\n }\n if (this.form.get('name').hasError('maxlength')) {\n return `Maximum length is ${this.maxNameLength}`;\n }\n\n return 'Invalid value';\n } return null;\n }\n\n public addName(): void {\n if (this.form.valid) {\n this.dialogRef.close({name: this.form.controls.name.value, redirect: false});\n } else {\n Object.keys(this.form.controls).forEach(key => {\n const control = this.form.get(key);\n if (control.pristine) {\n control.markAsTouched();\n control.updateValueAndValidity({ onlySelf: true, emitEvent: true });\n }\n });\n }\n }\n\n public close(): void {\n this.dialogRef.close({name: this.dataItem?.name, redirect: true});\n }\n\n}\n","
\n \n
\n

{{ header }}

\n
\n
\n

{{ message }}

\n
\n
\n \n \n
\n
\n","import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'app-confirm-close-modal',\n templateUrl: './confirm-close-modal.component.html',\n styleUrls: ['./confirm-close-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmCloseModalComponent {\n public header: string;\n public message: string;\n public confirmBtn: string;\n public closeBtn: string;\n public isCloseModal: boolean;\n\n constructor(@Inject(MAT_DIALOG_DATA) data, private translate: TranslateService) {\n this.header = data.header;\n this.message = data.message;\n this.confirmBtn = data.confirmBtn;\n this.closeBtn = data.closeBtn;\n this.isCloseModal = data.isCloseModal;\n }\n\n public get getCloseBtnLabel(): string {\n if (this.isCloseModal) {\n return this.translate.instant('common.button.close');\n }\n\n return this.closeBtn ? this.closeBtn : this.translate.instant('common.label.no');\n }\n}\n","import { Directive, Input, ElementRef, Renderer2, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appTooltip]'\n})\nexport class TooltipDirective {\n @Input() tooltipText: string;\n @Input() position: string;\n @Input() customClass = '';\n\n private tooltip: HTMLElement;\n private longTextTooltip: boolean;\n private offset = 8;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.tooltip) { this.show(); }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.tooltip) { this.hide(); }\n }\n\n show() {\n this.create();\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n }\n\n hide() {\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-show');\n this.renderer.removeChild(document.body, this.tooltip);\n this.tooltip = null;\n }\n\n create() {\n this.tooltip = this.renderer.createElement('span');\n\n this.renderer.appendChild(\n this.tooltip,\n this.renderer.createText(this.tooltipText)\n );\n\n this.renderer.appendChild(document.body, this.tooltip);\n\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.position}`);\n if(this.customClass) {\n this.renderer.addClass(this.tooltip, this.customClass);\n }\n\n if (this.tooltip.offsetWidth === 305) {\n this.longTextTooltip = true;\n this.renderer.addClass(this.tooltip, 'long-text-tooltip');\n }\n }\n\n setPosition() {\n const hostPos = this.el.nativeElement.getBoundingClientRect();\n\n const tooltipPos = this.tooltip.getBoundingClientRect();\n\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n let top;\n let left;\n\n if (this.position === 'top') {\n top = hostPos.top - tooltipPos.height - this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.position === 'bottom') {\n top = hostPos.bottom + this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.position === 'left') {\n top = this.longTextTooltip ?\n (hostPos.top - hostPos.height) :\n (hostPos.top - hostPos.height + this.offset);\n left = hostPos.left - tooltipPos.width - this.offset;\n }\n\n if (this.position === 'right') {\n top = this.longTextTooltip ?\n (hostPos.top - hostPos.height) :\n (hostPos.top - hostPos.height + this.offset);\n left = hostPos.right + this.offset;\n }\n\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ApprovalManagerService } from '../../../services/approval-manager/approval-manager.service';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { filter, first, takeUntil, tap } from 'rxjs/operators';\nimport { of, Subject } from 'rxjs';\nimport { ARTWORK_STATUSES } from '../../../../requests/constants/artwork-file-statuses.constants';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { RequestActionReasonComponent } from '../../../../requests/components/request-action-reason/request-action-reason.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ActionsReasonService } from '../../../../requests/services/actions-reason.service';\nimport {UtilsService} from '../../../services/utils.service';\nimport {FileSizeRestriction} from '../../../models/upload-file-restrictions.model';\nimport {PdfViewerService} from '../../../services/pdf-viewer.service';\nimport {MessageService} from '../../../services/message-service.service';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nexport class ApprovalManagerConfig {\n selectedRequestItemId?: number;\n selectedArtworkFileId?: number;\n mode: 'design' | 'approval' | 'view' | 'final-approval' = 'design';\n approvalManagerService: ApprovalManagerService;\n fileTypesToAccept?: string[];\n restrictionOptions?: FileSizeRestriction;\n}\n\n@Component({\n selector: 'app-approval-manager',\n templateUrl: './approval-manager.component.html',\n styleUrls: ['./approval-manager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ApprovalManagerComponent implements OnInit, OnDestroy {\n\n public ARTWORK_STATUSES = ARTWORK_STATUSES;\n public approvalManagerService: ApprovalManagerService;\n private ngUnsubscribe = new Subject();\n\n public readonly restrictionOptions: FileSizeRestriction;\n\n public requestName: string;\n public requestItems: Array;\n private selectedArtworkFileId: number;\n private selectedRequestItemId: number;\n public selectedRequestItem: any;\n public selectedArtwork: any;\n public canUploadSelectedArtwork: boolean;\n public canReviewSelectedArtwork: boolean;\n public selectedVersion: any;\n public compareVersion: any;\n public readonly mode;\n public artworkFiles: Array;\n public versions: Array;\n public comparisonOn = false;\n public fileTypesToAccept: string[];\n public isRestrictionSizeWarningExist = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) config: ApprovalManagerConfig,\n private dialogRef: MatDialogRef,\n private overlay: Overlay,\n private actionsReasonService: ActionsReasonService,\n private element: ElementRef,\n private cd: ChangeDetectorRef,\n private pdfViewerService: PdfViewerService,\n private messageService: MessageService,\n private translate: TranslatePipe\n ) {\n this.approvalManagerService = config.approvalManagerService;\n this.selectedRequestItemId = config.selectedRequestItemId;\n this.selectedArtworkFileId = config.selectedArtworkFileId;\n this.fileTypesToAccept = config.fileTypesToAccept;\n this.restrictionOptions = config.restrictionOptions;\n this.mode = config.mode;\n this.pdfViewerService.approvalManagerService = this.approvalManagerService;\n }\n\n ngOnInit(): void {\n this.approvalManagerService.onRequestNameChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(requestName => {\n this.requestName = requestName;\n this.cd.markForCheck();\n });\n\n this.approvalManagerService.onRequestItemsChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(requestItems => {\n this.requestItems = requestItems || [];\n const selectedRequestItem = this.requestItems.find(item => item.id === this.selectedRequestItemId)\n || (this.requestItems.length ? this.requestItems[0] : null);\n const artworkFiles = this.getArtworkFiles(selectedRequestItem);\n const selectedArtworkFile = artworkFiles.find(item => item.id === this.selectedArtworkFileId)\n || (artworkFiles.length ? this.artworkFiles[0] : null);\n this.setSelectedRequestItem(selectedRequestItem, false);\n this.setSelectedArtworkFile(selectedArtworkFile);\n\n this.cd.markForCheck();\n });\n this.pdfViewerService.showViewer('approval-manager-pdf-viewer');\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getRequestItemLabel(item: any) {\n return this.approvalManagerService.getRequestItemLabel(item);\n }\n\n setSelectedRequestItem(item, propagateArtworkFile = true) {\n this.selectedRequestItem = item;\n this.artworkFiles = this.getArtworkFiles(this.selectedRequestItem);\n this.selectedRequestItemId = this.selectedRequestItem?.id || null;\n const selectedArtworkFile = this.artworkFiles.length ? this.artworkFiles[0] : null;\n if (propagateArtworkFile) {\n this.setSelectedArtworkFile(selectedArtworkFile);\n }\n }\n\n async setSelectedArtworkFile(file) {\n this.selectedArtwork = file;\n this.selectedArtworkFileId = this.selectedArtwork?.id || null;\n this.versions = this.getVersions(this.selectedArtwork);\n this.setSelectedVersion(this.getActiveVersion(this.versions));\n\n this.canUploadSelectedArtwork = await this.canUpload(this.selectedArtwork);\n this.canReviewSelectedArtwork = await this.canReview(this.selectedArtwork, this.selectedVersion);\n this.cd.markForCheck();\n }\n\n async setSelectedVersion(version) {\n const oldId = this.selectedVersion?.id;\n this.selectedVersion = version;\n this.canReviewSelectedArtwork = await this.canReview(this.selectedArtwork, this.selectedVersion);\n if (oldId !== version?.id) {\n this.pdfViewerService.setSelectedVersion(this.selectedVersion);\n }\n this.cd.markForCheck();\n }\n\n setCompareVersion(version) {\n const oldId = this.compareVersion?.id;\n this.compareVersion = version;\n if (oldId !== version?.id) {\n this.pdfViewerService.setCompareVersion(this.compareVersion);\n }\n this.cd.markForCheck();\n }\n\n async canReview(artworkFile: any, selectedVersion: any) {\n return artworkFile?.status === 'ACTIVE'\n && (selectedVersion.active && !selectedVersion.reviewFinalized)\n && await this.approvalManagerService.canApprove(this.mode);\n }\n\n async canUpload(artworkFile: any) {\n return await this.approvalManagerService.canUpload(this.mode)\n && artworkFile?.status === 'ACTIVE';\n }\n\n getLatestResolution(version) {\n return this.approvalManagerService.getLatestResolution(version);\n }\n\n close() {\n this.pdfViewerService.hideViewer();\n this.dialogRef.close();\n }\n\n review(selectedVersion: any, status: string) {\n const modalResult$ = status === ARTWORK_STATUSES.rejected ?\n this.openReasonModal(status === ARTWORK_STATUSES.rejected) : of(null);\n\n modalResult$.subscribe(data => {\n this.approvalManagerService.addVersionResolution(\n this.selectedRequestItem.id,\n this.selectedArtwork.id,\n selectedVersion.id,\n status,\n data?.comment,\n );\n\n this.cd.markForCheck();\n });\n }\n\n uploadVersion(file: File) {\n\n if (!UtilsService.fileTypeAccepted(file, this.fileTypesToAccept)) {\n this.messageService.showSystemMessage('error',\n this.translate.transform('common.errors.file-not-supported'));\n return;\n }\n this.isRestrictionSizeWarningExist = false;\n if (UtilsService.isFileFitsBySize(file.size, this.restrictionOptions)) {\n this.approvalManagerService.uploadVersion(this.selectedRequestItem.id, this.selectedArtwork.id, file);\n } else {\n this.isRestrictionSizeWarningExist = true;\n }\n }\n\n toggleComparison() {\n this.comparisonOn = !this.comparisonOn;\n this.pdfViewerService.enableCompareMode(this.comparisonOn);\n\n const selectedVersionIndex = this.versions.indexOf(this.selectedVersion);\n if (selectedVersionIndex > 0) {\n this.setCompareVersion(this.versions[selectedVersionIndex - 1]);\n } else {\n this.setCompareVersion(this.selectedVersion);\n }\n\n }\n\n downloadSelectedVersion() {\n this.approvalManagerService.downloadVersion(this.selectedVersion, this.selectedVersion?.attachment?.fileName);\n }\n\n downloadAllVersions() {\n this.versions.forEach((version) => {\n this.approvalManagerService.downloadVersion(version, version.attachment?.fileName);\n });\n }\n\n downloadSelectedVersionWithAnnotations() {\n this.pdfViewerService.triggerDownloadWithAnnotations(this.selectedVersion?.attachment?.fileName);\n }\n\n downloadAllVersionsWithAnnotations() {\n this.pdfViewerService.triggerDownloadAllWithAnnotations(this.versions);\n }\n\n isApproval() {\n return this.mode === 'approval' || this.mode === 'final-approval';\n }\n\n isDesign() {\n return this.mode === 'design';\n }\n\n private getArtworkFiles(item: any) {\n return item ? this.approvalManagerService.getArtworkFiles(item) || [] : [];\n }\n\n private getVersions(artwork: any) {\n return artwork ? this.approvalManagerService.getVersions(artwork, this.mode) || [] : [];\n }\n\n private getActiveVersion(versions) {\n return versions.find(version => version.active);\n }\n\n private getActiveVersionForFile(file) {\n return this.getVersions(file).find(version => version.active);\n }\n\n private openReasonModal(isReject: boolean) {\n this.actionsReasonService.setAction(isReject ? 'reject' : 'step-approve');\n this.actionsReasonService.setMainButtonTitle(isReject ? 'reject' : 'step-approve');\n this.actionsReasonService.setPosition('top');\n this.actionsReasonService.setIsRequired(isReject);\n\n const btnId = isReject ? 'appr_mgr_reject_btn' : 'appr_mgr_approve_btn';\n const origin: HTMLButtonElement = this.element.nativeElement.querySelector(`[data-test-id=\"${btnId}\"]`);\n\n const positionStrategy = this.overlay.position().flexibleConnectedTo(origin).withPositions(\n [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetX: -95, offsetY: 15 }\n ]);\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy,\n width: 380,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n const reasonPortal = new ComponentPortal(RequestActionReasonComponent);\n\n const ref = overlayRef.attach(reasonPortal);\n ref.instance.isRedConfirmButton = isReject;\n\n return this.actionsReasonService.getReason()\n .pipe(\n first(),\n tap(() => overlayRef.detach()),\n filter(data => data?.buttonClicked === 'confirm'),\n );\n }\n\n countFilesToApprove(artworkFiles) {\n return artworkFiles\n .map(file => this.getActiveVersionForFile(file))\n .map(activeVersion => this.getLatestResolution(activeVersion).status)\n .filter(status => status === 'UNREVIEWED')\n .length;\n }\n\n countRequestItems() {\n const filledRI = this.requestItems.filter(ri => this.getArtworkFiles(ri).length > 0);\n const approved = filledRI.filter(ri =>\n this.getArtworkFiles(ri)\n .map(file => this.approvalManagerService.getLatestResolution(this.getActiveVersionForFile(file)).status)\n .every(status => status === 'APPROVED'))\n .length;\n const rejectedOrApproved = filledRI.filter(ri =>\n this.getArtworkFiles(ri)\n .map(file => this.approvalManagerService.getLatestResolution(this.getActiveVersionForFile(file)).status)\n .every(status => status !== 'UNREVIEWED'))\n .length;\n return {\n inProgress: filledRI.length - rejectedOrApproved,\n rejected: rejectedOrApproved - approved,\n approved\n };\n\n }\n\n getLatestVersionComment(version) {\n const latestResolution = this.getLatestResolution(version);\n if (latestResolution.status === ARTWORK_STATUSES.rejected && !latestResolution.reviewer) {\n return 'Automatically rejected by the system';\n }\n return latestResolution.comment;\n }\n}\n","
\n
\n
\n
\n \n
\n
{{ 'common.approval-manager.request-name' | translate | uppercase }}
\n
\n {{ requestName }}\n
\n
\n
\n
\n
{{ 'common.approval-manager.select-item' | translate | uppercase }}
\n \n \n {{ getRequestItemLabel(selectedRequestItem) }}\n \n \n \n \n \n {{ getRequestItemLabel(item) }}\n \n \n
\n
\n
\n
\n \n
\n
\n\n \n {{ 'common.button.close' | translate }}\n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
{{ 'common.approval-manager.compare-to' | translate | uppercase }}
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n\n\n
\n \n \n \n {{ 'common.button.cancel-approval' | translate }}\n \n \n\n \n \n \n {{ 'common.button.cancel-rejection' | translate }}\n \n \n\n \n \n {{ 'common.button.step-approve' | translate }}\n \n \n \n {{ 'common.button.reject' | translate }}\n \n \n
\n
\n\n\n \n \n \n \n \n \n \n\n\n\n \n \n {{ 'common.button.compare' | translate }}\n \n \n \n \n\n\n\n \n \n \n \n \n\n\n\n \n \n \n \n \n\n\n\n
\n {{ countFilesToApprove(artworkFiles) }} / {{ artworkFiles.length }}\n {{ 'common.approval-manager.files-to-approve' | translate }}\n
\n \n \n \n {{ file.name }}\n \n \n
\n\n\n
\n
{{ 'common.approval-manager.version' | translate }}:
\n \n \n \n \n \n \n
\n
\n\n\n
\n
{{ 'common.approval-manager.version' | translate }}:
\n \n \n \n \n \n \n
\n
\n\n\n \n\n\n\n \n {{ 'common.approval-manager.version' | translate }} {{ index }}\n \n

\n \n {{ getLatestResolution(version).status }}\n \n

\n
\n\n\n In Progress\n Approved\n Rejected\n\n\n\n
\n \n \n {{ 'common.restrictions.file-size-exceeded' | translate : {size: restrictionOptions.sizeNumber + restrictionOptions.sizeType} }}\n \n
\n
\n","import {Injectable, TemplateRef} from '@angular/core';\nimport {ComponentType} from '@angular/cdk/overlay';\nimport {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport {NewRequestComponent} from '../../requests/components/new-request/new-request.component';\nimport {RequestNameFormComponent} from '../../requests/components/request-name-form/request-name-form.component';\nimport {ConfirmCloseModalComponent} from '../../requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component';\nimport {\n ApprovalManagerComponent,\n ApprovalManagerConfig\n} from '../components/approval-manager/approval-manager/approval-manager.component';\nimport { RequestTypeModel } from '../../requests/models/request-type.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n\n constructor(private dialog: MatDialog) { }\n\n public openNewRequestModal(requestTypes: RequestTypeModel[]): Observable<{ redirect: boolean; name: string; type: string }> {\n return this.openModal(\n NewRequestComponent, { requestTypes }, undefined, undefined, true,\n )\n .afterClosed()\n .pipe(\n filter(v => !!v),\n switchMap(({ type }) =>\n this.openRequestNameModal(undefined, type).pipe(\n map(value => ({ ...value, type })),\n )),\n );\n }\n\n public openRequestNameModal(name?: string, type?: string): Observable<{ redirect: boolean; name: string }> {\n return this.openModal(\n RequestNameFormComponent, { name, type }, undefined, false, true,\n )\n .afterClosed()\n .pipe(filter(v => !!v.name || v.redirect));\n }\n\n public openConfirmationModal(\n header: string,\n message: string,\n confirmBtn?: string,\n closeBtn?: string,\n shouldHideConfirmBtn?: boolean,\n ): MatDialogRef {\n return this.openModal(ConfirmCloseModalComponent, { header, message, confirmBtn, closeBtn, shouldHideConfirmBtn });\n }\n\n public openCloseModal(header: string, message: string): MatDialogRef {\n return this.openModal(ConfirmCloseModalComponent, { header, message, isCloseModal: true });\n }\n\n public openApprovalManager(approvalManagerConfig: ApprovalManagerConfig): MatDialogRef {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.panelClass = 'am-modal';\n config.backdropClass = 'am-modal-backdrop';\n config.position = {top: '0px'};\n config.maxWidth = '';\n config.data = {...approvalManagerConfig};\n return this.dialog.open(ApprovalManagerComponent, config);\n }\n\n public openModal(\n template: TemplateRef | ComponentType,\n data?: D,\n dialogClass?: string,\n autofocus: boolean = true,\n hasBackdrop: boolean = true,\n extra?: Partial\n ): MatDialogRef {\n const config = new MatDialogConfig();\n config.disableClose = true;\n config.autoFocus = autofocus;\n config.hasBackdrop = hasBackdrop;\n config.panelClass = dialogClass;\n if (extra) {\n Object.assign(config, extra);\n }\n config.data = {...data};\n\n return this.dialog.open(template, config);\n }\n}\n","import {Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {BehaviorSubject, ReplaySubject, Subject} from 'rxjs';\nimport {ApprovalManagerService} from './approval-manager/approval-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfViewerService {\n\n private compareModeSubject$ = new BehaviorSubject(false);\n private initializedSubject$ = new BehaviorSubject(false);\n private approvalManagerService$: ApprovalManagerService;\n private selectedVersionSubject$ = new ReplaySubject(1);\n private compareVersionSubject$ = new ReplaySubject(1);\n private downloadSubject$ = new Subject();\n private downloadAllSubject$ = new Subject();\n private renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n compareModeChanged() {\n return this.compareModeSubject$.asObservable();\n }\n\n enableCompareMode(turnOn: boolean) {\n this.compareModeSubject$.next(turnOn);\n }\n\n get approvalManagerService(): ApprovalManagerService {\n return this.approvalManagerService$;\n }\n\n set approvalManagerService(am: ApprovalManagerService) {\n this.approvalManagerService$ = am;\n }\n\n selectedVersionChanged() {\n return this.selectedVersionSubject$.asObservable();\n }\n\n compareVersionChanged() {\n return this.compareVersionSubject$.asObservable();\n }\n\n setSelectedVersion(version) {\n this.selectedVersionSubject$.next(version);\n }\n\n setCompareVersion(version) {\n this.compareVersionSubject$.next(version);\n }\n\n initializedChanged() {\n return this.initializedSubject$.asObservable();\n }\n\n showViewer(customClass: string = '') {\n if (!this.initializedSubject$.getValue()) {\n this.initializedSubject$.next(true);\n }\n const viewer = document.getElementById('pdf-viewer');\n this.renderer.removeClass(viewer, 'pdf-viewer-hidden');\n this.renderer.addClass(viewer, customClass);\n }\n\n hideViewer() {\n const viewer = document.getElementById('pdf-viewer');\n this.renderer.addClass(viewer, 'pdf-viewer-hidden');\n this.enableCompareMode(false);\n this.setSelectedVersion(null);\n this.setCompareVersion(null);\n }\n\n triggerDownloadWithAnnotations(fileName: string) {\n this.downloadSubject$.next(fileName);\n }\n\n triggerDownloadAllWithAnnotations(versions) {\n this.downloadAllSubject$.next(versions);\n }\n\n downloadClicked() {\n return this.downloadSubject$.asObservable();\n }\n\n getDownloadAllSubject() {\n return this.downloadAllSubject$.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport {\n AccountInfo,\n AuthenticationResult,\n EndSessionRequest,\n EventType,\n RedirectRequest,\n SilentRequest,\n} from '@azure/msal-browser';\nimport { Observable, of, ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class PitMsalService {\n private accountSubject!: ReplaySubject;\n constructor(private msalService: MsalService) {}\n getAccount(): AccountInfo {\n return this.msalService.instance.getAllAccounts()[0];\n }\n getAccount$(): Observable {\n const cachedAccount = this.msalService.instance.getAllAccounts();\n if (cachedAccount.length) {\n return of(this.getAccount());\n }\n if (this.accountSubject) {\n return this.accountSubject;\n }\n this.accountSubject = new ReplaySubject(1);\n this.msalService.instance.addEventCallback(event => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\n this.accountSubject.next(this.getAccount());\n }\n });\n return this.accountSubject;\n }\n logout(logoutRequest?: EndSessionRequest): Observable {\n return this.msalService.logout(logoutRequest);\n }\n acquireTokenSilent(silentRequest: SilentRequest): Observable {\n return this.msalService.acquireTokenSilent(silentRequest);\n }\n acquireTokenRedirect(request: RedirectRequest): Observable {\n return this.msalService.acquireTokenRedirect(request);\n }\n loginRedirect(request?: RedirectRequest): Observable {\n return this.msalService.loginRedirect(request);\n }\n handleRedirectObservable(hash?: string): Observable {\n return this.msalService.handleRedirectObservable(hash);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StateProviderService {\n private stateParamMap: Map = new Map();\n\n public getParam(path: string): any {\n return this.stateParamMap.get(path);\n }\n\n public putParam(path: string, param: any): void {\n this.stateParamMap.set(path, param);\n }\n\n public clearParam(path: string): void {\n this.stateParamMap.delete(path);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {UserService} from './user.service';\nimport {takeWhile, scan, take} from 'rxjs/operators';\nimport {merge, from, ReplaySubject} from 'rxjs';\nimport { AbstractRoleProvider } from '../../requests/classes/role-provider';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class UserPermissionsService {\n private userRoles: string[] = [];\n private userRolesSubject = new ReplaySubject(1);\n // tslint:disable-next-line:no-unused-variable\n private currentUserName: string;\n\n constructor(private userService: UserService) {\n this.setUserNameSubscription();\n }\n\n public setUserRoles(roles: string[]): void {\n this.userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public getUserRoles(): string[] {\n return this.userRoles;\n }\n\n public async isActionAvailable(permission: string|Array, roleProvider?: AbstractRoleProvider): Promise {\n const userRoles = await this.userRolesSubject.pipe(take(1)).toPromise();\n if (!permission?.length) {\n return true;\n }\n\n if (Array.isArray(permission)) {\n const permissionChecks = permission.map(p => from(this.isActionAvailable(p, roleProvider)));\n // actionAvailable\n return merge(...permissionChecks)\n .pipe(\n takeWhile(permissionAllowed => permissionAllowed !== true, true),\n scan((acc, permissionAllowed) => acc || permissionAllowed, false)\n ).toPromise();\n }\n const specificRoles = roleProvider ? await roleProvider.getRoles() : [];\n\n return [...specificRoles, ...userRoles].includes(permission);\n }\n private setUserNameSubscription(): void {\n this.userService.usernameChange()\n .subscribe(name => this.currentUserName = name);\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { finalize, shareReplay, takeUntil } from 'rxjs/operators';\nimport { API } from 'src/app/shared/constants/api.constants';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\nimport { UtilsService } from 'src/app/shared/services/utils.service';\n\nimport { ErrorHandlingHttpClient } from '../../../shared/services/error-handling-http-client.service';\nimport { LoaderService } from '../../../shared/services/loader.service';\nimport { SETTINGS_GROUPS, SettingsModalComponentData } from './settings-modal.model';\n\n\n@Component({\n selector: 'app-settings-modal',\n templateUrl: './settings-modal.component.html',\n styleUrls: ['./settings-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsModalComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadSettingsIntent = new BehaviorSubject(null);\n selectedIndex = [SETTINGS_GROUPS.EMAIL_SIGNATURE];\n settings$: Observable;\n settingsLoading$ = new BehaviorSubject(false);\n form!: FormGroup;\n testId = 'settings_modal';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) dialogData: SettingsModalComponentData,\n private errorHandlingHttpClient: ErrorHandlingHttpClient,\n private loaderService: LoaderService,\n private fb: FormBuilder,\n private messageService: MessageService,\n private translate: TranslateService\n ) {\n this.settings$ = this.errorHandlingHttpClient.get(API.userSettings());\n this.selectedIndex = [dialogData.section];\n }\n\n ngOnInit(): void {\n this.initForm();\n this.loadSettingsIntent.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.loaderService.showLoader();\n this.settings$\n .pipe(\n finalize(() => {\n this.loaderService.hideLoader();\n }),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n refCount: false,\n bufferSize: 1\n })\n )\n .subscribe(settings => {\n this.form.patchValue(settings);\n });\n });\n }\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private initForm() {\n this.form = this.fb.group({\n displayMode: this.fb.control(null),\n emailSignature: this.fb.control(null, [UtilsService.maxBytesLength(1 * 1000 * 1000, '1 MB')])\n });\n }\n\n async submitForm(selectedIndex) {\n switch (selectedIndex) {\n case SETTINGS_GROUPS.EMAIL_SIGNATURE: {\n try {\n const field = this.form.get('emailSignature');\n field.markAllAsTouched();\n if (field.valid) {\n this.loaderService.showLoader();\n await this.errorHandlingHttpClient\n .put(API.userEmailSignature(), {\n value: field.value || ''\n })\n .toPromise();\n\n this.messageService.showSystemMessage('success', 'Settings were successfully saved', '');\n } else {\n this.messageService.showSystemMessage(\n 'warning',\n this.translate.instant('common.modal.errors.invalid-form-header'),\n this.translate.instant('common.modal.errors.invalid-form-desc'),\n 5000\n );\n }\n } finally {\n this.loaderService.hideLoader();\n }\n }\n }\n }\n}\n","
\n \n
\n

{{ 'common.label.settings' | translate }}

\n
\n
\n
\n
\n \n \n settings\n Email\n \n \n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n \n {{ 'common.button.save' | translate }}\n \n
\n
\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { setUserTheme } from 'src/app/reducers/user/user.actions';\nimport { selectUserTheme } from 'src/app/reducers/user/user.selector';\n\nimport { SettingsModalComponent } from '../../nav-header/components/settings-modal/settings-modal.component';\nimport {\n SETTINGS_GROUPS,\n SettingsModalComponentData,\n} from '../../nav-header/components/settings-modal/settings-modal.model';\nimport { API } from '../constants/api.constants';\nimport { UserTheme } from '../models/user.model';\nimport { ErrorHandlingHttpClient } from './error-handling-http-client.service';\nimport { ModalService } from './modal-service.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserSettingsService {\n userTheme$ = this.store.select(selectUserTheme);\n\n constructor(private store: Store, private errorHandlingHttpClient: ErrorHandlingHttpClient, private modalService: ModalService) {}\n\n public static getLocalUserTheme() {\n try {\n return window.localStorage.getItem('fusion-produceit-user-theme') || UserTheme.LIGHT;\n } catch (e) {\n return UserTheme.LIGHT;\n }\n }\n\n public static setLocalUserTheme(newTheme: string): void {\n window.localStorage.setItem('fusion-produceit-user-theme', newTheme);\n }\n\n public initiate() {\n this.store.dispatch(setUserTheme({theme: UserSettingsService.getLocalUserTheme()}));\n }\n\n public setStoredUserTheme(newTheme: string) {\n UserSettingsService.setLocalUserTheme(newTheme);\n this.store.dispatch(setUserTheme({theme: newTheme}));\n }\n\n public updateUserTheme(theme) {\n return this.errorHandlingHttpClient\n .put(API.darkModeChange, {\n value: theme\n })\n .subscribe(() => {\n this.store.dispatch(setUserTheme({theme}));\n });\n }\n\n public getEmailSignature$(): Observable<{\n value: string;\n }> {\n return this.errorHandlingHttpClient.get(API.userEmailSignature());\n }\n\n public openModal(\n data = {\n section: SETTINGS_GROUPS.EMAIL_SIGNATURE\n }\n ) {\n return this.modalService.openModal(SettingsModalComponent, data, undefined, true, true, {\n width: `640px`\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { State } from '../../reducers';\nimport { resetUser, setUser, setUserSettings, setUserSubstitutees, setUserTheme } from '../../reducers/user/user.actions';\nimport { API } from '../constants/api.constants';\nimport { SystemUserModel, UserModel, UserTheme } from '../models/user.model';\nimport { PitMsalService } from './pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n /**\n * Compares target user against system user (logged in user) that may substitute other users.\n *\n * @returns boolean\n */\n static userApplicable(systemUser: SystemUserModel, targetUser: UserModel) {\n const targetUserLogin = targetUser?.userName || null;\n const systemUserLogins: string [] = [systemUser.userName, ...(systemUser.substitutedUsers || [])];\n\n return systemUserLogins.includes(targetUserLogin);\n }\n private nameSubject = new BehaviorSubject(null);\n private loggedInProduceit = new BehaviorSubject(false);\n private userDetails: SystemUserModel;\n private userDetailsSubject = new ReplaySubject(1);\n\n constructor(private http: HttpClient, private store: Store, private pitMsalService: PitMsalService) {}\n\n getCurrentUserName() {\n return window.localStorage.getItem('fusion-produceit-user');\n }\n\n public setCurrentUserName(newUserName: string): void {\n window.localStorage.setItem('fusion-produceit-user', newUserName);\n this.nameSubject.next(newUserName);\n this.store.dispatch(setUser({user: newUserName}));\n }\n\n usernameChange() {\n return this.nameSubject.asObservable();\n }\n\n authAccount$(): Observable {\n return this.pitMsalService.getAccount$();\n }\n\n login(): Observable {\n return this.authAccount$().pipe(switchMap(() => this.http.get(API.authorities, {})));\n }\n\n public resetUser(): void {\n window.localStorage.removeItem('fusion-produceit-user');\n window.localStorage.removeItem('REQUEST_LIST_FILTERS');\n this.store.dispatch(resetUser({user: null}));\n }\n\n setLoggedInProduceit(fullyLoaded: boolean): void {\n this.loggedInProduceit.next(fullyLoaded);\n }\n\n isLoggedInProduceit(): boolean {\n return this.loggedInProduceit.value;\n }\n\n getLoggedInProduceit() {\n return this.loggedInProduceit.asObservable();\n }\n\n updateUserDetails() {\n this.http.get(API.userDetails, {}).subscribe((userDetails: SystemUserModel) => {\n this.userDetails = userDetails;\n this.userDetailsSubject.next(userDetails);\n this.store.dispatch(setUserSubstitutees({substitutees: userDetails?.substitutedUsers || []}));\n this.store.dispatch(setUserTheme({theme: userDetails?.settings.displayMode || UserTheme.LIGHT}));\n this.store.dispatch(setUserSettings({settings: userDetails?.settings}));\n });\n }\n\n getUserDetails() {\n return cloneDeep(this.userDetails);\n }\n\n getUserDetails$() {\n return this.userDetailsSubject;\n }\n\n isMimicMode(authUserEmail: string): boolean {\n const realUserName = authUserEmail ? authUserEmail.substring(0, authUserEmail.indexOf('@')) : '';\n const mimicUserName = this.getCurrentUserName();\n return realUserName.toLocaleLowerCase() !== mimicUserName?.toLocaleLowerCase();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeNameModel } from '../models/code-name.model';\nimport { UserModel } from '../models/user.model';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { VersionAwareArtworkFile } from '../../requests/models/card-design-request.model';\nimport { ARTWORK_STATUSES } from '../../requests/constants/artwork-file-statuses.constants';\nimport { HttpHeaders } from '@angular/common/http';\nimport {ApprovalManagerService} from './approval-manager/approval-manager.service';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport isEqual from 'lodash/isEqual';\nimport { FileSizeRestriction } from '../models/upload-file-restrictions.model';\nimport BigJs from 'big.js';\nimport sortBy from 'lodash/sortBy';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor(private fb: FormBuilder) {}\n\n public static merchantValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (!control.value?.name) {\n return { required: true };\n }\n\n return null;\n };\n }\n\n public static userValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value && typeof(control.value) === 'string') {\n return { userValidator: true };\n }\n\n return null;\n };\n }\n\n public static availableQtyValidationFn(total: AbstractControl, formArr: FormArray): ValidatorFn {\n return (): { [key: string]: boolean } | null => {\n const sum = formArr.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0);\n if (Number(total.value) !== Number(sum)) {\n return { hasNotZeroSum: true };\n }\n\n return null;\n };\n }\n\n public static availableArrayQtyValidationFn(formGroup: FormGroup, formArr: FormArray): ValidatorFn {\n return (): { [key: string]: boolean } | null => {\n\n const versionQuantities = (formGroup.get('versionQuantities') as FormArray);\n const compareSum = versionQuantities.length ?\n versionQuantities.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0) :\n formGroup.get('productionQuantity').value;\n\n const sum = formArr.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0);\n if (Number(compareSum) !== Number(sum)) {\n return { hasNotZeroSum: true };\n }\n\n return null;\n };\n }\n\n public static multiplicityValidationFn(multiplier: number): ValidatorFn {\n return (control): { [key: string]: boolean } | null => {\n if (control.value === null || control.value === '') {\n return null;\n }\n\n const value = Number(control.value);\n if (value && !(value % multiplier)) {\n return null;\n }\n\n return { multiplicity: true };\n };\n }\n\n public static artworksApprovedValidationFn(approvalManagerService: ApprovalManagerService): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const { artworkFiles }: { artworkFiles: VersionAwareArtworkFile[]} = control.value;\n\n if (artworkFiles?.length) {\n const isAllApproved = approvalManagerService.getArtworkFileStatuses(artworkFiles)\n .every(status => status === ARTWORK_STATUSES.approved);\n return isAllApproved ? null : { notAllApproved: true };\n }\n\n return null;\n };\n }\n\n public static artworksNotRejectedValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const { artworkFiles }: { artworkFiles: VersionAwareArtworkFile[]} = control.value;\n\n if (artworkFiles?.length) {\n const isAnyRejected = artworkFiles.some(af =>\n af.versions[0].resolutions[0].status === ARTWORK_STATUSES.rejected);\n return isAnyRejected ? {rejected: isAnyRejected} : null;\n }\n\n return null;\n };\n }\n\n public static bulkFormValidationFn(validationObject): ValidatorFn {\n return (ac: AbstractControl) => {\n if (\n isEqual(ac.value, validationObject)\n ) {\n return {\n noChanges: true\n };\n }\n return null;\n };\n }\n\n public static isTrueExist(): ValidatorFn {\n return (arr: FormArray): { [key: string]: boolean } | null => {\n if (arr.value && !arr.value.includes(true)) {\n return { allInFalse: true };\n }\n\n return null;\n };\n }\n\n public static maxCalculationValidator(evaluator: (val: number) => number, max: number, fieldName: string) {\n return (ac: AbstractControl) => {\n if(ac?.value) {\n const actual = evaluator(ac.value);\n if(evaluator(ac.value) > max) {\n return {\n maxCalculation: {\n fieldName,\n max,\n actual\n }\n };\n }\n }\n return null;\n };\n }\n\n public static printerInfoValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value?.mdmId) {\n return null;\n }\n return { printerInfoValidator: true };\n };\n }\n\n public static startRangeValidationFn(endControl: AbstractControl): ValidatorFn {\n return (startControl: AbstractControl): { [key: string]: boolean } | null => {\n const { value: start }: { value: string | null } = startControl;\n const { value: end }: { value: string | null } = endControl;\n const bigStart = new BigJs(start || '0');\n const bigEnd = new BigJs(end || '0');\n\n if (start && end) {\n if (bigEnd.gt(bigStart) && start.length === end.length) {\n startControl.markAsUntouched();\n return null;\n }\n return { startRange: true };\n }\n\n return null;\n };\n }\n\n public static endRangeValidationFn(startControl: AbstractControl): ValidatorFn {\n return (endControl: AbstractControl): { [key: string]: boolean } | null => {\n const { value: start }: { value: string | null } = startControl;\n const { value: end }: { value: string | null } = endControl;\n const bigStart = new BigJs(start || '0');\n const bigEnd = new BigJs(end || '0');\n\n if (start && end) {\n if (bigEnd.gt(bigStart) && start.length === end.length) {\n endControl.markAsUntouched();\n return null;\n }\n return { endRange: true };\n }\n\n return null;\n };\n }\n\n public static packageIdTBDValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value?.toUpperCase() === 'TBD') {\n return { packageIdTBDValidator: true };\n }\n return null;\n };\n }\n\n public static checkboxTrueValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value === true) {\n return null;\n }\n return { checkboxTrueValidator: true };\n };\n }\n\n public static productionQtyValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const masterCaseSizeControl = control.parent?.get('masterCaseSize');\n if (control.value && masterCaseSizeControl?.value && control.value % masterCaseSizeControl?.value !== 0) {\n return { productionQtyValidator: true };\n }\n return null;\n\n };\n }\n\n public static cardProductionQtyValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const caseSizeControl = control.parent?.get('caseSize');\n if (control.value && caseSizeControl?.value && control.value % caseSizeControl?.value !== 0) {\n return { cardProductionQtyValidator: true };\n }\n return null;\n\n };\n }\n\n public static getFileNameFromHeaders(headers: HttpHeaders): string {\n return decodeURIComponent(headers.get('file-name'));\n }\n public static sortByFields(items: T[], sortFields: Array | ((val: any) => number)): T[] {\n return sortBy(items, sortFields);\n }\n\n public static isFileFitsBySize(bytes, fileSize: FileSizeRestriction): boolean {\n if (bytes === 0) {\n return true;\n }\n const k = 1024;\n const dm = 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const restrictionSizeTypeIndex = sizes.indexOf(fileSize.sizeType);\n\n const fileSizeTypeIndex = Math.floor(Math.log(bytes) / Math.log(k));\n\n if (fileSizeTypeIndex < restrictionSizeTypeIndex) {\n return true;\n }\n\n if (fileSizeTypeIndex > restrictionSizeTypeIndex) {\n return false;\n }\n\n if (fileSizeTypeIndex === restrictionSizeTypeIndex) {\n const revertedSize = parseFloat((bytes / Math.pow(k, fileSizeTypeIndex)).toFixed(dm));\n return revertedSize <= fileSize.sizeNumber;\n }\n }\n\n public static getFilesAggregatedStatus(files: Array): 'progress' | 'rejected' | 'approved' {\n if (files && files.length) {\n if (files.every(file => file.status === ARTWORK_STATUSES.rejected)) {\n return 'rejected';\n } else if (files.every(file => file.status === ARTWORK_STATUSES.approved)) {\n return 'approved';\n }\n }\n return 'progress';\n }\n\n public static maxBytesLength(maxBytesLength: number, maxBytesLabel: string) {\n return (ac: AbstractControl) => {\n const value = ac?.value;\n if(value && window.TextEncoder) {\n const encoder = new TextEncoder();\n const bytes = encoder.encode(value);\n\n if(bytes.length > maxBytesLength) {\n return {\n maxlength: {\n requiredLength: maxBytesLabel\n }\n };\n }\n }\n return null;\n };\n }\n\n public static getWarehouseName(warehouse: Partial): string {\n return warehouse?.name ?\n (typeof warehouse?.name === 'string' ? warehouse?.name : (warehouse?.name as Warehouse)?.name) :\n '';\n }\n\n public static fileTypeAccepted(file: File, fileTypesToAccept: string[]) {\n if (!fileTypesToAccept || fileTypesToAccept.length === 0) {\n return true;\n }\n const fileTypeAccepted = fileTypesToAccept.indexOf(file.type) > -1;\n const [,fileExtension] = /(?:\\.([^.]+))?$/.exec(file.name);\n const fileExtensionAccepted = fileTypesToAccept.indexOf(`.${fileExtension.toLowerCase()}`) > -1;\n\n return fileTypeAccepted || fileExtensionAccepted;\n }\n\n public static notEmptyValidator: ValidatorFn = (ac) => {\n const value = ac?.value || '';\n if(/^(\\s+\\S+\\s*)*(?!\\s).*$/.test(value)) {\n return null;\n }\n return {\n notEmpty: true\n };\n };\n\n public getItemName(array: Partial[], code: string): string {\n return array?.find(item => item.code === code)?.name || code;\n }\n\n public getFullUserName(user: UserModel): string {\n let fullName = '';\n if (user?.firstName) {\n fullName = `${user.firstName} `;\n }\n if (user?.lastName) {\n fullName += user.lastName;\n }\n return fullName.trim();\n }\n\n public static requiredIfSiblingTrue(siblingName: string): ValidatorFn {\n return (ac: AbstractControl) => {\n if (ac?.parent?.get(siblingName)?.valid && ac?.parent?.get(siblingName)?.value === true) {\n return Validators.required(ac);\n }\n return null;\n };\n }\n\n public getFormattedBytes(bytes: number, decimals = 2): string {\n if (bytes <= 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n }\n\n public getParentChild(data: any[]): any[] {\n const formatted = [];\n data.sort((a, b) => {\n const codeA = a.code.toUpperCase();\n const codeB = b.code.toUpperCase();\n if (codeA < codeB) { return -1; }\n if (codeA > codeB) {return 1; }\n return 0;\n });\n data.forEach(item => {\n if (item.code === 'PRJ' && item.name.indexOf('(PRJ)') === -1) {\n item.name += ' (PRJ)';\n }\n if (!item.parentCode) {\n formatted.push({...item, children: []});\n }\n });\n data.forEach(child => {\n if (child.parentCode) {\n formatted.find(parent => parent.code === child.parentCode)?.children.push(child);\n }\n });\n return formatted;\n }\n\n public getMerchantName(option: any, merchant?: FormGroup): string {\n if (option?.name) {\n return `${option.name} - ${option.fcmsId ? option.fcmsId : (option.mdmId ? option.mdmId : option.id)}`;\n }\n const id = merchant?.controls?.id?.value;\n const mdmId = merchant?.controls?.mdmId?.value;\n const fcmsId = merchant?.controls?.fcmsId?.value;\n if (option && typeof option === 'string' && (fcmsId || mdmId || id)) {\n return `${option} - ${fcmsId ? fcmsId : (mdmId ? mdmId : id)}`;\n } return '';\n\n }\n\n public sortAZNames(a, b): number {\n const nameA = a.name.toUpperCase();\n const nameB = b.name.toUpperCase();\n\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n }\n\n public sortByDate(a: Partial<{createdAt: string}>, b: Partial<{createdAt: string}>): number {\n const date1 = new Date(a.createdAt);\n const date2 = new Date(b.createdAt);\n\n return Number(date2) - Number(date1);\n }\n\n public codeNameMap(codeNames: CodeNameModel[]): { [key: string]: string } {\n return codeNames.reduce((acc, codeName) => ({...acc, [codeName.code]: codeName.name}), {});\n }\n\n public logInvalidControls(form: FormGroup, path: string = ''): void {\n const controls = form.controls;\n for (const name of Object.keys(controls)) {\n if ((controls[name] as FormGroup).controls) {\n this.logInvalidControls((controls[name] as FormGroup), [path, name].join('.'));\n } else {\n if (controls[name].invalid) {\n console.log('invalid ', [path, name].join('.'));\n }\n }\n }\n }\n\n public touchFormControls(form: FormGroup): void {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n if ((control as FormGroup).controls) {\n this.touchFormControls((control as FormGroup));\n } else if (control.pristine) {\n control.markAsTouched();\n if (key !== 'name' || (control.invalid && key === 'name')) {\n control.updateValueAndValidity({onlySelf: true, emitEvent: true});\n }\n }\n });\n }\n\n consoleListPrinters(printers: any[]): void {\n function isIncludesType(item, type) {\n return item.types.includes(type) ? '+' : null;\n }\n console.table([...printers].map(printer => ({\n name: printer.name,\n INTERNAL: isIncludesType(printer, 'INTERNAL'),\n EXTERNAL: isIncludesType(printer, 'EXTERNAL'),\n CERTIFIED_WRAP: isIncludesType(printer, 'CERTIFIED_WRAP'),\n CERTIFIED_MULTIPACK: isIncludesType(printer, 'CERTIFIED_MULTIPACK'),\n }))\n );\n }\n\n\n public setMerchantsDataToControls(reqItems, itemsControlsArray: FormArray): void {\n reqItems.forEach((item, idx) => {\n const itemForm = itemsControlsArray.at(idx);\n itemForm.patchValue(item);\n const merchantsArray = (itemForm.get('merchants') as FormArray);\n merchantsArray.clear();\n\n item.merchants.forEach(merchant => {\n merchantsArray.push(this.fb.group({\n id: this.fb.control(merchant.id),\n mdmId: this.fb.control(merchant.mdmId),\n name: this.fb.control({ name: merchant.name, id: merchant.fcmsId ? merchant.fcmsId : merchant.mdmId }),\n fcmsId: this.fb.control(merchant.fcmsId, Validators.required),\n country: this.fb.control(merchant.country, Validators.required),\n accountManagers: this.fb.array(merchant.accountManagers)\n }));\n });\n });\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule, CurrencyPipe, DatePipe} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport { QuillModule } from 'ngx-quill';\n\nimport {MaterialModule} from '../material.module';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgxDaterangepickerMd} from 'ngx-daterangepicker-material';\nimport {AppDateRangeComponent} from './components/app-date-range/app-date-range.component';\nimport {AppPopoverComponent} from './components/app-popover/app-popover.component';\nimport {HoverDirective} from './components/app-popover/toggle-popover.directive';\nimport {SelectSearchDropdownComponent} from './components/select-search-dropdown/select-search-dropdown.component';\nimport {FileUploaderComponent} from './components/file-uploader/file-uploader.component';\nimport {DndDirective} from './directives/dnd.directive';\nimport {AppInputFormComponent} from './components/app-input-form/app-input-form.component';\nimport {AccordionComponent} from './components/accordion/accordion.component';\nimport {TooltipDirective} from './directives/tooltip.directive';\nimport {FileDownloaderComponent} from './components/file-downloader/file-downloader.component';\nimport {CheckboxComponent} from './components/checkbox/checkbox.component';\nimport {RadioGroupComponent} from './components/radio-group/radio-group.component';\nimport {AppDatePickerComponent} from './components/app-date-picker/app-date-picker.component';\nimport {DatePickerHeaderComponent} from './components/app-date-picker/date-picker-header/date-picker-header.component';\nimport {AppCurrencyInputComponent} from './components/app-currency-input/app-currency-input.component';\nimport {InputSearchComponent} from './components/input-search/input-search.component';\nimport {SystemMessageComponent} from './components/system-message/system-message.component';\nimport {ButtonDropdownComponent} from './components/button-dropdown/button-dropdown.component';\nimport {MoreDetailsLinkComponent} from './components/more-details-link/more-details-link.component';\nimport {AutonumericModule} from '@angularfy/autonumeric';\nimport {AutonumericDirective} from './directives/autonumeric.directive';\nimport {InputSearchDropdownComponent} from './components/input-search-dropdown/input-search-dropdown.component';\nimport {AppSelectFormComponent} from './components/app-select-form/app-select-form.component';\nimport {FileSelectorComponent} from './components/file-selector/file-selector.component';\nimport {UserPermissionsDirective} from './directives/user-permissions.directive';\nimport {AppTextareaFormComponent} from './components/app-textarea-form/app-textarea-form.component';\nimport {MultiSelectSearchDropdownComponent} from './components/multiselect-search-dropdown/multiselect-search-dropdown.component';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {ClickNoSelectionDirective} from './directives/click-no-selection.directive';\nimport {RadioGroupFormComponent} from './components/radio-group-form/radio-group-form.component';\nimport {ApprovalManagerComponent} from './components/approval-manager/approval-manager/approval-manager.component';\nimport {PdfViewerComponent} from './components/approval-manager/pdf-viewer/pdf-viewer.component';\nimport {AppInputComponent} from './components/app-input/app-input.component';\nimport {DatePipeTz} from './pipes/date-pipe-tz.pipe';\nimport {AppArtworkItemComponent} from './components/app-artwork-item/app-artwork-item.component';\nimport {ArtworkItemStatusHeaderComponent} from './components/app-artwork-item/artwork-item-status-header/artwork-item-status-header.component';\nimport {AppDesignerAssignmentComponent} from './components/app-designer-assignment/app-designer-assignment.component';\nimport {TableComponent} from './components/table/table.component';\nimport {FileUploadProgressComponent} from './components/file-upload-progress/file-upload-progress.component';\nimport { OverlayscrollbarsModule } from 'overlayscrollbars-ngx';\nimport { InputChipsComponent } from './components/input-chips/input-chips.component';\nimport {ToastrModule} from 'ngx-toastr';\nimport { BackLinkComponent } from './components/back-link/back-link.component';\nimport { AppPercentInputComponent } from './components/app-percent-input/app-percent-input.component';\nimport { FilesApproveComponent } from './components/files-approve/files-approve.component';\nimport { ToSelectSearchDropdownOptions } from './pipes/to-select-search-dropdown-options.pipe';\nimport { ClickPreventDefaultDirective } from './directives/click-prevent-default.directive';\nimport { ClickStopPropagationDirective } from './directives/click-stop-propagation.directive';\nimport { JoinPipe } from './pipes/join.pipe';\nimport { AppInterceptableRadioGroupDirective } from './directives/interceptable-radio-group.directive';\nimport { RadioGroupFormConfirmComponent } from './components/radio-group-form-confirm/radio-group-form-confirm.component';\nimport { RichTextComponent } from './components/rich-text/rich-text.component';\nimport { QuillInputComponent } from './components/quill/quill.component';\nimport { CustomHintDirective } from './directives/custom-hint.directive';\nimport { UserAssignmentComponent } from './components/app-user-assignment/app-user-assignment.component';\nimport { UserPermissionsV2Directive } from './directives/user-permissions-v2.directive';\nimport { EasyAriaDirective } from './directives/easy-aria.directive';\n\n@NgModule({\n declarations: [\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n DndDirective,\n AppInputFormComponent,\n AccordionComponent,\n TooltipDirective,\n FileDownloaderComponent,\n CheckboxComponent,\n RadioGroupComponent,\n AppDatePickerComponent,\n DatePickerHeaderComponent,\n AppCurrencyInputComponent,\n InputSearchComponent,\n SystemMessageComponent,\n ButtonDropdownComponent,\n MoreDetailsLinkComponent,\n AutonumericDirective,\n MoreDetailsLinkComponent,\n InputSearchDropdownComponent,\n AppSelectFormComponent,\n UserPermissionsDirective,\n UserPermissionsV2Directive,\n AppTextareaFormComponent,\n ClickNoSelectionDirective,\n ClickPreventDefaultDirective,\n ClickStopPropagationDirective,\n RadioGroupFormComponent,\n RadioGroupFormConfirmComponent,\n ApprovalManagerComponent,\n PdfViewerComponent,\n AppInputComponent,\n DatePipeTz,\n ToSelectSearchDropdownOptions,\n ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n UserAssignmentComponent,\n TableComponent,\n FileUploadProgressComponent,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n JoinPipe,\n AppInterceptableRadioGroupDirective,\n RichTextComponent,\n QuillInputComponent,\n CustomHintDirective,\n EasyAriaDirective,\n ],\n imports: [\n CommonModule,\n MaterialModule,\n AutonumericModule.forRoot(),\n NgxMatSelectSearchModule,\n TranslateModule,\n ReactiveFormsModule,\n NgxDaterangepickerMd.forRoot(),\n FormsModule,\n OverlayModule,\n OverlayscrollbarsModule,\n ToastrModule.forRoot(),\n RouterModule,\n QuillModule.forRoot({\n customOptions: [\n {\n import: 'attributors/style/size',\n whitelist: ['0.75em', '1.125em', '1.5em', '2.5em']\n }\n ]\n }),\n ],\n exports: [\n MaterialModule,\n TranslateModule,\n AppInputFormComponent,\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n DndDirective,\n AccordionComponent,\n TooltipDirective,\n FileDownloaderComponent,\n CheckboxComponent,\n ReactiveFormsModule,\n RadioGroupComponent,\n AppDatePickerComponent,\n DatePickerHeaderComponent,\n AppCurrencyInputComponent,\n InputSearchComponent,\n ButtonDropdownComponent,\n MoreDetailsLinkComponent,\n InputSearchDropdownComponent,\n AppSelectFormComponent,\n UserPermissionsDirective,\n UserPermissionsV2Directive,\n AppTextareaFormComponent,\n ClickNoSelectionDirective,\n ClickPreventDefaultDirective,\n ClickStopPropagationDirective,\n RadioGroupFormComponent,\n RadioGroupFormConfirmComponent,\n AppInputComponent,\n DatePipe,\n DatePipeTz,\n ToSelectSearchDropdownOptions,\n PdfViewerComponent,\n ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n TableComponent,\n OverlayscrollbarsModule,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n JoinPipe,\n AutonumericDirective,\n AppInterceptableRadioGroupDirective,\n RichTextComponent,\n QuillInputComponent,\n CustomHintDirective,\n UserAssignmentComponent,\n EasyAriaDirective,\n ],\n providers: [\n CurrencyPipe,\n {\n provide: DatePipe,\n useClass: DatePipeTz\n },\n {\n provide: ToSelectSearchDropdownOptions,\n useClass: ToSelectSearchDropdownOptions\n }\n ]\n})\nexport class SharedModule { }\n","import {Component} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: []\n})\nexport class DashboardComponent {\n constructor(private titleService: Title) {\n this.titleService.setTitle('ProduceIT - Dashboard');\n }\n}\n","

dashboard works!

\n","import {Component} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-help',\n templateUrl: './help.component.html',\n styleUrls: []\n})\nexport class HelpComponent {\n constructor(private titleService: Title) {\n this.titleService.setTitle('ProduceIT - Help');\n }\n}\n","

help works!

\n
\n
\n
\n
\n\n","
\n
\n
\n \n
\n
\n \n

{{'common.errors.permission' | translate}}

\n

{{'common.errors.permission-desc' | translate}} \n {{'common.errors.back-to-list' | translate}}.

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

{{'common.errors.not-found' | translate}}

\n

{{'common.errors.permission-desc' | translate}} \n {{'common.errors.back-to-list' | translate}}.

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

{{'common.errors.authorization' | translate}}

\n
\n
\n
\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {StateProviderService} from '../../../shared/services/state-provider.service';\nimport {ERRORS, PAGES_CONFIG} from '../../../shared/constants/pages.constants';\n\n@Component({\n selector: 'app-error-page',\n templateUrl: './error-page.component.html',\n styleUrls: ['./error-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorPageComponent implements OnInit {\n\n constructor(private stateProviderService: StateProviderService) {}\n\n public permission = ERRORS.permission;\n public notFound = ERRORS.notFound;\n public requestsListLink = PAGES_CONFIG.REQUESTS;\n public errorType: string;\n\n ngOnInit(): void {\n this.errorType = this.stateProviderService.getParam('error');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {StateProviderService} from '../services/state-provider.service';\nimport {tap} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HasParamGuard implements CanActivate {\n\n constructor(private stateProviderService: StateProviderService,\n private router: Router) {\n }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n const requiredParams = next.data.requiredParams as Array;\n if (!requiredParams || !requiredParams.length) {\n return true;\n }\n\n const hasAllRequiredParams =\n requiredParams.map(param => this.stateProviderService.getParam(param)).every(value => !!value);\n return of(hasAllRequiredParams)\n .pipe(tap(skipRedirect => {\n if (!skipRedirect && next.data.navigateFallback) {\n this.router.navigate([next.data.navigateFallback]);\n }\n }));\n }\n\n}\n","export const environment = {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n appVersion: require('../../package.json').version,\n production: true,\n locales: ['en'],\n defaultLocale: 'en',\n commitId: 'cb987b4'\n};\n","import {HttpClient} from '@angular/common/http';\nimport {forkJoin, Observable, of, ReplaySubject} from 'rxjs';\nimport { catchError, map, tap, debounceTime } from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {TranslateLoader} from '@ngx-translate/core';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PitTranslateLoader implements TranslateLoader {\n constructor(private http: HttpClient) {}\n\n resources = [\n {prefix: '/assets/locale/', suffix: '.json'},\n {prefix: '/api/web/action-entries-', suffix: '.json'}\n ];\n private translationLoadedSubject = new ReplaySubject(1);\n translationLoaded$ = this.translationLoadedSubject.asObservable().pipe(debounceTime(0));\n\n public getTranslation(lang: string): Observable {\n return forkJoin(\n this.resources.map(config => this.http.get(`${config.prefix}${lang}${config.suffix}?v=${environment.appVersion}`).pipe(\n map(response => response),\n tap(\n () => {},\n e => {\n this.translationLoadedSubject.error(e);\n }\n ),\n catchError(() => of({}))\n ))\n ).pipe(\n map(response => response.reduce((a, b) => Object.assign(a, b), {})),\n tap(() => {\n this.translationLoadedSubject.next(true);\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {map, catchError} from 'rxjs/operators';\n\nimport {PitTranslateLoader} from '../services/pit-translate-loader.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationLoadedGuard implements CanActivate {\n constructor(public router: Router, private pitTranslateLoader: PitTranslateLoader) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n return this.pitTranslateLoader.translationLoaded$.pipe(\n map(() => true),\n catchError(() => of(this.router.createUrlTree(['/error'])))\n );\n }\n}\n","

Versions

\n
\n

UI-{{versions.ui}}

\n

BE-{{versions.api}}

\n

FN-{{versions.fn}}

\n

\n
\n\n

Loading versions...

\n
\n","import { Component, OnInit } from '@angular/core';\nimport {catchError, finalize} from 'rxjs/operators';\nimport {RequestsService} from '../../../requests/services/requests.service';\nimport {forkJoin, of} from 'rxjs';\nimport { EnvService } from '../../../env.service';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-version',\n templateUrl: './version.component.html'\n})\nexport class VersionComponent implements OnInit {\n\n constructor(private requestService: RequestsService, private envService: EnvService) { }\n\n readonly versions = {\n fn: '',\n api: '',\n ui: ''\n };\n\n public loading = false;\n\n ngOnInit(): void {\n this.updateVersions();\n }\n\n updateVersions(): void {\n this.loading = true;\n this.versions.ui = environment.appVersion + '-' + environment.commitId;\n forkJoin([\n this.requestService.getAPIversion().pipe(catchError(() => of(''))),\n this.requestService.getFnVersion().pipe(catchError(() => of(''))),\n // this.requestService.getUIversion().pipe(catchError(() => of(''))),\n ])\n .pipe(finalize(() => {\n this.loading = false;\n }))\n .subscribe(([apiVersion, fnVersion]) => {\n this.versions.api = apiVersion;\n this.versions.fn = fnVersion;\n // this.versions.ui = uiVersion;\n });\n }\n\n}\n","
\n
\n

\n

\n

\n {{'common.label.please'|translate}}\n \n \n {{'common.label.or'|translate}}\n \n \n

\n
\n
\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {StateProviderService} from '../../../shared/services/state-provider.service';\nimport {UserRoles} from '../../../shared/constants/user-roles.constant';\nimport {UserService} from '../../../shared/services/user.service';\nimport { PitMsalService } from '../../../shared/services/pit-msal.service';\n\n@Component({\n selector: 'app-error-auth',\n templateUrl: './error-auth.component.html',\n styleUrls: ['./error-auth.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorAuthComponent implements OnInit {\n\n constructor(\n private stateProviderService: StateProviderService,\n private userService: UserService,\n private authService: PitMsalService\n ) {}\n\n public currentUser: string;\n public userRoles = UserRoles;\n public get isMimicMode(): boolean {\n const realUserEmail = this.authService.getAccount()?.username;\n return this.userService.isMimicMode(realUserEmail);\n }\n\n ngOnInit(): void {\n this.currentUser = this.stateProviderService.getParam('user');\n }\n\n logout() {\n this.userService.resetUser();\n this.authService.logout();\n }\n\n resetMimic() {\n const userName1 = this.authService.getAccount()?.username;\n this.userService.setCurrentUserName(userName1.substring(0, userName1.indexOf('@')));\n window.location.reload();\n }\n}\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\n\nimport {DashboardComponent} from './dashboard/components/dashboard/dashboard.component';\nimport {HelpComponent} from './help/components/help/help.component';\n\nimport {PAGES_CONFIG} from './shared/constants/pages.constants';\nimport {AuthGuard} from './shared/guards/auth.guard';\nimport {ErrorPageComponent} from './error-page/components/error-page/error-page.component';\nimport {HasParamGuard} from './shared/guards/has-param.guard';\nimport {MsalGuard} from '@azure/msal-angular';\nimport { TranslationLoadedGuard } from './shared/guards/translation-loaded.guard';\nimport {VersionComponent} from './version/components/version/version.component';\nimport {ErrorAuthComponent} from './error-page/components/not-authorized/error-auth.component';\n\nconst routes: Routes = [\n {\n path: PAGES_CONFIG.REQUESTS,\n loadChildren: () => import('./requests/requests.module').then(m => m.RequestsModule),\n canActivate: [MsalGuard, AuthGuard]\n },\n {\n path: PAGES_CONFIG.DASHBOARD,\n component: DashboardComponent,\n canActivate: [MsalGuard, AuthGuard]\n },\n {\n path: PAGES_CONFIG.REPORTS,\n loadChildren: () => import('./reports/reports.module').then(m => m.ReportsModule),\n canActivate: [MsalGuard, AuthGuard, TranslationLoadedGuard]\n },\n {\n path: PAGES_CONFIG.HELP,\n component: HelpComponent\n },\n {\n path: PAGES_CONFIG.VERSIONS,\n component: VersionComponent\n },\n {\n path: PAGES_CONFIG.ERROR,\n component: ErrorPageComponent,\n canActivate: [HasParamGuard],\n data: {\n requiredParams: ['error'],\n navigateFallback: `/${PAGES_CONFIG.REQUESTS}`\n }\n },\n {\n path: PAGES_CONFIG.ERROR_AUTH,\n component: ErrorAuthComponent,\n canActivate: [HasParamGuard],\n data: {\n requiredParams: ['user'],\n navigateFallback: `/${PAGES_CONFIG.REQUESTS}`\n }\n },\n {\n path: '',\n redirectTo: `/${PAGES_CONFIG.REQUESTS}`,\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationInsights, IExceptionTelemetry } from '@microsoft/applicationinsights-web';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { EnvService } from '../../env.service';\nimport { filter } from 'rxjs/operators';\nimport {UserService} from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationInsightsService {\n private appInsights: ApplicationInsights;\n\n constructor(private router: Router,\n private userService: UserService,\n private env: EnvService) {\n\n this.appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: this.env.appInsightsKey\n }\n });\n\n this.appInsights.loadAppInsights();\n this.loadCustomTelemetryProperties();\n this.createRouterSubscription();\n\n this.setUserId(this.userService.getCurrentUserName());\n }\n\n setUserId(username: string) {\n this.appInsights.clearAuthenticatedUserContext();\n this.appInsights.setAuthenticatedUserContext(username);\n }\n\n clearUserId() {\n this.appInsights.clearAuthenticatedUserContext();\n }\n\n logPageView(name?: string, uri?: string) {\n this.appInsights.trackPageView({ name, uri});\n }\n\n logException(error: Error) {\n const exception: IExceptionTelemetry = {\n exception : error\n };\n this.appInsights.trackException(exception);\n }\n\n private loadCustomTelemetryProperties() {\n this.appInsights.addTelemetryInitializer(envelope => {\n const item = envelope.baseData;\n item.properties = item.properties || {};\n item.properties.ApplicationPlatform = 'WEB';\n item.properties.ApplicationName = 'ProduceIT-Fusion-UI';\n }\n );\n }\n\n private createRouterSubscription() {\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n this.logPageView(null, event.urlAfterRedirects);\n });\n }\n}\n","import { PAGES_CONFIG } from './pages.constants';\n\nexport interface NavigationItem {\n value: string;\n route: string;\n}\n\nexport const NAV_MENU: Array = [\n {\n value: 'dashboard',\n route: PAGES_CONFIG.DASHBOARD\n },\n {\n value: 'requests',\n route: PAGES_CONFIG.REQUESTS\n },\n {\n value: 'reports',\n route: PAGES_CONFIG.REPORTS\n },\n {\n value: 'help',\n route: PAGES_CONFIG.HELP\n }\n];\n","import { HttpClient } from '@angular/common/http';\n\nconst PROFILE_PICTURE_ENDPOINT = 'https://graph.microsoft.com/v1.0/me/photos/48x48/$value';\nexport interface ProfilePictureProviderInterface {\n getProfilePicture(): Promise;\n}\n\nexport class ProfilePictureProvider {\n constructor(private httpClient: HttpClient) {}\n\n async getProfilePicture(): Promise {\n /**\n * Important to use http client in order to catch errors\n */\n return this.httpClient\n .get(PROFILE_PICTURE_ENDPOINT, {\n responseType: 'blob'\n })\n .toPromise();\n }\n}\n\nfunction blobToBase64(blob) {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = function() {\n resolve(this.result);\n };\n reader.readAsDataURL(blob);\n });\n}\nfunction base64ToBlob(base64) {\n if (!fetch) {\n return null;\n }\n return fetch(base64).then(res => res.blob());\n}\n\nexport class ProfilePictureCacheWrapper {\n static TTL = 18 * 60 * 60 * 1000; // 18 hours local cache for user pictures\n constructor(private profilePictureProvider: ProfilePictureProviderInterface) {}\n async getProfilePicture(accountName: string): Promise {\n const accountCacheKey = `PROFILE_CACHE_${accountName}`;\n try {\n const cachedItem = localStorage.getItem(accountCacheKey);\n if (cachedItem != null) {\n const itemValue = JSON.parse(cachedItem);\n if (Date.now() < itemValue[0]) {\n return Promise.resolve(await base64ToBlob(itemValue[1]));\n }\n }\n const profilePicture = await this.profilePictureProvider.getProfilePicture();\n const base64ProfilePicture = await blobToBase64(profilePicture);\n localStorage.setItem(accountCacheKey, JSON.stringify([Date.now() + ProfilePictureCacheWrapper.TTL, base64ProfilePicture]));\n return profilePicture;\n } catch (e) {\n return null;\n }\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {Subject} from 'rxjs';\nimport {filter, take, takeUntil} from 'rxjs/operators';\nimport {UserService} from 'src/app/shared/services/user.service';\n\nimport {HttpClient} from '@angular/common/http';\nimport {ProfilePictureCacheWrapper, ProfilePictureProvider} from './profile-picture.provider';\n\n@Component({\n selector: 'app-nav-profile-picture',\n templateUrl: './nav-profile-picture.component.html',\n styleUrls: ['./nav-profile-picture.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NavProfilePictureComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n public userImage: SafeUrl;\n constructor(\n private sanitizer: DomSanitizer,\n private userService: UserService,\n private cd: ChangeDetectorRef,\n private httpClient: HttpClient\n ) {}\n\n ngOnInit(): void {\n this.userService\n .getLoggedInProduceit()\n .pipe(\n filter(l => !!l),\n take(1),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(async () => {\n try {\n const cachedWrapper = new ProfilePictureCacheWrapper(new ProfilePictureProvider(this.httpClient));\n\n const userImage: Blob = await cachedWrapper.getProfilePicture(this.userService.getCurrentUserName());\n if (userImage) {\n this.userImage = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(userImage));\n this.cd.markForCheck();\n }\n } catch (e) {\n console.log(e);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","
\n \n \"Profile\n
\n","
\n
\n
\n \n
\n
\n Fusion apps\n
\n
\n
    \n
  • OPS Desk
  • \n
  • CreateIt
  • \n
  • LaunchIt
  • \n
  • PlanIt
  • \n
  • ProduceIt
  • \n
  • PromoteIt
  • \n
  • MerchandiseIt
  • \n
  • ShipIt
  • \n
\n
\n
\n
\n
\n \n
{{'module.nav-header.appName' | translate}}
\n \n
\n
\n UI - {{version?.ui}}\n API - {{version?.api}}\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n \n \n \n
\n \n
\n {{getUserInfo()}}\n
\n

\n {{'common.label.dark-mode'|translate}}\n

\n

\n {{'common.label.reset-mimic-user'|translate}}\n

\n

\n {{'module.substitute.text.substitute-users'|translate}}\n

\n

\n {{'common.label.settings'|translate}}\n

\n

\n {{'common.label.log-out'|translate}}\n

\n
\n
\n
\n
\n

{{'common.label.mimic-mode'|translate}}

\n
\n\n\n
\n
\n \n
{{'module.nav-header.appName' | translate}}
\n
\n
\n \n Login\n
\n \n
\n Sign out\n and sign in again with a different Azure Active Directory user account.\n
\n
\n
\n
\n","import {NAV_MENU, NavigationItem} from '../../../shared/constants/navigation.constants';\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {of, Subscription, Subject} from 'rxjs';\nimport {ModalService} from '../../../shared/services/modal-service.service';\nimport {PAGES_CONFIG} from '../../../shared/constants/pages.constants';\nimport {Router} from '@angular/router';\nimport {RequestsService} from '../../../requests/services/requests.service';\nimport {UserService} from '../../../shared/services/user.service';\nimport {environment} from '../../../../environments/environment';\nimport {finalize, first, switchMap, takeUntil} from 'rxjs/operators';\nimport {UserRoles} from '../../../shared/constants/user-roles.constant';\nimport {EnvService} from '../../../env.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {FormGroup, FormControl} from '@angular/forms';\nimport {UserSettingsService} from 'src/app/shared/services/user-settings.service';\nimport {SystemUserModel, UserTheme} from 'src/app/shared/models/user.model';\nimport { UserPermissionsService } from 'src/app/shared/services/user-permissions.service';\n\n@Component({\n selector: 'app-nav-header-panel',\n templateUrl: './nav-header-panel.component.html',\n styleUrls: ['./nav-header-panel.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class NavHeaderPanelComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n @Input() public loggedIn: boolean;\n @Input() public allowAuthLogout: boolean;\n @Input() public displayName: string;\n @Input() public user: SystemUserModel;\n @Input() public isMimicMode: boolean;\n @Input() public authUserName: string;\n @Output() public loginClicked: EventEmitter = new EventEmitter();\n @Output() public logoutClicked: EventEmitter = new EventEmitter();\n @Output() public authLogout: EventEmitter = new EventEmitter();\n @Output() public resetMimicUser: EventEmitter = new EventEmitter();\n\n public isAppsMenuVisible = false;\n public navList: NavigationItem[] = NAV_MENU;\n public buttonLoader = false;\n public initialUserName: string;\n public userName: string;\n public loggedInProduceit: boolean;\n public version: {ui: string; api: string} = {ui: null, api: null};\n public userRoles = UserRoles;\n darkModeForm = new FormGroup({\n enableDarkMode: new FormControl(false)\n });\n\n private subscriptions: Array = [];\n public get substituteEnabled(): boolean {\n return this.env.substituteEnabled;\n }\n settingsVisible$: Promise;\n\n constructor(\n private modalService: ModalService,\n private router: Router,\n private requestService: RequestsService,\n public env: EnvService,\n private userService: UserService,\n private userSettingsService: UserSettingsService,\n private translateSerivce: TranslateService,\n private userPermissionsService: UserPermissionsService,\n ) {\n this.settingsVisible$ = Promise.all(Object.values({\n settings: this.userPermissionsService.isActionAvailable(this.userRoles.SETTINGS.EMAIL)\n })).then((values) => values.every(v => !!v));\n }\n\n ngOnInit(): void {\n this.version.ui = environment.appVersion + '-' + environment.commitId;\n this.initialUserName = this.userService.getCurrentUserName();\n this.userName = this.userService.getCurrentUserName();\n\n this.userService.authAccount$().pipe(switchMap(() => this.requestService.getAPIversion()))\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((apiVersion) => {\n this.version.api = apiVersion || this.version.api;\n });\n\n this.subscriptions.push(\n this.userService.usernameChange().subscribe(value => {\n this.initialUserName = value;\n this.userName = value;\n }),\n this.userService.getLoggedInProduceit().subscribe(loggedIn => {\n this.loggedInProduceit = loggedIn;\n })\n );\n\n this.userSettingsService.userTheme$.subscribe(theme => {\n if (theme === UserTheme.DARK) {\n this.darkModeForm.get('enableDarkMode').setValue(true, {emitEvent: false});\n } else {\n this.darkModeForm.get('enableDarkMode').setValue(false, {emitEvent: false});\n }\n });\n this.darkModeForm.get('enableDarkMode').valueChanges.subscribe(darkModeEnabled => {\n this.userSettingsService.updateUserTheme(darkModeEnabled ? UserTheme.DARK : UserTheme.LIGHT);\n });\n }\n\n public createNewRequest(): void {\n this.buttonLoader = true;\n\n this.requestService\n .createRequest()\n .pipe(\n finalize(() => (this.buttonLoader = false)),\n switchMap(requestTypes => this.modalService.openNewRequestModal(requestTypes)),\n switchMap(({name, type, redirect}) => {\n if (redirect) {\n return of({id: null});\n }\n return this.requestService.postCreateNewRequest(name, type);\n }),\n first()\n )\n .subscribe(({id}) => {\n if (id) {\n this.router.navigate([`/${PAGES_CONFIG.REQUESTS}`, id]);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach(sub => sub?.unsubscribe());\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n refreshUserName() {\n this.userService.setCurrentUserName(this.userName);\n window.location.reload();\n }\n\n logIn() {\n this.loginClicked.emit();\n }\n\n logOut() {\n this.logoutClicked.emit();\n }\n\n authLogOut() {\n this.authLogout.emit();\n }\n\n resetMimic() {\n this.resetMimicUser.emit();\n }\n\n substitute() {\n this.router.navigate([`/${PAGES_CONFIG.SUBSTITUTES}`]);\n }\n\n settings(): void {\n this.userSettingsService.openModal();\n }\n\n getUserInfo() {\n const substitutes = [...(this.user?.substitutedUsers || [])].join(', ');\n const mimicUser = this.initialUserName;\n\n return this.translateSerivce.instant(\n !substitutes.length\n ? `module.nav-header.user-title${mimicUser !== this.authUserName ? '-as' : ''}`\n : `module.nav-header.user-substituted${mimicUser !== this.authUserName ? '-as' : ''}`,\n {\n displayName: this.displayName,\n mimicUser,\n substitutes\n }\n );\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport WebViewer, {Annotations, CoreControls, WebViewerInstance, WebViewerOptions} from '@pdftron/webviewer';\nimport {Observable, Subject} from 'rxjs';\nimport {UserService} from '../../../services/user.service';\nimport {distinctUntilChanged, mergeMap, takeUntil} from 'rxjs/operators';\nimport {PdfViewerService} from '../../../services/pdf-viewer.service';\nimport {MessageService} from '../../../services/message-service.service';\nimport {FILE_SIZE_RESTRICTIONS} from '../../../models/upload-file-restrictions.model';\nimport {UtilsService} from '../../../services/utils.service';\nimport moment from 'moment';\nimport {TranslateService} from '@ngx-translate/core';\nimport {LoaderService} from '../../../services/loader.service';\nimport { UserTheme } from 'src/app/shared/models/user.model';\nimport { UserSettingsService } from 'src/app/shared/services/user-settings.service';\n\n@Component({\n selector: 'app-pdf-viewer',\n templateUrl: './pdf-viewer.component.html',\n styleUrls: ['./pdf-viewer.component.scss']\n})\nexport class PdfViewerComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly timeoutForIE = 50;\n private readonly env = '__env';\n private readonly restrictionOptions = FILE_SIZE_RESTRICTIONS.GLOBAL;\n private licenseKey = window[this.env]?.pdftronLicenseKey;\n private readonly webViewerConfig: WebViewerOptions= {\n path: '../webviewer',\n fullAPI: true,\n licenseKey: this.licenseKey,\n enableAzureWorkaround: true,\n disabledElements: [\n 'toolbarGroup-Edit',\n ]\n };\n\n @ViewChild('viewer', {static: false}) viewer: ElementRef;\n wvInstance: WebViewerInstance;\n @ViewChild('compareViewer', {static: false}) compareViewer: ElementRef;\n compareWvInstance: WebViewerInstance;\n\n compareMode = false;\n WebViewerFunc = WebViewer;\n currentVersionObs: Observable;\n compareVersionObs: Observable;\n downloadWithAnnotObs: Observable;\n downloadAllWithAnnotObs: Observable;\n\n currentVersion: any;\n compareVersion: any;\n initialized = false;\n private originalScroller: any;\n private scrollTimeout: any;\n private isDownloadAllInProgress: boolean;\n private ngUnsubscribe = new Subject();\n\n constructor(private userService: UserService,\n private pdfViewerService: PdfViewerService,\n private messageService: MessageService,\n private translateService: TranslateService,\n private loaderService: LoaderService,\n private cd: ChangeDetectorRef,\n private userSettingsService: UserSettingsService) {\n this.currentVersionObs = this.pdfViewerService.selectedVersionChanged();\n this.compareVersionObs = this.pdfViewerService.compareVersionChanged();\n this.downloadWithAnnotObs = this.pdfViewerService.downloadClicked();\n this.downloadAllWithAnnotObs = this.pdfViewerService.getDownloadAllSubject();\n }\n\n ngOnInit(): void {\n this.pdfViewerService.compareModeChanged()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => this.compareMode = value);\n }\n\n ngAfterViewInit() {\n this.pdfViewerService.initializedChanged()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value) => {\n if (value !== this.initialized && value === true) {\n this.initialized = true;\n this.cd.detectChanges();\n setTimeout(() => this.initializeViewers());\n }\n });\n }\n\n initializeViewers(): void {\n Promise.all([this.initMainViewer(), this.initCompareViewer()])\n .then(async () => {\n const vwInstances = [this.wvInstance, this.compareWvInstance];\n const viewers = [this.wvInstance.docViewer, this.compareWvInstance.docViewer];\n const docContainers = [\n this.viewer.nativeElement.querySelector('iframe').contentDocument.querySelector('.DocumentContainer'),\n this.compareViewer.nativeElement.querySelector('iframe').contentDocument.querySelector('.DocumentContainer')\n ];\n this.syncZoom(viewers, vwInstances);\n this.syncRotation(viewers);\n this.addScrollListener(docContainers);\n this.disableTools(vwInstances);\n this.initClips(vwInstances);\n this.initToolListeners(vwInstances);\n this.currentVersionObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((version) => {\n this.currentVersion = version;\n this.loadDoc(this.wvInstance, this.currentVersion);\n this.cd.detectChanges();\n });\n this.compareVersionObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((version) => {\n this.compareVersion = version;\n this.loadDoc(this.compareWvInstance, this.compareVersion);\n this.cd.detectChanges();\n });\n this.downloadWithAnnotObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((filename) => {\n this.downloadWithAnnotations(filename);\n });\n this.downloadAllWithAnnotObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((versions) => {\n this.downloadAllWithAnnotations(versions);\n });\n });\n }\n\n private initMainViewer(): Promise {\n return this.WebViewerFunc(this.webViewerConfig, this.viewer.nativeElement)\n .then(instance => {\n this.wvInstance = instance;\n this.userSettingsService.userTheme$.pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n instance.setTheme('dark');\n } else {\n instance.setTheme('light');\n }\n });\n\n instance.annotManager.on('annotationChanged',\n async (annotations: Annotations.Annotation[], action: string, {imported}) => {\n if (imported) {\n return;\n }\n const canAdd = await this.verifyAnnotationCanBeAdded(action, annotations, instance);\n if (canAdd) {\n this.updateAnnotations(instance.annotManager, this.currentVersion);\n }\n });\n\n instance.docViewer.on('documentLoaded', async () => {\n await this.initAnnotationUser(instance);\n this.loadAnnot(instance, instance.annotManager, this.currentVersion);\n });\n\n }\n );\n }\n\n private initCompareViewer(): Promise {\n return this.WebViewerFunc(this.webViewerConfig, this.compareViewer.nativeElement)\n .then(instance => {\n this.compareWvInstance = instance;\n\n this.userSettingsService.userTheme$.pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n instance.setTheme('dark');\n } else {\n instance.setTheme('light');\n }\n });\n\n instance.annotManager.on('annotationChanged',\n async (annotations: Annotations.Annotation[], action: string, {imported}) => {\n if (imported) {\n return;\n }\n const canAdd = await this.verifyAnnotationCanBeAdded(action, annotations, instance);\n if (canAdd) {\n this.updateAnnotations(instance.annotManager, this.compareVersion);\n }\n });\n\n instance.docViewer.on('documentLoaded', async () => {\n if (!this.isDownloadAllInProgress) {\n await this.initAnnotationUser(instance);\n\n this.loadAnnot(instance, instance.annotManager, this.compareVersion);\n }\n });\n }\n );\n }\n\n private async verifyAnnotationCanBeAdded(action: string, annotations: Annotations.Annotation[], instance) {\n if (action === 'add') {\n const fileAnnotations = annotations\n .filter(annotation => annotation.Subject === 'File Attachment');\n const lobs = await Promise.all(fileAnnotations\n .map((annotation: Annotations.FileAttachmentAnnotation) => annotation.getFileData()));\n if (lobs.some(lob => !UtilsService.isFileFitsBySize(lob.size, this.restrictionOptions))) {\n this.messageService.showSystemMessage(\n 'error',\n this.translateService.instant('common.errors.file-size-error'),\n this.translateService.instant('common.errors.file-size-limit',\n {sizeNumber: this.restrictionOptions.sizeNumber, sizeType: this.restrictionOptions.sizeType}));\n instance.annotManager.deleteAnnotations(fileAnnotations, false, true, false);\n return false;\n }\n }\n return true;\n }\n\n public downloadWithAnnotations(filename?: string) {\n this.wvInstance.downloadPdf({\n filename\n });\n }\n\n public async downloadAllWithAnnotations(versions): Promise {\n const downloadFile = async (version) => {\n const loadedSubject = new Subject();\n const onDocumentLoaderCallback = async () => {\n\n this.pdfViewerService.approvalManagerService\n .getComments(version)\n .pipe(mergeMap((text) => this.compareWvInstance.annotManager.importAnnotations(text).then(() => {\n this.compareWvInstance.downloadPdf({\n filename: version.attachment?.fileName,\n });\n })))\n .subscribe({\n complete: () => {\n this.compareWvInstance.docViewer.off('documentLoaded', onDocumentLoaderCallback);\n setTimeout(() => {\n loadedSubject.next(version);\n loadedSubject.complete();\n }, 1000);\n }\n });\n };\n\n this.compareWvInstance.docViewer.on('documentLoaded', onDocumentLoaderCallback);\n await this.loadDoc(this.compareWvInstance, version);\n\n return loadedSubject.toPromise();\n };\n this.isDownloadAllInProgress = true;\n try {\n for (const version of versions) {\n await downloadFile(version);\n }\n } catch (e) {\n console.error(e);\n } finally {\n this.isDownloadAllInProgress = false;\n }\n }\n\n private async loadDoc(wvInstance: WebViewerInstance, version) {\n if (!version) {\n await this.closeDocument(wvInstance);\n return;\n }\n\n const downloadRequest = await this.pdfViewerService.approvalManagerService.getDownloadRequest(version);\n const extension = this.pdfViewerService.approvalManagerService.getVersionFileExtension(version);\n\n if (['tif', 'tiff'].indexOf((extension.toLowerCase() || ''.toLowerCase())) === -1) {\n wvInstance.loadDocument(downloadRequest.url, {\n extension,\n filename: version.attachment?.fileName,\n customHeaders: downloadRequest.customHeaders\n });\n return;\n }\n const PDFNet = wvInstance.PDFNet;\n\n let newDoc;\n\n this.loaderService.showLoader();\n\n await PDFNet.runWithoutCleanup(() => PDFNet.PDFDoc.create()\n .then((doc) => {\n newDoc = doc;\n newDoc.initSecurityHandler();\n newDoc.lock();\n return PDFNet.Filter.createURLFilter(downloadRequest.url);\n })\n .then((tiffFile) => PDFNet.Convert.fromTiff(newDoc, tiffFile)).then(() => {\n newDoc.unlock();\n wvInstance.loadDocument(newDoc, {\n customHeaders: downloadRequest.customHeaders\n });\n }), this.licenseKey);\n\n this.loaderService.hideLoader();\n }\n\n\n private async initAnnotationUser(instance: WebViewerInstance) {\n const userDetails = this.userService.getUserDetails();\n const userName = userDetails ? `${userDetails.firstName} ${userDetails.lastName}` : 'Guest';\n instance.annotManager.setCurrentUser(userName);\n instance.annotManager.setReadOnly(!(await this.pdfViewerService.approvalManagerService.canAnnotate()));\n instance.disableElements(this.webViewerConfig.disabledElements);\n }\n\n private async closeDocument(wvInstance: WebViewerInstance) {\n wvInstance?.docViewer.closeDocument();\n await wvInstance?.closeDocument();\n }\n\n private updateAnnotations = async (annotManager, version) => {\n const xfdfString = await annotManager.exportAnnotations();\n this.pdfViewerService.approvalManagerService.saveComments(version, xfdfString)\n .subscribe(() => {\n console.log('comment saved!');\n });\n };\n\n private loadAnnot(instance: WebViewerInstance, annotManager: CoreControls.AnnotationManager, version) {\n if (!version) {\n return;\n }\n\n return this.pdfViewerService.approvalManagerService.getComments(version)\n .subscribe((text: string) => {\n annotManager.importAnnotations(text)\n .then(() => {\n console.log('annotations updated');\n });\n }, () => {\n annotManager.importAnnotations('')\n .then(() => {\n console.log('annotations created');\n });\n }, () => {\n if (window.localStorage.getItem(this.getLocalStorageOpenNotesKey(instance)) === 'true') {\n instance.openElements(['notesPanel']);\n }\n });\n }\n\n private getLocalStorageOpenNotesKey(instance: WebViewerInstance) {\n return instance.iframeWindow.frameElement.id + '_open';\n }\n\n private syncZoom(viewers, vwInstances) {\n viewers.forEach(viewer => {\n viewer.on('zoomUpdated', zoom => {\n vwInstances.forEach(instance => {\n if (instance.getZoomLevel() !== zoom) {\n instance.setZoomLevel(zoom);\n }\n });\n });\n });\n }\n\n private syncRotation(viewers) {\n viewers.forEach(docViewer => {\n docViewer.on('rotationUpdated', rotation => {\n viewers.forEach(viewer => {\n if (viewer.getRotation() !== rotation) {\n viewer.setRotation(rotation);\n }\n });\n });\n });\n }\n\n private addScrollListener(docContainers) {\n docContainers.forEach(documentContainer => {\n documentContainer.onscroll = () => {\n if (!this.originalScroller || this.originalScroller === documentContainer) {\n this.originalScroller = documentContainer;\n this.syncScrolls(docContainers, documentContainer.scrollLeft, documentContainer.scrollTop);\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(() => {\n this.originalScroller = null;\n }, this.timeoutForIE);\n }\n };\n });\n }\n\n private syncScrolls(docContainers, scrollLeft, scrollTop) {\n docContainers.forEach(documentContainer => {\n\n if (documentContainer.scrollLeft !== scrollLeft) {\n documentContainer.scrollLeft = scrollLeft;\n }\n\n if (documentContainer.scrollTop !== scrollTop) {\n documentContainer.scrollTop = scrollTop;\n }\n });\n }\n\n private initFileClip(instance: WebViewerInstance) {\n const tool = instance.docViewer.getTool('AnnotationCreateFileAttachment');\n tool.on('annotationAdded', async (annotation: Annotations.FileAttachmentAnnotation) => {\n instance.annotManager.selectAnnotation(annotation);\n instance.focusNote(annotation.Id);\n });\n\n function formatDate(annotation, dateAndTime) {\n if (annotation.DateModified) {\n dateAndTime.innerHTML = moment(annotation.DateModified.toUTCString())\n .format('MM/DD/YYYY, hh:mm a')\n .toUpperCase();\n } else {\n dateAndTime.innerHTML = '';\n }\n }\n\n instance.dangerouslySetNoteTransformFunction((wrapper, state, createElement) => {\n // Change the title of every note\n const annotation = state.annotation;\n if (annotation.Subject.toLowerCase() === 'file attachment') {\n const div = createElement('div');\n div.href = '#';\n div.style = 'line-height: 16px;' +\n 'display: flex;' +\n 'padding-top: 8px;' +\n 'align-items: center;';\n div.onclick = (e: MouseEvent) => {\n instance.annotManager.trigger('annotationDoubleClicked', state.annotation);\n e.preventDefault();\n };\n const fileMetadata = this.getMetadata(annotation);\n div.innerHTML = `${fileMetadata.filename}`;\n wrapper.querySelector('.author-and-date').append(div);\n }\n\n const dateAndTime = wrapper.querySelector('.date-and-time');\n formatDate(annotation, dateAndTime);\n\n if (annotation.getReplies() && annotation.getReplies().length) {\n annotation.getReplies().forEach((annotationReply, index) => {\n const replyDateContainer = wrapper.querySelector(`.replies .NoteContent:nth-child(${index + 1}) .date-and-time`);\n if (replyDateContainer) {\n formatDate(annotationReply, replyDateContainer);\n }\n });\n\n }\n\n });\n\n }\n\n private getMetadata(annotation: any) {\n return annotation.getFileMetadata();\n }\n\n private disableTools(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance) => {\n viewer.disableElements(['thumbnailControl', 'documentControl', ...this.webViewerConfig.disabledElements]);\n });\n }\n\n private initClips(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance) => {\n this.initFileClip(viewer);\n });\n }\n\n private initToolListeners(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance, index) => {\n const notesButton = viewer.iframeWindow.document.querySelector(`button[data-element='toggleNotesButton']`);\n notesButton.addEventListener('click', () => {\n setTimeout(() => window.localStorage.setItem(this.getLocalStorageOpenNotesKey(viewer),\n `${viewer.isElementOpen('notesPanel')}`), 500);\n });\n });\n }\n\n async ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n await this.disposeViewer(this.wvInstance);\n await this.disposeViewer(this.compareWvInstance);\n }\n\n private async disposeViewer(wvInstance: WebViewerInstance) {\n await this.closeDocument(wvInstance);\n wvInstance?.dispose();\n }\n\n}\n","
\n
\n\n
\n
\n","import {Component, ErrorHandler, Inject, OnDestroy, OnInit, Optional, Renderer2} from '@angular/core';\nimport {ApplicationInsightsService} from './shared/services/application-insights.service';\nimport { MsalBroadcastService as BroadcastService, MsalGuardConfiguration, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\nimport {Subscription} from 'rxjs';\nimport {UserService} from './shared/services/user.service';\nimport {LoaderService} from './shared/services/loader.service';\nimport {EnvService} from './env.service';\nimport FontFaceObserver from 'fontfaceobserver';\nimport { UserModel } from './shared/models/user.model';\nimport moment from 'moment';\nimport { UserSettingsService } from './shared/services/user-settings.service';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { UserTheme } from 'src/app/shared/models/user.model';\nimport { InteractionRequiredAuthError } from 'msal';\nimport { RedirectRequest } from '@azure/msal-browser';\nimport { PitMsalService } from './shared/services/pit-msal.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n providers: [ApplicationInsightsService]\n})\nexport class AppComponent implements OnInit, OnDestroy {\n\n public loggedIn = false;\n public allowLogout = false;\n private loginSubscription: Subscription;\n private logoutSubscription: Subscription;\n public displayName: string;\n public authUserName: string;\n public user: UserModel;\n public isLoader = false;\n public isMimicMode: boolean;\n public userDetails$ = this.userService.getUserDetails$();\n public year = moment().format('YYYY');\n\n // tslint:disable-next-line:no-unused-variable\n constructor(private appInsightsService: ApplicationInsightsService,\n private broadcastService: BroadcastService,\n private authService: PitMsalService,\n private errorHandler: ErrorHandler,\n private userService: UserService,\n private userSettingsService: UserSettingsService,\n private loaderService: LoaderService,\n private envService: EnvService,\n private renderer: Renderer2,\n @Optional() @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration) {\n const materialIcons = new FontFaceObserver('Material Icons');\n materialIcons.load(null, 10000)\n .then(() => this.renderer.addClass(document.body, `material-icons-loaded`))\n .catch(() => this.renderer.addClass(document.body, `material-icons-error`));\n }\n\n ngOnInit() {\n this.checkAccount();\n\n this.loginSubscription = this.broadcastService.msalSubject$.pipe(\n filter(e => e.eventType === 'msal:loginSuccess'),\n map(e => e.error)\n ).subscribe(() => {\n this.checkAccount();\n });\n let logoutErrorsCount = 0;\n this.logoutSubscription = this.broadcastService.msalSubject$.pipe(\n filter(e => e.eventType === 'msal:acquireTokenFailure'),\n map(e => e.error)\n ).subscribe((error) => {\n console.warn(error);\n if (error instanceof InteractionRequiredAuthError && logoutErrorsCount === 0) {\n logoutErrorsCount++;\n return;\n }\n this.logoutSubscription.unsubscribe();\n if (this.msalGuardConfig?.authRequest) {\n this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest);\n } else {\n this.authService.loginRedirect();\n }\n });\n\n this.authService.handleRedirectObservable(window.location.hash).subscribe({\n error: (authError) => {\n if (authError) {\n this.allowLogout = true;\n this.errorHandler.handleError(authError);\n }\n }\n });\n\n this.loaderService.spinnerStatus.subscribe(async state => {\n await Promise.resolve();\n this.isLoader = state;\n });\n\n this.checkMimic();\n }\n\n login() {\n this.allowLogout = false;\n\n if (this.msalGuardConfig?.authRequest) {\n this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest);\n } else {\n this.authService.loginRedirect();\n }\n }\n\n logout() {\n this.userService.resetUser();\n this.authLogout();\n }\n\n authLogout() {\n this.authService.logout();\n }\n\n checkAccount() {\n this.loggedIn = !!this.authService.getAccount();\n if (!this.loggedIn) {\n return;\n }\n this.displayName = this.authService.getAccount()?.name;\n const currentUserName = this.userService.getCurrentUserName();\n if (!currentUserName) {\n this.setAuthUserName();\n } else {\n this.userService.setCurrentUserName(currentUserName);\n }\n\n this.userSettingsService.initiate();\n const userTheme$ = this.userSettingsService.userTheme$;\n userTheme$.pipe(\n distinctUntilChanged(),\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n if (document.querySelector('[id=\"dark-mode-styles\"]') == null) {\n const link = document.createElement( 'link' );\n link.href = 'dark-mode.css?v=' + environment.appVersion;\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.media = 'screen';\n link.id = 'dark-mode-styles';\n\n const head = document.getElementsByTagName( 'head' )[0];\n const primaryStyles = head.querySelector('[href*=\"styles\"]');\n try {\n head.insertBefore(link, primaryStyles.nextSibling);\n } catch (e) {\n head.appendChild(link);\n }\n }\n } else if(document.querySelector('[id=\"dark-mode-styles\"]')) {\n document.querySelector('[id=\"dark-mode-styles\"]').remove();\n }\n document.body.setAttribute('data-theme', userTheme.toLowerCase());\n });\n\n const userName1 = this.authService.getAccount()?.username;\n if (userName1) {\n const authUserName = userName1.substring(0, userName1.indexOf('@'));\n this.authUserName = authUserName;\n }\n\n this.checkMimic();\n }\n\n resetMimicUser(): void {\n this.setAuthUserName();\n window.location.reload();\n }\n\n private checkMimic(): void {\n const realUserEmail = this.authService.getAccount()?.username;\n this.isMimicMode = this.userService.isMimicMode(realUserEmail);\n }\n\n private setAuthUserName(): void {\n const userName1 = this.authService.getAccount()?.username;\n this.userService.setCurrentUserName(userName1.substring(0, userName1.indexOf('@')));\n }\n\n ngOnDestroy(): void {\n this.loginSubscription?.unsubscribe();\n this.logoutSubscription?.unsubscribe();\n }\n\n}\n","
\n \n\n
\n \n
\n
\n
Copyright © {{ year }} InComm. All Rights Reserved
\n
\n \n ADA\n accessibility statement\n \n
\n
\n\n
\n \n \n \n
\n
\n
\n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\nimport {SharedModule} from '../shared/shared.module';\n\n\n@NgModule({\n declarations: [DashboardComponent],\n imports: [\n CommonModule,\n SharedModule\n ]\n})\nexport class DashboardModule { }\n","import { EnvService } from './env.service';\n\nexport const EnvServiceFactory = () => {\n const env = new EnvService();\n\n const envKey = '__env';\n const browserWindow = window || {};\n const browserWindowEnv = browserWindow[envKey] || {};\n\n for (const key in browserWindowEnv) {\n // eslint-disable-next-line no-prototype-builtins\n if (browserWindowEnv.hasOwnProperty(key)) {\n env[key] = window[envKey][key];\n }\n }\n\n return env;\n};\n\nexport const EnvServiceProvider = {\n provide: EnvService,\n useFactory: EnvServiceFactory,\n deps: [],\n};\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ErrorPageComponent} from './components/error-page/error-page.component';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {SharedModule} from '../shared/shared.module';\nimport {ErrorAuthComponent} from './components/not-authorized/error-auth.component';\n\n@NgModule({\n declarations: [ErrorPageComponent, ErrorAuthComponent],\n imports: [CommonModule, SharedModule],\n providers: [TranslatePipe]\n})\nexport class ErrorPageModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HelpComponent } from './components/help/help.component';\nimport {SharedModule} from '../shared/shared.module';\nimport {FormsModule} from '@angular/forms';\n\n\n\n@NgModule({\n declarations: [HelpComponent],\n imports: [\n CommonModule,\n SharedModule,\n FormsModule\n ]\n})\nexport class HelpModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NavHeaderPanelComponent} from './components/nav-header-panel/nav-header-panel.component';\nimport {RouterModule} from '@angular/router';\n\nimport {SharedModule} from '../shared/shared.module';\nimport {MaterialModule} from '../material.module';\nimport {FormsModule} from '@angular/forms';\nimport { NavProfilePictureComponent } from './components/nav-profile-picture/nav-profile-picture.component';\nimport { SettingsModalComponent } from './components/settings-modal/settings-modal.component';\nimport {MatListModule} from '@angular/material/list';\n\n\n@NgModule({\n declarations: [NavHeaderPanelComponent, NavProfilePictureComponent, SettingsModalComponent],\n exports: [\n NavHeaderPanelComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SharedModule,\n MaterialModule,\n FormsModule,\n MatListModule,\n ]\n})\nexport class NavHeaderModule { }\n","import { createAction, props } from '@ngrx/store';\nimport { Substitute } from '../../shared/models/substitute.model';\nimport type { SubstituteScope } from './substitute.reducer';\n\nexport const SUBSTITUTE_ACTION_LOAD = '[Substitute] Load Substitutes';\nexport const SUBSTITUTE_ACTION_RELOAD = '[Substitute] Reload Substitutes';\nexport const SUBSTITUTE_ACTION_SUCCESS = '[Substitute] Load Substitutes Success';\nexport const SUBSTITUTE_ACTION_FAILURE = '[Substitute] Load Substitutes Failure';\nexport const SUBSTITUTE_ACTION_DELETE = '[Substitute] Delete Substitute';\n\nexport const loadSubstitutes = createAction(\n SUBSTITUTE_ACTION_LOAD,\n props<{ scope: SubstituteScope }>(),\n);\nexport const reloadSubstitutes = createAction(\n SUBSTITUTE_ACTION_RELOAD\n);\nexport const loadSubstitutesSuccess = createAction(\n SUBSTITUTE_ACTION_SUCCESS,\n props<{ data: Substitute[] }>(),\n);\nexport const loadSubstitutesFailure = createAction(\n SUBSTITUTE_ACTION_FAILURE,\n props<{ error: Error }>(),\n);\nexport const deleteSubstitute = createAction(\n SUBSTITUTE_ACTION_DELETE,\n props<{ userName?: string; substituteUserName: string; scope: SubstituteScope }>(),\n);\n\n\n\n\n","import {createReducer, on} from '@ngrx/store';\n\nimport {Substitute} from '../../shared/models/substitute.model';\nimport {deleteSubstitute, loadSubstitutes, loadSubstitutesFailure, loadSubstitutesSuccess, reloadSubstitutes} from './substitute.actions';\n\nexport const substituteFeatureKey = 'substitute';\n\nexport type SubstituteScope = 'my' | 'all';\n\nexport interface SubstituteState {\n data: Substitute[];\n loading: boolean;\n loaded: boolean;\n error: Error;\n scope: SubstituteScope;\n}\n\nexport const substituteInitialState: SubstituteState = {\n data: [],\n loading: false,\n loaded: false,\n error: null,\n scope: 'my'\n};\n\nexport const substituteReducer = createReducer(\n substituteInitialState,\n\n on(loadSubstitutes, (state, action) => ({\n ...state,\n data: null,\n loading: true,\n error: null,\n loaded: false,\n scope: action.scope\n })),\n on(reloadSubstitutes, state => ({...state, data: null, loading: true, error: null, loaded: false})),\n on(loadSubstitutesSuccess, (state, action) => ({\n ...state,\n data: action.data,\n loading: false,\n error: null,\n loaded: true\n })),\n on(loadSubstitutesFailure, (state, action) => ({\n ...state,\n data: null,\n loading: false,\n error: action.error,\n loaded: true\n })),\n on(deleteSubstitute, state => ({\n ...state,\n loading: true,\n loaded: true\n }))\n);\n","import { ActionReducerMap, MetaReducer } from '@ngrx/store';\n\nimport {\n refDataInitialState,\n refDataReducer,\n requestRefDataFeatureKey,\n RequestRefDataState,\n} from './ref-data/refdata.reducer';\nimport {\n substituteFeatureKey,\n substituteInitialState,\n substituteReducer,\n SubstituteState,\n} from './substitute/substitute.reducer';\nimport { userFeatureKey, userInitialState, userReducer, UserState } from './user/user.reducer';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface State {\n [userFeatureKey]: UserState;\n [requestRefDataFeatureKey]: RequestRefDataState;\n [substituteFeatureKey]: SubstituteState;\n}\n\nexport const reducers: ActionReducerMap = {\n [userFeatureKey]: userReducer,\n [requestRefDataFeatureKey]: refDataReducer,\n [substituteFeatureKey]: substituteReducer\n};\n\nexport const initialState = {\n [userFeatureKey]: userInitialState,\n [requestRefDataFeatureKey]: refDataInitialState,\n [substituteFeatureKey]: substituteInitialState\n};\n\nexport const metaReducers: MetaReducer[] = [];\n","import {HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {select, Store} from '@ngrx/store';\nimport {EMPTY, of} from 'rxjs';\nimport {catchError, exhaustMap, map, tap, withLatestFrom} from 'rxjs/operators';\nimport {API} from 'src/app/shared/constants/api.constants';\nimport {ErrorHandlingHttpClient} from 'src/app/shared/services/error-handling-http-client.service';\n\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {PopItemTypeModel} from '../../requests/models/pop-design-request.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {\n lazyLoadPaymentTypes,\n loadPaymentTypes,\n loadPaymentTypesFailure,\n loadPaymentTypesSuccess,\n loadFSPaymentTypes,\n loadFSPaymentTypesSuccess,\n loadFSPaymentTypesFailure,\n lazyLoadFSPaymentTypes,\n loadPopChannelTypes,\n loadPopChannelTypesSuccess,\n loadPopChannelTypesFailure,\n lazyLoadPopChannelTypes,\n loadPopProdUsageDurationTypes,\n loadPopProdUsageDurationTypesSuccess,\n loadPopProdUsageDurationTypesFailure,\n lazyLoadPopProdUsageDurationTypes,\n loadDielines,\n loadDielinesSuccess,\n loadDielinesFailure,\n lazyLoadDielines,\n loadDataPinFileTypes,\n loadDataPinFileTypesSuccess,\n loadDataPinFileTypesFailure,\n lazyLoadDataPinFileTypes,\n loadSubstrates,\n loadSubstratesSuccess,\n loadSubstratesFailure,\n lazyLoadSubstrates,\n loadRedemptionTypes,\n loadRedemptionTypesSuccess,\n loadRedemptionTypesFailure,\n lazyLoadRedemptionTypes,\n loadRequestItemTypes,\n loadRequestItemTypesSuccess,\n loadRequestItemTypesFailure,\n lazyLoadRequestItemTypes,\n loadRegions,\n loadRegionsSuccess,\n loadRegionsFailure,\n lazyLoadRegions,\n loadWarehouses,\n loadWarehousesSuccess,\n loadWarehousesFailure,\n lazyLoadWarehouses,\n loadCompanies,\n loadCompaniesSuccess,\n loadCompaniesFailure,\n lazyLoadCompanies,\n loadPartnerGroups,\n loadPartnerGroupsSuccess,\n loadPartnerGroupsFailure,\n lazyLoadPartnerGroups,\n loadDesignLineOfBusiness,\n loadDesignLineOfBusinessSuccess,\n loadDesignLineOfBusinessFailure,\n lazyLoadDesignLineOfBusiness,\n loadArtLocationsTypes,\n loadArtLocationsTypesSuccess,\n loadArtLocationsTypesFailure,\n lazyLoadArtLocationsTypes,\n loadDesignSourceTypes,\n loadDesignSourceTypesSuccess,\n loadDesignSourceTypesFailure,\n lazyLoadDesignSourceTypes,\n loadChannelTypes,\n loadChannelTypesSuccess,\n loadChannelTypesFailure,\n lazyLoadChannelTypes,\n loadInventoryTypes,\n loadInventoryTypesSuccess,\n loadInventoryTypesFailure,\n lazyLoadInventoryTypes,\n loadComponentTypes,\n loadComponentTypesSuccess,\n loadComponentTypesFailure,\n lazyLoadComponentTypes,\n loadPopItemTypes,\n loadPopItemTypesSuccess,\n loadPopItemTypesFailure,\n lazyLoadPopItemTypes,\n loadColorTypes,\n loadColorTypesSuccess,\n loadColorTypesFailure,\n lazyLoadColorTypes,\n loadDimensionTypes,\n loadDimensionTypesSuccess,\n loadDimensionTypesFailure,\n lazyLoadDimensionTypes,\n loadFinancialTypes,\n loadFinancialTypesSuccess,\n loadFinancialTypesFailure,\n lazyLoadFinancialTypes,\n loadPopProdEventTypes,\n loadPopProdEventTypesSuccess,\n loadPopProdEventTypesFailure,\n lazyLoadPopProdEventTypes,\n loadPopProdFundingTypes,\n loadPopProdFundingTypesSuccess,\n loadPopProdFundingTypesFailure,\n lazyLoadPopProdFundingTypes,\n loadPopProdItemTypes,\n loadPopProdItemTypesSuccess,\n loadPopProdItemTypesFailure,\n lazyLoadPopProdItemTypes,\n loadPopProdCuttingTypes,\n loadPopProdCuttingTypesSuccess,\n loadPopProdCuttingTypesFailure,\n lazyLoadPopProdCuttingTypes,\n loadPopProdMaterialTypes,\n loadPopProdMaterialTypesSuccess,\n loadPopProdMaterialTypesFailure,\n lazyLoadPopProdMaterialTypes,\n loadPopProdTapeTypes,\n loadPopProdTapeTypesSuccess,\n loadPopProdTapeTypesFailure,\n lazyLoadPopProdTapeTypes,\n loadPopProdInventoryTypes,\n loadPopProdInventoryTypesSuccess,\n loadPopProdInventoryTypesFailure,\n lazyLoadPopProdInventoryTypes,\n loadPrinters,\n loadPrintersSuccess,\n loadPrintersFailure,\n lazyLoadPrinters,\n loadBifComponentTypes,\n loadBifComponentTypesSuccess,\n loadBifComponentTypesFailure,\n lazyLoadBifComponentTypes,\n loadBifFulfillmentTypes,\n loadBifFulfillmentTypesSuccess,\n loadBifFulfillmentTypesFailure,\n lazyLoadBifFulfillmentTypes,\n loadThirdPartyOrderTypes,\n loadThirdPartyOrderTypesSuccess,\n loadThirdPartyOrderTypesFailure,\n lazyLoadThirdPartyOrderTypes,\n loadThirdPartyDataPinFileTypes,\n loadThirdPartyDataPinFileTypesSuccess,\n loadThirdPartyDataPinFileTypesFailure,\n lazyLoadThirdPartyDataPinFileTypes,\n loadThirdPartyPrintOwnerTypes,\n loadThirdPartyPrintOwnerTypesSuccess,\n loadThirdPartyPrintOwnerTypesFailure,\n lazyLoadThirdPartyPrintOwnerTypes,\n loadIhComponents,\n loadIhComponentsSuccess,\n loadIhComponentsFailure,\n lazyLoadIhComponents,\n loadIhHealthPlans,\n loadIhHealthPlansSuccess,\n loadIhHealthPlansFailure,\n lazyLoadIhHealthPlans,\n loadIhHealthPrograms,\n loadIhHealthProgramsSuccess,\n loadIhHealthProgramsFailure,\n lazyLoadIhHealthPrograms,\n loadIhPriorities,\n loadIhPrioritiesSuccess,\n loadIhPrioritiesFailure,\n lazyLoadIhPriorities,\n loadReturnFileTypes,\n loadReturnFileTypesSuccess,\n loadReturnFileTypesFailure,\n lazyLoadReturnFileTypes,\n loadImageFormatTypes,\n loadImageFormatTypesSuccess,\n loadImageFormatTypesFailure,\n lazyLoadImageFormatTypes\n} from './refdata.actions';\nimport {refDataInitialState as refdataInitialState} from './refdata.reducer';\nimport {\n selectArtLocationTypes,\n selectBifComponentTypes,\n selectBifFulfillmentTypes,\n selectChannelTypes,\n selectColorTypes,\n selectCompanies,\n selectComponentTypes,\n selectDataPinFileTypes,\n selectDesignLineOfBusiness,\n selectDesignSourceTypes,\n selectDielines,\n selectDimensionTypes,\n selectFinancialTypes,\n selectFSPaymentTypes,\n selectIhComponents,\n selectIhHealthPlans,\n selectIhHealthPrograms,\n selectIhPriorities,\n selectImageFormatTypes,\n selectInventoryTypes,\n selectPartnerGroups,\n selectPaymentTypes,\n selectPopChannelTypes,\n selectPopItemTypes,\n selectPopProdCuttingTypes,\n selectPopProdEventTypes,\n selectPopProdFundingTypes,\n selectPopProdInventoryTypes,\n selectPopProdItemTypes,\n selectPopProdMaterialTypes,\n selectPopProdTapeTypes,\n selectPopProdUsageDurationTypes,\n selectPrinters,\n selectRedemptionTypes,\n selectRegions,\n selectRequestItemTypes,\n selectReturnFileTypes,\n selectSubstrates,\n selectThirdPartyDataPinFileTypes,\n selectThirdPartyOrderTypes,\n selectThirdPartyPrintOwnerTypes,\n selectWarehouses\n} from './refdata.selectors';\n\n@Injectable()\nexport class RequestRefDataEffects {\n constructor(\n private errorHandlingHttpClient: ErrorHandlingHttpClient,\n private actions$: Actions,\n private store: Store,\n private utilsService: UtilsService\n ) {}\n\n /**\n * PaymentTypes\n */\n loadPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPaymentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.paymentTypes}`).pipe(\n map(data => loadPaymentTypesSuccess({paymentTypes: data})),\n catchError(() => of(loadPaymentTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPaymentTypes),\n withLatestFrom(this.store.select(selectPaymentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.paymentTypes === storedData) {\n return of(loadPaymentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Financial Service PaymentTypes\n */\n loadFSPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadFSPaymentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.fsPaymentTypes}`).pipe(\n map(data => loadFSPaymentTypesSuccess({fsPaymentTypes: data})),\n catchError(() => of(loadFSPaymentTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadFSPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadFSPaymentTypes),\n withLatestFrom(this.store.select(selectFSPaymentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.fsPaymentTypes === storedData) {\n return of(loadFSPaymentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Dielines\n */\n loadDielines$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDielines),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.dielines}`).pipe(\n map(data => loadDielinesSuccess({dielines: data})),\n catchError(() => of(loadDielinesFailure()))\n )\n )\n )\n );\n\n lazyLoadDielines$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDielines),\n withLatestFrom(this.store.select(selectDielines)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dielines === storedData) {\n return of(loadDielines());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DataPinFileTypes\n */\n loadDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDataPinFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.dataPINfileTypes}`).pipe(\n map(data => loadDataPinFileTypesSuccess({dataPinFileTypes: data})),\n catchError(() => of(loadDataPinFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDataPinFileTypes),\n withLatestFrom(this.store.select(selectDataPinFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dataPinFileTypes === storedData) {\n return of(loadDataPinFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Substrates\n */\n loadSubstrates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadSubstrates),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.substrates}`).pipe(\n map(data => loadSubstratesSuccess({substrates: data})),\n catchError(() => of(loadSubstratesFailure()))\n )\n )\n )\n );\n lazyLoadSubstrates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadSubstrates),\n withLatestFrom(this.store.select(selectSubstrates)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.substrates === storedData) {\n return of(loadSubstrates());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * RedemptionTypes\n */\n loadRedemptionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRedemptionTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.redemptionTypes}`).pipe(\n map(data => loadRedemptionTypesSuccess({redemptionTypes: data})),\n catchError(() => of(loadRedemptionTypesFailure()))\n )\n )\n )\n );\n lazyLoadRedemptionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRedemptionTypes),\n withLatestFrom(this.store.select(selectRedemptionTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.redemptionTypes === storedData) {\n return of(loadRedemptionTypes());\n }\n return EMPTY;\n })\n )\n );\n /**\n * RequestItemTypes\n */\n loadRequestItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRequestItemTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.requestItemsTypes}`).pipe(\n map(data => loadRequestItemTypesSuccess({requestItemTypes: data})),\n catchError(() => of(loadRequestItemTypesFailure()))\n )\n )\n )\n );\n lazyLoadRequestItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRequestItemTypes),\n withLatestFrom(this.store.select(selectRequestItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.requestItemTypes === storedData) {\n return of(loadRequestItemTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Regions\n */\n loadRegions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRegions),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.regions}`).pipe(\n map(data => loadRegionsSuccess({regions: data})),\n catchError(() => of(loadRegionsFailure()))\n )\n )\n )\n );\n lazyLoadRegions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRegions),\n withLatestFrom(this.store.select(selectRegions)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.regions === storedData) {\n return of(loadRegions());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Warehouses\n */\n loadWarehouses$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadWarehouses),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.warehouses}`).pipe(\n map(data =>\n loadWarehousesSuccess({\n warehouses: [...data].sort(this.utilsService.sortAZNames)\n })\n ),\n catchError(() => of(loadWarehousesFailure()))\n )\n )\n )\n );\n lazyLoadWarehouses$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadWarehouses),\n withLatestFrom(this.store.select(selectWarehouses)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.warehouses === storedData) {\n return of(loadWarehouses());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Companies\n */\n loadCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadCompanies),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.companies}`).pipe(\n map(data => loadCompaniesSuccess({companies: data})),\n catchError(() => of(loadCompaniesFailure()))\n )\n )\n )\n );\n lazyLoadCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadCompanies),\n withLatestFrom(this.store.select(selectCompanies)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.companies === storedData) {\n return of(loadCompanies());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PartnerGroups\n */\n loadPartnerGroups$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPartnerGroups),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.lineOfBusinessTypes}`).pipe(\n map(data => loadPartnerGroupsSuccess({partnerGroups: data})),\n catchError(() => of(loadPartnerGroupsFailure()))\n )\n )\n )\n );\n lazyLoadPartnerGroups$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPartnerGroups),\n withLatestFrom(this.store.select(selectPartnerGroups)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.partnerGroups === storedData) {\n return of(loadPartnerGroups());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DesignLineOfBusiness\n */\n loadDesignLineOfBusiness$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDesignLineOfBusiness),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.designLineOfBusinessTypes}`).pipe(\n map(data => loadDesignLineOfBusinessSuccess({designLineOfBusiness: data})),\n catchError(() => of(loadDesignLineOfBusinessFailure()))\n )\n )\n )\n );\n lazyLoadDesignLineOfBusiness$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDesignLineOfBusiness),\n withLatestFrom(this.store.select(selectDesignLineOfBusiness)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.designLineOfBusiness === storedData) {\n return of(loadDesignLineOfBusiness());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ArtLocationTypes\n */\n loadArtLocationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadArtLocationsTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.artLocationTypes}`).pipe(\n map(data => loadArtLocationsTypesSuccess({artLocationTypes: data})),\n catchError(() => of(loadArtLocationsTypesFailure()))\n )\n )\n )\n );\n lazyLoadArtLocationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadArtLocationsTypes),\n withLatestFrom(this.store.select(selectArtLocationTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.artLocationTypes === storedData) {\n return of(loadArtLocationsTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DesignSourceTypes\n */\n loadDesignSourceTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDesignSourceTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.designSourceTypes}`).pipe(\n map(data => loadDesignSourceTypesSuccess({designSourceTypes: data})),\n catchError(() => of(loadDesignSourceTypesFailure()))\n )\n )\n )\n );\n lazyLoadDesignSourceTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDesignSourceTypes),\n withLatestFrom(this.store.select(selectDesignSourceTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.designSourceTypes === storedData) {\n return of(loadDesignSourceTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ChannelTypes\n */\n loadChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadChannelTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.chnTypes}`).pipe(\n map(data => loadChannelTypesSuccess({channelTypes: data})),\n catchError(() => of(loadChannelTypesFailure()))\n )\n )\n )\n );\n lazyLoadChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadChannelTypes),\n withLatestFrom(this.store.select(selectChannelTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.channelTypes === storedData) {\n return of(loadChannelTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopChannelTypes\n */\n loadPopChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopChannelTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.popChannelTypes}`).pipe(\n map(data => loadPopChannelTypesSuccess({popChannelTypes: data})),\n catchError(() => of(loadPopChannelTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopChannelTypes),\n withLatestFrom(this.store.select(selectPopChannelTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popChannelTypes === storedData) {\n return of(loadPopChannelTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * InventoryTypes\n */\n loadInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadInventoryTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.inventoryTypes}`).pipe(\n map(data => loadInventoryTypesSuccess({inventoryTypes: data})),\n catchError(() => of(loadInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadInventoryTypes),\n withLatestFrom(this.store.select(selectInventoryTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.inventoryTypes === storedData) {\n return of(loadInventoryTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ComponentTypes\n */\n loadComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadComponentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.fsComponentTypes}`).pipe(\n map(data => loadComponentTypesSuccess({componentTypes: data})),\n catchError(() => of(loadComponentTypesFailure()))\n )\n )\n )\n );\n lazyLoadComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadComponentTypes),\n withLatestFrom(this.store.select(selectComponentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.componentTypes === storedData) {\n return of(loadComponentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopItemTypes\n */\n loadPopItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopItemTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.popItemTypes).pipe(\n map(data => loadPopItemTypesSuccess({popItemTypes: data})),\n catchError(() => of(loadPopItemTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopItemTypes),\n withLatestFrom(this.store.select(selectPopItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popItemTypes === storedData) {\n return of(loadPopItemTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ColorTypes\n */\n loadColorTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadColorTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.colorTypes).pipe(\n map(data => loadColorTypesSuccess({colorTypes: data})),\n catchError(() => of(loadColorTypesFailure()))\n )\n )\n )\n );\n lazyLoadColorTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadColorTypes),\n withLatestFrom(this.store.select(selectColorTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.colorTypes === storedData) {\n return of(loadColorTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DimensionTypes\n */\n loadDimensionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDimensionTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.dimensionTypes).pipe(\n map(data => loadDimensionTypesSuccess({dimensionTypes: data})),\n catchError(() => of(loadDimensionTypesFailure()))\n )\n )\n )\n );\n lazyLoadDimensionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDimensionTypes),\n withLatestFrom(this.store.select(selectDimensionTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dimensionTypes === storedData) {\n return of(loadDimensionTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * FinancialTypes\n */\n loadFinancialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadFinancialTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.financialTypes).pipe(\n map(data => loadFinancialTypesSuccess({financialTypes: data})),\n catchError(() => of(loadFinancialTypesFailure()))\n )\n )\n )\n );\n lazyLoadFinancialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadFinancialTypes),\n withLatestFrom(this.store.select(selectFinancialTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.financialTypes === storedData) {\n return of(loadFinancialTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdEventTypes\n */\n loadPopProdEventTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdEventTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppEventTypes).pipe(\n map(data => loadPopProdEventTypesSuccess({popProdEventTypes: data})),\n catchError(() => of(loadPopProdEventTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdEventTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdEventTypes),\n withLatestFrom(this.store.select(selectPopProdEventTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdEventTypes === storedData) {\n return of(loadPopProdEventTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdFundingTypes\n */\n loadPopProdFundingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdFundingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppFundingTypes).pipe(\n map(data => loadPopProdFundingTypesSuccess({popProdFundingTypes: data})),\n catchError(() => of(loadPopProdFundingTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdFundingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdFundingTypes),\n withLatestFrom(this.store.select(selectPopProdFundingTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdFundingTypes === storedData) {\n return of(loadPopProdFundingTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdUsageDurationTypes\n */\n loadPopProdUsageDurationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdFundingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppUsageDurationTypes).pipe(\n map(data => loadPopProdUsageDurationTypesSuccess({popUsageDurationTypes: data})),\n catchError(() => of(loadPopProdUsageDurationTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdUsageDurationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdUsageDurationTypes),\n withLatestFrom(this.store.select(selectPopProdUsageDurationTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popUsageDurationTypes === storedData) {\n return of(loadPopProdUsageDurationTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdItemTypes\n */\n loadPopProdItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdItemTypes),\n exhaustMap(() => {\n const params = new HttpParams().append('productionOnlyIncluded', 'true');\n return this.errorHandlingHttpClient.get(API.popItemTypes, {params}).pipe(\n map(data => loadPopProdItemTypesSuccess({popProdItemTypes: data})),\n catchError(() => of(loadPopProdItemTypesFailure()))\n );\n })\n )\n );\n\n lazyLoadPopProdItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdItemTypes),\n withLatestFrom(this.store.select(selectPopProdItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdItemTypes === storedData) {\n return of(loadPopProdItemTypes());\n }\n return EMPTY;\n })\n )\n );\n /**\n * PopProdCuttingTypes\n */\n loadPopProdCuttingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdCuttingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppCuttingTypes).pipe(\n map(popProdCuttingTypes => loadPopProdCuttingTypesSuccess({popProdCuttingTypes})),\n catchError(() => of(loadPopProdCuttingTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdCuttingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdCuttingTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdCuttingTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdCuttingTypes === storedData ? of(loadPopProdCuttingTypes()) : EMPTY))\n )\n );\n /**\n * PopProdMaterialTypes\n */\n loadPopProdMaterialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdMaterialTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppMaterialTypes).pipe(\n map(popProdMaterialTypes => loadPopProdMaterialTypesSuccess({popProdMaterialTypes})),\n catchError(() => of(loadPopProdMaterialTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdMaterialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdMaterialTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdMaterialTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdMaterialTypes === storedData ? of(loadPopProdMaterialTypes()) : EMPTY))\n )\n );\n /**\n * PopProdTapeTypes\n */\n loadPopProdTapeTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdTapeTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppTapeTypes).pipe(\n map(popProdTapeTypes => loadPopProdTapeTypesSuccess({popProdTapeTypes})),\n catchError(() => of(loadPopProdTapeTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdTapeTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdTapeTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdTapeTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdTapeTypes === storedData ? of(loadPopProdTapeTypes()) : EMPTY))\n )\n );\n /**\n * PopProdInventoryTypes\n */\n loadPopProdInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdInventoryTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppInventoryTypes).pipe(\n map(data => loadPopProdInventoryTypesSuccess({popProdInventoryTypes: data})),\n catchError(() => of(loadPopProdInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopProdInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdInventoryTypes),\n withLatestFrom(this.store.select(selectPopProdInventoryTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdInventoryTypes === storedData) {\n return of(loadPopProdInventoryTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Printers\n */\n loadPrinters$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPrinters),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.printers).pipe(\n tap(data => this.utilsService.consoleListPrinters(data)),\n map(data =>\n loadPrintersSuccess({\n printers: [...data].sort(this.utilsService.sortAZNames)\n })\n ),\n catchError(() => of(loadPrintersFailure()))\n )\n )\n )\n );\n lazyLoadPrinters$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPrinters),\n withLatestFrom(this.store.select(selectPrinters)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.printers === storedData) {\n return of(loadPrinters());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * BifComponentTypes\n */\n loadBifComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadBifComponentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.bifComponentTypes}`).pipe(\n map(data => loadBifComponentTypesSuccess({bifComponentTypes: data})),\n catchError(() => of(loadBifComponentTypesFailure()))\n )\n )\n )\n );\n lazyLoadBifComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadBifComponentTypes),\n withLatestFrom(this.store.select(selectBifComponentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.bifComponentTypes === storedData) {\n return of(loadBifComponentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * BifFulfillmentTypes\n */\n loadBifFulfillmentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadBifFulfillmentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.bifFulfillmentTypes}`).pipe(\n map(data => loadBifFulfillmentTypesSuccess({bifFulfillmentTypes: data})),\n catchError(() => of(loadBifFulfillmentTypesFailure()))\n )\n )\n )\n );\n lazyLoadBifFulfillmentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadBifFulfillmentTypes),\n withLatestFrom(this.store.select(selectBifFulfillmentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.bifFulfillmentTypes === storedData) {\n return of(loadBifFulfillmentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyOrderTypes\n */\n loadThirdPartyOrderTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyOrderTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyOrderTypes}`).pipe(\n map(data => loadThirdPartyOrderTypesSuccess({thirdPartyOrderTypes: data})),\n catchError(() => of(loadThirdPartyOrderTypesFailure()))\n )\n )\n )\n );\n lazyThirdPartyOrderTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyOrderTypes),\n withLatestFrom(this.store.select(selectThirdPartyOrderTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyOrderTypes === storedData) {\n return of(loadThirdPartyOrderTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyDataPinFileTypes\n */\n loadThirdPartyDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyDataPinFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyDataPinFileTypes}`).pipe(\n map(data => loadThirdPartyDataPinFileTypesSuccess({thirdPartyDataPinFileTypes: data})),\n catchError(() => of(loadThirdPartyDataPinFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadThirdPartyDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyDataPinFileTypes),\n withLatestFrom(this.store.select(selectThirdPartyDataPinFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyDataPinFileTypes === storedData) {\n return of(loadThirdPartyDataPinFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyPrintOwnerTypes\n */\n loadThirdPartyPrintOwnerTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyPrintOwnerTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get>(`${API.thirdPartyPrintOwnerTypes}`).pipe(\n map(data => loadThirdPartyPrintOwnerTypesSuccess({thirdPartyPrintOwnerTypes: data})),\n catchError(() => of(loadThirdPartyPrintOwnerTypesFailure()))\n )\n )\n )\n );\n lazyThirdPartyPrintOwnerTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyPrintOwnerTypes),\n withLatestFrom(this.store.select(selectThirdPartyPrintOwnerTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyPrintOwnerTypes === storedData) {\n return of(loadThirdPartyPrintOwnerTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhComponents\n */\n loadIhComponents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhComponents),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ihComponents).pipe(\n map(data => loadIhComponentsSuccess({ihComponents: data})),\n catchError(() => of(loadIhComponentsFailure()))\n )\n )\n )\n );\n lazyLoadIhComponents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhComponents),\n withLatestFrom(this.store.select(selectIhComponents)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihComponents === storedData) {\n return of(loadIhComponents());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhHealthPlans\n */\n loadIhHealthPlans$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhHealthPlans),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ihHealthPlans).pipe(\n map(data => loadIhHealthPlansSuccess({ihHealthPlans: data})),\n catchError(() => of(loadIhHealthPlansFailure()))\n )\n )\n )\n );\n lazyLoadIhHealthPlans$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhHealthPlans),\n withLatestFrom(this.store.select(selectIhHealthPlans)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihHealthPlans === storedData) {\n return of(loadIhHealthPlans());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhHealthPrograms\n */\n loadIhHealthPrograms$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhHealthPrograms),\n exhaustMap(action =>\n this.errorHandlingHttpClient.get(`${API.ihHealthPrograms}?healthPlanCode=${action.healthPlanCode}`).pipe(\n map(data => loadIhHealthProgramsSuccess({ihHealthPrograms: data})),\n catchError(() => of(loadIhHealthProgramsFailure()))\n )\n )\n )\n );\n lazyLoadIhHealthPrograms$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhHealthPrograms),\n withLatestFrom(this.store.select(selectIhHealthPrograms)),\n exhaustMap(([{healthPlanCode}, storedData]) => {\n if (refdataInitialState.ihHealthPrograms === storedData) {\n return of(loadIhHealthPrograms({healthPlanCode}));\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhPriorities\n */\n loadIhPriorities$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhPriorities),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get>(API.ihPriorities).pipe(\n map(data => loadIhPrioritiesSuccess({ihPriorities: data})),\n catchError(() => of(loadIhPrioritiesFailure()))\n )\n )\n )\n );\n lazyLoadIhPriorities$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhPriorities),\n withLatestFrom(this.store.select(selectIhPriorities)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihPriorities === storedData) {\n return of(loadIhPriorities());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ReturnFileTypes\n */\n loadReturnFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadReturnFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.thirdPartyReturnFileTypes).pipe(\n map(data => loadReturnFileTypesSuccess({returnFileTypes: data})),\n catchError(() => of(loadReturnFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadReturnFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadReturnFileTypes),\n withLatestFrom(this.store.select(selectReturnFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.returnFileTypes === storedData) {\n return of(loadReturnFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ImageFormatTypes\n */\n loadImageFormatTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadImageFormatTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.imageFormatTypes).pipe(\n map(data => loadImageFormatTypesSuccess({imageFormatTypes: data})),\n catchError(() => of(loadImageFormatTypesFailure()))\n )\n )\n )\n );\n lazyLoadImageFormatTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadImageFormatTypes),\n withLatestFrom(this.store.select(selectImageFormatTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.imageFormatTypes === storedData) {\n return of(loadImageFormatTypes());\n }\n return EMPTY;\n })\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { EMPTY, Observable } from 'rxjs';\nimport { exhaustMap, map } from 'rxjs/operators';\n\nimport { API } from '../../shared/constants/api.constants';\nimport { Substitute, SubstituteData, SubstitutePaginatedResponse } from '../../shared/models/substitute.model';\nimport { ErrorHandlingHttpClient } from '../../shared/services/error-handling-http-client.service';\nimport {\n deleteSubstitute,\n loadSubstitutes,\n loadSubstitutesFailure,\n loadSubstitutesSuccess,\n reloadSubstitutes,\n} from './substitute.actions';\n\n\n@Injectable()\nexport class SubstituteEffects {\n private forwardData(item: SubstituteData): Substitute {\n return {\n ...item,\n startDate: item.startDate ? item.startDate : null,\n endDate: item.endDate ? item.endDate : null\n };\n }\n loadSubstitutes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadSubstitutes),\n exhaustMap(({scope}) => {\n let dataProvider: Observable = EMPTY;\n if (scope === 'all') {\n dataProvider = this.errorHandlingHttpClient\n .get(API.adminSubstitutes(), {\n params: {\n ['page.number']: 0,\n ['page.size']: 2147483647,\n }\n });\n } else if (scope === 'my') {\n dataProvider = this.errorHandlingHttpClient.get(API.substitutes(), {\n params: {\n ['page.number']: 0,\n ['page.size']: 2147483647,\n }\n });\n }\n\n return dataProvider.pipe(\n map(\n data => loadSubstitutesSuccess({data: data.content.map(i => this.forwardData(i))}),\n error => loadSubstitutesFailure(error)\n )\n );\n })\n )\n );\n deleteSubstitute$ = createEffect(() =>\n this.actions$.pipe(\n ofType(deleteSubstitute),\n exhaustMap(({userName, substituteUserName, scope}) => {\n let dataProvider: Observable = EMPTY;\n if (scope === 'all') {\n dataProvider = this.errorHandlingHttpClient.delete(API.adminSubstitute(userName, substituteUserName));\n } else if (scope === 'my') {\n dataProvider = this.errorHandlingHttpClient.delete(API.substitute(substituteUserName));\n }\n\n return dataProvider.pipe(\n map(\n () => reloadSubstitutes(),\n () => reloadSubstitutes()\n )\n );\n })\n )\n );\n\n constructor(private actions$: Actions, private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n}\n","import { Injectable } from '@angular/core';\nimport { setUserTheme } from './user.actions';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { exhaustMap } from 'rxjs/operators';\nimport { Action } from '@ngrx/store';\nimport { UserSettingsService } from 'src/app/shared/services/user-settings.service';\nimport { EMPTY, Observable } from 'rxjs';\n\n@Injectable()\nexport class UserEffects {\n\n constructor(private actions$: Actions) {}\n userTheme$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setUserTheme),\n exhaustMap(({theme}) => {\n UserSettingsService.setLocalUserTheme(theme);\n\n return EMPTY as Observable;\n })\n )\n );\n}\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\n\nexport class MissingTranslationService implements MissingTranslationHandler {\n handle(params: MissingTranslationHandlerParams) {\n return `${params.key}`;\n }\n}\n","import moment from 'moment-timezone';\n\nconst MomentSettingsInitializer = () => {\n moment.locale('en-US');\n moment.tz.setDefault('America/New_York');\n};\n\nexport default MomentSettingsInitializer;\n","import { MsalGuardConfiguration, MsalInterceptorConfiguration } from '@azure/msal-angular';\r\nimport { BrowserCacheLocation, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\n\r\nimport { BrowserService } from '../services/browser.service';\r\n\r\nconst env = '__env';\r\n\r\nconst isIe = BrowserService.isIE();\r\nconst msalApplicationScope = [`${window[env]?.adClientId}/.default`];\r\nconst msalPermissions = ['email', 'openid', 'profile'];\r\nexport const msalProtectedResourceMap = new Map()\r\n .set('https://graph.microsoft.com/v1.0/me/photos', ['user.read'])\r\n .set('/api/web/action-entries-en.json', null)\r\n .set('/api/', [...msalApplicationScope]);\r\n\r\nexport const msalUnprotectedResources = ['/assets/', '/api/web/'];\r\n\r\nexport const msalFactory = () => new PublicClientApplication({ // MSAL Configuration\r\n auth: {\r\n clientId: window[env]?.adClientId,\r\n authority: 'https://login.microsoftonline.com/' + window[env]?.tenantId,\r\n redirectUri: window.location.origin,\r\n postLogoutRedirectUri: window.location.origin,\r\n navigateToLoginRequestUrl: true\r\n },\r\n cache: {\r\n cacheLocation : BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: isIe ? true : false, // set to true for IE 11\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: () => {},\r\n piiLoggingEnabled: false\r\n }\r\n },\r\n});\r\n\r\nexport const msalGuardConfig: MsalGuardConfiguration = {\r\n interactionType: InteractionType.Redirect, // MSAL Guard Configuration\r\n authRequest: {\r\n scopes: [...msalApplicationScope, ...msalPermissions],\r\n prompt: 'select_account',\r\n },\r\n loginFailedRoute: '/',\r\n};\r\n\r\nexport const msalInterceptorConfig: MsalInterceptorConfiguration = {\r\n interactionType: InteractionType.Redirect, // MSAL Interceptor Configuration\r\n protectedResourceMap: msalProtectedResourceMap,\r\n};\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrowserService {\n\n static isIE() {\n return window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;\n }\n}\n","import {HttpParameterCodec, HttpInterceptor, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\nexport class XWwwUrlEncodedParamEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n\n@Injectable()\nexport class EncodeHttpParamsInterceptor implements HttpInterceptor {\n intercept(req, next) {\n const params = new HttpParams({encoder: new XWwwUrlEncodedParamEncoder(), fromString: req.params.toString()});\n return next.handle(\n req.clone({\n params,\n url: req.url\n })\n );\n }\n}\n","import { ErrorHandler, Injector, Injectable } from '@angular/core';\nimport { ApplicationInsightsService } from './application-insights.service';\n\n@Injectable()\nexport class ApplicationInsightsErrorHandler implements ErrorHandler {\n\n constructor(private injector: Injector) {}\n\n handleError(error: any): void {\n this.injector.get(ApplicationInsightsService).logException(error);\n console.log(error);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n ],\n exports: [\n CommonModule,\n SharedModule,\n ]\n})\nexport class SubstituteDepsModule { }\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { substituteFeatureKey, SubstituteState } from './substitute.reducer';\n\nexport const selectSubstituteState = createFeatureSelector(\n substituteFeatureKey\n);\n\nexport const selectSubstitutes = createSelector(\n selectSubstituteState,\n (state) => state.data\n);\n\nexport const selectSubstitutesLoaded = createSelector(\n selectSubstituteState,\n (state) => state.loaded\n);\n\nexport const selectSubstitutesLoading = createSelector(\n selectSubstituteState,\n (state) => state.loading\n);\n\nexport const selectSubstitutesScope = createSelector(\n selectSubstituteState,\n (state) => state.scope\n);\n","import {Injectable} from '@angular/core';\nimport {Store} from '@ngrx/store';\nimport {Observable, combineLatest} from 'rxjs';\nimport {share, switchMap} from 'rxjs/operators';\n\nimport {loadSubstitutes, reloadSubstitutes, deleteSubstitute} from '../../reducers/substitute/substitute.actions';\nimport {\n selectSubstitutes,\n selectSubstitutesLoaded,\n selectSubstitutesLoading,\n selectSubstitutesScope\n} from '../../reducers/substitute/substitute.selectors';\nimport {Substitute, CreteSubstitutePayload} from '../models/substitute.model';\nimport {ErrorHandlingHttpClient} from './error-handling-http-client.service';\nimport {API} from '../constants/api.constants';\nimport type {SubstituteScope} from '../../reducers/substitute/substitute.reducer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubstituteService {\n constructor(private store: Store, private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n\n load$(scope: SubstituteScope = 'my'): Observable {\n return combineLatest([this.store.select(selectSubstitutesLoaded), this.store.select(selectSubstitutesScope)]).pipe(\n switchMap(([loaded, oldScope]) => {\n if (!loaded || oldScope !== scope) {\n this.store.dispatch(loadSubstitutes({scope}));\n }\n\n return this.store.select(selectSubstitutes);\n }),\n share()\n );\n }\n\n select$(): Observable {\n return this.store.select(selectSubstitutes);\n }\n\n loading$(): Observable {\n return this.store.select(selectSubstitutesLoading);\n }\n\n reload(): void {\n this.store.dispatch(reloadSubstitutes());\n }\n\n add$(scope: SubstituteScope, userName: string, substituteUserName: string, substitute: CreteSubstitutePayload): Observable {\n if (scope === 'all') {\n return this.errorHandlingHttpClient.post(API.adminSubstitute(userName, substituteUserName), substitute, undefined, {\n duration: 0\n });\n }\n return this.errorHandlingHttpClient.post(API.substitute(substituteUserName), substitute, undefined, {\n duration: 0\n });\n }\n\n edit$(scope: SubstituteScope, userName: string, substituteUserName: string, substitute: CreteSubstitutePayload): Observable {\n if (scope === 'all') {\n return this.errorHandlingHttpClient.put(API.adminSubstitute(userName, substituteUserName), substitute);\n }\n\n return this.errorHandlingHttpClient.put(API.substitute(substituteUserName), substitute);\n }\n\n remove(scope: SubstituteScope, userName: string, substituteUserName: string): void {\n this.store.dispatch(deleteSubstitute({substituteUserName, userName, scope}));\n }\n}\n","
\n
\n \n
\n\n
\n \n \n
\n\n
\n \n \n \n \n
\n\n\n
\n Start date\n \n
\n\n
\n End Date\n\n \n\n
\n\n
\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {ControlContainer, FormGroup} from '@angular/forms';\n\nimport {UserModel} from '../../../shared/models/user.model';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport moment from 'moment';\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from 'src/app/shared/components/multiselect-search-dropdown/item-list.provider';\nimport {AssigneeService} from 'src/app/requests/services/assignee.service';\nimport {Observable, BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nclass UserListDataSource extends ItemListProvider {\n constructor(private userService: AssigneeService) {\n super();\n }\n\n private makeLabel(user: UserModel) {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n loadValues(values: string[]): Observable {\n return this.userService\n .loadValues(values)\n .pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchValues(query: string): Observable {\n return this.userService\n .searchValues(query)\n .pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchUsers(query: string): Observable {\n return this.userService\n .searchValues(query)\n .pipe(map(users => users));\n }\n}\n\n@Component({\n selector: 'app-edit-substitute-form',\n templateUrl: './edit-substitute-form.component.html',\n styleUrls: ['./edit-substitute-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSubstituteFormComponent {\n @Input() multipleDelegates = false;\n\n testId = 'substitute_form';\n get form(): FormGroup {\n return this.controlContainer.control as FormGroup;\n }\n today = moment().format('YYYY-MM-DD');\n\n compareUserFn = (o1: UserModel, o2: UserModel) => {\n if (o1?.userName && o2?.userName) {\n return o1.userName === o2.userName;\n }\n return false;\n };\n\n public userListProvider = new UserListDataSource(this.assigneeService);\n\n constructor(\n private controlContainer: ControlContainer,\n public utilsService: UtilsService,\n private assigneeService: AssigneeService,\n private cd: ChangeDetectorRef\n ) {}\n\n public userSearch: any = [];\n isUserLoading = new BehaviorSubject(false);\n\n public getUserLabel(user: UserModel): string {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n public getUsers(name: string): void {\n this.isUserLoading.next(true);\n this.userListProvider.searchUsers(name).subscribe(\n data => {\n this.userSearch = data;\n this.cd.detectChanges();\n this.isUserLoading.next(false);\n },\n () => {\n this.isUserLoading.next(false);\n }\n );\n }\n}\n","
\n \n\n

\n {{ 'module.substitute.text.add-substitution' | translate }}\n

\n\n
\n \n
\n\n \n
\n
\n \n
\n \n
\n {{ 'common.button.add' | translate }}\n \n
\n
\n \n
\n
\n
\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';\nimport { catchError, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\nimport { UserService } from '../../../shared/services/user.service';\nimport { UtilsService } from '../../../shared/services/utils.service';\nimport { AddSubstituteData } from './add-substitute.types';\n\n@Component({\n selector: 'app-add-substitute',\n templateUrl: './add-substitute.component.html',\n styleUrls: ['./add-substitute.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AddSubstituteComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadingSubject = new BehaviorSubject(false);\n private errorSubject = new BehaviorSubject(null);\n\n form = this.fb.group({\n is_permanent: this.fb.control(false, []),\n startDate: this.fb.control(null, [Validators.required]),\n endDate: this.fb.control(null, [\n (ac: AbstractControl) => {\n if (!ac.parent?.get('is_permanent')?.value) {\n return Validators.required(ac);\n }\n\n return null;\n }\n ]),\n substituteUser: this.fb.control([], [Validators.required]),\n user: this.fb.control(null, [Validators.required])\n });\n\n loading$ = this.loadingSubject.asObservable();\n error$ = this.errorSubject.asObservable().pipe(distinctUntilChanged());\n canEditUser = Promise.resolve(this.data.scope === 'all');\n\n constructor(\n private fb: FormBuilder,\n private requestService: RequestsService,\n private dialogRef: MatDialogRef,\n private substituteService: SubstituteService,\n private userService: UserService,\n private utilsService: UtilsService,\n @Inject(MAT_DIALOG_DATA) public data: AddSubstituteData\n ) {}\n\n ngOnInit(): void {\n const user = this.form.get('user');\n user.setValue(this.userService.getUserDetails());\n user.disable();\n\n this.canEditUser.then(result => {\n if (result) {\n this.form.get('user').enable();\n }\n });\n\n this.form\n .get('is_permanent')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isPermanent => {\n if (isPermanent) {\n this.form.get('endDate').reset();\n this.form.get('endDate').disable();\n } else {\n this.form.get('endDate').enable();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void {\n this.loadingSubject.next(true);\n combineLatest([\n ...this.form.get('substituteUser').value.map(substituteUser =>\n this.substituteService.add$(this.data.scope, this.form.get('user').value?.userName, substituteUser, {\n endDate: this.form.get('endDate').value,\n startDate: this.form.get('startDate').value\n }).pipe(catchError(e => of(e)))\n )\n ])\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (responses) => {\n // we should close the form in case of one successful response\n const hasSuccessResponse = responses.some(r => !(r instanceof HttpErrorResponse));\n this.loadingSubject.next(false);\n if(hasSuccessResponse) {\n this.dialogRef.close(true);\n }\n },\n error => {\n this.loadingSubject.next(false);\n this.errorSubject.next(error.error.message);\n }\n );\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","
\n \n\n

\n {{ 'module.substitute.text.edit-substitution' | translate }}\n

\n\n
\n \n
\n\n \n
\n
\n \n
\n \n
\n {{ 'common.button.edit' | translate }}\n \n
\n
\n \n
\n
\n
\n\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject, merge, of, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\nimport { UserService } from '../../../shared/services/user.service';\nimport { UtilsService } from '../../../shared/services/utils.service';\nimport { EditSubstituteData } from './edit-substitute.types';\n\n@Component({\n selector: 'app-edit-substitute',\n templateUrl: './edit-substitute.component.html',\n styleUrls: ['./edit-substitute.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSubstituteComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadingSubject = new BehaviorSubject(false);\n private errorSubject = new BehaviorSubject(null);\n\n form = (substitute => {\n const form = this.fb.group({\n is_permanent: this.fb.control(substitute.endDate === null, []),\n startDate: this.fb.control(substitute.startDate, [Validators.required]),\n endDate: this.fb.control(substitute.endDate, [\n (ac: AbstractControl) => {\n if (!ac.parent?.get('is_permanent')?.value) {\n return Validators.required(ac);\n }\n\n return null;\n }\n ]),\n user: this.fb.control(substitute.user, [Validators.required]),\n substituteUser: this.fb.control(substitute.substituteUser, [Validators.required])\n });\n form.get('user').disable();\n form.get('substituteUser').disable();\n\n return form;\n })(this.data.substitute);\n\n loading$ = this.loadingSubject.asObservable();\n error$ = this.errorSubject.asObservable().pipe(distinctUntilChanged());\n\n constructor(\n private fb: FormBuilder,\n private requestService: RequestsService,\n private dialogRef: MatDialogRef,\n private substituteService: SubstituteService,\n private userService: UserService,\n private utilsService: UtilsService,\n @Inject(MAT_DIALOG_DATA) public data: EditSubstituteData\n ) {}\n\n ngOnInit(): void {\n const user = this.form.get('user');\n user.disable();\n\n merge(this.form.get('is_permanent').valueChanges, of(this.form.get('is_permanent').value))\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isPermanent => {\n if (isPermanent) {\n this.form.get('endDate').reset();\n this.form.get('endDate').disable();\n } else {\n this.form.get('endDate').enable();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void {\n this.loadingSubject.next(true);\n this.substituteService\n .edit$(this.data.scope, this.form.get('user').value?.userName, this.form.get('substituteUser').value?.userName, {\n endDate: this.form.get('endDate').value,\n startDate: this.form.get('startDate').value\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n response => {\n this.loadingSubject.next(false);\n this.dialogRef.close(response);\n },\n error => {\n this.loadingSubject.next(false);\n this.errorSubject.next(error.error.message);\n }\n );\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","\nSubstitute table\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n
{{ 'module.substitute.substitute-list.affected-user' | translate }}\n {{ utilsService.getFullUserName(element.user) }}\n {{ 'module.substitute.substitute-list.delegate' | translate }}\n {{ utilsService.getFullUserName(element.substituteUser) }}\n {{ 'module.substitute.substitute-list.requestor' | translate }}\n {{ utilsService.getFullUserName(element.requestor) }}\n {{ 'module.substitute.substitute-list.start-date' | translate }}\n {{ element.startDate | date: 'MM/dd/yyyy':null }}\n {{ 'module.substitute.substitute-list.end-date' | translate }}\n {{ element.endDate | date: 'MM/dd/yyyy':null }}\n \n \n\n \n
\n\n \n
\n","import {ChangeDetectionStrategy, Component, Input, OnDestroy} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {SubstituteScope} from '../../../reducers/substitute/substitute.reducer';\nimport {Substitute} from '../../../shared/models/substitute.model';\nimport {ModalService} from '../../../shared/services/modal-service.service';\nimport {SubstituteService} from '../../../shared/services/substitute.service';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport {AddSubstituteComponent} from '../../modals/add-substitute/add-substitute.component';\nimport {AddSubstituteData, AddSubstituteResponse} from '../../modals/add-substitute/add-substitute.types';\nimport {EditSubstituteComponent} from '../../modals/edit-substitute/edit-substitute.component';\nimport {EditSubstituteData, EditSubstituteResponse} from '../../modals/edit-substitute/edit-substitute.types';\n\n@Component({\n selector: 'app-substitute-list',\n templateUrl: './substitute-list.component.html',\n styleUrls: ['./substitute-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubstituteListComponent implements OnDestroy {\n private ngUnsubscribe = new Subject();\n displayedColumns = ['user', 'substituteUser', 'requestor', 'startDate', 'endDate', 'actions'];\n\n @Input() scope: SubstituteScope = 'my';\n @Input() testId = 'substitutes';\n @Input() substitutes: Substitute[] = [];\n\n constructor(\n private modalService: ModalService,\n private substituteService: SubstituteService,\n private translatePipe: TranslatePipe,\n public utilsService: UtilsService\n ) {}\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n addSubstitute(): void {\n this.modalService\n .openModal(\n AddSubstituteComponent,\n {\n scope: this.scope\n },\n undefined,\n false\n )\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(dialogResponse => this.handleAfterClosed(dialogResponse));\n }\n\n private handleAfterClosed(value: AddSubstituteResponse) {\n if (value) {\n this.substituteService.reload();\n }\n }\n\n removeSubstitute(substitute: Substitute): void {\n this.modalService\n .openConfirmationModal(this.translatePipe.transform('module.substitute.substitute.remove-substitute'), '')\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(confirm => {\n if (confirm) {\n this.substituteService.remove(this.scope, substitute?.user?.userName, substitute?.substituteUser?.userName);\n }\n });\n }\n\n editSubstitute(substitute: Substitute): void {\n this.modalService\n .openModal(\n EditSubstituteComponent,\n {\n substitute,\n scope: this.scope\n },\n undefined,\n false\n )\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(dialogResponse => this.handleAfterClosed(dialogResponse));\n }\n}\n","
\n \n \n \n {{ 'module.substitute.text.my-substitutes' | translate }}\n {{ 'module.substitute.text.all-substitutes' | translate }}\n \n \n \n \n \n \n \n \n
\n\n\n \n \n
\n
\n \n {{ 'common.statuses.loading' | translate }}\n
\n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { MsalGuard } from '@azure/msal-angular';\n\nimport { PAGES_CONFIG } from '../shared/constants/pages.constants';\nimport { AuthGuard } from '../shared/guards/auth.guard';\nimport { SubstitesComponent } from './pages/substites/substitutes.component';\n\nconst routes: Routes = [\n {\n path: PAGES_CONFIG.SUBSTITUTES,\n component: SubstitesComponent,\n canActivate: [MsalGuard, AuthGuard]\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class SubstituteRoutingModule { }\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { UserRoles } from '../../../shared/constants/user-roles.constant';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\n\nimport type {SubstituteScope} from '../../../reducers/substitute/substitute.reducer';\n@Component({\n selector: 'app-substitutes',\n templateUrl: './substitutes.component.html',\n styleUrls: ['./substitutes.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubstitesComponent implements OnDestroy {\n private ngUnsubscribe = new Subject();\n private scopeSubject = new BehaviorSubject('my');\n displayedColumns = ['substituteUser', 'user', 'startDate', 'endDate', 'actions'];\n testId = 'substitutes';\n\n substitutes$ = this.scopeSubject.asObservable().pipe(\n distinctUntilChanged(),\n switchMap(scope =>\n this.substituteService.load$(scope).pipe(\n filter(i => !!i),\n takeUntil(this.ngUnsubscribe)\n )\n )\n );\n loading$ = this.substituteService.loading$();\n get scope(): SubstituteScope {\n return this.scopeSubject.value;\n }\n set scope(scope: SubstituteScope) {\n this.scopeSubject.next(scope);\n this.cd.detectChanges();\n }\n UserRoles = UserRoles;\n\n constructor(private substituteService: SubstituteService, public cd: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { AddSubstituteComponent } from './modals/add-substitute/add-substitute.component';\nimport { SubstitesComponent } from './pages/substites/substitutes.component';\nimport { SubstituteDepsModule } from './substitute-deps.module';\nimport { SubstituteRoutingModule } from './substitute-routing.module';\nimport { EditSubstituteFormComponent } from './common/edit-substitute-form/edit-substitute-form.component';\nimport { EditSubstituteComponent } from './modals/edit-substitute/edit-substitute.component';\nimport { SubstituteListComponent } from './common/substitute-list/substitute-list.component';\n\n\n@NgModule({\n declarations: [\n SubstitesComponent,\n EditSubstituteFormComponent,\n EditSubstituteComponent,\n AddSubstituteComponent,\n SubstituteListComponent\n ],\n imports: [\n SubstituteRoutingModule,\n SubstituteDepsModule,\n ]\n})\nexport class SubstituteModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VersionComponent} from './components/version/version.component';\n\n@NgModule({\n declarations: [VersionComponent],\n imports: [\n CommonModule\n ]\n})\nexport class VersionModule {\n}\n","import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, ErrorHandler, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport {\n MsalInterceptor,\n MsalModule\n} from '@azure/msal-angular';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { environment } from '../environments/environment';\nimport { DashboardModule } from './dashboard/dashboard.module';\nimport { EnvServiceProvider } from './env.service.provider';\nimport { ErrorPageModule } from './error-page/error-page.module';\nimport { HelpModule } from './help/help.module';\nimport { MaterialModule } from './material.module';\nimport { NavHeaderModule } from './nav-header/nav-header.module';\nimport { metaReducers, reducers } from './reducers';\nimport { RequestRefDataEffects } from './reducers/ref-data/refdata.effects';\nimport { SubstituteEffects } from './reducers/substitute/substitute.effects';\nimport { UserEffects } from './reducers/user/user.effects';\nimport { MissingTranslationService } from './services/missing-translation.service';\nimport MomentSettingsInitializer from './services/moment-settings.initializer';\nimport { msalFactory, msalGuardConfig, msalInterceptorConfig } from './shared/constants/msal.constants';\nimport { EncodeHttpParamsInterceptor } from './shared/interceptors/encode-http-params.interceptor';\nimport { UsernameHeaderInterceptor } from './shared/interceptors/username-header.interceptor';\nimport { ApplicationInsightsErrorHandler } from './shared/services/application-insights-error-handler';\nimport { PitMsalService } from './shared/services/pit-msal.service';\nimport { PitTranslateLoader } from './shared/services/pit-translate-loader.service';\nimport { SharedModule } from './shared/shared.module';\nimport { SubstituteModule } from './substitute/substitute.module';\nimport { VersionModule } from './version/version.module';\n\nconst disableAnimations =\n !('animate' in document.documentElement)\n || (navigator && /iPhone OS (8|9|10|11|12|13)_/.test(navigator.userAgent));\n\n\n@NgModule({\n declarations: [\n AppComponent,\n ],\n imports: [\n HttpClientModule,\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule.withConfig({ disableAnimations }),\n SharedModule,\n MaterialModule,\n NavHeaderModule,\n DashboardModule,\n HelpModule,\n VersionModule,\n ErrorPageModule,\n MsalModule.forRoot(msalFactory(), msalGuardConfig, msalInterceptorConfig),\n StoreModule.forRoot(reducers, { metaReducers }),\n SubstituteModule,\n EffectsModule.forRoot([\n RequestRefDataEffects,\n SubstituteEffects,\n UserEffects,\n ]),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useExisting: PitTranslateLoader,\n },\n missingTranslationHandler: {provide: MissingTranslationHandler, useClass: MissingTranslationService},\n defaultLanguage: 'en'\n }),\n !environment.production ? StoreDevtoolsModule.instrument() : []\n ],\n providers: [\n EnvServiceProvider,\n PitMsalService,\n {\n provide: ErrorHandler,\n useClass: ApplicationInsightsErrorHandler\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: MsalInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: UsernameHeaderInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: EncodeHttpParamsInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: () => MomentSettingsInitializer,\n multi: true\n },\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: false } },\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n hideRequiredMarker: true\n }\n }\n ], // send all dates in EST\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ],\n bootstrap: [ AppComponent ]\n})\nexport class AppModule {\n constructor() {\n MomentSettingsInitializer();\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 13870,\n\t\"./gl.js\": 13870,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"]}