{"version":3,"file":"main.60e5c67077d5388f.js","mappings":"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BACA,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,gCACAof,EAEA,YAEA9lB,kBACA,uBAEAA,YACA41D,aACA51D","names":["EnvService","i","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","loadRequestTypeInventoryTypes","lazyLoadRequestTypeInventoryTypes","loadRequestTypeInventoryTypesSuccess","loadRequestTypeInventoryTypesFailure","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","loadThirdPartyCompanies","lazyLoadThirdPartyCompanies","loadThirdPartyCompaniesSuccess","loadThirdPartyCompaniesFailure","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","requestTypeInventoryTypes","componentTypes","popItemTypes","colorTypes","dimensionTypes","financialTypes","popProdEventTypes","popProdFundingTypes","popUsageDurationTypes","popProdItemTypes","popProdCuttingTypes","popProdMaterialTypes","popProdTapeTypes","popProdInventoryTypes","printers","bifComponentTypes","bifFulfillmentTypes","thirdPartyDataPinFileTypes","thirdPartyOrderTypes","thirdPartyPrintOwnerTypes","thirdPartyCompanies","ihComponents","ihHealthPlans","ihHealthPrograms","ihPriorities","returnFileTypes","imageFormatTypes","refDataReducer","createReducer","on","Object","state","action","popProdInvenprinterstoryTypes","r","ImageFormatTypes","selectRefData","createFeatureSelector","selectPaymentTypes","createSelector","selectDielines","selectRequestItemTypes","selectDataPinFileTypes","selectRedemptionTypes","selectSubstrates","selectRegions","selectWarehouses","selectCompanies","selectPopProdInventoryTypes","selectPrinters","selectPartnerGroups","selectDesignLineOfBusiness","selectArtLocationTypes","selectDesignSourceTypes","selectChannelTypes","selectPopChannelTypes","selectInventoryTypes","selectRequestTypeInventoryTypes","selectComponentTypes","selectPopItemTypes","selectColorTypes","selectDimensionTypes","selectFinancialTypes","selectPopProdEventTypes","selectPopProdFundingTypes","selectPopProdUsageDurationTypes","selectPopProdItemTypes","selectPopProdCuttingTypes","selectPopProdMaterialTypes","selectPopProdTapeTypes","selectFSPaymentTypes","selectBifComponentTypes","selectBifFulfillmentTypes","selectThirdPartyDataPinFileTypes","selectThirdPartyOrderTypes","selectThirdPartyPrintOwnerTypes","selectThirdPartyCompanies","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","AbstractRoleUpdateAwareProvider","rolesUpdateDataSubject","Subject","S","asObservable","pipe","map","source","data","share","t","i0","_r6","ctx_r9","ctx_r21","REQUEST_ACTION_REASON_OPTIONS","InjectionToken","REQUEST_ACTION_REASON_CONTEXT","RequestActionReasonComponent","actionsReasonService","cd","fb","requestService","fileUploadService","messageService","loaderService","options","context","et","BehaviorSubject","FILE_SIZE_RESTRICTIONS","getFileTypes","FILE_TYPES","takeUntil","ngUnsubscribe$","memoize","outer","document","createElement","style","visibility","overflow","msOverflowStyle","body","appendChild","inner","scrollbarWidth","offsetWidth","parentNode","removeChild","_attachmentFileJobs","set","attachmentFileJobs","next","_excludedFileJobs","excludedFileJobs","Array","from","attachmentInput","nativeElement","files","filter","f","size","Ie","fileSize","forEach","showSystemMessage","sizeNumber","sizeType","file","progress","cancelled","link","uploadedFile","setTimeout","markForCheck","attachmentIndex","we","actionName","getAction","_a","ie","_b","showLabel","ge","_c","fieldLabel","Re","_d","position","getPosition","Fe","_e","mainButtonTitle","getMainButtonTitle","isRequired","getIsRequired","ze","_f","form","group","comment","get","setValidators","Validators","makeTimer","job","ReplaySubject","requestAttachmentUploadLink","requestId","onSubscribe","defer","doOnSubscribe","switchMap","uploadFileWithProgress","uploadLink","showLoader","event","type","HttpEventType","Math","floor","loaded","total","of","delay","scanUploadFile","uploadId","name","res","FILESCANCODE","uploadUrl","fileName","indexesToRemove","element","index","push","removeAttachment","console","error","EMPTY","finalize","hideLoader","shareReplay","bufferSize","refCount","combineLatest","attachmentJobs","Je","excludedJobs","activeJobs","includes","aj","resolutionJobs","merge","subscribe","valid","controls","confirmAction","Promise","all","fileJob","toPromise","keys","control","key","pristine","markAsTouched","updateValueAndValidity","onlySelf","emitEvent","cancelAction","invalid","hasError","Ue","WithDestroy","selectors","ElementRef","ctx","ARTWORK_STATUSES","unreviewed","approved","rejected","ARTWORK_SUMMARY_STATUSES","MAX_ITEMS_PER_REQUEST","MAX_ITEMS_PER_IMAGE_REQUEST","NOTE_MAX_LENGTH","QUANTITY_MAX_LENGTH","MRN_MAX_LENGTH","PKID_MAX_LENGTH","PRICE_PATTERN","REQUEST_NAME_PATTERN","INTEGER_PATTERN","INTEGER_PATTERN_EXCEPT_ZERO_VALUE","IMAGE_DENOM_PATTERN","MRN_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","currentAction","currentPosition","title","actionReason","buttonClicked","setAction","attachments","arguments","AssigneeService","errorHandlingHttpClient","values","httpParams","HttpParams","append","v","API","params","query","l","FileDownloadService","errorHandlingHttp","url","payload","resolve","reject","observe","responseType","post","catchError","e","resp","headers","se","getFileNameFromHeader","getFileNameFromUrl","saveAs","has","components","decodeURIComponent","split","length","disposition","utf8FilenameRegex","test","exec","filenameStart","toLowerCase","indexOf","partialDisposition","slice","matches","x","FileUploadService","translateService","fileType","sizeLimit","throwError","Error","put","pendingUploads","reportProgress","uploadIndex","F","uploadCanceled","splice","repeat","fileValidationResponse","PENDING","tap","UNSAFE","instant","first","requestType","attachmentFileType","requestItemId","createUploadItemArtworkUrl","shouldRequestHasFileTypeParameter","uploadAndCreateAttachment","createAttachmentUrl","Ce","SAFE","createAttachmentRequest","attachmentId","apiUrl","delete","O","RequestsService","http","userService","eventService","warehousesObservable","replayAndClone","companiesObservable","lineOfBusinessObservable","channelTypesObservable","inventoryTypesObservable","requestTypeInventoryTypesObservable","europeanCountriesObservable","fileTypesWhiteList","designerList","nameBeginning","groupKeys","UserGroups","requestTypes$","details","draft","requestName","requestObj","resetRequestDetails","downloadFile","poId","Z","item","getFileUrl","id","createProofOfPayments","reqItemId","reqType","J","createExternalPin","username","getCurrentUserName","status","rejectionReason","isPrinterProofs","itemId","ue","createSowAttachment","queryParams","WPN","wpnDetailsByWpnId","limit","merchantName","request","observable","err","poDetails","V","emit","eventName","Events","actionType","stageCode","attachmentUploadIds","reqObj","assign","callPO","response","objectObservable","cloneDeep","requestDetails","getVersions","versionsUri","printerId","milestoneId","Ae","createCardProductionWorkItemMilestoneAsn","printerItem","milestone","printerDetails","createArtworkAttachment","ctx_r11","ctx_r13","ctx_r14","ctx_r15","ChipsComponent","ctrl","elements","array","valueAccessor","chipsGroup","formControl","isArray","clear","FormControl","valueValidator","fn","onChangeFn","onTouchFn","isDisabled","c","removeAt","findIndex","update","keyboardEvent","inputElement","removeElement","pop","pastedText","clipboardData","getData","preventDefault","addElement","input","target","chipInput","newChipInput","trim","k","WithCheckControlUpdates","self","MatChipInput","ChipsModule","CommonModule","ReactiveFormsModule","FormsModule","CommonDirectivesModule","CustomFieldErrorMatcher","customControl","touched","AppCurrencyInputComponent","d","digitGroupSeparator","decimalCharacter","decimalCharacterAlternative","minimumValue","maximumValue","decimalPlaces","decimalPlacesShownOnBlur","watchExternalChanges","defaultOptions","_required","_readonly","_maxLength","errors","getControlErrorMessage","changes","instance","decimals","maxValue","currencyControlOptions","onChange","onTouched","AutonumericDirective","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","AppDatePickerComponent","renderer","EventEmitter","moment","toDate","DatePickerHeaderComponent","hasFocusInitial","getAttribute","removeAttribute","oldTouched","oldValid","disabled","oldDisabled","datePickerToggle","datePickerInput","setDisabledState","$","_changeDetectorRef","testId","valueChanges","ngUnsubscribe","newDate","dateSelected","statusChanges","toggleElement","querySelector","addClass","removeClass","de","MatDatepickerToggle","MatDatepickerInput","_calendar","_dateAdapter","_dateFormats","cdr","stateChanges","_destroyed","complete","format","activeDate","display","monthYearA11yLabel","mode","addCalendarMonths","addCalendarYears","MAT_DATE_FORMATS","ctx_r3","ctx_r5","DAYS_OF_WEEK_SHORT","BUTTON_LOCATIONS","INSIDE","OUTSIDE","AppDateRangeComponent","separator","daysOfWeek","R","ranges","showRanges","subtract","add","Event","dateString","locale","start","end","isValid","setErrors","incorrectDate","le","G","setValue","startDate","endDate","rangeSelected","pickerDirective","open","reset","DaterangepickerDirective","AppInputFormComponent","formControlAccessor","base","fm","elRef","He","currencySymbol","currencySymbolPlacement","roundingMethod","undefined","monitor","focused","origin","autoFocus","focusVia","matInput","stopMonitoring","numeric","oldValue","checkControlChanges","JSON","stringify","oldErrors","bind","MatInput","AppInputComponent","_isDisabled","emptyInputBehavior","AppPercentInputComponent","AppTextareaFormComponent","b","textarea","oldControl","U","BackLinkComponent","CheckboxComponent","ae","change","_value","val","isChecked","K","decls","FileUploadProgressComponent","ctx_r10","ctx_r28","ctx_r34","ctx_r41","FileUploaderComponent","utilsService","translate","filesLoadingSubject","z","fileTypesToAccept","restrictionOptions","ve","me","initialFiles","currentValue","proof","fileTypeAccepted","fileExtensionAccepted","filtered","transform","$event","filterFileTypes","isRestrictionSizeWarningExist","prepareFilesList","downloadAttachment","fileUrl","getBlob","blob","Blob","URL","createObjectURL","window","uploadFailed","usePageMaskLoader","removeFunction","triggerActionHistoryUpdate","onUpdateFiles","beforeUploadFunction","filesToUploadNumber","isValidByRestrictionsOptions","uploaded","uploadFunction","round","progressObject","itemToLinkId","linkFileToReqItem","proceededFilesNumber","fileDropEl","fileValidBySize","downloadItem","downloadItemFile","Te","_r2","InputChipsComponent","itemsControl","itemsArr","items","h","setItems","Set","ctx_r7","InputSearchDropdownComponent","q","ItemsFormCtrl","disable","inputCtrl","enable","filteredItemsList","itemsList","ItemsFormFilterCtrl","_onDestroy","debounceTime","search","searching","onSearch","switchMapTo","isLoading","loading","C","N","resultControl","getOptionLabel","opened","isEmpty","itemLabelFn","itemLabel","onClear","dataset","clearInputValue","ItemsSelect","toggle","content","regex","RegExp","replace","originalContent","prefilteredExtras","extras","join","Oe","MAT_INPUT_VALUE_ACCESSOR","ItemListProvider","ctx_r8","MultiSelectSearchDropdownComponent","ngControl","Map","loadingSubject","j","matSelect","_propagateChanges","localControl","obj","selectedItemList$","filterControl","startWith","cachedValues","itemListProvider","loadValues","addToCached","fetched","assignLabels","label","searchedItemList$","debounce","timer","searchValues","list","visibleList","showNotFound","selectionListCombined$","isOverlayOpened","valueChange","stopPropagation","take","fil","ce","MatSelect","MAT_SELECT_CONFIG","useValue","disableOptionCentering","RadioGroupFormComponent","defaultSelectedIndex","buttonValues","selectItem","errorMessage","Link","Quill","PROTOCOL_WHITELIST","CustomLinkSanitizer","sanitizedUrl","some","protocol","startsWith","_MatQuillMixinBase","mixinErrorState","mixinDisabled","MatQuillBase","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","injector","elementRef","domSanitizer","platformId","zone","service","Et","QuillEditorBase","_MatQuillBase","defaultErrorStateMatcher","parentForm","parentFormGroup","doc","vt","contentChangedSubscription","onContentChanged","distinctUntilChanged","updateErrorState","blurSubscription","onBlur","focusSubscription","onFocus","unsubscribe","coerceBooleanProperty","empty","valueGetter","quillEditor","editorElem","writeValue","childNodes","blur","focus","ids","_describedBy","closest","PLATFORM_ID","DOCUMENT","hostVars","nextUniqueId","QuillInputComponent","controlType","concat","_testId","setAttribute","MatFormFieldControl","RichTextComponent","_extras","matEditor","ke","CustomHintDirective","RichTextModule","userNameComparator","a","userName","optionValueComparatorFactory","optionName","DEFAULT_COMPARATORS","mdmId","isEqual","SelectSearchDropdownComponent","normalizedItemList","il","itemListValues","itemsFormCtrl","boundedValue","onActionSave","filteredItemsList$","te","_itemsFormCtrl","ItemsAssignSelect","registerOnChange","registerOnTouched","filterItemsMulti","setInitialValue","select","trackDisabledStateForItemsCtrl","Me","matFormField","registerOnDisabledChange","Ne","compareWith","comparators","comparator","filteredItemsNoSearch","level","prefilteredItems","filteredItem","prefilteredByExtrasItems","filteredItems","pfi","parent","found","be","foundExtras","fe","close","isDropdownOpened","option","MatFormField","args","partNumber","merchantId","reqId","fileId","requestAlternateId","orderAlternateId","productUpc","wpn","artworkFileId","versionId","tpsId","substituteUsername","requestNumber","purchaseOrderNumber","s","getPrinterWorkItems","updateMilestoneDetails","doBulkWorkItemMilestoneUpdate","UpdateTriggerContainer","ngUnsubscribeField","ChangeDetectorRef","updateTriggerListenerChangeDetector","updateFormTrigger","updateTriggerContainer","updateTriggerSubscription","W","WithUpdateTriggerListener","mixinHasUpdateTriggerListener","controlAccessor","checkControlUpdatesCd","getCheckControlUpdatesTarget","PAGES_CONFIG","DASHBOARD","REQUESTS","REPORTS","HELP","VERSIONS","ERROR","ERROR_AUTH","SUBSTITUTES","APPROVALS","ERRORS","CARD_PRODUCTION","ARTWORK","ASN","PROOF_OF_PAYMENT","EXTERNAL_PIN","PO_SOW","CARD_DESIGN","ART","POP_DESIGN","FS_FILE","POP_PRODUCTION","OTHER","PARTNER_ART","PRINTER_PROOF","PRINTER_QUOTE","FINANCIAL_SERVICES","FINANCE","BIF_PRODUCTION","MATRIX","THIRD_PARTY_PRODUCTION","OPS","IMAGE","ART_FILE","IH_PRODUCTION","DEFAULT","DEFAULT_DESIGN","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","ASSIGNED_DESIGNER","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","COMMITTEE_APPROVAL","PO_APPROVAL","ENABLED","PPM","PRINT","PRODUCTION_MANAGER","TRAFFIC_MANAGER","PRODUCTION_TRAFFIC_MANAGER","p","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","CAN_ASSIGN_DESIGNER","DESIGNER_AUTO_ASSIGN","PO_REPORT_ROLE","SIGNED_PO_REPORT_ROLE","TRAFFIC_TRACKER_ROLE","APP","MIMIC_USER","ADMIN","SUPER_USER","APPROVER","STAGE_ONE_APPROVER","STAGE_TWO_APPROVER","ALLOWED_PRINT_FINANCE_PO","SETTINGS","EMAIL","AUTONUMERIC_CONTROL_VALUE_ACCESSOR","elm","defaults","AutoNumeric","getOptions","normalized","unsubscribeFormat","listen","formatted","unsubscribeRawValueModified","autonumericUpdateTriggerEventType","detail","newRawValue","rawValueModified","getFormatted","predefined","normalize","strategy","remove","initialValue","onTouchedFn","setProperty","domElement","ClickNoSelectionDirective","subscription","selection","getSelection","toString","clickNoSelection","o","ClickStopPropagationDirective","propagationStopped","templateRef","DndDirective","evt","fileOver","dataTransfer","fileDropped","EasyAriaDirective","tagName","setStyle","RendererStyleFlags2","removeListener","dispatchEvent","TooltipDirective","el","viewContainerRef","hide","tooltip","show","create","setPosition","tooltipContent","tooltipText","createText","template","ref","createEmbeddedView","rootNodes","detectChanges","customClass","longTextTooltip","top","left","hostPos","getBoundingClientRect","tooltipPos","scrollPos","isFixed","pageYOffset","documentElement","scrollTop","height","offset","width","bottom","right","UserPermissionsV2Directive","viewContainer","userPermissionsService","roleProvider","roleUpdates$","userPermissionsSubject","roles","isAllowed$","exhaustMap","permission","isActionAvailable","arrayPermission","flat","updateContainerRef","isAllowed","allowedChanged","currentEmbeddedView","m","UserPermissionsDirective","D","checkUserPermissions","AuthGuard","router","pitMsalService","stateProviderService","userPermissionService","isLoggedInProduceit","login","userGroupRoles","setLoggedInProduceit","setUserRoles","updateUserDetails","HttpErrorResponse","putParam","navigate","logout","TranslationLoadedGuard","pitTranslateLoader","translationLoaded$","createUrlTree","UsernameHeaderInterceptor","clone","setHeaders","encodeURIComponent","handle","DEFAULT_FILE_SIZE_RESTRICTION","GLOBAL","UserTheme","DatePipeTz","timezone","DatePipe","LOCALE_ID","pure","useClass","ToSelectSearchDropdownOptions","JoinPipe","labelField","Function","valueField","extrasField","flatMap","flatternOptions","children","labelFieldInput","createLabelFromValue","flatternedItems","getValue","getLabel","getExtras","optionIndex","find","errorCodes","ErrorHandlingHttpClient","errorOptions","handleError","method","errorPromise","Response","text","then","parse","errorDetailsJson","statusText","message","displayError","errorDetails","duration","CardDesignEvents","PopDesignEvents","PopProductionEvents","FsrEvents","BifEvents","ThirdPartyEvents","IhEvents","ImageEvents","EventService","subject$","takeUntilBy","LoaderService","loader","promise","ctx_r6","SystemMessageComponent","toastrService","toastPackage","ngZone","easeTime","config","easing","originalTimeout","timeOut","toastRef","afterActivate","activateToast","manualClosed","timeoutReset","resetTimeout","countDuplicate","duplicatesCount","count","clearTimeout","timeout","hideTime","clearInterval","intervalId","disableTimeOut","extendedTimeOut","outsideTimeout","Date","getTime","progressBar","outsideInterval","updateProgress","func","runOutsideAngular","runInsideAngular","setInterval","run","now","progressAnimation","mainElement","toastId","trigger","opacity","transition","animate","changeDetection","MessageService","toastr","sanitizer","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","enableHtml","bypassSecurityTrustHtml","sanitize","SecurityContext","messageClass","closeButton","tapToDismiss","NewRequestComponent","dialogRef","env","requestTypes","roundDuration","expectedDurationWeeks","expectedDurationDays","ye","MAT_DIALOG_DATA","RequestNameFormComponent","dataItem","E","buildForm","maxNameLength","minNameLength","redirect","ConfirmCloseModalComponent","confirmBtn","closeBtn","isCloseModal","TruncateMiddleComponent","parentCd","Ge","contentSubject","containerContent","Le","projectedContentContainer","innerHTML","content$","flexBasis","$e","minStartingChars","minLastingChars","substring","debug","ctx_r45","ctx_r58","ctx_r60","ctx_r62","ctx_r64","ctx_r72","ctx_r74","ctx_r80","ctx_r82","ctx_r83","ctx_r84","ctx_r85","ctx_r86","ctx_r93","ctx_r101","ctx_r109","ctx_r111","ctx_r121","ctx_r123","ApprovalManagerComponent","overlay","pdfViewerService","approvalManagerService","selectedRequestItemId","selectedArtworkFileId","selectedVersionId","onRequestNameChange","onRequestItemsChange","requestItems","selectedRequestItem","artworkFiles","getArtworkFiles","selectedArtworkFile","setSelectedRequestItem","setSelectedArtworkFile","showViewer","getRequestItemLabel","propagateArtworkFile","latestRejectedVersions","artwork","versions","resolutions","stageType","selectedArtwork","selectedArtworkFileIndex","targetVersion","getActiveVersion","setSelectedVersion","canUpload","canUploadSelectedArtwork","canReview","selectedVersion","canReviewSelectedArtwork","version","oldId","compareVersion","setCompareVersion","artworkFile","active","reviewFinalized","canApprove","getLatestResolution","rejectedArtworks","hideViewer","openReasonModal","__awaiter","addVersionResolution","Ye","uploadVersion","comparisonOn","enableCompareMode","selectedVersionIndex","downloadVersion","attachment","triggerDownloadWithAnnotations","triggerDownloadAllWithAnnotations","isReject","setMainButtonTitle","setIsRequired","positionStrategy","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","offsetX","offsetY","overlayRef","hasBackdrop","scrollStrategy","scrollStrategies","block","reasonPortal","ComponentPortal","attach","isRedConfirmButton","getReason","detach","xt","getActiveVersionForFile","activeVersion","filledRI","ri","every","rejectedOrApproved","inProgress","latestResolution","reviewer","ModalService","dialog","openDialogs","openModal","afterClosed","openRequestNameModal","shouldHideConfirmBtn","approvalManagerConfig","MatDialogConfig","disableClose","panelClass","backdropClass","maxWidth","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","account","logoutRequest","silentRequest","acquireTokenSilent","acquireTokenRedirect","loginRedirect","hash","handleRedirectObservable","PitTranslateLoader","prefix","suffix","translationLoadedSubject","lang","forkJoin","resources","environment","reduce","StateProviderService","path","stateParamMap","param","UserPermissionsService","setUserNameSubscription","userRoles","userRolesSubject","permissionChecks","takeWhile","permissionAllowed","scan","acc","getRoles","specificRoles","usernameChange","currentUserName","SettingsModalComponent","dialogData","settings$","selectedIndex","section","initForm","loadSettingsIntent","patchValue","displayMode","emailSignature","EMAIL_SIGNATURE","field","markAllAsTouched","UserSettingsService","store","modalService","dispatch","getLocalUserTheme","newTheme","setLocalUserTheme","localStorage","getItem","setItem","UserService","newUserName","nameSubject","getAccount$","authAccount$","removeItem","fullyLoaded","loggedInProduceit","userDetails","userDetailsSubject","substitutedUsers","authUserEmail","realUserName","mimicUserName","toLocaleLowerCase","systemUser","targetUser","targetUserLogin","fullName","firstName","lastName","bytes","dm","sizes","log","parseFloat","pow","toFixed","sort","codeA","toUpperCase","codeB","parentCode","child","merchant","fcmsId","M","nameA","nameB","date1","createdAt","date2","Number","codeNames","logInvalidControls","touchFormControls","types","table","printer","INTERNAL","isIncludesType","EXTERNAL","CERTIFIED_WRAP","CERTIFIED_MULTIPACK","reqItems","itemsControlsArray","idx","itemForm","at","merchantsArray","merchants","country","accountManagers","formArr","sum","getRawValue","curr","quantity","hasNotZeroSum","formGroup","versionQuantities","compareSum","multiplier","multiplicity","getArtworkFileStatuses","notAllApproved","isAnyRejected","af","validationObject","ac","noChanges","arr","allInFalse","evaluator","actual","endControl","startControl","bigStart","BigJs","bigEnd","gt","markAsUntouched","startRange","endRange","isChitCard","fc","checkboxTrueValidator","masterCaseSizeControl","caseSizeControl","sortFields","sortBy","restrictionSizeTypeIndex","fileSizeTypeIndex","maxBytesLength","maxBytesLabel","TextEncoder","encode","warehouse","siblingName","target$","uniqueSymbol","Symbol","withLatestFrom","skip","withLatestValue","appendedValue","SharedModule","CurrencyPipe","imports","ObserversModule","AutonumericModule","NgxMatSelectSearchModule","TranslateModule","NgxDaterangepickerMd","OverlayModule","OverlayscrollbarsModule","ToastrModule","RouterModule","QuillModule","customOptions","import","whitelist","appVersion","require","newVersionPolingInterval","production","locales","defaultLocale","commitId","DashboardComponent","titleService","setTitle","HelpComponent","ctx_r4","ERROR_PAGE_REFRESH_INTERVAL","ErrorPageComponent","errorPageRefreshInterval","re","errorType","getParam","serviceUnavailable","interval","w","g","location","reload","u","HasParamGuard","requiredParams","hasAllRequiredParams","skipRedirect","navigateFallback","y","VersionComponent","envService","api","ui","updateVersions","getAPIversion","getFnVersion","fnVersion","ctx_r1","ErrorAuthComponent","authService","realUserEmail","isMimicMode","currentUser","userName1","setCurrentUserName","RootRedirectGuard","ugr","parseUrl","redirectRoute","getUserRoles","ListDataSource","users","makeLabel","routes","loadChildren","RequestsModule","canActivate","MsalGuard","component","ReportsModule","pathMatch","ApprovalsModule","FeaturesComponent","requestsService","assigneeService","Q","checkbox","currency","deliveryDate","dateRange","to","textInput","numberInput","chips","httpSearchDropdown","httpSearchDropdownMultiple","dropdown","dropdownMultiple","percent","richText","radioGroup","isLoading$","getMerchants","merchantSearch","isUserLoading","userListProvider","searchUsers","userSearch","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","VERSION_CHECK_POLLING_INTERVAL","NewVersionService","httpClient","polingInterval","as","versionCheckTimer","checkVersion","oldVersion","unsubscribeSubject","NAV_MENU","route","permissions","un","ProfilePictureProvider","reader","FileReader","onloadend","result","readAsDataURL","base64","fetch","ProfilePictureCacheWrapper","profilePictureProvider","accountName","accountCacheKey","cachedItem","itemValue","base64ToBlob","getProfilePicture","profilePicture","blobToBase64","base64ProfilePicture","TTL","xn","NavProfilePictureComponent","getLoggedInProduceit","cachedWrapper","userImage","bypassSecurityTrustUrl","ctx_r26","ctx_r27","ctx_r30","ctx_r32","ctx_r36","ctx_r40","ctx_r42","NavHeaderPanelComponent","userSettingsService","translateSerivce","FormGroup","enableDarkMode","settingsVisible$","substituteEnabled","initialUserName","isPoApprovals","apiVersion","subscriptions","loggedIn","userTheme$","darkModeForm","updateUserTheme","darkModeEnabled","buttonLoader","createRequest","openNewRequestModal","postCreateNewRequest","sub","loginClicked","logoutClicked","authLogout","resetMimicUser","substitutes","mimicUser","authUserName","displayName","yt","PdfViewerComponent","Qe","pdftronLicenseKey","fullAPI","licenseKey","enableAzureWorkaround","disabledElements","WebViewer","annotManager","exportAnnotations","saveComments","ot","currentVersionObs","selectedVersionChanged","compareVersionObs","compareVersionChanged","downloadWithAnnotObs","downloadClicked","downloadAllWithAnnotObs","getDownloadAllSubject","compareModeChanged","compareMode","initializedChanged","initializeViewers","initMainViewer","initCompareViewer","vwInstances","wvInstance","compareWvInstance","viewers","Core","documentViewer","docContainers","contentDocument","compareViewer","syncZoom","syncRotation","addScrollListener","disableTools","initClips","initToolListeners","currentVersion","loadDoc","filename","downloadWithAnnotations","downloadAllWithAnnotations","WebViewerFunc","webViewerConfig","userTheme","UI","setTheme","annotationManager","addEventListener","annotations","I","imported","verifyAnnotationCanBeAdded","updateAnnotations","initAnnotationUser","loadAnnot","setZoomLevel","isDownloadAllInProgress","fileAnnotations","annotation","getFileData","lobs","lob","deleteAnnotations","downloadPdf","loadedSubject","removeEventListener","onDocumentLoaderCallback","It","getComments","comments","importAnnotations","Ft","Se","closeDocument","getDownloadRequest","downloadRequest","extension","getVersionFileExtension","loadDocument","customHeaders","PDFNet","runWithoutCleanup","PDFDoc","newDoc","initSecurityHandler","lock","Filter","createURLFilter","tiffFile","Convert","fromTiff","unlock","getUserDetails","setCurrentUser","getLocalStorageOpenNotesKey","openElements","iframeWindow","frameElement","getZoomLevel","zoom","docViewer","getRotation","rotation","setRotation","documentContainer","onscroll","originalScroller","syncScrolls","scrollLeft","scrollTimeout","timeoutForIE","dateAndTime","DateModified","toUTCString","selectAnnotation","focusNote","Id","dangerouslySetNoteTransformFunction","wrapper","div","href","onclick","fileMetadata","getMetadata","formatDate","getReplies","annotationReply","replyDateContainer","getFileMetadata","disableElements","initFileClip","isElementOpen","disposeViewer","dispose","Ze","AppComponent","appInsightsService","broadcastService","errorHandler","newVersionService","msalGuardConfig","getUserDetails$","FontFaceObserver","load","catch","checkAccount","loginSubscription","msalSubject$","logoutErrorsCount","logoutSubscription","warn","InteractionRequiredAuthError","authRequest","authError","allowLogout","spinnerStatus","isLoader","checkMimic","trackNewVersionChanges","setAuthUserName","initiate","rel","media","head","getElementsByTagName","primaryStyles","insertBefore","nextSibling","observe$","hasNewVersion","REFRESH_MESSAGE","mapTo","MSAL_GUARD_CONFIG","DashboardModule","EnvServiceProvider","useFactory","envKey","browserWindowEnv","hasOwnProperty","deps","ErrorPageModule","TranslatePipe","HelpModule","NavHeaderModule","MatListModule","loadSubstitutes","reloadSubstitutes","loadSubstitutesSuccess","loadSubstitutesFailure","deleteSubstitute","substituteFeatureKey","substituteInitialState","scope","substituteReducer","reducers","hr","metaReducers","RequestRefDataEffects","actions$","createEffect","ofType","refdataInitialState","sortAZNames","consoleListPrinters","healthPlanCode","SubstituteEffects","dataProvider","forwardData","substituteUserName","UserEffects","MissingTranslationService","Fr","isIe","BrowserService","navigator","userAgent","msalApplicationScope","Mr","adClientId","msalProtectedResourceMap","interactionType","InteractionType","scopes","prompt","loginFailedRoute","msalInterceptorConfig","protectedResourceMap","XWwwUrlEncodedParamEncoder","EncodeHttpParamsInterceptor","req","encoder","fromString","ApplicationInsightsErrorHandler","logException","SubstituteDepsModule","selectSubstituteState","selectSubstitutes","selectSubstitutesLoaded","selectSubstitutesLoading","selectSubstitutesScope","SubstituteService","substitute","ctx_r2","UserListDataSource","EditSubstituteFormComponent","controlContainer","o1","o2","AddSubstituteComponent","substituteService","is_permanent","substituteUser","errorSubject","canEditUser","isPermanent","add$","responses","hasSuccessResponse","EditSubstituteComponent","Nt","Mt","edit$","ctx_r23","SubstituteListComponent","translatePipe","handleAfterClosed","dialogResponse","openConfirmationModal","confirm","SubstitesComponent","scopeSubject","load$","loading$","SubstituteRoutingModule","SubstituteModule","VersionModule","NewVersionModule","ngModule","providers","HttpClientModule","disableAnimations","AppModule","MomentSettingsInitializer","bootstrap","ErrorHandler","HTTP_INTERCEPTORS","MsalInterceptor","APP_INITIALIZER","MAT_MOMENT_DATE_ADAPTER_OPTIONS","useUtc","MAT_FORM_FIELD_DEFAULT_OPTIONS","hideRequiredMarker","BrowserModule","BrowserAnimationsModule","MsalModule","PublicClientApplication","auth","clientId","authority","_","tenantId","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","piiLoggingEnabled","StoreModule","EffectsModule","TranslateLoader","missingTranslationHandler","MissingTranslationHandler","defaultLanguage","StoreDevtoolsModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","je"],"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/classes/role-update-aware-provider.ts","./src/app/requests/components/request-action-reason/request-action-reason.component.html","./src/app/requests/components/request-action-reason/request-action-reason.component.ts","./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-download.service.ts","./src/app/requests/services/file-upload.service.ts","./src/app/requests/services/requests.service.ts","./src/app/shared/components/app-chips/chips.component.html","./src/app/shared/components/app-chips/chips.component.ts","./src/app/shared/components/app-chips/chips.module.ts","./src/app/shared/components/app-currency-input/app-currency-input.component.html","./src/app/shared/components/app-currency-input/app-currency-input.component.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-date-range/app-date-range.component.html","./src/app/shared/components/app-date-range/app-date-range.component.ts","./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-input/app-input.component.html","./src/app/shared/components/app-input/app-input.component.ts","./src/app/shared/components/app-percent-input/app-percent-input.component.html","./src/app/shared/components/app-percent-input/app-percent-input.component.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/file-upload-progress/file-upload-progress.component.html","./src/app/shared/components/file-upload-progress/file-upload-progress.component.ts","./src/app/shared/components/file-uploader/file-uploader.component.html","./src/app/shared/components/file-uploader/file-uploader.component.ts","./src/app/shared/components/input-chips/input-chips.component.html","./src/app/shared/components/input-chips/input-chips.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/radio-group-form/radio-group-form.component.html","./src/app/shared/components/radio-group-form/radio-group-form.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/components/rich-text/rich-text.module.ts","./src/app/shared/components/select-search-dropdown/select-search-dropdown.component.html","./src/app/shared/components/select-search-dropdown/select-search-dropdown.component.ts","./src/app/shared/components/with-destroy/with-destroy.mixin.ts","./src/app/shared/constants/api.constants.ts","./src/app/shared/constants/form-field.constant.ts","./src/app/shared/constants/pages.constants.ts","./src/app/shared/constants/upload-restrictions.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-no-selection.directive.ts","./src/app/shared/directives/click-stop-propagation.directive.ts","./src/app/shared/directives/custom-hint.directive.ts","./src/app/shared/directives/dnd.directive.ts","./src/app/shared/directives/easy-aria.directive.ts","./src/app/shared/directives/tooltip.directive.ts","./src/app/shared/directives/user-permissions-v2.directive.ts","./src/app/shared/directives/user-permissions.directive.ts","./src/app/shared/guards/auth.guard.ts","./src/app/shared/guards/translation-loaded.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/directives.module.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/components/shared/components/truncate-middle/truncate-middle.component.html","./src/app/shared/components/shared/components/truncate-middle/truncate-middle.component.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/pit-translate-loader.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/environments/environment.prod.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/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/shared/guards/root-redirect.guard.ts","./src/app/help/components/features/features.component.ts","./src/app/app-routing.module.ts","./src/app/help/components/features/features.component.html","./src/app/shared/services/application-insights.service.ts","./src/app/version/new-version/service/new-version.constants.ts","./src/app/version/new-version/service/new-version.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/version/new-version/new-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 * RequestTypeInventoryTypes\n */\nexport const loadRequestTypeInventoryTypes = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes',\n props<{ requestType: string }>()\n);\nexport const lazyLoadRequestTypeInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load RequestTypeInventoryTypes',\n props<{ requestType: string }>()\n);\nexport const loadRequestTypeInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes Success',\n props<{ requestTypeInventoryTypes: CodeNameModel[] }>()\n);\nexport const loadRequestTypeInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes 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\nexport const loadThirdPartyCompanies = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies'\n);\nexport const lazyLoadThirdPartyCompanies = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyCompanies'\n);\nexport const loadThirdPartyCompaniesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies Success',\n props<{ thirdPartyCompanies: CodeNameModel[] }>()\n);\nexport const loadThirdPartyCompaniesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies 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 loadRequestTypeInventoryTypes,\n loadRequestTypeInventoryTypesFailure,\n loadRequestTypeInventoryTypesSuccess,\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 loadThirdPartyCompanies,\n loadThirdPartyCompaniesFailure,\n loadThirdPartyCompaniesSuccess,\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 requestTypeInventoryTypes: 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 thirdPartyCompanies: CodeNameModel[];\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 requestTypeInventoryTypes: [],\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 thirdPartyCompanies: [],\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(loadRequestTypeInventoryTypes, state => ({...state, requestTypeInventoryTypes: []})),\n on(loadRequestTypeInventoryTypesSuccess, (state, action) => ({...state, requestTypeInventoryTypes: action.requestTypeInventoryTypes})),\n on(loadRequestTypeInventoryTypesFailure, state => ({...state, requestTypeInventoryTypes: []})),\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 on(loadThirdPartyCompanies, state => ({...state, thirdPartyCompanies: []})),\n on(loadThirdPartyCompaniesSuccess, (state, action) => ({...state, thirdPartyCompanies: action.thirdPartyCompanies})),\n on(loadThirdPartyCompaniesFailure, state => ({...state, thirdPartyCompanies: []})),\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 selectRequestTypeInventoryTypes = createSelector(\n selectRefData,\n (state) => state.requestTypeInventoryTypes\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 selectThirdPartyCompanies = createSelector(\n selectRefData,\n (state) => state.thirdPartyCompanies,\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 {Subject, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\nimport {AbstractRoleProvider} from './role-provider';\nimport {Injectable} from '@angular/core';\n\nexport interface RoleUpdateEvent {\n source: AbstractRoleUpdateAwareProvider;\n data: any;\n}\n\n@Injectable()\nexport abstract class AbstractRoleUpdateAwareProvider extends AbstractRoleProvider {\n protected rolesUpdateDataSubject = new Subject();\n public roleUpdates$: Observable = this.rolesUpdateDataSubject.asObservable().pipe(\n map(data => ({source: this, data})),\n share()\n );\n}\n","
\n
\n \n {{ 'module.requests.text.add-reason' | translate }}\n {{ ('common.button.' + actionName | translate) + (fileName ? ' ' + fileName : '') }}:\n \n\n
\n \n \n \n \n
\n
\n
\n attachmentList.clientHeight ? getScrollbarWidth() + 14 : -14) + 'px'\n }\"\n #attachmentList\n >\n \n
\n \n \n {{ fileJob.file.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n {{ 'common.button.' + mainButtonTitle | translate }}\n \n
\n \n
\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n InjectionToken,\n Inject,\n Optional,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport {ActionsReasonService} from '../../services/actions-reason.service';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport memoize from 'lodash/memoize';\nimport {BehaviorSubject, combineLatest, merge, Observable, Subject, of, EMPTY, ReplaySubject, defer} from 'rxjs';\nimport {FILESCANCODE, FileUploadService} from '../../services/file-upload.service';\nimport {WithDestroy} from '../../../shared/components/with-destroy/with-destroy.mixin';\nimport {switchMap, shareReplay, takeUntil, map, delay, finalize} from 'rxjs/operators';\nimport {UploadLinkModel} from '../../models/upload-link.model';\nimport {HttpEventType} from '@angular/common/http';\nimport {BlobStorageUploadJob} from '../../models/file.model';\nimport {FILE_SIZE_RESTRICTIONS} from '../../../shared/models/upload-file-restrictions.model';\nimport {FILE_TYPES} from '../../../shared/constants/upload-restrictions.constants';\nimport {RequestsService} from '../../services/requests.service';\nimport {FileSizeRestriction} from '../../../shared/models/upload-file-restrictions.model';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport {MessageService} from '../../../shared/services/message-service.service';\nimport { LoaderService } from '../../../shared/services/loader.service';\n\nexport type RequestActionPositions = 'bottom-right' | string;\nexport interface RequestActionReasonOptions {\n attachmentAvailable: boolean;\n isRequired: boolean;\n actionName?: string;\n showLabel?: boolean;\n fieldLabel?: string;\n label?: string;\n position?: RequestActionPositions;\n}\nexport interface RequestActionReasonContext {\n [k: string]: any;\n}\nexport const REQUEST_ACTION_REASON_OPTIONS = new InjectionToken('REQUEST_ACTION_REASON_OPTIONS');\nexport const REQUEST_ACTION_REASON_CONTEXT = new InjectionToken('REQUEST_ACTION_REASON_CONTEXT');\n\nexport function doOnSubscribe(onSubscribe: () => void): (source: Observable) => Observable {\n return function inner(source: Observable): Observable {\n return defer(() => {\n onSubscribe();\n return source;\n });\n };\n}\n\nexport interface FileUploadJob {\n file: File;\n progress: Subject;\n cancelled: Subject;\n link: Observable;\n uploadedFile: Observable;\n}\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 extends WithDestroy() implements OnInit {\n @ViewChild('attachmentInput', {\n read: ElementRef,\n static: false\n })\n attachmentInput: ElementRef;\n /**\n * @description Action Description\n */\n public actionName: string;\n public showLabel = true;\n public fieldLabel: 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 private _attachmentFileJobs: BehaviorSubject> = new BehaviorSubject([]);\n get attachmentFileJobs(): Array {\n return this._attachmentFileJobs.value;\n }\n set attachmentFileJobs(attachmentFileJobs: Array) {\n this._attachmentFileJobs.next(attachmentFileJobs);\n }\n private _excludedFileJobs: BehaviorSubject> = new BehaviorSubject([]);\n get excludedFileJobs(): Array {\n return this._excludedFileJobs.value;\n }\n set excludedFileJobs(excludedFileJobs: Array) {\n this._excludedFileJobs.next(excludedFileJobs);\n }\n\n fileSize: FileSizeRestriction = FILE_SIZE_RESTRICTIONS.GLOBAL;\n\n fileType$ = this.requestService.getFileTypes().pipe(\n map(data => data[FILE_TYPES.DEFAULT]),\n takeUntil(this.ngUnsubscribe$)\n );\n\n private value = '';\n\n constructor(\n private actionsReasonService: ActionsReasonService,\n private cd: ChangeDetectorRef,\n private fb: FormBuilder,\n private requestService: RequestsService,\n private fileUploadService: FileUploadService,\n private messageService: MessageService,\n private loaderService: LoaderService,\n @Optional() @Inject(REQUEST_ACTION_REASON_OPTIONS) public options: RequestActionReasonOptions,\n @Optional() @Inject(REQUEST_ACTION_REASON_CONTEXT) private context: RequestActionReasonContext\n ) {\n super();\n }\n\n onAttachmentsChange() {\n const createJob = file => ({\n file,\n progress: null,\n cancelled: null,\n link: null,\n uploadedFile: null\n });\n Array.from(this.attachmentInput.nativeElement.files)\n .filter(f => !UtilsService.isFileFitsBySize(f.size, this.fileSize))\n .forEach(() => {\n this.messageService.showSystemMessage(\n 'warning',\n 'File upload error',\n `File size exceeds limitation of ${this.fileSize.sizeNumber} ${this.fileSize.sizeType}`\n );\n });\n this.attachmentFileJobs = [\n ...this.attachmentFileJobs,\n ...Array.from(this.attachmentInput.nativeElement.files)\n .filter(f => UtilsService.isFileFitsBySize(f.size, this.fileSize))\n .map(createJob)\n ];\n\n this.attachmentInput.nativeElement.value = '';\n setTimeout(() => {\n this.cd.markForCheck();\n }, 0);\n }\n removeAttachment(attachmentIndex: number) {\n this.excludedFileJobs = [...this.excludedFileJobs, this.attachmentFileJobs[attachmentIndex]];\n setTimeout(() => {\n this.cd.markForCheck();\n }, 0);\n }\n\n public ngOnInit(): void {\n this.actionName = this.actionsReasonService.getAction() || this.options?.actionName;\n if(this.options?.showLabel != null) {\n this.showLabel = this.options?.showLabel;\n }\n this.fieldLabel = this.options?.fieldLabel;\n this.position = this.actionsReasonService.getPosition() || this.options?.position;\n this.mainButtonTitle = this.actionsReasonService.getMainButtonTitle();\n this.isRequired = this.actionsReasonService.getIsRequired() || this.options?.isRequired;\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 const makeTimer = (job: FileUploadJob) => {\n job.progress = job.progress || new ReplaySubject(1);\n job.cancelled = job.cancelled || new Subject();\n job.link =\n job.link ||\n this.fileUploadService.requestAttachmentUploadLink(this.context.requestId, 'stage-action-attachment', job.file).pipe(\n doOnSubscribe(() => {\n // Display some progress in case if link process has started\n job.progress.next(1);\n })\n );\n\n job.uploadedFile =\n job.uploadedFile ||\n job.link.pipe(\n switchMap(uploadLink =>\n this.fileUploadService.uploadFileWithProgress(uploadLink, job.file).pipe(\n switchMap(event => {\n this.loaderService.showLoader();\n if (event.type === HttpEventType.UploadProgress) {\n const progress = Math.floor((event.loaded / event.total) * 100);\n job.progress.next(progress);\n }\n this.cd.markForCheck();\n if (event.type === HttpEventType.Response) {\n job.progress.next(100);\n }\n if (event.type === HttpEventType.Response) {\n return of(event).pipe(delay(5000), switchMap(() =>\n this.fileUploadService.scanUploadFile(uploadLink.uploadId, job.file.name).pipe(\n switchMap(res => {\n if (res.code === FILESCANCODE.SAFE) {\n return of({\n uploadId: uploadLink.uploadId,\n uploadUrl: uploadLink.uploadUrl,\n fileName: job.file.name,\n fileSize: job.file.size\n });\n }\n job.cancelled.next();\n const indexesToRemove: number[] = [];\n\n this.attachmentFileJobs.forEach((element, index) => {\n if (element.file.name === job.file.name) {\n indexesToRemove.push(index);\n }\n });\n\n indexesToRemove.forEach((index) => {\n this.removeAttachment(index);\n });\n\n console.error(job.file.name);\n return EMPTY;\n }))\n ));\n }\n return EMPTY;\n }),\n finalize(() => this.loaderService.hideLoader())\n )\n ),\n takeUntil(job.cancelled),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n return job.uploadedFile;\n };\n\n combineLatest([this._attachmentFileJobs, this._excludedFileJobs])\n .pipe(\n switchMap(([attachmentJobs, excludedJobs]) => {\n const activeJobs = attachmentJobs.filter(aj => !excludedJobs.includes(aj));\n const deactivatedJobs = attachmentJobs.filter(aj => excludedJobs.includes(aj));\n deactivatedJobs.forEach(job => job.cancelled.next());\n const resolutionJobs = activeJobs.map(makeTimer);\n return merge(...resolutionJobs);\n })\n )\n .subscribe(() => {});\n }\n getScrollbarWidth = memoize(() => {\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n (outer.style as any).msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode.removeChild(outer);\n\n return scrollbarWidth;\n });\n\n public onConfirm(): void {\n if (this.form.valid && this.form.controls && this.form.controls.comment) {\n this.actionsReasonService.confirmAction(\n this.form.controls.comment.value,\n Promise.all(\n this.attachmentFileJobs\n .filter(f => !this.excludedFileJobs.includes(f))\n .map(fileJob => fileJob.uploadedFile)\n .map(file => file.toPromise())\n )\n );\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 }\n return null;\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 MRN_MAX_LENGTH = 32;\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 MRN_PATTERN = /^[a-zA-Z0-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: '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 (Legacy)',\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';\nimport { BlobStorageUploadJob } from '../models/file.model';\n\nexport interface IActionReasonAction {\n action?: string;\n buttonClicked?: 'confirm' | 'cancel' | string;\n comment?: string;\n attachments?: Promise;\n}\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 = 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, attachments: Promise = null): void {\n this.actionReason.next({action: this.currentAction, buttonClicked: 'confirm', comment, attachments});\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 { HttpResponse, HttpHeaders } from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {saveAs} from 'file-saver';\nimport {catchError} from 'rxjs/operators';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {EMPTY} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileDownloadService {\n constructor(private errorHandlingHttp: ErrorHandlingHttpClient) {}\n\n public getFileBlob(url: string, payload?: any): Promise<[Blob, HttpHeaders]> {\n return new Promise((resolve, reject) => {\n const options = {\n observe: 'response',\n responseType: 'blob'\n };\n\n const http$ = payload\n ? this.errorHandlingHttp.post>(url, payload, options)\n : this.errorHandlingHttp.get>(url, options);\n http$\n .pipe(\n catchError(e => {\n reject(e);\n return EMPTY;\n })\n )\n .subscribe(resp => {\n resolve([resp.body, resp.headers]);\n });\n });\n }\n public static getFileNameFromContentDispostion(disposition: string): string {\n const utf8FilenameRegex = /filename\\*=UTF-8''([\\w%\\-.]+)(?:; ?|$)/i;\n const asciiFilenameRegex = /^filename=([\"']?)(.*?[^\\\\])\\1(?:; ?|$)/i;\n\n let fileName: string = null;\n if (utf8FilenameRegex.test(disposition)) {\n fileName = decodeURIComponent(utf8FilenameRegex.exec(disposition)[1]);\n } else {\n // prevent ReDos attacks by anchoring the ascii regex to string start and\n // slicing off everything before 'filename='\n const filenameStart = disposition.toLowerCase().indexOf('filename=');\n if (filenameStart >= 0) {\n const partialDisposition = disposition.slice(filenameStart);\n const matches = asciiFilenameRegex.exec(partialDisposition);\n if (matches != null && matches[2]) {\n fileName = matches[2];\n }\n }\n }\n return fileName;\n }\n\n public downloadFile(url: string, fileName?: string, payload?: any): void {\n const options = {\n observe: 'response',\n responseType: 'blob'\n };\n\n const http$ = payload\n ? this.errorHandlingHttp.post>(url, payload, options)\n : this.errorHandlingHttp.get>(url, options);\n http$.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 return resp.headers.has('file-name') ? UtilsService.getFileNameFromHeaders(resp.headers) : null;\n }\n\n private getContentTypeFromHeader(resp: HttpResponse): string {\n return resp.headers.get('Content-Type') || 'application/octet-stream';\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","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 {delay, filter, first, map, repeat, switchMap, tap} 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';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from '../../shared/services/message-service.service';\nexport enum FILESCANCODE {\n SAFE = 'SAFE',\n UNSAFE = 'UNSAFE',\n PENDING = 'PENDING'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n pendingUploads: Array = [];\n\n constructor(\n private errorHandlingHttp: ErrorHandlingHttpClient,\n protected messageService: MessageService,\n protected translateService: TranslateService) {\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 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 scanUploadFile(uploadId: string, fileName: string): Observable{\n return this.errorHandlingHttp.get(API.scanAttachmentUploadFile(uploadId)).pipe(\n delay(1000),\n repeat(),\n filter(fileValidationResponse => fileValidationResponse.code !== FILESCANCODE.PENDING),\n tap(fileValidationResponse => {\n if (fileValidationResponse.code === FILESCANCODE.UNSAFE) {\n this.messageService.showSystemMessage('error',\n fileName + ' ' + this.translateService.instant('common.errors.file-scan-error'));\n return throwError(new Error('Upload canceled!'));\n }\n }),\n first(),\n map(fileValidationResponse => fileValidationResponse),\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 => {\n if (event.type === HttpEventType.Response) {\n return this.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createAttachmentRequest(\n createAttachmentUrl, uploadLink.uploadId, shouldRequestHasFileTypeParameter, attachmentFileType);\n }\n })\n );\n }\n return of(event);\n })\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, finalize, 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 {FILESCANCODE, 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';\nimport {FileDownloadService} from './file-download.service';\nimport { LoaderService } from '../../shared/services/loader.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 private loaderService: LoaderService\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.requestTypeInventoryTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.requestTypeInventoryTypes}`));\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 requestTypeInventoryTypesObservable: 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 /**\n * @depreacted Rewrite using store\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 public fetchPoPdf(requestId: string | number, poId: number, type: string): Observable<[Blob, string]> {\n return this.errorHandlingHttp\n .get(API.poPdfDownload(requestId, poId, type), {\n observe: 'response',\n responseType: 'blob' as 'json'\n })\n .pipe(map(resp => [resp.body, FileDownloadService.getFileNameFromContentDispostion(resp.headers.get('content-disposition'))]));\n }\n\n public downloadFile(url: string, fileName?: string): void {\n this.errorHandlingHttp\n .get>(url, {\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 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 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 this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'finance', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createProofOfPayments(requestId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\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 this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'external-pin', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createExternalPin(requestId, uploadLink.uploadId, reqItemId, reqType);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\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 headers: {\n username: this.userService.getCurrentUserName()\n }\n });\n }\n\n public updateAttachmentStatus(\n requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n attachmentId: string | number,\n status: string,\n rejectionReason?: string,\n isPrinterProofs?: boolean\n ): Observable {\n return this.errorHandlingHttp.put(\n `${API.updateAttachmentStatus[requestType](requestId, reqItemId, attachmentId, isPrinterProofs)}`,\n {attachmentId, status, rejectionReason},\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n }\n );\n }\n\n public updateItemStatus(\n requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n status: string,\n rejectionReason?: string,\n isPrinterProofs?: boolean\n ): Observable {\n return this.errorHandlingHttp.put(\n `${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 this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'sow', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createSowAttachment(requestId, poId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\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}).subscribe(\n (data: {value: string}) => {\n this.requestName.next(data.value);\n observable.next(data);\n },\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(\n requestId: string | number,\n actionType: string,\n stageCode: string,\n comment?: string,\n attachmentUploadIds?: string[]\n ): Observable> {\n return this.errorHandlingHttp.post(\n `${API.performAction(requestId)}`,\n {\n actionType,\n stageCode,\n comment,\n attachmentUploadIds\n },\n {\n headers: {\n username: this.userService.getCurrentUserName()\n },\n observe: 'response'\n }\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).subscribe(\n response => {\n this.callPO(requestId);\n observable.next(response);\n },\n error => observable.error(error)\n );\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)}`).subscribe(\n () => {\n this.callPO(requestId);\n observable.next();\n },\n err => observable.error(err)\n );\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 getRequestTypeInventoryTypes(): Observable {\n return this.requestTypeInventoryTypesObservable;\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(\n shareReplay({\n refCount: false,\n bufferSize: 1\n }),\n map(data => cloneDeep(data))\n );\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(catchError(() => of('')));\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 this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'asn', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createCardProductionWorkItemMilestoneAsn(\n requestId, printerId, itemId, milestoneId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\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(`${API.createCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\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\n ): 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 this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'art', file)\n .pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createArtworkAttachment(uploadLink.uploadId, requestId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\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 {{ label }}\n *\n :\n \n \n \n {{ element.value }}\n \n cancel\n \n \n \n \n \n \n {{ messageService.getControlErrorMessage(formControl.errors) }}\n \n\n","import {ChangeDetectionStrategy, Component, OnInit, Self, Optional, ChangeDetectorRef, Input, ViewChild} from '@angular/core';\nimport {ControlValueAccessor, FormArray, NgControl, ValidatorFn, FormControl, FormBuilder} from '@angular/forms';\nimport {MatChipInput, MatChipInputEvent} from '@angular/material/chips';\nimport {WithCheckControlUpdates} from '../../constants/form-field.constant';\nimport {MessageService} from '../../services/message-service.service';\nimport {WithDestroy} from '../with-destroy/with-destroy.mixin';\nimport {AbstractControl} from '@angular/forms';\n\n@Component({\n selector: 'app-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'appChips',\n providers: []\n})\nexport class ChipsComponent extends WithDestroy(WithCheckControlUpdates(self => self.chipsGroup)) implements OnInit, ControlValueAccessor {\n @Input() label: string;\n @Input() isRequired = false;\n @Input() testId = 'chips';\n @Input() fieldClass;\n @Input() valueValidator: () => ValidatorFn;\n @Input() type: 'number' | 'text' = 'text';\n @ViewChild('newChipInput', {\n read: MatChipInput\n })\n newChipInput: MatChipInput;\n\n chipsGroup = this.fb.group({\n elements: this.fb.array([])\n });\n\n constructor(\n @Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef,\n public messageService: MessageService,\n private fb: FormBuilder\n ) {\n super(cd);\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n get formControl(): FormArray {\n return this.chipsGroup?.get('elements') as FormArray;\n }\n get values() {\n return this.formControl.value;\n }\n onChangeFn: (...args: any[]) => void;\n onTouchFn: (...args: any[]) => void;\n isDisabled = false;\n\n writeValue(value: any[]): void {\n if (value && !Array.isArray(value)) {\n throw new Error('Value should be array');\n }\n this.formControl.clear();\n if (value) {\n value.forEach(element => {\n this.formControl.push(new FormControl(element, this.valueValidator?.()));\n });\n }\n }\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouchFn = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnInit(): void {}\n\n private update() {\n this.onChangeFn(this.formControl.value);\n }\n\n get value() {\n return this.formControl.controls.map(c => (this.type === 'number' ? +c.value : c.value));\n }\n\n get validValue() {\n return this.formControl.controls.filter(c => c.valid).map(c => (this.type === 'number' ? +c.value : c.value));\n }\n\n removeElement(formControl: AbstractControl) {\n this.formControl.removeAt(this.formControl.controls.findIndex(c => c === formControl));\n this.update();\n }\n\n onBackspace(keyboardEvent: KeyboardEvent, inputElement: any) {\n if (inputElement.value === '') {\n this.removeElement([...this.formControl.controls].pop());\n }\n }\n onPaste(event: ClipboardEvent) {\n let pastedText;\n if (event.clipboardData && event.clipboardData.getData) {\n pastedText = event.clipboardData.getData('text/plain');\n event.preventDefault();\n this.addElement({\n input: event.target as any,\n value: pastedText,\n chipInput: this.newChipInput\n });\n }\n }\n\n addElement(event: MatChipInputEvent) {\n if (event.value) {\n const multipleValues = event.value\n .split(/[,; \\t\\n]/g)\n .map(v => v.trim())\n .filter(v => !!v);\n multipleValues.forEach(value => {\n this.formControl.push(new FormControl(value, this.valueValidator ? [this.valueValidator?.()] : []));\n });\n event.chipInput.inputElement.value = '';\n this.update();\n }\n return true;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChipsComponent} from './chips.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {CommonDirectivesModule} from '../../pipes/directives.module';\nimport {MatIconModule} from '@angular/material/icon';\n\n@NgModule({\n declarations: [ChipsComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule, MatChipsModule, MatFormFieldModule, CommonDirectivesModule, MatIconModule],\n exports: [ChipsComponent]\n})\nexport class ChipsModule {}\n","\n $\n −\n \n {{inputLabel}}\n *:\n \n \n \n {{inputHint}}\n\n \n \n {{warningMessage}}\n \n \n {{getErrorMessage()}}\n\n","/* eslint-disable no-underscore-dangle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\nimport { WithCheckControlUpdates } from '../../constants/form-field.constant';\nimport { AutonumericDirective } from '../../directives/autonumeric.directive';\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-currency-input',\n templateUrl: './app-currency-input.component.html',\n styleUrls: ['./app-currency-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AppCurrencyInputComponent),\n multi: true\n }\n ]\n})\nexport class AppCurrencyInputComponent\n extends WithCheckControlUpdates(self => self.control)\n implements ControlValueAccessor, OnChanges\n{\n readonly defaultOptions = {\n digitGroupSeparator: ',',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n minimumValue: '0',\n maximumValue: 999999.9999,\n decimalPlaces: 4,\n decimalPlacesShownOnBlur: 4,\n watchExternalChanges: true\n };\n\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\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 @Input()\n get maxLength(): number {\n return this._maxLength || null;\n }\n set maxLength(value: number) {\n this._maxLength = value;\n }\n\n constructor(private messageService: MessageService, cd: ChangeDetectorRef) {\n super(cd);\n }\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public shouldShowCurrencySign = true;\n @Input() public shouldShowMinusSign = false;\n @Input() public inputClass?: string;\n @Input() public isTouched: string;\n\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public control: FormControl;\n @Input() public maxValue = 999999.9999;\n @Input() public decimals = 4;\n @Input() public useRequiredProperty = true;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n\n currencyControlOptions = Object.assign(this.defaultOptions);\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.control);\n }\n\n public getErrorMessage(): string {\n return this.control && this.control.errors ? this.messageService.getControlErrorMessage(this.control.errors) : '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\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 if (changes.decimals || changes.maxValue) {\n this.currencyControlOptions = Object.assign(this.defaultOptions);\n this.currencyControlOptions.decimalPlaces = this.decimals;\n this.currencyControlOptions.decimalPlacesShownOnBlur = this.decimals;\n this.currencyControlOptions.maximumValue = this.maxValue;\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","\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\n \n {{label ? label :'common.label.filter-dates' | translate}}\n *:\n \n \n \n\n \n \n
\n","import {Component, OnInit, ViewEncapsulation, ViewChild, Output, EventEmitter, Input, Self, Optional} from '@angular/core';\nimport moment, { Moment } from 'moment';\nimport {DaterangepickerDirective} from 'ngx-daterangepicker-material';\nimport {NgControl, ControlValueAccessor} from '@angular/forms';\n\ninterface DateRange {\n startDate: Moment;\n endDate: Moment;\n}\n\nconst DAYS_OF_WEEK_SHORT = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\nconst DATE_FORMAT = 'MM/DD/YYYY';\nexport const BUTTON_LOCATIONS: {\n INSIDE: 'inside';\n OUTSIDE: 'outside';\n} = {\n INSIDE: 'inside',\n OUTSIDE: 'outside'\n};\ntype ValueOf = T[keyof T];\n\n\n@Component({\n selector: 'app-date-range',\n templateUrl: './app-date-range.component.html',\n styleUrls: ['./app-date-range.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AppDateRangeComponent implements OnInit, ControlValueAccessor {\n @Input() testId;\n @Input() public showLabel: boolean;\n @Input() public showRanges = false;\n @Input() label?: string;\n @Input() rangeClass?: string;\n @Input() isRequired?: boolean;\n @Input() buttonClearLabel?: string;\n @Input() isDisabled = false;\n @Input() buttonLocation: ValueOf = 'outside';\n\n @Output() public rangeSelected: EventEmitter = new EventEmitter();\n @ViewChild(DaterangepickerDirective) ngxDaterangepickerMd: any;\n\n @ViewChild(DaterangepickerDirective, {static: true}) private pickerDirective: DaterangepickerDirective;\n\n public get selected(): {startDate: Moment; endDate: Moment} {\n return this.ctrl?.control?.value;\n }\n\n public ranges = {};\n public locale: any = {\n separator: ' - ',\n format: DATE_FORMAT,\n daysOfWeek: DAYS_OF_WEEK_SHORT\n };\n public readonly BUTTON_LOCATIONS = BUTTON_LOCATIONS;\n\n public onChange: (value: DateRange) => void;\n public onTouched: () => void;\n\n constructor(@Self() @Optional() public ctrl?: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: (value: DateRange) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n ngOnInit(): void {\n this.ranges = this.showRanges\n ? {\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(1, 'month').add(1, 'day'), moment()],\n 'Last 90 Days': [moment().subtract(3, 'month').add(1, 'day'), moment()],\n 'Last Year': [moment().subtract(1, 'year').add(1, 'day'), moment()]\n }\n : {};\n }\n\n public onChangeApply(e: Event): void {\n if (!(e instanceof Event)) {\n return;\n }\n if (!(e as any).target.value.length) {\n this.clear();\n return;\n }\n\n const dateString = (e as any).target.value.split(this.locale.separator);\n const start = moment(dateString[0], this.locale.format);\n const end = dateString.length < 2 ? moment(dateString[0], this.locale.format) : moment(dateString[1], this.locale.format);\n\n if (!start.isValid() || !end.isValid() || start > end) {\n this.ctrl?.control?.setErrors({incorrectDate: true});\n return;\n }\n\n this.ctrl?.control?.setValue({\n startDate: start,\n endDate: end\n });\n }\n\n public onModelChange(e: Event): void {\n this.rangeSelected.emit(e);\n }\n\n public openCalendar(): void {\n if (!this.isDisabled) {\n this.pickerDirective.open();\n }\n }\n\n public clear(): void {\n this.ctrl.reset();\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}}\n *:\n \n \n \n \n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n SimpleChanges,\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 { AutonumericDirective, AutonumericUpdateTriggerEventType } from '../../directives/autonumeric.directive';\nimport { MessageService } from '../../services/message-service.service';\nimport { Options as AutonumericOptions, EmptyInputBehaviorOption } from 'autonumeric';\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',\n templateUrl: './app-input.component.html',\n styleUrls: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppInputComponent implements ControlValueAccessor, OnChanges, OnInit, AfterViewInit, DoCheck, OnDestroy {\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() public isTouched: boolean;\n @Input() public autoFocus?: boolean;\n @Input() useRequiredProperty = true;\n private _isDisabled = null;\n @Input() set isDisabled(isDisabled: boolean) {\n this._isDisabled = isDisabled;\n this.ctrl?.control?.[isDisabled ? 'disable' : 'enable']({emitEvent: false});\n }\n @Input() set emptyInputBehavior(emptyInputBehavior: EmptyInputBehaviorOption) {\n this.currencyControlOptions = {\n ...this.currencyControlOptions,\n emptyInputBehavior\n };\n }\n\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\n @Input()\n get maxLength(): number { return this._maxLength || null; }\n set maxLength(value: number) { this._maxLength = value; }\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 // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean; private _maxLength: number;\n private ngUnsubscribe = new Subject();\n\n public focused = false;\n\n public currencyControlOptions: AutonumericOptions & {[k: string]: any} = {\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\n private oldTouched = null;\n private oldValue = null;\n private oldDisabled = null;\n private oldErrors = null;\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.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(\n this._maxLength - this.currencyControlOptions.decimalPlaces - 1) + '.' + '9'.repeat(this.currencyControlOptions.decimalPlaces) :\n '9'.repeat(this._maxLength);\n } else {\n this.currencyControlOptions.maximumValue = undefined;\n }\n\n if (changes.ctrl && this.input) {\n if (this.ctrl?.control?.value) {\n this.input.instance.set(this.ctrl.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n }\n\n ngOnInit() {\n this.ctrl?.control?.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n ngDoCheck() {\n if (this.ctrl?.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n return this.cd.markForCheck();\n }\n if (this.ctrl?.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl?.disabled;\n return this.cd.markForCheck();\n }\n if (this.ctrl?.value && this.ctrl.value !== this.oldValue) {\n this.oldValue = this.ctrl.value;\n return this.cd.markForCheck();\n }\n if(JSON.stringify(this.ctrl?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = this.ctrl.errors;\n return 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\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","\n %\n \n {{inputLabel}}\n *:\n \n \n \n {{inputHint}}\n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n Optional,\n Self,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {AutonumericDirective} from '../../directives/autonumeric.directive';\nimport {MessageService} from '../../services/message-service.service';\nimport {ControlValueAccessor, FormControl, NgControl} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\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-percent-input',\n templateUrl: './app-percent-input.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppPercentInputComponent implements ControlValueAccessor, OnChanges {\n\n readonly defaultOptions = {\n digitGroupSeparator: ',',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n minimumValue: '0',\n maximumValue: 100.00,\n decimalPlaces: 2,\n decimalPlacesShownOnBlur: 2,\n watchExternalChanges: true\n };\n\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\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\n constructor(private messageService: MessageService,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public inputClass?: string;\n @Input() public isTouched: string;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean;\n\n currencyControlOptions = Object.assign(this.defaultOptions);\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n\n public getErrorMessage(): string {\n return this.ctrl.control && this.ctrl.control.errors ?\n this.messageService.getControlErrorMessage(this.ctrl.control.errors) : '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.control && this.input) {\n if (this.ctrl.control && this.ctrl.control.value) {\n this.input.instance.set(this.ctrl.control.value);\n } else {\n this.input.instance.clear();\n }\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","\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
\n
\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\n\n@Component({\n selector: 'app-file-upload-progress',\n templateUrl: './file-upload-progress.component.html',\n styleUrls: ['./file-upload-progress.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class FileUploadProgressComponent {\n\n @Input() file: {\n progress: number;\n };\n}\n","
\n
\n
\n
\n \n {{uploaderLabel}}\n *:\n {{files.length}}\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n or drag and drop them here\n \n
\n
\n \n
\n \n
\n \n {{ file?.name || file?.fileName }}\n \n

\n \n {{ utilsService.getFormattedBytes(file.size !== undefined ? file.size : file.fileSize) }}\n \n \n {{file?.progress + '%'}}\n \n

\n

\n {{file.status}}\n \n {{file.reviewer.firstName}} {{file.reviewer.lastName}}\n {{file.updatedAt | date : 'MM/dd/yyyy, hh:mm a'}}\n \n

\n

\n {{'module.requests.upload.rejection-reason' | translate | uppercase}}:\n {{file.rejectionReason}}\n

\n \n Upload failed\n
\n
\n \n
\n
\n \n
\n
\n Upload failed\n \n
\n
\n
\n \n
\n
\n \n {{'common.restrictions.file-size-exceeded' | translate : {size: (restrictionOptions.fileSize.sizeNumber + restrictionOptions.fileSize.sizeType)} }}\n
\n
\n\n","import { HttpErrorResponse, HttpEventType } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Observable, of, Subject, throwError, BehaviorSubject } from 'rxjs';\nimport { finalize, map, takeUntil } from 'rxjs/operators';\n\nimport { ARTWORK_STATUSES } from '../../../requests/constants/artwork-file-statuses.constants';\nimport { File } from '../../../requests/models/file.model';\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { FILE_TYPES } from '../../constants/upload-restrictions.constants';\nimport { RestrictionOptionsObject } from '../../models/upload-file-restrictions.model';\nimport { Events, EventService } from '../../services/event-service.service';\nimport { LoaderService } from '../../services/loader.service';\nimport { MessageService } from '../../services/message-service.service';\nimport { UtilsService } from '../../services/utils.service';\n\n@Component({\n selector: 'app-file-uploader',\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileUploaderComponent implements OnInit, OnDestroy, OnChanges {\n @Input() public uploadFunction: (file: any) => Observable;\n @Input() public beforeUploadFunction?: () => Observable;\n @Input() public removeFunction: (idWrapper: any, fileItem?: File) => Observable;\n @Input() public uploaderLabel: string;\n @Input() public moreLabel: string;\n @Input() public isDisabled: boolean;\n @Input() public initialFiles: any = [];\n @Input() public restrictionOptions?: RestrictionOptionsObject;\n // tslint:disable-next-line:no-unused-variable\n @Input() private type: string;\n @Input() public requestId: string | number;\n @Input() public itemToLinkId: string | number;\n @Input() public testId?: string;\n // tslint:disable-next-line:no-output-on-prefix\n @Output() public onUpdateFiles: EventEmitter = new EventEmitter();\n @Input() public usePageMaskLoader = true;\n @Input() public isRequired = false;\n @Input() public isPreviewEnabled = false;\n @Input() showDownloadAll = false;\n\n @ViewChild('fileDropRef', {static: false}) fileDropEl: ElementRef;\n\n public files: any = [];\n public ARTWORK_STATUSES = ARTWORK_STATUSES;\n public isRestrictionSizeWarningExist: boolean;\n public fileTypesToAccept: string[] = [];\n\n private filesToUploadNumber = 0;\n private proceededFilesNumber = 0;\n protected ngUnsubscribe = new Subject();\n private filesLoadingSubject = new BehaviorSubject([]);\n numberOfFilesLoading$ = this.filesLoadingSubject.pipe(map(files => files.length));\n\n constructor(protected requestService: RequestsService,\n public utilsService: UtilsService,\n protected cd: ChangeDetectorRef,\n private messageService: MessageService,\n private translate: TranslatePipe,\n protected loaderService: LoaderService,\n protected eventService: EventService) {\n }\n\n public ngOnInit() {\n this.requestService.getFileTypes()\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(data => {\n if (data) {\n this.fileTypesToAccept = this.restrictionOptions?.fileType ?\n data[this.restrictionOptions?.fileType] :\n data[FILE_TYPES.DEFAULT];\n this.cd.markForCheck();\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes?.initialFiles?.currentValue) {\n this.files = this.initialFiles.map(proof => ({ ...proof, progress: 100 }));\n }\n }\n\n private fileTypeAccepted(file: any) {\n if (!this.fileTypesToAccept || this.fileTypesToAccept.length === 0) {\n return true;\n }\n const fileTypeAccepted = this.fileTypesToAccept.indexOf(file.type) > -1;\n const [,fileExtension] = /(?:\\.([^.]+))?$/.exec(file.name);\n const fileExtensionAccepted = this.fileTypesToAccept.indexOf(`.${fileExtension.toLowerCase()}`) > -1;\n\n return fileTypeAccepted || fileExtensionAccepted;\n }\n\n private filterFileTypes(files: Array): Array {\n const filtered = files.filter(this.fileTypeAccepted.bind(this));\n\n if (filtered.length !== files.length) {\n this.messageService.showSystemMessage('error',\n this.translate.transform('common.errors.file-not-supported'));\n }\n\n return filtered;\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n const filtered = this.filterFileTypes(Array.from($event));\n\n if (!this.isDisabled) {\n this.isRestrictionSizeWarningExist = false;\n this.prepareFilesList(filtered);\n }\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler(files: FileList) {\n const filtered = this.filterFileTypes(Array.from(files));\n this.isRestrictionSizeWarningExist = false;\n this.prepareFilesList(Array.from(filtered));\n }\n\n /**\n * Download file from server\n *\n * @param index (File index)\n */\n public downloadFile(index: number) {\n if (this.files[index].url) {\n const fileUrl = this.files[index].url;\n this.requestService.downloadFile(fileUrl, this.files[index].fileName);\n } else {\n const attachmentId = this.files[index].attachmentId || this.files[index].id;\n this.requestService.downloadAttachment(this.requestId, attachmentId);\n }\n }\n\n /**\n * Download and open file for preview in a separate browser tab\n *\n * @param index (File index)\n */\n public openFileForPreview(index: number): void {\n const file = this.files[index];\n const fileUrl = file?.url || this.requestService.getFileUrl(file, this.requestId);\n this.requestService.getBlob(fileUrl).subscribe(data => {\n const blob = new Blob([data.body], {type: data.headers.get('content-type') || 'application/pdf'});\n const link = URL.createObjectURL(blob);\n window.open(link, '_blank');\n });\n }\n\n /**\n * Delete file from files list. Using for currently uploaded files\n *\n * @param index (File index)\n */\n deleteFile(index: number) {\n if (this.files[index].progress < 100) {\n return; // Upload in progress.\n }\n\n if (this.files[index].uploadFailed) {\n this.files.splice(index, 1);\n return;\n }\n if (this.usePageMaskLoader) {\n this.loaderService.showLoader();\n }\n const attachmentId = this.files[index].attachmentId || this.files[index].id;\n this.removeFunction(attachmentId, this.files[index])\n .pipe(\n this.triggerActionHistoryUpdate()\n )\n .subscribe(() => {\n this.files.splice(index, 1);\n if (this.usePageMaskLoader) {\n this.loaderService.hideLoader();\n }\n\n this.onUpdateFiles.emit({action: 'delete', data: attachmentId});\n this.cd.markForCheck();\n });\n }\n\n /**\n * Convert Files list to normal array list\n *\n * @param files (Files List)\n */\n prepareFilesList(files: Array) {\n const beforeUploadFunction = this.beforeUploadFunction || (() => of(true));\n\n if (!files.length) {\n return;\n }\n\n if (this.usePageMaskLoader) {\n this.loaderService.showLoader();\n }\n this.filesToUploadNumber = files.length;\n\n beforeUploadFunction().subscribe(() => {\n this.filesLoadingSubject.next([...this.filesLoadingSubject.value, ...files]);\n for (const item of files) {\n if (this.isValidByRestrictionsOptions(item)) {\n item.progress = 0;\n this.files = [...this.files, item];\n if (!item.uploaded) {\n const uploadObservable = this.uploadFunction(item);\n\n uploadObservable.pipe(map((event) => {\n this.cd.markForCheck();\n switch (event.type) {\n case HttpEventType.UploadProgress:\n const progress = Math.round(100 * event.loaded / event.total);\n return {progress, data: null};\n case HttpEventType.Response:\n return {progress: 100, data: event.body};\n default:\n return `Unhandled event: ${event.type}`;\n }\n }),\n finalize(() => {\n this.filesLoadingSubject.next(this.filesLoadingSubject.value.filter(f => f !== item));\n }),\n this.triggerActionHistoryUpdate()\n )\n .subscribe((progressObject: string | { progress: number; data: any }) => {\n if (!progressObject || typeof progressObject === 'string') {\n return;\n }\n item.progress = progressObject.progress;\n item.uploaded = item.progress === 100;\n\n if (typeof progressObject === 'object' && progressObject.data) {\n item.attachmentId = progressObject.data.id || progressObject.data.attachmentId;\n item.url = progressObject.data.url;\n\n if (this.itemToLinkId) {\n this.requestService.linkFileToReqItem(this.requestId, this.itemToLinkId, progressObject.data.id)\n .subscribe(() => {\n this.proceededFilesNumber ++;\n this.hideLoader();\n this.messageService.showSystemMessage('success',\n item.name + ' ' + this.translate.transform('module.requests.upload.success-upload'));\n }, error => throwError(error));\n } else {\n this.proceededFilesNumber ++;\n this.hideLoader();\n this.messageService.showSystemMessage('success',\n item.name + ' ' + this.translate.transform('module.requests.upload.success-upload'));\n }\n\n this.onUpdateFiles.emit({action: 'add', data: progressObject.data});\n this.cd.markForCheck();\n }\n }, (error: HttpErrorResponse) => {\n this.proceededFilesNumber ++;\n this.hideLoader();\n item.uploadFailed = true;\n this.cd.markForCheck();\n });\n }\n } else {\n this.proceededFilesNumber ++;\n this.hideLoader();\n }\n }\n });\n\n this.fileDropEl.nativeElement.value = '';\n }\n\n private hideLoader(): void {\n if (this.proceededFilesNumber === this.filesToUploadNumber) {\n if (this.usePageMaskLoader) {\n this.loaderService.hideLoader();\n }\n this.proceededFilesNumber = 0;\n this.filesToUploadNumber = 0;\n }\n }\n\n protected triggerActionHistoryUpdate() {\n return finalize(() => {\n this.eventService.emit({eventName: Events.UpdateActionHistory});\n });\n }\n\n private isValidByRestrictionsOptions(file): boolean {\n let fileValidBySize = true;\n\n if (this.restrictionOptions?.fileSize) {\n fileValidBySize = UtilsService.isFileFitsBySize(file.size, this.restrictionOptions.fileSize);\n this.isRestrictionSizeWarningExist = this.isRestrictionSizeWarningExist ? true : !fileValidBySize;\n }\n\n return fileValidBySize;\n }\n\n public downloadAll(): void {\n this.files.forEach(item => this.downloadItem(item));\n }\n\n public downloadItem(item): void {\n this.requestService.downloadItemFile(item, this.requestId);\n }\n}\n","\n\n\n \n {{ item }}\n cancel\n \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-input-chips',\n templateUrl: './input-chips.component.html',\n styleUrls: ['./input-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputChipsComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public inputLabel: string;\n @Input() public testId: string;\n @Input() public shouldShowChips = true;\n @Input() public numeric = false;\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 private _maxLength: number;\n\n public items: string[] = [];\n public itemsControl = new FormControl('');\n\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef,\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this.itemsControl.valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(items => {\n const itemsArr = items\n .split(/,\\s*/)\n .map(v => v[v.length - 1] === ',' ? v.slice(0, -1) : v)\n .filter(v => !!v);\n\n if (items[items.length - 1] === ',' || itemsArr.length > 1) {\n this.setItems(itemsArr);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(value: any): void {\n if (!value?.length) {\n this.items = [];\n this.cd.markForCheck();\n }\n }\n\n public onRemoveItem(item: string): void {\n this.items = this.items.filter(v => v !== item);\n this.ctrl.control.setValue(this.items);\n }\n\n public onEnterKeyup(items: string): void {\n if (items?.length) {\n this.setItems([items]);\n }\n }\n public onBlur(items: string): void {\n if (items?.length) {\n this.setItems([items]);\n }\n }\n\n private setItems(itemsArr: string[]) {\n this.items = [...new Set([...this.items, ...itemsArr])];\n this.itemsControl.reset('', { emitEvent: false });\n this.ctrl.control.setValue(this.items);\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","
\n
\n \n \n {{item.name}}\n \n
\n\n \n \n {{inputHint}}\n \n\n \n \n {{warningMessage}}\n \n\n \n \n {{getErrorMessage()}}\n \n
\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component, DoCheck,\n Input,\n OnInit,\n Optional,\n Self,\n ViewEncapsulation\n} from '@angular/core';\nimport {RadioGroupInputValue} from '../../models/radioGroupInputValue';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MessageService } from '../../services/message-service.service';\n\n@Component({\n selector: 'app-radio-group-form',\n templateUrl: './radio-group-form.component.html',\n styleUrls: ['./radio-group-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioGroupFormComponent implements ControlValueAccessor, OnInit, DoCheck {\n\n @Input() public buttonValues: RadioGroupInputValue[];\n @Input() public label?: string;\n @Input() public inputHint?: string;\n @Input() public hintIconExist?: boolean;\n @Input() public errorMessage?: string;\n @Input() public testId?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public isRequired?: boolean;\n @Input() private defaultSelectedIndex?: number;\n @Input() public isLabelInColumn = true;\n public isDisabled: boolean;\n\n private oldTouched = null;\n\n onChange: any = (event) => {\n this.ctrl?.control.setValue(event);\n };\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef, private messageService: MessageService) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (\n typeof this.ctrl.value !== 'boolean' &&\n typeof this.defaultSelectedIndex === 'number' &&\n this.buttonValues?.length\n ) {\n this.selectItem(this.buttonValues[this.defaultSelectedIndex].code);\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n }\n this.cd.markForCheck();\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n writeValue(value) {}\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n selectItem(value) {\n if (!this.isDisabled) {\n this.ctrl?.control.setValue(value);\n }\n }\n\n setDisabledState?(disabled: boolean) {\n this.isDisabled = disabled;\n }\n\n\n public getErrorMessage(): string {\n if (!this.errorMessage) {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n } return null;\n }\n return this.errorMessage;\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') {\n return sanitizedUrl;\n }\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) {\n return sanitizedUrl;\n }\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 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(injector, elementRef, cdr, domSanitizer, platformId, renderer, zone, service);\n }\n}\n\nconst _MatQuillMixinBase = mixinErrorState(mixinDisabled(MatQuillBase));\n\n@Directive()\nexport abstract class _MatQuillBase\n extends _MatQuillMixinBase\n implements\n AfterViewInit,\n CanDisable,\n CanUpdateErrorState,\n ControlValueAccessor,\n HasErrorState,\n MatFormFieldControl,\n OnChanges,\n OnDestroy,\n 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,\n parentForm,\n parentFormGroup,\n ngControl,\n injector,\n cdr,\n elementRef,\n domSanitizer,\n platformId,\n renderer,\n zone,\n 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 { RichTextComponent } from './rich-text.component';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { QuillInputComponent } from '../quill/quill.component';\nimport { CommonDirectivesModule } from '../../pipes/directives.module';\n\n@NgModule({\n declarations: [\n RichTextComponent,\n QuillInputComponent,\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, CommonModule, CommonDirectivesModule],\n exports: [\n RichTextComponent,\n QuillInputComponent,\n ],\n})\nexport class RichTextModule {\n\n}\n"," 0\"\n [appearance]=\"useCustomToggler ? 'legacy' : 'outline'\"\n #matFormField\n>\n
\n \n 0\"\n (click)=\"removeAllSelectedItems($event)\"\n [attr.data-test-id]=\"[testId, 'remove_selected_items'].join('_')\"\n class=\"filtered row ai-center remove-all-button remove-selected-items\"\n >\n {{ itemsFormCtrl.value?.length }}\n \n \n
\n\n \n\n \n \n close\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n {{ errorMessage }}\n \n\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-useless-escape */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n ElementRef,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n Self,\n Optional\n} from '@angular/core';\nimport {FormControl, NgControl} from '@angular/forms';\nimport {ReplaySubject, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\nimport {MatSelect} from '@angular/material/select';\nimport {FilteredItem} from '../../models/filtered-item.model';\nimport {MessageService} from '../../services/message-service.service';\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport isEqual from 'lodash/isEqual';\nimport {MatFormField} from '@angular/material/form-field';\nimport {UserModel} from '../../models/user.model';\n\nexport interface SelectSearchDropdownOption {\n label: string;\n value: T;\n level?: number;\n parent?: any;\n extras?: string[];\n disabled?: boolean;\n}\nexport type SelectSearchDropdownOptionsInput = string | SelectSearchDropdownOption;\n\ntype Comparator = (a: any, b: any) => boolean;\nexport const exactComparator: Comparator = (a: any, b: any) => a === b;\nexport const mdmIdComparator: Comparator = (a: any, b: any) => {\n if (a?.mdmId && b?.mdmId) {\n return a.mdmId === b.mdmId;\n }\n return false;\n};\n\nexport const userNameComparator: Comparator = (a: UserModel, b: UserModel) => a?.userName === b?.userName;\nexport const isEqualComparator: Comparator = (a: any, b: any) => isEqual(a, b);\nexport const optionValueComparatorFactory =\n (optionName: string) =>\n (a: any, b: any): boolean =>\n typeof a !== 'string' ? a[optionName] === b : a === b;\n\nexport const DEFAULT_COMPARATORS = [exactComparator, mdmIdComparator, isEqualComparator];\n\n@Component({\n selector: 'app-select-search-dropdown',\n templateUrl: './select-search-dropdown.component.html',\n styleUrls: ['./select-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectSearchDropdownComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n public normalizedItemList: SelectSearchDropdownOption[];\n\n @Input() useCustomToggler = false;\n @Input() useSelectAll = false;\n @Input() label: string = null;\n @Input() isRequired = false;\n @Input() isMultiple = false;\n @Input() testId = null;\n @Input() autoFocus = false;\n @Input() disableOptionCentering = true;\n @Input() comparators: Comparator[] = DEFAULT_COMPARATORS;\n @Input() canReset = true;\n\n @Input() public set itemsList(itemsList: SelectSearchDropdownOptionsInput[]) {\n const normalizedItemList = itemsList.map(il => (typeof il === 'string' ? {label: il, value: il} : il));\n const itemListValues = itemsList.map(il => (typeof il === 'string' ? il : il.value));\n /**\n * Reset selected values if they are absent in a new option list\n */\n if (Array.isArray(this.itemsFormCtrl.value)) {\n const boundedValue = this.itemsFormCtrl.value.filter(val => itemListValues.includes(val));\n const hasChange = this.itemsFormCtrl.value.length !== boundedValue.length;\n /**\n * Update only in case of value has been bounded\n */\n if (hasChange) {\n this.itemsFormCtrl.setValue(boundedValue);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n }\n this.normalizedItemList = normalizedItemList;\n this.filteredItemsList$.next(this.normalizedItemList);\n }\n\n @ViewChild('ItemsAssignSelect') public select: ElementRef;\n @ViewChild('ItemsAssignSelect', {static: true}) ItemsAssignSelect: MatSelect;\n @ViewChild('matFormField', {read: MatFormField, static: true}) matFormField: MatFormField;\n @Input() hint: TemplateRef;\n @Input() hintParams: any = {};\n // tslint:disable-next-line:no-output-on-prefix\n @Output() private onActionSave: EventEmitter = new EventEmitter();\n\n private _itemsFormCtrl = new FormControl([]);\n /** control for the selected items for multi-selection checkboxes */\n @Input() set itemsFormCtrl(itemsFormCtrl: FormControl) {\n this._itemsFormCtrl = itemsFormCtrl;\n }\n get itemsFormCtrl(): FormControl {\n if (this.ctrl?.control) {\n return this.ctrl?.control as FormControl;\n }\n return this._itemsFormCtrl;\n }\n\n @Input() public set value(value: any[]) {\n this.itemsFormCtrl.setValue(value || []);\n }\n\n public get value(): any[] {\n return this.itemsFormCtrl.value;\n }\n\n @Output() public valueChange = new EventEmitter();\n\n /** control for the MatSelect filter keyword multi-selection */\n public ItemsFormFilterCtrl: FormControl = new FormControl();\n\n /** list of items filtered by search keyword */\n public filteredItemsList$: ReplaySubject = new ReplaySubject(1);\n\n public isDropdownOpened: boolean;\n\n /** Subject that emits when the component has been destroyed. */\n // tslint:disable-next-line:variable-name\n private _onDestroy = new Subject();\n\n constructor(\n private messageService: MessageService,\n private fm: FocusMonitor,\n private elRef: ElementRef,\n @Self() @Optional() private ctrl: NgControl\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n writeValue(obj: unknown): void {\n this.ItemsAssignSelect.writeValue(obj);\n }\n registerOnChange(fn: () => void): void {\n this.ItemsAssignSelect.registerOnChange(fn);\n }\n registerOnTouched(fn: () => object): void {\n this.ItemsAssignSelect.registerOnTouched(fn);\n }\n setDisabledState?(isDisabled: boolean): void {\n this.ItemsAssignSelect.setDisabledState(isDisabled);\n }\n\n ngOnInit(): void {\n // load the initial items list\n this.filteredItemsList$.next(this.normalizedItemList);\n\n // listen for search field value changes\n this.ItemsFormFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n this.filterItemsMulti();\n });\n }\n\n reset(): void {\n this.itemsFormCtrl.setValue(null);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n\n ngAfterViewInit(): void {\n this.setInitialValue();\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.select, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }, 0);\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.itemsFormCtrl) {\n this.trackDisabledStateForItemsCtrl(changes.itemsFormCtrl.currentValue);\n }\n }\n\n private trackDisabledStateForItemsCtrl(control: FormControl) {\n (this.matFormField as any)?._changeDetectorRef.markForCheck();\n this.ItemsAssignSelect.setDisabledState(control?.disabled);\n control?.registerOnDisabledChange(isDisabled => {\n this.ItemsAssignSelect.setDisabledState(isDisabled);\n (this.matFormField as any)?._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Sets the initial value after the filteredItems are loaded initially\n */\n private setInitialValue(): void {\n this.filteredItemsList$.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n // setting the compareWith property to a comparison function\n // triggers initializing the selection according to the initial value of\n // the form control (i.e. _initializeSelection())\n // this needs to be done after the filteredItems are loaded initially\n // and after the mat-option elements are available\n this.ItemsAssignSelect.compareWith = (a: any, b: any) => this.comparators.some(comparator => comparator(a, b));\n });\n }\n\n private filterItemsMulti(): void {\n if (!this.normalizedItemList) {\n return;\n }\n // get the search keyword\n let search: string = this.ItemsFormFilterCtrl.value;\n if (!search) {\n const filteredItemsNoSearch: FilteredItem[] = this.normalizedItemList.map(item => ({\n value: item.value,\n label: item.label.replace(/(<([^>]+)>)/gi, ''),\n level: item.level,\n disabled: item.disabled\n }));\n\n this.filteredItemsList$.next(filteredItemsNoSearch);\n\n return;\n }\n search = search.toLowerCase();\n\n // prefiltered items\n const prefilteredItems = this.normalizedItemList.filter(\n filteredItem =>\n filteredItem.label\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n );\n\n // prefiltered items\n const prefilteredByExtrasItems = this.normalizedItemList.filter(filteredItem =>\n (filteredItem.extras || []).some(\n e =>\n e\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n )\n );\n\n // filter the items\n const filteredItems: FilteredItem[] = this.normalizedItemList\n .map(item => {\n if (prefilteredItems.indexOf(item) > -1 || prefilteredItems.findIndex(pfi => pfi.parent === item) > -1) {\n return ['label', item] as const;\n }\n if (prefilteredByExtrasItems.indexOf(item) > -1 || prefilteredByExtrasItems.findIndex(pfi => pfi.parent === item) > -1) {\n return ['extras', item] as const;\n }\n return null;\n })\n .filter(filteredItem => filteredItem != null)\n .map(([found, item]) => {\n const filteredItem = {\n value: item.value,\n label: item.label.replace(/(<([^>]+)>)/gi, ''),\n level: item.level,\n disabled: item.disabled\n };\n\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'i');\n filteredItem.label = '' + item.label.replace(regex, '$&');\n if (found === 'extras') {\n if (item.extras != null) {\n const foundExtras = item.extras.filter(e => e.indexOf(search) > -1).slice(0, 2);\n if (foundExtras.length > 0) {\n filteredItem.label = filteredItem.label + ` (${foundExtras.map(fe => fe.replace(regex, '$&')).join(', ')})`;\n }\n }\n }\n return filteredItem;\n });\n\n this.filteredItemsList$.next(filteredItems);\n }\n\n public removeAllSelectedItems(event: Event): void {\n event.stopPropagation();\n this.itemsFormCtrl.setValue([]);\n this.ItemsFormFilterCtrl.setValue('');\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(); // refreshed the MatOption state\n }\n\n public toggleSelectAll($event: boolean) {\n if (!$event) {\n this.itemsFormCtrl.setValue([]);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(); // refreshed the MatOption state\n } else {\n this.filteredItemsList$.pipe(take(1)).subscribe(fil => {\n this.itemsFormCtrl.setValue(fil.map(i => i.value));\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n fil.forEach(i => {\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(i);\n });\n });\n }\n }\n\n public saveSelectedItems() {\n this.ItemsAssignSelect.close();\n }\n\n public openedChange(opened: boolean) {\n this.isDropdownOpened = opened;\n\n if (!opened) {\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n }\n itemTrackFn(i: number, option: {label: string; value: any}) {\n return option.value;\n }\n\n public get errorMessage(): string {\n if (this.itemsFormCtrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.itemsFormCtrl.errors);\n }\n return '';\n }\n}\n","import {AbstractConstructor, Constructor} from '@angular/material/core/common-behaviors/constructor';\nimport {Subject, Observable} from 'rxjs';\nimport {OnDestroy} from '@angular/core';\n\nexport interface HasWithDestory {\n ngUnsubscribe$: Observable;\n ngOnDestroy(): void;\n}\n\nexport type CanWithDestroy = object;\n\nexport type HasWithDestroyCtor = Constructor & AbstractConstructor;\n\n// export function mixinHasDestroy>(base: T): HasWithDestroyCtor & T;\n\nexport function mixinHasDestroy | AbstractConstructor>(\n base: T\n): HasWithDestroyCtor & T {\n return class extends base implements OnDestroy {\n protected ngUnsubscribe: Subject;\n ngUnsubscribe$: Observable;\n\n constructor(...args: any[]) {\n super(...args);\n this.ngUnsubscribe = new Subject();\n this.ngUnsubscribe$ = this.ngUnsubscribe.asObservable();\n }\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n };\n}\nconst defaultClass = class {};\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithDestroyFn = | AbstractConstructor = new (...args: any[]) => typeof defaultClass>(\n// =======\n// type WithDestroyFn = | AbstractConstructor = typeof defaultClass>(\n// >>>>>>> FRNTOFF-10496 PO Signature\n base?: T\n) => HasWithDestroyCtor & T;\n\nexport const WithDestroy: WithDestroyFn = (base?) => (base ? mixinHasDestroy(base) : mixinHasDestroy(class {})) as unknown as any;\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 public static requestAttachment(requestId: number, attachmentId: number) {\n return `/api/requests/${requestId}/stages/attachments/${attachmentId}`;\n }\n\n public static purchaseOrderApprovalTaskControllerSearchTasks = '/api/purchase-order-approval-tasks';\n public static purchaseOrderApprovalTaskControllerCollectSearchFilterOptions = '/api/purchase-order-approval-tasks/filter-options';\n public static purchaseOrderApprovalTaskControllerCollectGetTaskDetails = (purchaseOrderNumber: number) =>\n `/api/purchase-order-approval-tasks/${purchaseOrderNumber}`;\n public static purchaseOrderApprovalTaskControllerReviewPurchaseOrders = `/api/purchase-order-approval-tasks/reviews`;\n public static purchaseOrderApprovalTaskControllerReviewPurchaseOrder = (purchaseOrderNumber: number) =>\n `/api/purchase-order-approval-tasks/${purchaseOrderNumber}/reviews`;\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 requestTypeInventoryTypes = (requestType: string) =>\n `/api/reference/request/inventory-types?requestType=${requestType}`;\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 public static thirdPartyCompanies = '/api/reference/request/third-party-production/companies';\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 reportsTrafficTracker = '/api/fn/reports/preview/traffic-tracker-report';\n public static reportsTrafficTrackerDownload = '/api/fn/reports/download/traffic-tracker-report/';\n public static reportsTrafficTrackerFilters = '/api/fn/reports/aggregate-filters/traffic-tracker-report';\n\n public static reportsSignedPo = '/api/signed-purchase-orders'; // @todo'/api/fn/reports/preview/shipping-report';\n // public static reportsShippingDownload = '/api/fn/reports/download/shipping-report/';\n public static reportsSignedPoFilters = '/api/signed-purchase-orders/filter-options';\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) =>\n `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks/${attachmentId}`,\n POP_PRODUCTION_REQUEST: (requestId, requestItemId, attachmentId) =>\n `/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) =>\n `api/requests/third-party-production/${requestId}/items/${requestItemId}/artworks/review`,\n FINANCIAL_SERVICES_REQUEST: (requestId, requestItemId) =>\n `/api/requests/financial-services/${requestId}/items/${requestItemId}/artworks/review`,\n BIF_PRODUCTION_REQUEST: (requestId, requestItemId) =>\n `/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) =>\n `/api/requests/third-party-production/${requestId}/items/${itemId}/external-pin-files`\n };\n\n public static deleteExternalPin = {\n PRODUCTION_REQUEST: (requestId, attachmentId, itemId) =>\n `/api/requests/card-production/${requestId}/items/${itemId}/external-pin-files/${attachmentId}`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, attachmentId, itemId) =>\n `/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) =>\n `/api/requests/ih-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`,\n doBulkWorkItemMilestoneUpdate: (requestId, printerId, itemId) =>\n `/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) {\n return `/api/requests/card-production/${requestId}/finance/attachments`;\n }\n public static deleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/finance/attachments/${attachmentId}`;\n }\n public static fsCreateProofOfPayment(requestId) {\n return `api/requests/financial-services/${requestId}/details/proofs-of-payment`;\n }\n public static fsDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/financial-services/${requestId}/details/proofs-of-payment/${attachmentId}`;\n }\n public static bifCreateProofOfPayment(requestId) {\n return `api/requests/bif-production/${requestId}/details/proofs-of-payment`;\n }\n public static bifDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/bif-production/${requestId}/details/proofs-of-payment/${attachmentId}`;\n }\n public static thirdPartyCreateProofOfPayment(requestId) {\n return `api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment`;\n }\n public static thirdPartyCreateOperationsAttachment(requestId) {\n return `api/requests/third-party-production/${requestId}/details/operations-attachments`;\n }\n public static thirdPartyDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment/${attachmentId}`;\n }\n public static thirdPartyDeleteOperationsAttachment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/operations-attachments/${attachmentId}`;\n }\n public static thirdPartyUpdateOperationsDetails(requestId) {\n return `api/requests/third-party-production/${requestId}/operations-details`;\n }\n public static thirdPartyUpdateCardCollateralDetails(requestId, itemId) {\n return `/api/requests/third-party-production/${requestId}/items/${itemId}/card-collateral-confirmation-details`;\n }\n public static thirdPartyUpdateConfirmedPrinters(requestId) {\n return `/api/requests/third-party-production/${requestId}/items/confirmed-printers`;\n }\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) {\n return `api/requests/image/${requestId}/art-file/attachments`;\n }\n public static imageDeleteArtFile(requestId, attachmentId) {\n return `/api/requests/image/${requestId}/art-file/attachments/${attachmentId}`;\n }\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 imageSaveTmReview = requestId => `/api/requests/image/${requestId}/tm-review`;\n public static imageUpdateRequestItemsCompleted(requestId) {\n return `api/requests/image/${requestId}/request-items/completed`;\n }\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) {\n return `/api/requests/card-production/${requestId}/artworks`;\n }\n public static attachmentDownload(requestId, attachmentId) {\n return `/api/requests/${requestId}/attachments/${attachmentId}`;\n }\n public static poPdfDownload(requestId, poId, type) {\n return `/api/requests/card-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static linkAttachment(requestId, requestItemId) {\n return `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks`;\n }\n public static deleteArtwork(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/artworks/${attachmentId}`;\n }\n public static getRequestId(id, draft = false) {\n return `/api/requests/${id}${draft ? '?draft' : ''}`;\n }\n public static updateRequestName(id) {\n return `/api/requests/${id}/name`;\n }\n public static updateRequestStatus(id) {\n return `/api/requests/${id}/status`;\n }\n public static updatePpm(requestId) {\n return `/api/requests/${requestId}/print-production-manager`;\n }\n public static changeRequestOwner(requestId) {\n return `/api/requests/${requestId}/request-owner`;\n }\n public static changeRequestTrafficManager(requestId) {\n return `/api/requests/${requestId}/traffic-manager`;\n }\n public static refreshProductOwner(requestId: number | string): string {\n return `/api/requests/${requestId}/events/product-owner-refresh`;\n }\n\n public static changeRequestDesigner(requestId) {\n return `/api/requests/${requestId}/designer`;\n }\n public static getWPNdetails(partNumber) {\n return `/api/reference/request/wpn/${partNumber}`;\n }\n public static getMerchantInfo(merchantId) {\n return `/api/reference/request/merchants/${merchantId}/details`;\n }\n public static getRequestSteps(requestId) {\n return `/api/requests/${requestId}/stages`;\n }\n public static managePO(requestId) {\n return `/api/requests/card-production/${requestId}/purchase-orders`;\n }\n public static updatePO(requestId, poId) {\n return `/api/requests/card-production/${requestId}/purchase-orders/${poId}`;\n }\n public static performAction(requestId) {\n return `/api/requests/${requestId}/stages/actions`;\n }\n public static getRequestPrinterWorkItems(requestId) {\n return `/api/requests/card-production/${requestId}/printers/work-items`;\n }\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 }\n public static updatePopProdMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updateFsrMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updateBifMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\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 }\n public static createSowAttachment(reqId, poId) {\n return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments`;\n }\n public static deleteSOWFile(reqId, poId, attachmentId) {\n return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments/${attachmentId}`;\n }\n public static getFile(fileId) {\n return `/api/files/${fileId}`;\n }\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(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createPopProductionWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createFsrWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createBifWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createThirdProdWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\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(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doPopProdBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doFsrBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doBifBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doThirdProdBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static cardProductionUpdateOperationsNotes(requestId) {\n return `api/requests/card-production/${requestId}/printers/details/operations-notes`;\n }\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 public static scanAttachmentUploadFile(uploadId){\n return `/api/requests/attachments/scan-statuses/${uploadId}`;\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 }\n public static cdUpdateDesigner(requestId) {\n return `/api/requests/card-design/${requestId}/designer`;\n }\n public static cdUpdateCsJobs(requestId) {\n return `/api/requests/card-design/${requestId}/cs-job-id`;\n }\n public static getProductUpc(productUpc) {\n return `/api/reference/request/product/${productUpc}`;\n }\n public static checkReplenishProductUpc(productUpc, wpn) {\n return `/api/requests/third-party-production/is-replenish/${productUpc}/${wpn}`;\n }\n public static cdUpdateTmDatesApproval(requestId) {\n return `/api/requests/card-design/${requestId}/tm-review`;\n }\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) =>\n `/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) =>\n `/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 createBifMatrix(requestId: string) {\n return `/api/requests/bif-production/${requestId}/matrix`;\n }\n public static bifDeleteMatrix(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/matrix/${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 public static createIhMatrix(requestId: string) {\n return `/api/requests/ih-production/${requestId}/matrix`;\n }\n public static ihDeleteMatrix(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/matrix/${attachmentId}`;\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) {\n return `/api/requests/${requestNumber}/contacts`;\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, DoCheck, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { AbstractConstructor, Constructor } from '@angular/material/core/common-behaviors/constructor';\nimport { Subject, Subscribable, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Don't forget to add providers in your component\n *\n * @example\n * providers: [\n * {\n * provide: UpdateTriggerContainer,\n * useExisting: forwardRef(() => PopItemComponent )\n * }\n * ],\n */\nexport interface UpdateTriggerContainerInterface {\n updateFormTrigger: Subscribable;\n}\n@Injectable()\nexport abstract class UpdateTriggerContainer implements UpdateTriggerContainerInterface {\n updateFormTrigger = new Subject();\n}\n\nexport interface HasUpdateTriggerListener {\n ngAfterViewInit(): void;\n ngOnDestroy(): void;\n}\n\nexport type CanUpdateTriggerListener = object;\n\nexport type HasUpdateTriggerListenerCtor = Constructor &\n AbstractConstructor &\n (new (...args: any[]) => HasUpdateTriggerListener);\n\nexport function mixinHasUpdateTriggerListener<\n T extends Constructor | AbstractConstructor\n>(ngUnsubscribeField = 'ngUnsubscribe$', base?: T): HasUpdateTriggerListenerCtor & T {\n return class extends base implements AfterViewInit, OnDestroy {\n protected updateTriggerSubscription: Subscription;\n protected updateTriggerListenerChangeDetector: ChangeDetectorRef;\n protected updateTriggerContainer: UpdateTriggerContainer;\n constructor(...args: any[]) {\n super(...args);\n args.forEach(a => {\n if (a instanceof ChangeDetectorRef || a?.markForCheck) {\n this.updateTriggerListenerChangeDetector = a;\n }\n if (a instanceof UpdateTriggerContainer || a?.updateFormTrigger) {\n this.updateTriggerContainer = a;\n }\n });\n }\n ngAfterViewInit(): void {\n if (super.ngAfterViewInit) {\n super.ngAfterViewInit && super.ngAfterViewInit();\n }\n if (this.updateTriggerContainer && this.updateTriggerListenerChangeDetector) {\n this.updateTriggerSubscription = this.updateTriggerContainer.updateFormTrigger\n .pipe(takeUntil(this[ngUnsubscribeField] || new Subject()))\n .subscribe(() => {\n this.updateTriggerListenerChangeDetector.markForCheck();\n });\n }\n }\n\n ngOnDestroy(): void {\n if (super.ngOnDestroy) {\n super.ngOnDestroy();\n }\n if (this.updateTriggerSubscription) {\n this.updateTriggerSubscription.unsubscribe();\n }\n }\n };\n}\nconst defaultClass = class {\n constructor(...args: any[]) {}\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithUpdateTriggerListenerFn = | AbstractConstructor = typeof defaultClass>(\n ngUnsubscribeField?: string,\n base?: T\n) => HasUpdateTriggerListenerCtor & T;\n\nexport const WithUpdateTriggerListener: WithUpdateTriggerListenerFn = (ngUnsubscribeField = 'ngUnsubscribe$', base?) =>\n (base\n ? mixinHasUpdateTriggerListener(ngUnsubscribeField, base)\n : mixinHasUpdateTriggerListener(ngUnsubscribeField, class {})) as unknown as any;\n\n\nexport interface HasCheckControlUpdates {\n ngDoCheck(): void;\n}\n\nexport type CanCheckControlUpdates = object;\n\nexport type HasCheckControlUpdatesCtor = Constructor &\n AbstractConstructor &\n (new (...args: any[]) => HasCheckControlUpdates & T);\n\nexport type mixinHasCheckControlUpdatesFn<\n T extends Constructor | AbstractConstructor,\n R = any\n> = (base: T, controlAccessor?: (self: R) => AbstractControl) => Omit & HasCheckControlUpdatesCtor;\n\nexport function mixinHasCheckControlUpdates(base, controlAccessor) {\n return class extends base implements DoCheck {\n private checkControlUpdatesCd: ChangeDetectorRef;\n private oldTouched;\n private oldValue;\n private oldDisabled;\n private oldErrors;\n\n constructor(...args: any[]) {\n super(...args);\n args.forEach(a => {\n if (a instanceof ChangeDetectorRef || a?.markForCheck) {\n this.checkControlUpdatesCd = a;\n }\n });\n }\n private getCheckControlUpdatesTarget() {\n return controlAccessor(this as any);\n }\n ngDoCheck(): void {\n const control = this.getCheckControlUpdatesTarget();\n if (control?.touched !== this.oldTouched) {\n this.oldTouched = control.touched;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (control?.disabled !== this.oldDisabled) {\n this.oldDisabled = control?.disabled;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (control?.value && control.value !== this.oldValue) {\n this.oldValue = control.value;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (JSON.stringify(control?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = control.errors;\n return this.checkControlUpdatesCd.markForCheck();\n }\n }\n };\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithCheckControlUpdatesFn = | AbstractConstructor = typeof defaultClass>(\n controlAccessor?: (self: R) => AbstractControl,\n base?: T\n) => ReturnType>;\n\nexport const WithCheckControlUpdates: WithCheckControlUpdatesFn = (controlAccessor, base?) =>\n (base ? mixinHasCheckControlUpdates(base, controlAccessor) : mixinHasCheckControlUpdates(class {}, controlAccessor)) as unknown as any;\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 APPROVALS: 'approvals',\n};\n\nexport enum ERRORS {\n auth = 'auth',\n permission = 'permission',\n notFound = '404',\n translationLoadError = 'translation',\n serviceUnavailable = 'service_unavailable'\n}\n","export interface FileTypes {\n CARD_PRODUCTION: {\n ARTWORK: string;\n ASN: string;\n PROOF_OF_PAYMENT: string;\n EXTERNAL_PIN: string;\n PO_SOW: string;\n };\n CARD_DESIGN: {\n ART: string;\n ARTWORK: string;\n };\n DEFAULT: string;\n DEFAULT_DESIGN: string;\n POP_DESIGN: {\n ART: string;\n ARTWORK: string;\n FS_FILE: string;\n };\n POP_PRODUCTION: {\n ARTWORK: string;\n ASN: string;\n OTHER: string;\n PARTNER_ART: string;\n PRINTER_PROOF: string;\n PRINTER_QUOTE: string;\n };\n FINANCIAL_SERVICES: {\n ARTWORK: string;\n ASN: string;\n FINANCE: string;\n };\n BIF_PRODUCTION: {\n FINANCE: string;\n ARTWORK: string;\n PRINTER_PROOF: string;\n ASN: string;\n MATRIX: string;\n };\n THIRD_PARTY_PRODUCTION: {\n FINANCE: string;\n ARTWORK: string;\n OPS: string;\n ASN: string;\n PO_SOW: string;\n EXTERNAL_PIN: string;\n };\n IH_PRODUCTION: {\n ARTWORK: string;\n PRINTER_PROOF: string;\n MATRIX: string;\n };\n IMAGE: {\n ART_FILE: string;\n };\n}\n\nexport const FILE_TYPES: FileTypes = {\n CARD_PRODUCTION: {\n ARTWORK: 'card-production-artwork',\n ASN: 'card-production-asn',\n PROOF_OF_PAYMENT: 'card-production-finances',\n EXTERNAL_PIN: 'card-production-external-pin',\n PO_SOW: 'card-production-po-sow',\n },\n CARD_DESIGN: {\n ART: 'card-design-art-file',\n ARTWORK: 'card-design-artwork-file'\n },\n POP_DESIGN: {\n ART: 'pop-design-art-file',\n ARTWORK: 'pop-design-artwork-file',\n FS_FILE: 'pop-design-fs-review-file'\n },\n POP_PRODUCTION: {\n ARTWORK: 'pop-production-artwork',\n ASN: 'pop-production-asn',\n OTHER: 'pop-production-other',\n PARTNER_ART: 'pop-production-partner-art',\n PRINTER_PROOF: 'pop-production-printer-proof',\n PRINTER_QUOTE: 'pop-production-printer-quote'\n },\n FINANCIAL_SERVICES: {\n ARTWORK: 'financial-services-artwork',\n ASN: 'financial-services-asn',\n FINANCE: 'financial-services-finance',\n },\n BIF_PRODUCTION: {\n FINANCE: 'bif-production-finance',\n ARTWORK: 'bif-production-artwork',\n PRINTER_PROOF: 'bif-production-printer-proof',\n ASN: 'bif-production-asn',\n MATRIX: 'bif-production-matrix'\n },\n THIRD_PARTY_PRODUCTION: {\n FINANCE: 'third-party-production-finance',\n ARTWORK: 'third-party-production-artwork',\n OPS: 'third-party-production-ops',\n ASN: 'third-party-production-asn',\n PO_SOW: 'third-party-production-po-sow',\n EXTERNAL_PIN: 'third-party-production-external-pin'\n },\n IMAGE: {\n ART_FILE: 'image-art-file',\n },\n IH_PRODUCTION: {\n ARTWORK: 'ih-production-artwork',\n PRINTER_PROOF: 'ih-production-printer-proof',\n MATRIX: 'ih-production-matrix'\n },\n DEFAULT: 'default',\n DEFAULT_DESIGN: 'default.design'\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_MULTI_BRAND = 'GROUP_FN_PRODUCEIT_FSM_MULTI_BRAND';\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_MULTI_BRAND = GROUP_FN_PRODUCEIT_FSM_MULTI_BRAND;\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';\nconst ASSIGNED_DESIGNER = 'ASSIGNED_DESIGNER';\nconst PPM = 'PPM';\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 static readonly ASSIGNED_DESIGNER = ASSIGNED_DESIGNER;\n static readonly PPM = PPM;\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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_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 CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\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-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_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 CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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-save': '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 PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\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-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_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 CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER'],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\n },\n REPORTS: {\n PO_REPORT_ROLE: 'ROLE_FN_PRODUCEIT_PO_REPORT', // 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER'\n SIGNED_PO_REPORT_ROLE: 'ROLE_FN_PRODUCEIT_PO_REPORT', // 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER'\n TRAFFIC_TRACKER_ROLE: 'ROLE_FN_PRODUCEIT_TRAFFIC_TRACKER_REPORT' // 'FN_PRODUCEIT_TRAFFIC_TRACKER_REPORT_USER'\n },\n APP: {\n MIMIC_USER: 'ROLE_FN_PRODUCEIT_MIMIC_USER',\n ADMIN: PermissionGroups.ADMIN,\n SUPER_USER: PermissionGroups.SUPER_USER,\n APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n CREATE_REQUEST: ['ROLE_FN_PRODUCEIT_REQUEST_CREATE']\n },\n PO_APPROVAL: {\n STAGE_ONE_APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_1'],\n STAGE_TWO_APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_2']\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 'GROUP_FN_PRODUCEIT_PO_APPROVER_1',\n 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'\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.no-selection]'\n})\nexport class ClickNoSelectionDirective implements OnInit, OnDestroy {\n private subscription: () => void;\n @Output('click.no-selection') public clickNoSelection = new EventEmitter();\n\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit() {\n this.subscription = this.renderer.listen(this.element.nativeElement, 'click', event => {\n const selection = window.getSelection();\n\n if (selection.type !== 'Range' || selection.toString().length === 0) {\n this.clickNoSelection.emit(event);\n }\n });\n }\n\n ngOnDestroy() {\n this.subscription();\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 {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]'\n})\nexport class DndDirective {\n @HostBinding('class.fileover') fileOver: boolean;\n @Output() fileDropped = new EventEmitter();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\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, ElementRef, HostListener, Input, OnDestroy, Renderer2, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[appTooltip]'\n})\nexport class TooltipDirective implements OnDestroy {\n @Input() tooltipText: string;\n @Input() position: string;\n @Input() customClass = '';\n @Input() template: TemplateRef;\n @Input() context: any;\n @Input() isFixed = false;\n\n private tooltip: HTMLElement;\n private longTextTooltip: boolean;\n private offset = 8;\n\n constructor(private el: ElementRef, private renderer: Renderer2, private viewContainerRef: ViewContainerRef) {}\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.tooltip) {\n this.show();\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.tooltip) {\n this.hide();\n }\n }\n\n show() {\n this.create();\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n }\n\n hide() {\n if (this.tooltip) {\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-show');\n this.renderer.removeChild(document.body, this.tooltip);\n this.tooltip = null;\n }\n }\n\n create() {\n let tooltipContent;\n this.tooltip = this.renderer.createElement('span');\n\n if (this.tooltipText) {\n tooltipContent = this.renderer.createText(this.tooltipText);\n }\n\n if (this.template) {\n const ref = this.viewContainerRef.createEmbeddedView(this.template, this.context);\n tooltipContent = ref.rootNodes[0];\n ref.detectChanges();\n tooltipContent.remove();\n }\n\n this.renderer.appendChild(this.tooltip, tooltipContent);\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 = this.isFixed ? 0 : 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 ? hostPos.top - hostPos.height : 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 ? hostPos.top - hostPos.height : 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","import {\n ChangeDetectorRef,\n Directive,\n EmbeddedViewRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {combineLatest, EMPTY, merge, Observable, of, ReplaySubject, Subject} from 'rxjs';\nimport {exhaustMap, map, takeUntil, tap, shareReplay} from 'rxjs/operators';\n\nimport {AbstractRoleUpdateAwareProvider} from '../../requests/classes/role-update-aware-provider';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport {EventEmitter} from '@angular/core';\n\n/**\n * @usageNotes\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: '[appUserPermissionsV2]',\n exportAs: 'appUserPermissionsV2'\n})\nexport class UserPermissionsV2Directive implements OnInit, OnDestroy {\n public isAllowed: boolean;\n\n private userPermissionsSubject = new ReplaySubject(1);\n private ngUnsubscribe = new Subject();\n\n private roleUpdates$: Observable;\n isAllowed$: Observable;\n\n constructor(\n private viewContainer: ViewContainerRef,\n private userPermissionsService: UserPermissionsService,\n private cd: ChangeDetectorRef,\n @Optional() private roleProvider: AbstractRoleUpdateAwareProvider,\n @Optional() private templateRef?: TemplateRef\n ) {\n this.roleUpdates$ = combineLatest([\n this.userPermissionsSubject.asObservable(),\n merge(of(null), this.roleProvider?.roleUpdates$ || EMPTY)\n ]).pipe(\n map(([roles]) => roles),\n takeUntil(this.ngUnsubscribe)\n );\n\n this.isAllowed$ = merge(\n of(false),\n this.roleUpdates$.pipe(\n exhaustMap(permission => (permission ? this.userPermissionsService.isActionAvailable(permission, this.roleProvider) : of(true))),\n tap(() => {\n this.cd.detectChanges();\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n )\n ).pipe(takeUntil(this.ngUnsubscribe));\n }\n\n @Input('appUserPermissionsV2') set appUserPermissions(permission: string | string[]) {\n const arrayPermission = [permission].flat();\n this.userPermissionsSubject.next(arrayPermission);\n }\n\n @Output() allowedChanged = new EventEmitter(true);\n private currentEmbeddedView: EmbeddedViewRef;\n\n ngOnInit() {\n this.isAllowed$.pipe(takeUntil(this.ngUnsubscribe)).subscribe({\n next: isAllowed => {\n if (this.templateRef) {\n this.updateContainerRef(isAllowed);\n }\n this.allowedChanged.emit(isAllowed);\n },\n complete() {\n if (this.templateRef) {\n this.viewContainer.clear();\n this.currentEmbeddedView = null;\n }\n }\n });\n }\n\n private async updateContainerRef(isAllowed) {\n if (isAllowed) {\n if (this.templateRef && !this.currentEmbeddedView) {\n this.currentEmbeddedView = this.viewContainer.createEmbeddedView(this.templateRef);\n }\n this.isAllowed = true;\n } else {\n if (this.templateRef) {\n this.viewContainer.clear();\n this.currentEmbeddedView = null;\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 {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 {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { PitMsalService } from '../services/pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n public router: Router,\n private userService: UserService,\n private pitMsalService: PitMsalService,\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 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 if(err instanceof HttpErrorResponse) {\n // 500 status is not included into the condition because it may point to an isolated BE error\n if(err.status > 500 || err.status === 0) {\n this.stateProviderService.putParam('error', ERRORS.serviceUnavailable);\n this.stateProviderService.putParam('original', state);\n\n this.router.navigate([PAGES_CONFIG.ERROR]);\n return of(false);\n }\n // 400 status when user logins with invalid credentials/token/header\n if(err.status === 400) {\n this.userService.resetUser();\n this.pitMsalService.logout();\n return of(false);\n }\n }\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 {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';\nimport {StateProviderService} from '../services/state-provider.service';\nimport { ERRORS } from '../constants/pages.constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationLoadedGuard implements CanActivate {\n constructor(public router: Router, private pitTranslateLoader: PitTranslateLoader, private stateProviderService: StateProviderService) {}\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(() => {\n this.stateProviderService.putParam('error', ERRORS.translationLoadError);\n return of(this.router.createUrlTree(['/error']));\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 MATRIX: 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 MATRIX: 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 MATRIX: 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 MATRIX: 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 { DatePipe } from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {DatePipeTz} from './date-pipe-tz.pipe';\nimport {JoinPipe} from './join.pipe';\nimport {ToSelectSearchDropdownOptions} from './to-select-search-dropdown-options.pipe';\n\n@NgModule({\n declarations: [DatePipeTz, JoinPipe, ToSelectSearchDropdownOptions],\n exports: [DatePipeTz, JoinPipe, ToSelectSearchDropdownOptions],\n providers: [\n {\n provide: DatePipe,\n useClass: DatePipeTz\n },\n {\n provide: ToSelectSearchDropdownOptions,\n useClass: ToSelectSearchDropdownOptions\n }\n ]\n})\nexport class CommonDirectivesModule {}\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 public request(method: string, url: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.request(method, url, 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-submit',\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 RefreshPoApprovalList = 'refresh-po-approval-list'\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 InternalExternalOperationsSave = 'internal-external-operations-save',\n InternalExternalOperationsValidation = 'internal-external-operations-validation',\n InternalExternalOperationsSubmit = 'internal-external-operations-submit',\n InternalExternalOperationsRollback = 'internal-external-operations-rollback',\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 public wrapPromise(promise: () => Promise): Promise {\n this.showLoader();\n return promise().then(r => {\n this.hideLoader();\n return r;\n }, (e) => {\n this.hideLoader();\n return e;\n });\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';\nimport { SafeHtml } from '@angular/platform-browser';\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 | SafeHtml;\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, SecurityContext } 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';\nimport { DomSanitizer } from '@angular/platform-browser';\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 private sanitizer: DomSanitizer) {\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: 'warning' | 'success' | 'error' | string, header?: string, body?: string | any, duration: number = DEFAULT_DURATION, extendedTimeoutDuration = DEFAULT_EXTENDED_DURATION, enableHtml = false): void {\n if(enableHtml) {\n body = this.sanitizer.bypassSecurityTrustHtml(\n this.sanitizer.sanitize(SecurityContext.NONE, body)\n );\n }\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

\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","\n \n \n {{ start }}\n \n \n {{ end }}\n \n \n\n\n \n\n","import {\n Component,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Input,\n ChangeDetectorRef,\n SkipSelf,\n HostBinding,\n Optional,\n AfterViewInit\n} from '@angular/core';\nimport {WithDestroy} from 'src/app/shared/components/with-destroy/with-destroy.mixin';\nimport { ReplaySubject } from 'rxjs';\nimport {debounceTime, takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'app-truncate-middle',\n templateUrl: './truncate-middle.component.html',\n styleUrls: ['./truncate-middle.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TruncateMiddleComponent extends WithDestroy() implements OnInit, AfterViewInit {\n @Input() minStartingChars = 6;\n @Input() minLastingChars = 6;\n @HostBinding('style.flex-basis') flexBasis = 'auto';\n @ViewChild('projectedContentContainer', {\n read: ElementRef\n })\n projectedContentContainer;\n\n start = '';\n end = '';\n private contentSubject = new ReplaySubject(1);\n content$ = this.contentSubject.asObservable().pipe(debounceTime(0));\n constructor(private cd: ChangeDetectorRef, @Optional() @SkipSelf() private parentCd: ChangeDetectorRef) {\n super();\n }\n ngAfterViewInit(): void {\n this.contentSubject.next(this.containerContent);\n }\n\n get containerContent() {\n return this.projectedContentContainer?.nativeElement.innerHTML.trim();\n }\n\n ngOnInit(): void {\n this.content$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((content) => {\n this.split(content);\n this.flexBasis = this.projectedContentContainer.nativeElement.getBoundingClientRect().width + 'px';\n this.cd.markForCheck();\n this.parentCd?.detectChanges();\n });\n }\n\n split(text: string) {\n if (text.length > this.minStartingChars + this.minLastingChars) {\n this.start = text.substring(0, text.length - this.minLastingChars);\n this.end = text.substring(text.length - this.minLastingChars);\n } else {\n this.start = text;\n this.end = undefined;\n }\n }\n\n onContentChange($event) {\n // eslint-disable-next-line no-console\n console.debug('Content mutation', $event);\n this.contentSubject.next(this.containerContent);\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 { ArtworkFile } from '../../../../requests/models/card-design-request.model';\nimport { Events } from 'src/app/shared/services/event-service.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport class ApprovalManagerConfig {\n selectedRequestItemId?: number;\n selectedArtworkFileId?: number;\n selectedVersionId?: 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 selectedArtworkFileIndex: number;\n private selectedRequestItemId: number;\n private selectedVersionId: 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 latestRejectedVersions: Array = [];\n public comparisonOn = false;\n public fileTypesToAccept: string[];\n public isRestrictionSizeWarningExist = false;\n public testId = 'approval_manager';\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.selectedVersionId = config.selectedVersionId;\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\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 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 this.latestRejectedVersions = [];\n this.artworkFiles?.forEach(artwork =>{\n if(artwork.versions[0].resolutions[0].status === 'REJECTED' && artwork.versions[0].resolutions[0].stageType.code === 'INT_EXT_CLIENT_PROOF'){\n this.latestRejectedVersions.push(artwork.versions[0]); }\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\n this.selectedArtworkFileIndex = this.artworkFiles.findIndex(item => item.id === file.id);\n\n let targetVersion = this.getActiveVersion(this.versions);\n if (this.selectedVersionId) {\n targetVersion = (this.versions.find(v => v.id === this.selectedVersionId));\n this.selectedVersionId = undefined;\n }\n this.setSelectedVersion(targetVersion);\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 getCurrentVersion(artworkFile: ArtworkFile) {\n return artworkFile.versions.find(v => v.active === true);\n }\n\n close(rejectedArtworks?: number): void {\n this.pdfViewerService.hideViewer();\n if (rejectedArtworks !== undefined) {\n this.dialogRef.close(rejectedArtworks > 0 ? Events.StepBack : Events.StepSubmit);\n return;\n }\n this.dialogRef.close();\n }\n\n review(selectedVersion: any, status: string) {\n const modalResult$ = status === ARTWORK_STATUSES.rejected ? this.openReasonModal(status === ARTWORK_STATUSES.rejected) : of(null);\n\n modalResult$.subscribe(async data => {\n await this.approvalManagerService\n .addVersionResolution(this.selectedRequestItem.id, this.selectedArtwork.id, selectedVersion.id, status, data?.comment);\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 downloadLatestRejectionsVersions() {\n this.latestRejectedVersions.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 downloadLatestRejectionsVersionsWithAnnotations() {\n this.pdfViewerService.triggerDownloadAllWithAnnotations(this.latestRejectedVersions);\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
\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 {{ '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 \n\n\n\n
\n {{ countFilesToApprove(artworkFiles) }} / {{ artworkFiles.length }}\n {{ 'common.approval-manager.files-to-approve' | translate }}\n
\n \n \n \n \n Artwork {{ artworkFileIndex + 1 }}\n - ({{ getCurrentVersion(file).attachment.fileName }})\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
\n
{{ 'common.approval-manager.version' | translate }}:
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n\n \n\n\n\n \n \n {{ version.attachment.fileName }}\n \n \n

\n \n V{{ index }}-{{ getLatestResolution(version).status }}\n \n

\n
\n\n\n In Progress\n Approved\n Rejected\n\n\n\n \n \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 constructor(private dialog: MatDialog) { }\n\n openDialogs(): MatDialogRef[] {\n return this.dialog.openDialogs;\n }\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 {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';\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 | string) {\n const targetUserLogin = typeof targetUser === 'string' ? targetUser : 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';\nimport { Observable, OperatorFunction, pipe } from 'rxjs';\nimport { combineLatest, first, map, skip, startWith, withLatestFrom } from 'rxjs/operators';\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 toggleDielineRequiredValidator(isChitCard: boolean): ValidatorFn {\n return (fc: AbstractControl): { [key: string]: any } | null => {\n if (!isChitCard) {\n return Validators.required(fc);\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 static 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 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 static 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\nexport function delayedWithLatestFrom(target$: Observable): OperatorFunction {\n // special value to avoid accidental match with values that could originate from target$\n const uniqueSymbol = Symbol('withLatestFromIgnore');\n\n return pipe(\n // emit as soon target observable emits the first value\n combineLatest(target$.pipe(first())),\n // skip the first emission because it's handled above, and then continue like a normal `withLatestFrom` operator\n withLatestFrom(target$.pipe(skip(1), startWith(uniqueSymbol))),\n map(([[rest, combineLatestValue], withLatestValue]) => {\n // take combineLatestValue for the first time, and then always take withLatestValue\n const appendedValue = withLatestValue === uniqueSymbol ? combineLatestValue : withLatestValue;\n\n return [rest, appendedValue];\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 {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 { ClickPreventDefaultDirective } from './directives/click-prevent-default.directive';\nimport { ClickStopPropagationDirective } from './directives/click-stop-propagation.directive';\nimport { AppInterceptableRadioGroupDirective } from './directives/interceptable-radio-group.directive';\nimport { RadioGroupFormConfirmComponent } from './components/radio-group-form-confirm/radio-group-form-confirm.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';\nimport { ArtworkItemCollapsibleComponent } from './components/app-artwork-item/artwork-item-collapsible/artwork-item-collapsible.component';\nimport { TruncateMiddleComponent } from './components/shared/components/truncate-middle/truncate-middle.component';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CommonDirectivesModule } from './pipes/directives.module';\nimport { LazyComponent } from './components/app-lazy-component/lazy-component.component';\nimport { BulkChangeFileUploadComponent } from './components/bulk-change-file-upload/bulk-change-file-upload.component';\n\n@NgModule({\n declarations: [\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n BulkChangeFileUploadComponent,\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 ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n UserAssignmentComponent,\n TableComponent,\n FileUploadProgressComponent,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n AppInterceptableRadioGroupDirective,\n CustomHintDirective,\n EasyAriaDirective,\n ArtworkItemCollapsibleComponent,\n TruncateMiddleComponent,\n LazyComponent,\n ],\n imports: [\n CommonModule,\n ObserversModule,\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 CommonDirectivesModule\n ],\n exports: [\n CommonModule,\n CommonDirectivesModule,\n MaterialModule,\n ObserversModule,\n TranslateModule,\n AppInputFormComponent,\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n BulkChangeFileUploadComponent,\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 PdfViewerComponent,\n ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n TableComponent,\n OverlayscrollbarsModule,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n AutonumericDirective,\n AppInterceptableRadioGroupDirective,\n CustomHintDirective,\n UserAssignmentComponent,\n EasyAriaDirective,\n ArtworkItemCollapsibleComponent,\n TruncateMiddleComponent,\n LazyComponent,\n ],\n providers: [\n CurrencyPipe,\n ]\n})\nexport class SharedModule { }\n","export const environment = {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n appVersion: require('../../package.json').version,\n newVersionPolingInterval: 'PT10M',\n production: true,\n locales: ['en'],\n defaultLocale: 'en',\n commitId: 'f40cc7d'\n};\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 {{'common.label.please'|translate}}\n \n {{'common.label.or-contact'|translate}} \n \n

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

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

\n
\n
\n
\n","import { ChangeDetectionStrategy, Component, Inject, InjectionToken, OnInit } from '@angular/core';\nimport { Router, RouterStateSnapshot } from '@angular/router';\nimport { interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { WithDestroy } from '../../../shared/components/with-destroy/with-destroy.mixin';\nimport { ERRORS, PAGES_CONFIG } from '../../../shared/constants/pages.constants';\nimport { StateProviderService } from '../../../shared/services/state-provider.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport const ERROR_PAGE_REFRESH_INTERVAL = new InjectionToken('ERROR_PAGE_REFRESH_INTERVAL', {\n factory: () => 10 * 1000\n});\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 extends WithDestroy() implements OnInit {\n constructor(\n private stateProviderService: StateProviderService,\n private router: Router,\n private translate: TranslatePipe,\n @Inject(ERROR_PAGE_REFRESH_INTERVAL) private errorPageRefreshInterval: number\n ) {\n super();\n }\n\n public permission = ERRORS.permission;\n public notFound = ERRORS.notFound;\n public serviceUnavailable = ERRORS.serviceUnavailable;\n public requestsListLink = PAGES_CONFIG.REQUESTS;\n public errorType: string;\n\n ngOnInit(): void {\n this.errorType = this.stateProviderService.getParam('error');\n\n if (this.errorType === this.serviceUnavailable) {\n interval(this.errorPageRefreshInterval)\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n const next: RouterStateSnapshot = this.stateProviderService.getParam('original');\n if (next?.url) {\n this.router.navigate([next.url]);\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n }\n\n reload(){\n window.location.reload();\n }\n\n redirect(){\n window.open(this.translate.transform('common.label.service-now-link'), '_blank').focus();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} 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 constructor(private stateProviderService: StateProviderService, private router: Router) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): 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 = requiredParams.map(param => this.stateProviderService.getParam(param)).every(value => !!value);\n return of(hasAllRequiredParams).pipe(\n tap(skipRedirect => {\n if (!skipRedirect && next.data.navigateFallback) {\n this.router.navigate([next.data.navigateFallback]);\n }\n })\n );\n }\n}\n","

Versions

\n
\n

ProduceIT-UI-{{versions.ui}}

\n

ProduceIT-BE-{{versions.api}}

\n

ProduceIT-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 {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 {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\nimport {UserRoles} from '../constants/user-roles.constant';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { PitMsalService } from '../services/pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RootRedirectGuard implements CanActivate {\n constructor(\n public router: Router,\n private userService: UserService,\n private pitMsalService: PitMsalService,\n private stateProviderService: StateProviderService,\n private userPermissionService: UserPermissionsService\n ) {}\n\n private redirectRoute(roles): UrlTree {\n if (roles.find(ugr => UserRoles.APP.APPROVER.includes(ugr))) {\n return this.router.parseUrl(`/${PAGES_CONFIG.APPROVALS}`);\n }\n return this.router.parseUrl(`/${PAGES_CONFIG.REQUESTS}`);\n }\n\n //TODO\n // It looks like the function is identical to the one in src\\app\\shared\\guards\\auth.guard.ts\n // Duplicated code should be moved to a common place (component).\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n if (this.userService.isLoggedInProduceit()) {\n return of(this.redirectRoute(this.userPermissionService.getUserRoles()));\n }\n\n return this.userService.login().pipe(\n map((userGroupRoles: string[]) => {\n this.userService.setLoggedInProduceit(true);\n this.userPermissionService.setUserRoles(userGroupRoles);\n return this.redirectRoute(userGroupRoles);\n }),\n tap(() => {\n this.userService.updateUserDetails();\n }),\n catchError(err => {\n if(err instanceof HttpErrorResponse) {\n // 500 status is not included into the condition because it may point to an isolated BE error\n if(err.status > 500 || err.status === 0) {\n this.stateProviderService.putParam('error', ERRORS.serviceUnavailable);\n this.stateProviderService.putParam('original', state);\n this.router.navigate([PAGES_CONFIG.ERROR]);\n return of(false);\n }\n // 400 status when user logins with invalid credentials/token\n if(err.status === 400) {\n this.userService.resetUser();\n this.pitMsalService.logout();\n return of(false);\n }\n }\n this.stateProviderService.putParam('user', this.userService.getCurrentUserName());\n return of(this.router.createUrlTree([PAGES_CONFIG.ERROR_AUTH]));\n })\n );\n }\n}\n","import {Component, ChangeDetectorRef, OnInit} from '@angular/core';\nimport {FormBuilder} from '@angular/forms';\nimport moment from 'moment';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map, takeUntil} from 'rxjs/operators';\nimport {AssigneeService} from 'src/app/requests/services/assignee.service';\nimport {RequestsService} from 'src/app/requests/services/requests.service';\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from 'src/app/shared/components/multiselect-search-dropdown/item-list.provider';\nimport {UserModel} from 'src/app/shared/models/user.model';\nimport {UtilsService} from 'src/app/shared/services/utils.service';\nimport {WithDestroy} from '../../../shared/components/with-destroy/with-destroy.mixin';\n\nclass ListDataSource 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.loadValues(values).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.searchValues(query).pipe(map(users => users));\n }\n}\n\n@Component({\n selector: 'app-features',\n templateUrl: './features.component.html',\n styleUrls: []\n})\nexport class FeaturesComponent extends WithDestroy() implements OnInit {\n form = this.fb.group({\n checkbox: this.fb.control(false),\n currency: this.fb.control(100.01),\n deliveryDate: this.fb.control(moment().subtract(10, 'days')),\n dateRange: this.fb.control({from: moment().subtract(10, 'days'), to: moment()}),\n textInput: this.fb.control('Text input'),\n numberInput: this.fb.control(321312),\n chips: this.fb.control(['1000', '2000']),\n httpSearchDropdown: this.fb.control(null),\n httpSearchDropdownMultiple: this.fb.control([]),\n dropdown: this.fb.control(null),\n dropdownMultiple: this.fb.control(null),\n percent: this.fb.control(0.05),\n richText: this.fb.control('Rich Text'),\n text: this.fb.control('Rich Text'),\n radioGroup: this.fb.control(true)\n });\n\n constructor(\n private fb: FormBuilder,\n private requestsService: RequestsService,\n private cd: ChangeDetectorRef,\n private utilsService: UtilsService,\n private assigneeService: AssigneeService\n ) {\n super();\n }\n ngOnInit(): void {\n this.form\n .get('text')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(v => this.form.get('richText').setValue(v, {emitEvent: false}));\n this.form\n .get('richText')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(v => this.form.get('text').setValue(v, {emitEvent: false}));\n }\n\n isLoading$ = new BehaviorSubject(false);\n merchantSearch = [];\n public getMerchants(name: string): void {\n this.isLoading$.next(true);\n this.requestsService.getMerchants(name).subscribe(\n (data: Array<{id: number; name: string}>) => {\n this.isLoading$.next(false);\n this.merchantSearch = [...data];\n this.cd.detectChanges();\n },\n error => {}\n );\n }\n public getMerchantLabel(option): string {\n return option.name;\n }\n\n public userListProvider = new ListDataSource(this.assigneeService);\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","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';\nimport { RootRedirectGuard } from './shared/guards/root-redirect.guard';\nimport {environment} from 'src/environments/environment';\nimport { FeaturesComponent } from './help/components/features/features.component';\n\nconst routes: Routes = [\n {\n path: PAGES_CONFIG.REQUESTS,\n loadChildren: () => import(/* webpackChunkName: \"requests\" */ './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(/* webpackChunkName: \"reports\" */ './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: `/`\n }\n },\n {\n path: PAGES_CONFIG.ERROR_AUTH,\n component: ErrorAuthComponent,\n canActivate: [HasParamGuard],\n data: {\n requiredParams: ['user'],\n navigateFallback: `/`\n }\n },\n {\n path: '',\n component: ErrorAuthComponent,\n canActivate: [\n MsalGuard,\n RootRedirectGuard\n ],\n pathMatch: 'full'\n },\n {\n path: PAGES_CONFIG.APPROVALS,\n loadChildren: () => import(/* webpackChunkName: \"approvals\" */ './approvals/approvals.module').then(m => m.ApprovalsModule),\n canActivate: [MsalGuard, AuthGuard, TranslationLoadedGuard]\n },\n ...(!environment.production\n ? [\n {\n path: 'features',\n component: FeaturesComponent\n }\n ]\n : [])\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {relativeLinkResolution: 'legacy'})],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\n","\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
{{ this.form.value | json }}
\n
\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 { InjectionToken } from '@angular/core';\n\nexport const VERSION_CHECK_POLLING_INTERVAL = new InjectionToken('POLLING_INTERVAL');\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { EMPTY, Observable, Subject, timer } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { VersionFileDto } from './new-version.types';\nimport { VERSION_CHECK_POLLING_INTERVAL } from './new-version.constants';\n\n@Injectable()\nexport class NewVersionService {\n private versionCheckTimer: Observable;\n private oldVersion: string = environment.appVersion;\n private unsubscribeSubject = new Subject();\n\n constructor(private httpClient: HttpClient, @Inject(VERSION_CHECK_POLLING_INTERVAL) private polingInterval: string) {}\n\n observe$(): Observable {\n const interval = moment.duration(this.polingInterval).as('millisecond');\n this.versionCheckTimer =\n this.versionCheckTimer ||\n timer(0, interval).pipe(\n switchMap(() => this.checkVersion(this.oldVersion).pipe(catchError(() => EMPTY))),\n takeUntil(this.unsubscribeSubject),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n return this.versionCheckTimer;\n }\n\n unobserve(): void {\n this.versionCheckTimer = null;\n this.unsubscribeSubject.next();\n }\n\n private checkVersion(oldVersion: string): Observable {\n return this.httpClient\n .get(`/version.json?t=${new Date().getTime()}`)\n .pipe(map(({ version }) => oldVersion !== version));\n }\n}\n","import {PAGES_CONFIG} from './pages.constants';\nimport { UserRoles } from './user-roles.constant';\n\nexport interface NavigationItem {\n value: string;\n route: string;\n permissions?: string[];\n excludePermissions?: 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: 'approvals',\n route: PAGES_CONFIG.APPROVALS,\n permissions: UserRoles.APP.APPROVER\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, SecurityContext} 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(\n this.sanitizer.sanitize(SecurityContext.NONE, URL.createObjectURL(userImage))\n );\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
\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  {{ 'common.button.create-request' | translate }}\n \n \n \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

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

\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 isPoApprovals = false;\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(\n Object.values({\n settings: this.userPermissionsService.isActionAvailable(this.userRoles.SETTINGS.EMAIL)\n })\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.router.events.subscribe(event => {\n this.isPoApprovals = this.router.url.indexOf('approvals') !== -1;\n });\n\n this.userService\n .authAccount$()\n .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, {Core, WebViewerInstance, WebViewerOptions} from '@pdftron/webviewer';\nimport {Observable, Subject} from 'rxjs';\nimport {UserService} from '../../../services/user.service';\nimport {distinctUntilChanged, 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';\ninterface MenuItem {\n type: string;\n className?: string;\n img?: string;\n onClick?: () => void;\n dataElement?: string;\n label?: string;\n}\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.Core.documentViewer, this.compareWvInstance.Core.documentViewer];\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.UI.setTheme('dark');\n } else {\n instance.UI.setTheme('light');\n }\n });\n\n instance.Core.annotationManager.addEventListener('annotationChanged',\n async (annotations: Core.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.Core.annotationManager, this.currentVersion);\n }\n });\n\n instance.Core.documentViewer.addEventListener('documentLoaded', async () => {\n await this.initAnnotationUser(instance);\n this.loadAnnot(instance, instance.Core.annotationManager, this.currentVersion);\n instance.UI.setZoomLevel('100%');\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.UI.setTheme('dark');\n } else {\n instance.UI.setTheme('light');\n }\n });\n\n instance.Core.annotationManager.addEventListener('annotationChanged',\n async (annotations: Core.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.Core.annotationManager, this.compareVersion);\n }\n });\n\n instance.Core.documentViewer.addEventListener('documentLoaded', async () => {\n if (!this.isDownloadAllInProgress) {\n await this.initAnnotationUser(instance);\n\n this.loadAnnot(instance, instance.Core.annotationManager, this.compareVersion);\n instance.UI.setZoomLevel('100%');\n }\n });\n }\n );\n }\n\n private async verifyAnnotationCanBeAdded(action: string, annotations: Core.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: Core.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.Core.annotationManager.deleteAnnotations(fileAnnotations, false, true, false);\n return false;\n }\n }\n return true;\n }\n\n public downloadWithAnnotations(filename?: string) {\n this.wvInstance.UI.downloadPdf({\n filename\n });\n }\n\n public async downloadAllWithAnnotations(versions): Promise {\n const downloadFile = async (version) => {\n const loadedSubject = new Subject();\n\n const onDocumentLoaderCallback = async () => {\n try {\n this.compareWvInstance.Core.documentViewer.removeEventListener('documentLoaded', onDocumentLoaderCallback);\n\n const comments = await this.pdfViewerService.approvalManagerService.getComments(version).toPromise();\n await this.compareWvInstance.Core.annotationManager.importAnnotations(comments);\n\n this.compareWvInstance.UI.downloadPdf({\n filename: version.attachment?.fileName,\n });\n\n setTimeout(() => {\n loadedSubject.next(version);\n loadedSubject.complete();\n }, 1000);\n } catch (e) {\n console.error('Error importing annotations or downloading PDF:', e);\n loadedSubject.error(e);\n }\n };\n\n this.compareWvInstance.Core.documentViewer.addEventListener('documentLoaded', onDocumentLoaderCallback);\n await this.loadDoc(this.compareWvInstance, version);\n\n return loadedSubject.toPromise();\n };\n\n this.isDownloadAllInProgress = true;\n try {\n for (const version of versions) {\n await downloadFile(version);\n }\n } catch (e) {\n console.error('Error downloading files:', 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?.UI.loadDocument(downloadRequest.url, {\n extension,\n filename: version.attachment?.fileName,\n customHeaders: downloadRequest.customHeaders\n });\n return;\n }\n const PDFNet = wvInstance.Core.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.UI.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 const menuItem: MenuItem[] = [{\n type: 'actionButton',\n className: 'row',\n img: 'icon-header-print-line',\n onClick: () => {\n instance.UI.print();\n },\n dataElement: 'alertButton',\n label: 'Print'\n },\n {\n type: 'actionButton',\n className: 'row',\n img: 'icon-download',\n onClick: () => {\n instance.UI.downloadPdf();\n },\n dataElement: 'alertButton',\n label: 'Download'\n }, {\n type: 'actionButton',\n className: 'row',\n img: 'icon-header-full-screen',\n onClick: () => {\n instance.UI.toggleFullScreen();\n },\n dataElement: 'alertButton',\n label: 'Full Screen'\n }];\n instance.Core.annotationManager.setCurrentUser(userName);\n /* await this.pdfViewerService.approvalManagerService.canAnnotate() ?\n instance.Core.annotationManager.enableReadOnlyMode() :\n instance.Core.annotationManager.disableReadOnlyMode(); */\n //instance.UI.disableElements(this.webViewerConfig.disabledElements);\n //instance.UI.settingsMenuOverlay.update(menuItem);\n }\n\n private async closeDocument(wvInstance: WebViewerInstance) {\n wvInstance?.Core.documentViewer.closeDocument();\n await wvInstance?.Core.documentViewer.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: Core.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.UI.openElements(['notesPanel']);\n }\n });\n }\n\n private getLocalStorageOpenNotesKey(instance: WebViewerInstance) {\n return instance.UI.iframeWindow.frameElement.id + '_open';\n }\n\n private syncZoom(viewers: Core.DocumentViewer[], vwInstances: WebViewerInstance[]) {\n viewers.forEach(viewer => {\n viewer.addEventListener('zoomUpdated', zoom => {\n vwInstances.forEach(instance => {\n if (instance.UI.getZoomLevel() !== zoom) {\n instance.UI.setZoomLevel(zoom);\n }\n });\n });\n });\n }\n\n private syncRotation(viewers: Core.DocumentViewer[]) {\n viewers.forEach(docViewer => {\n docViewer.addEventListener('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 instance.Core.documentViewer.addEventListener(\n 'annotationAdded', async (annotation: Core.Annotations.FileAttachmentAnnotation) => {\n instance.Core.annotationManager.selectAnnotation(annotation);\n instance.UI.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.UI.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.Core.annotationManager.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.UI.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.UI.iframeWindow.document.querySelector(`button[data-element='toggleNotesButton']`);\n notesButton.addEventListener('click', () => {\n setTimeout(() => window.localStorage.setItem(this.getLocalStorageOpenNotesKey(viewer),\n `${viewer.UI.isElementOpen('notesPanel')}`), 500);\n });\n });\n }\n\n async ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\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?.UI.dispose();\n }\n\n}\n","
\n
\n\n
\n
\n","import {Component, ErrorHandler, Inject, OnDestroy, OnInit, Optional, Renderer2, SecurityContext} 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, of, timer} 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, mapTo, switchMap } 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';\nimport memoize from 'lodash/memoize';\nimport { NewVersionService } from './version/new-version/service/new-version.service';\nimport { MessageService } from './shared/services/message-service.service';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DomSanitizer } from '@angular/platform-browser';\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 readonly REFRESH_MESSAGE = 30000;\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 private newVersionService: NewVersionService,\n private messageService: MessageService,\n private sanitizer: DomSanitizer,\n private translate: TranslatePipe,\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 getScrollbarWidth = memoize(() => {\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n (outer.style as any).msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode.removeChild(outer);\n\n return scrollbarWidth + 'px';\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 this.trackNewVersionChanges();\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 private trackNewVersionChanges(): void {\n this.newVersionService\n .observe$()\n .pipe(\n switchMap(hasNewVersion =>\n hasNewVersion ? timer(0, this.REFRESH_MESSAGE).pipe(mapTo(hasNewVersion)) : of(hasNewVersion),\n ),\n )\n .subscribe(hasNewVersion => {\n if (hasNewVersion) {\n console.log('New version available.');\n this.messageService.showSystemMessage('warning',\n this.translate.transform('common.warning.version-update-header'),\n this.sanitizer.bypassSecurityTrustHtml(\n this.sanitizer.sanitize(SecurityContext.NONE, this.translate.transform('common.warning.version-update-desc'))\n ));\n }\n });\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 { FeaturesComponent } from './components/features/features.component';\nimport { ChipsModule } from '../shared/components/app-chips/chips.module';\nimport { RichTextModule } from '../shared/components/rich-text/rich-text.module';\n\n\n\n@NgModule({\n declarations: [HelpComponent, FeaturesComponent],\n imports: [\n RichTextModule,\n ChipsModule,\n CommonModule,\n SharedModule,\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';\nimport { RichTextModule } from '../shared/components/rich-text/rich-text.module';\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 RichTextModule,\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 loadThirdPartyCompanies,\n lazyLoadThirdPartyCompanies,\n loadThirdPartyCompaniesSuccess,\n loadThirdPartyCompaniesFailure,\n loadRequestTypeInventoryTypes,\n loadRequestTypeInventoryTypesSuccess,\n loadRequestTypeInventoryTypesFailure,\n lazyLoadRequestTypeInventoryTypes\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 selectRequestTypeInventoryTypes,\n selectReturnFileTypes,\n selectSubstrates,\n selectThirdPartyCompanies,\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 * RequestTypeInventoryTypes\n */\n loadRequestTypeInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRequestTypeInventoryTypes),\n exhaustMap(action =>\n this.errorHandlingHttpClient.get(`${API.requestTypeInventoryTypes(action.requestType)}`).pipe(\n map(data => loadRequestTypeInventoryTypesSuccess({requestTypeInventoryTypes: data})),\n catchError(() => of(loadRequestTypeInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadRequestTypeInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRequestTypeInventoryTypes),\n withLatestFrom(this.store.select(selectRequestTypeInventoryTypes)),\n exhaustMap(([{requestType}, storedData]) => {\n if (refdataInitialState.requestTypeInventoryTypes === storedData) {\n return of(loadRequestTypeInventoryTypes({requestType}));\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 loadThirdPartyCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyCompanies),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyCompanies}`).pipe(\n map(data => loadThirdPartyCompaniesSuccess({thirdPartyCompanies: data})),\n catchError(() => of(loadThirdPartyCompaniesFailure()))\n )\n )\n )\n );\n lazyLoadThirdPartyCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyCompanies),\n withLatestFrom(this.store.select(selectThirdPartyCompanies)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyCompanies === storedData) {\n return of(loadThirdPartyCompanies());\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 { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { VERSION_CHECK_POLLING_INTERVAL } from './service/new-version.constants';\nimport { NewVersionService } from './service/new-version.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [NewVersionService],\n})\nexport class NewVersionModule {\n static forRoot(polingInterval: string): ModuleWithProviders {\n return {\n ngModule: NewVersionModule,\n providers: [\n {\n provide: VERSION_CHECK_POLLING_INTERVAL,\n useValue: polingInterval,\n },\n ],\n };\n }\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';\nimport { NewVersionModule } from './version/new-version/new-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 NewVersionModule.forRoot(environment.newVersionPolingInterval),\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;"]}