{"version":3,"file":"main.29bb588ec1ddf0e7.js","mappings":"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CAAEb,uBACrC5e,KACA33D,KACAswE,GACAV,GACAS,GACA6F,GACA/F,GACAkH,crB9C6B,IAAIC,KAAwB,CAC3DC,KAAM,CACJC,SAAqB,QAAX/c,SAAO7Y,WAAIvoC,eAAEo5D,WACvBgF,UAAW,sCAAkD,QAAXC,SAAO91B,WAAIroC,eAAEo+D,UAC/DC,YAAat9C,OAAO2/B,SAAS1jC,OAC7BshD,sBAAuBv9C,OAAO2/B,SAAS1jC,OACvCuhD,2BAA2B,GAE7BC,MAAO,CACHC,cAAgBC,mBAChBC,yBAAwB/F,IAE5BgG,OAAQ,CACJC,cAAe,CACXC,eAAgB,WAAK,EACrBC,mBAAmB,MqB+BS3K,GAAiBqF,IACnDuF,cAAoBtH,GAAU,CAAEE,kBAChCgF,WAAyBpoB,+BACzBkoB,GACAuC,cAAsB,CACpBpH,GACAQ,GACAI,KAEF/Z,aAAwB,CACtB7b,OAAQ,CACN5rB,QAASioD,KACT/nD,YAAa88B,MAEfkrB,0BAA2B,CAACloD,QAASmoD,KAA2Br/B,SAAU24B,IAC1E2G,gBAAiB,OAEnBhvD,GAACmkC,aAA4D,GAAnC8qB,uBAwCjBrC,EAAb,GClHIzoB,kBACF+qB,WAGFC,OAAyBC,gBAAgBxC,IACtCzI,MAAM,YAAG,OAAIhxD,QAAQC,MAAMqN,8BCX9B,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACAyW,EAEA,YAEAld,kBACA,uBAEAA,YACAq1D,aACAr1D","names":["EnvService","s","this","factory","MaterialModule","MatButtonModule","MatTabsModule","MatSortModule","MatTableModule","MatDatepickerModule","MatMomentDateModule","MatInputModule","MatSelectModule","MatFormFieldModule","MatIconModule","MatBadgeModule","MatMenuModule","MatDialogModule","A11yModule","MatExpansionModule","MatDividerModule","MatSlideToggleModule","MatCheckboxModule","MatRadioModule","MatAutocompleteModule","MatSnackBarModule","MatChipsModule","SETTINGS_GROUPS","loadPaymentTypes","createAction","lazyLoadPaymentTypes","loadPaymentTypesSuccess","props","loadPaymentTypesFailure","loadFSPaymentTypes","lazyLoadFSPaymentTypes","loadFSPaymentTypesSuccess","loadFSPaymentTypesFailure","loadDielines","lazyLoadDielines","loadDielinesSuccess","loadDielinesFailure","loadDataPinFileTypes","lazyLoadDataPinFileTypes","loadDataPinFileTypesSuccess","loadDataPinFileTypesFailure","loadSubstrates","lazyLoadSubstrates","loadSubstratesSuccess","loadSubstratesFailure","loadRedemptionTypes","lazyLoadRedemptionTypes","loadRedemptionTypesSuccess","loadRedemptionTypesFailure","loadRequestItemTypes","lazyLoadRequestItemTypes","loadRequestItemTypesSuccess","loadRequestItemTypesFailure","loadRegions","lazyLoadRegions","loadRegionsSuccess","loadRegionsFailure","loadWarehouses","lazyLoadWarehouses","loadWarehousesSuccess","loadWarehousesFailure","loadCompanies","lazyLoadCompanies","loadCompaniesSuccess","loadCompaniesFailure","loadPartnerGroups","lazyLoadPartnerGroups","loadPartnerGroupsSuccess","loadPartnerGroupsFailure","loadDesignLineOfBusiness","loadDesignLineOfBusinessSuccess","loadDesignLineOfBusinessFailure","lazyLoadDesignLineOfBusiness","loadArtLocationsTypes","lazyLoadArtLocationsTypes","loadArtLocationsTypesSuccess","loadArtLocationsTypesFailure","loadDesignSourceTypes","lazyLoadDesignSourceTypes","loadDesignSourceTypesSuccess","loadDesignSourceTypesFailure","loadChannelTypes","lazyLoadChannelTypes","loadChannelTypesSuccess","loadChannelTypesFailure","loadPopChannelTypes","lazyLoadPopChannelTypes","loadPopChannelTypesSuccess","loadPopChannelTypesFailure","loadInventoryTypes","lazyLoadInventoryTypes","loadInventoryTypesSuccess","loadInventoryTypesFailure","loadComponentTypes","lazyLoadComponentTypes","loadComponentTypesSuccess","loadComponentTypesFailure","loadPopItemTypes","lazyLoadPopItemTypes","loadPopItemTypesSuccess","loadPopItemTypesFailure","loadColorTypes","lazyLoadColorTypes","loadColorTypesSuccess","loadColorTypesFailure","loadDimensionTypes","lazyLoadDimensionTypes","loadDimensionTypesSuccess","loadDimensionTypesFailure","loadFinancialTypes","lazyLoadFinancialTypes","loadFinancialTypesSuccess","loadFinancialTypesFailure","loadPopProdEventTypes","lazyLoadPopProdEventTypes","loadPopProdEventTypesSuccess","loadPopProdEventTypesFailure","loadPopProdFundingTypes","lazyLoadPopProdFundingTypes","loadPopProdFundingTypesSuccess","loadPopProdFundingTypesFailure","loadPopProdUsageDurationTypes","lazyLoadPopProdUsageDurationTypes","loadPopProdUsageDurationTypesSuccess","loadPopProdUsageDurationTypesFailure","loadPopProdItemTypes","lazyLoadPopProdItemTypes","loadPopProdItemTypesSuccess","loadPopProdItemTypesFailure","lazyLoadPopProdCuttingTypes","loadPopProdCuttingTypes","loadPopProdCuttingTypesSuccess","loadPopProdCuttingTypesFailure","lazyLoadPopProdMaterialTypes","loadPopProdMaterialTypes","loadPopProdMaterialTypesSuccess","loadPopProdMaterialTypesFailure","lazyLoadPopProdTapeTypes","loadPopProdTapeTypes","loadPopProdTapeTypesSuccess","loadPopProdTapeTypesFailure","loadPopProdInventoryTypes","lazyLoadPopProdInventoryTypes","loadPopProdInventoryTypesSuccess","loadPopProdInventoryTypesFailure","loadPrinters","lazyLoadPrinters","loadPrintersSuccess","loadPrintersFailure","loadBifComponentTypes","lazyLoadBifComponentTypes","loadBifComponentTypesSuccess","loadBifComponentTypesFailure","loadBifFulfillmentTypes","lazyLoadBifFulfillmentTypes","loadBifFulfillmentTypesSuccess","loadBifFulfillmentTypesFailure","loadThirdPartyDataPinFileTypes","lazyLoadThirdPartyDataPinFileTypes","loadThirdPartyDataPinFileTypesSuccess","loadThirdPartyDataPinFileTypesFailure","loadThirdPartyOrderTypes","lazyLoadThirdPartyOrderTypes","loadThirdPartyOrderTypesSuccess","loadThirdPartyOrderTypesFailure","loadThirdPartyPrintOwnerTypes","lazyLoadThirdPartyPrintOwnerTypes","loadThirdPartyPrintOwnerTypesSuccess","loadThirdPartyPrintOwnerTypesFailure","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","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","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","Me","actionName","getAction","_a","ae","_b","showLabel","ge","_c","fieldLabel","Re","_d","position","getPosition","Ne","_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","xe","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","PKID_MAX_LENGTH","PRICE_PATTERN","REQUEST_NAME_PATTERN","INTEGER_PATTERN","INTEGER_PATTERN_EXCEPT_ZERO_VALUE","IMAGE_DENOM_PATTERN","MAX_PO_TOTAL","MAX_PO_SUB_TOTAL","MAX_POP_PROD_COST_TOTAL","MAX_BIF_COST_TOTAL","MAX_REBILL_TOTAL","MAX_BIF_REBILL_TOTAL","IH_MAX_PACKAGES","IH_MAX_COMPONENTS_PER_ITEM","IH_LABELS_QUANTITY_MULTIPLIER","THIRD_MAX_RANGES_PER_ITEM","POP_PRODUCTION_REQUEST","POP_DESIGN_REQUEST","CARD_DESIGN_REQUEST","PRODUCTION_REQUEST","FINANCIAL_SERVICES_REQUEST","BIF_PRODUCTION_REQUEST","PRODUCTION_REQUEST_3RD_PARTY","IH_PRODUCTION_REQUEST","IMAGE_REQUEST","SUPPORTED_REQUEST_TYPES","DUPLICATE_SUPPORTED_REQUEST_TYPES","CHANGE_OWNER_REQUEST_TYPES","REQUEST_TYPE","ActionsReasonService","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","q","uploadCanceled","splice","repeat","fileValidationResponse","PENDING","tap","UNSAFE","instant","first","requestType","attachmentFileType","requestItemId","createUploadItemArtworkUrl","shouldRequestHasFileTypeParameter","uploadAndCreateAttachment","createAttachmentUrl","ye","SAFE","createAttachmentRequest","attachmentId","apiUrl","delete","O","RequestsService","http","userService","eventService","warehousesObservable","replayAndClone","companiesObservable","lineOfBusinessObservable","channelTypesObservable","inventoryTypesObservable","europeanCountriesObservable","fileTypesWhiteList","designerList","nameBeginning","groupKeys","UserGroups","requestTypes$","details","draft","requestName","requestObj","resetRequestDetails","downloadFile","poId","F","item","getFileUrl","id","createProofOfPayments","reqItemId","reqType","$","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","X","_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","re","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","Z","ItemsFormCtrl","disable","inputCtrl","enable","filteredItemsList","itemsList","ItemsFormFilterCtrl","_onDestroy","debounceTime","search","searching","onSearch","switchMapTo","isLoading","loading","y","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","i","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","J","matFormField","registerOnDisabledChange","Fe","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","artworkFileId","versionId","tpsId","substituteUsername","requestNumber","purchaseOrderNumber","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","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","m","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","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","Ce","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","wt","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","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","oe","errorType","getParam","serviceUnavailable","interval","w","g","location","reload","u","HasParamGuard","requiredParams","hasAllRequiredParams","skipRedirect","navigateFallback","C","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","Un","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","PdfViewerComponent","Qe","pdftronLicenseKey","fullAPI","licenseKey","enableAzureWorkaround","disabledElements","WebViewer","annotManager","exportAnnotations","saveComments","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","isDownloadAllInProgress","fileAnnotations","annotation","getFileData","lobs","lob","deleteAnnotations","downloadPdf","loadedSubject","onDocumentLoaderCallback","getComments","mergeMap","Rt","importAnnotations","Kt","Nt","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","setZoomLevel","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","Ke","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","gr","metaReducers","RequestRefDataEffects","actions$","createEffect","ofType","refdataInitialState","sortAZNames","consoleListPrinters","healthPlanCode","SubstituteEffects","dataProvider","forwardData","substituteUserName","UserEffects","MissingTranslationService","Nr","isIe","BrowserService","navigator","userAgent","msalApplicationScope","Ar","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","Lt","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 props<{ requestType: string }>()\n);\nexport const lazyLoadInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load InventoryTypes',\n props<{ requestType: string }>()\n);\nexport const loadInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load InventoryTypes Success',\n props<{ inventoryTypes: CodeNameModel[] }>()\n);\nexport const loadInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load InventoryTypes Failure',\n);\n\n/**\n * ComponentTypes\n */\nexport const loadComponentTypes = createAction(\n '[RequestDetails RefData] Load ComponentTypes'\n);\nexport const lazyLoadComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load ComponentTypes'\n);\nexport const loadComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load ComponentTypes Success',\n props<{ componentTypes: CodeNameModel[] }>()\n);\nexport const loadComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load ComponentTypes Failure',\n);\n\n/**\n * PopItemTypes\n */\nexport const loadPopItemTypes = createAction(\n '[RequestDetails RefData] Load PopItemTypes'\n);\nexport const lazyLoadPopItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load PopItemTypes'\n);\nexport const loadPopItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load PopItemTypes Success',\n props<{ popItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopItemTypesFailure = createAction(\n '[RequestDetails RefData] Load PopItemTypes Failure',\n);\n\n/**\n * ColorTypes\n */\nexport const loadColorTypes = createAction(\n '[RequestDetails RefData] Load ColorTypes'\n);\nexport const lazyLoadColorTypes = createAction(\n '[RequestDetails RefData] Lazy Load ColorTypes'\n);\nexport const loadColorTypesSuccess = createAction(\n '[RequestDetails RefData] Load ColorTypes Success',\n props<{ colorTypes: CodeNameModel[] }>()\n);\nexport const loadColorTypesFailure = createAction(\n '[RequestDetails RefData] Load ColorTypes Failure',\n);\n\n/**\n * DimensionTypes\n */\nexport const loadDimensionTypes = createAction(\n '[RequestDetails RefData] Load DimensionTypes'\n);\nexport const lazyLoadDimensionTypes = createAction(\n '[RequestDetails RefData] Lazy Load DimensionTypes'\n);\nexport const loadDimensionTypesSuccess = createAction(\n '[RequestDetails RefData] Load DimensionTypes Success',\n props<{ dimensionTypes: CodeNameModel[] }>()\n);\nexport const loadDimensionTypesFailure = createAction(\n '[RequestDetails RefData] Load DimensionTypes Failure',\n);\n\n/**\n * FinancialTypes\n */\nexport const loadFinancialTypes = createAction(\n '[RequestDetails RefData] Load FinancialTypes'\n);\nexport const lazyLoadFinancialTypes = createAction(\n '[RequestDetails RefData] Lazy Load FinancialTypes'\n);\nexport const loadFinancialTypesSuccess = createAction(\n '[RequestDetails RefData] Load FinancialTypes Success',\n props<{ financialTypes: CodeNameModel[] }>()\n);\nexport const loadFinancialTypesFailure = createAction(\n '[RequestDetails RefData] Load FinancialTypes Failure',\n);\n/**\n * Pop EventTypes\n */\nexport const loadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Load EventTypes'\n);\nexport const lazyLoadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Lazy Load EventTypes'\n);\nexport const loadPopProdEventTypesSuccess = createAction(\n '[RequestDetails RefData] Load EventTypes Success',\n props<{ popProdEventTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdEventTypesFailure = createAction(\n '[RequestDetails RefData] Load EventTypes Failure',\n);\n/**\n * Pop FundingTypes\n */\nexport const loadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Load FundingTypes'\n);\nexport const lazyLoadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Lazy Load FundingTypes'\n);\nexport const loadPopProdFundingTypesSuccess = createAction(\n '[RequestDetails RefData] Load FundingTypes Success',\n props<{ popProdFundingTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdFundingTypesFailure = createAction(\n '[RequestDetails RefData] Load FundingTypes Failure',\n);\n/**\n * Pop UsageDurationTypes\n */\nexport const loadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes'\n);\nexport const lazyLoadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Lazy Load UsageDurationTypes'\n);\nexport const loadPopProdUsageDurationTypesSuccess = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Success',\n props<{ popUsageDurationTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdUsageDurationTypesFailure = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Failure',\n);\n/**\n * Pop Prod ItemTypes\n */\nexport const loadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes'\n);\nexport const lazyLoadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod ItemTypes'\n);\nexport const loadPopProdItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Success',\n props<{ popProdItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopProdItemTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Failure',\n);\nexport const lazyLoadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod CuttingTypes',\n);\n/**\n * Pop Prod CuttingTypes\n */\nexport const loadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes',\n);\nexport const loadPopProdCuttingTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Success',\n props<{ popProdCuttingTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdCuttingTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Failure',\n);\nexport const lazyLoadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod MaterialTypes',\n);\n/**\n * Pop Prod MaterialTypes\n */\nexport const loadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes',\n);\nexport const loadPopProdMaterialTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Success',\n props<{ popProdMaterialTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdMaterialTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Failure',\n);\nexport const lazyLoadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod TapeTypes',\n);\n/**\n * Pop Prod TapeTypes\n */\nexport const loadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes',\n);\nexport const loadPopProdTapeTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Success',\n props<{ popProdTapeTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdTapeTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Failure',\n);\n/**\n * Pop Prod InventoryTypes\n */\nexport const loadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes'\n);\nexport const lazyLoadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod InventoryTypes'\n);\nexport const loadPopProdInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Success',\n props<{ popProdInventoryTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Failure',\n);\n\n/**\n * Printers\n */\nexport const loadPrinters = createAction(\n '[RequestDetails RefData] Load Printers'\n);\nexport const lazyLoadPrinters = createAction(\n '[RequestDetails RefData] Lazy Load Printers'\n);\nexport const loadPrintersSuccess = createAction(\n '[RequestDetails RefData] Load Printers Success',\n props<{ printers: any[] }>()\n);\nexport const loadPrintersFailure = createAction(\n '[RequestDetails RefData] Load Printers Failure',\n);\n\n/**\n * BifComponentTypes\n */\nexport const loadBifComponentTypes = createAction(\n '[RequestDetails RefData] Load BifComponentTypes'\n);\nexport const lazyLoadBifComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifComponentTypes'\n);\nexport const loadBifComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Success',\n props<{ bifComponentTypes: CodeNameModel[] }>()\n);\nexport const loadBifComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Failure',\n);\n\n/**\n * BifFulfillmentTypes\n */\nexport const loadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes'\n);\nexport const lazyLoadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifFulfillmentTypes'\n);\nexport const loadBifFulfillmentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Success',\n props<{ bifFulfillmentTypes: CodeNameModel[] }>()\n);\nexport const loadBifFulfillmentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Failure',\n);\n\n/**\n * ThirdPartyDataPinFileTypes\n */\nexport const loadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes'\n);\nexport const lazyLoadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyDataPinFileTypes'\n);\nexport const loadThirdPartyDataPinFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Success',\n props<{ thirdPartyDataPinFileTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyDataPinFileTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Failure',\n);\n\n/**\n * ThirdPartyOrderTypes\n */\nexport const loadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes'\n);\nexport const lazyLoadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyOrderTypes'\n);\nexport const loadThirdPartyOrderTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Success',\n props<{ thirdPartyOrderTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyOrderTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Failure',\n);\n\n/**\n * ThirdPartyPrintOwnerTypes\n */\nexport const loadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes'\n);\nexport const lazyLoadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyPrintOwnerTypes'\n);\nexport const loadThirdPartyPrintOwnerTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Success',\n props<{ thirdPartyPrintOwnerTypes: Array }>()\n);\nexport const loadThirdPartyPrintOwnerTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Failure',\n);\n\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 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 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 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(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 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 PKID_MAX_LENGTH = 4;\nexport const PRICE_PATTERN = /^(\\d+(?:[\\.]\\d{1,6})?)$/;\nexport const REQUEST_NAME_PATTERN = /[a-zA-Z0-9]*((-|,|.|:|\\s)*[a-zA-Z0-9])/;\nexport const INTEGER_PATTERN = /[0-9]*/;\nexport const INTEGER_PATTERN_EXCEPT_ZERO_VALUE = /^[1-9][0-9]*$/;\nexport const IMAGE_DENOM_PATTERN = /^[0-9 .,-]*$/;\nexport const MAX_PO_TOTAL = 999999999.9999; // <9>.<4>\nexport const MAX_PO_SUB_TOTAL = 9999999.99; // <7>.<2>\nexport const MAX_POP_PROD_COST_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_COST_TOTAL = 99999999.99; // <8>.<2>\nexport const MAX_REBILL_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_REBILL_TOTAL = 99999999.9999; // <8>.<4>\n\nexport const IH_MAX_PACKAGES = 99;\nexport const IH_MAX_COMPONENTS_PER_ITEM = 10;\nexport const IH_LABELS_QUANTITY_MULTIPLIER = 5000;\n\nexport const THIRD_MAX_RANGES_PER_ITEM = 99;\n\nexport interface PaymentType {\n code: string;\n name: string;\n}\n","export const POP_PRODUCTION_REQUEST = 'POP_PRODUCTION_REQUEST';\nexport const POP_DESIGN_REQUEST = 'POP_DESIGN_REQUEST';\nexport const CARD_DESIGN_REQUEST = 'CARD_DESIGN_REQUEST';\nexport const PRODUCTION_REQUEST = 'PRODUCTION_REQUEST';\nexport const FINANCIAL_SERVICES_REQUEST = 'FINANCIAL_SERVICES_REQUEST';\nexport const BIF_PRODUCTION_REQUEST = 'BIF_PRODUCTION_REQUEST';\nexport const PRODUCTION_REQUEST_3RD_PARTY = 'PRODUCTION_REQUEST_3RD_PARTY';\nexport const DIGITAL_ASSETS_REQUEST = 'DIGITAL_ASSETS_REQUEST';\nexport const IH_PRODUCTION_REQUEST = 'IH_PRODUCTION_REQUEST';\nexport const IMAGE_REQUEST = 'IMAGE_REQUEST';\n\nexport const SUPPORTED_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const DUPLICATE_SUPPORTED_REQUEST_TYPES = [\n PRODUCTION_REQUEST,\n BIF_PRODUCTION_REQUEST,\n IH_PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n POP_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n CARD_DESIGN_REQUEST,\n POP_DESIGN_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const CHANGE_OWNER_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport enum REQUEST_TYPE {\n CPR = 'PRODUCTION_REQUEST',\n CDR = 'CARD_DESIGN_REQUEST',\n PPR = 'POP_PRODUCTION_REQUEST',\n PDR = 'POP_DESIGN_REQUEST',\n FSR = 'FINANCIAL_SERVICES_REQUEST',\n BPR = 'BIF_PRODUCTION_REQUEST',\n TPPR = 'PRODUCTION_REQUEST_3RD_PARTY',\n DAR = 'DIGITAL_ASSETS_REQUEST',\n IPR = 'IH_PRODUCTION_REQUEST',\n IR = 'IMAGE_REQUEST',\n}\n\nexport const REQUEST_TYPES = [\n {\n label: '3rd Party Card Production Request',\n value: PRODUCTION_REQUEST_3RD_PARTY\n },\n {\n label: 'BIF Production Request',\n value: BIF_PRODUCTION_REQUEST\n },\n {\n label: 'Card Design Request',\n value: CARD_DESIGN_REQUEST\n },\n {\n label: 'Digital Assets Request',\n value: DIGITAL_ASSETS_REQUEST\n },\n {\n label: 'Financial Services Request',\n value: FINANCIAL_SERVICES_REQUEST\n },\n {\n label: 'IH Production Request',\n value: IH_PRODUCTION_REQUEST\n },\n {\n label: 'POP Design Request',\n value: POP_DESIGN_REQUEST\n },\n {\n label: 'POP Production Request',\n value: POP_PRODUCTION_REQUEST\n },\n {\n label: 'Production Request',\n value: PRODUCTION_REQUEST\n },\n {\n label: 'Image Request',\n value: IMAGE_REQUEST\n },\n];\n","import {Injectable} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\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, fileName): 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', null,\n this.translateService.instant('common.errors.file-scan-error', { fileName })\n );\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.europeanCountriesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.europeCountries}`));\n this.printers = this.replayAndClone(this.errorHandlingHttp.get(`${API.printers}`));\n this.fileTypesWhiteList = this.replayAndClone(this.errorHandlingHttp.get(`${API.fileTypes}`));\n this.designerList = this.replayAndClone(\n this.errorHandlingHttp.get(`${API.getUsers}`, {params: {nameBeginning: '', groupKeys: UserGroups.Designer}})\n );\n }\n\n // tslint:disable-next-line:no-unused-variable\n private requestDetails: ReplaySubject = new ReplaySubject(1);\n private requestName: ReplaySubject = new ReplaySubject(1);\n private poDetails: ReplaySubject = new ReplaySubject(1);\n\n private warehousesObservable: Observable;\n private companiesObservable: Observable;\n private lineOfBusinessObservable: Observable;\n private channelTypesObservable: Observable;\n private inventoryTypesObservable: Observable;\n private europeanCountriesObservable: Observable;\n private printers: Observable;\n private fileTypesWhiteList: Observable;\n private designerList: Observable>;\n private wpnDetailsByWpnId = {};\n\n private requestTypes$ = this.errorHandlingHttp.get(`${API.requestTypes}`).pipe(\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n /**\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 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/inventory-types';\n public static lineOfBusinessTypes = '/api/reference/request/card-production/line-of-business-types';\n public static designLineOfBusinessTypes = '/api/reference/request/design-line-of-business-types';\n public static regions = '/api/reference/request/card-design/regions';\n public static artLocationTypes = '/api/reference/request/card-design/art-location-types';\n public static designSourceTypes = '/api/reference/request/card-design/design-source-types';\n public static popItemTypes = '/api/reference/request/pop/item-types';\n public static colorTypes = '/api/reference/request/colors';\n public static dimensionTypes = '/api/reference/request/dimensions';\n public static financialTypes = '/api/reference/request/pop/financial-types';\n public static ppEventTypes = '/api/reference/request/pop-production/event-types';\n public static ppFundingTypes = '/api/reference/request/pop-production/funding-types';\n public static ppCuttingTypes = '/api/reference/request/pop-production/items/cutting-types';\n public static ppMaterialTypes = '/api/reference/request/pop-production/items/material-types';\n public static ppTapeTypes = '/api/reference/request/pop-production/items/tape-types';\n public static ppUsageDurationTypes = '/api/reference/request/pop-production/items/usage-duration-types';\n public static ppInventoryTypes = '/api/reference/request/pop-production/inventory-types';\n\n public static fsPaymentTypes = '/api/reference/request/financial-services/payment-types';\n public static fsComponentTypes = '/api/reference/request/financial-services/po/component-types';\n\n public static bifComponentTypes = '/api/reference/request/bif-production/component-types';\n public static bifFulfillmentTypes = '/api/reference/request/bif-production/fulfillment-types';\n\n public static thirdPartyOrderTypes = '/api/reference/request/third-party-production/items/order-types';\n public static thirdPartyDataPinFileTypes = '/api/reference/request/third-party-production/items/data-pin-file-types';\n public static thirdPartyPrintOwnerTypes = '/api/reference/request/third-party-production/print-owner-types';\n public static thirdPartyIssuer = '/api/reference/request/third-party-production/issuers/search';\n public static thirdPartyReturnFileTypes = '/api/reference/request/third-party-production/items/return-file-types';\n 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 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 createThirdPartyArtwork(requestId: string) {\n return `api/requests/third-party-production/${requestId}/details/artworks`;\n }\n public static thirdPartyDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `api/requests/third-party-production/${requestId}/details/artworks/${attachmentId}`;\n }\n public static thirdProdPo(requestId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders`;\n }\n public static thirdProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static thirdProdTpsReportDownload() {\n return `/api/fn/reports/download/third-party-tps-report`;\n }\n public static thirdProdUpdatePO(requestId, poId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}`;\n }\n public static thirdPartyItemPrinters(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/items/printers`;\n }\n public static thirdPartyCreateTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyGetRequestTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyDeleteTps(requestId: string | number, tpsId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/${tpsId}`;\n }\n public static thirdPartyBulkUpdateItems(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details`;\n }\n public static thirdPartyBulkUpdateCardRanges(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details/card-ranges`;\n }\n public static thirdPartyBulkUpdateCC(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/card-collateral-confirmation-details`;\n }\n /**\n * @deprecated\n */\n public static createIHProductionItemArtwork(requestId: string, itemId: number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks`;\n }\n public static createIHProductionArtwork(requestId: string) {\n return `/api/requests/ih-production/${requestId}/artworks`;\n }\n /**\n * @deprecated\n */\n public static ihProductionDeleteItemArtwork(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks/${attachmentId}`;\n }\n\n public static ihProductionDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/artworks/${attachmentId}`;\n }\n\n /**\n * IH Production Request\n */\n public static ihProdPo(requestId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders`;\n }\n public static ihProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static ihProdUpdatePO(requestId, poId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}`;\n }\n public static createIhPrinterProof(requestId: string) {\n return `/api/requests/ih-production/${requestId}/printer-proofs`;\n }\n public static ihDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/printer-proofs/${attachmentId}`;\n }\n public static ihUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/printer-proofs/${attachmentId}/review`;\n }\n\n static substitutes() {\n return `/api/users/substitutes`;\n }\n\n static substitute(substituteUsername: string) {\n return `/api/users/substitutes/${substituteUsername}`;\n }\n\n static adminSubstitute(username: string, substituteUsername: string) {\n return `/api/admin/users/substitutes/${username}/${substituteUsername}`;\n }\n\n static adminSubstitutes(username?: string) {\n if (username == null) {\n return `/api/admin/users/substitutes`;\n }\n return `/api/admin/users/substitutes/${username}`;\n }\n\n static emailTps() {\n return `/api/fn/reports/email/tps`;\n }\n\n static emailTpsTemplates() {\n return `/api/requests/third-party-production/spreadsheets/email-templates`;\n }\n\n static userSettings() {\n return `/api/users/profiles/settings`;\n }\n\n static userEmailSignature() {\n return `/api/users/profiles/settings/email-signature`;\n }\n\n static cardDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/card-design/${requestId}/prep-artifacts-designer`;\n }\n\n static popDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/pop-design/${requestId}/prep-artifacts-designer`;\n }\n static editAdditionalOtherContacts(requestNumber) {\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 };\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 };\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 },\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 },\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_GO_RAN = 'GROUP_FN_PRODUCEIT_FSM_GO_RAN';\nconst GROUP_FN_PRODUCEIT_FSM_MY_VANILLA = 'GROUP_FN_PRODUCEIT_FSM_MY_VANILLA';\nconst GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND = 'GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND';\nconst GROUP_FN_PRODUCEIT_FSM_SERVE = 'GROUP_FN_PRODUCEIT_FSM_SERVE';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GO = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GO';\nconst GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER = 'GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER';\nconst GROUP_FN_PRODUCEIT_ADMIN = 'GROUP_FN_PRODUCEIT_ADMIN';\nconst GROUP_FN_PRODUCEIT_USER = 'GROUP_FN_PRODUCEIT_USER';\nconst GROUP_FN_PRODUCEIT_SUPER_USER = 'GROUP_FN_PRODUCEIT_SUPER_USER';\nconst GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN = 'GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN';\nconst GROUP_FN_PRODUCEIT_PO_REPORT_USER = 'GROUP_FN_PRODUCEIT_PO_REPORT_USER';\n\nexport class PermissionGroups {\n static readonly PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER;\n static readonly POP_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER;\n static readonly FSR_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER;\n static readonly BIF_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER;\n static readonly IHA_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER;\n static readonly ['3RD_PARTY_CARD_PRODUCTION_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER;\n static readonly FINANCE_APPROVER_PREPAID = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID;\n static readonly FINANCE_APPROVER_REBILL = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL;\n static readonly FINANCE_APPROVER_INCOMM_PAYS = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS;\n static readonly POP_PRODUCTION_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER;\n static readonly TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER;\n static readonly PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER;\n static readonly CARD_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER;\n static readonly POP_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER;\n static readonly IMAGE_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER;\n static readonly POP_PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER;\n static readonly ['3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER;\n static readonly DESIGNER = GROUP_FN_PRODUCEIT_DESIGNER;\n static readonly CREATIVE_DIRECTOR = GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR;\n static readonly FSM_AMERICAN_EXPRESS_GIFT = GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT;\n static readonly FSM_BLUEBIRD = GROUP_FN_PRODUCEIT_FSM_BLUEBIRD;\n static readonly FSM_CUENTAS = GROUP_FN_PRODUCEIT_FSM_CUENTAS;\n static readonly FSM_FS_TAX = GROUP_FN_PRODUCEIT_FSM_FS_TAX;\n static readonly FSM_GO_RAN = GROUP_FN_PRODUCEIT_FSM_GO_RAN;\n static readonly FSM_MY_VANILLA = GROUP_FN_PRODUCEIT_FSM_MY_VANILLA;\n static readonly FSM_SECURE_SPEND = GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND;\n static readonly FSM_SERVE = GROUP_FN_PRODUCEIT_FSM_SERVE;\n static readonly FSM_VANILLA_DIRECT = GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT;\n static readonly FSM_VANILLA_GIFT = GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT;\n static readonly FSM_VANILLA_GO = GROUP_FN_PRODUCEIT_FSM_VANILLA_GO;\n static readonly POP_DESIGN_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER;\n static readonly ADMIN = GROUP_FN_PRODUCEIT_ADMIN;\n static readonly USER = GROUP_FN_PRODUCEIT_USER;\n static readonly SUPER_USER = GROUP_FN_PRODUCEIT_SUPER_USER;\n static readonly SUBSTITUTION_ADMIN = GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN;\n static readonly PO_REPORT_USER = GROUP_FN_PRODUCEIT_PO_REPORT_USER;\n}\n\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT = 'FN_PRODUCEIT_CARD_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT = 'FN_PRODUCEIT_POP_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT = 'FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT = 'FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT = 'FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT = 'FN_PRODUCEIT_IMAGE_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION = 'FN_PRODUCEIT_IMAGE_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_PO_REPORT = 'FN_PRODUCEIT_PO_REPORT';\nconst ROLE_FN_PRODUCEIT_MIMIC_USER = 'FN_PRODUCEIT_MIMIC_USER';\nconst ROLE_FN_PRODUCEIT_ADMIN_USER = 'FN_PRODUCEIT_ADMIN_USER';\n\nexport class PermissionRoles {\n static readonly CARD_PROD_UPLD_ART_SUBMIT = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT;\n static readonly CARD_PROD_UPLD_ART_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK;\n static readonly CARD_PROD_UPLD_ART_CANCEL = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL;\n static readonly CARD_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW;\n static readonly CARD_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT;\n static readonly CARD_DESIGN_CD_REVIEW_APPROVE = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE;\n static readonly CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_ROUT_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_CANCEL = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL;\n static readonly CARD_DESIGN_IEC_PROOF_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK;\n static readonly CARD_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION;\n static readonly POP_DESIGN_FS_REVIEW_1_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT;\n static readonly POP_DESIGN_FS_REVIEW_2_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT;\n static readonly POP_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT;\n static readonly POP_DESIGN_CD_REVIEW_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT;\n static readonly POP_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW;\n static readonly POP_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION;\n static readonly POP_PROD_FIN_APPR_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT;\n static readonly POP_PROD_UPLD_ART_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT;\n static readonly IMAGE_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW;\n static readonly IMAGE_TM_EDIT = ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT;\n static readonly IMAGE_NOTATE_VERSION = ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION;\n static readonly PO_REPORT = ROLE_FN_PRODUCEIT_PO_REPORT;\n static readonly MIMIC_USER = ROLE_FN_PRODUCEIT_MIMIC_USER;\n static readonly ADMIN_USER = ROLE_FN_PRODUCEIT_ADMIN_USER;\n}\n\nconst REQUEST_DETAILS_REQUESTER = 'REQUESTER';\n// Can assign designer\nconst CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED = 'ASSIGNEE_STEP_INCLUDED';\nconst ASSIGNED_TM = 'ASSIGNED_TM';\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 };\n THIRD_PARTY_PRODUCTION: {\n FINANCE: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n OPS: FileSizeRestriction;\n ASN: FileSizeRestriction;\n EXTERNAL_PIN: FileSizeRestriction;\n };\n IMAGE: {\n ART_FILE: FileSizeRestriction;\n };\n IH_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n };\n}\n\nconst DEFAULT_FILE_SIZE_RESTRICTION: FileSizeRestriction = {\n sizeNumber: 50,\n sizeType: 'MB'\n};\n\nexport const FILE_SIZE_RESTRICTIONS: FileSizeRestrictions = {\n GLOBAL: DEFAULT_FILE_SIZE_RESTRICTION,\n CARD_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n PROOF_OF_PAYMENT: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n PO_SOW: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n CARD_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n FS_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n OTHER: DEFAULT_FILE_SIZE_RESTRICTION,\n PARTNER_ART: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_QUOTE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n FINANCIAL_SERVICES: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n BIF_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n THIRD_PARTY_PRODUCTION: {\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n OPS: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IMAGE: {\n ART_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IH_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n }\n};\n","import { UserSettings } from './user-settings.model';\n\nexport interface UserModel {\n firstName: string;\n userName: string;\n lastName: string;\n mdmId?: number;\n middleName?: string;\n incomm?: boolean;\n groups?: string[];\n}\n\n/**\n * Model, descripting current logged in user\n */\nexport interface SystemUserModel {\n userName: string;\n firstName: string;\n lastName: string;\n substitutedUsers: string[];\n settings: UserSettings;\n}\n\nexport enum UserTheme {\n 'LIGHT' = 'LIGHT',\n 'DARK' = 'DARK',\n}\n","import {DatePipe} from '@angular/common';\nimport {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\n// eslint-disable-next-line no-restricted-syntax\nimport * as moment from 'moment-timezone';\n\n@Pipe({\n name: 'date',\n})\nexport class DatePipeTz extends DatePipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) locale: string) {\n super(locale);\n }\n transform(value: any, format?: string, timezone: string = 'America/New_York', locale?: string): any {\n return super.transform(value, format, timezone !== null ? moment.tz(value, timezone).format('z') : undefined, locale);\n }\n}\n","import { 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 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: '98be444'\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, mergeMap, takeUntil} from 'rxjs/operators';\nimport {PdfViewerService} from '../../../services/pdf-viewer.service';\nimport {MessageService} from '../../../services/message-service.service';\nimport {FILE_SIZE_RESTRICTIONS} from '../../../models/upload-file-restrictions.model';\nimport {UtilsService} from '../../../services/utils.service';\nimport moment from 'moment';\nimport {TranslateService} from '@ngx-translate/core';\nimport {LoaderService} from '../../../services/loader.service';\nimport { UserTheme } from 'src/app/shared/models/user.model';\nimport { UserSettingsService } from 'src/app/shared/services/user-settings.service';\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 });\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 }\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 const onDocumentLoaderCallback = async () => {\n\n this.pdfViewerService.approvalManagerService\n .getComments(version)\n .pipe(mergeMap((text) => this.compareWvInstance.Core.annotationManager.importAnnotations(text).then(() => {\n this.compareWvInstance.UI.downloadPdf({\n filename: version.attachment?.fileName,\n });\n })))\n .subscribe({\n complete: () => {\n this.compareWvInstance.Core.documentViewer.addEventListener('documentLoaded', onDocumentLoaderCallback);\n setTimeout(() => {\n loadedSubject.next(version);\n loadedSubject.complete();\n }, 1000);\n }\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 this.isDownloadAllInProgress = true;\n try {\n for (const version of versions) {\n await downloadFile(version);\n }\n } catch (e) {\n console.error(e);\n } finally {\n this.isDownloadAllInProgress = false;\n }\n }\n\n private async loadDoc(wvInstance: WebViewerInstance, version) {\n if (!version) {\n await this.closeDocument(wvInstance);\n return;\n }\n\n const downloadRequest = await this.pdfViewerService.approvalManagerService.getDownloadRequest(version);\n const extension = this.pdfViewerService.approvalManagerService.getVersionFileExtension(version);\n\n if (['tif', 'tiff'].indexOf((extension.toLowerCase() || ''.toLowerCase())) === -1) {\n wvInstance?.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} from './refdata.actions';\nimport {refDataInitialState as refdataInitialState} from './refdata.reducer';\nimport {\n selectArtLocationTypes,\n selectBifComponentTypes,\n selectBifFulfillmentTypes,\n selectChannelTypes,\n selectColorTypes,\n selectCompanies,\n selectComponentTypes,\n selectDataPinFileTypes,\n selectDesignLineOfBusiness,\n selectDesignSourceTypes,\n selectDielines,\n selectDimensionTypes,\n selectFinancialTypes,\n selectFSPaymentTypes,\n selectIhComponents,\n selectIhHealthPlans,\n selectIhHealthPrograms,\n selectIhPriorities,\n selectImageFormatTypes,\n selectInventoryTypes,\n selectPartnerGroups,\n selectPaymentTypes,\n selectPopChannelTypes,\n selectPopItemTypes,\n selectPopProdCuttingTypes,\n selectPopProdEventTypes,\n selectPopProdFundingTypes,\n selectPopProdInventoryTypes,\n selectPopProdItemTypes,\n selectPopProdMaterialTypes,\n selectPopProdTapeTypes,\n selectPopProdUsageDurationTypes,\n selectPrinters,\n selectRedemptionTypes,\n selectRegions,\n selectRequestItemTypes,\n selectReturnFileTypes,\n selectSubstrates,\n 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(action =>\n this.errorHandlingHttpClient.get(`${API.inventoryTypes}?requestType=${action.requestType}`).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(([{requestType}, storedData]) => {\n if (refdataInitialState.inventoryTypes === storedData) {\n return of(loadInventoryTypes({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;"]}