{"version":3,"file":"main.3b837063bdcd9b12.js","mappings":"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","names":["MasterLibraryHelper","getLibraryName","libraryName","translateService","Object","values","DesignRuleLibrary","includes","instant","i0","$event","_r1","ctx_r1","onSort$","next","tableConfig","tableData_r3","TenantWorkspacesTableComponent","page","this","page$","value","pageSize","pageSize$","constructor","userService","router","activatedRoute","notificationService","errorHandlerService","busMessageService","workspaceService","modalService","loadErrorHandler","userAclService","isFiltered","userId","errorResponseMessages","errorMessage","selectedWorkspace","subscriptions","Subscription","pageSizeLimits","DEFAULT_ENTRY_LIMITS","BehaviorSubject","length","activeWorkspacesCount","toTableData","entries","hasEditPermissions","hasDeletePermissions","_this","closedWorkspaceDescription","map","entry","status","workspaceStatus","active","editWorkspaceItem","label","clickListener","editSelectedWorkspace","disabled","closeWorkspaceItem","_ref","_asyncToGenerator","handleCloseWorkspace","apply","arguments","isWorkspaceUsedNow","dropdownItems","push","data","$workspace","name","NgbTableUtilities","linkCell","text","attributes","routerLink","Api","workspaces","_id","description","textCell","digitalPropertiesCount","toString","actions","dropdownCell","ellipsisIcon","classes","styles","backgroundColor","loadTable","hasEditPermissions$","createCheckAccessForCurrentUser","pipe","adapter","useEntityLevel","useFunctionalActions","RequiredSecurities","Workspaces_Update","functionalActions","check","hasDeletePermissions$","Workspaces_Delete","tableData$","combineLatest","slicedWorkspaces$","slicedWorkspaces","workspace","onRemoveWorkspaceSuccess","workspaceClient","reloadWorkspaces$","message","success","NotificationPosition","Toast","to","BusMessageChannels","workspaceDeleted","onRemoveWorkspaceError","error","handleError","isOtherUsersPresent","users","SharedCommonUtility","isNullishOrEmpty","some","user","$user","displayUsersPresentAlert","open","AlertModalComponent","instance","init","headerKey","bodyKey","bodyHighlightKey","closeBtnKey","removeWorkspace","_this2","confirmModal","CheckboxConfirmationModalComponent","container","onClose$","take","toPromise","confirmed","cancelled","add","subscribe","bind","_this3","getUsers","WorkspaceUserSearchFields","includeStaffUsers","response","navigate","edit","relativeTo","catch","handleRoutingError","columns","translationKey","sortingEnabled","width","caption","emptyState","title","subtitle","ngOnInit","workspaces$","onSort","sortedWorkspaces","filter","isNullish","direction","$sortingOrder","all","sort","a","b","localeCompare","desc","slice","workspaceCount$","startWith","getAuthenticatedUserProfile","queryParams","LinkedPropertyUtility","fromLinkedPropertyQueryParam","tap","linkedPropertyData","workspaceId","catchError","ngOnDestroy","unsubscribe","i1","i2","i3","i4","i5","i6","i7","i8","i9","i10","selectors","inputs","decls","vars","consts","template","rf","ctx","TenantWorkspacesTableComponent_div_4_Template","level_r1","conformanceLevel","AccessibilityConformanceLevelSelectorComponent","changeDetectorRef","_onChange","_level","_onTouched","buildAccessibilityLevelOptions","accessibilityConformanceOptions","standardNameAndLevel","standard","essential_v10_A","onConformanceLevelChange","event","target","detectChanges","setDisabledState","_disabled","registerOnChange","fn","registerOnTouched","writeValue","required","errorState","formValidationRequest$","features","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","AccessibilityConformanceLevelSelectorComponent_option_3_Template","AdvancedSearchComponent_ng_container_5_ng_template_1_Template","searchRow_r4","_c0","index_r3","searchGroup_r2","field_r5","operation_r6","_r7","ctx_r7","addSearchRow","DsButtonVariants","microAction","Icons","Plus","_r9","index_r10","index","removeSearchRow","AdvancedSearchComponent_ng_template_13_option_7_Template","AdvancedSearchComponent_ng_template_13_option_13_Template","AdvancedSearchComponent_ng_template_13_button_25_Template","AdvancedSearchComponent_ng_template_13_button_26_Template","searchGroup_r11","$advancedSearchForm","fieldToSearch","fieldsToSearch","operation","operations","exceededLimit","searchFields","AdvancedSearchOperation","contains","does_not_contain","ends_with","starts_with","regex","AdvancedSearchComponent","formBuilder","onApply","EventEmitter","array","searchForm","group","row","defaultField","defaultOperation","removeAt","submitSearch","emit","resetSearch","clear","Array","isArray","initialRows","forEach","outputs","AdvancedSearchComponent_ng_container_5_Template","preventDefault","AdvancedSearchComponent_ng_template_13_Template","controls","ArrowsRotate","secondary","AiChatMarkdownViewComponent","ngOnChanges","convertedData","MarkdownUtility","render","RenderType","AICHAT","header","getHeaderData","AlertComponent_div_0_ng_container_8_li_3_Template","AlertComponent_div_0_ng_container_8_div_4_Template","componentId","technicalDetails","pageScreenshot","AlertComponent_div_0_ng_container_4_Template","AlertComponent_div_0_ng_container_5_Template","AlertComponent_div_0_ng_container_8_Template","remove","type","AlertComponent","_type","setFocusForDangerAlert","isVisible","onClose","errorDetailsAriaExpandedState","alertType","danger","CommonUtility","setFocusToElement","JSON","stringify","createUniqueDOMId","AlertComponent_div_0_Template","ctx_r0","fileRelativePath","fileThumbnailPath","altText","AttachmentThumbnailComponent_ng_template_2__svg_svg_3_Template","AttachmentThumbnailComponent_ng_template_2__svg_svg_4_Template","AttachmentThumbnailComponent_ng_template_2__svg_svg_5_Template","fileExtension","fileDownloadLink","$allowedManualAuditAttachmentExt","xlsx","csv","EapColors","RedError","WarningTriangleIcon","_r2","_r3","AttachmentThumbnailComponent_details_16_li_6_Template","AttachmentThumbnailComponent_details_16_li_7_Template","isEditable","isRemovable","AttachmentThumbnailComponent","IMAGE_FILE_EXTENSIONS","Set","ImageFileExtensions","updateAttachment","removeAttachment","modal","EditAttachmentModalComponent","context","uploadId","fileUploadId","notNullish","onSave","fileName","getFileExtension","has","displayMissingAltTextWarning","isInternal","AttachmentThumbnailComponent_ng_container_1_Template","AttachmentThumbnailComponent_ng_template_2_Template","AttachmentThumbnailComponent_div_7_Template","AttachmentThumbnailComponent_details_16_Template","notThumbnailPath_r4","element","errorMessageService","$uploads","CHAR_LIMIT_ALT_TEXT","Subject","form","control","CustomValidators","maxLength","cancel","closeModal","save","isFormPristine","pristine","invalid","setFocusOnFirstError","nativeElement","editAttachment","get","viewQuery","ModalContainerComponent","standard_r1","WCAG","versions","ctx_r2","displayWCAGOrNACriteria","standard_r2","rule","category","severity","getSeverityLabel","customSeverityKeysSortedByRank","_c1","AuditDeleteRuleModalContentComponent","successCriteriaFormatterService","featureFlagService","tenantSeveritiesService","toDisplayCriterias","identifiers","AuditStandards","wcag","$successCriteria","num","notApplicable","separator","Separator","newLine","preset","CriteriaPreset","criteriaIdentifierWithLevel","customLabel","SharedTextUtility","capitalize","customSeverities","$customSeverity","customSeverityFF","notNullishOrEmpty","isCustomRule","getAll","variation$","FeatureFlagCollection","getCustomSeverityKeysSortedByRank","AuditDeleteRuleModalContentComponent_div_23_Template","AuditDeleteRuleModalContentComponent_div_28_Template","AuditDeleteRuleModalContentComponent_div_29_Template","AuditDeleteRuleModalContentComponent_div_30_Template","AuditDeleteRuleModalContentComponent_table_cell_custom_severity_36_Template","AuditDeleteRuleModalContentComponent_ng_template_37_Template","ruleId","standards","severityCell_r4","limit_r1","pageNum_r2","TableColumns","criteria","wcagSuccessCriteria","toolVersion","AuditRuleTableComponent","rules","_rules$","canEditRule","_canEditRule$","canDeleteRule","_canDeleteRule$","_customSeverities$","hasCustomRulesFlag","_hasCustomRulesFlag$","pageSizeChanged","viewportScroller","scrollToPosition","pageChanged","ngbPaginationConfig","successCriteriaService","pageSizes","sortChange","auditRuleDeleted","maxSize","DEFAULT_PAGINATION_MAX_SIZE","editAuditRule","id","getSuccessCriteriaStandards","successCriteria","customRulesFlag","result","$auditStandardSuccessCriteria","auditStandards","auditStandard","mapAuditDbStandardToAuditStandard","$auditStandard","AuditDbStandardValues","dbStandard","getRuleCriteria","ruleDef","Map","$auditRule","successCriterias","standardCriteria","getSuccessCriteriaFromStandard","identifier","set","ruleToPageRow","ruleCriterias","view","customRulesData","htmlCell","flatMap","criteriaIdentifierWithHandle","divider","Divider","hyphen","join","getAccessibilityStandards","legacyData","criteriaVersions","DSSeverityCell","customSeverity","system","highSeverity","$severity","high","rank","class","SeverityClass","moderate","icon","ChevronUp","minor","ChevronDown","getSeverityConfig","severityCell","editAuditRuleItem","deleteAuditRuleItem","actionItems","ariaLabel","getTableConfig","maxWidth","minWidth","overflow","textOverflow","whiteSpace","emptyStateConfig","column","tableConfig$","pageData$","customRuleFlag","auditRules","auditRule","taskCount$","_total","paginationLabel$","taskCount","startIndex","Math","min","lastIndex","String","NgbPaginationConfig","AuditRuleTableComponent_option_12_Template","AuditRuleTableComponent_ng_template_20_Template","AuditRuleTableComponent_ng_template_21_Template","AuditRuleTableComponent_ng_template_22_Template","testingMedium","criteria_r3","AuditRuleViewComponent_Conditional_14_Conditional_5_Template","AuditRuleViewComponent_Conditional_14_Conditional_6_Template","AuditRuleViewComponent_Conditional_14_div_7_Template","AuditRuleViewComponent_Conditional_14_div_8_Template","AuditRuleViewComponent_Conditional_14_div_14_Template","AuditRuleViewComponent_Conditional_14_div_19_Template","getRuleAccessibilityStandards","standard_r4","getStandardVersions","standard_r5","AuditRuleViewComponent_Conditional_15_div_5_Template","AuditRuleViewComponent_Conditional_15_div_10_Template","AuditRuleViewComponent_Conditional_15_Conditional_16_Template","AuditRuleViewComponent_Conditional_15_Conditional_17_Template","AuditRuleViewComponent_Conditional_15_div_18_Template","AuditRuleViewComponent_Conditional_15_div_19_Template","stepsToReproduce","actualResult","AuditRuleViewComponent_div_17_ng_container_5_Template","AuditRuleViewComponent_div_17_ng_template_6_Template","isAccessipediaRule","otherRule_r6","recommendation","AuditRuleViewComponent_div_18_ng_container_5_Template","AuditRuleViewComponent_div_18_ng_template_6_Template","otherRule_r7","functionalImpact","disability_r8","AuditRuleViewComponent_div_20_li_6_Template","disabilitiesAffected","applicableElementsSelectors","testId","testName","testManualSteps","referencedRule","compliantCodeExample","nonCompliantCodeExample","technique_r9","AuditRuleViewComponent_div_28_div_6_Template","techniques","AuditRuleViewComponent","showCustomRulesData","AuditToolNames","getRuleStandardCriteriaMap","std","AuditRuleViewComponent_Conditional_14_Template","AuditRuleViewComponent_Conditional_15_Template","AuditRuleViewComponent_div_16_Template","AuditRuleViewComponent_div_17_Template","AuditRuleViewComponent_div_18_Template","AuditRuleViewComponent_div_19_Template","AuditRuleViewComponent_div_20_Template","AuditRuleViewComponent_div_21_Template","AuditRuleViewComponent_div_22_Template","AuditRuleViewComponent_div_23_Template","AuditRuleViewComponent_div_24_Template","AuditRuleViewComponent_div_25_Template","AuditRuleViewComponent_div_26_Template","AuditRuleViewComponent_div_27_Template","AuditRuleViewComponent_div_28_Template","tool","access_engine","UpsertAuditRuleFormComponent_div_26_ng_container_4_ng_container_1_div_1_Template","standards_r2","UpsertAuditRuleFormComponent_div_26_ng_container_4_ng_container_1_Template","placeholder_r3","UpsertAuditRuleFormComponent_div_26_ng_container_4_Template","UpsertAuditRuleFormComponent_div_26_ng_template_6_Template","ctx_r3","accessibilityStandards$","_c9","_c10","_c11","_c12","_c13","_c14","UpsertAuditRuleFormComponent","auditRuleData","setForm","auditRuleService","customAuditRuleService","$manualAudit","ruleLibraryCodeNames","AuditRuleAction","createForm","getAllSupportedCriteriaFromStandard","functionalImpacts","keys","AuditFindingIssueEffort","key","disabilities","AuditFindingDisabilityAffected","subscription","existingRuleIds","evaluationMediums","EVALUATION_MEDIUMS","medium","EvaluationMediums","hardware","pv_web","validateIsEmpty","ruleLibrary","evaluationMedium","ruleSuccessCriterias","wcagCriteria","cr","patchValue","pick","startPropagatingFormChangesToQueryParams","valueChanges","withLatestFrom","newQueryParams","skipLocationChange","then","updateTestRelatedFormFields","displayTestFields","setValidators","clearValidators","setErrors","initializeLibrariesObservables","librariesRaw$","isCustomAuditRule","getCustomAuditRulesLibrary","getLibraries","AngularUtility","shareRef","libraries$","libraries","lib","setValue","currentLibrary","ruleLibraryValueChanges$","selectedLibrary$","selectedLibrary","allLibraries","find","library","isWebLaLibrary","code","web_la","RULE_LIBRARY_CODE_TO_EVALUATION_MEDIUM","emitEvent","action","Create","criteriaChanges$","distinctUntilChanged","getFormattedStandardsByIdentifiers","categories$","categories","librariesWithTestData","libraryContainsTestData","showTestFields","selectedMedium$","selectedMedium","EVALUATION_MEDIUM_TO_RULE_LIBRARY_CODE","Update","of","customAuditRuleInitializer","addAsyncValidators","validateRuleIdUniqueness","updateValueAndValidity","masterLibraryAuditRuleInitializer","getRuleIds","ruleIds","ruleIdDuplicatedValidator","params","snapshot","paramMap","markAsTouched","design","createDesignRule","queryParamsHandling","buildSeveritiesObservable","severities$","switchMap","customSeveritiesEnabled","severityKeys","TenantSeveritiesService","isCustomSeverity","customSeveritiesMap","getSeverityKeysSortedByRank","nameValue","formattedStandards","supportedStandards","en301549","section508","getSuccessCriteriaListFromStandards","levelByVersions","reduce","acc","current","version","level","successCriteriaToLabel","sc","handle","successCriteriaToSelectedItem","findSuccessCriteriaToSelectedItem","valid","ruleUpsertRequest","omit","split","cancelLink","custom_audit_rules","admin","master_library","librarySelectContext","field","translateName","valueKey","nameKey","ngAfterViewInit","ngAfterViewChecked","UpsertAuditRuleFormComponent_div_26_Template","UpsertAuditRuleFormComponent_ng_container_46_Template","UpsertAuditRuleFormComponent_ng_container_47_Template","_c2","_c3","_c4","_c5","_c6","_c7","_c8","primary","UpsertAuditRuleComponent_ng_container_2_ng_container_8_Template","backLink","pageHeader_r2","UpsertAuditRuleComponent_ng_template_3_ng_container_1_Template","headingTitleKey","UpsertAuditRuleComponent_ng_container_8_ng_container_3_Template","pageForm_r3","_r4","auditRuleAction","isMasterRule","UpsertAuditRuleComponent","getRouteData","isCreate","getRuleInfo","decodeURIComponent","ruleInfoSubscription","findRuleByID","findCustomAuditRuleByRuleId","customAuditRule","onSaveSuccess","commands","extras","ruleSaveErrorTranslationKey","isCustomRuleCreate","auditRuleFormSubmission","createAuditRule","editRuleByRuleId","createCustomAuditRule","editCustomAuditRuleByRuleId","UpsertAuditRuleComponent_ng_container_2_Template","UpsertAuditRuleComponent_ng_template_3_Template","UpsertAuditRuleComponent_ng_template_5_Template","UpsertAuditRuleComponent_ng_container_8_Template","UpsertAuditRuleComponent_ng_template_9_Template","pageHeaderWrapper_r5","AvatarInputComponent","domSanitizer","uniqueId","hasAvatarError","avatarSelectedFile","avatarFileList","setDefaultAvatar","supportedAvatarFileTypes","SupportedImageMimeType","formValidationRequest","asObservable","formConfig","avatar","UntypedFormControl","validators","validateSingleFileIsImage","updateOn","alt","src","bypassSecurityTrustUrl","getDefaultAvatarURL","triggerFileUploadDialog","triggerClickEventOnElement","onSelectedAvatar","avatarInputElement","files","item","onCroppedFile","blob","reader","FileReader","updateImageSrc","evt","onChange","removeEventListener","avatarResized","addEventListener","readAsDataURL","avatarOnError","console","warn","clientWidth","onTouched","isDisabled","obj","ViewAvatarComponent","changeDetector","height","getUserAvatarUrl","getAvatar","getAltText","accountStatus","displayName","changes","prop","getOwnPropertyNames","previousValue","isEqual","currentValue","Check","CircleInfo","CircleExclamation","TriangleExclamation","BannerComponent_ng_container_0_div_8_div_1_Template","BannerComponent_ng_container_0_div_8_ng_container_2_Template","isHtml","closeBanner","XMark","BannerComponent_ng_container_0_ng_container_4_Template","BannerComponent_ng_container_0_ng_container_5_Template","BannerComponent_ng_container_0_ng_container_6_Template","BannerComponent_ng_container_0_ng_container_7_Template","BannerComponent_ng_container_0_div_8_Template","BannerComponent_ng_container_0_ng_template_9_Template","BannerComponent_ng_container_0_ng_container_11_Template","BannerType","info","warning","isRawHtml","projection_r3","closeable","BannerComponent","show","visible","hide","ngContentSelectors","BannerComponent_ng_container_0_Template","BreadcrumbWrapperComponent","wrap","route","path","component","children","breadcrumbsService","breadcrumbs$","crumbs$","breadcrumbs","breadcrumb","textTranslated","rtLink","wrapIntoObservable","Observable","isPromise","from","Promise","resolve","BreadcrumbsService","_router","_config","_injector","_defaultResolver","_breadcrumbs","subscribeNavigationEnd","events","routerEvent","NavigationEnd","onNavigationEnd","_resolveCrumbs","routerState","root","mergeMap","distinct","toArray","postProcess","first","routeConfig","ActivatedRouteData","resolver","firstChild","concat","factory","ɵfac","mapPasswordErrorToTranslation","PASSWORD_ERRORS","minlength","noLowercase","noUppercase","noNumberOrSpecial","beenUsed","AbstractChangePasswordComponent","a11yService","formService","asyncValidation$","serverErrorInfoBox","formErrorInfoBox","IconStyles","emailToken","undefined","skipLoader","validateHasNeverBeenUsed","delay","DEBOUNCE_TIME","currentPasswordRequired","verifyPreviousPassword","verifyPreviousPasswordVisitor","verification","setTimeout","currentPassword","Validators","newPassword","minLength","minPasswordLength","validateHasUppercase","validateHasLowercase","validateHasNumberOrSpecial","asyncValidators","formChangePassword","closeBothErrorInfoBox","onSaveUserSettingsSuccess","reset","enable","markAsPristine","onSaveUserSettingsError","serverErrorInfoBoxReason","extractHTTPErrorName","errorMessagesNames","InvalidCurrentPassword","isFieldValid","validatePassword","dirty","formErrorInfoBoxReason","submitButtonLabel","onSubmitPasswordChange","disable","setMessage","submit","independentForm","Error","closeServerInfoBox","closeFormInfoBox","syncFormChecklist$","_","syncErrorsToCheck","newValue","fieldControl","ne","hasError","asyncFormChecklist$","asyncErrorsToCheck","__","syncChecklist","shortCircuit","v","isInvalid","Ie","formChecklist$","syncPasswordChecklist","asyncPasswordChecklist","passwordChecklist","errorKey","translation","CodeBlockComponent","clipboardUtilityService","microButtonVariant","copyIcon","Copy","copyCodeToClipboard","copyTextToClipboard","copyButtonAriaLabel","counter","AccordionItemComponent","contentId","collapsed","collapsedChange","toggleCollapsed","contentDescription","AccordionItemComponent_span_9_Template","AccordionItemComponent_ng_template_10_Template","useHeaderContent_r3","AccordionComponent_ng_container_0_li_2_ul_3_li_1_ng_container_1_Template","item_r1","AccordionComponent_ng_container_0_li_2_ul_3_ng_template_2_ng_template_0_Template","panel_r2","contentTpl","templateRef","AccordionComponent_ng_container_0_li_2_ul_3_li_1_Template","AccordionComponent_ng_container_0_li_2_ul_3_ng_template_2_Template","nestedList","AccordionComponent_ng_container_0_li_2_ng_template_2_Template","AccordionComponent_ng_container_0_li_2_ul_3_Template","headerTpl","isOpen","AccordionComponent_ng_container_0_li_2_Template","panels","AccordionComponent_ng_template_1_ng_template_0_div_3_ng_template_2_Template","panel_r4","AccordionComponent_ng_template_1_ng_template_0_ng_template_2_Template","AccordionComponent_ng_template_1_ng_template_0_div_3_Template","AccordionComponent_ng_template_1_ng_template_0_Template","nextId","AccordionPanelHeaderDirective","AccordionPanelContentDirective","AccordionPanelDirective","ngAfterContentChecked","headerTpls","contentTpls","contentQueries","dirIndex","AccordionComponent","ariaLabelledBy","labeledBy","activeIds","useList","changeOpenState","panel","nextState","updateActiveIds","findPanelById","panelId","p","expand","expandAll","collapse","collapseAll","toggle","indexOf","AccordionComponent_ng_container_0_Template","AccordionComponent_ng_template_1_Template","accordion_r5","AccordionChevronComponent","opened","AccordionButtonDirective","el","onHover","hoverState","classList","onHoverOff","onFocus","focusState","onBlur","hostVars","hostBindings","AccordionPanelToggleDirective","expanded","accordion","click","Regular","CommonAlertBoxComponent_div_1__svg_svg_2_Template","CommonAlertBoxComponent_div_1__svg_svg_3_Template","CommonAlertBoxComponent_div_1_ds_icon_4_Template","AlertType","CommonAlertBoxComponent","hasIcon","CommonAlertBoxComponent_div_1_Template","CommonAlertBoxComponent_div_3_Template","CommonAlertBoxComponent_div_6_Template","getOptionName","value_r2","$implicit","valueChanged","CommonCheckboxSelectComponent_ng_container_7_ng_container_3_Template","CommonCheckboxSelectComponent_ng_container_7_ng_container_4_Template","isSelected","CommonCheckboxSelectComponent","valueChanged$","selectedValues","isFieldRequired","selectValues","getValue","onSelectChange","selected","delete","markAsDirty","CommonCheckboxSelectComponent_span_5_Template","CommonCheckboxSelectComponent_ng_container_7_Template","onToggle","CheckboxTreeNodeComponent_button_2__svg_use_3_Template","CheckboxTreeNodeComponent_button_2__svg_use_4_Template","isCollapsed","node","child_r5","onChildNodeChanged","index_r6","treeId","config","CheckboxTreeNodeComponent_ng_container_8_app_checkbox_tree_node_1_Template","CheckboxTreeNodeComponent","getId","ariaExpanded","hasChildren","elementRef","role","nodeChanged","checkDescendants","checked","child","onChildNodeChecked","autoCheckParent","every","onChildNodeUnchecked","getNodesDomFromEvent","tree","closest","nodes","querySelectorAll","currentNodeIndex","getNextNode","getPreviousNode","expandOrGetFirstChildNode","focusNode","tagName","collapseOrGetParentNode","parentElement","onKeyboardNavigation","stopPropagation","querySelector","focus","isIndeterminate","childNode","onKeyboardArrowDown","onKeyboardArrowUp","onKeyboardArrowRight","onKeyboardArrowLeft","onKeyboardEnter","CheckboxTreeNodeComponent_button_2_Template","CheckboxTreeNodeComponent_ng_template_3_Template","CheckboxTreeNodeComponent_span_6_Template","CheckboxTreeNodeComponent_span_7_Template","CheckboxTreeNodeComponent_ng_container_8_Template","placeholder_r7","translate","onTreeChanged","index_r4","node_r3","CommonCheckboxTreeComponent_ng_container_0_app_checkbox_tree_node_1_Template","emptyTreeNode","CommonCheckboxTreeComponent_ng_template_1_app_checkbox_tree_node_0_Template","CommonCheckboxTreeComponent","_nodes","treeChanged","autoCorrectTreeNode","childState","clonedNodes","cloneDeep","flatValues","returnOptimizedHierarchy","childValues","CommonCheckboxTreeComponent_ng_container_0_Template","CommonCheckboxTreeComponent_ng_template_1_Template","emptyTree_r5","CommonCheckboxComponent","onValueChanged","describedBy","indeterminate","deleted","CommonCommentComponent","deletable","author","date","time","collapse_r2","CommonCommentComponent_ng_container_3_Template","CommonCommentComponent_ng_template_4_Template","CommonCommentComponent_button_8_Template","open_r5","confirmationDescription","confirmationLabel","actionPlaceHolder","CommonConfirmationComponent","confirmation","confirmAndClose","close","translateText","shouldTranslate","onCreate","messages","actionPlaceholder","labelAction","labelClose","isValidationNeeded","wordToType","in","confirmationHeader","confirmationMessage","confirmationLabelAction","confirmationLabelClose","onConfirm","CommonConfirmationComponent_ng_container_6_Template","CommonConfirmationComponent_ng_container_7_Template","uploadDescription","getFormattedFileSize","getSelectedFilesTotalSize","maxUploadSize","onTableSort","CommonDragAndDropFilesComponent_div_0_div_17_div_6_Template","tableLabel","tableData","sizeToUploadExceedsLimits","CommonDragAndDropFilesComponent_div_0_label_1_Template","CommonDragAndDropFilesComponent_div_0_div_2_Template","onDropFiles","onDragEnterOrOver","onDragLeave","nativeInput_r3","uploadFilesEvent","CommonDragAndDropFilesComponent_div_0_div_16_Template","CommonDragAndDropFilesComponent_div_0_div_17_Template","isDragAreaActive","disabled$","multiple","acceptedTypes","displayTable","customMessage","overrideErrors","defaultDragNDropTableFields","dateAdded","fileSize","isUpload","attachment","hasKey","defaultTableDataMapping","upload","createdAt","SharedDateUtility","getLocalISODate","fileOriginalName","formatBytes","Date","size","CommonDragAndDropFilesComponent","isMultiple","_multiple","maxUploadQuantity","Number","POSITIVE_INFINITY","mimeType","MimeTypes","selectedAttachments","existingAttachments","updateSelectedAttachments","existingAttachmentsChange","attachmentDeleted","tableDataMapping","defaultTableConfig","mergeToExistingFiles","oldFiles","newFiles","warningMessage","belowSizeLimit","file","maxFilesAmount","exceedsLimitMessage","checkFile","constructTableData","filesRemovable","buttonCell","listeners","removeExistingFileFromUploadList","removeFileFromUploadList","attachments","sortFunction","aValue","bValue","asc","numeric","sensitivity","triggerDialog","nativeInput","total","dataTransfer","htmlInputElement","srcElement","dataset","selectedFilesLength","_file","_upload","htmlEvent","uploadFiles","prev","curr","prevUpload","currUpload","CommonDragAndDropFilesComponent_div_0_Template","fileDropError","CommonFileDropboxComponent_div_2_div_18_ng_container_2_Template","errorTable_r4","filesDropped","filesChosen","CommonFileDropboxComponent_div_2_div_16_Template","CommonFileDropboxComponent_div_2_div_17_Template","CommonFileDropboxComponent_div_2_div_18_Template","acceptedFileTypes","fileValid","_r5","cancelFile","validate","_r6","fileUploadedMessage","CommonFileDropboxComponent_div_5_ng_container_29_Template","fileDataError","CommonFileDropboxComponent","MAX_FILES","MULTIPLE_FILE_ERROR","emitFile","clickedValidate","rebuildForm","isFileTypeValid","acceptedType","toLocaleLowerCase","endsWith","fileUploaded","acceptedFileError","bulkUploadElement","CommonFileDropboxComponent_div_2_Template","CommonFileDropboxComponent_div_3_Template","CommonFileDropboxComponent_div_4_Template","CommonFileDropboxComponent_div_5_Template","CommonFileDropboxComponent_ng_template_6_Template","noteText","CommonInfoNoteComponent","CommonInfoNoteComponent_div_8_Template","ref_r2","toggleEditInput","tooltip","CommonInputInPlaceEditorComponent","isEdit","inputChanged$","isEditToggled$","toggleEdit","fullWidthInput","readonly","onEscape","shouldEnableEdit","restoreValue","searchElement","originalValue","onFocusOut","saveButton","toggled","CommonInputInPlaceEditorComponent_div_1_Template","CommonInputInPlaceEditorComponent_ng_container_8_Template","placeholder","CommonInputComponent_label_2_span_3_Template","hiddenLabel","customLabelFormatter","tmp_2_0","labelId","CircleQuestion","DsTooltipPosition","top","subLabelId","subLabel","descriptionId","CommonInputComponent","CommonInputComponent_label_2_Template","CommonInputComponent_button_3_Template","CommonInputComponent_span_4_Template","CommonInputComponent_span_6_Template","noLabel","descriptionLocation","tmp_10_0","tmp_24_0","i_r3","checkBoxSelectionChanged","handleInputKeyDown","availableValues","valuesControlArray","CommonMultiSelectComponent","_availableValues","updateAvailableValues","_selectedValues","updateSelectedValues","selectedValuesChange","toggledChange","selectedText$","label$","c","valuesArray","addCheckbox","updateSelectedText","noSelectionText","onClickOutside","_idx","selection","focusToggleButton","toggleButton","disabledValues","isLastActiveIndex","subIndex","isTabKeyDownInLastElement","keyCode","KeyCode","shiftKey","isEscapeKeyDown","handleButtonKeyDown","CommonMultiSelectComponent_li_10_Template","CommonNameTagComponent","closeButtonClicked","buttonClicked","redBorder","CommonSelectComponent_div_1_span_4_Template","CommonSelectComponent_div_1_app_icon_5_Template","placeholderValue","CommonSelectComponent_ng_container_6_ng_container_2_Template","CommonSelectComponent_ng_container_6_ng_container_3_Template","CommonSelectComponent","comparator","CommonSelectComponent_div_1_Template","CommonSelectComponent_span_2_Template","CommonSelectComponent_option_5_Template","CommonSelectComponent_ng_container_6_Template","CommonSelectComponent_div_7_Template","CommonSpinnerComponent","name_r3","CommonSwitchComponent_ng_template_4_ng_template_0_Template","CommonSwitchComponent","valueChange","switchContainerClass","nonClickableLabel","labelTemplate","switchButtonContainerTemplate","CommonSwitchComponent_ng_template_0_Template","CommonSwitchComponent_ng_template_2_Template","CommonSwitchComponent_ng_template_4_Template","CommonSwitchComponent_ng_template_7_Template","CommonSwitchComponent_ng_template_8_Template","tmp_4_0","defaultLabelTemplate_r7","tmp_6_0","defaultSwitchButtonContainerTemplate_r8","switchButtonTemplate_r6","CommonTextareaComponent_label_2_span_3_Template","lineLimit","limitLabel","CommonTextareaComponent","domId","errorDomId","CommonTextareaComponent_label_2_Template","CommonTextareaComponent_app_form_field_line_count_3_Template","rows","noChangePrefix","CommonTrendComponent_ng_container_2_ng_container_1_Template","showNoChange","isIncreaseImprovement","GreenSeverityLow","TrendUpIcon","variation","TrendDownIcon","CommonTrendComponent_ng_container_6_ng_container_1_Template","isPositiveTrend","absVariation","CommonTrendComponent","_variation","SharedObjectUtility","isNumber","abs","CommonTrendComponent_ng_container_2_Template","CommonTrendComponent_ng_container_3_Template","CommonTrendComponent_ng_container_4_Template","CommonTrendComponent_ng_container_6_Template","CommonTrendComponent_ng_template_7_Template","scoreMessage_r2","CopyToClipboardComponent","clipboardService","buttonText","clipboardOptions","inputId","e","destroyClipboardService","textValue","onGetCroppedImage","CropImageComponent","busyIndicatorService","fileData","getElementsReferences","previewElm","createImage","processImage","croppie","url","closeIndicator","onIncomingFile","openIndicator","requestIdleCallback","initCroppie","Croppie","viewport","boundary","enableOrientation","showZoomer","zoom","imageOnError","onIncomingFileSubscription","options","CropImageComponent_div_2_Template","severityClass","severityIcon","Solid","severityText","CustomRuleSeverityComponent","colors","DsColors","systemSeverityIcon","systemSeverityClass","critical","CircleMinus","ChevronsUp","low","ChevronsDown","CustomRuleSeverityComponent_div_0_Template","isActive","step_r2","RiskManagementStatusStepperComponent_div_1_ng_container_2_Template","openRiskScoreExplanationModal","steps","RiskManagementStatusStepperComponent","onStatusExplanationClicked","getLevelText","snakeCase","containsLevel","setupLevels","makeStep","$riskScoreLevels","behind","needsAttention","onTrack","excelling","selectLevel","kebabCase","RiskLevelUtility","getLevel","score","step","ev","RiskManagementStatusStepperComponent_div_1_Template","RiskManagementStatusStepperComponent_ng_container_2_Template","ChevronRight","RiskScoreExplanationModalComponent_li_7_ds_icon_1_Template","levelText_r2","additionalExplanation","value_r4","RiskScoreExplanationModalComponent_div_14_li_5_Template","formattedComputedDate","findingsBreakdown","RiskScoreExplanationModalComponent","availableLevels","translateLevel","currentLevelText","levelExplanation","localization","levelToExplanation","defaultLevelExplanationPerLevel","DateUtility","prettifyDate","findingsData","computedDate","month","day","buildFindingsBreakdown","customSeveritiesData","resolvedCount","toLocaleString","criticalOverdueCount","highOverdueCount","lowOverdueCount","translateFinding","count","severityLabel","availableFindings","custom1","custom1OverdueCount","custom2","custom2OverdueCount","RiskScoreExplanationModalComponent_li_7_Template","RiskScoreExplanationModalComponent_p_13_Template","RiskScoreExplanationModalComponent_div_14_Template","tag_r1","$scanTag","selectedTagId","DeprecatedScanTagSelectorComponent","scanTagService","automatedScanAdvancedService","allTags","userTags","unselectedValueLabel","disabledUnselectedValue","ignore","availableTags","enableReservedSystemTags","onGetScanTagsSuccess","tags","tag","ScanTagUtility","isReservedSystemTag","onGetScanTagsError","onDigitalPropertyChanged","digitalProperty","getScanTagsFromDigitalProperty","$digitalProperty","currentDigitalProperty$","subscribeToScanningType","getScanningType$","scanningType","automatedUserFlow","selectByName","SystemTags","AutomatedUserFlow","resetSelectedTagIfUnavailable","scanTag","select","tagId","DeprecatedScanTagSelectorComponent_span_3_Template","DeprecatedScanTagSelectorComponent_option_8_Template","$advancedSetupStep","scope","schedule","scanSettings","alerts","review","alertEditorForm","formFields","scoreDropByPercentThreshold","scoreDropByPercentFromPreviousThreshold","FormFields","email","scanCompletion","scoreDropByPercent","scoreDropByPercentFromPrevious","atLeastOneAlertSelected","MonitoringAlertsEditorComponent","userAlerts","userAlerts$","onCancel","ReplaySubject","userIdsMap","scoreDropSelected","scoreDropFromPreviousSelected","validateOneAlertSelected","noSelection","validateAlertEmail","trim","toLowerCase","isValidEmail","_userAlerts","$digitalPropertyMonitoringAlerts","allAlertEmails","notUniqueEmail","notPlatformEmail","validateEmail","getWorkspaceUsers","onGetUsersSuccess","onGetUsersError","isValid","updateScoreDropSelected","addControl","threshold","validateInteger","max","removeControl","updateScoreDropFromPreviousSelected","initValueFromData","getThresholdValue","rawValue","floor","$digitalPropertyMonitoringAlertType","onSaveClicked","onCancelClicked","onAlertSelectionChanged","MonitoringAlertsEditorComponent_div_20_Template","MonitoringAlertsEditorComponent_div_26_Template","onAddRecipientClicked","maxRecipientCount","onEditAlertsCancel","onEditAlertsSave","editedAlert","alert_r5","alert","editAlert","removeAlert","$tableFields","MonitoringAlertsStepComponent","alerts$","updatedAlerts","isEditing","$maxAlertsRecipientCount","viewInitialzed$","setTableConfig","getSelectedAlertsText","getTableData","templateCell","alertActionTemplate","templateContext","initAlerts","updateAlert","alertEditorComponent","maxAlertsReached","getAlerts","TemplateRef","MonitoringAlertsStepComponent_button_6_Template","MonitoringAlertsStepComponent_ng_template_7_Template","MonitoringAlertsStepComponent_div_10_Template","MonitoringAlertsStepComponent_ng_template_11_Template","stepNumber","maxReached_r6","monitoring","$digitalPropertyMonitoring","crawler","$scan","limitCrawlingPagesTo","crawlDeepLevel","sitemapUrl","page_r2","MonitoringReviewStepComponent_ng_container_17_li_6_Template","pagesToMonitor","ignoredEndings","excludedPages","scanAuthenticationType","popupButtonSelector","waitTime","MonitoringReviewStepComponent_ng_container_25_ng_container_1_Template","basicAuthentication_r3","MonitoringReviewStepComponent_ng_container_26_ng_container_1_Template","swaAuthentication_r4","header_r5","header_r6","MonitoringReviewStepComponent_div_27_span_5_Template","MonitoringReviewStepComponent_div_27_span_10_Template","headers","step_r8","onEditStep","header_r9","scanAuthenticationUserName","secureWebAuthentication","swaLoginPageURL","swaUserName","swaUserNameFieldId","swaPasswordFieldId","swaSubmitFieldId","swaSubmitSuccessId","MonitoringReviewStepComponent","onGotoStep","MonitoringDiscoveryMethod","discoveryMethod","listOfPages","crawl","sitemap","containsEmailAlerts","testingTool","AuditToolCommonNamesToAuditToolNames","defaultTool","scanViewport","scanViewPort","viewportType","$scanViewport","hasIgnoreUrlEndings","skipHashes","skipQueryParams","hasExcludedPages","excludeUrlOperations","excludeUrls","hasAuthentication","basic_authentication","secure_web_authentication","hasHeaders","hasIncludeIframes","includeIframes","scheduleInfo","MonitoringDateUtils","getScheduleMessageString","occurrence","startAt","hasPopupButtonSelector","handlePopupsSelector","hasWaitTime","waitTimeSec","MonitoringReviewStepComponent_ng_container_5_Template","MonitoringReviewStepComponent_ng_container_15_Template","MonitoringReviewStepComponent_ng_container_16_Template","MonitoringReviewStepComponent_ng_container_17_Template","MonitoringReviewStepComponent_div_18_Template","MonitoringReviewStepComponent_div_19_Template","MonitoringReviewStepComponent_div_20_Template","MonitoringReviewStepComponent_div_21_Template","MonitoringReviewStepComponent_div_22_Template","MonitoringReviewStepComponent_div_23_Template","MonitoringReviewStepComponent_ng_container_25_Template","MonitoringReviewStepComponent_ng_container_26_Template","MonitoringReviewStepComponent_div_27_Template","MonitoringReviewStepComponent_ng_container_29_Template","MonitoringReviewStepComponent_ng_container_33_Template","MonitoringReviewStepComponent_ng_container_56_Template","MonitoringReviewStepComponent_app_monitoring_alert_table_57_Template","MonitoringReviewStepComponent_ng_template_58_Template","MonitoringReviewStepComponent_ng_template_67_Template","MonitoringReviewStepComponent_ng_template_69_Template","MonitoringReviewStepComponent_ng_template_71_Template","stepHeading_r11","noEmailAlerts_r10","BlueInteraction","ExternalLinkIcon","MonitoringScanSettingsStepComponent","toolName","initializeForm","setupConformanceLevel","conformanceLevelSelectOptions","wcagNameAndLevel","MonitoringScheduleStepComponent","RECURRENCE_OPTIONS","scanRecurrenceEvery","week","biweekly","option","setStartAtFormValidator","currentLocalISODate","startDate","requiredChange","minDate","scheduleSet","getDateFromLocalInputDate","recurrence","setLocalInputDateFromDate","MonitoringScopeStepComponent_ng_container_18_ng_container_23_Template","scanCreateRequest","excludePages_r3","MonitoringScopeStepComponent_ng_container_19_ng_container_4_Template","sitemapExampleDomain","maxNumberOfPages","excludeOperations","MonitoringScopeStepComponent","domains","authorizedDomains","authorizedDomainsRegExp","urlPatternToRegexp","isDpUrlPresent","sitemapDomainExample","pagesLimit","$digitalPropertyMonitoringPagesLimitDefault","advancedService","availableDiscoveryMethods","domainsTemplate","domain","discoveryMethodOptions","val","onMonitoringDiscoveryMethodChange","setCrawlValidators","setSiteMapValidators","setListOfPagesValidators","addValidators","domainValidator","limitMaxNumberOfLines","SCAN_URLS_SIZE_LIMIT_ERROR_KEY","domainRestrictionsValidator","sitemapValidator","updateAvailableDiscoveryMethods","methods","getMonitoringDiscoveryMethod","uniqueDomains","startsWith","preScanFlowId","patchScanOptions","subscribeUserFlowChanges","preScanFlowChanges","formValues","scanAuthenticationDetails","no_authentication","updateAuthValues","ScanAuthenticationDetailsComponent","MonitoringScopeStepComponent_ng_container_18_Template","MonitoringScopeStepComponent_ng_container_19_Template","MonitoringScopeStepComponent_ng_container_20_Template","MonitoringScopeStepComponent_ng_template_21_Template","MonitoringScopeStepComponent_app_scan_pre_scan_flow_25_Template","MonitoringScopeStepComponent_div_35_Template","prescanFlow","addWaitTimeAutoScan","MonitoringQuickSetupComponent","recurrenceValues","dataChanged","setConformanceLevel","AuditToolCommonNames","WCAG_v22_AA","WCAG_v21_AA","ScanViewport","getDesktopViewport","getData","randomizeTime","isQuickSetup","toISOString","toDateString","runFirstScanImmediately","TurnOffMonitoringConfirmationComponent","dateControl","monitoringLabel","dayOn","translateKey","startDateString","getDateString","formatDays","getDay","getDate","filterText","areAllExpanded","areAllCollapsed","opened_r5","i_r8","selectedWorkspaceIndex","value_r7","workspaceName","prop_r10","selectedDigitalPropertyId","DigitalPropertyWorkspaceFilterComponent_div_6_ng_template_2_div_0_Template","digitalProperties","DigitalPropertyWorkspaceFilterComponent_div_6_ng_template_1_Template","DigitalPropertyWorkspaceFilterComponent_div_6_ng_template_2_Template","DigitalPropertyWorkspaceFilterComponent","onChangeConfirmations","windowService","userPropertyService","includeTenantName","useDsForm","filteredValues","properties","propertyChange","viewportSize","DetectUtility","getViewportSize","onDigitalPropertiesLoaded","props","items","UserPropertyService","transformDigitalPropertiesIntoWorkspaces","selectedValue","hidden","updateSelectedWorkspace","accordionComponent","applyFilter","selectedWorkspaceId","windowViewportSize","focusOnNonDisabledToggleButton","button","parentNode","propertySelectionConfirmed","confirmations","confirmResults","confirm","shouldShowExpandCollapseButtons","small","setOnChangeConfirmation","onWindowResize","digitalPropertyId","initialLoading","searchString","isPropertyNameAllowed","workspaceCreated","workspaceUpdated","digitalPropertyChange","userSwitchedToDigitalProperty","getAvailableDigitalProperties","DigitalPropertyWorkspaceFilterComponent_Conditional_2_Template","DigitalPropertyWorkspaceFilterComponent_Conditional_3_Template","DigitalPropertyWorkspaceFilterComponent_div_4_Template","DigitalPropertyWorkspaceFilterComponent_div_6_Template","domain_r3","DomainRestrictionsComponent_div_1_ng_container_8_li_3_Template","DomainRestrictionsComponent_div_1_div_1_Template","viewDomains_r2","DomainRestrictionsComponent_div_1_ng_container_6_Template","DomainRestrictionsComponent_div_1_ng_container_7_Template","DomainRestrictionsComponent_div_1_ng_container_8_Template","showTitle","boldButton","DomainRestrictionsComponent","digitalPropertyService","domainsLoaded","loadingRestrictions","hasDomainRestrictions","onRestrictionsLoaded","restrictions","property","getDomainRestrictions","debounceTime","DomainRestrictionsComponent_div_1_Template","ReportFormat","freeze","CSV","FileExtension","XLSX","reportFormat_r2","onDownloadReportRequest","DownloadReportNewComponent","reportService","scanId","onDownloadReportError","reportFormats","scanningJobType","selectLabelId","onGetReportSuccess","onGetReportError","convertedError","convertArrayBufferHTTPErrorToObject","ErrorScanPagesExceededDownloadLimit","InfoModalComponent","app","bodyText","_fileExtension","selectedFileExtension","scanUrl","ApiQueryOption","extraQueryParams","auditTool","selectedIssues","issueIds","i","rawFindingId","downloadReportSubscription","downloadReportNew","DownloadReportNewComponent_button_8_Template","DsConfirmationModalComponent","hideCancelButton","dismiss","confirmLabel","DsConfirmationModalComponent_p_1_Template","DsConfirmationModalComponent_p_2_Template","messageKey","ErrorMessageComponent_div_0_h2_1_Template","ErrorMessageComponent_div_0_p_2_Template","isString","ErrorMessageComponent","valueToCheck","ErrorMessageComponent_div_0_Template","control_r5","ExcludePagesComponent_div_8_div_1_Template","fieldValues","isMaxParam","EXCLUDE_PAGES_FIELD_NAME","ExcludePagesComponent","maxInputLength","maxParamLength","ExcludePagesOperation","fieldForm","onShowControlsChange","registerControl","showControls","ExcludePagesComponent_div_8_Template","ShareReportModalComponent","possibleEmails","selectedEmails","buildForm","modalInputData","onSendReportSuccess","report","debug","onShareReport","sendReportToEmails","onShareReportRequest","microActionHorizontalLayout","ShareNodes","fileExtension_r4","FileTypeIcons","FileInvoice","FileExcel","ExportReportButtonComponent","onDownloadReport","isShareable","shareModalInputData","fileExtensions","ExportReportButtonComponent_div_1_Template","ExportReportButtonComponent_ds_dropdown_item_7_Template","ArrowUpFromBracket","CustomFileInputComponent","renderer","accept","filePath","selectedFiles","onFilesSelected","setFiles","onDragOver","onDrop","onEnterKeyDown","selectRootElement","nativeInput_r2","btnClass","FileInputComponent","None","label_r1","AccordionFilterComponent_ng_container_11_div_1_Template","filterLabels","AccordionFilterComponent","onClear","filtersCollapsed","filtersApplied","clearAllFilters","closeFilters","applyFilters","AccordionFilterComponent_ng_container_11_Template","AccordionFilterComponent_div_29_Template","i_r2","option_r1","translateLabel","defaultValue","FilterCheckboxComponent","isInMenu","$checkboxSelect","createDomID","optionsFormArray","UntypedFormArray","addOptionsToForm","at","resetToInitialValue","onFormChange","selectType","valueToEmit","checkValue","unselectAll","selectAll","FilterCheckboxComponent_li_16_Template","filterType","keyword","checkbox","multiselect","number","none","$formFields","filterValue","FilteringInputComponent","onValueChange","componentID","setUpForm","formSubmitted","inputName","buttonName","initialValue","FilterKeywordComponent","_value","initForm","domID","output","UntypedFormGroup","FilterNumberComponent","FilterSelectComponent","FilterSelectComponent_option_5_Template","navigateToFormControl","error_r3","controlName","controlText","FormErrorMessagesComponent_div_0_ul_2_li_1_Template","formErrorsWithNames","FormErrorMessagesComponent_div_0_ul_2_Template","FormErrorMessagesComponent_div_0_p_3_Template","invalidFormControls","FormErrorMessagesComponent","formErrors","processFormChanges","getErrorMessages","getInvalidControls","createFormErrorsWithNames","document","labelText","textContent","elementId","hash","replace","formValidationRequestSubscription","FormErrorMessagesComponent_div_0_Template","FormFieldCharCountComponent","charLimit","getLength","random","FormFieldErrorComponent","distinctChanges","processChanges","shouldAnnounceError","untouched","getErrorMessageForField","alwaysAnnounceError","setAlertMessage","destroyed","fieldChangesSubscription","identity","statusChanges","finalize","FormFieldErrorComponent_ng_container_0_Template","FormFieldLineCountComponent","lineCount","lines","fieldValue","line","nativeInputDate","dateFieldParameters","nativeInputId","nativeMaxValue","nativeMinValue","availableDay_r2","availableYear_r3","DateFieldComponent_ng_template_2_ng_container_9_Template","DateFieldComponent_ng_template_2_ng_container_60_Template","formId","$dateParts","availableDays","year","availableYears","DateFieldComponent","changeSubscription","EMPTY","onValidatorChange","isDateInputSupported","isInputTypeSupported","resultDate","setupForm","defaultFormControlConfig","nativeDateChanged","setUpFallbackForm","populateFormValues","isDateValid","syncFormDate","fallbackDateChanged","emitChange","populateYears","populateDays","getMonth","formField","DateFallbackFormUtils","resultDateIsValid","days","setDate","setResultDate","receivedDate","setNativeResultDate","setFallbackResultDate","triggerValidation","isFallbackFormFilledPartially","nullCount","getFullYear","getDateFromFallbackForm","yearValue","monthValue","dateValue","getLocalDateFromNumbers","newDate","getLocalDate","formDate","getTypeOf","maxDate","getTime","compose","isValidDate","registerOnValidatorChange","errorFieldId","NG_VALIDATORS","DateFieldComponent_div_1_Template","DateFieldComponent_ng_template_2_Template","date_input_not_supported_r4","nativeDatetimeLocal","datetimeLocalParameters","availableHour_r4","availableMinute_r5","DatetimeLocalComponent_div_2_ng_container_7_Template","DatetimeLocalComponent_div_2_ng_container_52_Template","DatetimeLocalComponent_div_2_ng_container_58_Template","DatetimeLocalComponent_div_2_ng_container_63_Template","hour","availableHours","minute","availableMinutes","DatetimeLocalComponent","isNativeLocalDatetimeSupported","populateHours","populateMinutes","hours","withLeadingZeros","minutes","setNativeValue","dateToDatetimeLocalFormat","setupNativeDatetime","getRawValue","getHours","getMinutes","DatetimeLocalComponent_div_1_Template","DatetimeLocalComponent_div_2_Template","totalFileSize","maxTotalFileSize","sortTable","FileDragAndDropComponent_div_0_div_15_div_7_Template","tableTitle","maxTotalFileSizeExceeded","FileDragAndDropComponent_div_0_div_1_Template","onDragDrop","FileDragAndDropComponent_div_0_div_15_Template","dragActive","errorHighlight","uploadDisabled","acceptedExtensions","TableColumn","Name","DateAdded","FileSize","Action","FileDragAndDropComponent","_files","updateInputFiles","originalTableData","removableFiles","existingUploads","showDateAdded","existingUploadsChange","fileChange","getComparable","rawData","validateFileQuantity","maxFileQuantity","validateIndividualFileSize","filesBelowSizeReq","maxFileSize","canValidateFormControl","acceptedFileExtensions","acceptedMimeTypes","validateFormControl","validateAttachmentFileType","validateAttachmentTotalSize","createTableConfig","toTableRow","rowData","removeEntry","originalData","generateTableData","sortedData","sortBy","reverse","DataTransfer","maxTotalFileQuantity","touched","onFileChange","currentTarget","numFilesBefore","filesBeforeChange","FileDragAndDropComponent_div_0_Template","years","$yearsRange","daysNum","amountOfDaysInMonth","setSeconds","setUTCSeconds","GlobalSpinnerComponent","IconComponent","HighlightImgHelper","img","addMarginToPoint","mousePos","imgBoundingBox","margin","DEFAULT_HIGHLIGHT_MARGIN","x","y","pointIntersectsBox","point","box","imgCanFitBox","desiredWidth","DEFAULT_HIGHLIGHT_WIDTH","desiredHeight","DEFAULT_HIGHLIGHT_HEIGHT","adjustPosToFitBox","availableSpaceXAxis","availableSpaceYAxis","getImageBoundingBox","imgBoundingRect","getBoundingClientRect","bodyBoundingRect","body","$boundingBox","getImageSize","boundingBox","original","naturalWidth","naturalHeight","actual","getImageScale","imgSize","computeCoefficients","heightCoefficient","widthCoefficient","isBoxValid","MIN_HIGHLIGHT_SIZE","computePossibleBoundingBoxFromPoint","DEFAULT_HIGHLIGHT_POSITION","candidatePoint","getAllowedCoordinates","highlight","offsetRight","offsetBottom","safeLimitRight","safeLimitBottom","getMouseAllowedCoordinates","currentMousePoint","boxRelativeDistanceToMouseInitialPosition","selectedBox","getKeyboardAllowedCoordinates","movedHighlight","HighlightMouseHelper","highlightDisplayOptions","isMouseInsideHighlightBounds","getCoordinatesFromMouseEvent","offsetX","offsetY","getBoxPosition","mousePoint","topRightResizeBox","resizeRectSize","bottomLeftResizeBox","bottomRightResizeBox","BoxPositions","topLeft","topRight","bottomLeft","bottomRight","getResizedBoxBasedOnMousePoint","boxPosition","initialBoxSize","getNewHeightAccountingForCurrentMousePointAtBottomPosition","getNewHeightAccountingForCurrentMousePointAtTopPosition","getNewWidthAccountingForCurrentMousePointAtRightPosition","getNewWidthAccountingForCurrentMousePointAtLeftPosition","newWidth","newheight","newX","newY","DIRECTIONS_MAP","MovementDirection","ArrowDown","ArrowLeft","ArrowDownLeft","ArrowRight","ArrowDownRight","ArrowUp","ArrowUpLeft","ArrowUpRight","HighlightActionsHelper","getCombinedDirection","mainDirection","otherDirection","moveHighlight","input","amount","clone","resizeHighlight","HighlightCopyPasteHelper","copy","finding","findings","selectedHighlight","selectedFinding","paste","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_3__svg_ng_container_1_Template","highlightView_r5","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_4__svg_ng_container_1_Template","highlightEdit_r6","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_8__svg_ng_container_1_Template","highlightNumberBox_r8","finding_r7","highlight_r3","onHighlightMouseDown","mode","$imageHighlightModes","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_2_Template","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_3_Template","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_4_Template","saveSelectedHighlight","copySelectedHighlight","pasteSelectedHighlight","triggerHighlightSelected","resetOtherDirection","setOtherDirection","onKeyboardMove","MovementSpeed","slow","fast","onKeyboardResize","handleHighlightKeyEnterEvent","onHighlightDeselect","onHighlightReverseTab","onHighlightFocused","onHighlightBlur","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_8_Template","ImageHighlighterComponent__svg_ng_container_7__svg_ng_container_9_Template","ImageHighlighterComponent__svg_ng_container_7__svg_ng_template_10_Template","ImageHighlighterComponent__svg_ng_container_7__svg_ng_template_12_Template","isFocused","highlightModes","findingTrackBy","actionBox_r10","isActionHighlight","ImageHighlighterComponent__svg_ng_template_9__svg_ng_template_10__svg_ng_container_0_Template","highlightPopover_r22","finding_r13","popover_r16","ImageHighlighterComponent__svg_ng_template_9__svg_ng_container_2_Template","_r12","selectInput","copyFinding","pasteFinding","onFindingMouseDown","ctx_r13","highlight_r15","triggerFindingSelected","onFindingFocused","ctx_r16","handleFindingKeyEnterEvent","ctx_r17","ctx_r18","onFindingReverseTab","ctx_r19","onFindingDeselect","onFindingBlur","ctx_r20","ImageHighlighterComponent__svg_ng_template_9__svg_ng_template_10_Template","popContent_r23","tooltipPlacement","ImageHighlighterComponent__svg_ng_template_11__svg_ng_container_0__svg_ng_container_3_Template","_r24","highlight_r25","triggerAction","handleActionKeyEnterEvent","onActionBlur","onActionFocused","actionSelected","ImageHighlighterComponent__svg_ng_template_11__svg_ng_container_0_Template","isAction","ImageHighlighterComponent_ng_template_13_div_1_ng_container_2_Template","box_r28","link","closeButton_r30","ImageHighlighterComponent_ng_template_13_ng_container_5_ng_container_1_Template","_r31","onPopoverEditButtonClick","canEdit","_r32","onPopoverDeleteButtonClick","ImageHighlighterComponent_ng_template_13_div_6_button_1_Template","ImageHighlighterComponent_ng_template_13_div_6_button_2_Template","showPopoverEditButton","showPopoverRemoveButton","_r33","ctx_r33","popover_r29","popover","focusOnFinding","focusSettingEventEmitter","CloseIcon","ctx_r26","_r26","onFindingPopoverEscape","ImageHighlighterComponent_ng_template_13_div_1_Template","ImageHighlighterComponent_ng_template_13_span_2_Template","ImageHighlighterComponent_ng_template_13_ng_container_5_Template","ImageHighlighterComponent_ng_template_13_div_6_Template","ImageHighlighterComponent_ng_template_13_ng_template_7_Template","globalFinding","showPopoverButtonTray","tabbablePopoverItems","deleteButton","ImageHighlighterComponent","applicationRef","absoluteMousePosition","originalBoxes","imageHighlightModes","ImageHighlightModes","HighlightModes","highlights","findingsLength","startingIndex","screenshotPath$","originalBoxes$","findingToFocus$","onHighlightCreated","onHighlightEdited","onHighlightSelected","onFindingSelected","onFindingEditButtonClicked","onFindingDeleteButtonClicked","onCopyHighlight","onOriginalWidthSet","onAddToHighlight","onSpatialChange","outlineBorderOffset","highlightNumberSize","image_highlighter_utility","RF","highlightNumberDistanceFromHighlight","T","highlightNumberRectStrokeWidth","gX","highlightNumberCornerRadius","Ld","inlineFocusOffset","imageEditingState","ImageHighlightStates","noop","imageLoaded$","copyPasteHelper","imgHelper","_imgHelper","imageElement","mouseHelper","_mouseHelper","actionsHelper","_actionsHelper","getReverseScaleBoundingBox","scale","scaleBoundingBoxes","boxes","setNumberRectAndIndex","lastFindingIndex","intermediaryIndex","_lastFindingIndex","initializeHighlightAction","findingIndex","numberBox","getFindingNumberBox","getActionBox","isUndefined","setNumberRectAndIndexToHighlights","sortByTopLeftPosition","getHighlightsWithViewMode","getAdjustedDrawnCoordinates","clonedCoordinates","newHighlightCoordinates","x2","x1","y2","y1","updateBoxCoordinates","currentMouseCoordinates","updateBoxSize","updateNewBoxCoordinates","coordinates","newBox","onAddStart","adding","onStartMovingHighlight","moving","onStartResizingHighlight","resizing","boxInitialPositionAndSizeBeforeResize","resizeSelectedBoxBasedOnMousePoint","resizedBox","boxResizingFromPosition","handleMouseMoveOnEdit","isEditingImage","handleMouseMoveUpEdit","rescaledBox","handleMouseMoveOnAdd","copyHighlightId","findingId","highlightId","selectHighlight","redraw","unselectAllHighlightsExcept","unselectAllFindings","unselectAllFindingsExcept","getHighlightClickableRect","highlightRects","getFindingClickableRect","selectFinding","clickableRect","dispatchEvent","Event","subscribeToHighlightFocus","focusSubscription","componentReady$","isComponentReady","createComponentReadyObservable","isImageLoaded","screenshotPath","shareReplay","isMouseDown","addHighlight","scrollToElement","scrollIntoView","behavior","block","inline","tick","window","innerWidth","setFindingsLength","finishEditingSelectedBox","onMouseDown","onMouseMove","onMouseUp","onMouseLeave","eventKey","EventKeys","Meta","speed","combinedDirection","resizedHighlight","rescaledBoundingBox","isModalOpen","isFirstFindingInHighlight","stopImmediatePropagation","onImageLoaded","draw","boxesWithViewMode","scaledBoxes","getResizeBoxLeftX","getResizeBoxRightX","getResizeBoxTopY","getResizeBoxBottomY","editable","highlightTrackBy","getScreenLabel","textKey","subscribeToEmitOriginalWidth","imageSize","subscribeToHighlightChanges","newlyAddedBox","updateAbsoluteMousePosition","pageX","pageY","isInputElementActive","activeElement","addHighlightHotkey","ImageHighlighterComponent__svg_ng_container_7_Template","ImageHighlighterComponent__svg_ng_container_8_Template","ImageHighlighterComponent__svg_ng_template_9_Template","ImageHighlighterComponent__svg_ng_template_11_Template","ImageHighlighterComponent_ng_template_13_Template","SecureResourceApi","httpClient","restBuilder","RestBuilder","getSecureResourceBytes","resourceId","getSecureResourceUrl","HttpHeaders","responseType","create","secureResources","getApiUrl","providedIn","SecureResourceService","secureResourceApi","SecureResourceIdDirective","appSecureResourceId","loadSecureImage","resourceService","imageBytes","URL","createObjectURL","ConnectionErrorModalComponent","cancelClicked","reauthorizeClicked","connection","integrationType","lastReportedError","task_r1","taskProjectId","DisconnectedTasksModalComponent","confirmClicked","failedTasks","DisconnectedTasksModalComponent_div_3_Template","minHeight","internalValue","propagateChange","resizable","tmp_5_0","MarkdownEditorMode","Preview","Edit","MarkdownEditorComponent","cleaned","sanitize","toggleMode","MarkdownEditorComponent_ng_container_9_Template","MarkdownEditorComponent_ng_container_10_Template","MarkdownEditorComponent_ng_container_13_Template","MarkdownEditorComponent_ng_container_14_Template","JiraMarkdownUtils","jiraDescriptionBlock","content","br","MarkdownViewComponent","AlertModalComponent_div_5_Template","AlertModalComponent__svg_svg_8_Template","showIcon","confirmationPromptKey","subtitleKey","actionBtnKey","showConfirmationCheckbox","CheckboxConfirmationModalComponent_ng_container_14_Template","image","imageAltKey","bodyHeader","InfoModalComponent_ng_template_6_div_0_Template","InfoModalComponent_ng_template_6_div_1_Template","buttonKey","InfoModalComponent_ng_container_5_Template","InfoModalComponent_ng_template_6_Template","textOnly_r3","ModalContainerComponent_div_3_button_4_Template","displayXButton","closeLabel","ModalContainerComponent_div_6_div_6_Template","customFooter_r4","elRef","displayFooter","displayHeader","backdropClose","scrollable","onDragEnter","onOverlayClick","onContainerClick","deactivateFocusTrap","ModalContainerComponent_div_3_Template","ModalContainerComponent_div_6_Template","tmp_1_0","cardClass","cardBodyClass","formatListItem","prompt","PromptConfirmationModalComponent","updatePatternValidator","formControl","pattern","promptInputKey","nameInputContext","promptConfirmKey","listItem","translationArguments","escapeHtmlTags","cancelButtonKey","PromptConfirmationModalComponent_li_15_Template","descriptionKey","listHeaderKey","listItems","confirmButtonKey","alertMessage_r1","MonitoringAlertIconComponent_div_7_div_4_p_1_Template","MonitoringAlertIconComponent_div_7_div_4_Template","isAlertArray","MonitoringAlertIconComponent","$alerts","displayTooltip","showAlertTooltip","MonitoringAlertIconComponent_div_7_Template","alertsTableConfig","alertsTableData","$alertTableFields","recipient","MonitoringAlertTableComponent","getAlertsTableConfig","MonitoringAlertTableComponent_app_ngb_table_1_Template","MonitoringLabelComponent_ng_template_2_ng_container_0_Template","isArchived","availableAndNotArchived_r2","MonitoringLabelComponent_ng_template_4_ng_container_0_Template","hasMonitoring","monitoringIsAvailableAndDisabled_r3","monitoringIsAvailableAndEnabled_r4","monitoringSettings","MonitoringLabelComponent_ng_template_6_a_0_Template","hasAccess","MonitoringLabelComponent_ng_template_8_app_monitoring_alert_icon_4_Template","tooltip_r5","MonitoringLabelComponent_ng_template_10_0_ng_template_0_Template","MonitoringLabelComponent_ng_template_10_0_Template","nextSchedule","MonitoringLabelComponent_ng_template_12_ng_container_4_Template","MonitoringLabelComponent_ng_template_12_ng_container_5_Template","getMonitoringOccurrenceLabel","hasNextSchedule","MonitoringLabelComponent","getLinkedPropertyQueryParam","enabled","userCanSetupMonitoring","nextScheduledAt","userAlert","MonitoringLabelComponent_ng_container_1_Template","MonitoringLabelComponent_ng_template_2_Template","MonitoringLabelComponent_ng_template_4_Template","MonitoringLabelComponent_ng_template_6_Template","MonitoringLabelComponent_ng_template_8_Template","MonitoringLabelComponent_ng_template_10_Template","MonitoringLabelComponent_ng_template_12_Template","isAvailable","monitoringIsAvailable_r6","monitoringIsNotAvailable_r7","MultiselectTypeaheadComponent_form_0_label_1_span_3_Template","MultiselectTypeaheadComponent_form_0_label_1_Conditional_4_Template","formControlName","selectedLabel","selectedValue_r4","removeValue","valueToSelectedItemLabelFunction","MultiselectTypeaheadComponent_form_0_label_1_Template","pushOnItemSelected","pushOnEnter","MultiselectTypeaheadComponent_form_0_Conditional_4_Template","MultiselectTypeaheadComponent_form_0_div_5_Template","MultiselectTypeaheadComponent_form_0_div_8_Template","MultiselectTypeaheadComponent_form_0_div_10_Template","innerForm","innerInputName","search","MultiselectTypeaheadComponent","isAlphanumericValidationEnabled","possibleValues","allowCustomValues","searchValue","valueToOutputValueFunction","valueToDropdownLabelFunction","dropdownLabelToValueFunction","outputValueToValueFunction","selectedItem","text$","term","fetchPossibleValues","lowerTerm","lowerA","lowerB","aStartsWith","bStartsWith","emitValues","findSelectedValueByLabel","labelFunction","addSelectedItem","inputText","addExistingValue","trimmedInput","processMultipleOrSingleValue","resetInputField","matchingOption","processMultipleValues","processAndAddSingleTag","part","inputField","validateOnEnter","inValues","inValue","splice","inputElement","prefix","validateInput","innerField","updateErrorState","test","maxValueLength","isDuplicate","normalizedInput","exceedsMaxValues","maxValues","MultiselectTypeaheadComponent_form_0_Template","severityTimeInterval","Flag","manual_evaluations","results","AuditFindingQAStatusUnresolved","findingSeverity","OverdueUnresolvedFindingsBySeverityComponent","agingIssues","OverdueUnresolvedFindingsBySeverityComponent_span_9_Template","OverdueUnresolvedFindingsBySeverityComponent_span_10_Template","OverdueUnresolvedFindingsBySeverityComponent_ds_icon_11_Template","OverdueUnresolvedFindingsBySeverityComponent_div_12_Template","tmp_0_0","reloadPage","portfolio","pageLoadingState","loading","loaded","PageLoadingStateComponent","location","reload","loadingState","PageLoadingStateComponent_ng_container_4_Template","PageLoadingStateComponent_ng_container_5_Template","PaginationArrowsNavigationComponent","currentPageChange","getPaginationFrom","entriesAmount","currentPage","entriesPerPage","getPaginationTo","getPagesCount","ceil","paginate","isFirstPage","isLastPage","limit_r3","pageSizeChange","ResponsivePaginationComponent_ng_container_2_option_5_Template","hideLabel","selectorId","idSuffix","hideNOfT","entryLimits","collectionSize$","pageNum_r5","handlePageChange","ResponsivePaginationComponent_div_4_ng_template_5_Template","ResponsivePaginationComponent_div_4_ng_template_6_Template","ResponsivePaginationComponent_div_4_ng_template_7_Template","ResponsivePaginationComponent_div_4_ng_template_8_Template","ResponsivePaginationComponent","isEllipsesFixed","ready","pageChange","hidePageSizeSelector","isObservable","collectionSize","paginationEllipses","ellipsis","removeAttribute","preventFocusScroll","tableId","ResponsivePaginationComponent_ng_container_2_Template","ResponsivePaginationComponent_div_3_Template","ResponsivePaginationComponent_div_4_Template","warningColor","warningIcon","ShowWarningWhen","above","below","ProgressDoughnutComponent","formattedValue","showPercent","progress","isWarningOn","maxValue","okColor","BlueInfo","echarts","GaugeChart","SVGRenderer","renderChart","chart","dispose","progressChart","series","itemStyle","color","radius","center","detail","startAngle","endAngle","splitNumber","pointer","axisTick","axisLabel","axisLine","lineStyle","shadowColor","shadowBlur","GreyPageBackground","splitLine","setOption","ProgressDoughnutComponent_app_icon_3_Template","ArrowTrendUp","ArrowTrendDown","progressPercentage","previousDate","ResolvedFindingsProgressComponent_div_11_ds_icon_1_Template","ResolvedFindingsProgressComponent_div_11_ds_icon_2_Template","ResolvedFindingsProgressComponent_div_11_ng_container_7_Template","ResolvedFindingsProgressComponent_div_11_ng_container_8_Template","ResolvedFindingsProgressComponent_div_11_ng_container_9_Template","isPositiveVariation","isNegativeVariation","formattedVariation","isUnchangedVariation","ResolvedFindingsProgressComponent","formattedResolvedCount","formatCompactNumber","isPolicyViolated","percentage","percentageThreshold","style","buildProgressPercentage","currentPercentage","percent","totalCount","previousTotalCount","previousComputedDate","previousResolvedCount","ResolvedFindingsProgressComponent_ds_icon_4_Template","ResolvedFindingsProgressComponent_div_11_Template","RouteWrapperComponent","onFilterSelect","issueStatus","passed","passedRulesCount","RuleFilterComponent","onFilterChanged","auditIssuesViewStatus","failedRulesCount","reviewRulesCount","hidePassedRules","RuleFilterComponent_div_15_Template","failed","val_r1","tableController","pageNum_r4","RuleIssuesSupplementaryTableComponent","topPaginationAriaLabel","bottomPaginationAriaLabel","onEntriesPerPageChange","RuleIssuesSupplementaryTableComponent_option_16_Template","onPageChange","RuleIssuesSupplementaryTableComponent_ng_template_22_Template","RuleIssuesSupplementaryTableComponent_ng_template_23_Template","RuleIssuesSupplementaryTableComponent_ng_template_24_Template","RuleIssuesSupplementaryTableComponent_ng_template_34_Template","RuleIssuesSupplementaryTableComponent_ng_template_35_Template","RuleIssuesSupplementaryTableComponent_ng_template_36_Template","availableEntriesPerPage","paginationLabel","dataLength","paginatedData","val_r2","pageNum_r3","recommendationsTable","manualReviewTable","tableHeaders","ruleDescription","successCriteriaConformanceLevel","elements","dismissed","scoreImpact","FailedHandler","SharedAuditsUtility","hasAuditIssuesViewStatus","datum","$auditIssuesView","failures","ignores","applicableHeaders","noImpactHeaders","addScoreData","isDescriptionLink","ReviewHandler","PassedHandler","passes","issueStatusToHandler","RuleIssuesTableComponent","paginationConfig","rawTableData","entriesAmounts","filterStatus","AccessibilityAuditToolNames","isMonitoringTag","SupplementaryTableController","getAllTableConfig","iconId","iconHeight","iconWidth","iconFill","issueStatusFilter","allColumns","showWcagTerminologyOnly","applicableHeader","rawDatum","displaySuccessCriteriasFull","successCriteriaIdentifier","severityToComparable","criteriaWithStandardFull","includeStandard","criteriaFull","extractData","summary","wcagIssues","recommendations","getAuditIssuesViewData","flawPageId","isMonitoring","scanOrigin","manualReviewIssues","issues","partition","isManualReviewStatus","toTableRows","canRunSupplementalScan","totalFinding","tableRow","initialSort","aWcagStandard","bWcagStandard","aSeverity","bSeverity","aIssues","bIssues","loadStandard","auditType","AuditToolNameToAuditType","ParsedStandards","$scanSummaries","scanAuditsId","$scanAudit","audits","standardFilters","manualReviewRequired","setIssueData","ruleDescriptionAsLink","displayAdditionalColumns","setFilteredPaginatedTable","getPage","filteredPaginatedTableData","filteredTableData","tableDefaultSort","sortByDescription","sortByIssues","SharedSortUtility","functionSortObjectBySeverity","hasComponentId","filteredTableConfig","showRuleIssuesSupplementartyTable","issueTable","reloadWithNewConfig","sortFunc","ascending","getPaginationLabel","canRunSupplementalScan$","useWorkspaceFromUser","useDigitalPropertyFromUser","AT_Scans_Read","customSeverities$","RuleIssuesTableComponent_option_15_Template","RuleIssuesTableComponent_ng_template_21_Template","RuleIssuesTableComponent_ng_template_22_Template","RuleIssuesTableComponent_ng_template_23_Template","RuleIssuesTableComponent_ng_template_34_Template","RuleIssuesTableComponent_ng_template_35_Template","RuleIssuesTableComponent_ng_template_36_Template","RuleIssuesTableComponent_app_rule_issues_supplementary_table_37_Template","RuleIssuesTableComponent_app_rule_issues_supplementary_table_38_Template","wave","BasePaginatedTableController","entriesPerPageAmount","updatePaginatedData","getPaginatedItems","setInitialData","filterInitialData","sortData","tableColumns","super","getSuccessCriteriaInfo","RuleSeverityComponent","RuleSeverityComponent__svg_use_2_Template","RuleSeverityComponent__svg_use_3_Template","RuleStatusChangeComponent","comment","getAppErrorResponse","appMessage","onChangeRuleStatusError","UserRoleNotDefined","isBulkOperation","res","changeRuleStatus","toggleAuditRule","RuleStatusChangeComponent_p_5_Template","RuleStatusChangeComponent_p_6_Template","RuleStatusChangeComponent_p_7_Template","RuleStatusChangeComponent_app_form_field_error_18_Template","RuleStatusChangeComponent_button_25_Template","RuleStatusChangeComponent_button_26_Template","rerunScan","removeScan","scans","scan_results","scan","ScanActionsComponent","scanService","onScanActionSuccess","onScanActionError","scanStatus","onRemoveScanSuccess","ScanAction","Remove","canRerunScan","cannotRerunScanningTypes","completed","completed_with_errors","canRemoveScan$","AT_Scans_Delete","onRerunScanSuccess","entireSite","SCAN_URLS_SIZE_LIMIT","customLinks","ReRun","isScanCompleted","completedStatuses","ScanActionsComponent_button_1_Template","ScanActionsComponent_button_2_Template","ScanActionsComponent_a_4_Template","removed","ScanAnalyticsHealthGraphComponent","healthData","onGetHealthDataSuccess","LINE_COLOR","GRIDLINE_COLOR","GreyStrokeInactive","chartData","getHealthValuesAndLabels","labels","healthValues","scanDate","scanHistoryLimit","scanAnalytics","Intl","DateTimeFormat","format","scanHealth","blankEntries","drawHealthGraph","markLinePoints","ScanChartUtility","getMarkLinePoints","GridComponent","TooltipComponent","LineChart","MarkLineComponent","getElementById","setAttribute","xAxisTitle","yAxisTitle","grid","containLabel","bottom","left","right","animation","confine","textStyle","formatter","dataIndex","$analyticsResultItem","seriesName","xAxis","boundaryGap","nameLocation","nameTextStyle","fontWeight","fontSize","lineHeight","fontFamily","nameGap","alignWithLabel","yAxis","symbol","symbolSize","zlevel","markLine","markLineFormatter","accessibilityPoint","resize","type_r1","getInputFieldContext","scanAuthenticationPassword","swaSubmitUsernameFieldId","swaPassword","ScanAuthenticationDetailsComponent_div_5_ng_container_4_Template","ScanAuthenticationDetailsComponent_div_5_ng_container_7_Template","ScanAuthenticationDetailsComponent_div_5_ng_container_8_Template","basicControls","swaControls","nonRequiredFields","onAddAuthenticationDetails","swaAuthentication","opts","scanAuthenticationChangeSubscription","propertyChangeSubscription","domainRestrictions$","setAuthenticationType","onlySelf","ctrl","urlValidator","removeBasicAuthControls","removeSWAControls","upsertControls","controlNotExists","setControl","resetControls","hasControl","addAuthEnabled","addAuthDetails","autocomplete","authenticationType","ScanAuthenticationDetailsComponent_div_5_Template","ScanExtraHeadersComponent_div_5_div_4_button_3_Template","$scanHeaders","headersValues","ScanExtraHeadersComponent_div_5_div_4_Template","headersControlName","ScanExtraHeadersComponent","headersForm","modifyHeaders","onModifyHeaders","ScanExtraHeadersComponent_div_5_Template","scoreChange","scoreRangeLabels","mid","ScanHealthChartComponent","ref","scanSummary","scanScore","scoreRanges","initChart","scoreChartTarget","pieChart","silent","borderColor","borderWidth","labelLine","PieChart","elChart","on","xmlns","scoreLabelWrap","createElementNS","scoreLabel","appendChild","getDom","getElementsByTagName","scoreClass","calculateScoreChange","previousScanSummary","prevScore","latestScore","svgPatterns","off","ScanHealthChartComponent_div_39_Template","flow_r1","ScanPreScanFlowComponent","userFlowService","preScanFlows$","getByType","AutomatedFlowType","preScan","handleErrorObservable","createFlowLink","ApiPathBuilder","host","extraPaths","createProxy","query","Proxy","queryStr","param","encodeURIComponent","args","removeTrailingSlash","websitesAndApps","user_flows","automated_user_flows","build","ScanPreScanFlowComponent_h4_1_Template","ScanPreScanFlowComponent_ng_container_19_Template","ScanScoreCircleComponent","uid","drawScanScoreChart","scoreLevel","scanTag_r3","selectedScanTagId","ScanTagFilterComponent","digitalPropertyScanTags","onTagSelected","onGetDigitalPropertySuccess","words","handleErrorWithCustomAppMessage","errorResponse","onGetDigitalPropertyError","scanTagResponse","searchField","ScanTagFilterComponent_li_13_Template","ScanTagSelectorComponent","_scanId","handleSelectTag","_scanTagId","onScanTagChange","ScanTagSelectorComponent_option_6_Template","ScoreChartComponent","ScoreRanges","ScoreRangeColors","hideLegend","ScoreChartComponent_Conditional_9_Template","controlId","stackSearchButtonOnMobile","propagateChanges","SearchboxComponent","searchBoxPrefix","cdRef","markForCheck","textbox","SearchboxComponent_label_1_Template","SearchboxComponent__svg_svg_7_Template","SearchboxComponent_button_11_Template","SecureAlertComponent","alertIcon","ShareIssueReportModalComponent","copyToClipboard","textToCopy","ShareIssueReportUrlComponent","openShareIssueModal","issueLink","href","SortSelectorComponent","sortItems","sortValue","SortSelectorComponent_option_6_Template","StatusComponent","StatusComponent_span_0_Template","PANEL_ID_PREFIX","TAB_ID_PREFIX","StepNextDirective","click$","fromEvent","StepPreviousDirective","activeStep","step_r1","HorizontalStepperComponent","ACTIVE_STEP","activeStepChange","setPanelIds","setHostAttributes","setActiveStatus","stepComponent","registerNextStep","stepNext","nextStep","registerPreviousStep","stepPrevious","previousStep","ngAfterContentInit","StepComponent","HorizontalStepperComponent_ng_container_3_Template","StepHeaderComponent","ariaCurrent","done","ngDoCheck","StepHeaderComponent_ng_container_2_Template","StepHeaderComponent_ng_template_3_Template","StepHeaderComponent_ng_container_10_Template","notDone_r2","StepContentDirective","StepComponent_ng_container_0_ng_template_1_Template","lazyContent","isCurrentStep","cdr","IS_ACTIVE","display","StepComponent_ng_container_0_Template","column_r2","onSelectionChange","TableColumnSelectorPanelComponent_div_20_div_4_Template","columnClass","columnGroup_r4","TableColumnSelectorPanelComponent","selectedColumns","selectedColumnsChange","maxSelected","currentSelectedCount","updateAllColumns","columnGroups","setupControls","initializeSelectedControls","updateControlsLockStatus","col","getSelectedFields","selectedFields","columnCount","TableColumnSelectorPanelComponent_div_20_Template","TableColumnSelectorComponent","columnsDefinition","toggleColumnSelector","columnSelectorOpened","onSelectedColumnsChange","customColumnType","linkedCell","externalLink","textWithTag","profilePicture","remediationProgress","invitationStatus","forcedWordWrapText","CustomTableComponent_caption_3_span_2_Template","tableCaption","hasSortableColumns","checkedAll","onCheckHead","columnKey_r4","sortingTriggered","CustomTableComponent_th_7_div_1_ng_container_1_ng_container_5_Template","CustomTableComponent_th_7_div_1_ng_container_1_ng_container_6_Template","CustomTableComponent_th_7_div_1_ng_container_1_ng_container_7_Template","getColumnConfig","getColumnState","sortingOrder","CustomTableComponent_th_7_div_1_ng_container_1_Template","CustomTableComponent_th_7_div_1_ng_template_2_Template","sortDisabledColumnCell_r5","CustomTableComponent_th_7_div_1_Template","tmp_7_0","rowIndex_r7","checkedRows","onCheckCell","CustomTableComponent_ng_container_10_tr_1_ng_container_2_ng_template_1_Template","cellContent_r9","columnKey_r8","getActionCellConfig","tableRow_r10","CustomTableComponent_ng_container_10_tr_1_ng_container_3_table_cell_dropdown_2_Template","getCellConfig","hideActions","CustomTableComponent_ng_container_10_tr_1_td_1_Template","CustomTableComponent_ng_container_10_tr_1_ng_container_2_Template","CustomTableComponent_ng_container_10_tr_1_ng_container_3_Template","tableRowsAreCheckable","columnsList","trackBy","rowsData","CustomTableComponent_ng_container_10_tr_1_Template","CustomTableComponent_ng_container_10_tr_2_Template","emptyStateHideBorders","CustomTableComponent_ng_template_12_ng_container_0_ng_container_2_ng_template_1_Template","linkedCell_r15","getLinkCellData","columnKey_r13","rowIndex_r14","CustomTableComponent_ng_template_12_ng_container_0_ng_container_3_ng_template_1_Template","linkLabel","CustomTableComponent_ng_template_12_ng_container_0_div_5__svg_svg_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_5_ng_template_2_Template","getSeverityCellData","severityNotCritical_r16","cellData_r18","scoreLabels","i_r17","CustomTableComponent_ng_template_12_ng_container_0_div_6_ng_container_1_ng_container_1_ng_container_1_span_9_Template","scoreResult_r19","getScoreCellClass","CustomTableComponent_ng_template_12_ng_container_0_div_6_ng_container_1_ng_container_1_ng_container_1_Template","scores","emptyStateLabel","CustomTableComponent_ng_template_12_ng_container_0_div_6_ng_container_1_ng_container_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_6_ng_container_1_ng_template_2_Template","scoreEmptyLabel_r20","CustomTableComponent_ng_template_12_ng_container_0_div_6_ng_container_1_Template","getScoreCellData","getScoreImpactCellData","getCellDataForMonitoring","getTextWithTagCellData","tagColor","tagLabel","getToolTipCellData","tooltipPopupMessage","tooltipMessage","CustomTableComponent_ng_template_12_ng_container_0_div_10_div_3_Template","hideTooltip","_r21","ctx_r11","columnKey","rowIndex","getActionCellData","CustomTableComponent_ng_template_12_ng_container_0_div_12_ng_template_1_Template","checkbox_r22","getCheckboxCellData","getImageCellData","CustomTableComponent_ng_template_12_ng_container_0_div_13_ng_container_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_13_ng_template_2_Template","embedImage","noImage_r23","CustomTableComponent_ng_template_12_ng_container_0_div_14_a_1__svg_svg_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_14_a_1__svg_svg_2_Template","attachment_r24","CustomTableComponent_ng_template_12_ng_container_0_div_14_a_1_Template","getAttachmentsCellData","getRemediationProgressCellData","linkTo","linkToParams","criticalLabel","roundDown","CustomTableComponent_ng_template_12_ng_container_0_div_15_ng_container_1_ng_container_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_15_ng_container_1_ng_template_2_Template","noRemediations_r25","CustomTableComponent_ng_template_12_ng_container_0_div_15_ng_container_1_Template","getProgressCellData","getProgressCellAsPercent","CustomTableComponent_ng_template_12_ng_container_0_div_16_div_1_Template","CustomTableComponent_ng_template_12_ng_container_0_div_16_div_2_Template","CustomTableComponent_ng_template_12_ng_container_0_div_16_div_3_Template","getProfilePictureCellData","CustomTableComponent_ng_template_12_ng_container_0_ng_container_18_ng_template_1_Template","invitationStatusCell_r26","getInvitationStatusCellData","getCellData","CustomTableComponent_ng_template_12_ng_container_0_ng_container_2_Template","CustomTableComponent_ng_template_12_ng_container_0_ng_container_3_Template","CustomTableComponent_ng_template_12_ng_container_0_div_4_Template","CustomTableComponent_ng_template_12_ng_container_0_div_5_Template","CustomTableComponent_ng_template_12_ng_container_0_div_6_Template","CustomTableComponent_ng_template_12_ng_container_0_div_7_Template","CustomTableComponent_ng_template_12_ng_container_0_div_8_Template","CustomTableComponent_ng_template_12_ng_container_0_div_9_Template","CustomTableComponent_ng_template_12_ng_container_0_div_10_Template","CustomTableComponent_ng_template_12_ng_container_0_div_11_Template","CustomTableComponent_ng_template_12_ng_container_0_div_12_Template","CustomTableComponent_ng_template_12_ng_container_0_div_13_Template","CustomTableComponent_ng_template_12_ng_container_0_div_14_Template","CustomTableComponent_ng_template_12_ng_container_0_div_15_Template","CustomTableComponent_ng_template_12_ng_container_0_div_16_Template","CustomTableComponent_ng_template_12_ng_container_0_div_17_Template","CustomTableComponent_ng_template_12_ng_container_0_ng_container_18_Template","CustomTableComponent_ng_template_12_ng_container_0_div_19_Template","customType","CustomTableComponent_ng_template_12_ng_container_0_Template","CustomTableComponent_ng_template_12_ng_template_1_Template","isRegularColumn_r27","CustomTableComponent_ng_template_14_ng_container_0_ng_container_1_ng_container_1_ng_template_2_Template","cellConfig_r28","colSpan","customColumns_r32","columnKey_r30","rowIndex_r31","CustomTableComponent_ng_template_14_ng_container_0_ng_container_1_ng_template_2_ng_template_1_Template","CustomTableComponent_ng_template_14_ng_container_0_ng_container_1_ng_container_1_Template","CustomTableComponent_ng_template_14_ng_container_0_ng_container_1_ng_template_2_Template","isRowHeader","regularCell_r33","CustomTableComponent_ng_template_14_ng_container_0_ng_container_1_Template","CustomTableComponent_ng_template_14_ng_container_0_Template","hasCell","data_r34","tmp_11_0","CustomTableComponent_ng_template_16_Conditional_2_div_2_Template","CustomTableComponent_ng_template_16_Conditional_1_Template","CustomTableComponent_ng_template_16_Conditional_2_Template","cellData_r39","rowData_r40","ctx_r37","_r37","cellData","CustomTableComponent_ng_template_18_span_2_Template","CustomTableComponent_ng_template_20__svg_svg_4_Template","CustomTableComponent_ng_template_20__svg_svg_5_Template","CustomTableComponent_ng_template_20__svg_svg_6_Template","data_r42","$invitationStatus","pending","expired","sortingStatesOrder","CustomTableComponent","_rowsData","_uid","onTableStateChanged","onTableRowChecked","tableDataAvailable","tableState","refreshColumnState","isTableDataAvailable","getColumnsList","newTableState","columnIndex","newState","getCustomTableCellData","customColumns","resetColumnsSorting","triggerTableStateChangeEvent","columnState","sortingOrderIndex","absolute","parseFloat","toFixed","getArrowsContainerClasses","getTableHeaderAriaSort","getSortOrderText","getTableHeaderAriaSortLabel","getProgressCellRounded","round","getRemediationProgressAriaLabel","columnText","hasOwnProperty","hasAvailableActions","handler","k","parseInt","accu","defaultSortOrder","CustomTableComponent_caption_3_Template","CustomTableComponent_th_6_Template","CustomTableComponent_th_7_Template","CustomTableComponent_th_8_Template","CustomTableComponent_ng_container_10_Template","CustomTableComponent_div_11_Template","CustomTableComponent_ng_template_12_Template","CustomTableComponent_ng_template_14_Template","CustomTableComponent_ng_template_16_Template","CustomTableComponent_ng_template_18_Template","CustomTableComponent_ng_template_20_Template","TableEmptyStateComponent_div_0_ng_container_2_Template","TableEmptyStateComponent_div_0_ng_container_3_Template","TableEmptyStateComponent_div_0_ng_container_4_Template","TableEmptyStateComponent_div_0_ng_container_5_Template","TableEmptyStateComponent_div_0_ng_container_6_Template","TableEmptyStateComponent_div_0_ng_container_7_Template","hideBorders","tableEmptyState","tableEmptyStateType","searchingNoResults","inReviewNoResultsTotal","failedNoResultsTotal","passedNoResultsTotal","notApplicableNoResultsTotal","noDigitalPropertiesFound","TableEmptyStateComponent","TableEmptyStateComponent_div_0_Template","attachment_r1","AttachmentsCellComponent","BaseCellComponent","t","AttachmentsCellComponent_a_2_Template","setupCell","attr","cssClass","addClass","iconStyles","Inactive","ArrowUpRightFromSquare","ButtonCellComponent","ButtonCellComponent_ng_container_3_Template","ButtonCellComponent_Conditional_5_Template","isExternalLink","isDisabled$","CheckboxCellComponent","CheckboxCellComponent_span_3_Template","configs","ComposedCellComponent","types","ComposedCellComponent_ng_container_2_Template","trendConfig","DataPointCellComponent","hasPreviousData","buildTrendConfig","DataPointCellComponent_ng_container_2_Template","DocumentFilesCellComponent","DocumentFilesCellComponent_li_2_Template","iconTooltip","dropdownItem_r4","generateUniqueId","DropdownCellComponent_div_7_ng_container_1_button_1_Template","DropdownCellComponent_div_7_ng_container_1_ng_template_2_Template","actionButton_r8","DropdownCellComponent_div_7_ng_container_1_Template","menuIdSuffix","yOffset1","yOffset2","maxHeight","DropdownCellComponent","cellDataType","zone","translationService","xOffset1","xOffset2","getRandomInsecureString","initialFocus","setMaxHeight","viewPortTop","totalHeight","documentElement","scrollHeight","absoluteTop","scrollY","onWindowScroll","scrollX","onClickHandler","onEscapeKeydownHandler","onArrowUpKeydownHandler","focusable","firstElementChild","lastElementChild","currentIndex","previousElement","onArrowDownKeydownHandler","nextElement","boundingRect","clientX","clientY","runOutsideAngular","focusTrapOptionsWithInitialFocus","initialFocusExistsOnPage","activateFocusTrap","isNull","DropdownCellComponent_ng_container_2_Template","DropdownCellComponent_ng_container_6_Template","DropdownCellComponent_div_7_Template","largeIcon","variant","microActionIcon","DSButtonCellComponent","MICRO_ACTION_VARIANTS","microActionStacked","microActionWithChevronRight","microActionWithChevronRightInline","isMicroAction","DSButtonCellComponent_Conditional_0_Template","DSButtonCellComponent_Conditional_1_Template","DSChipCellComponent","chipColorVariant","DsSeverityCellComponent","customSeveritiesClassAndIcon","getCustomSeverityIndex","customIndex","EmptyCellComponent","encapsulation","ExternalLinkButtonCellComponent","lastSegmentOfHref","segments","ExternalLinkCellComponent","ExternalLinkCellComponent_ds_icon_4_Template","showExternalLinkIcon","HtmlCellComponent","HtmlHighlightCellComponent","ImageCellComponent","tabIndex","flaw","IssueStateLabelCellComponent","RuleAuditHistoryType","issue","flawStatus","IssueStateLabelCellComponent_ng_container_1_Template","IssueStateLabelCellComponent_ng_template_2_Template","IssueStateLabelCellComponent_app_view_flaw_status_history_4_Template","notDismissed_r2","hasHistory","IssuesViewDetailsCellComponent","selectedIssue","iconBeforeText","LinkCellComponent_ng_container_5_ng_template_1_Template","icon_r3","LinkCellComponent_ng_container_8_ng_template_1_Template","tagTooltip","subText","LinkCellComponent","onClick","fragment","state","svgElement","LinkCellComponent_ng_template_0_Template","LinkCellComponent_ng_container_5_Template","LinkCellComponent_ng_container_8_Template","LinkCellComponent_ng_container_9_Template","LinkCellComponent_div_10_Template","wrapperStyles","noDecoration","LinksOrderedListCellComponent","LinksOrderedListCellComponent_li_2_Template","OrderedListCellComponent","OrderedListCellComponent_li_2_Template","PendingCellComponent","PendingCellComponent_span_7_Template","PendingCellComponent_span_8_Template","RuleStatusToggleCellComponent","ScoreCellComponent","ScoreCellComponent_ng_container_8_Template","SecureImageCellComponent","SelectCellComponent","placeholderLabel","data$","SeverityCellComponent","SeverityCellComponent_ng_container_2_Template","SeverityCellComponent_ng_template_3_Template","severityNotCritical_r1","TemplateCellComponent","iconAriaLabelText","TextCellComponent_ng_template_0__svg_title_2_Template","TextCellComponent_ng_container_2_ng_template_1_Template","icon_r2","for","TextCellComponent_ng_container_6_ng_template_1_Template","TextCellComponent","TextCellComponent_ng_template_0_Template","TextCellComponent_ng_container_2_Template","TextCellComponent_ng_container_3_Template","TextCellComponent_ng_template_4_Template","TextCellComponent_ng_container_6_Template","TextCellComponent_ng_container_7_Template","TextCellComponent_div_8_Template","span_r3","iconTitleId","TextWithIconCellComponent_ng_template_0__svg_title_2_Template","TextWithIconCellComponent_ng_container_6_ng_template_1_Template","TextWithIconCellComponent_ng_container_10_ng_template_1_Template","TextWithIconCellComponent","TextWithIconCellComponent_ng_template_0_Template","TextWithIconCellComponent_ng_container_6_Template","TextWithIconCellComponent_ng_container_10_Template","iconTextStyles","iconText","imageUrl","thumbnailUrl","thumbnailAlt","ThumbnailCellComponent","ThumbnailCellComponent_ng_container_2_Template","TitleCellComponent","details","defaultConfig","TooltipCellComponent","ElementRef","item_r2","TypeAheadCellComponent","renderer2","onSearch","onSelect","typeaheadComponent","searchQuery","defaultTerm","TypeaheadComponent","TypeAheadCellComponent_ng_template_3_Template","UserAccountStatusCellComponent","iconConfig_r1","hasDefaultDsClass","titleHtml","dsButton","NgbTableEmptyStateComponent","NgbTableEmptyStateComponent_ds_icon_2_Template","NgbTableEmptyStateComponent__svg_svg_3_Template","NgbTableEmptyStateComponent_h3_4_Template","NgbTableEmptyStateComponent_h3_5_Template","NgbTableEmptyStateComponent_p_6_Template","NgbTableEmptyStateComponent_Conditional_7_Template","NgbTableEmptyStateComponent_Conditional_8_Template","dsIcon","tooltip_r2","NgbTableComponent_ng_template_0_ng_container_0_Template","allRowsSelected","allSelected","column_r7","translationExtra","NgbTableComponent_ng_container_8_th_1_ng_container_2_Template","NgbTableComponent_ng_container_8_th_1_ng_container_4_Template","NgbTableComponent_ng_container_8_th_1_ng_template_5_Template","NgbTableComponent_ng_container_8_th_1_ng_container_7_Template","NgbTableComponent_ng_container_8_th_1_ng_container_8_Template","NgbTableComponent_ng_container_8_th_1_ng_container_9_Template","selectAllEnabled","sort_r8","ariaSort","tooltip_r9","HelpIcon","_r10","NgbTableComponent_ng_container_8_ng_template_2_ng_container_1_Template","NgbTableComponent_ng_container_8_ng_template_2_ng_container_2_Template","NgbTableComponent_ng_container_8_ng_template_2_ng_template_3_Template","NgbTableComponent_ng_container_8_th_1_Template","NgbTableComponent_ng_container_8_ng_template_2_Template","sortingDisabled_r11","_r16","rowSelection","row_r14","index_r15","rowSelected","column_r18","getCellStyles","NgbTableComponent_ng_container_10_tr_1_ng_container_2_td_1_Template","ctx_r12","NgbTableComponent_ng_container_10_tr_1_td_1_Template","NgbTableComponent_ng_container_10_tr_1_ng_container_2_Template","isRowSelected","isHighlighted","isInactive","singleSelect","selectionRadioButtons","NgbTableComponent_ng_container_10_tr_1_Template","trackByFn","NgbTableComponent_ng_template_11_ng_container_0_tr_1_Template","NgbTableComponent_ng_template_11_ng_container_0_Template","isDataLoading","emptyState_r19","NgbTableComponent_ng_template_13_tr_0_Template","NO_ROW_SELECTED","NgbTableComponent","getColumns","initSortingState","rowSelectionIndex","rotateDir","onSelectAll","rowSelectionChange","currSortOrder","reloadWithNewData","cellWrappers","cell","selectable","selectFirstRow","firstChange","DclWrapperComponent","NgbTableComponent_ng_template_0_Template","NgbTableComponent_caption_4_Template","NgbTableComponent_th_7_Template","NgbTableComponent_ng_container_8_Template","NgbTableComponent_ng_container_10_Template","NgbTableComponent_ng_template_11_Template","NgbTableComponent_ng_template_13_Template","responsiveContainerStyles","noDataState_r20","isViewInitialized","updateComponent","cmpRef","destroy","createComponent","ViewContainerRef","UserAvatarCellComponent","composedCell","tooltipCell","externalLinkCell","externalLinkButtonCell","DSbuttonCell","DSChipCell","scoreCell","checkboxCell","issueStateLabelCell","titleCell","htmlHighlightCell","issuesViewDetailsCell","pendingCell","attachmentsCell","thumbnailCell","orderedListCell","linksOrderedListCell","userAccountStatusCell","userAvatarCell","imageCell","secureImageCell","documentFilesCell","textWithIconCell","emptyCell","selectCell","typeAheadCell","dataPointCell","ruleStatusToggleCell","auditToolName_r1","TestingToolFilterComponent","currentSelection","DsInputStates","auditToolNames","onToolSelected","ibm","toolsToList","auditToolNamesKeys","filteredAuditTools","toolsToExclude","difference","onToolSelect","TestingToolFilterComponent_option_4_Template","ToggleSwitchComponent_ng_template_2_ng_template_0_Template","ToggleSwitchComponent","ToggleSwitchComponent_ng_template_0_Template","ToggleSwitchComponent_ng_template_2_Template","ToggleSwitchComponent_ng_template_7_Template","defaultSwitchButtonContainerTemplate_r5","switchButtonTemplate_r4","item_r3","onResultsSelected","i_r5","onResultsMouseEnter","onResultsMouseLeave","TypeaheadComponent_div_3_div_2_ng_container_1_Template","hoverItemIndex","resultRowTpl","TypeaheadComponent_div_3_div_2_Template","TypeaheadComponent_div_3_div_3_Template","isInputFocused","onKeyUp","searchInputRef","onSearchInputFocused","onSearchInputKeyDown","onSearchInputKeyUp","resultsListRef","hoveredElement","scrollTop","offsetTop","debounceSubscription","isAutofocused","Boolean","lastSearchQuery","TypeaheadComponent_div_3_Template","openDisableMfaModal","CircleCheck","TrashCan","enableMfa","canEnableMfa","UserMfaComponent_div_0_div_5_Template","UserMfaComponent_div_0_ng_template_7_Template","mfaStatus$","$mfaStatus","mfaDisabled_r4","UserMfaComponent","disableMfaConfirmationMessage","disableMfa","closeDisableMfaModal","isConfirmedFn","mfaIsConfigurable$","mfaStatusResponse$","isConfigurable","observers","modalComponent","UserMfaComponent_div_0_Template","GroupsTableColumns","AdminPortalPermissionsTableComponent","PermissionsTableComponent","securityGroupService","allGroups","allSelected$","buildTableConfig","paddingRight","paddingLeft","updateAllCheckedIfNecessary","selectedGroups","formGroupIds","$securityGroup","buildObservables","securityGroupsResponse$","groupsWithEntityNames","skip","limit","includeStaffGroups","skipOrganizationAdmin","entityLevel","SecurityEntityLevel","securityGroupsResponse","groups","onPermissionsLoaded","total$","mapRx","groupId","marginTop","updateFormGroupIds","websiteApp","isDigitalPropertyUser","SearchAndFilterFormFields","workspaceFilter","digitalPropertySearch","DigitalPropertyPermissionsTableComponent","searchAndFilterForm","FormGroup","FormControl","workspaceFilterOptions","sortOption$","websiteAppSearch","filterDigitalPropertyUserGroups","SecurityGroupTemplateNames","website_app_user","digitalPropertyGroups$","origin","SecurityGroupOrigin","predefined","workspaceFilterOptions$","chain","entities","$securityEntity","workspaceNames","uniqBy","workspaceOption","workspaceFilter$","filteredGroups$","websiteAppSearch$","searchedGroups$","websiteAppName","digitalPropertyNames","selectedWorkspaceFilter","instantHtml","escape","orderedGroups$","sortOption","sortGroups","paginatedGroups$","userGroupIds$","userGroupIds","orderBy","onWorkspaceFilterEnter","DigitalPropertyPermissionsTableComponent_option_15_Template","sortOrder$","Light","RedSeverityCritical","EditPermissionsBannerComponent","scrollInto","bannerType","EditPermissionsBannerComponent_ds_icon_2_Template","EditPermissionsBannerComponent_ds_icon_3_Template","EditPermissionsBannerComponent_ds_icon_4_Template","permissionsBannerRef","onPermissionsSubmit","EditUserComponent_ds_tabs_0_ng_container_10_Template","onOrgAdminPermissionsLoaded","onWorkspacePermissionsLoaded","onDigitalPropertyPermissionsLoaded","titleId","userDetails_r4","permissionsForm","permissionsButtons_r3","navigateToParentRoute","align_r6","onPermissionsBannerClose","_r8","groupsSelectionFormGroup","organizationAdministrator","onPageSizeChange","totalRows$","tableData_r11","allPageSelected$","pageNumber","EditUserComponent_ng_template_8_fieldset_17_ng_container_2_div_1_Template","groupsFormFields","EditUserComponent_ng_template_8_fieldset_17_div_1_Template","EditUserComponent_ng_template_8_fieldset_17_ng_container_2_Template","orgAdminRequiredSecurity","userRole_r12","onSubmit","EditUserComponent_ng_template_8_fieldset_17_Template","EditUserComponent_ng_template_8_app_form_field_error_23_Template","EditUserComponent_ng_template_8_option_33_Template","onDisableMfa","inactive","displayNameError$","tmp_13_0","showOrgAdminCheckbox$","firstName","lastName","roleError","roleId","userRoles$","UserSecurityGroupSelection","groupSelection","digital_property","ORGANIZATION_ADMINISTRATOR","EditUserComponent","appConfigService","securityUserService","userRoleService","UM_Organization_Administration_Create","userSelectedSecurityGroupsIds","selectableGroups","selectablePermissionGroups","selectionChanged$","groupIds","securityGroupsFormFields","resetFormWithDefaults","securityGroups","selectedSecurityGroupsFromServer","isOrgAdmin","securityGroup","updateMfaStatus","getMfaStatus","getMfaStatusForUser","onDisableMfaSuccess","onEditUserSuccess","getStoredUserId","shouldReloadCurrentUser","getMeProfile","onEditUserError","permissionsUpdate","getFormDataWithoutAvatar","createFormData","confirmGroupRemoveModal","userProfile","updateUserProfile","selectablePermissionGroupIds","selectedPermissionGroupIds","updateUserSecurityGroups","noGroupsSelectedErrorRef","workspaceAdminInfoRef","errors","avatarFormControl","isAvatarUpdated","updateRequestCall","append","avatarFile","MimeTypeToFileExtension","disableMfaForUser","subscribeToSelectionChange","userGroupsFormArray","loadOneTimeCompleteObservables","getUserRoles$","buildErrorObservables","user$","getUserById","baseParams","selectedSecurityGroups$","findAllSecurityGroupsByUserIdAndTenantId","isTenantEnabled","permissionsFormArray","buildTableObservables","organizationAdminCheckbox$","elementsNotNullish","isOrganizationAdminSelected","usePermissionsRedesign","$securityGroups","tenant","loadedGroups","handleErrorBindable","availableSecurityGroups$","subscribeGetSelectedSecurityGroups","availableSecurityGroups","orgAdminCheckbox","buildFormControlErrorMessage$","getUserRoles","initialLoad","i11","i12","i13","i14","EditUserComponent_ds_tabs_0_Template","EditUserComponent_ng_template_2_Template","EditUserComponent_ng_template_4_Template","EditUserComponent_ng_template_6_Template","EditUserComponent_ng_template_8_Template","organization","package","isOrganizationAdmin","OrganizationPermissionsTableComponent","tenantService","tenantInfo$","userDataChanged$","getTenantFromTenantedScope","currentTenantId","orgAdminGroups$","orgAdminGroups","tenantInfoAndOrgAdminGroups$","forkJoin","tenantInfo","formGroupsIds$","orgAdminGroupIds","packageName","isWorkspaceAdmin","isWorkspaceUser","SearchFormFields","workspaceSearch","WorkspacePermissionsTableComponent","filterWorkspaceAdminGroups","workspace_administrator","filterWorkspaceUserGroups","workspace_user","mapGroupId","flattenedGroups$","keyBy","mapValues","groupBy","wsGroups","workspaceAdminGroups","workspaceUserGroups","workspaceSearch$","isUserInGroups","historyItem","ViewFlawStatusHistoryItemComponent_ng_template_11_ng_container_1_Template","ViewFlawStatusHistoryItemComponent_ng_template_11_ng_container_2_Template","dateStyle","timeStyle","timeZoneName","ViewFlawStatusHistoryItemComponent","getUserAndTimestamp","dateTimeOfComment","userDisabled","ViewFlawStatusHistoryItemComponent_ng_template_2_Template","ViewFlawStatusHistoryItemComponent_div_10_Template","ViewFlawStatusHistoryItemComponent_ng_template_11_Template","collapseButton_r3","issueStatusHistory","fixed","partiallyFixed","notFixed","notReproducible","cannotBeFixed","IssueStatusHistoryService","flawService","manualAuditIssueService","getHistoryFromFlaw","flawId","getHistory","flawStatusUserHistories","statusHistory","getHistoryFromRuleAuditHistory","manualAuditRequest","getRuleAuditHistory","ruleAuditHistory","history","$ruleAuditHistory","reason","extra","$ruleAuditHistoryExtra","getStatusUpdateHistory","source","ViewFlawStatusHistoryComponent_ng_template_7_div_1_Template","issueStatusHistories$","popover_r4","ViewFlawStatusHistoryComponent","issueSource","issueSource$","issueStatusHistoryService","ViewFlawStatusHistoryComponent_ng_template_7_Template","ViewFlawStatusHistoryComponent_ng_template_9_Template","popoverBody_r5","popoverTitle_r6","ViewportBoxComponent","isCustomViewport","ScanViewportType","getViewportLabel","ViewportBoxComponent__svg_svg_4_Template","ViewportBoxComponent__svg_svg_5_Template","ViewportBoxComponent__svg_svg_6_Template","mobile","tablet","desktop","ViewportCustomValuesComponent","viewportForm","ViewportInlineComponent","ViewportInlineComponent__svg_svg_3_Template","ViewportInlineComponent__svg_svg_4_Template","ViewportInlineComponent__svg_svg_5_Template","ViewportSelectComponent","builder","viewports","getMobileViewport","getTabletViewport","custom","getViewportFromType","setupCustomControls","heightValidators","widthValidators","onViewportValueChange","ViewportSelectComponent_ng_container_1_Template","$tableColumns","WebsitesAppsByRiskManagementStatusTableModalComponent","chartData$","frequency","freq","frequency$","DashboardDataFrequency","weekly","RiskChartUtility","getDescriptorKeyForFrequency","buildTableData","snapshots","formatDateForFrequency","$riskMetricsChartData","computedAt","dpCountsByRiskLevel","sum","WebsitesAppsByRiskManagementStatusChartComponent","onGetConfigSuccess","dsModalService","DECAL_COLOR","BEHIND_COLOR","NEEDS_ATTENTION_COLOR","ON_TRACK_COLOR","EXCELLING_COLOR","DATA_POINT_LIMIT","MIN_Y_AXIS_OFFSET","$riskMetricsChartConfig","drawGraph","getDataValuesForStatus","metrics","calculateYAxisMax","highestYValue","yAxisMax","behindString","needsAttentionString","onTrackString","excellingString","LegendComponent","BarChart","trigger","axisPointer","formattedToolTip","marker","legend","minInterval","barMaxWidth","barGap","emphasis","decal","dashArrayX","dashArrayY","rotation","PI","aria","chartSvg","dispatchAction","openTableModal","componentRef","DsModalVariant","componentInstance","changePage","WebsitesAppsByRiskManagementStatusDetailsComponent_ng_container_8_ds_pagination_2_Template","sortTableData","WebsitesAppsByRiskManagementStatusDetailsComponent_ng_container_8_ds_pagination_5_Template","tabLabels","level_r4","dpName","resolvedPercentage","WebsitesAppsByRiskManagementStatusDetailsComponent","computedAt$","riskScoreLevels","onTabChange","metricsData","dpMetricsList","metricsList","$paginatedResponse","tabIdChange","sortParams","getSortKey","sortOrder","$dpMetricsSortKeys","digitalPropertyName","totalResolvedFindings","totalPercentageResolved","buildTabLabels","dpMetrics","$dpMetrics","dashboard","findingsMetrics","$findingsMetrics","percentageResolved","$findingCounts","resolvedFindings","subscribeToRouteChanges","closeAllModals","getComputedDateDescription","quarterly","monthly","computedDateDescription$","WebsitesAppsByRiskManagementStatusDetailsComponent_ng_container_8_Template","chartConfig_r1","emptyStateConfig$","WebsitesAppsByRiskManagementStatusComponent_div_0_app_websites_apps_by_risk_management_chart_1_Template","WebsitesAppsByRiskManagementStatusComponent_div_0_ng_template_2_Template","emptyState_r3","WebsitesAppsByRiskManagementStatusComponent","chartConfig$","getEmptyStateTranslationDescription","showHeader","WebsitesAppsByRiskManagementStatusComponent_div_0_Template","getDisplayName","user_r1","buttonElement_r4","focusUsersListPopover","hiddenUsersContainer_r5","hiddenUsers","WorkspaceUsersListComponent_div_0_div_2_Template","WorkspaceUsersListComponent_div_0_div_3_Template","usersToDisplay","usersCount","maxDisplayedUsers","index_r7","user_r6","WorkspaceUsersListComponent_ng_template_1_div_0_Template","WorkspaceUsersListComponent","onStaffUsersFetch","onGetWorkspaceUsersSuccess","staffUsers","usersData","roles","$workspaceUser","WorkspaceUsersListComponent_div_0_Template","WorkspaceUsersListComponent_ng_template_1_Template","severityColors","RemediationChartColors","AuditFindingQAStatus","findingsGraphSectionLabels","pass","fail","notChecked","ReportFindingsChartColors","TOOLTIP_BACKGROUND_COLOR","TOOLTIP_TEXT_COLOR","validationError","invalidFileType","invalidFileTypes","attachmentQuantityExceedsLimit","attachmentSizeExceedsLimit","digitalPropertyKey","digitalPropertyFieldWorkspaceDuplicate","masterLibraryRuleIdDuplicate","customSeveritiesLabelDuplicate","userWayWebsiteDuplicate","notMatchDomain","urlInvalid","maxlength","datesValidator","charactersOnly","invalidJSON","invalidSubdomain","invalidDate","alphaNumericCharactersOnly","nonEmojiCharactersOnly","designRuleIdPattern","invalidInteger","unique","invalidZeroInt","LARGE_ENTRY_LIMITS","FINDING_TABLE_ENTRY_LIMITS","ImageHighlightAction","Add","Delete","Paste","ZoomDirection","out","ZOOM_FACTORS","$paginationParams","MAX_EMAILS_LIMIT_ERROR_KEY","$userCreationPageParams","newUserIds","$viewIssuesParams","dismissedFilter","advancedSearch","issueId","AriaLabelSortDirective","sortColumn","sortColumnExtra","appAriaLabelSort","AriaSortDirective","appAriaSort","CloseActionMenuDirective","menuItemSelector","closeDropdown","handleOutsideClick","handleArrowUp","handleArrowKeys","activeElementIndex","menuItemsLength","handleArrowDown","allowOutsideClick","indexToFocusThunk","menuItems","activeElIndex","itemToFocusIndex","CollapseDirective","appCollapse","isCollapsing","CtrlKeyDirective","callEvent","ctrlKey","metaKey","methodName","toUpperCase","call","prepareEvent","onCtrlV","ctrlV","onCtrlC","ctrlC","onCtrlS","ctrlS","onCtrlZ","ctrlZ","onCtrlY","ctrlY","DownloadLinkDirective","pathname","secureDownload","appDownloadLink","observe","ResourceUtility","downloadResponse","FeatureFlagDirective","tplRef","viewContainerRef","isHidden","_negate","featureFlag","flag","flagKey","_flag","updateView","createEmbeddedView","checkValidity","FileDropDirective","transfer","FilterHostDirective","INVALID_ATTRIBUTES","FOCUSABLE_QUERY","focusableElement","FocusFirstFocusableElementDirective","FocusDirective","focusEvent","NativeElementInjectorDirective","HasPermissionsDirective","viewContainer","aclService","appConfigServices","checkPermission","currentUser","createAccessCheck","requiredSecurity","allowAdminAccess","useAdmin","appHasPermissions","permissions","HighlightDirective","hljs","registerLanguage","hjjs_xml","hljs_xquery","hljs_js","html","appHighlight","language","innerHTML","linkify","LinkifyHtmlPipe","transform","InputOnlyNumbersDirective","keypressEvent","charCode","getKeyCode","pasteEvent","clipboardData","isNaN","NewNavCardDirective","h1Element","removeClass","NgbNavDirective","resetTabs","prototype","tab","setActiveTab","allTabs","selectedId","foundTabIndex","findIndex","getAttribute","goToPreviousTab","previous","previousElementSibling","goToNextTab","nextElementSibling","keydownEvent","KEYS","LEFT","RIGHT","SPACE","NoDoubleActivateDirective","clickEvent","eventTarget","removeDisabledState","TabsDirective","tabId","tabContent","previousLi","previousTab","nextLi","nextTab","nodeName","tooltipId","arrowPosition","messageBusService","isVisibleByButton","isVisibleByWindow","arrowOffset","arrowPositionVertical","adjustingHorizontal","onMouseover","onMouseOut","adjustPositionToViewport","viewportWidth","viewportHeight","clientHeight","innerHeight","elementSizeAndPosition","tooltipElement","tooltipSizeAndPosition","horizontalScroll","setPositionBasedOnTargetElement","targetElement","targetSizeAndPosition","pageScroll","getPageScroll","setPositions","showTooltip","hideTooltipByButton","showTooltipSubscription","MessageBusChannels","tooltipShow","hideTooltipSubscription","tooltipHide","routeChangedSubscription","zIndex","TooltipDirective","_describedBy","appTooltip","tooltipValue","cd","onActive","onDeactive","TranslateTemplatesDirective","appTranslateTemplates","parts","TRANSLATIONS_VALUE_PLACEHOLDER","rootNodes","remainingText","createTextNode","TrapFocusDirective","trapFocus","focusableNodeList","focusableContent","firstFocusableElement","lastFocusableElement","exportAs","TypeaheadDirective","ariaMultiLine","$navigationCustomState","scrollToTop","captureNavFocus","userEmails","mobileScanScreen","NotificationType","Success","Info","Warning","Inline","AutomatedScanAdvancedService","scanningTypeSubject","singlePage","scanOptionsSubject","scanOptionsFormFields","$defaultScanOptions","setScanOptions","onScanOptionsChanged","assignScanOptions","defaults","assign","markAsUntouched","getScanningType","getScanOptions","setScanningType","popupsControlName","HandlePopupsComponent","modifyHandlePopups","popupSelectorControl","onOptionsUpdated","onModifyHandlePopups","HandlePopupsComponent_div_5_Template","waitTimeControlName","WaitTimeComponent","modifyWaitTime","onModifyWaitTime","waitTimeControl","WaitTimeComponent_div_5_Template","DashboardService","restService","workspaceRest","countTotalIssuesForStatus","qaStatus","severities","allSeverities","reduceToSum","countTotalIssuesForSeverity","excludeStatuses","excluded","AuditFindingQAStatusRemaining","handleHttpError","componentName","onRerunScanError","getSelectedWorkspaceManualAudits","currentSelectedProperty","setToNoWorkspaceState","getAllManualEvaluations","err","getSelectedWorkspaceScansCount","onGetScansError","getLatestScans","queryFilter","getDashboardLatestScans","download","buttonVariant","install","toolItem_r5","handleDropdownClick","dropdownOption","ToolTemplateComponent_div_0_div_9_button_5_Template","ToolTemplateComponent_div_0_button_5_Template","ToolTemplateComponent_div_0_button_6_Template","ToolTemplateComponent_div_0_a_7_Template","ToolTemplateComponent_div_0_button_8_Template","ToolTemplateComponent_div_0_div_9_Template","downloadType","DownloadType","internal_link","external_link","dropdown","ToolTemplateComponent","testAutomationService","errorHandler","downloadSuccess","downloadError","openLink","TestAutomationTools","extension_firefox","getBrowserName","getToolUrl","ToolTemplateComponent_div_0_Template","DashboardUserPreferencesSlideoutComponent","DsModalColorVariant","FrequencyOptions","formFieldErrors","onPreferenceUpdated","findPreference","preferences","userPreferences","$userPreference","onUpdatePreferencesSuccess","userPreferenceScopeParam","onUpdatePreferencesError","getGlobalErrorResponse","updateUserPreferences","userPreferenceScope","programDash","DashboardUserPreferencesSlideoutComponent_ng_template_11_Template","PageModalType","ADD","EDIT","ScreenshotOrigin","NEW","UPLOADED","FormField","TITLE","DESCRIPTION","SCREENSHOT","ALT_TEXT","AbstractPageModalComponent","pageService","urlCharLimit","PAGE_CHAR_LIMITS","$page","titleCharLimit","descriptionCharLimit","altTextCharLimit","$pageImage","showUrlWarning","screenshotOrigin","screenshotData","screenshotFile","bannerText$","fileUploadContext","maxFileUploadSize","SupportedPageScreenshotExtensions","SupportedPageScreenshotMimeTypes","onFileUpload","onload","altTextValidators","removeScreenshot","removeValidators","buildTitleFormControl","buildTitleErrorObservable","titleError$","buildUrlFormControl","requireURL","isValidUrl","buildUrlErrorObservable","urlError$","isDomainPartOfSubscription","buildDescriptionFormControl","buildDescriptionErrorObservable","descriptionError$","buildScreenshotFormControl","buildAltTextFormControl","buildAltTextErrorObservable","altTextError$","addDuplicateUrlWarningValidator","existingUrls","existingUrlSet","addTitleUniquenessValidator","existingNames","existingNameSet","uniqueValidator","hideUrlWarning","pageTitle","modalType","urlFieldState","nonEditable","text_r1","AddPageModalComponent_ng_container_29_div_7_Template","AddPageModalComponent_ng_container_29_div_8_Template","tmp_12_0","AddPageModalComponent","backNavLabel","requireURLField","defaultURL","getPages","pages","getDigitalProperty","addUrlAuthorizedDomainValidator","authorizedDomain","domainRestrictionsRegExp","createPage","getFormData","createdPage","onPageCreated","formData","FormData","screenshot","AddPageModalComponent_div_5_Template","AddPageModalComponent_div_20_Template","AddPageModalComponent_ng_container_29_Template","AddPageModalComponent_ng_template_30_Template","AddPageModalComponent_ng_template_34_Template","Default","tmp_17_0","screenshotNotAvailable_r7","previousModal","owner","CreateProjectSlideoutComponent","workspaceId$","projectService","CHAR_LIMITS","$project","workspaceUsers$","onProjectCreated","searchFunction","setupObservables","keyMin","validateProjectKey","validateSelectedOwner","searchText","checkFormFields","propertyKeyExists","projectKey","projectKeyExists","selectedUser","mustBeSelected","getCreateProjectRequest","ownerId","endDate","ProjectStatus","$createProjectPagePath","pagePath","formatUser","onSelectUser","onBlurOwner","lowerOwner","onCreateProjectSuccess","project","onCreateProjectError","errorBanner","createProject","CreateProjectSlideoutComponent_ng_template_20_Template","project_r3","issueTrackingIssueType_r5","UpsertTaskModalComponent_div_14_div_10_div_10_option_6_Template","$task","issueIntegrationType","selectIssueTypeLabel$","issueTrackingIssueTypes_r6","UpsertTaskModalComponent_div_14_div_10_ng_template_12_div_0_Template","pushTaskToIssueTracking","loadingError$","onPushTaskToIssueTrackingChange","UpsertTaskModalComponent_div_14_div_10_div_10_Template","UpsertTaskModalComponent_div_14_div_10_ng_template_12_Template","userCanPushIssueIntegration$","issueIntegrationProjectLabel$","issueTrackingIssueTypes$","getIssueTypesError_r7","onProjectChange","UpsertTaskModalComponent_div_14_option_8_Template","UpsertTaskModalComponent_div_14_div_10_Template","projectId","availableProjects_r8","canUnlinkTask","unlinkTaskErrorMessage","UpsertTaskModalComponent_ng_container_24_ng_container_4_Template","linkedFindingsTableConfig","linkedFindingsTableRows","azureFileSizeLimit","linkedFindingsTableFields","attachmentAcceptedTypes","JPEG","PNG","XLS","UpsertTaskModalComponent","INPUT_NAME_MAX_LENGTH","INPUT_FIELD_MAX_LENGTH","_attachments","issueTrackingService","taskPriorityOptions","TaskPriority","priority","priorityValue","taskMaxUploadSize","disableUploadButtons$","selectedProject","taskSource","TaskSource","automated","save$","onUpsert","TaskStatus","backlog","auditFindings","designReviewFindings","linkedFindings","getLinkedFindingsTableConfig","shouldBlockUnlinkFinding","showUnlinkTaskErrorMessage","getTaskLink","task","projects","tasks","getLinkedFindingsTableRows","unlinkFinding","oldEntry","issueDetail","autoHide","notifyChanges","attachFilesToRequest","request","counterFiles","updateAutoGeneratedCSV","getReport","$scanIssues","autoAttachGeneratedCSV","attachAutoGeneratedFileSubscription","fileAttacher","autoAttachedGeneratedCSV","updateCsvWithTaskId","getTaskProjectId","addAutomatedFindingsData","taskCreateRequest","$taskFlaw","flaws","unmatchedFlaws","isRawFinding","cardTitle","submitButton","isIssueTrackingProjectSelected","issueIntegrationProject","TI_Issue_Tracking_Basic_Create","AZURE_ATTACHMENT_MAX_FILESIZE","showAzureUploadWarning$","issueIntegrationConnection","$issueIntegrationConnection","$issueIntegrationType","azure","setAttachmentsValidator","onExistingAttachmentsChange","uploads","SupportedTaskAttachmentMimeType","SupportedDocumentExtensions","validateAttachmentQuantity","uploaderContext","submitForm","connectionType","asana","getIssueTrackingIssueTypes","issueIntegrationConnectionId","issueIntegrationProjectId","prepareFormDataForCreateTask","auditFindingIds","designReviewFindingIds","updatedCsv","f","modalInit","prepopulate","formSetValueIfExists","fieldName","taskName","availableProjects$","getProjects","taskEditRequest","editTask","taskId","createTask","issueIntegrationConnection$","distinctUntilKeyChanged","getIssueTrackingConnectionInfo","UpsertTaskModalComponent_div_14_Template","UpsertTaskModalComponent_ng_container_24_Template","UpsertTaskModalComponent_div_30_Template","UpsertTaskHelper","updateErrorMessages","canPushToIssueTracking$","hasIntegrationProject","createNewProject","slideOut","project_r5","issueTrackingIssueType_r7","UpsertTaskSlideoutComponent_ng_container_11_div_2_div_8_div_5_option_7_Template","issueTrackingIssueTypes_r8","UpsertTaskSlideoutComponent_ng_container_11_div_2_div_8_ng_template_7_div_0_Template","UpsertTaskSlideoutComponent_ng_container_11_div_2_div_8_div_5_Template","UpsertTaskSlideoutComponent_ng_container_11_div_2_div_8_ng_template_7_Template","getIssueTypesError_r9","UpsertTaskSlideoutComponent_ng_container_11_div_2_option_7_Template","UpsertTaskSlideoutComponent_ng_container_11_div_2_div_8_Template","projectInputError","availableProjects_r10","projectPlaceholder","UpsertTaskSlideoutComponent_ng_container_11_div_2_Template","projectCreatedSuccessMessage$","option_r11","UpsertTaskSlideoutComponent_ng_container_23_ng_container_4_Template","_r13","UpsertTaskSlideoutComponent","upsertTaskHelper","needToSelectProjectFromWorkspace","activeTabId","markAllAsTouched","availableProjects","activeProjects","ProjectUtility","getActiveProjects","newProjectCreated","createProjectBanner","UpsertTaskSlideoutComponent_ng_container_11_Template","UpsertTaskSlideoutComponent_option_22_Template","UpsertTaskSlideoutComponent_ng_container_23_Template","UpsertTaskSlideoutComponent_div_27_Template","UpsertTaskSlideoutComponent_ng_template_35_Template","modalRef_r14","CONTRAST_FACTOR","RED_LUMINOSITY_FACTOR","GREEN_LUMINOSITY_FACTOR","BLUE_LUMINOSITY_FACTOR","CONTRAST_ROUND_VALUE","DISTANCE_ROUND_VALUE","MAX_POSSIBLE_VALUE","ColorFinderRGB","_colorToKeep","_colorToChange","_minContrast","validColors","maxMove","maxMoveHue","testedColors","colorToKeep","initialColorHSV","ColorsUtility","rgbToHSV","initialColor","minContrast","maxContrast","initialContrast","rgbContrast","gap","initialLuminosity","rgbLuminosity","colorToKeepLuminosity","mustIncreaseLuminosity","luminosityToReach","minRed","red","maxRed","minGreen","green","maxGreen","minBlue","blue","maxBlue","addNewColorIfValid","newColor","contrast","newColorHSV","hueMove","hue","distance","rgbCompuPhaseDistance","iterateRed","colorToChange","redContrib","getComposantValue","greenContrib","blueContrib","blueValue","invertComposant","composant","srgb","SRGB_FACTOR","pow","findColors","sortByDistance","result1","result2","rgb","delta","hsv","saturation","rgb1","rgb2","luminosity1","luminosity2","meanRed","square","sqrt","rgbEuclidianDistance","rgbFindCloseColors","rgbToKeep","rgbToChange","contrastToMeet","countLimit","RGBtoHEX","hex","HEXtoRGB","exec","RGBStringToColorRGB","ratio_r1","resultsGeneratedFor","componentEnum","foreground","result_r3","contrastColor","background","contrastBackground","tableSampleColumnStyles","tableSampleColumnTextStyles","ColorContrastRuleSuggestionsComponent_ng_container_101_table_7_tr_17_Template","ColorContrastRuleSuggestionsComponent_ng_container_101_ng_template_8_p_0_Template","ColorContrastRuleSuggestionsComponent_ng_container_101_ng_container_5_Template","ColorContrastRuleSuggestionsComponent_ng_container_101_table_7_Template","ColorContrastRuleSuggestionsComponent_ng_container_101_ng_template_8_Template","noResults_r4","ratioOptions","ratio","colourToEdit","changeTextType","ColorContrastRuleSuggestionsComponent","searchedAtLeastOnce","colorContrastForm","setContrastRatio","$flaw","$auditFinding","findClosestColorsThatPassesContrastRatio","colorFinder","auditData","ruleReportData","contrastRatio","ColorContrastRuleSuggestionsComponent_div_70_Template","ColorContrastRuleSuggestionsComponent_div_71_Template","ColorContrastRuleSuggestionsComponent_ng_container_82_Template","ColorContrastRuleSuggestionsComponent_ng_container_101_Template","openColorContrastModal","getFlawComponentName","locationLabel$","elementReference","elementLabel$","nodesHTMLId","ruleDetails","whyItMatters","IssuesViewDetailsComponent_div_23_ng_container_5_Template","IssuesViewDetailsComponent_div_23_ng_container_6_Template","whatToDo","IssuesViewDetailsComponent_div_24_ng_container_5_Template","IssuesViewDetailsComponent_div_24_ng_container_6_Template","firstFound","lastFound","getFlawPreviousStatus","flawOccurrence","IssuesViewDetailsComponent","scanReportService","userDigitalPropertyService","issueType","getIssueShortLink","isColorContrastRule","issueData","getPreviousStatus","componentData","isElementFromShadowDom","ACCESS_ENGINE_SHADOW_DOM_SEPARATOR_MATCHER","isElementFromIframe","IFRAME_DOM_SEPARATOR_MATCHER","isMobileType$","isMobileDigitalProperty$","isMobile","IssuesViewDetailsComponent_ng_container_3_Template","IssuesViewDetailsComponent_ng_container_4_Template","IssuesViewDetailsComponent_ng_container_5_Template","IssuesViewDetailsComponent_button_6_Template","IssuesViewDetailsComponent_Conditional_12_Template","IssuesViewDetailsComponent_Conditional_14_Template","IssuesViewDetailsComponent_Conditional_15_Template","IssuesViewDetailsComponent_div_17_Template","IssuesViewDetailsComponent_div_18_Template","IssuesViewDetailsComponent_div_19_Template","IssuesViewDetailsComponent_div_20_Template","IssuesViewDetailsComponent_div_21_Template","IssuesViewDetailsComponent_div_23_Template","IssuesViewDetailsComponent_div_24_Template","IssuesViewDetailsComponent_div_25_Template","tmp_9_0","ChangePasswordComponent_form_0_ng_container_4_Template","mainContent_r3","ChangePasswordComponent_ng_container_1_ng_container_1_Template","SquareCheck","ChangePasswordComponent_ng_template_2_ng_container_10_li_2_ds_icon_1_Template","ChangePasswordComponent_ng_template_2_ng_container_10_li_2_ds_icon_2_Template","error_r6","ChangePasswordComponent_ng_template_2_ng_container_10_li_2_Template","formChecklist_r7","ChangePasswordComponent_ng_template_2_app_alert_2_Template","ChangePasswordComponent_ng_template_2_ng_container_3_Template","ChangePasswordComponent_ng_template_2_app_alert_9_Template","ChangePasswordComponent_ng_template_2_ng_container_10_Template","ChangePasswordComponent_ng_template_2_div_17_Template","ChangePasswordComponent","passwordSettings","changePassword","onGetUserSettingsSuccess","onGetUserSettingsError","userDataSubscription","ChangePasswordComponent_form_0_Template","ChangePasswordComponent_ng_container_1_Template","ChangePasswordComponent_ng_template_2_Template","appConfig","company","emailSupport","APP","NAME","redirectCounter","onSubmitDeactivateAccount","isDeactivatingAccountCollapsed","settings","profile","DeactivateAccountComponent","routerChangesSubscription","handleUrlFragment","isAccountDeactivatedSuccessfully","deactivatingErrorMessage","duplicateAccount","tooManyEmails","notGettingValueFromMembership","privacyConcern","otherReason","userFeedback","Scroll","anchor","onDeactivateAccountSuccess","scrollHomePageIntoView","scrollPageToTop","cleanAfterDeactivateAccount","redirectIntervalId","setInterval","countRedirect","clearInterval","onDeactivateAccountError","toggleDeactivatingAccountSection","preserveFragment","isFormActionElement","angularFormData","deactivateAccount","DeactivateAccountComponent_div_3_Template","DeactivateAccountComponent_p_4_Template","DeactivateAccountComponent_form_11_Template","AccountSettingsComponent","routingService","isNotUsingExternalIdp","isUsingExternalIdp","getPageTitle","AccountSettingsComponent_div_3_Template","AccountSettingsComponent_app_change_password_8_Template","routes","AccountSettingsRoutingModule","RouterModule","forChild","AccountSettingsModule","CommonModule","SharedModule","ArrayReversePipe","condition","pure","ArrayToStringPipe","defaultPrecisionMap","bytes","KB","MB","GB","TB","PB","BytesToReadableUnitsPipe","units","bytesInput","precision","isFinite","unitIndex","unit","CompactNumberPipe","DateTimePipe","getFormattedISODate","EllipsisPipe","substring","FieldInvalidPipe","FilterPipe","toSearch","deepValue","IsNullishPipe","KeysPipe","exclude","LanguageNamePipe","langCode","languageNames","DisplayNames","currentLang","defaultOptions","linkifyHtml","LinkifyPipe","linkifyStr","PrettifyDatePipe","SanitizerPipe","bypassSecurityTrust","purifiedValue","SecurityContext","HTML","bypassSecurityTrustHtml","STYLE","bypassSecurityTrustStyle","SCRIPT","bypassSecurityTrustScript","RESOURCE_URL","bypassSecurityTrustResourceUrl","DOMPurify","TranslateCutPipe","cutIndex","AbstractBreadcrumbsResolver","getFullPath","pathFromRoot","urlSegment","BreadcrumbsConfig","DefaultBreadcrumbsResolver","isLinkToPageAvailable","paramsHandling","resolvePageTitle","A11yService","liveAnnouncer","announce","A11Y_MESSAGE_TIMEOUT_IN_MILLIS","AclSecurityAdapterBase","useOptions","useForNewSecurityOnly","newSecurityOnly","skipNewSecurityCheck","skipNewSecurity","checkEntityLevel","useWorkspaceId","useDigitalPropertyId","AclSecurityAdapter","useRequiredSecurity","isAdmin","getDigitalPropertyFromUser","lastUsedDigitalPropertyId","lastUsedDigitalProperty","runNewSecurityCheck","throwIfFunctionalActionsUndefined","requireFunctionalActions","canUserAccessResourceWithNewSecurity","useTenantFromUser","AclService","requiredFunctionalActions","userSecuritySet","securitySet","securityEntity","SecurityUtility","createSecurityEntity","permissionLogging","trace","AppConfigService","httpHandler","externalAuthConfig","fetchConfig","HttpClient","idpConfig","external","clientId","authorizationParams","audience","redirect_uri","useRefreshTokens","httpInterceptor","allowedList","uri","allowAnonymous","useCookiesForAuth","authConfig","getZendeskUrl","externalAppConfig","zendeskUrl","getZendeskEmailConsultationFormId","zendeskEmailConsultationFormId","getZendeskManualEvaluationServiceRequestFormId","zendeskManualEvaluationServiceRequestFormId","getZendeskProductSupportFormId","zendeskProductSupportFormId","getWalkMeScriptUrl","walkMeScriptUrl","getGoogleTagManagerId","gtmId","getAmplitudeKey","amplitudeKey","getDownloadToolsUrl","downloadToolsUrl","getDownloadToolsIndexPath","downloadToolsIndexPath","getDownloadToolsDcaPathWindows","downloadToolsDcaPathWindows","getDownloadToolsDcaPathMac","downloadToolsDcaPathMac","tenantConfig","getTenantBaseUrl","baseUrl","getMaximumDownloadablePagesPerScan","scanConfig","maximumDownloadablePagesPerScan","getDefaultPdfPagesTestLimit","pdfPagesTestConfig","defaultPdfPagesTestLimit","getDefaultMonitoringPagesPerDPLimit","monitoringConfig","defaultMonitoringPagesPerDPLimit","getDefaultAcademySeatLimit","academyConfig","defaultSeatLimit","getMinAcademySeatLimit","minSeatLimit","getMaxAcademySeatLimit","maxSeatLimit","getAbsolutePdfPagesTestLimit","absolutePdfPagesTestLimit","getAbsoluteMonitoringPagesPerDPLimit","absoluteMonitoringPagesPerDPLimit","getAbsoluteMonitoringPagesPerDPLimitWithFF","absoluteMonitoringPagesPerDPLimitWithFF","isNewSecurityEnabled","getMaxNumberOfUserApiKeys","apiConfig","maxNumberOfUserApiKeys","getMaxActionsOrScanPoints","automatedUserFlowConfig","maxActionsOrScanPoints","getAcademyDefaultContentTag","defaultContentTag","getAcademyDisabled","getHarnessSDKClientKey","harnessClientSDKKey","getPendoApiKey","pendoKey","AuditRuleService","findCurrentDigitalPropertyAuditRules","filters","excludeHistory","findDigitalPropertyAuditRules","findAuditRules","toggleRule","getAuditRuleLibraries","ruleCreationRequest","ruleEditionRequest","editRuleById","deleteRule","getStandardsForLibrary","libraryCode","AuthService","browserLocalStorageService","browserSessionStorageService","accessToken$","getToken","tokenData","token","tokenParts","clearLocalData","getNewAccessToken","refreshToken","getRefreshTokenFromStorage","getAccessTokenFromStorage","getItem","access","getAccessTokenObservable","saveAccessTokenToStorage","setItem","refresh","saveRefreshTokenInStorage","AuthGuard","externalAuthGuard","externalAuthService","authService","internalCanActivate","isAuthenticated","login","routeParams","redirectUrl","returnTo","replaceUrl","processUnauthorization","getCachedOrUpdatedAccessTokenSilently","getAccessTokenSilently","cacheMode","accessToken","validateExternalAccessToken","forbidden","externalCanActivate","canActivate","setMfaRequired","AuthorizeOnlyStaffUsersSsoTenantGuard","forbiddenPage","parseUrl","hasTenantStaffAccess","hasStaffAccess","DigitalPropertyLimitGuard","tenantId","getCurrentTenantId","checkTenantDigitalPropertyUsage","hasLinkedPropertyData","propertyData","checkTenantDigitalPropertyUsageForAdminPortal","retrieveAuthenticatedUserProfile","getDigitalPropertyLimitState","limitState","digitalPropertyCount","digitalPropertyLimit","displayErrorToast","tenantName","getWorkspace","DigitalPropertyGuard","hasDigitalPropertyAccessCache","handleScanError","HttpErrorResponse","StatusCodes","FORBIDDEN","cachedResult","cacheExpiryDate","addSeconds","lastUpdate","checkAccessToProperty","SecurityGuard","attemptSettingDigitalPropertyFromLinkedProperty","attemptSettingWorkspaceFromLinkedProperty","environment","production","SsoTenantGuard","createUrlTree","canActivateChild","TenantlessGuard","WebDigitalPropertyGuard","inject","DigitalPropertyService","UserService","Router","getDigitalPropertyTypes","digitalPropertyTypes","digitalPropertyType","$digitalPropertyType","typeId","isWebsiteType","AutomatedUserFlowApi","createAutomatedUserFlow","dpId","userFlow","automatedUserFlows","post","httpParams","HttpParams","fromObject","flowType","getAutomatedUserFlow","userFlowId","updateAutomatedUserFlow","wsId","userFlowUpdate","put","findByName","userFlowTemplateName","names","getUserFlowRecording","recordingId","automatedUserFlowRecordings","deleteUserFlowRecording","AutomatedUserFlowService","automatedUserFlowApi","userFlowName","userFlowType","userFlowActions","$automatedUserFlow","validateNameUniqueness","nameToSkip","CustomAsyncValidators","curry","BrowserLocalStorageService","windowRef","cookieService","isStorageAvailable","tempData","storageKey","stringData","isEnabled","storage","parse","setData","testItem","windowObject","localStorage","removeItem","deleteAll","SESSION_STORAGE","__storageTest__","GUIDED_USER_FLOW","AUTOMATED_USER_FLOW","BrowserSessionStorageService","sessionStorage","isSidebarVisible","notificationsReady","automatedScanPageScanCompleted","userSwitchedToWorkspace","workspaceTrainingVideosCount","scanStopped","BusMessageService","channels","buildChannelsName","channel","initChannel","channelName","subject","removeChannel","initChannels","BusyIndicatorService","toggleIndicator","indicatorToggled$","a11MessageOnIndicatorChange","busy","isTranslationAvailableForKey","onOpenIndicator","onCloseIndicator","ClipboardUtilityService","navigator","clipboard","writeText","ClipboardService","textValueCopyButtonSelector","onCopySuccess","newClipboard","clipboardIdentifier","btn","ClipboardJS","clipboardId","CommentService","workspacesRestAPI","postManualAuditIssueComment","evaluationScanId","manualIssueId","getManualAuditIssueComments","evaluationId","deleteManualAuditIssueComment","commentId","CookieService","isCookieEnabled","expires","cookieData","dateExpires","setFullYear","toUTCString","cookie","cookieName","nameLength","str","cookies","eqPos","substr","CustomAuditRuleService","getRuleCategories","getCustomAuditRuleCategories","findCustomAuditRules","isInteger","RuleLibraryOrigin","la","legacyLa","createData","ruleEditRequest","exists","existsCustomAuditRule","deleteCustomAuditRule","workspaceRestAPI","adminRestAPI","digitalPropertyTypes$","throwError","getAllDigitalProperties","getWorkspaceDigitalProperties","populateRemediationProgress","populateMonitoring","getAllDigitalPropertiesByWorkspaceId","getDigitalPropertyMonitoring","getMetrics","getMetricsForDigitalProperty","loadDigitalPropertyTypes","getDigitalPropertyTypesMap","getIdNamePair","dpType","createDigitalProperty","createWorkspaceDigitalProperty","validateDigitalPropertyBulkUpload","fileForm","downloadDigitalPropertyTemplate","createBulkDigitalProperty","setQuickMonitoring","quickSetup","setDigitalPropertyQuickMonitoring","updateMonitoring","updateDigitalPropertyMonitoring","removeMonitoring","removeDigitalPropertyMonitoring","getDigitalPropertyLatestAndPreviousMonitoringScanResults","updateDigitalProperty","removeDigitalProperty","propertyType","canRestrictDomain","isMobileType","MOBILE_DIGITAL_PROPERTY_TYPE_NAMES","archive","archiveProperty","restore","restoreProperty","existingKeyValues","propertyId","getDigitalPropertyOverview","createUserWayOrganizationSite","deleteUserWayOrganizationSite","ErrorHandlerService","ErrorHandler","onLine","handleNotFound","NOT_FOUND","not_found","ErrorMessageService","errorResponseMessages$","addErrorResponseMessage","bounceTime","DEFAULT_VALIDATION_BOUNCE_TIME","setFocus","DEFAULT_SCROLL_HEIGHT","fieldId","fieldElement","scrollElementIntoView","scrollBy","once","getTranslateKey","errorName","RESPONSE_ERROR_MESSAGES","errmsg","getPageScreenshotData","isErrorScreenshotAvailable","ExternalLinkService","getZendeskTicketUrl","ticketNumber","getBaseZendeskUrl","getZendeskSubmitTicketUrl","getHelpCenterUrl","getEmailConsultationFormUrl","getManualEvaluationServiceRequestFormUrl","getProductSupportFormUrl","getProductRoadmapUrl","getValidationTestingServiceRequestFormUrl","FeatureFlagRedirectionGuard","redirectionConfig","redirectTo","completeUrl","newRedirectUrl","FeatureFlagGuard","$applicationRole","roleOrigin","updatedAt","$workspaceRole","workspacesUserId","E2eFeatureFlagMock","userFlows","userFlowsGuided","tenantRiskScore","wsRiskScore","dpRiskScore","govDashWebsiteAppsNewSection","riskChartFrequency","scimFunctionality","scansListRedesign","scansRevampInPopup","requestManualEvaluation","filteringUsers","removedStepper","evaluationStatus","pushManualRequestAudit","scanBanner","manualEvaluationConformanceTab","updateTaskSlideout","navSupportPortalUx","customRulesAndSeverity","bulkWsAndDpsCreationWithCustomMonitoringSettings","labeForEveryone","userway_integration","organizationPortfolio","userFlowsQ42023Revamp","mobileAppScans","beManEvaluations","monitoringHistoricalReport","evaluationsSummarization","recordingAutomatedFlows","automatedFlowPasswordCSSField","requestValidationTesting","mobileTestingEmulator","nonWcagStandardsPlatform","commonFindings","viewIssueTrackingConnectionStatus","digitalAssetFindings","artificialIntelligenceOptin","LEVEL_ACCESS_PLATFORM_CLIENT","OPTION_CONFIG","streamEnabled","FeatureFlagService","_clientInitialized$","_flagsChange$","userIsEqual","userA","userB","identify","authorizedClientInitialized$","initOptions","anonymous","clientInitialized$","convertToHarnessAcceptableFormat","service","applicationRoles","lodashMap","workspaceRoles","$tenant","packageId","_attempts","initialize","environmentType","EnvironmentType","QA","client","READY","CHANGED","ERROR_AUTH","allowUnauthorized","returnDefault","GlobalFeatureFlagDefaults","clientInitialized","clientIsNotInitialized","clientIsNotAuthorized","flagsChange$","isAuthorizedClientInitialized$","isClientInitialized$","FlawService","setViewed","markFlawAsViewed","getFlawHistory","changeEvent","changedByType","newFlawStatusHistoryLength","newStatus","FormService","isCustomAbstractControl","hasMappedCustomMessage","addressedErrors","addError","msg","isHtmlElement","clearAsyncValidators","requiredLength","actualLength","excludeCharacters","invalidEmail","isDomainValid","maxLines","propKey","getError","labelFieldName","endSymbol","formName","invalidControls","syncFormValuesToQueryParams","fields","updateFormValuesFromQueryParams","buildQueryParams","updateUrlQueryParams","currentFocusId","labelKey","requiredFromContext","requiredFromValidators","hasValidator","PendingChangesGuard","canDeactivate","currentRoute","currentState","deactivateResult","getter","HttpStatusCode","NotFound","validateJsonFile","isFileArray","jsonFiles","FileUtility","readFileAsText","zipAll","textList","isValidJSON","File","DomUtility","getIFrameDocument","frame","isHostObjectProperty","contentDocument","contentWindow","isCssSelectorValid","cssSelector","MIN_PASSWORD_LENGTH","hasWhiteSpacesPattern","RegExp","imageFileExtensions","subdomainPattern","validateCustomFunction","domainControl","validationFunction","invalidDomains","getLinesFromText","_url","s","checkDuplicate","existingValues","caseSensitive","valuesSet","validateWhiteSpaces","hasWhiteSpaces","isEmpty","archiveConfirmationMessage","customValidator","invalidArchiveConfirmationMessage","validateIsFileType","fileType","readableFileType","validateAllEmailsInText","validateEmailsInTextSplitBy","substrings","validateAtLeastOneSelected","uniquenessNormalizer","caseInsensitive","extraWhitespaceInsensitive","normalizedValue","checkSet","normalizedCheckSet","normalizedSet","lowerCaseItems","controlValue","DESIGN_RULE_DISALLOWED_CHARS","excludedCharacterString","escapeRegExpString","DESIGN_RULE_ID_PATTERN","compareDateControls","compareWith","controlDate","controlDateValid","compareDate","compareDateValid","startFromControl","endToControl","isValidDomain","removeProtocolFromUrl","domainWithoutProtocolValidator","urlControl","normalizedUrl","getNormalizedUrlString","isValidJiraFieldUrl","domainsRegexp","errorCode","urls","isUrlAuthorized","m","digitalPropertyKeyValidator","$digitalPropertyKeyRegExp","digitalPropertyFieldWorkspaceDuplicateValidator","_limit","lineContent","userWayWebsiteDuplicatedValidator","getDomainPattern","validateScanTagSelected","noTagSelected","validateConformanceLevelSelected","noConformanceLevelSelected","validateWorkspaceSelected","noWorkspaceSelected","fileExt","pop","validateJSON","supportedMimeTypes","supportedExtensions","maxTotalSize","maxQuantity","occupiedQuantity","validateAttachmentRequired","validateStringIsNonZeroInteger","validateSubdomain","isNumeric","validateCssSelector","cssSelectorInvalid","ApiVersion","paginationParams","_noPrefix","available","logout","possibleTargetStatuses","possible_target_statuses","auth","refreshAccessToken","migrate","resync","myTasks","issueTracking","issue_tracking","issueTrackingConnectionConfig","issue_integration_connection_config","issueTrackingConnection","instanceId","issue_integration_connection","issueTrackingProjects","issue_integration_projects","consumerKey","consumer_key","issueTypes","configurableFields","requiredFields","issueTrackingStatusMapping","issue_integration_status_mapping","issueTrackingIssueStatuses","issueIntegrationStatuses","jira","issueIntegration","regenerateAuthUrl","regenerate_auth_url","verifyJiraToken","verifyToken","uiTools","ui_tools","integrations","generateApiKey","generate_api_key","generateEncryptionKey","generate_encryption_key","deleteApiKey","generateBrowserExtensionKey","generate_browser_extension_key","getPreviousTokensInfo","previous_tokens_info","session","sessions","sessionId","mobileAppSessions","mobileAppSessionId","mobile_app_sessions","testGuides","packages","packageAddons","workspaceUser","latestScans","latest_scans","latestScan","latest_scan","authenticated","deactivate","activate","verifyEmail","verifyResetPasswordToken","translations","locale","translationsData","locales","supportedLocales","supported_locales","resetPassword","resendActivationLink","resendVisitorActivationLink","createNewPassword","allIds","all_ids","list","countries","quickScan","quick_scan","mobileScans","mobile_scans","operatingSystems","operating_systems","documents","scannableDocuments","scannableDocumentsRule","scannableDocumentRules","startDocumentScan","supplementalScan","requestRemediation","setRemediation","downloadReport","removeRemediation","revokeRemediationRequest","downloadTestReport","default","rerun","reports","monitoringAnalytics","monitoring_analytics","resume","serverApiPerformance","server_api_performance","resources","downloadToken","secure_resources","sendEmail","send_email","avatarId","logs","activityLogs","restApiUrl","support","sendSupportEmail","markAuditErrorAsFalsePositive","toggle_rule","createInPath","manualResults","manual_results","manualAuditTopWcag","manual_audit_top_criteria","manualAuditIssuesBySeverity","manual_audit_issues_by_severity","manualEvaluations","digital_properties","digital_property_type","digitalPropertyMetrics","tracking","audit_rules","customAuditRules","rule_ids","jobIndustries","jobTitles","export","scansCount","scans_count","nextScheduledScan","next_scheduled_scan","training","videos","pathParam","move","manualAudit","manual_audit","manualRequest","requestId","manual_requests","manualUploadFile","manual_upload_file","manualAuditIssue","comments","quickMonitoring","quick_monitoring","scanTags","scan_tags","resendInvite","resend_invite","ruleHistory","ruleHistorySearch","scanPointSummary","scan_point_summary","pageSummary","page_summary","hasHistoryUpdates","shortLink","short_link","shortLinks","isDuplicated","markAsViewed","userChangeHistory","bulk","monitoringPages","monitoring_pages","configureFields","archivable","assignable","withdrawAssignee","withdraw_assignee","tenants","scanningAgent","academy","ssoConfig","ssoLink","reauthorizeConnection","reauthorize_connection","important","userFlowTemplates","templateId","user_flow_templates","user_flow_recordings","screenshots","matchComponents","matchComponentId","matchComponent","mfa","designReviewRules","designReviewPages","designReviewPageId","designReviewFindingId","designReviewHighlights","designReviewHighlightId","designReviewProjects","designReviewProjectId","pdfPagesTestState","security","newSecurity","notifications","staffGroups","tenantsMembership","userManagement","accessibilityPolicies","overviewData","dataSnapshots","data_snapshots","contentTags","availableContentTags","availableSignupFields","activity","salesforce","accounts","metadata","digitalPropertyLimitState","digital_property_limit_state","digitalPropertyAutomatedFlowLimit","digital_property_automated_flow_limit","digitalPropertyUserWaySiteLimitState","userway_site_limit_state","webhooks","webhookId","ampApiKey","amp_api_key","validateTasks","environments","continuum","changeEmails","updateEmails","ai","chat","rating","my","cloudsmithToken","dataSummary","summaryCode","userRoles","user_roles","signup","scimApiKey","scim_api_key","scimConfig","scim_config","unassignedMembers","unassigned_members","assignUsers","assign_users","recentWorkspaces","conformanceScoreReport","userway","healthcheck","healthCheck","ping","userWaySSOLink","userway_sso_link","auditedDocuments","encodeURIParam","severityKey","custom_severities","deleteAndReassign","swapRanks","mobileApps","mobile_apps","command","IndexedDBCollectionName","MOBILE_EMULATOR_SCANS","IndexedDBService","initDb","openDB","upgrade","db","collectionName","createObjectStore","throwUninitializedError","throwIndexedDBAccessError","isInitialized","getCollection","collection","IssueTrackingRestAPI","getTenantIssueTrackingConnectionConfig","getTenantIssueTrackingConnectionConsumerKey","connectionId","createIssueTrackingConnection","issueTrackingConnectionCreateRequest","regenerateIssueTrackingAuthorizeUrl","issueTrackingConnectionRegenerateAuthUrlRequest","verifyTenantJiraToken","issueTrackingConnectionId","getUserIssueTrackingConnections","getIssueTrackingConnectionsForWorkspace","getIssueTrackingProjects","issueTrackingProjectId","getRequiredFields","issueTrackingIssueTypeId","getConfigurableFields","getJiraUsersByProject","issueIntegrationProjectKey","updateEapProjectStatusMapping","statusMappingFromIssueTracking","statusMappingToIssueTracking","configurationType","statusMapping","taskTransitionRulesConfigurationType","getIssueTrackingIssueStatusesByProject","getIssueTrackingIssueStatusesByIssueType","issueTypeId","createJiraIssue","createJiraIssueRequest","linkIssue","linkIssueRequest","removeTenantIssueTrackingConnection","resyncIssueTrackingConnection","getConfiguredFieldsForProject","updateIssueTrackingConnectionWorkspaces","issueTrackingConnectionUpdateWorkspacesRequest","configureFieldsForProject","newFields","reauthorizeIssueTrackingConnection","issueTrackingConnectionReauthorizeRequest","getLabels","getFailedTasks","IssueTrackingService","issueTrackingRestAPI","allFields","createIssue","verificationCode","removeIssueTrackingConnection","isJiraCloudInstance","hostname","shouldReauthorizeConnection","oAuth2","webhooksSupported","LoadErrorHandler","logAndDisplayError","logMessageInResponse","fullMessage","getErrorMessage","LoaderService","loaderMap","loader","skipNext","setKeyLoading","ManualAuditIssueService","workspaceRestApi","manualAuditHistoryRequest","getManualEvaluationIssueRuleAuditHistory","getManualEvaluationIssueHasHistory","getManualRuleCategories","getEvaluationIssues","getManualEvaluationIssues","updateEvaluationTitleById","updateManualEvaluationTitleById","getEvaluationTopWcag","getManualEvaluationTopWcag","getEvaluationIssuesBySeverity","getManualEvaluationIssuesBySeverity","downloadCSVReport","formatColumns","downloadManualEvaluationIssues","getIssue","manualAuditIssueId","getManualEvaluationIssue","deleteIssue","deleteManualEvaluationIssue","updateQAIssueStatus","bulkUpdateFindingStatuses","dismissQAIssue","dismissQAIssues","restoreQAIssue","updateQAIssue","uploadAttachment","uploadManualEvaluationIssueAttachment","attachmentId","update","updateManualEvaluationIssueAttachment","deleteAttachment","deleteManualEvaluationIssueAttachment","canInlineScreenshot","screenshotUrl","acceptedImageExtensions","lastDot","lastIndexOf","isImage","getManualEvaluation","getManualEvaluations","generateTaskDescription","linkToFinding","documentId","$auditedDocument","reference","issueFrequency","screen","decodedUrl","decodeURI","encodeURI","instances","disabilityAffected","getShortLink","getManualAuditIssueShortLink","getManualEvaluationDataSnapshots","getManualEvaluationAuditSummary","manualAuditId","regenerate","getManualEvaluationAuditSummaryById","summaryId","getManualEvaluationAuditSummaryList","rateManualEvaluationAiSummary","getOrCreateConformanceScoreReport","getOrCreateEvaluationConformanceScoreReport","TestGuidesApi","getTestGuideNames","filterLegacyEA","ManualAuditService","testGuidesApi","workspacesApi","createManualAuditWithFile","createEmptyEvaluation","useAdminApi","createManualAudit","getEvaluation","manualEvaluationId","getManualAuditWithPages","getEvaluationMetadata","patchEvaluation","patchManualAudit","patchEvaluationMetadata","archiveEvaluation","archiveManualAudit","archiveEvaluationMetadata","getAllManualAudits","queryOptions","getManualAuditDownload","manualAuditDownloadFile","existingManualAuditId","getManualAuditsForDigitalProperty","getAllManualAuditsForDigitalProperty","updateManualAudit","updateRequest","MessageBusService","channelsNames","observeOn","asyncScheduler","ModalService","componentFactoryResolver","clearAfterModalClosed","previouslyActiveElement","modalContainerRef","appContainer","componentType","resolveComponentFactory","rootViewContainerRef","parentInjector","openModal","focusElement","blur","onDestroy","insert","hostView","setRootViewContainerRef","NavigationItem","organization_dashboard","organization_portfolio","program_dashboard","organization_settings","organization_settings_users","organization_settings_all_users","organization_settings_unassigned_users","organization_settings_user_groups","organization_settings_staff_groups","organization_settings_rule_libraries","organization_settings_severities","organization_settings_ai","evaluations","design_evaluations","tools_and_integrations","tools_and_extensions","sdks","api","scim","administration","administration_tenants","administration_organizations","administration_my_organizations","administration_all_organizations","administration_users","administration_global_users","administration_internal_users","administration_admin_groups","internal_use_only","active_scans","workspace_dashboard","websites_and_apps","websites_and_apps_portfolio","websites_and_apps_overview","websites_and_apps_findings","websites_and_apps_monitoring","websites_and_apps_scans","websites_and_apps_mobile_scans","websites_and_apps_mobile_scans_page_scans","websites_and_apps_mobile_testing_emulator","websites_and_apps_mobile_testing_emulator_page","websites_and_apps_mobile_testing_emulator_app","websites_and_apps_mobile_testing_emulator_scans","websites_and_apps_scans_page_scans","websites_and_apps_scans_components","websites_and_apps_scans_user_flows","websites_and_apps_scan_rules","websites_and_apps_scan_tags","websites_and_apps_pages","websites_and_apps_manual_evaluations","websites_and_apps_manual_evaluations_table","websites_and_apps_manual_evaluations_requests","websites_and_apps_settings","websites_and_apps_environments","workspace_design_evaluations","pdf","projects_and_tasks","my_tasks","help","old_help","help_submit_ticket","help_search_knowledge","help_product_support","help_help_center","help_roadmap","service_request","service_request_email_consultation","service_request_manual_evaluation","service_request_validation_testing","service_request_view_all_services","workspace_switcher","website_app_selector","common_findings","webDpFilter","isWebDp","mobileDpFilter","isMobileDp","NavigationRoutingTree","freezeDeep","iconName","UniversalAccess","MT_Manual_Audits_Read","DE_Administration_Read","designReviews","navTitle","Gear","UM_User_Administration_Read_No_Entity_Level","tenantOnly","displayedOutsideOfNavbar","unassigned_users","User_Groups_Read","userGroups","Staff_Groups_Read","Tenant_Rule_Library_Read","CustomSeverities_Read","AI_Features_Read","Wrench","UserWay_Integration_Read","TI_Issue_Tracking_Basic_Read","test_automation","TI_Tools_Extensions_Read","testAutomationSdks","SDK_Read","continuumIntegration","API_Keys_Read","Webhook_Read","TI_SCIM_Config_Create","isSSOFilter","FolderGear","Tenants_Read","tenantlessOnly","organizations","mergeRequiredSecurities","Global_Users_Read","globalUsers","internal_users","Gavel","Master_Library_Read","Admin_Active_Scans_Read","Translations_Read","Building","Organization_Portfolio_Read","GR_Organization_Dashboard_Read","Common_Findings_Read","Briefcase","mobileModalColorVariant","LightBlue","overrideRouterLink","GR_Governance_Read","restrictByWorkspace","overview","Browser","GR_Dashboard_Read","GR_Monitoring_Read","isAvailableFn","PackageNames","Audit","page_scans","Automated_Flows_Read","Component_Matching_Read","components","AT_Mobile_Scans_Read","AT_Mobile_Apps_Read","mobile_testing_emulator","AT_Mobile_Emulator_Scans_Read","MT_Manual_Evaluation_Read","requests","designEvaluations","DE_Results_Read","Environment_Read","ChartColumn","Evaluation_Rules_Read","evaluation_rules","Scan_Tags_Read","Pages_Read","PDF_Testing_Read","PM_Projects_Read","PM_Tasks_Read","Documents_Read","User","ArrowRightFromBracket","Bell","Notifications_Read","GraduationCap","Academy_Read","MessagesQuestion","externalLinkFn","externalLinkService","Book","MessageArrowUpRight","FileMagnifyingGlass","MessageCheck","NavService","tenantPackageService","createInternalMenusObservable","topLevelMenuItems$","isWebDigitalProperty$","observeBreakpoint","DsBreakpoints","Medium","isMobileView","setAvailableStateAndParent","parent","mappedItem","negated","mobileOnly","tenantPackage","workspacesIds","filterArgs","navMenuItemFilter","firstAvailableChild","hasOverrideLink","navigationRoutingTree","lastActivatedRoute$","getRoute","_route","topLevelMenuItems","getRouteMenuItem","found","getFullPathFromActivatedRoute","routeMenuItem","firstAvailableRoute","getAvailableSubmenusForItem","triggerItem","findSubmenuItem","activeChildren","foundItem","getAvailableSubmenuItems$","activeTopLevelMenuItem$","topLevelMenuItemsMarked","checkIfMenuItemIsActiveAndMarkIt","bestMatch","menuItem","urlWithoutParams","urlSegments","menuItemSegments","hasActiveChild","isExactMatch","isPartialMatch","segment","segmentCount","processMenuItem","topLevelMenuItem","activeSecondLevelMenuItem$","toggleAvailableStateForPortfolio","secondLevelNavMenuItems","isPortfolioView","websitesAndAppNavigationItem","secondLevelNavMenuItem","websitesAndAppsChild","isNotPortfolio","activeTopLevelMenuItem","secondLevelMenuItem","activeThirdLevelMenuItem$","activeSecondLevelMenuItem","activeThirdLevelMenuItem","thirdLevelNavMenuItem","thirdLevelChild","activeMenuItemForWorkspaceSwitcher$","getTopLevelMenuItems$","workspacesMenuItem","isStringEmpty","hasAccessToMenuItemInWorkspace$","ids","filterMenuItemsByIds","getNavItemInTheActiveSubtree$","navItemsIdsToCheck","navItemsIdsToCheckSet","findIfNavItemIsInTheActiveSubtree","activeNavItem","activeChild","_find","NotificationService","notification","createMessage","notificationParam","keepAfterRouteChange","keepOnlyOne","position","getNotification","keepHtml","actionableSuccess","actionConfig","shouldTrapFocus","inlineMessage","PageApi","mustContainUrl","scanPointId","updatePage","updateData","pageExists","pageName","ApiHeaderOption","pageExistsByURL","pageURL","PageService","pageApi","validateUniqueNameSubject$","fillDefaultAltText","pageId","exceptionThunk","DEFAULT_PAGE_SCREENSHOT_ALT_TEXT","ProjectsRestAPI","createTasks","createTasksForSuccessCriterias","updateProject","getProjectTasks","getAllProjectTasks","getTasksSummaryByDp","getProjectTask","deleteProjectTask","deleteProjectTasks","taskIds","httpOptions","getTaskComments","createTaskComment","getProject","deleteProject","archiveProject","restoreProject","isProjectArchivable","validateProjectDeletion","downloadProjectTasks","getMyTasks","getUsedIssueTrackingStatuses","ProjectService","projectsApi","updateProjectIssueTracking","issueTrackingRequest","getTasks","getValidateTasks","TaskSearchFields","requiresReview","manual","getValidateProjectTasks","toTaskWithProject","$taskWithProject","hasValidateProjectTasks","getTaskCounts","TaskUtility","reduceTargetStatesAndFindingsToTaskCounts","getIntegratedTaskCounts","taskIssueIntegrated","getTask","deleteTask","deleteTasks","downloadTasksCSVReport","ReportService","getFullScanReport","downloadFullScanReport","generateFullScanReport","downloadScanReportByRule","fromResponse","resourceData","Blob","eapFriendlyMimeType","filename","emails","BeaconDebouncer","timeout","dataSubject$","debouncedError$","consoleData","sendBeacon","sendDebounced","RestService","consoleDebouncer","getStreamProgressPercents","HttpEventType","UploadProgress","downloadRaw","getAppConfig","getTranslations","downloadTranslations","lang","uploadTranslations","saveAllTranslations","getListAvailableTranslations","getCountriesListForClient","removeTranslation","getSupportedLocales","createLocale","updateLocale","removeLocale","saveScanOptions","getScanOptionsList","updateScanOptions","selectedScanOptionsId","setDefaultScanOptions","scanOptionsId","removeScanOptions","getScans","omitBy","isNil","getActiveScans","getDigitalPropertyActiveScans","getScan","getAuditedDocument","urlReference","getScanDiscoveredDocuments","getScanIssues","getScanIssueShortLink","getScreenshotAuditDetails","getAuditedDocumentScreenshot","getScanAnalytics","getMonitoringHistoryReport","generateMonitoringHistoryReport","getScanAnalyticsByRule","getPageAnalyticsAffectedByRule","ruleName","createScan","createAutomatedScan","updateScan","getOrCreateSupplementalScan","reportFormat","extraQueryOptions","createDocument","onProgress","req","HttpRequest","reportProgress","last","getDocuments","getDocument","updateDocument","removeDocument","removeDocumentAttachment","fileId","createScannableDocument","processProgressEvent","HttpResponse","sendSupportRequest","supportRequest","dismissIssues","ignoreRequest","updatedCount","restoreIssues","restoreRequest","sendTrackingConsole","exclude_history","editRequest","creationRequest","getJobIndustries","getJobTitles","getScansCount","excludeMonitoring","exclude_monitoring","getNextScheduledScan","moveScans","newDigitalPropertyId","apiUrl","updateScanTags","scanTagId","scanIds","dataId","$scanSearch","getPageSummaryForTool","getUserFlowScanPointSummaryForTool","getPageSummariesForTool","getPreviousPageSummariesForTool","getPageSummariesForUserFlowScanPoints","getDigitalPropertyMonitoringPages","getDigitalPropertyMonitoringPagesForComponent","getAvailableDigitalPropertyMonitoringPages","getMonitoringFlawPage","trendDataLength","setImportantDigitalPropertyMonitoringPages","flawPageIds","pagesIds","markAsImportant","getResourceMoreSecureUrl","getMobileScansRules","removeMobileEmulatorScan","removeMobileSDKScan","getMobileEmulatorScans","getMobileSDKScans","getMobileEmulatorScansOperatingSystems","getMobileSDKScansOperatingSystems","AdminRestAPI","getApplicationRoles","validateWorkspaceBulkUpload","uploadForm","workspaceBulkUpload","getAllWorkspaces","sortByName","migrateWorkspaceToTenant","$migrateRequest","patch","sortByDigitalProperty","sortCreatedBy","sortCreatedAt","getUserAvailableWorkspaces","UserRestAPI","getAuthenticatedUser","updateSelectedUserProfile","updateSelectedUserProfileAsWorkspaceAdmin","saveUser","getMfaRegistrationQr","verifyAndEnableMfa","mfaLogin","authStatus","password","verificationToken","switchUserToWorkspace","lastUsedWorkspace","switchUserToDigitalProperty","getUserPreferences","$userPreferenceFilter","getUserPreferencesForUser","updateUserPreferencesForUser","getUserWorkspacesActivityLogs","getUserNewNotificationsCount","typeIds","setUserWorkspacesActivityLogsAsViewed","setActivityLogsAsViewedRequest","includeMe","changeEmailsDownloadTemplate","getAvailableDigitalPropertyIds","getAvatarUrl","getEmailByToken","confirmEmailToken","getRecentWorkspaces","WorkspacesRestAPI","downloadCreateBulkWorkspacesTemplate","getDashboard","getWorkspaceMetrics","downloadPortfolioReport","generatePortfolioReport","getAllUserWorkspaces","filterByUserId","pickBy","createWorkspacePlusDp","createWorkspace","updateWorkspace","updateWorkspaceAsAdmin","exportWorkspaces","getUserWorkspaceRoles","isAdminRequest","workspaceAddTrainingVideo","workspaceUpdateTrainingVideo","videoId","workspaceDeleteTrainingVideo","digitalProperyBuilder","workspaceGetTrainingVideo","workspaceGetTrainingVideos","getDigitalPropertyMetricsList","getDigitalPropertyMetricsSnapshots","$auditIssueFields","fetch","lastId","createScanTag","deleteScanTag","getScanTag","updateScanTag","getActiveWorkspaces","getActiveWorkspacesV2","getMyActiveWorkspacesWithNotifications","getSummary","getWorkspaceReport","generateWorkspaceReport","RoutingService","onRoutingChange","routeData","routeChanged$","takeUntil","pageTitleSnapshot","pageTitle$","notifyScreenReader","resolvePageDescription","pageDescription","pageDescriptionSnapshot","changeRouterSubscription","subscribeToRouterChange","subscribeToTrackRouterPathSubscription","subscribeToTrackRouterPath","getActivatedRoute","outlet","RoutesRecognized","pairwise","previousRoutePath","urlAfterRedirects","getPageDescription","navigateOnPropertyChange","RuleAuditHistoryService","getStatusLine","ScanMobileService","getSDKOperatingSystems","getEmulatorOperatingSystems","searchParams","ScanOptionsService","scanOptionsChange","scanOptions","currentScanOptions","mapScanCreateRequest","incomingData","scanRecurrenceType","scanRecurrenceSelectedDay","repeatEvery","scanMonthlyOnDay","includeUrls","startScanAtDate","stopScanAtDate","languageForScanning","saveScanOptionsName","unlimitedCrawlingPagesTo","unlimitedCrawlDeepLevel","userAgent","accessibility","essentialBestPractice","colorBlindEmulation","setUserDefaultScanOptions","setCurrentScanOptions","ScanReportService","getIssues","accessibilityTool","hasIssuesChanges","getTotalRulesCount","evaluatedRulesCount","audit","useForTotalScore","getSelectedScanRulesCount","isSelectedForScanning","isDismissed","isIssueLinked","canBeLinkedToTask","linkableIssueStatus","isIssueClosed","closed","ScanTagService","ScanCreationType","advanced","quick","ScanService","scanCreatedSubject","onScanCreated$","createAdvancedScan","createQuickScan","scanType","totalScanningTime","processingStartedAt","processingEndedAt","start","end","getFormattedTime","totalScanningTimeAriaLabel","getSelectedAudits","getOnlySelectedAudits","filtered","auditId","$scanOptions","getTranslatedConformanceLevel","includesStandard","includesEssential","essential","getTranslatedFormattedDateTimeValue","prefixLabel","dateTime","formatted","isToday","isYesterday","toDigitalPropertyId","SecurityGroupsApi","findSecurityGroups","findSecurityGroupsByTenantId","findStaffGroupsByTenantId","createSecurityGroup","createStaffGroup","getSecurityGroup","getStaffGroup","updateSecurityGroup","updateStaffGroup","deleteSecurityGroup","deleteStaffGroup","findSecurityGroupsForUserManagement","originParam","entityLevelParam","SecurityGroupService","securityGroupsApi","userApi","populateGroupWithEntityNames","dpDictionary","wsDictionary","getEntityNames","dictionary","entity","entityId","compact","availableDigitalProperties$","securityGroups$","groupsResponse","activePropertiesForWorkspace","_map","isStaff","SecurityUsersApi","findUsersWithSecurityGroupsByTenantId","searchTerm","getUnassignedUsers","assignSecurityUsers","createSecurityUsers","removeUser","getSecurityUserTenantsMembership","addUserToSecurityGroups","bulkAddToStaffSecurityGroups","staffSecurityName","tenantIds","removeUserFromSecurityGroups","SecurityUserService","securityUsersApi","ShortLinkRestApi","generateShortLink","linkType","ShortLinkService","shortLinkRestApi","getAttachmentShortLink","attachmentContext","$shortLink","getMobileDpScanReportUrl","urlContext","mobile_app_report","urlQuery","getUrlFindingShortLink","aggregated_report","getAuditFindingShortLink","getShareFindingShortLink","findingKey","getRedirectPath","shortLinkType","findingUrl","auditFinding","shareFinding","auditFindingAttachment","getBaseUrl","appUrl","protocol","StatusService","isApplicationReady","$isApplicationReady","areTranslationsReady","$areTranslationsReady","setApplicationReadyStatus","setAreTranslationsReady","getAreTranslationsReady","comma","criteriaIdentifier","criteriaLevel","criteriaHandle","SuccessCriteriaFormatterService","DEFAULT_STANDARDS","wcagCr","formatSuccessCriteria","handleDivider","_divider","handleSeparator","_separator","criterias","legacy","Legacy","principles","guidelines","alt_id","successcriteria","sufficient","situations","using","and","advisory","failure","sufficientNotes","Wcag","adaptWCAGToISuccessCriteria","wcagIdPrefixThatDoesNotExistInUrl","findByNumId","structure","depthFirstSearch","addSuccessCriteria","findInGuideline","guideline","principle","axe","SuccessCriteriaIdentifier","DEQUEBP4","DequeVersion","v40","Axe","axeSuccessCriteria","bestPracticeSuccessCriteria","aslint","EABP1","EssentialVersion","v10","Aslint","aslintSuccessCriteria","WAVEBP1","WaveVersion","Wave","waveSuccessCriteria","NOT_APPLICABLE","NotApplicable","WcagLevel","CR","WcagVersion","v22","v21","v20","WcagCr","En301549Version","v321","EN301549","en301549SuccessCriteria","Section508Version","v2018","Section508","section508SuccessCriteria","SuccessCriteriaService","legacySuccessCriteria","standardToSuccessCriteriaIndex","css","standardIdentifier","getSuccessCriteriaFromStandards","getAllSuccessCriteriaFromStandard","getAllWCAGWithNACriteriaFromStandard","TenantPackageService","packageSubject","packageChange$","tenantPackageChange$","TenantSeveritiesApi","createSeveritiesData","updateSeveritiesData","deleteAndReassignSeverity","toDelete","reassignTo","tenantSeveritiesApi","systemSeverityClassAndIconByKeys","customSeverityClassAndIconSortedByRank","severitiesMap","severityArray","getSeverityClassAndIconByKeys","severityClassAndIconByKeys","idx","systemSeverities","TenantApi","getTenant","getUserTenantsFromTenantedScope","updateTenant","getWorkspaces","urlBuilder","clientSearchTerm","getTenants","buildGetTenantsHttpParams","getMyTenants","createTenant","createRequest","setSsoConfig","removeSsoConfig","getPdfPagesTestState","getTenantUsers","activateUserInAcademy","deactivateUserInAcademy","setUserRolesInAcademy","getDigitalPropertyAutomatedFlowLimit","getDigitalPropertyUserWaySiteLimitState","getTenantMetrics","getOrCreateTenantEntitlementToken","generateScanningAgentEncryptionKey","getTenantEntitlementToken","downloadOrganizationReport","generateOrganizationReport","getScimConfig","setScimConfig","generateUserWaySSOLink","AcademyApi","generateAcademySSOLink","isAcademyAvailable","updateAcademy","getTenantContentTags","getAvailableContentTags","getAvailableSignupFields","SalesforceApi","getSalesforceAccounts","TenantService","tenantApi","academyApi","salesforceApi","cucumberjs","cucumberjvm","jest","mocha","cypress","webdriverio","extension_chrome_labe","extension_chrome_accessibility_checker","figma","dca_windows","dca_mac","TestAutomationService","configService","toolId","toolUrl","downloadToolsDcaPath","toolPath","UserAclService","UserDigitalPropertyService","digitalPropertiesAndTypes$","setupDigitalPropertyTypes","_isWebDigitalProperty$","_isMobileDigitalProperty$","_areScansAvailable$","isWeb","_dpType$","dpType$","getAreScansAvailable$","UserNotificationService","userRest","newNotificationsCountSubject","newNotificationsCount$","initializeService","interval","PULLING_INTERVAL","SLOWER","isAuthenticated$","hasAWorkspaceSubject$","isUserAuthenticated","$workspaceActivityLog","newActivityLogsCount","onGetCountError","getUserWorkspacesRecentActivity","setUserWorkspacesRecentActivityAsViewed","logsToBeMarked","userRestAPI","currentlySwitchingProperties","hasSwitchingProperties","getCurrentPropertyFromParams","delayWhen","toCurrentSelectedProperty","propertyKey","digitalPropertiesResponse","byWorkspace","dp","currentSelectedPropertyItem","switchUserToDigitalPropertyIfNeeded","currentlySwitching","currentSelectedWorkspace","userServerResponse","workspaceSettings","w","redirectOnPropertyChange","getLinkedPropertyChanges$","digitalPropertySwitched$","UserRoleService","GlobalResponse","isIGlobalResponse","$currentUserData","userData","_isAuthenticated","_isMfaRequired","isMfaRequired$","hasAccessToTenant$","lastPermissionsCheck","isUserProperty","currentTenant$","checkUserDigitalProperty","privateWorkspace","WorkspaceTypes","private","privateDigitalProperty","switchedWorkspaceSuccess","reloadUser","switchedWorkspaceFailed","saveProfileLocally","me","updatedUserData","handleUnauthorizedWhenGettingProfile","userWorkspace","workspaceDescription","workspaceType","getAvatarSrc","saveUserId","UNAUTHORIZED","NoAccessToTenant","reloadUserSubscription","complete","getUserOrigin","isStaffGroup","Origin","staff","updateUserDataByAdmin","selectedUserId","updateUserDataByWorkspaceAdmin","updateUserAccountStatusByAdmin","saveProfile","deactivateFeedback","setAuthenticated","isMfaRequired","getAuthStatus","ExternalAuthUserNotFound","logIn","mfaRequired","postLogOut","logOut","signupResponseHandler","observable","changePasswordWithToken","onBrowserOnlineStatus","merge","mapTo","preferencesPayload","checkUserPermissionsChange","now","getUserDigitalPropertyIds","getFirstAvailableDigitalPropertyForWorkspaces","workspaceMap","digitalPropertiesMap","sortedDigitalProperties","getUserDataForLogging","findUserPreferenceForParam","userPreference","WindowRef","_window","setwindowObjectMock","WindowService","mediaQuery","matchMedia","mediaQueryList","matches","trainingVideoAllowedHostnames","WorkspaceService","validateUniqueNameDebouncer$","publishEventWorkspacesChanged","publishEventWorkspaceCreated","isTrainingVideoDomainAllowed","isUserInWorkspace","myProfile","_workspace","isUserPrivateWorkspace","getWorkspaceSummary","IE_REVEAL_EYE_SELECTOR","Dev","Stage","Prod","v1","sessionType","uiConfig","Cancel","Resume","REDIRECT_TO_USERWAY_DASHBOARD_PARAM_VAL","large","xlarge","xxlarge","scansPagination","RouterLinkTarget","SELF","BLANK","CastError","DisplayNameExists","ErrorCantRemoveWorkspaceWithUsers","ErrorProcessingScanRequest","IncorrectUsernameOrPassword","ErrorScanTimeout","NoAccessRefreshTokenProvided","TimeoutError","TokenExpiredError","UserDisabled","UserNotFound","CannotDeleteDigitalPropertyWithData","ErrorIncorrectOrExpiredMfaToken","AcademyInitializationFailed","AcademyIntegrationError","AcademySeatLimitExceeded","AcademyUpdateFailed","FAST","constants","SLOW","connect_browser_extension","BlueHover","BlueLink","BlueInactive","BlueBackground","BlueText","BluePrimary","BlueHoverBackground","GreenCheckmark","GreyCopy","GreenStatusPassed","PurpleFocus","RedStatusFailed","OrangeSeverityHigh","OrangeStatusReview","White","SeverityRank5","SeverityRank4","SeverityRank3","SeverityRank2","SeverityRank1","BarTextureSeverityRank4","BarTextureSeverityRank3","BarTextureSeverityRank2","BarTextureSeverityRank1","SeverityRankColourMap","EapIconsComponent","ActivateUserIcon","AlertIcon","AssignUserIcon","AttachmentIcon","CalendarIcon","ChatIcon","CheckboxIcon","CheckboxPartialIcon","CheckboxSelectedIcon","CheckmarkIcon","CircleCheckmarkIcon","CircleXIcon","ChevronBottomIcon","ChevronDownIcon","ChevronTopIcon","ChevronUpIcon","ClockIcon","CursorTextIcon","DeactivateUserIcon","DeleteIcon","DocumentIcon","DownloadIcon","DropdownIcon","EditIcon","EmailIcon","FavoriteIcon","FilterIcon","FlagIcon","FolderIcon","HomeIcon","HorizontalEllipsisIcon","ImageIcon","InfoIcon","LinkIcon","LockIcon","MapIcon","MediaIcon","MinusIcon","NotVisibleIcon","NotificationIcon","PlusIcon","PointerIcon","ProfileIcon","QuestionMarkTooltipIcon","RadioButtonIcon","RadioButtonSelectedIcon","RequestIcon","RevokeIcon","SearchIcon","SettingsIcon","SeverityCriticalIcon","SeverityHighIcon","SeverityLowIcon","ShareIcon","SortIcon","SyncIcon","UnlockIcon","UploadIcon","VerticalEllipsisIcon","VisibleIcon","WaitIcon","WarningCircleIcon","ZoomInIcon","ZoomOutIcon","ViewRuleHistoryItemComponent_ng_template_10_ng_container_1_Template","ViewRuleHistoryItemComponent_ng_template_10_ng_container_2_Template","ViewRuleHistoryItemComponent","ruleAuditHistoryService","ViewRuleHistoryItemComponent_ng_template_2_Template","ViewRuleHistoryItemComponent_span_3_Template","ViewRuleHistoryItemComponent_span_4_Template","ViewRuleHistoryItemComponent_div_9_Template","ViewRuleHistoryItemComponent_ng_template_10_Template","ViewSingularRuleHistoryComponent_ng_template_7_div_1_Template","popover_r5","ViewSingularRuleHistoryComponent","loadHistory","historyInput","selector","ruleTitle","ViewSingularRuleHistoryComponent_ng_template_7_Template","ViewSingularRuleHistoryComponent_ng_template_9_Template","popoverBody_r6","popoverTitle_r7","showChangeRuleStatusDialog","changeLog","RuleStatusToggleComponent","modalComponentRef","newLogEntry","unshift","RuleStatusToggleComponent_ng_container_0_Template","RuleStatusToggleComponent_ng_template_1_Template","RuleStatusToggleComponent_app_view_rule_history_4_Template","canChange","readOnlyStatus_r3","CommonPipesModule","NgbActiveModal","imports","DsModule","FormsModule","withConfig","callSetDisabledState","ReactiveFormsModule","NgbModule","SvgIconsComponent","EN_US","ID","STRINGS","TranslateHtmlPipe","TranslatePipe","TranslateService","statusService","convertToStrings","availableTranslations","localeCookie","currentLanguage","defaultLanguage","currentLanguage$","replaceHtml","_translation","use","setTranslations","languageRegion","setupTranslations","getUserLanguageRegion","getPreferredAvailableLanguageAndRegion","userLanguage","getSupportedLanguage","loadAvailableTranslations","conf","isDefault","replacePlaceholder","region","startsWithLang","langKey","firstRegion","initializeTranslations","_this4","_words","saveAll","getCountriesList","reject","__webpack_require__","getAllLanguages","countriesList","languagesAll","alpabetically","languageA","languageB","nA","nB","nativeName","native","getLanguageCode","languageName","_langCode","getLanguageDetails","resetFormData","getControlName","formGroup","getRouterPaths","PRIMARY_OUTLET","getFullRoutePath","refCount","bufferSize","getRandomCharSecure","method","MAX_UNSIGNED_32_BIT_INT","quotient","legalCharacters","randomNumber","Uint32Array","_getRandomSecureString","isHtmlDocument","nodeType","Node","DOCUMENT_NODE","preferredId","which","htmlElement","getPageSize","offsetHeight","scrollWidth","offsetWidth","scrOfX","scrOfY","pageYOffset","pageXOffset","scrollLeft","calculateColumnsPagination","totalItems","totalPages","startPage","endPage","_currentPage","middle","endIndex","isHostMethod","isRealObjectProperty","isCSSselectorSupported","isSupported","head","styleEl","createElement","insertBefore","sheet","styleSheet","implementation","insertRule","cssRules","css2","cssText","angularForm","stringArrayAsArray","appendFormData","object","keyInObject","appendFile","valueElement","eventProperties","bubbles","cancelable","eventObject","MouseEvent","scrollTo","targetName","formElements","len","getRootElement","isEventSupported","change","load","abort","eventName","getDocumentWindow","parentWindow","defaultView","__parent__","languages","Element","HTMLElement","HTMLDocument","ELEMENT_NODE","ownerDocument","getStyle","styleProp","pseudoElt","getComputedStyle","getPropertyValue","getScript","onLoaded","onFailed","defer","script","async","onerror","invalidValue","navigateToExternalUrl","TextDecoder","decode","Uint8Array","ArrayBuffer","Symbol","toStringTag","isValidPaginationQueryParams","isPositiveInteger","getPageNumberFromQueryParams","defaultPageNumber","isValidSortingQueryParams","getRandomSecureString","crypto","getRandomValues","pickSortingParams","defaultSortingParams","focusTrap","createFocusTrap","isFocusTrapActive","getFocusableElements","timeAgo","since","useAbbreviation","msPerMinute","msPerHour","msPerDay","msPerWeek","msPerMonth","msPerYear","elapsed","isIntlRelativeTimeFormatSupported","rtf","RelativeTimeFormat","getTimezoneValueFromUtc","utcTimezone","standardTimezone","timezones","timezoneObj","isdst","utc","duration","seconds","determineUserTimeZone","userTimeZone","resolvedOptions","timeZone","prettifyTime","includeTimeZone","formatOptions","toShortUSDate","dateISO","withTime","localDate","localMidnight","getUTCFullYear","getUTCMonth","getUTCDate","formatCellDate","timeConnector","localeDateString","toLocaleDateString","toLocaleTimeString","hour12","DeviceType","Mobile","Tablet","Desktop","OperatingSystem","WINDOWS","MACOSX","WINDOWS_PHONE","WINDOWS_RT","IOS","ANDROID","LINUX","UNKNOWN","OPERATING_SYSTEMS","BROWSERS","MSIE","CHROME","FIREFOX","SAFARI","EDGE","PHANTOMJS","OPERA","getUserAgent","setUserAgent","ua","hasUserAgent","isOpera","isIE","getBrowserVersion","versionPattern","versionString","getIEVersion","classicIeVersionMatches","match","ieVersionMatches","browserName","browserNameStr","getOtherVersion","getDeviceType","device","isWindows","subscriber","onabort","onloadend","readAsText","getFormattedIntegrationName","integrationProject","issueIntegrationProjectName","ResourceData","insertDateInFileName","defaultExtension","customDate","dateAsString","getSeconds","maybeInsertDateInFileName","resource","contentDisposition","matchArr","httpStatus","downloadFile","windowURL","webkitURL","customEvent","revokeObjectURL","removeChild","downloadText","triggerDownload","verbose","getQuarter","shouldShowDataPoint","formatStrings","updatedTool","toolTooltip","updatedStandard","currentStandard","updatedTestingTool","currentTool","pushIndex","getTotalTaskCounts","taskCounts","doneCount","notStartedCount","inProgressCount","taskWithTargetStatesAndFindings","seed","notStartedStates","toDo","doneStates","inProgressStates","reducer","getQueryParams","queryString","fromString","paramsObject","allValues","mergeUrlParams","extraParams","CHANGE_USER_EMAILS_MAX_FILE_SIZE","SIZE_200_MB","COPYRIGHT_YEAR","chromeExtensionUrl","labe","accessibility_checker","figmaPluginUrl","deployUrl","HTTP_CACHE","changeUserEmails","designReviewScreen","DESIGN_REVIEW_SCREENS_MAX_NUMBER_OF_FILES","DESIGN_REVIEW_SCREENS_MAX_FILE_SIZE","minNameLength","DESIGN_REVIEW_NAME_MIN_LENGTH","maxNameLength","DESIGN_REVIEW_NAME_MAX_LENGTH","nameExcludeCharacters","DESIGN_REVIEW_NAME_EXCLUDED_CHARACTERS","maxFindingQuantity","DESIGN_REVIEW_FINDINGS_MAX_NUMBER","PAGE_SCREENSHOT_MAX_NUMBER_OF_FILES","PAGE_SCREENSHOT_MAX_FILE_SIZE","scannableDocument","SIZE_20_MB","SCANNABLE_DOCUMENT_MAX_UPLOAD_QUANTITY","privacy","mainContainerId","staticAssets","AppInitialization","featuresService","trackingConsoleService","lazyLoadingStylesService","linkedPropertyDataService","createConsoleWrapper","setApplication","_ref2","fetchFeaturesConfig","lazyLoadStyles","_ref3","loadAppStyles","setupLinkedPropertyDataPreserver","_ref4","preserveLinkedPropertyParam","NotFoundComponent","countdownSeconds","redirectUrls","TenantRedirectModalComponent","uniqueRedirect","selectedUrl$","intervalId","TenantRedirectModalComponent_div_5_Template","TenantRedirectModalComponent_ng_template_6_Template","nonUnique_r2","LoginCardComponent","MfaLoginComponent","tokenField","fb","UntypedFormBuilder","formToken","formContext","server","onMfaAuthenticationError","onUserUnverifiedEmailBannerClose","onResendActivationLink","authErrorMessage","setPasswordVisibility","isPasswordShown","LoginComponent_app_login_card_0_ng_container_1_div_1_Template","LoginComponent_app_login_card_0_ng_container_1_div_2_Template","LoginComponent_app_login_card_0_ng_container_1_div_3_Template","LoginComponent_app_login_card_0_ng_container_1_ng_container_33_Template","passwordIsTooOldError","userEmailUnverifiedError","usePasswordRevealButton","LoginComponent_app_login_card_0_ng_container_1_Template","LoginComponent_app_login_card_0_ng_container_2_Template","LoginComponent","onPageTitleChange","changePageTitleSubscription","redirectToUserWayDashboard","redirectToApp","navigateByUrl","home","redirectToAppOrExternalLink","shouldAutoRedirectToTenant","ErrorLoginToTenantlessForbidden","generateRedirectUrlForDomain","errorAuthentication","redirectModalComponent","trimmedDomain","targetUrl","ErrorUserEmailUnverified","PasswordIsTooOld","onAuthenticationChange","_this5","onMfaRequiredChange","_this6","onSuccess","activation_link","isResendDone","hasResendFailed","_this7","isAuthenticatedSubscription","isMfaRequiredSubscription","LoginComponent_app_login_card_0_Template","LogoutComponent","logoutMessage","onLogoutSuccess","onLogoutError","httpErrorResponse","fakeSuccessMessageForAuth0Redirect","onLogOutSubscription","LogoutComponent_a_6_Template","errorHeader","emailForm_r4","PasswordResetComponent","hasResetFailed","isResetDone","isEmailUnverifiedError","PasswordResetComponent_app_alert_4_Template","PasswordResetComponent_app_edit_permissions_banner_5_Template","PasswordResetComponent_form_6_Template","PasswordResetComponent_div_7_Template","emailForm_r3","ResendActivationLinkComponent_div_8_p_4_Template","ResendActivationLinkComponent_div_8_ng_template_5_Template","login_r4","ResendActivationLinkComponent","routerCurrentNavigation","getCurrentNavigation","onError","ResendActivationLinkComponent_app_alert_5_Template","ResendActivationLinkComponent_p_6_Template","ResendActivationLinkComponent_form_7_Template","ResendActivationLinkComponent_div_8_Template","CookiePolicyComponent","userEmail","VerifyEmailComponent","isEmailVerified","processRouteParams","emailVerified","onGetUserDataError","VerifyEmailComponent_p_4_Template","VerifyEmailComponent_p_5_Template","VerifyEmailComponent_ng_container_6_Template","HelpCenterComponent_ng_template_3_li_0_ul_3_ng_container_1_Template","recursiveList_r2","child_r1","HelpCenterComponent_ng_template_3_li_0_ul_3_Template","HelpCenterComponent_ng_template_3_li_0_Template","HelpCenterComponent_ng_container_5_ng_container_2_Template","tableOfContents","TocElement","createHeaderAnchorName","headerText","HelpCenterComponent","getTableOfContents","tocPath","insertionPoint","currentDepth","depthOfHeader","newTocElement","innerText","headerRelativeLevel","HelpCenterComponent_ng_template_3_Template","HelpCenterComponent_ng_container_5_Template","ForbiddenErrorComponent","AttributionComponent","ShortLinkComponent","shortLinkService","shortLinkNotFound","onGetShortLinkSuccess","redirectPath","onGetShortLinkError","ShortLinkNotFound","ShortLinkComponent_ng_container_0_Template","NonSsoTenantGuard","RedirectSsoTenantGuard","ssoEnabled","redirect","RedirectSsoTenantToDashboardGuard","RedirectSsoTenantToAuth0LogoutGuard","logoutParams","RedirectSsoTenantToSignupGuard","HomePageRedirectGuard","ffClientInitialized$","skipWhile","initialized","hasAccessToAdminOrganizations$","hasAccessToOverview$","hasAccessToPortfolio$","Workspaces_Read_Digital_Properties_Read","hasAccessToDashboard$","organizationPortfolioEnabled$","isOrganizationAdmin$","organization_administrator","hasAccessToAdminOrganizations","hasAccessToOverview","hasAccessToPortfolio","hasAccessToDashboard","organizationPortfolioEnabled","onTenantEnv","defaultRoute","ProjectAndTasksBreadcrumbsResolver","defaultResolver","lastBreadcrumb","ChangePasswordFromSignupComponent_form_0_ng_container_4_Template","ChangePasswordFromSignupComponent_ng_container_1_ng_container_1_Template","ChangePasswordFromSignupComponent_ng_template_2_ng_container_10_li_2_ds_icon_1_Template","ChangePasswordFromSignupComponent_ng_template_2_ng_container_10_li_2_ds_icon_2_Template","ChangePasswordFromSignupComponent_ng_template_2_ng_container_10_li_2_Template","ChangePasswordFromSignupComponent_ng_template_2_app_alert_2_Template","ChangePasswordFromSignupComponent_ng_template_2_ng_container_3_Template","ChangePasswordFromSignupComponent_ng_template_2_app_alert_9_Template","ChangePasswordFromSignupComponent_ng_template_2_ng_container_10_Template","ChangePasswordFromSignupComponent_ng_template_2_div_17_Template","ChangePasswordFromSignupComponent","ChangePasswordFromSignupComponent_form_0_Template","ChangePasswordFromSignupComponent_ng_container_1_Template","ChangePasswordFromSignupComponent_ng_template_2_Template","signUpErrorMessage","closeSignupErrorBanner","SignupFormComponent_div_0_ng_container_2_Template","SignupFormComponent_div_0_ng_template_3_Template","messageWithLoginLink_r3","userRole_r4","SignupFormField","FIRST_NAME","LAST_NAME","EMAIL","ROLE","SignupFormComponent","emailInputState","externalAuthEnabled","buildFormGroup","firstNameError$","lastNameError$","roleError$","showSignupErrorBanner","changePasswordInput","signUp","buildRequest","onSignUpError","timezone","timezoneOffset","getTimezoneOffset","defaultErrorMessage","ErrorMultipleAccountSetUpsNotAllowed","SignupFormComponent_div_0_Template","SignupFormComponent_option_35_Template","SignupFormComponent_ng_container_37_Template","tmp_19_0","closeSignupSuccessBanner","platformAction_r4","SignupPlatformUsageComponent","showSignupSuccessBanner","platformActions","packageNameToExcludedActions","PLATFORM_ACTIONS","excludedActions","platformUsage","platFormActionCheckboxGroup","onUserPreferenceUpdateSuccess","onUserPreferenceUpdateFailed","SignupPlatformUsageComponent_div_0_Template","SignupPlatformUsageComponent_ds_checkbox_9_Template","websiteAppName_r1","SignupOverviewComponent_li_8_li_5_Template","workspace_r2","websiteAppNames","SignupOverviewComponent","userWorkspaces","getUserWorkspaces","getDescription","workspaceCount","propertyCount","hasTenantLevelAccess","SignupOverviewComponent_li_8_Template","currentSignupStep","totalSignupSteps","onSignupSuccess","onPlatformUsageSubmitSuccess","onOverviewSuccess","SignupComponent_div_0_ng_container_4_Template","SignupComponent_div_0_ng_container_5_Template","SignupComponent_div_0_ng_container_6_Template","SignupComponent_div_0_span_12_Template","SignupComponent_div_0_app_signup_form_14_Template","SignupComponent_div_0_app_signup_platform_usage_15_Template","SignupComponent_div_0_app_signup_overview_16_Template","signupState","SignupState","SIGNUP","PLATFORM_USAGE","OVERVIEW","showStep","TOKEN_VALIDATION","TOKEN_INVALID","SignupComponent","IconScale","SignupComponent_div_0_Template","SignupComponent_ng_template_1_Template","tokenInvalid_r5","HealthcheckApi","organizationDomain","HealthcheckService","healthcheckApi","organizationURLAsyncValidator","orgDomain","getProtocolHostPortAndPath","orgURL","invalidOrgURL","organizationUrl","TenantLoginRedirectComponent","healthcheckService","formFieldsLabel","orgUrl","redirectionLoginUrl","MobileDigitalPropertyGuard","getMobileDigitalPropertyTypes$","getUserDigitalProperty$","mobileTypes","appRoutes","loadChildren","AdminModule","loginOrganizationRedirection","PortfolioModule","TenantGuard","Workspaces_Read","WorkspaceDashboardModule","FunctionalArea","gr_governance","SecureAction","read","DashboardModule","DigitalAssetFindingsModule","ProjectsModule","MyTasksModule","run_automated_scan","run_scan","ManualEvaluationsModule","DesignReviewsViewModule","de_results","DesignReviewsModule","de_administration","DocumentsModule","ScansNewNavModule","MobileScansModule","MobileTestingEmulatorModule","match_components","SettingsModule","IntegrationsModule","MonitoringModule","NotificationsModule","runGuardsAndResolvers","ScannableDocumentModule","pdf_testing","OrganizationModule","AcademyModule","attribution","cookie_policy","documentation","DocumentationModule","password_reset","create_new_password","CreateNewPasswordModule","verify_email","select_language","SelectLanguageModule","PagesModule","CustomAuditRulesModule","CustomSeveritiesModule","ArtificialIntelligenceModule","pathMatch","AppRoutingModule","QuicklinkModule","forRoot","enableTracing","preloadingStrategy","QuicklinkStrategy","paramsInheritanceStrategy","GoogleTagManagerService","isGtmConfigured","pushOnDataLayer","getDataLayer","dataLayer","loadGoogleTagManager","gtmScript","ifrm","visibility","noscript","processEvent","initialiseGoogleTagManager","AmplitudeService","isAmplitudeConfigured","loadAmplitudeSnippet","amplitudeScript","initialiseAmplitude","FocusedWindowClassNames","focused","blurred","FocusedWindowService","whenFocused","ServerVersionChangeModalComponent","WalkMeService","ngZone","scriptSrc","isWalkMeConfigured","onLoadWalkMeError","loadWalkMeWidget","walkMeScript","onWalkMeLoaded","_walkmeConfig","smartLoad","setGlobalVariable","currentSessionData","walkme_variable","initialiseWalkMe","SCRIPT_ID","PendoService","apiKey","isPendoConfigured","getPendoScript","pendoScriptIsInjected","pendo","initializePendo","pendoScriptIsLoaded$","registerUser","sessionData","visitor","account","TID","JobIndustryService","JobTitleService","$jobIndustry","$jobTitle","CurrentSessionDataService","SESSION_DATA_KEY","jobIndustryService","jobTitleService","walkMeService","pendoService","initialiseCurrentSessionData","isConfigured","resetCurrentSessionData","prepareRequiredData$","loadUserData$","setCurrentSessionData","jobIndustryResponse","jobTitleResponse","tenant$","workspace$","getUserPlatformUsage$","userPlatformUsage","preference","getUserProfileData","getUserTenantData","getUserSecurityGroupData","matchingJobIndustry","jobIndustry","matchingJobTitle","jobTitle","matchingUserRole","$userRole","createdDate","lastLoginDate","lastLogin","jobIndustryName","jobTitleName","roleName","signupSurvey","currentWorkspace","ws","currentDigitalProperty","workspacesCount","numDpsCurrentWorkspace","totalDigitalProperties","SFID","salesforceAccountId","userGroupId","userGroupName","escapeCSVField","staffGroupId","staffGroupName","RouteHelper","isRouteStartsWithPath$","isLoginPage$","isSignupPage$","isTenantLoginRedirectPage$","ServerVersionService","$version","versionChange","compare","SvgImagesComponent","SvgImageFiltersComponent","inLineBlock","ariaHidden","ToastComponent_ngb_toast_0_ng_template_2_ng_template_2_Template","ToastComponent_ngb_toast_0_ng_template_2_ng_container_3_Template","ToastComponent_ngb_toast_0_ng_template_2_ng_container_4_Template","toast_r2","actionLink_r6","closeButton_r5","ToastComponent_ngb_toast_0_ng_template_3_ng_container_3_Template","ToastComponent_ngb_toast_0_ng_template_3_ng_container_4_Template","toastTmpl_r4","ToastComponent_ngb_toast_0_ng_template_7_ng_container_0_Template","ToastComponent_ngb_toast_0_ng_template_2_Template","ToastComponent_ngb_toast_0_ng_template_3_Template","ToastComponent_ngb_toast_0_ng_template_5_Template","ToastComponent_ngb_toast_0_ng_template_7_Template","isTemplate","text_r9","ToastComponent","toastContainer","processNotificationOnRouteChanges","NavigationStart","clearOnRouteChange","toasts","processToast","toast","clearAll","removeHTML","handleFocus","clearFocusTrap","setFocusTrap","focusToast","modalPresent","toastElement","toastToRemove","processToastSubscription","processNotificationOnRouteChangesSubscription","ToastComponent_ngb_toast_0_Template","FeatureFlagInitializedComponent","authorized$","initialized$","FeatureFlagInitializedComponent_Conditional_0_Template","FeatureFlagInitializedComponent_Conditional_2_Template","onWorkspaceSelected","TopNavbarWorkspacesDropdownComponent_ng_container_0_ds_dropdown_1_ds_dropdown_item_5_Template","selectedWorkspaceId$","workspaces_r4","TopNavbarWorkspacesDropdownComponent_ng_container_0_ds_dropdown_1_Template","TopNavbarWorkspacesDropdownComponent","navService","workspaceLocations","activeMenuItem$","workspacesMenuItem$","urlSelectedWorkspace$","activeMenuItem","workspacePermission","onGetWorkspacesError","onGetActiveWorkspacesSuccess","activeWorkspaces","functionSortObjectsByStringProperty","getAuthUserSubscription","getActiveWorkspacesSubscription","routePath","TopNavbarWorkspacesDropdownComponent_ng_container_0_Template","isFocusing","isHovering","notificationLink","Icon","IconStyle","notificationNum_r3","TopNavNotificationsComponent","userNotificationService","notificationNumber$","TopNavNotificationsComponent_ng_container_0_Template","menuItem_r1","TopNavbarProfileDropdownComponent_ng_container_0_ds_dropdown_item_7_Template","menuItems_r2","TopNavbarProfileDropdownComponent","menuItems$","TopNavbarProfileDropdownComponent_ng_container_0_Template","TopNavbarLauncherDropdownComponent_ng_container_0_ds_dropdown_1_ds_dropdown_item_6_Template","currentActiveMenuItem$","Grid","TopNavbarLauncherDropdownComponent_ng_container_0_ds_dropdown_1_Template","TopNavbarLauncherDropdownComponent","TopNavbarLauncherDropdownComponent_ng_container_0_Template","onModalClose","childRoute_r5","openChildNavbarMenuItemsModal","MobileSecondNavbarMenuModalComponent_li_6_ng_template_2_a_0_Template","MobileSecondNavbarMenuModalComponent_li_6_ng_template_2_ng_template_1_Template","externalLink_r7","MobileSecondNavbarMenuModalComponent_li_6_button_1_Template","MobileSecondNavbarMenuModalComponent_li_6_ng_template_2_Template","links_r8","MobileSecondNavbarMenuModalComponent","parentMenuItem","_parentMenuItem","handleParentMenuItemChanged","_subscription","childrenRoutes","childNav","navLink","selectedNavItem","navMenuItem","modalRef","fullScreen","parentMenuItemLabel","hasPreviousModal","modalColorVariant","showWebAppSelector","showWorkspacesSelector","MobileSecondNavbarMenuModalComponent_app_workspaces_select_3_Template","MobileSecondNavbarMenuModalComponent_div_4_Template","MobileSecondNavbarMenuModalComponent_li_6_Template","MobileSecondNavbarMenuModalComponent_ng_template_7_Template","menuItem_r2","openSecondLevelModal","DsButtonColor","MobileTopNavbarMenuModalComponent_ng_container_3_li_1_ng_template_2_ng_container_3_Template","MobileTopNavbarMenuModalComponent_ng_container_3_li_1_button_1_Template","MobileTopNavbarMenuModalComponent_ng_container_3_li_1_ng_template_2_Template","hasAvailableChildren","menuItemLink_r5","MobileTopNavbarMenuModalComponent_ng_container_3_li_1_Template","MobileTopNavbarMenuModalComponent","getTopLevelNavItems","navItems","sortByNavigationOrder","navSupportPortalUxEnabled","childMenu","MobileTopNavbarMenuModalComponent_ng_container_3_Template","DarkBlue","logoUrl$","organizationNavigationItem_r3","DsLinkColor","CompoundTopNavbarComponent_ng_template_8_Conditional_3_ds_link_0_Template","academyNavigationItem_r4","helpMenuItem_r5","CompoundTopNavbarComponent_ng_template_8_ng_container_14_ng_container_1_ds_dropdown_item_6_Template","helpNavigationItem_r6","CompoundTopNavbarComponent_ng_template_8_ng_container_14_ng_container_1_Template","helpNavigationItem$","helpMenuItem_r7","CompoundTopNavbarComponent_ng_template_8_ng_template_16_ng_container_0_ds_dropdown_item_6_Template","oldHelpNavigationItem_r8","CompoundTopNavbarComponent_ng_template_8_ng_template_16_ng_container_0_Template","oldHelpNavigationItem$","serviceRequestMenuItem_r9","CompoundTopNavbarComponent_ng_template_8_ng_container_18_ng_container_1_ds_dropdown_item_6_Template","serviceRequestNavigationItem_r10","CompoundTopNavbarComponent_ng_template_8_ng_container_18_ng_container_1_Template","serviceRequestNavigationItem$","CompoundTopNavbarComponent_ng_template_8_ng_container_1_Template","CompoundTopNavbarComponent_ng_template_8_Conditional_3_Template","CompoundTopNavbarComponent_ng_template_8_ds_link_10_Template","CompoundTopNavbarComponent_ng_template_8_top_nav_notifications_12_Template","CompoundTopNavbarComponent_ng_template_8_ng_container_14_Template","CompoundTopNavbarComponent_ng_template_8_ng_template_16_Template","CompoundTopNavbarComponent_ng_template_8_ng_container_18_Template","topNavLogo_r12","organizationNavigationItem$","navTitle$","academyNavigationItem$","hasAccessToNotifications$","navSupportPortalUxEnabled$","oldHelp_r11","CompoundTopNavbarComponent_ng_template_10_ng_container_1_Template","openMobileMenu","Bars","CompoundTopNavbarComponent","maxNavTitleLength","hasAccessToNewDashboard$","hasAccessToNewDashboard","initNavTitle","selectedWorkspace$","topNavbarWorkspacesDropdown","mobileNavModal","showMobileNavVersion","CompoundTopNavbarComponent_ng_container_3_Template","CompoundTopNavbarComponent_ng_template_4_Template","CompoundTopNavbarComponent_ng_template_6_Template","CompoundTopNavbarComponent_ng_template_8_Template","CompoundTopNavbarComponent_ng_template_10_Template","mobileVersion_r15","desktopVersion_r14","CompoundTopNavbarUnauthenticatedComponent","CompoundNavbarLinkComponent","_isActive","captureFocusNavState","focusCaptureRequested","getState","anchorElement","digitalProperty_r2","WebsitesAppsSelectComponent","reloadDigitalProperties$","portfolioValue","webAppChanged","_subscriptions","userHasDashboardAccess","getInitialRouteForUser","selectWebAppChanged","selectedWebApp","selectWebAppTooltip","handleRouteChange","switchDigitalProperty$","digitalProperties$","updateSelectedWebApp","_selectedWorkspaceId","_selectedDigitalPropertyId","isPortfolioViewActive","loadAvailableDigitalProperties","gr_dashboard","permission","WebsitesAppsSelectComponent_option_4_Template","CompoundThirdLevelNavbarComponent_nav_0_ng_container_3_Template","mobileVersion_r3","desktopVersion_r2","item_r4","item_r5","CompoundThirdLevelNavbarComponent_ng_template_2_ds_dropdown_5_ds_dropdown_item_5_Template","activeNavItem$","menuNavbarItems","item_r6","CompoundThirdLevelNavbarComponent_ng_template_2_ng_container_6_ds_dropdown_1_ds_dropdown_item_6_Template","gearRoutes_r7","CompoundThirdLevelNavbarComponent_ng_template_2_ng_container_6_ds_dropdown_1_Template","item_r8","CompoundThirdLevelNavbarComponent_ng_template_2_compound_navbar_link_4_Template","CompoundThirdLevelNavbarComponent_ng_template_2_ds_dropdown_5_Template","CompoundThirdLevelNavbarComponent_ng_template_2_ng_container_6_Template","CompoundThirdLevelNavbarComponent_ng_template_2_compound_navbar_link_9_Template","visibleNavbarItems","gearRoutes$","navbarItems","mobileNavbarLabel$","CompoundThirdLevelNavbarComponent","navbarMenuItemsWrapper","_navbarMenuItemsWrapper","_menusWrapperResizeObserver","MOBILE_NAV_ITEMS_SHOWING_ACTIVE_WORKSPACE_NAME","MOBILE_NAV_ITEMS_SHOWING_ACTIVE_DP_NAME","ResizeObserver","run","_handleParentMenuItem","thirdLevelMenuItem","isHiddenOnCurrentScreenSize","_handleChildrenRoutesChanges","_adjustVisibleItems","invisibleMoreMenu","runChangesDetection","dropdownMenuButtonWidth","spaceBetweenItems","invisibleSpaceBetweenItems","navbarComputedStyle","remainingSpace","isTheLastItem","itemWidth","invisibleMenuItems","navbarItem","_hideOffscreenElements","navbarLink","childrenRoutes$","gearRoutes","childNavItem","mobileNavItemInTheActiveSubtree$","activeWorkspaceName$","activeDigitalPropertyName$","navItem","unobserve","CompoundThirdLevelNavbarComponent_nav_0_Template","CompoundThirdLevelNavbarComponent_ng_template_2_Template","CompoundThirdLevelNavbarComponent_ng_template_4_Template","AiChatService","sendMessage","sendChatMessageRequest","setRating","unsetRating","IChatMessageStatus","processing","message_r3","ctx_r4","retry","onRatingChange","ratingTitle","ratingOptions","AiChatComponent_div_3_ng_container_8_ds_checkboxes_feedback_6_Template","AiChatComponent_div_3_ng_container_8_ds_star_rating_7_Template","aiChatResponseScale","AiChatComponent_div_3_ng_container_7_Template","AiChatComponent_div_3_ng_container_8_Template","userName","Sparkles","FA_3X","ResponseRating","notHelpful","helpFul","AI_CHAT_SESSION_ID_KEY","AiChatComponent","aiChatService","sendMessageSubscription","textAreaContext","ThumbsUp","ThumbsDown","doSendMessage","resetIndex","addMessage","className","initChatSessionId","currentUserProfile","AiChatComponent_div_3_Template","AiChatComponent_div_4_Template","openAiChatModal","CompoundSecondLevelNavbarComponent_ng_container_0_nav_1_ng_container_4_div_1_Template","AI_CHAT_Create","CompoundSecondLevelNavbarComponent_ng_container_0_nav_1_ng_container_3_Template","CompoundSecondLevelNavbarComponent_ng_container_0_nav_1_ng_container_4_Template","mobileVersion_r4","desktopVersion_r3","aiChat","CompoundSecondLevelNavbarComponent_ng_container_0_ng_template_2_compound_navbar_link_0_Template","childrenRoutes_r6","parentMenuItem_r8","ngIf","openNavModal","CompoundSecondLevelNavbarComponent_ng_container_0_ng_template_4_ng_container_0_Template","parentMenuItem$","CompoundSecondLevelNavbarComponent_ng_container_0_nav_1_Template","CompoundSecondLevelNavbarComponent_ng_container_0_ng_template_2_Template","CompoundSecondLevelNavbarComponent_ng_container_0_ng_template_4_Template","CompoundSecondLevelNavbarComponent","handleActiveTopLevelMenuItemChanges","modalCount","CompoundSecondLevelNavbarComponent_ng_container_0_Template","showMobileNavVersion_r1","CompoundNavbarComponent_div_0_ng_container_1_Template","CompoundNavbarComponent_div_0_ng_template_3_Template","unauthenticated_r2","CompoundNavbarComponent","showMobileNavVersion$","CompoundNavbarComponent_div_0_Template","linkTarget","linkRel","removeCookiesUsageMessage","FooterComponent","appVersion","cookieMessageClosed","footerTitle","isUserAuthenticated$","useTextLight$","isLoginPage","isSignupPage","isTenantLoginRedirectPage","showAttributionLink$","onAuthenticationChangeSubscription","FooterComponent_ng_container_25_Template","FooterComponent_ng_container_27_Template","publishDate","AppLayoutComponent","loaderService","isHomePage","isLoading","setAppTitle","setTitle","setIsHomePage","setShowSkipToAiChatLink","aiChatFF$","skipToAiChatFF$","skipToAIChat","aiChatPermission$","showSkipToAiChatLink$","checks","listenToLoader","routerOutlet","AppLayoutComponent_ds_link_1_Template","AppLayoutComponent_app_global_spinner_10_Template","LoginLayoutComponent","LoginLayoutComponent_app_global_spinner_1_Template","SignupLayoutComponent","AppComponent_ng_template_2_app_signup_layout_0_Template","useSignupLayout$","appLayout_r2","routerOutlet_r3","AppComponent","googleTagManagerService","currentSessionDataService","amplitudeService","focusedWindowService","serverVersionService","zIndexGlobalTooltip","zIndexOverlay","useLoginLayout$","handleRouterScroller","loadUserDataAfterAuthenticated","NavigationSkipped","requestAnimationFrame","handleScroll","cb","scrollToAnchor","hidePageLoader","pageLoaderElement","pageLoaderStyles","loadingScript","applyTranslationsOnUIside","htmlRoot","langValue","initialSettings","platform","setApplicationIsReadyStatus","verifyConfirmationEmail","verifyConfirmationEmailNotificationId","onQueryParameterChange","switchPropertySubscription","switched","subscribeToServerVersionChange","subscribeToTenantPackageChange","routerEventsSubscription","i15","i16","AppComponent_app_login_layout_0_Template","AppComponent_ng_template_2_Template","AppComponent_ng_template_4_Template","AppComponent_ng_template_6_Template","signupLayout_r4","TokenInterceptor","isRefreshingToken","tokenSubject","addAccessToken","newRequest","setHeaders","Authorization","intercept","requestWithToken","NoAccessToDigitalProperty","processNewToken","refreshTokenResponse","newToken","errorGettingNewToken","_caught","stopRefreshingToken","BusyIndicatorInterceptor","handleBusyIndicatorForError","caught","ExtraHeadersInterceptor","FeaturesService","featuresConfig","translateMenuItems","resolveFeatures","checkTranslations","areTranslationsReadySubscription","setFeaturesConfig","getFeaturesConfig","removeFeaturesConfig","SupportService","BrowserService","waitForElementOutsideOfNgZone","stopChecking","stopCheckingForElement","clearTimeout","timeoutId","MutationObserver","processMutations","mutations","_observer","disconnect","HtmlElement","childList","subtree","waitForRenderedElementOutsideOfNgZone","loopTimeoutId","checkRenderderState","waitForElement","waitUntilRenderedElement","$clientLog","referer","stack","TrackingConsoleService","originalConsoleReferences","sendData","nativeConsole","consoleType","fnArgs","argsData","arg","BreadcrumbsComponent_ol_2_li_1_a_1_ng_template_1_Template","crumb_r1","textTranslated_r2","text_r3","BreadcrumbsComponent_ol_2_li_1_span_2_ng_template_1_Template","BreadcrumbsComponent_ol_2_li_1_a_1_Template","BreadcrumbsComponent_ol_2_li_1_span_2_Template","last_r5","BreadcrumbsComponent_ol_2_li_1_Template","ctx_r5","crumbs","BreadcrumbsComponent_div_3_ng_template_3_Template","crumb_r7","BreadcrumbsComponent_ng_template_4_ng_container_0_Template","crumb_r8","BreadcrumbsComponent_ng_template_6_ng_container_0_Template","BreadcrumbsComponent","BreadcrumbsComponent_ol_2_Template","BreadcrumbsComponent_div_3_Template","BreadcrumbsComponent_ng_template_4_Template","BreadcrumbsComponent_ng_template_6_Template","LazyLoadingStylesService","loadCss","isNativeMethod","RequestLoaderInterceptor","customHeaders","x_app_version","x_tenant_package","ServerVersionInterceptor","versionService","handleApplicationVersion","serverVersion","EapAuthTokenInterceptor","externalAuthHttpInterceptor","eapAuthInterceptor","NoWorkspaceInterceptor","handleNoWorkspacesAvailableError","ErrorUserHasNoAvailableWorkspaces","TenantPackageInterceptor","handleTenantPackage","workspace_r3","selectWorkspace","WorkspacesSelectComponent_div_0_option_4_Template","WorkspacesSelectComponent","workspaceChanged","workspacesLoaded$","getWorkSpaces","getSelectedWorkspaceId","workspacesLoaded","workspacesMap","_workspacesMenuItem","_activeMenuItem","WorkspacesSelectComponent_div_0_Template","CompoundNavbarModule","LinkedPropertyDataService","isRoot","isLogin","isShortLink","isIssueIntegrationCallback","callback","getDigitalPropertyFromParams","navigationExtras","hasLinkedPropertyParam","userDigitalProperties","userDigitalProperty","AppModule","bootstrap","Title","HttpClientModule","AuthHttpInterceptor","useClass","HTTP_INTERCEPTORS","APP_INITIALIZER","useFactory","deps","BrowserModule","BrowserAnimationsModule","AuthModule","HeaderComponent","GeneralErrorComponent","NoAccessToTenantComponent","FOUND_ERROR_TOKEN","InjectionToken","MaintenanceComponent","errorPages","UserInvalid","TenantNotFound","caughtError","MaintenanceModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","aa","aaa","wcagSeverityWeight","numOfIssues","numOfPages","severityCount","successCriteriaWithFindings","totalSuccessCriteria","componentsWithFindings","ruleStatusCount","$analyticsByRuleResultItem","ruleSummary","componentsAffected","pagesAffected","numFindings","changeInFindings","$analyticsByRuleResult","latestScanId","$pageAffectedByRuleAnalytics","add_scan_points","advanced_scan","automation","clients","component_report","configureEntities","configureJson","createToken","createOAuth2AuthorizationUrl","conformance","designReviewFindingKey","designReviewFindingCategory","designReviewFindingCommentId","designReviewFindingType","designReviewRuleId","digitalproperty","editDesignRule","ext","externalId","finishAuthorization","apiKeyName","insights","issueKey","keyId","libraryId","locale_id","manage_roles","manage_users","testGuideId","manual_request_id","mark_rule_as_false_positive","master_libraries","mobileAppsId","packageInstanceId","openapi","performance","pull","public","registered","remaining","remediatedDocumentId","scanOptionId","scan_document","scan_id","scan_session","scannableDocumentId","scannableDocumentRuleId","remediated","scheduled","screens","single_report","scan_point_report","statuses","synchronizedObjects","stream","swagger","summaryKey","sync","testAutomationJavaSdk","testAutomationJavaMobileSdk","testAutomationCSharpSdk","testAutomationJavascriptSdk","testAutomationPythonSdk","testAutomationRubySdk","tools","uploadRemediation","uploadRemediationResult","Users","userIds","user_data","guided_user_flows","userFlowTemplateId","user_id","v0","viewDesignRule","view_scan_analytics","workspaceUserId","xpath","setup_connection","pdfDiscovered","scannableDocumentPageId","scannableDocumentPage","finishOAuth2","jobs","continuumProjectId","incomingWebhooks","trackedProjects","avatarToken","errorXPath","excludeForPredefinedRoles","fromDate","jobStatus","includeDisabled","myContacts","resultsCompression","pageScore","pathRoot","salesforceId","scanFromDate","scanToDate","sortDirection","switchToWorkspace","withSummary","documentIds","pageIds","hasScope","oauth2AuthorizationResult","authorizationResult","riskScoreLevel","scheduledAt","showSuccessAlert","manualRequestResult","useScanningAgent","issueTrackingCallback","true","false","discoveredBy","elementReferenceHash","elementReferenceType","isElementReferenceEdited","expectedResult","falsePositiveData","skipReason","accessibilityImpact","ATCombination","QAComment","QARecommendation","QAScreencast","QAStatus","userImpact","schemaVersion","$auditFindingViewport","AuditFindingReferenceType","AuditFindingIssueFrequency","individual","global","AuditFindingFunctionalImpact","cognitive","physical","visual","auditory","neurological","speech","AuditFindingTaskLinkStatus","linked","unlinked","AuditFindingViewport","toReview","validationRequested","new","AuditFindingQAStatusReportLabel","AuditFindingQAStatusDisplayLabel","ActiveAuditFindingQAStatus","AuditFindingQAStatusResolved","AuditFindingQAStatusResolvedSet","AuditFindingQAStatusUnresolvedSet","ManualAuditQuery","codeSnippet","skipScanStandards","MAX_ATTACHMENTS","MAX_ATTACHMENTS_SIZE","SIZE_1_MB","VIEWPORT_WIDTH_MAX_VALUE","VIEWPORT_WIDTH_MIN_VALUE","VIEWPORT_HEIGHT_MAX_VALUE","VIEWPORT_HEIGHT_MIN_VALUE","$ruleSummary","ignored","severityNumber","triggered","testType","atCombination","complexity","isAvailableForScanning","reasonForImportance","toolVersions","weight","wcagConformanceLevel","mediaType","bestPracticeId","mapsTo","effort","$auditRuleStandard","wcag_20","wcag_21","wcag_22","best_practice","$auditRuleSearch","levels","ruleIdSubstring","ruleIdOrKeyword","ManualCustomRulePrefix","$scanAuditStandard","AuditDbStandard","$auditTool","deprecatedToolNames","defaultToolName","axe_core","equal_access","mapAuditToolCommonNamesToDisplayName","ToolCommonNameToAuditToolName","AuditTypes","accessibility_access","accessibility_ibm","accessibility_axe","accessibility_wave","AuditTypeToAuditToolName","AuditTypeToAccessibilityAuditToolName","AuditToolNameToToolCommonName","accessibility_manual","typesReducer","job","referenceHash","scanPoint","lowercaseName","lastScanStatus","lastScanDate","lastScanScore","$userFlowAction","UserFlowActionType","OPEN","CLICK","TYPE","WAIT_FOR_ELEMENT","SCAN_POINT","PASSWORD","DROPDOWN","CHANGE_INPUT","SCROLL_BY_PIXEL","KEYSTROKE","SCROLL_TO_ELEMENT","$automatedUserFlows","AUTOMATED_USER_FLOW_CHAR_LIMITS","ACTION_CHAR_LIMITS","userFlowActionTypes","AutomatedUserFlowErrorParam","DUPLICATE_SCAN","fullScan","$comment","$designReviewFindingActivity","statusUpdates","historyChanges","$designReviewFindingComment","$manualAuditIssueComment","manualAuditFindingId","deletedAt","newManualAuditIssueStatus","$taskCreateComment","$taskDeleteComment","commentType","designReviewFindingComment","manualAuditIssueComment","taskCreate","taskDelete","taskCreateDE","taskDeleteDE","EVALUATORS_NOTES_DEFAULT_VALUE","$designReviewProject","screenCount","findingsCount","createdBy","createdByUser","$designReviewProjects","$designReviewProjectSummary","$designReviewPage","imageSrc","imageId","numberOfFindings","highlightedImageId","$designReviewPages","$designReviewHeader","screenName","projectName","$designReviewDetails","$designReviewDashboard","findingsByPage","findingsByCategory","findingsByType","$designReviewFindingsByPage","$designReviewFindingsByCategory","$designReviewFindingsByType","$designReviewFinding","designReviewPage","designReviewProject","evaluatorsNotes","designReviewHighlight","linkedTask","$designReviewFindingStatusHistory","$designReviewHighlight","$designReviewFindings","$designReviewFindingFilter","DesignReviewStatus","inProgress","archived","pendingReview","DesignReviewFindingStatus","DesignReviewFindingStatusModalOptions","$designReviewFindingHistoryChange","currentStatus","previousStatus","changedFields","DesignReviewStatusSelectable","DESIGN_REVIEW_PAGE_NAME_MAX_LENGTH","$designRule","appliesTo","userExperienceDesignerWhatToDo","userInterfaceDesignerWhatToDo","contentDesignerWhatToDo","mediaDesignerWhatToDo","documentationBestPractices","successCriterionShortDescription","documentationRecommendation","developmentRecommendation","contentRecommendation","designFlaw","notDesigned","bestPractices","revision","oldRevision","$designRulesResponse","designRules","$designRuleIssueTypes","$designRuleSearch","DESIGN_RULE_NUMBER_OF_VERSION_SEGMENTS","MAX_CHAR_COUNT","MIN_CHAR_COUNT","DesignRuleIssueTypeLabels","DesignRuleSeveritySortOrder","monitoringData","noDomainRestrictions","scanResults","monitoringResults","manualIssuesBySeverity","accessibilityStatement","componentMatcherOnlyDefaultTool","userWaySiteHostName","$listScanResults","latestScanResult","previousScanResult","$listScanResult","numOfCriticalIssue","$digitalPropertyScanResults","$digitalPropertyScanResult","DigitalPropertyAction","DigitalPropertyTypeNames","website","wireframes","android","ios","website_with_mobile","other","website_no_mobile","DigitalPropertyStatus","creatorUserId","peopleToNotify","$digitalPropertyDefaultTool","AcademyAPICallError","ApiKeyIsExpired","AuditFindingModifiedByOthers","CannotDeleteLastDigitalProperty","CannotMoveScanDomainNotAllowed","ConfigPropertyNotProvided","DigitalPropertyInvalidDomains","DigitalPropertyMonitoringInvalidDomains","DigitalPropertyMonitoringInvalidThreshold","DigitalPropertyMonitoringInvalidUserIds","DigitalPropertyMonitoringHasDuplicateUserIds","DigitalPropertyMonitoringContainsNonPlatformUsers","DigitalPropertyMonitoringInvalidAlertType","MonitoringInvalidDomainSitemap","DownloadResourceNotAuthorized","EmptyFile","ErrorUpdatingPageSummary","ErrorMissingJiraIssueType","ErrorUpdatingScanSummary","ErrorScanIsLocked","ErrorAnalyticsForNonMonitoringScan","ErrorAuditExecutionFailed","ErrorApiKeyDuplicateName","ErrorApiKeyMaxExceeded","ErrorApiKeyFailedCreateRandom","ErrorCannotRenameSystemTag","ErrorCannotDeleteSystemTag","ErrorCannotDeleteTagInUse","ErrorTagNameTooLong","ErrorInvalidViewportSize","ErrorCannotAddUserToClosedPrivateWorkspace","ErrorAddingUserAsWorkspaceStaffIsForbidden","ErrorCantRemoveLastTenantWorkspace","ErrorCheckUrlFormAuthCredentialsDuplication","ErrorCreationFalsePositiveError","ErrorDashboardScanReportInvalidStatus","ErrorDeactivatingUser","ErrorDeleteRole","CannotUpdateDigitalPropertyKey","CannotUpdateProjectKey","CannotRemoveActiveUserData","CreateFindingForDisabledRule","InvalidCreateFindingRequest","UpdateFindingForDisabledRule","DuplicatedDigitalPropertyKey","DuplicatedDigitalPropertyName","ErrorDigitalPropertyNotFound","ErrorDigitalPropertyManualAuditNameDuplicated","ErrorCommentNotFound","ErrorDigitalPropertyTypesNotFound","ErrorDocumentClientMustBeWorkspaceUser","ErrorDocumentNotFound","ErrorDocumentFileNotFound","ErrorUrlIsAScannableDocument","ErrorFileExceedsLimit","ErrorScannableDocumentNumberOfFilesExceedsLimit","ErrorScannableDocumentFileIsRequired","ErrorScannableDocumentUnsupportedFileExtension","ErrorScannableDocumentDownloadUnsuccessful","ErrorAuditedDocumentNotFound","ErrorDuplicateRoleName","ErrorDuplicateTag","ErrorDuplicateWorkspaceRoleName","ErrorDuplicationCreatingDigitalPropertiesTypes","ErrorExceedScanUrlsSizeLimit","ErrorGettingCountriesList","InvalidDigitalPropertyKey","ErrorGettingUserScanOptions","ErrorGettingUserWorkspace","ErrorGettingUserWorkspaceRoles","ErrorGettingWorkspace","ErrorGettingWorkspaceRoles","ErrorInvalidApiParameter","ErrorInvalidJSONAuditRuleData","ErrorInvalidQueryParam","ErrorJobIndustryDBError","ErrorLoadingScanJobPage","ErrorLastDigitalPropertyCannotBeArchived","ErrorNonMonitoringScan","ErrorMissingAPIParameter","ErrorMissingAuditToolInDB","ErrorMissingReportBuilder","ErrorMissingConfirmEmailToken","ErrorInvalidConfirmEmailToken","ErrorReservedSystemTagUsedWhereNotAllowed","ErrorNotAllowedToModifyOtherUsersScanOptions","ErrorProcessingReportDetails","ErrorReportNotFound","ErrorCannotRerunCIToolScan","ErrorCompanyNotFound","ErrorDecodedTokenUserIdInvalid","ErrorDigitalPropertyArchived","ErrorInvalidResetPasswordToken","ErrorIncorrectToolOrVersion","ErrorMissingScanAudit","ErrorProjectNotFound","ErrorTaskNotFound","ErrorSomeTasksNotFound","ErrorSomeTasksHaveUnallowedStatus","ErrorTaskIsLinked","ErrorTaskAlreadyAssignedToSameUser","ErrorTaskAlreadyUnassigned","ErrorDuplicateIssueTrackingConnection","ErrorCannotGetJiraAuthorizeUrl","ErrorJiraAuthorizeUrlFailAuthentication","ErrorJiraInstanceUrlMismatch","ErrorCannotCreateJiraIssue","ErrorInvalidIssueTrackingConnectionInstance","ErrorCannotVerifyJiraCode","ErrorIssueTrackingConnectionNotFoundInDb","ErrorIntegrationInstanceIsNotAuthorized","ErrorCannotGetIssueTrackingProjects","ErrorCannotGetIssueTrackingProject","ErrorCannotGetJiraIssueTypes","ErrorCannotGetIssueTrackingIssueStatuses","ErrorCannotGetIssueTrackingIssueTypeStatuses","ErrorCannotGetAsanaIssueTypeStatuses","ErrorCannotGetAsanaIssueStatuses","ErrorMissingJiraInstanceOrIssueTrackingProject","ErrorMissingPropertiesScanResult","ErrorRetrieveScanDB","ErrorRoleInUse","ErrorWorkspaceClosed","ErrorWorkspaceUserNotFound","ScanOptionNotFound","ErrorScanEmailReports","ErrorScanJobExecutionFailed","ErrorScanJobInvalidMimeType","ErrorScanJobInvalidResponseCode","ErrorScanMissingAudit","ErrorScanMissingContentType","ErrorScanPageLimitTooHigh","ErrorScanStatusCode","ErrorAutomatedUserFlowTimeout","ErrorScanningJobNotFound","ErrorSystemTag","ErrorTagNotFound","ErrorUnsupportedFileType","ErrorUpdatingUserPreferences","ErrorUpdateRole","ErrorUpdatingUserProfile","ErrorUrlNotSubscribed","ErrorResolvedUrlNotSubscribed","ErrorUserDocumentNotFound","ErrorUserNotFound","ErrorUserNotFoundRetrievingLastUsedWorkspace","ErrorUserNotFoundRetrievingLastUsedProperty","ErrorUserRoleNotFound","ErrorWorkspaceNotFound","ErrorWorkspaceRoleInUse","ErrorWorkspaceDuplicateName","ExpectingString","ExpectingValidURL","ExpectingOneOf","ExpectingManyOf","CurrentUserMustBeWorkspaceMember","FailedToAuthenticateAccessToken","FailedToAuthenticateRefreshToken","FilesWithRestrictedUrls","LogInIncorrectUsernameOrPassword","LogInAccountIsLocked","ImageValidationFailed","InvalidApiKey","InvalidAuditResults","InvalidIdValue","InvalidReportFormat","InvalidRequestStructure","InvalidRequestBody","InvalidRequestBodyKeys","InvalidRuleId","InvalidRulesForTool","InvalidScanningFromDate","InvalidScanningToDate","InvalidScanningType","InvalidUrl","InvalidUrls","LocaleCreateInvalidRequest","LogInMissingLogin","LogInMissingPassword","MalformedScanningURL","ManualExcelAuditUploadFailed","ManualAuditDuplicatedIssueId","ManualAuditInvalidConformanceTarget","ManualEvaluationScopeNotFound","ManualEvaluationInvalidStatusForConformanceScoreCalculation","ManualAuditInvalidIssueIdType","ManualAuditMissingCustomRule","ManualAuditMissingFile","ManualAuditNotFound","ManualAuditIssueNotFound","ManualAuditIssueAttachmentNotFound","OnlyManualAuditScansCanBeArchived","MissingColumn","MissingEmailsInSendEmail","MissingFilesOrTextWithCustomUrls","MissingMandatoryValue","MissingScanningJobId","MissingScanningURL","MissingSheet","ScimApiTokenRequired","NoResultForAuditJob","NoteDoesNotExists","NoAccessToWorkspace","ReportErrorNoAuditDefinition","ReportErrorScanAuditNotDefined","ReportErrorReportAuditTypeIsNotDefined","RequestInvalidRole","RequiredFieldsEmptyOrNull","RequiredFields","ResourceDoesNotExists","RuleIdNotFound","RuleNotFound","ScanAuthenticationInvalidPasswordField","ScanAuthenticationInvalidSubmitField","ScanAuthenticationInvalidUsernameSubmitField","ScanAuthenticationInvalidSuccessField","ScanAuthenticationInvalidUsernameField","ScanDoesntBelongToRequestedDigitalProperty","ScanJobAborted","ScanMissingSecureWebAuthenticationData","ScanMonthlyScheduleInvalidDay","CannotCreateScheduleScanEmptyDates","ScanNotFound","AutomatedUserFlowActionFailed","ScansNotFound","ScanTagMissing","ScansForMonitoredDigitalPropertyDontExist","ScanStopDateMoreThanStartDate","ScanSummariesForMonitoredDigitalPropertyDontExist","ScanSummaryNotFound","ScanWeeklyScheduleInvalidDay","ScanYearlyScheduleInvalidDay","ScanYearlyScheduleInvalidMonth","ServiceUnavailable","SignUpMissingLogin","SignUpMissingPassword","TranslationConfigNotFound","TranslationImportInvalidFile","TranslationKeyEmptyOrNull","TranslationLangConfigAlreadyExists","TranslationLangConfigNotFound","TranslationRemoveDefaultLanguage","TranslationRemoveLastLanguage","TranslationValueEmpty","TrainingVideoNotFound","TrainingVideoDomainNotAllowed","UnableGettingUserWorkspaceRoles","UnexpectedFormatColumns","UnableSignupUnauthenticatedUser","UnableToSaveAccessToken","UnableToSaveUser","UnauthorizedDigitalPropertyId","UnknownError","UrlsWithRestrictedUrls","UserAlreadyExists","UserAlreadyExistsInWorkspace","UserEmailAlreadyExists","UserIdNotDefined","UserNotAuthorizedOnWorkspace","UserNotAuthorized","AuthUserDoesNotExist","ValidationFailed","PageSummaryNotFound","JobTitleNotFound","UserNotActive","AccountDeactivated","InvalidPasswordPattern","DigitalPropertyMonitoringInvalidHeader","DigitalPropertyMonitoringInvalidEndDate","DigitalPropertyMonitoringInvalidStartDate","RuleAuditHistoryTypeNotSupported","DigitalPropertyInvalidPagesLimit","TranslationNotFound","FieldTooLong","FieldTooShort","NoMatchingTaskFound","TaskStateTransitionNotPossible","UnauthorizedCommentDeletion","ErrorCannotGetJiraIssue","ErrorFlawNotFound","ErrorFlawPageNotFound","LogInUserNotFound","SignUpInvalidEmail","LogInUserNotActive","SignUpInvalidPassword","ErrorFlawInvalidUserStatusChange","ErrorFlawInvalidDigitalProperty","ErrorFlawInvalidScan","ErrorFlawInvalidFinding","ErrorFlawInvalidDocument","ErrorFlawAttachTaskInvalidStatus","ErrorFlawAttachTaskAlreadyLinked","ScanMissingBasicAuthData","ErrorManualFindingStatusUpdateDismissedLinkedTaskBadRequest","ErrorManualFindingStatusUpdateDismissedReasonRequiredBadRequest","ErrorCreateTaskFromDismissedManualFindingBadRequest","ErrorCreateTaskWithoutFindings","ErrorCreateTaskWithDuplicatedFinding","ErrorNoScanResultsAvailable","AuditRulesInvalidFilter","ActiveScansExceedLimit","RequestsCountExceedLimit","WorkspaceSettingActiveScansLimit","ErrorCannotDeleteProject","ErrorCannotArchiveProject","MissingAuditToolByNameAndVersion","RescanMaxLimitExceeded","MissingAuditToolForScan","ErrorReadXLSXFile","DigitalPropertyDoesNotBelongToWorkspace","ErrorUnknownSeverity","WorkspaceDoesNotBelongToTenant","NoAccessToManualFindingComment","ManualFindingCommentDoesNotBelongToManualAudit","NoStaffAccessInSsoTenant","InvalidMetricsUpdate","ErrorTenantInvalidSubdomain","ErrorTenantDuplicateSubdomain","UserDoesNotBelongToTenant","ErrorDuplicateResolvedUrl","ErrorRequestForbiddenInTenantless","ErrorRequestForbiddenOutsideTenantless","UrlDoesntBelongToDigitalProperty","ErrorInvalidSitemapFormat","ErrorInvalidSitemapUrl","ErrorActivityLogsDoNotBelongToUserWorkspace","ErrorActivityLogsInaccessibleToUser","ErrorDocumentDigitalPropertyMustBeInWorkspace","ErrorDocumentDigitalPropertiesShouldNotBeEmpty","ErrorDocumentTitleNotBeEmpty","ErrorDocumentDeliveryDateInvalidFormat","ErrorUrlHasEmptyContentType","ErrorInvalidAdditionalEmails","OnlyTenantlessAccess","ErrorLoginToTenantForbidden","ErrorCannotAccessFile","InternalServerError","ExternalAuthVerificationError","ErrorCannotCreateAsanaConnection","ErrorCannotCreateAzureConnection","ErrorInvalidAzureConnectionInstance","ErrorInvalidAzureConnectionPAT","ErrorDuplicateAzureConnection","ErrorInvalidAsanaConnectionInstance","ErrorInvalidAsanaConnectionPAT","ErrorDuplicateAsanaConnection","ErrorCannotGetAzureIssueTypes","ErrorCannotGetAzureIssueTypeStatuses","ErrorCannotGetAzureIssueStatuses","ErrorInvalidIPAddress","ErrorDuplicateUserFlowTemplateName","ErrorEmptyUserFlowTemplateName","ErrorMinimumUserFlowScanPointsRequired","ErrorDuplicatePageName","ErrorPageScanNullResult","PageNotFound","PageAlreadyScanned","PageDoesNotBelongToDigitalProperty","NoAccessToPage","UserFlowTemplateNotFound","NoAccessToUserFlowTemplate","UserFlowTemplateDoesNotBelongToDigitalProperty","UserFlowTemplateNotFoundByName","ScannableDocumentNotCorrectStatus","ScannableDocumentNotFound","ScannableDocumentNotScanned","ErrorScannableDocumentRuleNameNotFound","ErrorScannableDocumentRuleIdNotFound","ErrorScannableDocumentPageIdNotFound","ErrorInvalidFile","ErrorInvalidDocumentScanResultStatus","ErrorMissingScannableDocumentPage","ErrorInvalidScannableDocumentMetadata","ScreenshotResultsNotFound","UserEmailVerificationTokenInvalid","ProjectDoesNotBelongToWorkspace","ProjectInactive","ErrorCannotGetJiraRequiredFields","ErrorCannotGetAzureRequiredFields","ErrorUnsupportedIssueTrackingIntegrationType","ErrorInconsistentIssueTrackingStatusMapping","ErrorInvalidStatusMapping","ErrorCannotGetJiraProjectUsers","CrawlPagesRequestNotFound","ErrorCannotGetJiraLabels","ErrorUploadingFile","UnexpectedResponseFromIssueTracking","NoAccessToDocument","NotImplemented","DocumentDoesNotBelongToWorkspace","InvalidScanningTypeSourceForPushScan","InvalidMobilePlatformDetailsForPushScan","RequiredMobilePlatformDetailsForPushScan","ErrorUnsupportedDocumentScanner","InvalidScanTagForPushScan","ErrorMethodNotAvailableForJira","ErrorMethodNotAvailableForAsana","ErrorMethodNotAvailableForAzure","CannotMigrateWorkspaceWithNoDPToTenant","ErrorInvalidDesignRuleDataJSON","ErrorInvalidDesignRuleId","ErrorInvalidDesignRuleField","ErrorMatchComponentNameNotUnique","ErrorMatchComponentCssSelectorNotUnique","MatchComponentNotFound","MatchComponentNotFoundByName","FieldNotMatchingRegex","FieldMatchingRegex","FieldContainsInvalidCharacters","FieldMustBeString","ErrorNumberOfFilesExceedsLimit","ErrorNumberOfNewFilesExceedsLimit","InvalidBoundingBox","InvalidIssueType","InvalidFindingStatus","ErrorDesignReviewProjectNotFound","ErrorDesignReviewProjectNotCompleted","ErrorDesignReviewPageNotFound","ErrorDuplicateDesignPageName","ErrorDesignReviewCannotModifyArchivedProject","ErrorDesignReviewCannotModifyCompletedProject","ErrorDesignReviewFindingsReportNotYetGenerated","ErrorDesignReviewFindingNotFound","ErrorDesignReviewFindingCommentNotFound","ErrorDesignReviewNumberOfFindingsExceedsLimit","ErrorDesignReviewNoAccessToProject","ErrorDesignReviewNoAccessToPage","ErrorDesignReviewNoAccessToFinding","ErrorCannotEnableMfaOnTenantWithSso","ErrorMfaAlreadyEnabled","ErrorGenerateMfaSecretForUserFailed","ErrorVerifyMfaTokenFailed","ErrorInvalidInputForDecryption","EncryptionError","DecryptionError","PushSaveResultsScanCompleted","PushShouldHaveCompleteRequestBody","ErrorInvalidResourceId","FieldBelowMinimum","FieldAboveMaximum","ErrorOnlyOneRemediatedFileUploadAllowed","ErrorMaxNumberOfPdfPagesTestedExceeded","ErrorUpdatingPdfPagesTestedCount","ErrorScannableDocumentAlreadyHasRemediatedDocument","ErrorScannableDocumentNotAwaitingRemediation","DuplicateScanPointNotAllowed","CssSelectorInvalid","SecurityRoleForPackageNotFound","ErrorCreateSecurityGroupWithoutName","ErrorCreateSecurityGroupWithoutRoles","ErrorCreateSecurityGroupWithoutEntities","ErrorCreateFromSecurityGroupTemplatesEntityLevelMismatch","ErrorSecurityGroupNotFound","ErrorSecurityGroupTemplateNotFound","ErrorPredefinedSecurityGroupNotFound","InvalidDesignEvaluationFindingField","ErrorScannableDocumentNumberOfPagesNotFound","ErrorExcludeUrlOneToOneCorrespondenceNotPresent","InvalidHighlight","AutomatedUserFlowNotFound","AutomatedUserFlowNotValid","TenantMissingAcademyIntegration","TenantUserMissingAcademyIntegration","TenantUserMissingAcademyTenantIntegration","AcademyNotFoundError","AcademyAlreadyAssignedToAnotherTenant","AcademyWithGivenNameAlreadyExists","AcademyPanoramaWithGivenSkuNotFound","AcademySublicenseWithGivenAttributesNotFound","AcademyContentTagNotFound","AcademyDefaultContentTagNotFound","ErrorDesignReviewHighlightNotFound","ErrorDesignReviewNoAccessToHighlight","DesignReviewFindingRevisionNotMatch","ScannableDocumentInvalid","DuplicatedDesignRuleId","IncorrectValue","InvalidAMPJSONUpload","PackageNotFound","PackageInstanceNotFound","TenantAlreadyHasPackageInstance","ThisIsNotAValidImage","FieldMustBeUnixTimestamp","SalesforceAccountNotFound","DuplicateTenantSalesforceAccountId","FeatureFlagUnauthorized","InvalidStaffSecurityGroupName","DigitalPropertyUsageLimitReached","LegacyEaPackageUnavailable","LegacyEaPackageUnavailableForCreate","ScanIdsLengthDifferentFromToolIdsLength","SystemUserNotAllowedForOperation","UserEmailDoesNotExistInThePlatform","ErrorInvalidWebhookEntities","AmpServiceUserNotFound","NewPasswordCannotBeUsedAgain","ExternalIdExceedsMaximumLength","ExternalIdRequestDuplicate","ExternalIdAlreadyExists","ZendeskIntegrationError","MobileAppsIntegrationInternalError","MobileAppsIntegrationError","MobileAppSessionNotFound","MobileAppsIntegrationNotConfigured","MissingScreenshotAltText","ManualFindingExternalIdNotFound","UpdateFindingEmptyFields","StaffGroupsNotFound","ErrorEnvironmentNameNotUnique","ErrorEnvironmentURLNotUnique","ErrorEnvironmentInvalidURLDomain","ExternalIdRequired","ErrorContinuumProjectIdInvalid","FileUploadRequired","InvalidUpdateEmailsFileFormat","DuplicateEmailsInUpdateEmailsFile","UnequalLengthInUpdateEmailsFile","EmailInBothTargetAndSourceInUpdateEmailsFile","EmptyUpdateEmailsFile","MissingScope","TestGuideNotFound","ErrorCannotSendAiChatMessage","ErrorAiChatMessageNotFound","AiDataSummaryNotFound","ErrorGeneratingAiDataSummary","DigitalPropertyMetricsInvalidScheduledAt","IllegalTestGuideModification","IllegalAddingTestGuide","ErrorMissingIssueId","ErrorIssueIdAlreadyLinked","ErrorCannotFindJiraIssue","ErrorCannotCreateWorkspaceDefaultDP","ErrorDigitalPropertyDetailsRequired","CloudsmithIntegrationError","ErrorIssueProjectMismatch","ErrorIssueLinkedToOtherProject","ErrorRuleLibraryForCodeNotFound","ErrorMediumForCodeNotFound","InvalidUserRoleId","CustomRuleNotFound","ErrorCustomAuditRuleIdNotUnique","InvalidWorkbook","TaskNotFound","ErrorCannotUpdateJiraWebhook","ErrorIssueKeyDuplicated","ErrorValidationIssueLinkRequestFields","ScimDisabled","NonSSOTenantsCannotUseScim","ErrorCannotGetAsanaConfigurableFields","ErrorCannotGetAsanaProjectUsers","UserNotScim","UserNotUnassignedScim","ScimPatchOperationValueIsRequired","ScimPatchOperationValueTypeInvalid","ManualRequestNotFound","StaffUserCannotBeUpdated","StaffUserCannotBeRetrieved","ErrorFetchingFile","AutomatedUserFlowUsageLimitReached","PageEvaluationTimeout","PackageAddonNotFound","UserWayAPICallError","DigitalPropertyMissingUrl","UserWaySiteMaxExceeded","ErrorDigitalPropertyNotWebTyped","CannotModifyEvaluation","UserWayHostNameDuplicated","CustomSeveritiesLimitReached","NotEnoughCustomSeveritiesToUpdateRanks","ErrorCustomSeverityDoesNotExist","DuplicateFieldValue","CannotModifyEvaluationSeverity","FileTypeNotAllowed","FileSizeTooLarge","WorkspaceNotFoundForScan","MobileAppScanFailed","DigitalPropertyNotMobile","UnknownScanStatus","InvalidStatusTransition","ForbiddenInWebDP","ForbiddenInMobileDP","ScanningAgentRequiresEncryptionKey","DigitalPropertyTagLimitExceeded","DigitalPropertyTagsContainDuplicates","includeEssential","auto","embeddings","viewed","_migrated","$flawPage","urlHash","firstScan","lastScan","lastMonitoredScan","flawsCount","reOpen","authorizeUrl","issueIntegrationIssueStatus","issueIntegrationIssueStatusId","eapTaskStatus","linkedProjects","personalAccessToken","issueIntegrationIssueTypeId","tenantWorkspaceIds","tenantWorkspaces","returnToUrl","$statusMapping","eapProjectId","$issueIntegrationProject","uuid","self","projectTypeKey","$linkIssueIntegrationRequest","connectionStatus","authorized","unauthorized","interrupted","pushToIssueTrackingForm","issueTrackingIssueType","$issueIntegrationConfiguredFields","fieldsConfig","$issueIntegrationCallbackStatus","created","$issueTrackingConnectionConfig","applicationLink","applicationName","applicationType","serviceProviderName","sharedSecret","requestTokenURL","accessTokenURL","authorizeURL","consumerName","publicKey","$authorizationType","oauth1","oauth2","$taskTransitionType","allIssueTypes","specificIssueType","SIZE_60_MB","OAuth2CallbackResultOK","AuthorizationResultOK","BACKSPACE","TAB","ENTER","SHIFT","ESCAPE","PAGE_UP","PAGE_DOWN","END","HOME","UP","DOWN","conformanceLevelAndVersion","age","matchAllAffectedDisabilities","multipleDisabilitiesAffected","evaluationStandard","$formatColumns","singleDescriptionColumn","separateColumns","ManualEvaluationAuditType","RuleAuditHistoryAction","statusUpdate","jpg","jpeg","png","ALLOWED_MANUAL_AUDIT_ATTACHMENT_IMAGES_EXTENSIONS","$manualAuditResponse","manualAudits","archivedBy","issuesCount","testGuide","evaluationStandards","conformanceScores","$manualAuditCreate","MAX_UPLOAD_SIZE","web","web_ea","iOS","EvaluationStandards","WCAG_v20_A","WCAG_v20_AA","WCAG_v20_AAA","WCAG_v21_A","WCAG_v21_AAA","WCAG_v22_A","WCAG_v22_AAA","EVALUATION_STANDARDS","android_la","ios_la","hardware_la","fromEntries","EVALUATION_STANDARD_TO_AUDIT_STANDARD","IDENTIFIER_TO_EVALUATION_STANDARDS","TEXT","XML","PPT","PPTX","POTX","PPSX","DOC","DOCX","DOTX","XLTX","PDF","ODT","ODS","JPG","BMP","ICO","TIFF","WEBP","SVG","GIF","APK","IPA","ZIP","SupportedDocumentMimeType","SupportedManualAuditAttachmentMimeType","SupportedManualAuditAttachmentExtensions","SupportedDesignReviewScreenMimeTypes","SupportedDesignReviewScreenExtensions","SupportedScreenshotMimeTypes","SupportedComponentImageMimeTypes","SupportedComponentImageExtensions","SupportedMobileAndroidMimeTypes","SupportedMobileAndroidExtensions","SupportedMobileIOSMimeTypes","SupportedMobileIOSMimeTypesLocal","SupportedMobileIOSExtensions","SupportedMobileIOSExtensionsLocal","SupportedManualAuditUploadMimeType","SupportedManualAuditUploadExtensions","SupportedChangeEmailsMimeType","SupportedChangeEmailsExtensions","$compoundNotificationSettings","issueIntegrationTaskCommentsReflected","taskAssigneeChanged","findingDismissed","taskCreatedFromFinding","$notificationSettings","commentAddedToManualFinding","commentAddedToProjectTask","projectTaskStatusChanged","manualFindingStatusChanged","documentAddedToDigitalProperty","documentRemovedFromDigitalProperty","documentUpdatedInDigitalProperty","scanPerformedAndCompleted","monitoringScanScoreDropFromPrevious","monitoringScanScoreDrop","monitoringScanComplete","scanReportEmailed","userJoined","remediatedPdfUploaded","remediationRequestRevokedForDocument","taskSupportRequest","asyncReportGenerationCompleted","allNotificationsId","workspaceActivityLogEvent","commentAddedToIssueIntegrationTask","commentUpdatedOnIssueIntegrationTask","commentDeletedFromIssueIntegrationTask","taskAssigned","taskReassigned","taskUnassigned","manualFindingDismissed","automatedFindingDismissed","taskCreatedFromManualFindings","taskCreatedFromAutomatedFindings","FunctionalAreaSetting","monitoringPagesLimit","pdfPagesLimit","academySeatsLimit","monitoringPagesLimitWithFF","userWayWebsiteLimit","$package","roleIds","$packageInstance","packageDetails","originalPackage","packageAddonIds","$packageAddon","availableIn","LegacyEA","Essentials_v2024","Accelerate_v2024","Enterprise_v2024","Basic_v2025","Essentials_v2025","Accelerate_v2025","Enterprise_v2025","PackageAddonNames","Self_Manual_Testing","Native_Mobile_Testing","Custom_Severities","Custom_Rule_Library","Scanning_Agent","UserWay_Integration","Scan_Rules_Curations","Issue_Tracking_Integrations","Scanning_And_Reporting_APIs","Common_Findings","V2025_PACKAGE_NAMES","SCREENSHOT_MAX_FILE_SIZE","PlatformAction","SCANS","MONITORING","MANUAL_EVALUATIONS","BROWSER_EXTENSION_SCANS","ISSUE_TRACKING","TASKS","PDFS","DESIGN_EVALUATIONS","issueIntegrationStatusMappingId","issueIntegrationConfiguredFieldsId","issueIntegrationConfiguredFields","issueIntegrationProjectInstance","ProjectAction","delete_with_linked_task","$projectWithStatusMapping","issueIntegrationStatusMapping","PDF_Testing_Read_No_Entity_Level","PDF_Testing_Create","PDF_Testing_Update","PDF_Testing_Delete","PDF_Testing_And_Remediation_Read","pdf_remediation","PDF_Testing_And_Remediation_Read_No_Entity_Level","PDF_Remediation_Create","PDF_Administration_Create","pdf_administration","PDF_Administration_Delete","pm_tasks","PM_Tasks_Create","PM_Tasks_Update","PM_Tasks_Delete","PM_TaskComments_Read","pm_task_comments","PM_TaskComments_Create","PM_TaskComments_Delete","PM_TaskAdmin_Update","pm_task_admin","api_keys","API_Keys_Create","API_Keys_Delete","API_Keys_AMP_Create","API_Keys_AMP_Read","API_Keys_AMP_Delete","API_General_APIs_Read","api_general_apis","API_General_APIs_Read_WS","API_General_APIs_Read_DP","Evaluation_Rules_Update","DE_Administration_Delete","DE_Administration_Update","DE_Administration_Update_DP","DE_Administration_Create","gr_organization_dashboard","ti_issue_tracking_basic","TI_Issue_Tracking_Administration_Delete","ti_issue_tracking_administration","TI_Issue_Tracking_Basic_Update","TI_Issue_Tracking_Configure_Additional_Fields_Update","ti_issue_tracking_configuration_additional_fields","TI_Issue_Tracking_Administration_Update","TI_Issue_Tracking_Administration_Create","ti_tools_and_extensions","TE_Test_Automation_Read","te_test_automation","TE_Tools_Extensions_Testing_Read","te_tools_and_extensions_testing","ti_scim_config","TI_SCIM_Config_Read","sdk","SDK_Create","Master_Library_Create","Master_Library_Update","Master_Library_Delete","Scan_Tags_Create","Scan_Tags_Update","Scan_Tags_Delete","mt_manual_audits","MT_Manual_Audit_Evaluations_Read","mt_manual_evaluations","MT_Manual_Audit_Read_DP","Manual_Audit_Update_DP","Manual_Audit_Delete_DP","MT_Manual_Audits_Create","MT_Manual_Audits_Update","MT_Manual_Audits_Create_Update","MT_Manual_Audits_Download","MT_Manual_Audits_Delete","MT_Comments_Read","mt_comments","MT_Comments_Create","MT_Comments_Delete","MT_Comments_Admin_Delete","mt_comments_admin","Tenants_Create","Tenants_Update","Tenants_Create_Update","Admin_Tenants_Read_Workspaces_Read","Pages_Create","Pages_Update","Pages_Create_Update","Pages_Read_Create","Automated_Flows_Create","automated_flows","Automated_Flows_Update","Automated_Flows_Delete","pm_projects","PM_Projects_Tasks_Read","PM_Projects_Tasks_Read_No_Entity_Level","PM_Projects_Create","PM_Projects_Update","PM_Projects_Delete","Documents_Create","Documents_Update","Documents_Delete","AT_Run_Automated_Scans_Read","at_run_automated_scans","AT_Run_Automated_Scans_Create","at_scans","AT_Scans_Update","AT_Scans_Download","AT_Scans_API_General_APIs_Read","at_mobile_scans","AT_Mobile_Scans_Download","AT_Mobile_Scans_Create","AT_Mobile_Scans_Update","AT_Mobile_Scans_Delete","at_mobile_apps","AT_Mobile_Apps_Create","AT_Mobile_Apps_Update","AT_Mobile_Apps_Delete","AT_Mobile_Emulator_Scans_Create","at_mobile_emulator_scans","AT_Mobile_Emulator_Scans_Update","AT_Mobile_Emulator_Scans_Delete","AT_Mobile_Emulator_Scans_Download","MT_Manual_Evaluation_Create","MT_Manual_Evaluation_Comment_Create","MT_Manual_Evaluation_Comment_Read","MT_Manual_Evaluation_Update_Manual_Audit_Read","MT_Manual_Evaluation_Update","MT_Manual_Evaluation_Delete","MT_Manual_Evaluation_Comment_Delete","MT_Manual_Evaluation_Comment_Admin_Delete","MT_Manual_Evaluation_Download","MT_Manual_Evaluation_Update_Delete","Component_Matching_Create","component_matching","Component_Matching_Update","Component_Matching_Delete","User_Groups_Read_Staff_Groups_Read","user_groups","staff_groups","User_Groups_Create","User_Groups_Update","User_Groups_Delete","Staff_Groups_Create","Staff_Groups_Update","Staff_Groups_Delete","Tenant_Switcher_Read_No_Entity_Level","tenant_switcher","User_Flows_API_Read","api_user_flows","User_Flows_API_Create","User_Flows_API_Download","Pages_API_Read","api_pages","Pages_API_Create","gu_global_users","Global_Users_Update","Global_Users_Download","Global_Users_All_Tenant_Admin_Read","gu_all_tenant_admin","UM_User_Administration_Read","um_user_administration","UM_User_Administration_Create","UM_User_Administration_Create_No_Entity_Level","UM_User_Administration_Update","UM_User_Administration_Update_Tenant_Entity_Level","UM_User_Administration_Create_Update","um_organization_administration","UM_Organization_Administration_Update","UM_User_Administration_Update_No_Entity_Level","UM_User_Administration_Create_Update_No_Entity_Level","UM_User_Administration_Delete_No_Entity_Level","Manual_Evaluations_API_Read","api_manual_evaluations","Manual_Evaluations_API_Read_DP","Manual_Evaluations_Read","Manual_Evaluations_Create","Manual_Evaluations_API_Create","Manual_Evaluations_API_Update","Manual_Evaluations_API_Delete","Automated_Scans_API_Read","api_automated_scans","Automated_Scans_API_Update_DP","Automated_Scans_API_Read_Tenant","Automated_Scans_API_Read_DP","Automated_Scans_API_Create","Tenant_Admin_API_Read","api_tenant_admin","Tenants_API_Read","api_tenants","Workspaces_Create","Translations_Update","Translations_Delete","Translations_Create","Translations_Download","Digital_Properties_Read","Digital_Properties_Create","Digital_Properties_Update","Digital_Properties_Delete","Workspaces_Read_No_Entity_Level","Workspaces_Read_Digital_Properties_Read_No_Entity_Level","Workspaces_Download","GR_Governance_Download","GR_Monitoring_Create","gr_monitoring","GR_Monitoring_Update","GR_Monitoring_Create_Update","GR_Monitoring_Delete","GR_Governance_Create","Admin_Academy_Create","Admin_Academy_Read","Admin_Academy_Update","DesignRuleCategories_Read","Service_Support_Create","service_support","Validation_Testing_Create","validation_testing","Invalid","Webhook_Create","webhook","Webhook_Delete","Webhook_Update","Environment_Create","preprod_testing_env_settings","Summary_Snapshot_Api_Create","summary_snapshot_api","ai_chat","Tenant_Rule_Library_Create","trl_custom_rule_library_management","Tenant_Rule_Library_Update","Tenant_Rule_Library_Delete","SCIM_API_CREATE","api_scim","SCIM_API_UPDATE","SCIM_API_DELETE","SCIM_API_READ","Manual_Request_Update","request_manual_evaluation","UserWay_Integration_Create","UserWay_Integration_Delete","CustomSeverities_Create","CustomSeverities_Update","CustomSeverities_Delete","cf_common_findings","Common_Findings_Update","Common_Findings_Delete","Common_Findings_Tags_Create","cf_common_findings_tags","Common_Findings_Tags_Read","Common_Findings_Tags_Update","Common_Findings_Tags_Delete","ai_features","AI_Features_Create","AI_Features_Update","riskScore","riskLegacyScore","previousSnapshotId","previousSnapshot","$wsMetrics","dpCount","$tenantMetrics","mostViolatedSuccessCriteria","mostViolatedCategories","mostResolvedDps","allFindings","unresolvedFindingsBySeverity","defaultPolicyOverdueFindingsBySeverity","userPolicyOverdueFindingsBySeverity","$mostResolvedDp","RiskScoreLevelThresholds","autoResolvedFindings","manualResolvedFindings","autoPercentageResolved","manualPercentageResolved","autoCriticalOverdue","autoHighOverdue","autoLowOverdue","manualCriticalOverdue","manualHighOverdue","manualLowOverdue","totalCriticalOverdue","totalHighOverdue","totalLowOverdue","userPolicyAutoCriticalOverdue","userPolicyAutoHighOverdue","userPolicyAutoLowOverdue","userPolicyManualCriticalOverdue","userPolicyManualHighOverdue","userPolicyManualCustom1Overdue","userPolicyManualCustom2Overdue","userPolicyManualLowOverdue","userPolicyTotalCriticalOverdue","userPolicyTotalHighOverdue","userPolicyTotalCustom1Overdue","userPolicyTotalCustom2Overdue","userPolicyTotalLowOverdue","bulkOperationId","selectorsHash","bulkDismiss","auditFindingId","legacyEa","android_ea","ios_ea","pdf_la","embedded_software_la","windows_software_la","kiosks_la","microsoft_word","microsoft_excel","microsoft_powerpoint","macos_software","organization_custom","createdAtTimezoneOffset","customHeight","customWidth","discoverScannableDocuments","importLinksFiles","listOfUrls","automatedUserFlowId","$scanDefaultConformanceLevel","problem","totalIssues","isNew","isDefaultOptions","defaultScanOptions","$addScanOptions","algorithm","triggeredMetrics","triggeredMetric","summaries","resolvedFindingsSinceLastScan","$componentPageSummary","scanAudit","applicableWeight","weightedPassedRule","ScoringAlgorithm","average","simpleRatio","weightedAverage","adjustedWeightedAverage","SCORE_ADJUSTMENT_MULTIPLIER","lastUsed","scanCount","Monitoring","MonitoredPage","GuidedUserFlow","reservedSystemTags","TagNameMaxLength","auditsId","authPassword","authType","authUser","brokenLinks","contentType","contextDescription","crawled","customFiles","errorReason","findingsArchival","findingsArchivalDate","manualUploadFiles","manualAuditStatus","previousScans","pagesWithErrors","processingUrls","resolvedUrl","resourceType","scheduleId","emailsToNotify","selectedAudits","skippedPages","crawlingStatus","totalCrawledPages","totalScannedPages","urlResolved","isQuickMonitoring","automatedUserFlowError","$automatedUserFlowError","actionId","actionType","actionValue","actionCssSelector","mobileAppVersion","mobilePlatformName","mobilePlatformVersion","$scanScope","$pageWithComponents","componentIds","$scanAutomatedOptions","$brokenLinkData","responseCode","$scanMobile","platformName","platformVersion","deviceManufacturer","deviceModel","deviceName","deviceType","appIdentifier","continuumSdkVersion","appiumAutomationName","$scanMobilePlatformName","ciTool","automatedScanningTypes","rawResultsScanningTypes","repeat_every","ScanJobStatus","ScanOrigin","public_api","developer_tools","browser_extension","mobile_sdk","mobile_emulator","onHold","readyToStart","SIZE_5_MB","isServiceGroup","userUpdatedAt","$securityGroupUser","securityGroupId","$securityGroupUsers","$upsertSecurityGroup","$createUsersRequest","$assignUsersRequest","CREATE_USERS_MAX_EMAILS_LIMIT","csm","onboarding_manager","technical_lead","qa_tester","product","amp_tenant_service_group","accounts_provisioned_via_scim","scim_service_group","$securityRole","isStaffRole","isServiceRole","$securityRoles","$securitySet","byEntityLevels","byFunctionalActions","application","governance_and_reporting","ti_issue_tracking_configuration","project_management","manual_testing","automated_testing","at_scanning_agent","be_automated_test","be_manual_test","be_user_flows_api","global_users","user_management","preprod_testing","preprod_testing_reporting","preprod_testing_scan_results","tenant_rule_libraries","artificial_intelligence","A","AA","AAA","char","new_line","mdash","attachmentFileOriginNames","creatorId","issueIntegrationUrl","issueIntegrationKey","issueIntegrationStatus","issueIntegrationSummary","issueIntegrationAssignee","issueIntegrationPriority","linkedFlaws","lastSynchronized","issueIntegrationSyncStatus","taskIssueIntegration","assigneeId","assignee","asanaWebhookSecret","unsuccessfullyLinkedIssueIntegrationKey","integrationRequestedBy","$taskWithTargetStates","targetStates","reviewInProgress","$testingEnvironment","staging","development","TESTING_ENVIRONMENTS","TaskCommentType","taskDeleted","$taskComment","issueIntegrationId","externalAuthorName","externalDelete","newAssignee","previousAssignee","designReview","maxPdfTests","monitoringPagesPerDigitalPropertyLimit","pdfPagesTestLimit","salesforceAccount","salesforceAccountName","scimEnabled","oldMonitoringPagesPerDigitalPropertyLimit","userWayOrganizationId","userWayOrganizationState","userWayOrganizationAccountCode","scanningAgentEncryptionKey","artificialIntelligence","$tenantMetadata","packageData","$tenants","$tenantUser","$tenantUserIntegrations","$artificialIntelligence","activated","activatedBy","activatedOn","SSO_REMOVAL_REASON_CHAR_LIMIT","DefaultTenantSeverities","CUSTOM_SEVERITY_MAX_CHAR_COUNT","CUSTOM_SEVERITY_LABEL_ALLOWED_CHARS","$testGuide","testCategories","conformanceLevelIds","conformanceLevels","TestGuideCodeName","WCAG20","WCAG21","WCAG22","Impact_test","WCAG20_EA","WCAG21_EA","WCAG22_EA","IOS_LA","Android_LA","Hardware_Section508","PV_WEB","WEB_LA","thumbnailId","thumbnail","FileType","json","SIZE_4_GB","userWorkspacesActivityWidget","workspaceActivityWidget","manualAuditIssues","notificationsSettings","projectTasks","conformanceReport","issueFilter","prioritization","notificationTypes","_entriesAmount","applicationPermissions","companyDepartment","country","createdVia","deactivationAccountReasons","invitation","isResetPasswordTokenValid","lastActiveSession","lastPasswordChange","loginFailures","mfaSecret","mfaStatus","phoneNumber","workspacePermissions","verificationEmailExpirationDate","lastUsedResources","recentResourcesByTenant","previousPasswords","scimAttributes","$userSearch","$getOrCreateUserResponse","existingUsers","newUsers","EmailUpdateError","USER_NOT_FOUND","EMAIL_ALREADY_EXISTS","STAFF_USER","USER_EMAIL_VALIDATION_REGEX","workspaceActivityLogs","viewedBy","taskCreatedFromDesignReview","workspaceUserRemoved","WorkspaceActivityLogSearchFields","userDisplayNameFilter","$workspaceFindingCount","mostCompromisedDigitalProperties","previousData","mostViolatedSuccessCriteriaByStandard","countByActiveDigitalProperty","agingUnresolvedIssues","a11yPolicyThresholds","agingUnresolvedIssuesBySeverity","totalUnresolvedIssuesBySeverity","invitationDate","userDisplayName","workspaceRolesIds","currentlyInUse","userToAdd","userPermissions","shared","$workspaceSummary","totalScans","totalManualEvaluations","$remediationProgressCount","resolved","unresolved","$getWorkspaceDashboardResponse","dashboardData","updateRequestedAt","$digitalPropertyFindingCount","rankDelta","weeksInRank","userPolicyAgingUnresolvedIssuesBySeverity","$mostViolatedCounts","criticalCount","RuleTestType","automatic","guided_automatic","AccessEngineTestOutcome","na","workspaceMigration","workspaceMigrationResync","salesforceIdLookup","createLegacyEA","tenantDashV1","newPackageMonitoringLimits","auditOnlyPackage","bulkDpWithCustomMonitoringSettings","pdfRemediationTestCount","eap_22459","issueTrackingRedirect","beRecorder","dcaDownload","mobileTestingUseSauceLabs","requestLiveConsultation","skilljarIntegration","scanWithRobotstxt","labeVT","packages_2025","navigationRefresh2025","manageIssueTrackingConnectionInProjects","mobileTestingSupportRealDevices","digitalPropertyTagging","revertFlag","IssueTrackingSyncStatus","pendingCreation","linking","externalStatus","onlyAssigned","populateDigitalProperty","SharedAuditStandardsUtility","filterStandards","nameVersionLevel","compareStandard","compareLevel","compareVersion","getScoreImpacts","weightedAverageDivisor","rulesImpact","hasWcag","getTotalIssuesCount","getAuditIssueViewStatus","computeAuditIssuesViewStatus","getAuditIssueViewStatusForRuleResult","hasFailures","checkIssuesViewStatus","numFailures","numIgnored","getFilteredByStatus","sortFields","comparatorResults","sortField","getTopByStatus","topCount","addBaseUrl","getTotalPages","getScanHealth","getSeverityCount","displayCustomSeverity","auditForTool","addSeverityCount","ruleInfo","getRuleStatusCount","addIssueViewStatusCount","ruleStatus","constructAuditIssuesViewLink","hasFlawPageId","isUserFlowScanPointSummary","hasUrl","buildMobileScanResultLink","buildMobileEmulatorScanResultLink","buildFlawPageScanResultLink","buildComponentReportLinkForMonitoring","buildComponentReportLink","buildScanPointReportLink","buildSingleReportLink","buildAggregatedReportLink","getSummaryQueryParams","utility","scanAuditsObj","scoreData","successCriteriaInfo","componentMetrics","getTotalComponentsWithFindings","componentMetric","componentSummaryMetric","getNumberOfComponentFindingsByRule","componentsWithFinding","metric","getNumberOfPageFindingsByRule","pageMetrics","increment","getSeverityForRule","getRuleTitle","getTotalSuccessCriteriaWithFindings","ruleHasFailures","getAgeInDays","createdAtDate","DAY_IN_MS","isRuleNotApplicable","getManualEvaluationStandards","evaluation","scopeStandards","conformanceStandard","filterEvaluationStandardsBySuccessCriteria","populuatedCriteria","getEvaluationStandardFromAuditStandard","versionKey","isBooleanStringTruthy","replacer","charCodeAt","getDomainPatternFromUrl","matched","regexpPattern","getNormalizedUrl","port","localUrlToRegex","o","getMissedOrEmptyKeys","failEmptyArray","isMissed","emptyArrayMissed","setKey","pList","createPropertyWithValue","accumulator","sourceValue","targetLength","partial","randomRange","minVal","removeNullishKeys","findDuplicateValues","countBy","pickArray","arrayToMap","objects","getKey","sleep","milliseconds","promiseAction","getLoggableAxiosError","promiseFunctions","promise","rej","getLinksFromText","splitText","TypeError","fixedUrl","toJSON","urlWithoutProtocol","reg","hasUrlsNotInDomain","urlsToCheck","guard","domainRegExps","areUrlsAuthorized","authorizedDomainReg","getUrlOrigin","getUrlSubDomain","subDomain","parentDomainParts","parentDomain","convertUrlSearchParamsToObject","getUrlQueryString","URLSearchParams","trimmedEmail","combineUrlPaths","path1","path2","path1EndsWithSlash","isFullPathUrl","areEmailsValid","areValid","emailsData","singleEmail","normalizeXPath","rootSymbol","stripRootHtml","range","stride","decimals","absBytes","sign","byteStr","n","handleDecimal","excludeDot","splitFileName","extension","isValidSubdomain","subdomain","promisify","reply","isFrozen","getIdProperty","xor","toArrayIfDefined","sanitizedUrl","deepOmit","keysToOmit","keysToOmitIndex","seenObjects","WeakMap","omitFromObject","isObject","DEFAULT_LOCALE","getDateObject","isValidStringDate","isDateWithoutTime","toMidnight","toNextMidnight","nextDate","setHours","getLastDayOfMonth","getDateWithLastDayOfMonth","lastDayOfMonth","dateWithAdjustedDay","formatTime","ms","getMilliseconds","PREFIX","getRelativeDateString","otherDate","weekday","getNextYear","nextYearDate","checkIfEpochDateAlreadyOccurred","epochDate","getLastMSDate","msTimeAgo","getReportDateString","getNamedTimezone","prevDate","secondsToAdd","addDays","daysToAdd","yesterday","isTomorrow","tomorrow","padNumber","padStart","dayNum","UTC","getUTCDateWithoutTime","inputISODate","inputDate","getTimezoneTextByValue","timezoneValue","foundedTimezone","_timezone","convertMinutestoMilliseconds","tz","offset","getLocaleDateTimeWithDayName","d","getLocaleDateTime","userLocale","userTimezoneOffset","skipTime","timeFormat","second","getGMTDateTime","getLocaleDate","getFormattedDateForDownload","getUTCISODate","toJiraDateTimeString","tzo","dif","pad","getDateAtTime","getRandomInt","maxExclusive","hourMinSec","IsDateGreaterThanOrEqualToday","distanceBetweenNumberCenters","getHighlightNumberX","numberSize","getHighlightNumberY","isBoxTooCloseToTop","getHighlightNumberWidth","getHighlightNumberHeight","imageWidth","getHighlightNumberOffsetX","defaultOffset","padding","firstHighlightNumberX","lastHighlightNumberX","sortFindingsByTopLeftPosition","LINKED_PROPERTY_DEFAULT_STRING","getLinkedPropertyString","fromLinkedPropertyString","linkedPropertyString","hasValue","assignLinkedPropertyParam","setSearchParam","TokenType","HEADING","HR","LINK","LIST","TABLE","DEFAULT","NOTIFICATION","RenderTypeSanitizeConfig","ADD_ATTR","markedOptions","tokenTypesToChangeForNotification","turndownService","TurndownService","headingStyle","getMarkedOptions","buildMarkedOptions","buildMarkedOptionsForNotification","buildMarkedOptionsForAIChat","buildDefaultMarkedOptions","Renderer","codespan","unescapeAmpersands","paragraph","walkTokens","changeTokenTypeToText","raw","hr","listitem","patterns","fullMatch","rangeMatch","descriptor","breaks","escapedValue","compiledHtml","marked","workingValue","USE_PROFILES","htmlToMarkdown","keepCodeTagsContent","escapedHtml","innerContent","turndown","findHighestHeadingLevel","markdownContent","headingRegex","highestLevel","recursivelyFlattenWithLeafProperties","throwOnRepeatingProperties","leafProperties","getProperty","objectItem","keyPath","encodeKey","decodeKey","flattenWithLeafProperties","isShallowEqual","getLabelKey","reservedTags","isScanViewport","_viewport","hasInstance","getDefaultPuppeteerViewport","getScanViewport","getViewportFromString","dimensions","isCustomViewportStringValid","SCAN_VIEWPORT_DIMENSIONS","FunctionalAreaHierarchy","FlattenedFunctionalAreaHierarchy","hasAccessInternal","area","requestedAction","hasFunctionalActionsIntersection","userFunctionalActions","functionalArea","getFunctionalAreas","hasAccessByFunctionalActions","getEntityIdByLevel","topLevel","endFunctionalAreas","hasAccessBySecurityEntity","securityEntityLevelsOrder","currentOrder","order","functionalActionsByEntities","entityFunctionalActions","userEntityLevelsSet","getEntityIdsFromSecuritySet","entityLevelSet","entityIds","securityRolesContainFunctionalAction","securityRoles","functionalAction","securityGroupsContainFunctionalAction","requiredSecurities","currArea","sortNumbersFunction","collationOptions","objA","objB","functionSortObjectsByNumberProperty","aOrder","bOrder","severityOrder","functionSortObjectsByDateProperty","dateValueLeft","dateValueRight","functionSortArrayByString","isSortParametersValid","escapeEntityMap","unescapeEntityMap","STR_REPLACE_PLACEHOLDER","convertUnderscoresToDashes","unescapeHtmlTags","unescape","newStr","replaceWith","truncateInTheMiddle","startChars","endChars","replaceValue","trimExtraWhitespaces","stringToCapitalize","lowercaseRestOfString","restOfString","charAt","escapedDoubleQuotes","escapeAccessEngineHtmlFormat"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./app/admin/master-library/master-library.helper.ts","./app/admin/tenants/tenant-details/tenant-workspaces-table/tenant-workspaces-table.component.html","./app/admin/tenants/tenant-details/tenant-workspaces-table/tenant-workspaces-table.component.ts","./app/components/accessibility-conformance-level-selector/accessibility-conformance-level-selector.component.html","./app/components/accessibility-conformance-level-selector/accessibility-conformance-level-selector.component.ts","./app/components/advanced-search/advanced-search.component.html","./app/components/advanced-search/advanced-search.component.ts","./app/components/ai-chat-markdown-view/ai-chat-markdown-view.component.ts","./app/components/alert/alert.component.html","./app/components/alert/alert.component.ts","./app/components/attachment-thumbnail/attachment-thumbnail.component.html","./app/components/attachment-thumbnail/attachment-thumbnail.component.ts","./app/components/attachment-thumbnail/edit-attachment/edit-attachment-modal.component.ts","./app/components/attachment-thumbnail/edit-attachment/edit-attachment-modal.component.html","./app/components/audit-rule/audit-delete-rule-modal-content/audit-delete-rule-modal-content.component.html","./app/components/audit-rule/audit-delete-rule-modal-content/audit-delete-rule-modal-content.component.ts","./app/components/audit-rule/audit-rule-table/audit-rule-table.component.html","./app/components/audit-rule/audit-rule-table/audit-rule-table.component.ts","./app/components/audit-rule/audit-rule-view/audit-rule-view.component.html","./app/components/audit-rule/audit-rule-view/audit-rule-view.component.ts","./app/components/audit-rule/upsert-audit-rule-form/upsert-audit-rule-form.component.html","./app/components/audit-rule/upsert-audit-rule-form/upsert-audit-rule-form.component.ts","./app/components/audit-rule/upsert-audit-rule/upsert-audit-rule.component.html","./app/components/audit-rule/upsert-audit-rule/upsert-audit-rule.component.ts","./app/components/avatar/avatar-input/avatar-input.component.ts","./app/components/avatar/avatar-input/avatar-input.component.html","./app/components/avatar/view/view-avatar.component.ts","./app/components/banner/banner.component.html","./app/components/banner/banner.component.ts","./app/components/breadcrumb-wrapper/breadcrumb-wrapper.component.ts","./app/components/breadcrumb-wrapper/breadcrumb-wrapper.component.html","./app/components/breadcrumbs/breadcrumbs.shared.ts","./app/components/breadcrumbs/breadcrumbs.service.ts","./app/components/change-password/abstract/change-password-abstract.component.ts","./app/components/change-password/password-errors.constants.ts","./app/components/code-block/code-block.component.ts","./app/components/code-block/code-block.component.html","./app/components/common-accordion-item/accordion-item.component.html","./app/components/common-accordion-item/accordion-item.component.ts","./app/components/common-accordion/accordion.component.html","./app/components/common-accordion/accordion.component.ts","./app/components/common-alert-box/common-alert-box.component.html","./app/components/common-alert-box/common-alert-box.component.ts","./app/components/common-checkbox-select/common-checkbox-select.component.html","./app/components/common-checkbox-select/common-checkbox-select.component.ts","./app/components/common-checkbox-tree/checkbox-tree-node/checkbox-tree-node.component.html","./app/components/common-checkbox-tree/checkbox-tree-node/checkbox-tree-node.component.ts","./app/components/common-checkbox-tree/common-checkbox-tree.component.html","./app/components/common-checkbox-tree/common-checkbox-tree.component.ts","./app/components/common-checkbox/common-checkbox.component.ts","./app/components/common-checkbox/common-checkbox.component.html","./app/components/common-comment/common-comment.component.html","./app/components/common-comment/common-comment.component.ts","./app/components/common-confirmation-modal/common-confirmation.component.html","./app/components/common-confirmation-modal/common-confirmation.component.ts","./app/components/common-drag-and-drop-files/common-drag-and-drop-files.component.html","./app/components/common-drag-and-drop-files/common-drag-and-drop-files.component.ts","./app/components/common-file-dropbox/common-file-dropbox.component.html","./app/components/common-file-dropbox/common-file-dropbox.component.ts","./app/components/common-info-note/common-info-note.component.html","./app/components/common-info-note/common-info-note.component.ts","./app/components/common-input-in-place-editor/common-input-in-place-editor.component.html","./app/components/common-input-in-place-editor/common-input-in-place-editor.component.ts","./app/components/common-input/common-input.component.html","./app/components/common-input/common-input.component.ts","./app/components/common-multi-select/common-multi-select.component.html","./app/components/common-multi-select/common-multi-select.component.ts","./app/components/common-name-tag/common-name-tag.component.ts","./app/components/common-name-tag/common-name-tag.component.html","./app/components/common-select/common-select.component.html","./app/components/common-select/common-select.component.ts","./app/components/common-spinner/common-spinner.component.ts","./app/components/common-spinner/common-spinner.component.html","./app/components/common-switch/common-switch.component.html","./app/components/common-switch/common-switch.component.ts","./app/components/common-textarea/common-textarea.component.html","./app/components/common-textarea/common-textarea.component.ts","./app/components/common-trend/common-trend.component.html","./app/components/common-trend/common-trend.component.ts","./app/components/copy-to-clipboard/copy-to-clipboard.component.ts","./app/components/copy-to-clipboard/copy-to-clipboard.component.html","./app/components/crop-image/crop-image.component.html","./app/components/crop-image/crop-image.component.ts","./app/components/custom-rule-severity/custom-rule-severity.component.html","./app/components/custom-rule-severity/custom-rule-severity.component.ts","./app/components/dashboard/risk-score/risk-management-status-stepper/risk-management-status-stepper.component.html","./app/components/dashboard/risk-score/risk-management-status-stepper/risk-management-status-stepper.component.ts","./app/components/dashboard/risk-score/risk-score-explanation-modal/risk-score-explanation-modal.component.html","./app/components/dashboard/risk-score/risk-score-explanation-modal/risk-score-explanation-modal.component.ts","./app/components/deprecated-scan-tag-selector/deprecated-scan-tag-selector.component.html","./app/components/deprecated-scan-tag-selector/deprecated-scan-tag-selector.component.ts","./app/components/digital-property-monitoring/advanced-setup/constants/monitoring-advanced-setup.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-editor/monitoring-alerts-editor.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-editor/monitoring-alerts-editor.component.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-step.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-step.component.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-review-step/monitoring-review-step.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-review-step/monitoring-review-step.component.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-scan-settings-step/monitoring-scan-settings-step.component.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-scan-settings-step/monitoring-scan-settings-step.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-schedule-step/monitoring-schedule-step.component.ts","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-schedule-step/monitoring-schedule-step.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-scope-step/monitoring-scope-step.component.html","./app/components/digital-property-monitoring/advanced-setup/steps/monitoring-scope-step/monitoring-scope-step.component.ts","./app/components/digital-property-monitoring/quick-setup/monitoring-quick-setup.component.ts","./app/components/digital-property-monitoring/quick-setup/monitoring-quick-setup.component.html","./app/components/digital-property-monitoring/turn-off-monitoring-confirmation/turn-off-monitoring-confirmation.component.ts","./app/components/digital-property-monitoring/turn-off-monitoring-confirmation/turn-off-monitoring-confirmation.component.html","./app/components/digital-property-monitoring/utils/monitoring-date-utils.ts","./app/components/digital-property-workspace-filter/digital-property-workspace-filter.component.html","./app/components/digital-property-workspace-filter/digital-property-workspace-filter.component.ts","./app/components/domain-restrictions/domain-restrictions.component.html","./app/components/domain-restrictions/domain-restrictions.component.ts","../shared/constants/report-formats.ts","./app/components/download-report-new/download-report.component.html","./app/components/download-report-new/download-report.component.ts","./app/components/ds-confirmation-modal/ds-confirmation-modal.component.html","./app/components/ds-confirmation-modal/ds-confirmation-modal.component.ts","./app/components/error-message/error-message.component.html","./app/components/error-message/error-message.component.ts","./app/components/exclude-pages/exclude-pages.component.html","./app/components/exclude-pages/exclude-pages.component.ts","./app/pages/public/scans/scan-results/view-scan-results-summary/share-report-modal/share-report-modal.component.ts","./app/pages/public/scans/scan-results/view-scan-results-summary/share-report-modal/share-report-modal.component.html","./app/components/export-report-button/export-report-button.component.html","./app/components/export-report-button/export-report-button.component.ts","./app/components/file-input/custom-file-input/custom-file-input.component.ts","./app/components/file-input/custom-file-input/custom-file-input.component.html","./app/components/file-input/file-input.component.ts","./app/components/file-input/file-input.component.html","./app/components/filtering/accordion-filter/accordion-filter.component.html","./app/components/filtering/accordion-filter/accordion-filter.component.ts","./app/components/filtering/checkbox/filter-checkbox/filter-checkbox.component.html","./app/components/filtering/checkbox/filter-checkbox/filter-checkbox.component.ts","./app/components/filtering/filter.interface.ts","./app/components/filtering/input/filtering-input.component.ts","./app/components/filtering/input/filtering-input.component.html","./app/components/filtering/keyword/filter-keyword.component.ts","./app/components/filtering/keyword/filter-keyword.component.html","./app/components/filtering/number/filter-number.component.ts","./app/components/filtering/number/filter-number.component.html","./app/components/filtering/select/filter-select.component.html","./app/components/filtering/select/filter-select.component.ts","./app/components/form-error-messages/form-error-messages.component.html","./app/components/form-error-messages/form-error-messages.component.ts","./app/components/form-field-char-count/form-field-char-count.component.ts","./app/components/form-field-char-count/form-field-char-count.component.html","./app/components/form-field-error/form-field-error.component.html","./app/components/form-field-error/form-field-error.component.ts","./app/components/form-field-line-count/form-field-line-count.component.ts","./app/components/form-field-line-count/form-field-line-count.component.html","./app/components/form-field/date-field/constants/form-fields.ts","./app/components/form-field/date-field/date-field.component.html","./app/components/form-field/date-field/date-field.component.ts","./app/components/form-field/datetime-local/constants/form-fields.ts","./app/components/form-field/datetime-local/datetime-local.component.html","./app/components/form-field/datetime-local/datetime-local.component.ts","./app/components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component.html","./app/components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component.ts","./app/components/form-field/utils/form.ts","./app/components/global-spinner/global-spinner.component.ts","./app/components/global-spinner/global-spinner.component.html","./app/components/icon/icon.component.ts","./app/components/image-highlighter/highlight-img.helper.ts","./app/components/image-highlighter/highlight-mouse.helper.ts","./app/components/image-highlighter/highlight-actions.helper.ts","./app/components/image-highlighter/highlight-copy-paste.helper.ts","./app/components/image-highlighter/image-highlighter.component.html","./app/components/image-highlighter/image-highlighter.component.ts","./app/services/rest/secure-resource-api.ts","./app/services/secure-resource.service.ts","./app/components/image/secure-resource-id.directive.ts","./app/components/issue-tracking/edit-connection/connection-error-modal/connection-error-modal.component.ts","./app/components/issue-tracking/edit-connection/connection-error-modal/connection-error-modal.component.html","./app/components/issue-tracking/edit-connection/disconnected-tasks-modal/disconnected-tasks-modal.component.html","./app/components/issue-tracking/edit-connection/disconnected-tasks-modal/disconnected-tasks-modal.component.ts","./app/components/markdown-editor/markdown-editor.component.html","./app/components/markdown-editor/markdown-editor.component.ts","./app/components/markdown-editor/markdown-formatter/markdown-jira.utility.ts","./app/components/markdown-view/markdown-view.component.ts","./app/components/modals/alert-modal/alert-modal.component.html","./app/components/modals/alert-modal/alert-modal.component.ts","./app/components/modals/checkbox-confirmation-modal/checkbox-confirmation-modal.component.html","./app/components/modals/checkbox-confirmation-modal/checkbox-confirmation-modal.component.ts","./app/components/modals/info-modal/info-modal.component.html","./app/components/modals/info-modal/info-modal.component.ts","./app/components/modals/modal-container.component.html","./app/components/modals/modal-container.component.ts","./app/components/modals/prompt-confirmation-modal/prompt-confirmation-modal.component.html","./app/components/modals/prompt-confirmation-modal/prompt-confirmation-modal.component.ts","./app/components/monitoring-alert-icon/monitoring-alert-icon.component.html","./app/components/monitoring-alert-icon/monitoring-alert-icon.component.ts","./app/components/monitoring-alert-table/monitoring-alert-table.component.html","./app/components/monitoring-alert-table/monitoring-alert-table.component.ts","./app/components/monitoring-label/monitoring-label.component.html","./app/components/monitoring-label/monitoring-label.component.ts","./app/components/multiselect-typeahead/multiselect-typeahead.component.html","./app/components/multiselect-typeahead/multiselect-typeahead.component.ts","./app/components/overdue-unresolved-findings-by-severity/overdue-unresolved-findings-by-severity.component.html","./app/components/overdue-unresolved-findings-by-severity/overdue-unresolved-findings-by-severity.component.ts","./app/components/page-loading-state/page-loading-state.component.html","./app/components/page-loading-state/page-loading-state.component.ts","./app/components/pagination/arrows-navigation/pagination-arrows-navigation.component.ts","./app/components/pagination/arrows-navigation/pagination-arrows-navigation.component.html","./app/components/pagination/responsive-pagination/responsive-pagination.component.html","./app/components/pagination/responsive-pagination/responsive-pagination.component.ts","./app/components/progress-doughnut/progress-doughnut.component.html","./app/components/progress-doughnut/progress-doughnut.component.ts","./app/components/resolved-findings-progress/resolved-findings-progress.component.html","./app/components/resolved-findings-progress/resolved-findings-progress.component.ts","./app/components/route-wrapper/route-wrapper.component.ts","./app/components/rule-filter/rule-filter.component.html","./app/components/rule-filter/rule-filter.component.ts","./app/components/rule-issues-table/rule-issues-supplementary-table.component.html","./app/components/rule-issues-table/rule-issues-supplementary-table.component.ts","./app/components/rule-issues-table/rule-issues-table.component.html","./app/components/rule-issues-table/rule-issues-table.component.ts","./app/shared/base-paginated-table-controller.ts","./app/components/rule-issues-table/supplementary-table-controller.ts","./app/components/rule-severity/rule-severity.component.html","./app/components/rule-severity/rule-severity.component.ts","./app/components/rule-status-change/rule-status-change.component.html","./app/components/rule-status-change/rule-status-change.component.ts","./app/components/scan-actions/scan-actions.component.html","./app/components/scan-actions/scan-actions.component.ts","./app/components/scan-analytics-health-graph/scan-analytics-health-graph.component.ts","./app/components/scan-analytics-health-graph/scan-analytics-health-graph.component.html","./app/components/scan-authentication-details/scan-authentication-details.component.html","./app/components/scan-authentication-details/scan-authentication-details.component.ts","./app/components/scan-extra-headers/scan-extra-headers.component.html","./app/components/scan-extra-headers/scan-extra-headers.component.ts","./app/components/scan-health-chart/scan-health-chart.component.html","./app/components/scan-health-chart/scan-health-chart.component.ts","./app/components/scan-pre-scan-flow/scan-pre-scan-flow.component.html","./app/components/scan-pre-scan-flow/scan-pre-scan-flow.component.ts","../shared/services/api-path-builder.ts","./app/components/scan-score-circle/scan-score-circle.component.ts","./app/components/scan-score-circle/scan-score-circle.component.html","./app/components/scan-tag-filter/scan-tag-filter.component.html","./app/components/scan-tag-filter/scan-tag-filter.component.ts","./app/components/scan-tag-selector/scan-tag-selector.component.html","./app/components/scan-tag-selector/scan-tag-selector.component.ts","./app/components/score-chart/score-chart.component.html","./app/components/score-chart/score-chart.component.ts","./app/components/searchbox/searchbox.component.html","./app/components/searchbox/searchbox.component.ts","./app/components/secure-alert/secure-alert.component.ts","./app/components/secure-alert/secure-alert.component.html","./app/components/share-issue-report-modal/share-issue-report-modal.component.ts","./app/components/share-issue-report-modal/share-issue-report-modal.component.html","./app/components/share-issue-report-url/share-issue-report-url.component.ts","./app/components/share-issue-report-url/share-issue-report-url.component.html","./app/components/sort-selector/sort-selector.component.html","./app/components/sort-selector/sort-selector.component.ts","./app/components/status/status.component.ts","./app/components/stepper/constants.ts","./app/components/stepper/directives/step-next.directive.ts","./app/components/stepper/directives/step-previous.directive.ts","./app/components/stepper/horizontal-stepper/horizontal-stepper.component.html","./app/components/stepper/horizontal-stepper/horizontal-stepper.component.ts","./app/components/stepper/step-header/step-header.component.html","./app/components/stepper/step-header/step-header.component.ts","./app/components/stepper/step/step-content.directive.ts","./app/components/stepper/step/step.component.ts","./app/components/table-column-selector/table-column-selector-panel/table-column-selector-panel.component.html","./app/components/table-column-selector/table-column-selector-panel/table-column-selector-panel.component.ts","./app/components/table-column-selector/table-column-selector.component.ts","./app/components/table-column-selector/table-column-selector.component.html","./app/components/table/custom-table/constants.ts","./app/components/table/custom-table/custom-table.component.html","./app/components/table/custom-table/custom-table.component.ts","./app/components/table/custom-table/empty-state/table-empty-state.component.html","./app/components/table/custom-table/empty-state/table-empty-state.component.ts","./app/components/table/ngb-table/cells/attachments-cell/attachments-cell.component.ts","./app/components/table/ngb-table/cells/base-cell/base-cell.component.ts","./app/components/table/ngb-table/cells/button-cell/button-cell.component.ts","./app/components/table/ngb-table/cells/checkbox-cell/checkbox-cell.component.ts","./app/components/table/ngb-table/cells/composed-cell/composed-cell.component.ts","./app/components/table/ngb-table/cells/data-point-cell/data-point-cell.component.ts","./app/components/table/ngb-table/cells/document-files-cell/document-files-cell.component.ts","./app/components/table/ngb-table/cells/dropdown-cell/dropdown-cell.component.ts","./app/components/table/ngb-table/cells/ds-button-cell/ds-button-cell.component.ts","./app/components/table/ngb-table/cells/ds-chip-cell/ds-chip-cell.component.ts","./app/components/table/ngb-table/cells/ds-severity-cell/ds-severity-cell.component.ts","./app/components/table/ngb-table/cells/empty-cell/empty-cell.component.ts","./app/components/table/ngb-table/cells/external-link-button-cell/external-link-button-cell.component.ts","./app/components/table/ngb-table/cells/external-link-cell/external-link-cell.component.ts","./app/components/table/ngb-table/cells/html-cell/html-cell.component.ts","./app/components/table/ngb-table/cells/html-highlight-cell/html-highlight-cell.component.ts","./app/components/table/ngb-table/cells/image-cell/image-cell.component.ts","./app/components/table/ngb-table/cells/issue-state-label-cell/issue-state-label-cell.component.ts","./app/components/table/ngb-table/cells/issues-view-details-cell/issue-view-details-cell.component.ts","./app/components/table/ngb-table/cells/link-cell/link-cell.component.ts","./app/components/table/ngb-table/cells/links-ordered-list-cell/links-ordered-list-cell.component.ts","./app/components/table/ngb-table/cells/ordered-list-cell/ordered-list-cell.component.ts","./app/components/table/ngb-table/cells/pending-cell/pending-cell.component.ts","./app/components/table/ngb-table/cells/rule-status-toggle-cell/rule-status-toggle-cell.component.ts","./app/components/table/ngb-table/cells/score-cell/score-cell.component.ts","./app/components/table/ngb-table/cells/secure-image-cell/secure-image-cell.component.ts","./app/components/table/ngb-table/cells/select-cell/select-cell.component.ts","./app/components/table/ngb-table/cells/severity-cell/severity-cell.component.ts","./app/components/table/ngb-table/cells/template-cell/template-cell.component.ts","./app/components/table/ngb-table/cells/text-cell/text-cell.component.ts","./app/components/table/ngb-table/cells/text-with-icon-cell/text-with-icon-cell.component.ts","./app/components/table/ngb-table/cells/thumbnail-cell/thumbnail-cell.component.ts","./app/components/table/ngb-table/cells/title-cell/title-cell.component.ts","./app/components/table/ngb-table/cells/tooltip-cell/tooltip-cell.component.ts","./app/components/table/ngb-table/cells/type-ahead-cell/type-ahead-cell.component.ts","./app/components/table/ngb-table/cells/user-account-status-cell/user-account-status-cell.component.ts","./app/components/table/ngb-table/empty-state/table-empty-state.component.html","./app/components/table/ngb-table/empty-state/table-empty-state.component.ts","./app/components/table/ngb-table/ngb-table.component.html","./app/components/table/ngb-table/ngb-table.component.ts","./app/components/table/ngb-table/utilities/dcl-wrapper.component.ts","./app/components/table/ngb-table/cells/user-avatar-cell/user-avatar-cell-component.ts","./app/components/table/ngb-table/utilities/ngb-table.utilities.ts","./app/components/testing-tool-filter/testing-tool-filter.component.html","./app/components/testing-tool-filter/testing-tool-filter.component.ts","./app/components/toggle-switch/toggle-switch.component.html","./app/components/toggle-switch/toggle-switch.component.ts","./app/components/typeahead/typeahead.component.html","./app/components/typeahead/typeahead.component.ts","./app/components/user-mfa/user-mfa.component.html","./app/components/user-mfa/user-mfa.component.ts","./app/components/users/edit-user/admin-portal-permissions-table/admin-portal-permissions-table.component.ts","./app/components/users/edit-user/admin-portal-permissions-table/admin-portal-permissions-table.component.html","./app/components/users/edit-user/digital-property-permissions-table/digital-property-permissions-table.component.html","./app/components/users/edit-user/digital-property-permissions-table/digital-property-permissions-table.component.ts","./app/components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component.html","./app/components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component.ts","./app/components/users/edit-user/edit-user.component.html","./app/components/users/edit-user/edit-user.component.ts","./app/components/users/edit-user/organization-permissions-table/organization-permissions-table.component.ts","./app/components/users/edit-user/organization-permissions-table/organization-permissions-table.component.html","./app/components/users/edit-user/permissions-table.component.ts","./app/components/users/edit-user/workspace-permissions-table/workspace-permissions-table.component.ts","./app/components/users/edit-user/workspace-permissions-table/workspace-permissions-table.component.html","./app/components/view-flaw-status-history/view-flaw-status-history-item/view-flaw-status-history-item.component.html","./app/components/view-flaw-status-history/view-flaw-status-history-item/view-flaw-status-history-item.component.ts","../shared/constants/issue-status-history.ts","./app/services/issue-status-history.service.ts","./app/components/view-flaw-status-history/view-flaw-status-history.component.html","./app/components/view-flaw-status-history/view-flaw-status-history.component.ts","./app/components/viewport-box/viewport-box.component.html","./app/components/viewport-box/viewport-box.component.ts","./app/components/viewport-custom-values/viewport-custom-values.component.ts","./app/components/viewport-custom-values/viewport-custom-values.component.html","./app/components/viewport-inline/viewport-inline.component.html","./app/components/viewport-inline/viewport-inline.component.ts","./app/components/viewport-select/viewport-select.component.html","./app/components/viewport-select/viewport-select.component.ts","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-management-table-modal/websites-apps-by-risk-management-table-modal.component.ts","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-management-table-modal/websites-apps-by-risk-management-table-modal.component.html","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-managment-chart.component.ts","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-management-chart.component.html","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status-details/websites-apps-by-risk-management-status-details.component.html","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status-details/websites-apps-by-risk-management-status-details.component.ts","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status.component.html","./app/components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status.component.ts","./app/components/workspace/users-list/users-list.component.html","./app/components/workspace/users-list/users-list.component.ts","./app/constants/alert.constants.ts","./app/constants/charts.constants.ts","./app/constants/form.constants.ts","./app/constants/image-highlight.constants.ts","./app/constants/pagination-params.ts","./app/constants/risk-metrics-chart.ts","./app/constants/scan.constants.ts","./app/constants/user.constants.ts","./app/constants/view-issues-params.ts","./app/directives/aria-label-sort/aria-label-sort.directive.ts","./app/directives/aria-sort/aria-sort.directive.ts","./app/directives/close-action-menu/close-action-menu.directive.ts","./app/directives/collapse/collapse.directive.ts","./app/directives/ctrl-key/ctrl-key.directive.ts","./app/directives/download-link/download-link.directive.ts","./app/directives/feature-flag/feature-flag.directive.ts","./app/directives/file-dropbox/fileDropbox.directive.ts","./app/directives/filter-host/filter-host.directive.ts","./app/directives/focus-first-focusable-element/focus-first-focusable-element.directive.ts","./app/directives/focus/focus.directive.ts","./app/directives/form-native-element/form-native-element.directive.ts","./app/directives/has-permissions/has-permissions.directive.ts","./app/directives/highlight/highlight.directive.ts","./app/directives/input-only-numbers/input-only-numbers.directive.ts","./app/directives/new-nav-card/new-nav-card.directive.ts","./app/directives/ngb-nav/ngb-nav.directive.ts","./app/directives/no-double-activate/no-double-activate.directive.ts","./app/directives/tabs/tabs.directive.ts","./app/directives/tooltip/tooltip.component.ts","./app/directives/tooltip/tooltip.component.html","./app/directives/tooltip/tooltip.directive.ts","./app/directives/translate-templates/translate-templates.directive.ts","./app/directives/trap-focus/trap-focus.directive.ts","./app/directives/typeahead/typeahead.directive.ts","./app/interfaces/custom-severities.interface.ts","./app/interfaces/navigation-custom-state.interface.ts","./app/models/notification.model.ts","./app/pages/public/automated-scan/advanced/automated-scan-advanced.service.ts","./app/pages/public/automated-scan/advanced/scan-scope/handle-popups/handle-popups.component.html","./app/pages/public/automated-scan/advanced/scan-scope/handle-popups/handle-popups.component.ts","./app/pages/public/automated-scan/advanced/scan-scope/wait-time/wait-time.component.html","./app/pages/public/automated-scan/advanced/scan-scope/wait-time/wait-time.component.ts","./app/pages/public/dashboard/dashboard.service.ts","./app/pages/public/integrations/test-automation/tool-template/tool-template.html","./app/pages/public/integrations/test-automation/tool-template/tool-template.ts","./app/pages/public/organization/program-dashboard/user-preferences-slideout/user-preferences-slideout.component.html","./app/pages/public/organization/program-dashboard/user-preferences-slideout/user-preferences-slideout.component.ts","./app/pages/public/pages/upsert-page/abstract-page-modal.component.ts","./app/pages/public/pages/upsert-page/upsert-page-modal.component.html","./app/pages/public/pages/upsert-page/add-page-modal/add-page-modal.component.ts","./app/pages/public/projects/create-project-slideout/create-project-slideout.component.html","./app/pages/public/projects/create-project-slideout/create-project-slideout.component.ts","./app/pages/public/projects/tasks/upsert-task-modal/upsert-task-modal.component.html","./app/pages/public/projects/tasks/upsert-task-modal/upsert-task-modal.component.ts","./app/pages/public/projects/tasks/upsert-task-slideout/upsert-task-helper.ts","./app/pages/public/projects/tasks/upsert-task-slideout/upsert-task-slideout.component.html","./app/pages/public/projects/tasks/upsert-task-slideout/upsert-task-slideout.component.ts","../shared/utils/colors.utility.ts","./app/components/color-contrast-rule-suggestions/color-contrast-rule-suggestions.component.html","./app/components/color-contrast-rule-suggestions/color-contrast-rule-suggestions.component.ts","./app/pages/public/scans/scan-results/issues-view/issues-view-details/issues-view-details.component.html","./app/pages/public/scans/scan-results/issues-view/issues-view-details/issues-view-details.component.ts","./app/components/change-password/abstract/change-password-abstract.component.html","./app/components/change-password/from-settings/change-password.component.ts","./app/components/deactivate-account/deactivate-account.component.html","./app/components/deactivate-account/deactivate-account.component.ts","./app/pages/public/settings/account/settings/account-settings.component.html","./app/pages/public/settings/account/settings/account-settings.component.ts","./app/pages/public/settings/account/settings/account-settings.routing.ts","./app/pages/public/settings/account/settings/account-settings.module.ts","./app/pipes/array-reverse.pipe.ts","./app/pipes/array-to-string.pipe.ts","./app/pipes/bytes-to-readable-units.pipe.ts","./app/pipes/compact-number.pipe.ts","./app/pipes/date-time.pipe.ts","./app/pipes/ellipsis.pipe.ts","./app/pipes/field-invalid.pipe.ts","./app/pipes/filter.pipe.ts","./app/pipes/is-nullish.pipe.ts","./app/pipes/keys.pipe.ts","./app/pipes/language-name.pipe.ts","./app/pipes/linkify-html.pipe.ts","./app/pipes/linkify.pipe.ts","./app/pipes/prettify-date.pipe.ts","./app/pipes/sanitizer.pipe.ts","./app/pipes/translate-cut.pipe.ts","./app/resolvers/breadcrumbs/abstract-breadcrumbs.resolver.ts","./app/resolvers/breadcrumbs/breadcrumbs.config.ts","./app/resolvers/breadcrumbs/default-breadcrumbs.resolver.ts","./app/services/a11y.service.ts","../shared/services/acl-security-adapter.ts","./app/services/acl.service.ts","./app/services/app-config.service.ts","./app/services/audit-rule.service.ts","./app/services/auth.service.ts","./app/services/auth/guards/auth.guard.ts","./app/services/auth/guards/authorize-only-staff-users-sso-tenant-guard.ts","./app/services/auth/guards/digital-property-limit.guard.ts","./app/services/auth/guards/digital-property.guard.ts","./app/services/auth/guards/security.guard.ts","./app/services/auth/guards/sso-tenant.guard.ts","./app/services/auth/guards/tenantless.guard.service.ts","./app/services/auth/guards/web-digital-property.guard.ts","./app/services/rest/automated-user-flow.api.ts","./app/services/automated-user-flow.service.ts","./app/services/browser-local-storage.service.ts","./app/services/browser-session-storage.service.ts","./app/services/bus-message.service.ts","./app/services/busy-indicator/busy-indicator.service.ts","./app/services/clipboard-utility.service.ts","./app/services/clipboard.service.ts","./app/services/comment.service.ts","./app/services/cookie.service.ts","./app/services/custom-audit-rule.service.ts","./app/services/digital-property.service.ts","./app/services/error-handler.service.ts","./app/services/error-message.service.ts","./app/services/external-link.service.ts","./app/services/feature-flag/feature-flag-redirection.guard.ts","./app/services/feature-flag/feature-flag.guard.ts","../shared/constants/application-role.constants.ts","../shared/constants/workspace-role.constants.ts","../shared/constants/e2e-feature-flag.mock.ts","./app/services/feature-flag/feature-flag.service.ts","./app/services/flaw.service.ts","./app/services/form.service.ts","./app/services/guards/pending-changes.guard.ts","./app/services/helpers/form-custom-async-validators.ts","./app/utility/dom.utility.ts","./app/services/helpers/form-custom-validators.ts","./app/services/helpers/rest.builder.ts","./app/services/indexedDB.service.ts","./app/services/rest/issue-tracking.api.ts","./app/services/issue-tracking.service.ts","./app/services/load-error-handler.ts","./app/services/loader.service.ts","./app/services/manual-audit-issue.service.ts","./app/services/rest/test-guides.api.ts","./app/services/manual-audit.service.ts","./app/services/message-bus.service.ts","./app/services/modal.service.ts","./app/services/navigation/nav-structure.ts","./app/services/navigation/nav.service.ts","./app/services/notification.service.ts","./app/services/rest/page.api.ts","./app/services/page.service.ts","./app/services/rest/projects.api.ts","./app/services/project.service.ts","./app/services/report.service.ts","./app/services/rest.service.ts","./app/services/rest/admin.api.ts","./app/services/rest/user.api.ts","./app/services/rest/workspaces.api.ts","./app/services/routing.service.ts","./app/services/rule-audit-history.service.ts","./app/services/scan-mobile.service.ts","./app/services/scan-options.service.ts","./app/services/scan-report.service.ts","./app/services/scan-tag.service.ts","./app/services/scan.service.ts","./app/services/rest/security-groups.api.ts","./app/services/security-group.service.ts","./app/services/rest/security-users.api.ts","./app/services/security-user.service.ts","./app/services/rest/short-link.api.ts","./app/services/short-link.service.ts","./app/services/status.service.ts","./app/services/success-criteria-formatter.service.ts","../shared/audits/definitions/success-criteria/legacy.ts","../shared/audits/definitions/success-criteria/wcag.ts","../shared/audits/definitions/success-criteria/axe.ts","../shared/audits/definitions/success-criteria/aslint.ts","../shared/audits/definitions/success-criteria/wave.ts","../shared/audits/definitions/success-criteria/notApplicable.ts","../shared/audits/definitions/success-criteria/wcag-cr.ts","../shared/audits/definitions/success-criteria/en-301-549.ts","../shared/audits/definitions/success-criteria/section-508.ts","./app/services/success-criteria.service.ts","./app/services/tenant-package.service.ts","./app/services/rest/tenant-severities.api.ts","./app/services/tenant-severities.service.ts","./app/services/rest/tenant.api.ts","./app/services/rest/academy.api.ts","./app/services/rest/salesforce.api.ts","./app/services/tenant.service.ts","./app/services/test-automation.service.ts","./app/services/user-acl.service.ts","./app/services/user-digital-property.service.ts","./app/services/user-notification.service.ts","./app/services/user-property.service.ts","./app/services/user-role.service.ts","../shared/guards/global-response.ts","./app/services/user.service.ts","./app/services/window.ref.ts","./app/services/window.service.ts","../shared/constants/training-video.ts","./app/services/workspace.service.ts","./app/shared/constants.ts","./app/shared/eap-colors.ts","./app/shared/eap-icons.component.ts","./assets/icons/eap-icons.html","./app/components/view-rule-history/view-rule-history-item/view-rule-history-item.component.html","./app/components/view-rule-history/view-rule-history-item/view-rule-history-item.component.ts","./app/components/view-rule-history/singular/view-singular-rule-history.component.html","./app/components/view-rule-history/singular/view-singular-rule-history.component.ts","./app/components/rule-status-toggle/rule-status-toggle.component.html","./app/components/rule-status-toggle/rule-status-toggle.component.ts","./app/shared/common-pipes.module.ts","./app/shared/shared.module.ts","./app/shared/svg-icons.component.ts","./assets/images/icons.html","./app/translate/lang-en.ts","./app/translate/translate-html.pipe.ts","./app/translate/translate.pipe.ts","./app/translate/translate.service.ts","./app/utility/angular.utility.ts","../shared/utils/random-secure-string.utility.ts","./app/utility/common.utility.ts","./app/utility/date.utility.ts","../shared/constants/os-devices.ts","./app/utility/detect.utility.ts","./app/utility/file.utility.ts","./app/utility/project.utility.ts","./app/interfaces/resource-data.ts","./app/utility/resource.utility.ts","./app/utility/risk-chart.utility.ts","./app/utility/scan-chart.utility.ts","./app/utility/task.utility.ts","./app/utility/url.utility.ts","../shared/constants/change-user-emails.ts","./environments/config.shared.ts","./environments/environment.prod.ts","./app/app.init.ts","./app/pages/public/not-found/not-found.component.ts","./app/pages/public/not-found/not-found.component.html","./app/pages/public/login/tenant-redirect-modal/tenant-redirect-modal.component.html","./app/pages/public/login/tenant-redirect-modal/tenant-redirect-modal.component.ts","./app/pages/public/login/login-card/login-card.component.ts","./app/pages/public/login/mfa-login/mfa-login.component.ts","./app/pages/public/login/mfa-login/mfa-login.component.html","./app/pages/public/login/login.component.html","./app/pages/public/login/login.component.ts","./app/pages/public/logout/logout.constants.ts","./app/pages/public/logout/logout.component.html","./app/pages/public/logout/logout.component.ts","./app/pages/public/password-reset/password-reset.component.html","./app/pages/public/password-reset/password-reset.component.ts","./app/pages/public/activation-link/activation-link.component.html","./app/pages/public/activation-link/activation-link.component.ts","./app/pages/public/cookie-policy/cookie-policy.component.ts","./app/pages/public/cookie-policy/cookie-policy.component.html","./app/pages/public/verify-email/verify-email.component.html","./app/pages/public/verify-email/verify-email.component.ts","./app/pages/public/help-center/help-center.component.html","./app/pages/public/help-center/help-center.component.ts","./app/pages/public/error/forbidden-error/forbidden-error.component.ts","./app/pages/public/error/forbidden-error/forbidden-error.component.html","./app/pages/public/attribution/attribution.component.ts","./app/pages/public/attribution/attribution.component.html","./app/pages/public/short-link/short-link.component.html","./app/pages/public/short-link/short-link.component.ts","./app/services/auth/guards/non-sso-tenant.guard.ts","./app/services/auth/guards/redirect-sso-tenant.guard.ts","./app/services/auth/guards/home-page-redirect.guard.ts","./app/resolvers/breadcrumbs/projects-and-tasks-breadcrumbs.resolver.ts","./app/components/change-password/from-signup/change-password-from-signup.component.ts","./app/pages/public/signup/signup-form/signup-form.component.html","./app/pages/public/signup/signup-form/signup-form.component.ts","./app/pages/public/signup/plaform-usage/signup-platform-usage.component.html","./app/pages/public/signup/plaform-usage/signup-platform-usage.component.ts","./app/pages/public/signup/overview/signup-overview.component.html","./app/pages/public/signup/overview/signup-overview.component.ts","./app/pages/public/signup/signup.component.html","./app/pages/public/signup/signup.component.ts","./app/services/rest/healthcheck.api.ts","./app/services/healthcheck.service.ts","./app/pages/public/login/tenant-login-redirect/tenant-login-redirect.component.ts","./app/pages/public/login/tenant-login-redirect/tenant-login-redirect.component.html","./app/services/auth/guards/mobile-digital-property.guard.ts","./app/app.routing.ts","./app/services/auth/guards/tenant.guard.ts","./app/services/google-tag-manager.service.ts","./app/services/amplitude.service.ts","./app/services/focused-window.service.ts","./app/components/server-version-change/server-version-change-modal.component.ts","./app/components/server-version-change/server-version-change-modal.component.html","./app/services/walk-me.service.ts","./app/services/pendo.service.ts","./app/services/job-industry.service.ts","./app/services/job-title.service.ts","../shared/constants/job-industry.ts","../shared/constants/job-title.ts","./app/services/current-session-data.service.ts","./app/helpers/route.helper.ts","./app/services/server-version.service.ts","./app/shared/svg-images.component.ts","./assets/images/svg.html","./app/shared/svg-image-filters.component.ts","./assets/images/image-filters.html","./app/components/toast/toast.component.html","./app/components/toast/toast.component.ts","./app/components/feature-flag-initialized/feature-flag-initialized.component.html","./app/components/feature-flag-initialized/feature-flag-initialized.component.ts","./app/components/compound-navbar/compound-top-navbar/top-navbar-workspaces-dropdown/top-navbar-workspaces-dropdown.component.html","./app/components/compound-navbar/compound-top-navbar/top-navbar-workspaces-dropdown/top-navbar-workspaces-dropdown.component.ts","./app/components/compound-navbar/compound-top-navbar/top-navbar-notifications/top-nav-notifications.component.html","./app/components/compound-navbar/compound-top-navbar/top-navbar-notifications/top-nav-notifications.component.ts","./app/components/compound-navbar/compound-top-navbar/top-navbar-profile-dropdown/top-navbar-profile-dropdown.component.html","./app/components/compound-navbar/compound-top-navbar/top-navbar-profile-dropdown/top-navbar-profile-dropdown.component.ts","./app/components/compound-navbar/compound-top-navbar/top-navbar-launcher-dropdown/top-navbar-launcher-dropdown.component.html","./app/components/compound-navbar/compound-top-navbar/top-navbar-launcher-dropdown/top-navbar-launcher-dropdown.component.ts","./app/components/compound-navbar/compound-second-level-navbar/mobile-second-navbar-menu-modal/mobile-second-navbar-menu-modal.component.html","./app/components/compound-navbar/compound-second-level-navbar/mobile-second-navbar-menu-modal/mobile-second-navbar-menu-modal.component.ts","./app/components/compound-navbar/compound-top-navbar/mobile-top-navbar-menu-modal/mobile-top-navbar-menu-modal.component.html","./app/components/compound-navbar/compound-top-navbar/mobile-top-navbar-menu-modal/mobile-top-navbar-menu-modal.component.ts","./app/components/compound-navbar/compound-top-navbar/compound-top-navbar.component.html","./app/components/compound-navbar/compound-top-navbar/compound-top-navbar.component.ts","./app/components/compound-navbar/compound-top-navbar/compound-top-navbar-unauthenticated.component.ts","./app/components/compound-navbar/compound-top-navbar/compound-top-navbar-unauthenticated.component.html","./app/components/compound-navbar/compound-navbar-link/compound-navbar-link.component.ts","./app/components/compound-navbar/compound-navbar-link/compound-navbar-link.component.html","./app/components/compound-navbar/websites-apps-select/websites-apps-select.component.html","./app/components/compound-navbar/websites-apps-select/websites-apps-select.component.ts","./app/components/compound-navbar/compound-third-level-navbar/compound-third-level-navbar.component.html","./app/components/compound-navbar/compound-third-level-navbar/compound-third-level-navbar.component.ts","./app/components/ai-chat/ai-chat.service.ts","../shared/interfaces/ai-chat.interface.ts","./app/components/ai-chat/ai-chat.component.html","./app/components/ai-chat/ai-chat.component.ts","./app/components/compound-navbar/compound-second-level-navbar/compound-second-level-navbar.component.html","./app/components/compound-navbar/compound-second-level-navbar/compound-second-level-navbar.component.ts","./app/components/compound-navbar/compound-navbar.component.html","./app/components/compound-navbar/compound-navbar.component.ts","./app/components/footer/footer.component.html","./app/components/footer/footer.component.ts","./app/layouts/app-layout/app-layout.component.html","./app/layouts/app-layout/app-layout.component.ts","./app/layouts/login-layout/login-layout.component.html","./app/layouts/login-layout/login-layout.component.ts","./app/layouts/signup-layout/signup-layout.component.ts","./app/layouts/signup-layout/signup-layout.component.html","./app/app.component.html","./app/app.component.ts","./app/services/interceptors/token.interceptor.ts","./app/services/busy-indicator/busy-indicator.interceptor.ts","./app/services/interceptors/extra-headers.interceptor.ts","./app/services/features.service.ts","./app/services/support.service.ts","./app/services/browser.service.ts","../shared/interfaces/tracking-console.interface.ts","./app/services/tracking/tracking-console.service.ts","./app/components/breadcrumbs/breadcrumbs.component.html","./app/components/breadcrumbs/breadcrumbs.component.ts","./app/services/lazy-loading-styles.service.ts","./app/services/interceptors/request-loader.interceptor.ts","../shared/constants/custom-headers.ts","./app/services/interceptors/server-version.interceptor.ts","./app/services/interceptors/eap-auth-token.interceptor.ts","./app/services/interceptors/no-workspace.interceptor.ts","./app/services/interceptors/tenant-package.interceptor.ts","./app/components/compound-navbar/compound-second-level-navbar/mobile-second-navbar-menu-modal/workspaces-select/workspaces-select.component.html","./app/components/compound-navbar/compound-second-level-navbar/mobile-second-navbar-menu-modal/workspaces-select/workspaces-select.component.ts","./app/components/compound-navbar/compound-navbar.module.ts","./app/services/linked-property-data.service.ts","./app/app.module.ts","./app/maintenance/header/header.component.ts","./app/maintenance/header/header.component.html","./app/maintenance/footer/footer.component.ts","./app/maintenance/footer/footer.component.html","./app/maintenance/general-error/general-error.component.ts","./app/maintenance/general-error/general-error.component.html","./app/maintenance/no-access-to-tenant/no-access-to-tenant.component.ts","./app/maintenance/no-access-to-tenant/no-access-to-tenant.component.html","./app/maintenance/constants.ts","./app/maintenance/maintenance.component.ts","./app/maintenance/maintenance.component.html","./app/maintenance/maintenance.module.ts","./main.ts","../shared/audits/definitions/success-criteria/constants.ts","../shared/constants/accessibility.ts","../shared/constants/analytics.ts","../shared/constants/api.ts","../shared/constants/audit-finding.ts","../shared/constants/audit-issues-view.ts","../shared/constants/audit-rule.ts","../shared/constants/audit-standard-success-criteria.ts","../shared/constants/audit-standard.ts","../shared/constants/audit-tool.ts","../shared/constants/audit-types.ts","../shared/constants/audited-document.ts","../shared/constants/automated-user-flow.ts","../shared/constants/comment.ts","../shared/constants/date.ts","../shared/constants/design-review.ts","../shared/constants/design-rule.ts","../shared/constants/digital-properties.ts","../shared/constants/errors.ts","../shared/constants/file-extension.ts","../shared/constants/filters.ts","../shared/constants/finding-counts.ts","../shared/constants/flaw.ts","../shared/constants/issue-tracking-connection.ts","../shared/constants/issue-tracking.ts","../shared/constants/keys.ts","../shared/constants/manual-audit-issues.ts","../shared/constants/manual-audit.ts","../shared/constants/manual-evaluation.ts","../shared/constants/mime-type.ts","../shared/constants/multer.ts","../shared/constants/notifications.ts","../shared/constants/packaging.ts","../shared/constants/page.ts","../shared/constants/platform-action.ts","../shared/constants/project.ts","../shared/constants/required-securities.ts","../shared/constants/risk-metrics.ts","../shared/constants/rule-audit-history.ts","../shared/constants/rule-library.ts","../shared/constants/scan-audit.ts","../shared/constants/scan-create-request.ts","../shared/constants/scan-issues.ts","../shared/constants/scan-options.ts","../shared/constants/scan-summaries.ts","../shared/constants/scan-tag.ts","../shared/constants/scan-viewport.ts","../shared/constants/scan.ts","../shared/constants/scanning.ts","../shared/constants/screenshot.ts","../shared/constants/security-group.ts","../shared/constants/security.ts","../shared/constants/short-link.ts","../shared/constants/sort.ts","../shared/constants/standard-parsing.ts","../shared/constants/string.ts","../shared/constants/task.ts","../shared/constants/tenant.ts","../shared/constants/test-guide.ts","../shared/constants/uploads.ts","../shared/constants/user-preferences.ts","../shared/constants/user-role.ts","../shared/constants/user.ts","../shared/constants/workspace-activity-log.constants.ts","../shared/constants/workspace-finding-count.ts","../shared/constants/workspace-user.constants.ts","../shared/constants/workspace.ts","../shared/constants/ws-dashboard.constants.ts","../shared/interfaces/access-engine-accessibility.interface.ts","../shared/interfaces/audit-rule.interface.ts","../shared/interfaces/feature-flag.interface.ts","../shared/interfaces/response.interface.ts","../shared/interfaces/scan.interface.ts","../shared/interfaces/task.interface.ts","../shared/interfaces/ws-dashboard.interface.ts","../shared/utils/audit-standards.utility.ts","../shared/utils/audits.utility.ts","../shared/constants/data.ts","../shared/utils/common.utility.ts","../shared/utils/date.utility.ts","../shared/utils/image-highlighter.utility.ts","../shared/utils/linked-property.utility.ts","../shared/utils/markdown.utility.ts","../shared/utils/object.utility.ts","../shared/utils/risk-level.utility.ts","../shared/utils/scan-tag.utility.ts","../shared/utils/scan-viewport.ts","../shared/constants/functional-area-hierarchy.ts","../shared/utils/security.utility.ts","../shared/utils/sort.utility.ts","../shared/utils/text.utility.ts"],"sourcesContent":["import { TranslateService } from '../../translate/translate.service';\nimport { DesignRuleLibrary } from '../../../../shared/constants/design-rule';\n\nexport class MasterLibraryHelper {\n public static getLibraryName(libraryName: string, translateService: TranslateService): string {\n if (Object.values(DesignRuleLibrary).includes(libraryName)) {\n return translateService.instant(`library_${libraryName}`);\n }\n\n return libraryName;\n }\n}\n","
\n
\n \n
\n\n
\n
\n \n
\n
\n\n
\n \n
\n
\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { catchError, map, startWith, take, tap } from 'rxjs/operators';\n\nimport { ITableConfig, ITableRow, SortEvent } from '../../../../components/table/ngb-table/utilities/ngb-table.interface';\nimport { $workspace, workspaceStatus } from '../../../../../../shared/constants/workspace';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { NgbTableUtilities } from '../../../../components/table/ngb-table/utilities/ngb-table.utilities';\nimport { DEFAULT_ENTRY_LIMITS } from '../../../../constants/form.constants';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { $sortingOrder } from '../../../../../../shared/constants/sort';\nimport { IWorkspaceWithDpCount } from '../../../../../../shared/interfaces/workspace.interface';\nimport { Api } from '../../../../../../shared/constants/api';\nimport { IUserServerResponse, IUser } from '../../../../../../shared/interfaces/user.interface';\nimport { UserService } from '../../../../services/user.service';\nimport { $user } from '../../../../../../shared/constants/user';\nimport { NotificationPosition } from '../../../../models/notification.model';\nimport { NotificationService } from '../../../../services/notification.service';\nimport { ErrorHandlerService } from '../../../../services/error-handler.service';\nimport { BusMessageChannels, BusMessageService } from '../../../../services/bus-message.service';\nimport { WorkspaceService } from '../../../../services/workspace.service';\nimport { CheckboxConfirmationModalComponent } from '../../../../components/modals/checkbox-confirmation-modal/checkbox-confirmation-modal.component';\nimport { ModalService } from '../../../../services/modal.service';\nimport { AlertModalComponent } from '../../../../components/modals/alert-modal/alert-modal.component';\nimport { AlertModalOptions } from '../../../../interfaces/modal-dialog.interface';\nimport { LoadErrorHandler } from '../../../../services/load-error-handler';\nimport { AclSecurityAdapter } from '../../../../services/acl.service';\nimport { RequiredSecurities } from '../../../../../../shared/constants/required-securities';\nimport { WorkspaceUserSearchFields } from '../../../../../../shared/constants/workspace-user.constants';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../../shared/utils/linked-property.utility';\nimport { IDropdownItem } from '../../../../components/table/ngb-table/cells/dropdown-cell/dropdown-cell.component';\nimport { UserAclService } from '../../../../services/user-acl.service';\n\n@Component({\n selector: 'app-tenant-workspaces-table',\n templateUrl: 'tenant-workspaces-table.component.html',\n})\nexport class TenantWorkspacesTableComponent implements OnInit, OnDestroy {\n @Input() private workspaces$: Observable;\n @Input() private reloadWorkspaces$: BehaviorSubject;\n @Input() private isFiltered: boolean = false;\n private subscriptions: Subscription;\n private slicedWorkspaces$: Observable;\n private activeWorkspacesCount: number;\n private selectedWorkspace: string;\n\n public tableData$: Observable;\n public workspaceCount$: Observable;\n public page$: BehaviorSubject;\n\n public get page(): number {\n return this.page$.value;\n }\n\n public set page(value: number) {\n this.page$.next(value);\n }\n\n public pageSize$: BehaviorSubject;\n\n public get pageSize(): number {\n return this.pageSize$.value;\n }\n\n public set pageSize(value: number) {\n this.pageSize$.next(value);\n }\n\n public userId: string;\n public errorResponseMessages: Array;\n public errorMessage: string;\n\n public pageSizeLimits: readonly number[];\n public onSort$: BehaviorSubject;\n\n public constructor(\n private translateService: TranslateService,\n private userService: UserService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private notificationService: NotificationService,\n private errorHandlerService: ErrorHandlerService,\n private busMessageService: BusMessageService,\n private workspaceService: WorkspaceService,\n private modalService: ModalService,\n private loadErrorHandler: LoadErrorHandler,\n private userAclService: UserAclService,\n ) {\n this.userId = '';\n this.errorResponseMessages = [];\n this.errorMessage = '';\n this.selectedWorkspace = '';\n this.subscriptions = new Subscription();\n this.pageSizeLimits = DEFAULT_ENTRY_LIMITS;\n this.page$ = new BehaviorSubject(1);\n this.pageSize$ = new BehaviorSubject(DEFAULT_ENTRY_LIMITS[DEFAULT_ENTRY_LIMITS.length - 1]);\n this.onSort$ = new BehaviorSubject(null);\n this.activeWorkspacesCount = 0;\n }\n\n private toTableData(entries: IWorkspaceWithDpCount[], hasEditPermissions: boolean, hasDeletePermissions: boolean): ITableRow[] {\n const closedWorkspaceDescription = this.translateService.instant('closed_workspace_description');\n return entries.map((entry: IWorkspaceWithDpCount) => {\n if (entry.status === workspaceStatus.active) {\n const editWorkspaceItem: IDropdownItem = {\n label: this.translateService.instant(`edit_action`),\n clickListener: (): void => this.editSelectedWorkspace(entry),\n disabled: false,\n };\n const closeWorkspaceItem: IDropdownItem = {\n label: this.translateService.instant(`action_close`),\n clickListener: async (): Promise => await this.handleCloseWorkspace(entry),\n disabled: this.isWorkspaceUsedNow(entry) || this.activeWorkspacesCount <= 1,\n };\n\n const dropdownItems: IDropdownItem[] = [\n ...(hasEditPermissions ? [editWorkspaceItem] : []),\n ...(hasDeletePermissions ? [closeWorkspaceItem] : []),\n ];\n\n if (dropdownItems.length === 0) {\n dropdownItems.push({\n disabled: true,\n label: this.translateService.instant('no_actions_available'),\n clickListener: () => {},\n });\n }\n\n return {\n data: {\n [$workspace.name]: NgbTableUtilities.linkCell({\n text: entry[$workspace.name],\n attributes: {\n routerLink: `./${Api.workspaces}/${entry[$workspace._id]}`,\n },\n }),\n [$workspace.description]: NgbTableUtilities.textCell({\n text: entry[$workspace.description],\n }),\n [$workspace.digitalPropertiesCount]: NgbTableUtilities.textCell({\n text: entry[$workspace.digitalPropertiesCount]?.toString(),\n }),\n actions: NgbTableUtilities.dropdownCell({\n ellipsisIcon: true,\n classes: ['btn-link', 'px-0'],\n dropdownItems: dropdownItems,\n }),\n },\n };\n }\n\n return {\n data: {\n [$workspace.name]: NgbTableUtilities.textCell({\n text: entry[$workspace.name],\n }),\n [$workspace.description]: NgbTableUtilities.textCell({\n text: closedWorkspaceDescription,\n }),\n [$workspace.digitalPropertiesCount]: NgbTableUtilities.textCell({\n text: '',\n }),\n actions: NgbTableUtilities.textCell({\n text: '',\n }),\n },\n styles: {\n backgroundColor: '#e9ecef',\n },\n };\n });\n }\n\n private loadTable(): void {\n const hasEditPermissions$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter.useEntityLevel().useFunctionalActions(RequiredSecurities.Workspaces_Update.functionalActions).check(),\n ),\n );\n\n const hasDeletePermissions$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter.useEntityLevel().useFunctionalActions(RequiredSecurities.Workspaces_Delete.functionalActions).check(),\n ),\n );\n\n this.tableData$ = combineLatest([this.slicedWorkspaces$, hasEditPermissions$, hasDeletePermissions$]).pipe(\n map(\n ([slicedWorkspaces, hasEditPermissions, hasDeletePermissions]: [\n IWorkspaceWithDpCount[],\n boolean,\n boolean,\n ]): ITableRow[] => {\n return this.toTableData(slicedWorkspaces, hasEditPermissions, hasDeletePermissions);\n },\n ),\n );\n }\n\n private isWorkspaceUsedNow(workspace: IWorkspaceWithDpCount): boolean {\n return this.selectedWorkspace === '' ? false : workspace._id === this.selectedWorkspace;\n }\n\n private onRemoveWorkspaceSuccess(workspaceClient: IWorkspaceWithDpCount): void {\n this.reloadWorkspaces$.next();\n const message: string = this.translateService.instant('removed_selected_workspace_success', [workspaceClient.name]);\n\n this.errorMessage = '';\n this.errorResponseMessages = [];\n this.notificationService.success(message, NotificationPosition.Toast);\n\n this.busMessageService.to(BusMessageChannels.workspaceDeleted).next();\n this.loadTable();\n }\n\n private onRemoveWorkspaceError(error: HttpErrorResponse): void {\n this.loadErrorHandler.handleError(\n this.translateService.instant('error_while_removing_workspace'),\n error,\n TenantWorkspacesTableComponent.name,\n );\n }\n\n private isOtherUsersPresent(users: IUser[]): boolean {\n // if we don't have a userId, assume that there are other users in the workspaces besides\n // the current user\n if (SharedCommonUtility.isNullishOrEmpty(this.userId)) {\n return true;\n }\n\n return users.some((user: IUser): boolean => user[$user._id] !== this.userId);\n }\n\n private displayUsersPresentAlert(): void {\n const modalOptions: AlertModalOptions = {\n headerKey: 'close_workspace_users_present_header',\n bodyKey: 'close_workspace_users_present_subtitle',\n bodyHighlightKey: 'close_workspace_users_present_warning',\n closeBtnKey: 'label_close',\n };\n const alertModal: AlertModalComponent = this.modalService.open(AlertModalComponent).instance;\n alertModal.init(modalOptions);\n }\n\n private async removeWorkspace(workspaceClient: IWorkspaceWithDpCount): Promise {\n const confirmModal: CheckboxConfirmationModalComponent = this.modalService.open(CheckboxConfirmationModalComponent).instance;\n confirmModal.init(\n 'label_close_workspace',\n 'close_workspace_subtitle',\n 'close_workspace_warning',\n 'close_workspace_confirmation',\n 'label_close_workspace',\n );\n\n await confirmModal.container.onClose$.pipe(take(1)).toPromise();\n\n if (confirmModal.confirmed && !confirmModal.cancelled) {\n this.subscriptions.add(\n this.workspaceService.removeWorkspace(workspaceClient._id).subscribe({\n next: this.onRemoveWorkspaceSuccess.bind(this, workspaceClient),\n error: this.onRemoveWorkspaceError.bind(this),\n }),\n );\n }\n }\n\n private async handleCloseWorkspace(workspace: IWorkspaceWithDpCount): Promise {\n const onGetWorkspaceUsersSuccess = (users: IUser[]): void => {\n if (this.isOtherUsersPresent(users)) {\n this.displayUsersPresentAlert();\n } else {\n this.removeWorkspace(workspace);\n }\n };\n\n const onGetWorkspaceUsersError = (response: HttpErrorResponse): void => {\n this.loadErrorHandler.handleError(\n this.translateService.instant('unable_to_get_all_workspace_users'),\n response,\n TenantWorkspacesTableComponent.name,\n );\n };\n\n this.subscriptions.add(\n this.workspaceService.getUsers(workspace._id, { [WorkspaceUserSearchFields.includeStaffUsers]: true }).subscribe({\n next: onGetWorkspaceUsersSuccess.bind(this),\n error: onGetWorkspaceUsersError.bind(this),\n }),\n );\n }\n\n private editSelectedWorkspace(workspaceClient: IWorkspaceWithDpCount): void {\n this.router\n .navigate([Api.workspaces, workspaceClient._id, Api.edit], { relativeTo: this.activatedRoute })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n public get tableConfig(): ITableConfig {\n return {\n columns: {\n [$workspace.name]: {\n translationKey: 'label_workspace_name',\n sortingEnabled: true,\n styles: {\n width: '20%',\n },\n },\n [$workspace.description]: {\n translationKey: 'label_description',\n sortingEnabled: false,\n },\n [$workspace.digitalPropertiesCount]: {\n translationKey: 'digital_properties',\n sortingEnabled: false,\n },\n actions: {\n translationKey: 'table_column_actions',\n styles: {\n width: '15%',\n },\n },\n },\n caption: this.translateService.instant('table_column_workspaces'),\n emptyState: {\n title: this.translateService.instant(\n this.isFiltered ? 'no_workspaces_found_with_that_name_url' : 'no_workspaces_for_tenant',\n ),\n subtitle: this.translateService.instant(\n this.isFiltered ? 'no_digital_properties_found_description' : 'no_workspaces_for_tenant_hint',\n ),\n },\n };\n }\n\n public ngOnInit(): void {\n this.slicedWorkspaces$ = combineLatest([this.workspaces$, this.page$, this.pageSize$, this.onSort$]).pipe(\n map(([workspaces, page, pageSize, onSort]: [IWorkspaceWithDpCount[], number, number, SortEvent]) => {\n const sortedWorkspaces: IWorkspaceWithDpCount[] = [...workspaces];\n this.activeWorkspacesCount = sortedWorkspaces.filter(\n (workspace: IWorkspaceWithDpCount) => workspace.status === workspaceStatus.active,\n ).length;\n if (!SharedCommonUtility.isNullish(onSort) && onSort.direction !== $sortingOrder.all) {\n sortedWorkspaces.sort((a: IWorkspaceWithDpCount, b: IWorkspaceWithDpCount) => {\n return a[$workspace.name].localeCompare(b[$workspace.name]) * (onSort.direction === $sortingOrder.desc ? -1 : 1);\n });\n }\n return sortedWorkspaces.slice((page - 1) * pageSize, page * pageSize);\n }),\n );\n this.loadTable();\n this.workspaceCount$ = this.workspaces$.pipe(\n map((workspaces: IWorkspaceWithDpCount[]) => workspaces.length),\n startWith(0),\n );\n\n const onGetUserSuccess = (user: IUserServerResponse): void => {\n this.userId = user?.[$user._id] ?? '';\n };\n\n const onGetUserError = (error: HttpErrorResponse): void => {\n this.loadErrorHandler.handleError('error_getting_me_profile', error, TenantWorkspacesTableComponent.name);\n };\n\n this.subscriptions.add(\n this.userService.getAuthenticatedUserProfile().subscribe({\n next: onGetUserSuccess.bind(this),\n error: onGetUserError.bind(this),\n }),\n );\n\n const onGetWorkspacesError = (error: HttpErrorResponse): void => {\n this.loadErrorHandler.handleError(\n this.translateService.instant('error_while_getting_workspace_data'),\n error,\n TenantWorkspacesTableComponent.name,\n );\n };\n\n this.subscriptions.add(\n this.activatedRoute.queryParams\n .pipe(\n map(LinkedPropertyUtility.fromLinkedPropertyQueryParam),\n tap((linkedPropertyData: ILinkedPropertyData): void => {\n this.selectedWorkspace = linkedPropertyData[Api.workspaceId];\n }),\n catchError(onGetWorkspacesError.bind(this)),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n \n \n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { standardNameAndLevel } from '../../../../shared/constants/scanning';\n\n@Component({\n selector: 'app-accessibility-conformance-level-selector',\n templateUrl: './accessibility-conformance-level-selector.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AccessibilityConformanceLevelSelectorComponent),\n multi: true,\n },\n ],\n})\nexport class AccessibilityConformanceLevelSelectorComponent implements OnInit, ControlValueAccessor {\n public conformanceLevel: string | null;\n public accessibilityConformanceOptions: standardNameAndLevel[];\n\n @Input() public disabled: boolean;\n @Input() public required: boolean;\n @Input() public errorState: boolean;\n @Input() public errorMessage: string;\n @Input() public formValidationRequest$: Subject;\n\n private _onChange: (_level: string) => void;\n private _onTouched: () => void;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.disabled = false;\n this.conformanceLevel = null;\n this._onChange = (_level: string): void => {};\n this._onTouched = (): void => {};\n }\n\n private buildAccessibilityLevelOptions(): void {\n this.accessibilityConformanceOptions = Object.values(standardNameAndLevel).filter(\n (standard: standardNameAndLevel) => standard !== standardNameAndLevel.essential_v10_A,\n );\n }\n\n public onConformanceLevelChange(event: Event): void {\n const target: HTMLInputElement = event.target as HTMLInputElement;\n if (target.value === this.conformanceLevel) {\n return;\n }\n\n this.conformanceLevel = target.value;\n this._onTouched();\n this._onChange(target.value);\n this.changeDetectorRef.detectChanges();\n }\n\n public setDisabledState(_disabled: boolean): void {\n this.disabled = _disabled;\n this.changeDetectorRef.detectChanges();\n }\n\n public registerOnChange(fn: (_level: string) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public writeValue(value: string): void {\n this.conformanceLevel = value;\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnInit(): void {\n this.buildAccessibilityLevelOptions();\n }\n}\n","
\n
\n \n {{ 'label_advanced_search' | translate }}\n \n \n \n \n
\n \n {{ 'reset' | translate }}\n \n \n
\n
\n
\n\n\n
\n
\n \n \n
\n\n
\n \n\n
\n \n {{ 'action_add' | translate }}\n \n 1\"\n (click)=\"removeSearchRow(index)\"\n >\n {{ 'action_remove' | translate }}\n \n
\n
\n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nexport enum AdvancedSearchOperation {\n contains = 'contains',\n does_not_contain = 'does_not_contain',\n ends_with = 'ends_with',\n starts_with = 'starts_with',\n regex = 'regex',\n}\n\nexport enum $advancedSearchForm {\n fieldToSearch = 'fieldToSearch',\n operation = 'operation',\n value = 'value',\n}\n\nexport interface IAdvancedSearchRow {\n [$advancedSearchForm.fieldToSearch]: string;\n [$advancedSearchForm.operation]: AdvancedSearchOperation;\n [$advancedSearchForm.value]: string;\n}\n\n@Component({\n selector: 'app-advanced-search',\n templateUrl: './advanced-search.component.html',\n styleUrls: ['./advanced-search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdvancedSearchComponent implements OnInit {\n public $advancedSearchForm: typeof $advancedSearchForm;\n public searchFields: UntypedFormArray;\n public searchForm: UntypedFormGroup;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n\n @Output()\n public onApply: EventEmitter;\n @Input()\n public fieldsToSearch: string[];\n @Input()\n public operations: AdvancedSearchOperation[];\n @Input()\n public defaultField: string;\n @Input()\n public defaultOperation: AdvancedSearchOperation;\n @Input()\n public initialRows: IAdvancedSearchRow[];\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.onApply = new EventEmitter();\n this.$advancedSearchForm = $advancedSearchForm;\n\n this.searchFields = this.formBuilder.array([]);\n this.searchForm = this.formBuilder.group({\n searchFields: this.searchFields,\n });\n }\n\n public addSearchRow(row?: IAdvancedSearchRow): void {\n const searchRow: IAdvancedSearchRow = {\n [$advancedSearchForm.fieldToSearch]: row?.[$advancedSearchForm.fieldToSearch] ?? this.defaultField,\n [$advancedSearchForm.operation]: row?.[$advancedSearchForm.operation] ?? this.defaultOperation,\n [$advancedSearchForm.value]: row?.[$advancedSearchForm.value] ?? '',\n };\n this.searchFields.push(this.formBuilder.group(searchRow));\n this.changeDetectorRef.detectChanges();\n }\n\n public removeSearchRow(index: number): void {\n this.searchFields.removeAt(index);\n this.changeDetectorRef.detectChanges();\n }\n\n public submitSearch(): void {\n this.onApply.emit(this.searchFields.value);\n this.changeDetectorRef.detectChanges();\n }\n\n public resetSearch(): void {\n this.searchFields.clear();\n this.addSearchRow();\n this.onApply.emit(this.searchFields.value);\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnInit(): void {\n if (Array.isArray(this.initialRows) && this.initialRows.length > 0) {\n this.initialRows.forEach(this.addSearchRow.bind(this));\n } else {\n this.addSearchRow();\n }\n }\n\n public get exceededLimit(): boolean {\n return this.fieldsToSearch?.length === this.searchFields?.length;\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\n\nimport { MarkdownUtility, RenderType } from '../../../../shared/utils/markdown.utility';\n\n@Component({\n selector: 'app-ai-chat-markdown-view',\n template: `
`,\n})\nexport class AiChatMarkdownViewComponent implements OnChanges {\n @Input() public value: string;\n\n public convertedData: string;\n\n public ngOnChanges(): void {\n this.convertedData = MarkdownUtility.render(this.value || '', RenderType.AICHAT);\n }\n}\n","\n \n \n \n\n

\n 0\">{{ header }}\n {{ 'error_header' | translate }}\n

\n\n

{{ message }}

\n\n 0\">\n
\n
    \n
  • \n
\n
\n
\n

{{ 'error_page_screenshot' | translate }}

\n \"{{\n
\n
\n

{{ 'error_page_header' | translate }}

\n
{{ getHeaderData() }}
\n
\n
\n
\n
\n\n \n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { alertType } from '../../constants/alert.constants';\nimport { IErrorPageScreenshot } from '../../../../shared/interfaces/error.interface';\n\n@Component({\n selector: 'app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent implements OnInit {\n private _type: alertType;\n\n @Output() public onClose: EventEmitter;\n\n @Input()\n public get type(): alertType {\n return this._type;\n }\n public set type(type: alertType) {\n this._type = type;\n this.setFocusForDangerAlert(type); // Note: this shouldn't be here as setter should only be responsible for setting a value. This is a temporary solution.\n }\n\n @Input() public header: string;\n @Input() public technicalDetails: Array;\n @Input() public pageScreenshot: IErrorPageScreenshot | null;\n @Input() public message: string;\n\n public get isVisible(): boolean {\n return this.message?.length > 0;\n }\n\n public componentId: string;\n public errorDetailsAriaExpandedState: boolean;\n\n constructor() {\n this.onClose = new EventEmitter();\n this.header = '';\n this.message = '';\n this.technicalDetails = [];\n this.errorDetailsAriaExpandedState = false;\n this.pageScreenshot = null;\n }\n\n private setFocusForDangerAlert(type: alertType): void {\n if (type === alertType.danger) {\n CommonUtility.setFocusToElement(this.componentId);\n }\n }\n\n public remove(): void {\n this.header = '';\n this.message = '';\n this.technicalDetails.length = 0;\n this.pageScreenshot = null;\n this.onClose.emit();\n }\n\n public getHeaderData(): string {\n return JSON.stringify(this.pageScreenshot.header, null, 2);\n }\n\n public ngOnInit(): void {\n this.componentId = 'alert-' + this.type + '-' + CommonUtility.createUniqueDOMId();\n }\n}\n","
\n \n \n \n \n \n \n \n \n \n
\n
{{ fileName }}
\n
\n \n {{ 'missing_alt_text' | translate }}\n
\n
\n \n \n \n \n {{ 'action_download' | translate }}\n \n \n
\n \n \n \n
\n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
\n
\n
\n
\n
\n
\n","import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, OnChanges, ComponentRef } from '@angular/core';\nimport { $allowedManualAuditAttachmentExt } from '../../../../shared/constants/manual-audit-issues';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { Icons } from '../../shared/eap-icons.component';\nimport { EapColors } from '../../shared/eap-colors';\nimport { ModalService } from '../../services/modal.service';\nimport {\n EditAttachmentModalComponent,\n IEditAttachment,\n IEditAttachmentModalContext,\n} from './edit-attachment/edit-attachment-modal.component';\nimport { ImageFileExtensions } from '../../../../shared/constants/mime-type';\n\n@Component({\n selector: 'app-attachment-thumbnail',\n templateUrl: './attachment-thumbnail.component.html',\n styleUrls: ['./attachment-thumbnail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AttachmentThumbnailComponent implements OnChanges {\n private static readonly IMAGE_FILE_EXTENSIONS: Set = new Set(ImageFileExtensions);\n\n public readonly Icons: typeof Icons = Icons;\n public readonly EapColors: typeof EapColors = EapColors;\n public $allowedManualAuditAttachmentExt: typeof $allowedManualAuditAttachmentExt;\n public fileExtension: string;\n public displayMissingAltTextWarning: boolean;\n\n @Input() public fileUploadId: string;\n @Input() public fileName: string;\n @Input() public fileThumbnailPath: string;\n @Input() public fileDownloadLink: string;\n @Input() public fileRelativePath: string;\n @Input() public isEditable: boolean;\n @Input() public isRemovable: boolean;\n @Input() public isInternal: boolean;\n @Input() public altText: string;\n\n @Output() public updateAttachment: EventEmitter = new EventEmitter();\n @Output() public removeAttachment: EventEmitter = new EventEmitter();\n\n constructor(private modalService: ModalService) {\n this.$allowedManualAuditAttachmentExt = $allowedManualAuditAttachmentExt;\n }\n\n public edit(): void {\n const modal: ComponentRef = this.modalService.open(EditAttachmentModalComponent);\n\n const context: IEditAttachmentModalContext = {\n uploadId: this.fileUploadId,\n altText: SharedCommonUtility.notNullish(this.altText) ? this.altText : null,\n onSave: this.updateAttachment,\n };\n\n modal.instance.init(context);\n }\n\n public remove(): void {\n this.removeAttachment.emit();\n }\n\n public ngOnChanges(): void {\n if (SharedCommonUtility.notNullish(this.fileName)) {\n this.fileExtension = SharedCommonUtility.getFileExtension(this.fileName);\n }\n\n this.isEditable = this.isEditable && AttachmentThumbnailComponent.IMAGE_FILE_EXTENSIONS.has(this.fileExtension);\n this.displayMissingAltTextWarning = this.isEditable && SharedCommonUtility.isNullishOrEmpty(this.altText);\n }\n}\n","import { Component, ElementRef, EventEmitter, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { $uploads } from '../../../../../shared/constants/uploads';\nimport { IModal } from '../../modals/modal.interface';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { CHAR_LIMIT_ALT_TEXT } from '../../../../../shared/constants/audit-finding';\nimport { ModalContainerComponent } from '../../modals/modal-container.component';\nimport { ErrorMessageService } from '../../../services/error-message.service';\n\nexport interface IEditAttachment {\n uploadId: string;\n altText: string;\n}\n\nexport interface IEditAttachmentModalContext {\n uploadId: string;\n altText?: string;\n onSave?: EventEmitter;\n}\n\n@Component({\n selector: 'app-edit-attachment-thumbnail',\n templateUrl: './edit-attachment-modal.component.html',\n styleUrls: ['./edit-attachment-modal.component.scss'],\n})\nexport class EditAttachmentModalComponent implements IModal {\n public readonly $uploads: typeof $uploads = $uploads;\n public readonly CHAR_LIMIT_ALT_TEXT: number = CHAR_LIMIT_ALT_TEXT;\n public formValidationRequest$: Subject = new Subject();\n public form: UntypedFormGroup;\n public uploadId: string;\n\n private onSave: EventEmitter;\n\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private element: ElementRef,\n private errorMessageService: ErrorMessageService,\n ) {}\n\n public init(context: IEditAttachmentModalContext): void {\n this.uploadId = context.uploadId;\n\n this.form = this.formBuilder.group({\n [$uploads.altText]: this.formBuilder.control(context.altText, [\n CustomValidators.required,\n CustomValidators.maxLength(CHAR_LIMIT_ALT_TEXT),\n ]),\n });\n\n this.onSave = context.onSave ?? new EventEmitter();\n }\n\n public cancel(): void {\n this.container.closeModal();\n }\n\n public save(): void {\n const isFormPristine: boolean = this.form.pristine;\n\n this.formValidationRequest$.next();\n\n if (this.form.invalid) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n\n if (isFormPristine) {\n this.container.closeModal();\n return;\n }\n\n const editAttachment: IEditAttachment = {\n uploadId: this.uploadId,\n altText: this.form.get($uploads.altText).value,\n };\n\n this.onSave.emit(editAttachment);\n this.container.closeModal();\n }\n}\n","\n
\n {{ 'edit_screenshot' | translate }}\n
\n\n
\n
{{ 'required_fields_label' | translate }}
\n
{{ 'screenshot' | translate }}
\n\n
\n
\n \n
\n
\n\n \n \n \n
\n\n \n
\n","
\n
{{ 'delete_rule_are_you_sure' | translate }}
\n
\n
\n
\n
\n
\n
{{ 'audit_rule_property_rule_id' | translate }}
\n
{{ rule.ruleId }}
\n
\n
\n
{{ 'audit_rule_property_description' | translate }}
\n
{{ rule.description }}
\n
\n
\n
{{ 'version' | translate }}
\n
\n
{{ standard.WCAG?.versions | arraytostring }}
\n
\n
\n
\n
{{ 'label_wcag_success_critera' | translate }}
\n
\n
{{ displayWCAGOrNACriteria(standard) }}
\n
\n
\n
\n
{{ 'library' | translate }}
\n
\n {{ rule.libraryName }}\n
\n
\n
\n
{{ 'audit_rule_property_category' | translate }}
\n
{{ rule.category }}
\n
\n
\n
{{ 'audit_rule_property_severity' | translate }}
\n
\n \n \n \n \n
\n
\n
\n
\n
\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { combineLatest, Subscription } from 'rxjs';\n\nimport { IAuditRuleWithLibraryName, ICustomAuditRuleWithLibraryName } from '../audit-rule-view/audit-rule-view.component';\nimport { IAuditStandard } from '../../../../../shared/interfaces/audit-rule.interface';\nimport { CriteriaPreset, Separator, SuccessCriteriaFormatterService } from '../../../services/success-criteria-formatter.service';\nimport { AuditStandards } from '../../../../../shared/constants/audit-standard';\nimport { $successCriteria } from '../../../../../shared/audits/definitions/success-criteria/constants';\nimport { FeatureFlagService } from '../../../services/feature-flag/feature-flag.service';\nimport { FeatureFlagCollection } from '../../../../../shared/interfaces/feature-flag.interface';\nimport { ICustomSeveritiesMap } from '../../../../../shared/interfaces/tenant.interface';\nimport { TenantSeveritiesService } from '../../../services/tenant-severities.service';\nimport { $severity } from '../../../../../shared/constants/accessibility';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { SharedTextUtility } from '../../../../../shared/utils/text.utility';\nimport { $customSeverity } from '../../../../../shared/constants/tenant';\n\n@Component({\n selector: 'app-audit-delete-rule-modal-content',\n templateUrl: './audit-delete-rule-modal-content.component.html',\n})\nexport class AuditDeleteRuleModalContentComponent implements OnInit, OnDestroy {\n @Input() public rule: ICustomAuditRuleWithLibraryName | IAuditRuleWithLibraryName;\n @Input() public isCustomRule: boolean;\n public customSeverityFF: boolean;\n public customSeverities: ICustomSeveritiesMap;\n public customSeverityKeysSortedByRank: $severity[];\n private subscriptions: Subscription;\n\n constructor(\n private successCriteriaFormatterService: SuccessCriteriaFormatterService,\n private featureFlagService: FeatureFlagService,\n private tenantSeveritiesService: TenantSeveritiesService,\n private translateService: TranslateService,\n ) {\n this.subscriptions = new Subscription();\n }\n\n public displayWCAGOrNACriteria(standard: IAuditStandard): string {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n identifiers: [\n standard?.[AuditStandards.wcag]?.[$successCriteria.num],\n standard?.[AuditStandards.notApplicable]?.[$successCriteria.num],\n ],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaIdentifierWithLevel,\n });\n }\n\n public getSeverityLabel(severity: string): string {\n const customLabel: string = SharedTextUtility.capitalize(\n this.customSeverities?.get(severity as $severity)?.[$customSeverity.label],\n );\n if (this.customSeverityFF && SharedCommonUtility.notNullishOrEmpty(customLabel)) {\n return customLabel;\n }\n return this.translateService.instant(severity);\n }\n\n public ngOnInit(): void {\n if (this.isCustomRule) {\n this.subscriptions.add(\n combineLatest([\n this.tenantSeveritiesService.getAll(),\n this.featureFlagService.variation$(FeatureFlagCollection.customSeverities, false),\n ]).subscribe(([customSeverities, customSeverityFF]: [ICustomSeveritiesMap, boolean]) => {\n this.customSeverityFF = customSeverityFF;\n this.customSeverities = customSeverities;\n this.customSeverityKeysSortedByRank = SharedCommonUtility.notNullishOrEmpty(this.customSeverities)\n ? this.tenantSeveritiesService.getCustomSeverityKeysSortedByRank(this.customSeverities)\n : [];\n }),\n );\n } else {\n this.subscriptions.add(\n this.featureFlagService\n .variation$(FeatureFlagCollection.customSeverities, false)\n .subscribe((customSeverityFF: boolean) => {\n this.customSeverityFF = customSeverityFF;\n }),\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n
\n \n \n
\n
\n\n
\n
\n {{ 'label_rows_per_page' | translate }}\n \n
\n\n
\n {{ paginationLabel$ | async }}\n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n {{ (pageNum !== page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n
\n
\n","import { ViewportScroller } from '@angular/common';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NgbPaginationConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { BehaviorSubject, combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { Icons } from '@levelaccess/design-system';\nimport {\n IDclConfig,\n ITableColumn,\n ITableConfig,\n ITableEmptyState,\n ITableRow,\n SortEvent,\n} from '../../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { NgbTableUtilities } from '../../table/ngb-table/utilities/ngb-table.utilities';\nimport { DEFAULT_ENTRY_LIMITS, DEFAULT_PAGINATION_MAX_SIZE } from '../../../constants/form.constants';\nimport { IAuditRuleServerItem, IAuditRuleServerResponse } from '../../../../../shared/interfaces/audit-rule.interface';\nimport { $auditRule } from '../../../../../shared/constants/audit-rule';\nimport { $sortingOrder } from '../../../../../shared/constants/sort';\nimport { Api } from '../../../../../shared/constants/api';\nimport { ICellConfig } from '../../table/ngb-table/cells/base-cell/base-cell.component';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { IDropdownItem } from '../../table/ngb-table/cells/dropdown-cell/dropdown-cell.component';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport {\n CriteriaPreset,\n Divider,\n Separator,\n SuccessCriteriaFormatterService,\n} from '../../../services/success-criteria-formatter.service';\nimport { $auditStandardSuccessCriteria } from '../../../../../shared/constants/audit-standard-success-criteria';\nimport {\n $auditStandard,\n AuditDbStandard,\n AuditDbStandardValues,\n AuditStandards,\n mapAuditDbStandardToAuditStandard,\n} from '../../../../../shared/constants/audit-standard';\nimport { ISuccessCriteria } from '../../../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { SuccessCriteriaService } from '../../../services/success-criteria.service';\nimport { ICustomSeveritiesMap, ICustomSeverity } from '../../../../../shared/interfaces/tenant.interface';\nimport { $severity } from '../../../../../shared/constants/accessibility';\nimport { IDSSeverityCellConfig } from '../../table/ngb-table/cells/ds-severity-cell/ds-severity-cell.component';\nimport { $customSeverity } from '../../../../../shared/constants/tenant';\nimport { SeverityClass } from '../../../interfaces/custom-severities.interface';\nimport { IAuditStandardObjectSuccessCriteria } from '../../../../../shared/interfaces/audit-standard-success-criteria.interface';\nimport { IAuditStandard } from '../../../../../shared/interfaces/audit-standard.interface';\n\nenum TableColumns {\n ruleId = 'ruleId',\n description = 'description',\n criteria = 'criteria',\n wcagSuccessCriteria = 'wcagSuccessCriteria',\n standard = 'standard',\n toolVersion = 'toolVersion',\n severity = 'severity',\n actions = 'actions',\n}\n\n@Component({\n selector: 'app-audit-rule-table',\n templateUrl: './audit-rule-table.component.html',\n providers: [NgbPaginationConfig],\n})\nexport class AuditRuleTableComponent implements OnInit, OnDestroy {\n private _rules$: Subject;\n private pageSize$: BehaviorSubject;\n @Input()\n private page$: BehaviorSubject;\n @Input()\n private emptyStateConfig?: ITableEmptyState;\n\n private subscriptions: Subscription;\n private _hasCustomRulesFlag$: BehaviorSubject;\n private _canEditRule$: BehaviorSubject;\n private _canDeleteRule$: BehaviorSubject;\n private _customSeverities$: BehaviorSubject;\n\n public pageData$: Observable;\n public pageSizes: readonly number[];\n public paginationLabel$: Observable;\n public taskCount$: Observable;\n public tableConfig$: Observable;\n\n @Input()\n public set rules(value: IAuditRuleServerResponse) {\n this._rules$.next(value);\n }\n\n @Input()\n public set canEditRule(value: boolean) {\n this._canEditRule$.next(value);\n }\n\n @Input()\n public set canDeleteRule(value: boolean) {\n this._canDeleteRule$.next(value);\n }\n\n @Input()\n public set customSeverities(value: ICustomSeveritiesMap) {\n this._customSeverities$.next(value);\n }\n\n @Input()\n public set hasCustomRulesFlag(value: boolean) {\n this._hasCustomRulesFlag$.next(value);\n }\n\n public set pageSize(value: number) {\n this.pageSize$.next(value);\n this.pageSizeChanged.next(value);\n }\n\n public get pageSize(): number {\n return this.pageSize$.value;\n }\n\n public set page(value: number) {\n this.page$.next(value);\n this.viewportScroller.scrollToPosition([0, 0]);\n this.pageChanged.next(value);\n }\n\n public get page(): number {\n return this.page$.value;\n }\n\n @Output()\n public pageChanged: EventEmitter;\n @Output()\n public pageSizeChanged: EventEmitter;\n @Output()\n public sortChange: EventEmitter<[$auditRule, $sortingOrder]>;\n @Output()\n public auditRuleDeleted: EventEmitter;\n\n public constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private translateService: TranslateService,\n private viewportScroller: ViewportScroller,\n private ngbPaginationConfig: NgbPaginationConfig,\n private errorHandlerService: ErrorHandlerService,\n private successCriteriaFormatterService: SuccessCriteriaFormatterService,\n private successCriteriaService: SuccessCriteriaService,\n ) {\n this.pageSizes = DEFAULT_ENTRY_LIMITS;\n this.pageSize$ = new BehaviorSubject(DEFAULT_ENTRY_LIMITS[DEFAULT_ENTRY_LIMITS.length - 1]);\n this.page$ = new BehaviorSubject(1);\n this.pageChanged = new EventEmitter();\n this.pageSizeChanged = new EventEmitter();\n this.sortChange = new EventEmitter<[$auditRule, $sortingOrder]>();\n this.auditRuleDeleted = new EventEmitter();\n this._canEditRule$ = new BehaviorSubject(false);\n this._canDeleteRule$ = new BehaviorSubject(false);\n this._customSeverities$ = new BehaviorSubject(null);\n this.ngbPaginationConfig.maxSize = DEFAULT_PAGINATION_MAX_SIZE;\n this.subscriptions = new Subscription();\n this._hasCustomRulesFlag$ = new BehaviorSubject(false);\n this._rules$ = new Subject();\n }\n\n private editAuditRule(id: string): void {\n this.router\n .navigate([id, Api.edit], { relativeTo: this.activatedRoute })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n private getSuccessCriteriaStandards(\n successCriteria: IAuditStandardObjectSuccessCriteria,\n customRulesFlag: boolean,\n ): AuditStandards[] {\n let result: AuditStandards[];\n if (SharedCommonUtility.notNullishOrEmpty(successCriteria['standard'])) {\n result = Array.isArray(successCriteria['standard']) ? successCriteria['standard'] : [successCriteria['standard']];\n } else {\n result = Array.isArray(successCriteria[$auditStandardSuccessCriteria.auditStandards])\n ? successCriteria[$auditStandardSuccessCriteria.auditStandards].map(\n (auditStandard: IAuditStandard): AuditStandards =>\n mapAuditDbStandardToAuditStandard[auditStandard[$auditStandard.standard]],\n )\n : [mapAuditDbStandardToAuditStandard[successCriteria[$auditStandardSuccessCriteria.auditStandards]]];\n }\n\n if (!customRulesFlag) {\n result = result.filter((standard: AuditStandards): boolean =>\n AuditDbStandardValues.map(\n (dbStandard: AuditDbStandard): AuditStandards => mapAuditDbStandardToAuditStandard[dbStandard],\n ).includes(standard),\n );\n }\n return [...new Set(result)];\n }\n\n private getRuleCriteria(ruleDef: IAuditRuleServerItem, customRulesFlag: boolean): Map {\n const result: Map = new Map();\n ruleDef[$auditRule.successCriterias].forEach((criteria: IAuditStandardObjectSuccessCriteria): void => {\n const standards: AuditStandards[] = this.getSuccessCriteriaStandards(criteria, customRulesFlag);\n standards.forEach((standard: AuditStandards): void => {\n const standardCriteria: ISuccessCriteria = this.successCriteriaService.getSuccessCriteriaFromStandard(\n standard,\n criteria[$auditStandardSuccessCriteria.identifier],\n );\n if (standardCriteria) {\n result.set(standard, [...(result.get(standard) ?? []), standardCriteria]);\n }\n });\n });\n return result;\n }\n\n private ruleToPageRow(\n rule: IAuditRuleServerItem,\n canEditRule: boolean,\n canDeleteRule: boolean,\n customSeverities: ICustomSeveritiesMap,\n customRulesFlag: boolean,\n ): ITableRow {\n const ruleCriterias: Map = this.getRuleCriteria(rule, customRulesFlag);\n\n const customRulesData = (): Record> => ({\n [TableColumns.criteria]: NgbTableUtilities.htmlCell({\n text: [\n ...new Set(\n rule[$auditRule.successCriterias]?.flatMap((successCriteria: IAuditStandardObjectSuccessCriteria) => {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n standards: this.getSuccessCriteriaStandards(successCriteria, customRulesFlag),\n identifiers: [successCriteria[$auditStandardSuccessCriteria.identifier]],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaIdentifierWithHandle,\n divider: Divider.hyphen,\n });\n }),\n ),\n ].join('\\n'),\n classes: ['pre-line'],\n }),\n [TableColumns.standard]: NgbTableUtilities.htmlCell({\n text: this.successCriteriaFormatterService.getAccessibilityStandards(ruleCriterias).join('\\n'),\n classes: ['pre-line'],\n }),\n });\n\n const legacyData = (): Record> => ({\n [TableColumns.wcagSuccessCriteria]: NgbTableUtilities.htmlCell({\n text: [\n ...new Set(\n rule[$auditRule.successCriterias]?.flatMap((successCriteria: IAuditStandardObjectSuccessCriteria) => {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n standards: this.getSuccessCriteriaStandards(successCriteria, customRulesFlag),\n identifiers: [successCriteria[$auditStandardSuccessCriteria.identifier]],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaIdentifierWithLevel,\n });\n }),\n ),\n ].join('\\n'),\n classes: ['pre-line'],\n }),\n [TableColumns.toolVersion]: NgbTableUtilities.htmlCell({\n text: [\n ...new Set(\n rule.successCriterias?.flatMap((successCriteria: IAuditStandardObjectSuccessCriteria) => {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n standards: this.getSuccessCriteriaStandards(successCriteria, customRulesFlag),\n identifiers: [successCriteria[$auditStandardSuccessCriteria.identifier]],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaVersions,\n });\n }),\n ),\n ].join('\\n'),\n classes: ['pre-line'],\n }),\n });\n\n const getSeverityConfig = (severity: $severity): Partial => {\n const customSeverity: ICustomSeverity = customSeverities.get(severity);\n if (customSeverity[$customSeverity.system]) {\n return {};\n }\n\n const highSeverity: ICustomSeverity = customSeverities.get($severity.high);\n if (customSeverity[$customSeverity.rank] === highSeverity[$customSeverity.rank] - 1) {\n return {\n class: SeverityClass.moderate,\n icon: Icons.ChevronUp,\n };\n }\n return {\n class: SeverityClass.minor,\n icon: Icons.ChevronDown,\n };\n };\n\n const data: Record> = {\n [TableColumns.ruleId]: NgbTableUtilities.linkCell({\n text: rule.ruleId,\n attributes: {\n routerLink: `./${rule.ruleId}/${Api.view}`,\n },\n }),\n [TableColumns.description]: NgbTableUtilities.textCell({ text: rule.description }),\n ...(customRulesFlag ? customRulesData() : legacyData()),\n [TableColumns.severity]: customSeverities\n ? NgbTableUtilities.DSSeverityCell({\n severity: rule.severity,\n customSeverity: customSeverities.get(rule.severity),\n ...getSeverityConfig(rule.severity),\n })\n : NgbTableUtilities.severityCell({ severity: rule.severity }),\n };\n\n const editAuditRuleItem: IDropdownItem = {\n label: this.translateService.instant('action_edit'),\n clickListener: this.editAuditRule.bind(this, rule[$auditRule.ruleId]),\n };\n const deleteAuditRuleItem: IDropdownItem = {\n label: this.translateService.instant('action_delete'),\n clickListener: () => this.auditRuleDeleted.emit(rule[$auditRule.ruleId]),\n };\n\n const actionItems: IDropdownItem[] = [\n ...(canEditRule ? [editAuditRuleItem] : []),\n ...(canDeleteRule ? [deleteAuditRuleItem] : []),\n ];\n\n if (SharedCommonUtility.notNullishOrEmpty(actionItems)) {\n data[TableColumns.actions] = NgbTableUtilities.dropdownCell({\n ellipsisIcon: true,\n classes: ['btn-link', 'px-0'],\n dropdownItems: actionItems,\n ariaLabel: this.translateService.instant('action_for_rule', [rule[$auditRule.ruleId]]),\n });\n }\n\n return { data };\n }\n\n public getTableConfig(canEditRule: boolean, canDeleteRule: boolean, customRulesFlag: boolean): ITableConfig {\n const customRulesColumns: Record = {\n [TableColumns.criteria]: {\n translationKey: 'label_criteria',\n styles: {\n maxWidth: '25%',\n width: '25%',\n },\n },\n [TableColumns.standard]: {\n translationKey: 'label_standard',\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n },\n };\n\n const legacyColumns: Record = {\n [TableColumns.wcagSuccessCriteria]: {\n translationKey: 'issue_field_successCriteria',\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n },\n [TableColumns.toolVersion]: {\n translationKey: 'version',\n styles: {\n maxWidth: '7.5%',\n width: '7.5%',\n },\n },\n };\n\n const columns: Record = {\n [TableColumns.ruleId]: {\n translationKey: 'issue_field_ruleId',\n sortingEnabled: true,\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n },\n [TableColumns.description]: {\n translationKey: 'issue_description',\n sortingEnabled: true,\n styles: {\n maxWidth: '1px',\n minWidth: '300px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n },\n ...(customRulesFlag ? customRulesColumns : legacyColumns),\n [TableColumns.severity]: {\n translationKey: 'issue_field_severity',\n sortingEnabled: false,\n styles: {\n maxWidth: '10%',\n width: '10%',\n },\n },\n };\n\n if (canEditRule || canDeleteRule) {\n columns[TableColumns.actions] = {\n translationKey: 'table_column_actions',\n styles: {\n width: '7.5%',\n maxWidth: '7.5%',\n },\n };\n }\n\n return {\n columns: columns,\n caption: this.translateService.instant('table_caption_tasks'),\n emptyState: SharedCommonUtility.notNullish(this.emptyStateConfig)\n ? this.emptyStateConfig\n : {\n title: this.translateService.instant('no_search_results_available'),\n subtitle: this.translateService.instant('label_no_search_results_hint'),\n },\n };\n }\n\n public onSort(event: SortEvent): void {\n this.sortChange.next([$auditRule[event.column], event.direction]);\n }\n\n public ngOnInit(): void {\n this.tableConfig$ = combineLatest([this._canEditRule$, this._canDeleteRule$, this._hasCustomRulesFlag$]).pipe(\n map(\n ([canEditRule, canDeleteRule, customRulesFlag]: [boolean, boolean, boolean]): ITableConfig =>\n this.getTableConfig(canEditRule, canDeleteRule, customRulesFlag),\n ),\n );\n\n this.pageData$ = combineLatest([\n this._rules$,\n this._canEditRule$,\n this._canDeleteRule$,\n this._customSeverities$,\n this._hasCustomRulesFlag$,\n ]).pipe(\n map(\n ([rules, canEditRule, canDeleteRule, customSeverities, customRuleFlag]: [\n IAuditRuleServerResponse,\n boolean,\n boolean,\n ICustomSeveritiesMap,\n boolean,\n ]) => {\n return (rules.auditRules as IAuditRuleServerItem[]).map(\n (auditRule: IAuditRuleServerItem): ITableRow =>\n this.ruleToPageRow(auditRule, canEditRule, canDeleteRule, customSeverities, customRuleFlag),\n );\n },\n ),\n );\n\n this.taskCount$ = this._rules$.pipe(map((rules: IAuditRuleServerResponse) => rules._total));\n\n this.paginationLabel$ = combineLatest([this.taskCount$, this.page$, this.pageSize$]).pipe(\n map(([taskCount, page, pageSize]: [number, number, number]) => {\n const startIndex = Math.min((page - 1) * pageSize + 1, taskCount);\n const lastIndex = Math.min(startIndex + pageSize - 1, taskCount);\n return this.translateService.instant('n_of_t', [`${startIndex} - ${lastIndex}`, String(taskCount)]);\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n
{{ 'audit_rule_property_rule_id' | translate }}
\n
{{ rule.ruleId }}
\n
\n
\n\n
\n
\n
{{ 'audit_rule_property_description' | translate }}
\n
{{ rule.description }}
\n
\n
\n\n@if (showCustomRulesData) {\n
\n
\n
{{ 'audit_rule_property_severity' | translate }}
\n @if (customSeverities) {\n \n } @else {\n \n }\n
\n
\n
{{ 'testing_medium' | translate }}
\n
\n {{ rule.testingMedium }}\n
\n
\n
\n
{{ 'audit_rule_property_category' | translate }}
\n
{{ rule.category }}
\n
\n
\n
\n
\n
{{ 'accessibility_standard' | translate }}
\n
\n {{ standard }} \n
\n
\n
\n
{{ 'label_criteria' | translate }}
\n
\n {{ criteria }}\n
\n
\n
\n} @else {\n
\n
\n
{{ 'label_wcag_success_critera' | translate }}
\n
\n {{ displayWCAGOrNACriteria(standard) }}\n
\n
\n
\n
{{ 'version' | translate }}
\n
\n {{ getStandardVersions(standard) | arraytostring }} \n
\n
\n
\n
\n
\n
{{ 'audit_rule_property_severity' | translate }}
\n @if (customSeverities) {\n \n } @else {\n \n }\n
\n
\n
{{ 'library' | translate }}
\n
\n {{ rule.libraryName }}\n
\n
\n
\n
{{ 'audit_rule_property_category' | translate }}
\n
{{ rule.category }}
\n
\n
\n}\n\n
\n
\n
{{ 'issue_field_stepsToReproduce' | translate }}
\n
\n
\n
\n\n
\n
\n
{{ 'issue_field_actualResult' | translate }}
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n
\n
{{ 'issue_field_recommendation' | translate }}
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n
\n
{{ 'issue_field_functionalImpact' | translate }}
\n
{{ 'label_issue_effort_' + rule.functionalImpact | translate }}
\n
\n
\n\n
\n
\n
{{ 'issue_field_disabilityAffected' | translate }}
\n
    \n
  • \n {{ 'issue_field_disability_' + disability | translate }}\n
  • \n
\n
\n
\n\n
\n
\n
{{ 'issue_field_selectors' | translate }}
\n
{{ rule.applicableElementsSelectors.join('\\n') }}
\n
\n
\n\n
\n
\n
{{ 'audit_rule_property_test_id' | translate }}
\n
{{ rule.testId }}
\n
\n
\n\n
\n
\n
{{ 'audit_rule_property_test_name' | translate }}
\n
{{ rule.testName }}
\n
\n
\n\n
\n
\n
{{ 'audit_rule_property_test_manual_steps' | translate }}
\n
\n
\n
\n\n
\n

{{ 'audit_rule_property_mapped_automated_tests' | translate }}

\n\n
\n
{{ 'audit_rule_property_mapped_automated_rule_id' | translate }}
\n
{{ rule.referencedRule?.ruleId }} {{ rule.referencedRule?.title }}
\n
\n
\n\n
\n
\n
{{ 'label_compliant_code_example' | translate }}
\n
\n
\n
\n\n
\n
\n
{{ 'label_non-compliant_code_example' | translate }}
\n
\n
\n
\n\n
0\">\n
\n
{{ 'audit_rule_property_techniques' | translate }}
\n
\n
\n {{ technique }}\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { IAuditRule, IAuditRuleBase, IAuditStandard } from '../../../../../shared/interfaces/audit-rule.interface';\nimport { AuditToolNames } from '../../../../../shared/constants/audit-tool';\nimport { ICustomAuditRuleWithStandards } from '../../../../../shared/interfaces/custom-audit-rule.interface';\nimport { $auditRule } from '../../../../../shared/constants/audit-rule';\nimport {\n CriteriaPreset,\n Divider,\n Separator,\n SuccessCriteriaFormatterService,\n} from '../../../services/success-criteria-formatter.service';\nimport {\n $auditStandard,\n AuditDbStandard,\n AuditStandards,\n mapAuditDbStandardToAuditStandard,\n} from '../../../../../shared/constants/audit-standard';\nimport { $successCriteria } from '../../../../../shared/audits/definitions/success-criteria/constants';\nimport { ICustomSeveritiesMap } from '../../../../../shared/interfaces/tenant.interface';\nimport { $auditStandardSuccessCriteria } from '../../../../../shared/constants/audit-standard-success-criteria';\nimport { ISuccessCriteria } from '../../../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { SuccessCriteriaService } from '../../../services/success-criteria.service';\nimport { IAuditStandardObjectSuccessCriteria } from '../../../../../shared/interfaces/audit-standard-success-criteria.interface';\n\nexport interface ISharedAuditRule {\n libraryName: string;\n isAccessipediaRule: boolean;\n testingMedium: string;\n}\n\nexport interface IAuditRuleWithLibraryName extends IAuditRule, ISharedAuditRule {}\n\nexport interface ICustomAuditRuleWithLibraryName extends ICustomAuditRuleWithStandards, ISharedAuditRule {}\n\nexport type IRuleInput =\n | IAuditRuleWithLibraryName\n | (ICustomAuditRuleWithLibraryName &\n Pick<\n IAuditRuleBase,\n | $auditRule.compliantCodeExample\n | $auditRule.nonCompliantCodeExample\n | $auditRule.techniques\n | $auditRule.applicableElementsSelectors\n >);\n\n@Component({\n selector: 'app-audit-rule-view',\n templateUrl: './audit-rule-view.component.html',\n})\nexport class AuditRuleViewComponent {\n @Input() public rule: IRuleInput;\n @Input() public customSeverities: ICustomSeveritiesMap | null = null;\n @Input() public showCustomRulesData: boolean = false;\n\n public AuditToolNames: typeof AuditToolNames = AuditToolNames;\n\n constructor(\n private successCriteriaFormatterService: SuccessCriteriaFormatterService,\n private successCriteriaService: SuccessCriteriaService,\n ) {}\n\n public displayWCAGOrNACriteria(standard: IAuditStandard): string {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n standards: [standard.id],\n identifiers: [\n standard?.[standard.id]?.[$successCriteria.num],\n standard?.[AuditStandards.notApplicable]?.[$successCriteria.num],\n ],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaIdentifierWithLevel,\n });\n }\n\n public getStandardVersions(standard: IAuditStandard): string[] | undefined {\n return standard[standard.id]?.[$successCriteria.versions];\n }\n\n private getRuleStandardCriteriaMap(): Map {\n const result: Map = new Map();\n this.rule[$auditRule.successCriterias].forEach((criteria: IAuditStandardObjectSuccessCriteria): void => {\n const standards: AuditStandards[] = this.getSuccessCriteriaStandards(criteria);\n standards.forEach((standard: AuditStandards): void => {\n const standardCriteria: ISuccessCriteria = this.successCriteriaService.getSuccessCriteriaFromStandard(\n standard,\n criteria[$auditStandardSuccessCriteria.identifier],\n );\n if (standardCriteria) {\n result.set(standard, [...(result.get(standard) ?? []), standardCriteria]);\n }\n });\n });\n return result;\n }\n\n public getRuleAccessibilityStandards(): string[] {\n const ruleCriterias: Map = this.getRuleStandardCriteriaMap();\n return this.successCriteriaFormatterService.getAccessibilityStandards(ruleCriterias);\n }\n\n private getSuccessCriteriaStandards(successCriteria: IAuditStandardObjectSuccessCriteria): AuditStandards[] {\n return [\n ...new Set(\n successCriteria[$auditStandardSuccessCriteria.auditStandards].map(\n (std: any): AuditStandards => mapAuditDbStandardToAuditStandard[std[$auditStandard.standard] as AuditDbStandard],\n ),\n ),\n ];\n }\n\n public getRuleCriteria(): string[] {\n return [\n ...new Set(\n this.rule[$auditRule.successCriterias]?.flatMap((successCriteria: IAuditStandardObjectSuccessCriteria): string[] => {\n return this.getSuccessCriteriaStandards(successCriteria).map((standard: AuditStandards) =>\n this.successCriteriaFormatterService.toDisplayCriterias({\n standards: [standard],\n identifiers: [successCriteria[$auditStandardSuccessCriteria.identifier]],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaIdentifierWithHandle,\n divider: Divider.hyphen,\n }),\n );\n }),\n ),\n ];\n }\n}\n","
\n
\n
\n
\n
\n

{{ 'rule_details' | translate }}

\n {{ 'required_fields_label' | 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
{{ 'accessibility_standards' | translate }}
\n \n 0; else placeholder\">\n
\n {{ standard }}\n
\n
\n
\n \n {{ 'accessibility_standards_placeholder' | 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
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n \n
\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n
\n
\n \n {{ 'form_save' | translate }}\n \n\n \n {{ 'form_cancel' | translate }}\n \n
\n
\n
\n
\n
\n","import { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { distinctUntilChanged, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { omit, pick } from 'lodash';\nimport { DsButtonVariants } from '@levelaccess/design-system';\n\nimport { $auditRule, AuditRuleAction } from '../../../../../shared/constants/audit-rule';\nimport { ISuccessCriteria } from '../../../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { $successCriteria } from '../../../../../shared/audits/definitions/success-criteria/constants';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { IAuditRule, IAuditRuleLibrary } from '../../../../../shared/interfaces/audit-rule.interface';\nimport { AuditRuleService } from '../../../services/audit-rule.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { $severity, customSeverities } from '../../../../../shared/constants/accessibility';\nimport { Api } from '../../../../../shared/constants/api';\nimport { ErrorMessageService } from '../../../services/error-message.service';\nimport { AuditFindingDisabilityAffected, AuditFindingIssueEffort } from '../../../../../shared/constants/audit-finding';\nimport { INameValue } from '../../../../../shared/interfaces/common.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { DesignRuleLibrary } from '../../../../../shared/constants/design-rule';\nimport { AngularUtility } from '../../../utility/angular.utility';\nimport { librariesWithTestData, ruleLibraryCodeNames } from '../../../../../shared/constants/rule-library';\nimport { SuccessCriteriaService } from '../../../services/success-criteria.service';\nimport { MasterLibraryHelper } from '../../../admin/master-library/master-library.helper';\nimport { CustomAuditRuleService } from '../../../services/custom-audit-rule.service';\nimport { AuditRuleUpsertRequest, IAuditRuleFormSubmission } from '../../../interfaces/audit-rule.interface';\nimport { ICustomAuditRuleWithLibraryName } from '../audit-rule-view/audit-rule-view.component';\nimport { IEditCustomAuditRules } from '../../../../../shared/interfaces/custom-audit-rule.interface';\nimport { IAuditRuleEditRequest } from '../../../../../shared/interfaces/audit-rule.request.interface';\nimport {\n EVALUATION_MEDIUM_TO_RULE_LIBRARY_CODE,\n EVALUATION_MEDIUMS,\n EvaluationMediums,\n RULE_LIBRARY_CODE_TO_EVALUATION_MEDIUM,\n} from '../../../../../shared/constants/manual-evaluation';\nimport { $manualAudit } from '../../../../../shared/constants/manual-audit';\nimport { AuditStandards } from '../../../../../shared/constants/audit-standard';\nimport { FeatureFlagService } from '../../../services/feature-flag/feature-flag.service';\nimport { FeatureFlagCollection } from '../../../../../shared/interfaces/feature-flag.interface';\nimport { ICustomSeveritiesMap, ICustomSeverity } from '../../../../../shared/interfaces/tenant.interface';\nimport { TenantSeveritiesService } from '../../../services/tenant-severities.service';\nimport { SelectFieldContext } from '../../common-select/common-select.component';\nimport { SharedTextUtility } from '../../../../../shared/utils/text.utility';\nimport { $customSeverity } from '../../../../../shared/constants/tenant';\n\n/**\n * This form was extracted from the old create-rule.component.ts into a reusable component to follow DRY principle.\n * Master library rules and custom audit rules now reuse it on their own creation views, so most of the logic is shared.\n * Note that there is also special logic for the custom audit rules to meet particular needs.\n */\n\ninterface IAuditRuleForm {\n [$auditRule.ruleId]: FormControl;\n [$auditRule.description]: FormControl;\n [$auditRule.successCriterias]: FormControl;\n [$auditRule.ruleLibrary]: FormControl;\n [$auditRule.category]: FormControl;\n [$auditRule.severity]: FormControl<$severity>;\n [$auditRule.recommendation]: FormControl;\n [$auditRule.stepsToReproduce]: FormControl;\n [$auditRule.actualResult]: FormControl;\n [$auditRule.functionalImpact]: FormControl;\n [$auditRule.disabilitiesAffected]: FormControl;\n [$auditRule.testId]: FormControl;\n [$auditRule.testName]: FormControl;\n [$auditRule.testManualSteps]: FormControl;\n [$auditRule.compliantCodeExample]: FormControl;\n [$auditRule.nonCompliantCodeExample]: FormControl;\n [$auditRule.techniques]: FormControl;\n [$manualAudit.evaluationMedium]: FormControl;\n}\n\n@Component({\n selector: 'app-upsert-audit-rule-form',\n templateUrl: './upsert-audit-rule-form.component.html',\n})\nexport class UpsertAuditRuleFormComponent implements AfterViewChecked, OnInit, OnDestroy, AfterViewInit {\n private librariesRaw$: Observable;\n private subscription: Subscription;\n private existingRuleIds: string[] | null;\n public selectedLibrary$: Observable;\n public selectedMedium$: Observable;\n\n @Input() public isCustomAuditRule: boolean;\n\n @Input() public action: AuditRuleAction;\n\n @Input()\n public set auditRuleData(auditRule: IAuditRule | ICustomAuditRuleWithLibraryName) {\n this.auditRule = auditRule;\n this.setForm();\n }\n\n @Output()\n public save: EventEmitter;\n\n public form: FormGroup;\n public formValidationRequest$: Subject;\n public successCriterias: ISuccessCriteria[];\n public libraries$: Observable;\n public categories$: Observable;\n public severities$: Observable;\n public functionalImpacts: INameValue[];\n public disabilities: INameValue[];\n public auditRule: IAuditRule | ICustomAuditRuleWithLibraryName;\n public currentLibrary: string;\n public showTestFields: boolean;\n public Api: typeof Api = Api;\n public $auditRule: typeof $auditRule = $auditRule;\n public $manualAudit: typeof $manualAudit = $manualAudit;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public ruleLibraryCodeNames: typeof ruleLibraryCodeNames = ruleLibraryCodeNames;\n public AuditRuleAction: typeof AuditRuleAction = AuditRuleAction;\n public accessibilityStandards$: Observable;\n public evaluationMediums: string[];\n public isWebLaLibrary: boolean;\n\n public constructor(\n private formBuilder: FormBuilder,\n private changeDetectorRef: ChangeDetectorRef,\n private auditRuleService: AuditRuleService,\n private customAuditRuleService: CustomAuditRuleService,\n private translateService: TranslateService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private errorMessageService: ErrorMessageService,\n private element: ElementRef,\n private successCriteriaService: SuccessCriteriaService,\n private featureFlagService: FeatureFlagService,\n private tenantSeveritiesService: TenantSeveritiesService,\n ) {\n this.form = this.createForm();\n this.formValidationRequest$ = new Subject();\n this.$auditRule = $auditRule;\n this.successCriterias = this.successCriteriaService.getAllSupportedCriteriaFromStandard();\n\n this.functionalImpacts = Object.keys(AuditFindingIssueEffort).map((key: string) => ({\n value: key,\n name: `label_issue_effort_${key}`,\n }));\n\n this.disabilities = Object.keys(AuditFindingDisabilityAffected).map((key: string) => ({\n value: key,\n name: `issue_field_disability_${key}`,\n }));\n\n this.subscription = new Subscription();\n this.existingRuleIds = null;\n this.save = new EventEmitter();\n this.evaluationMediums = EVALUATION_MEDIUMS.filter(\n (medium: EvaluationMediums) => ![EvaluationMediums.hardware, EvaluationMediums.pv_web].includes(medium),\n ).map((medium: EvaluationMediums) => medium.toString());\n }\n\n private createForm(): FormGroup {\n return this.formBuilder.group({\n [$auditRule.ruleId]: this.formBuilder.control(null, [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$auditRule.description]: this.formBuilder.control(null, [CustomValidators.validateIsEmpty]),\n [$auditRule.successCriterias]: this.formBuilder.control(null, [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n ]),\n [$auditRule.ruleLibrary]: this.formBuilder.control(null, [CustomValidators.validateIsEmpty]),\n [$auditRule.category]: this.formBuilder.control(null, [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$auditRule.severity]: this.formBuilder.control(null, [CustomValidators.validateIsEmpty]),\n [$auditRule.recommendation]: this.formBuilder.control('', [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$auditRule.stepsToReproduce]: this.formBuilder.control('', [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$auditRule.actualResult]: this.formBuilder.control('', [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$auditRule.functionalImpact]: this.formBuilder.control(null, [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n ]),\n [$auditRule.disabilitiesAffected]: this.formBuilder.control(null, [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n ]),\n [$auditRule.testId]: this.formBuilder.control('', []),\n [$auditRule.testName]: this.formBuilder.control('', []),\n [$auditRule.testManualSteps]: this.formBuilder.control('', []),\n [$auditRule.compliantCodeExample]: this.formBuilder.control('', [CustomValidators.maxLength(2000)]),\n [$auditRule.nonCompliantCodeExample]: this.formBuilder.control('', [CustomValidators.maxLength(2000)]),\n [$auditRule.techniques]: this.formBuilder.control('', [CustomValidators.maxLength(2000)]),\n [$manualAudit.evaluationMedium]: this.formBuilder.control(null, []),\n });\n }\n\n private setForm(): void {\n if (this.auditRule) {\n let ruleSuccessCriterias: string[];\n if ($auditRule.wcagCriteria in this.auditRule) {\n // only admin portal rules have this field populated atm\n ruleSuccessCriterias = this.auditRule[$auditRule.wcagCriteria];\n } else if ($auditRule.successCriterias in this.auditRule) {\n ruleSuccessCriterias = this.auditRule[$auditRule.successCriterias].map((cr: any) => cr.identifier);\n }\n\n this.form.patchValue(\n pick(\n {\n ...this.auditRule,\n [$auditRule.successCriterias]: ruleSuccessCriterias,\n [$auditRule.functionalImpact]: AuditFindingIssueEffort[this.auditRule.functionalImpact],\n [$auditRule.severity]: $severity[this.auditRule.severity],\n [$auditRule.techniques]: this.auditRule[$auditRule.techniques]?.join('\\n') ?? '',\n },\n Object.keys(this.form.controls),\n ),\n );\n }\n }\n\n private startPropagatingFormChangesToQueryParams(): void {\n this.subscription.add(\n this.form.valueChanges\n .pipe(\n withLatestFrom(this.activatedRoute.queryParams),\n map(([values, queryParams]: [Record, Params]) => {\n const newQueryParams: Record = {\n ...queryParams,\n [$auditRule.ruleLibrary]: values[$auditRule.ruleLibrary],\n [$auditRule.ruleId]: values[$auditRule.ruleId],\n [$auditRule.description]: values[$auditRule.description],\n [$auditRule.severity]: values[$auditRule.severity],\n };\n this.router\n .navigate([], {\n queryParams: newQueryParams,\n skipLocationChange: true,\n })\n .then();\n return null;\n }),\n )\n .subscribe(),\n );\n }\n\n private updateTestRelatedFormFields(displayTestFields: boolean): void {\n if (displayTestFields) {\n this.form.get($auditRule.testId).setValidators([CustomValidators.required, CustomValidators.validateIsEmpty]);\n this.form.get($auditRule.testName).setValidators([CustomValidators.required, CustomValidators.validateIsEmpty]);\n this.form.get($auditRule.testManualSteps).setValidators([CustomValidators.required, CustomValidators.validateIsEmpty]);\n } else {\n this.form.get($auditRule.testId).clearValidators();\n this.form.get($auditRule.testId).setErrors(null);\n this.form.get($auditRule.testName).setErrors(null);\n this.form.get($auditRule.testManualSteps).setErrors(null);\n }\n }\n\n private initializeLibrariesObservables(): void {\n this.librariesRaw$ = (\n this.isCustomAuditRule ? this.customAuditRuleService.getCustomAuditRulesLibrary() : this.auditRuleService.getLibraries()\n ).pipe(AngularUtility.shareRef());\n\n this.libraries$ = this.librariesRaw$.pipe(\n map((libraries: IAuditRuleLibrary[]) =>\n libraries.map((lib: IAuditRuleLibrary): { name: string; value: string } => ({\n value: lib._id,\n name: MasterLibraryHelper.getLibraryName(lib.name, this.translateService),\n })),\n ),\n tap((): void => {\n this.form.get($auditRule.ruleLibrary).setValue(this.currentLibrary);\n }),\n );\n\n const ruleLibraryValueChanges$: Observable = this.form\n .get($auditRule.ruleLibrary)\n .valueChanges.pipe(filter((value: string): boolean => SharedCommonUtility.notNullishOrEmpty(value)));\n this.selectedLibrary$ = combineLatest([ruleLibraryValueChanges$, this.librariesRaw$]).pipe(\n map(([selectedLibrary, allLibraries]: [string, IAuditRuleLibrary[]]): IAuditRuleLibrary => {\n return allLibraries.find((lib: IAuditRuleLibrary): boolean => lib._id === selectedLibrary);\n }),\n tap((library: IAuditRuleLibrary): void => {\n this.isWebLaLibrary = library.code === ruleLibraryCodeNames.web_la;\n if (this.isCustomAuditRule) {\n this.form.get($manualAudit.evaluationMedium).setValue(RULE_LIBRARY_CODE_TO_EVALUATION_MEDIUM[library.code], {\n emitEvent: this.action === AuditRuleAction.Create,\n });\n }\n }),\n );\n\n const criteriaChanges$: Observable = this.form.get($auditRule.successCriterias).valueChanges;\n this.accessibilityStandards$ = criteriaChanges$.pipe(\n distinctUntilChanged(),\n map((identifiers: string[]): string[] => this.getFormattedStandardsByIdentifiers(identifiers)),\n );\n\n this.categories$ = this.selectedLibrary$.pipe(\n map((library: IAuditRuleLibrary): string[] => {\n this.form.get($auditRule.category).setValue(library.categories[0]);\n return library.categories;\n }),\n );\n\n this.subscription.add(\n this.selectedLibrary$\n .pipe(\n map((library: IAuditRuleLibrary): boolean => {\n return librariesWithTestData.includes(library.code as ruleLibraryCodeNames);\n }),\n )\n .subscribe((libraryContainsTestData: boolean): void => {\n this.showTestFields = libraryContainsTestData || this.isCustomAuditRule;\n this.updateTestRelatedFormFields(libraryContainsTestData);\n }),\n );\n\n this.selectedMedium$ = this.form.get($manualAudit.evaluationMedium).valueChanges;\n this.subscription.add(\n combineLatest([this.selectedMedium$, this.librariesRaw$]).subscribe(\n ([selectedMedium, allLibraries]: [string, IAuditRuleLibrary[]]): void => {\n const code: ruleLibraryCodeNames = EVALUATION_MEDIUM_TO_RULE_LIBRARY_CODE[selectedMedium];\n const library: IAuditRuleLibrary = allLibraries.find((lib: IAuditRuleLibrary): boolean => lib.code === code);\n this.isWebLaLibrary = library.code === ruleLibraryCodeNames.web_la;\n\n if (this.isCustomAuditRule) {\n this.form.get($auditRule.ruleLibrary).setValue(library._id, { emitEvent: this.action === AuditRuleAction.Update });\n if (this.action === AuditRuleAction.Create) {\n this.categories$ = of(library.categories);\n this.form.get($auditRule.category).setValue(library.categories[0]);\n }\n }\n },\n ),\n );\n }\n\n private customAuditRuleInitializer(): void {\n this.form.get($auditRule.ruleId).addAsyncValidators(this.customAuditRuleService.validateRuleIdUniqueness());\n this.form.get($auditRule.ruleId).updateValueAndValidity();\n this.form.get($auditRule.ruleLibrary).setValidators(null);\n this.form.get($manualAudit.evaluationMedium).setValidators([CustomValidators.required, CustomValidators.validateIsEmpty]);\n this.showTestFields = true;\n this.updateTestRelatedFormFields(true);\n }\n\n private masterLibraryAuditRuleInitializer(): void {\n this.subscription.add(\n this.auditRuleService.getRuleIds().subscribe((ruleIds: string[]): void => {\n this.existingRuleIds = ruleIds;\n this.form\n .get($auditRule.ruleId)\n .setValidators([CustomValidators.validateIsEmpty, CustomValidators.ruleIdDuplicatedValidator(this.existingRuleIds)]);\n this.form.get($auditRule.ruleId).updateValueAndValidity();\n }),\n );\n\n this.subscription.add(\n this.activatedRoute.queryParams.subscribe((params: Params): void => {\n if (SharedCommonUtility.notNullish(params.ruleLibrary)) {\n if (this.currentLibrary !== params.ruleLibrary) {\n this.currentLibrary = params.ruleLibrary;\n this.form.get($auditRule.ruleLibrary).setValue(params.ruleLibrary);\n }\n\n const ruleId: string = params.ruleId ?? this.activatedRoute.snapshot.paramMap.get('ruleId');\n this.form.get($auditRule.ruleId).setValue(ruleId);\n if (params.ruleId) {\n this.form.get($auditRule.ruleId).markAsTouched();\n }\n\n this.form.get($auditRule.description).setValue(params.description);\n this.form.get($auditRule.severity).setValue(params.severity);\n\n if (params.ruleLibrary === DesignRuleLibrary.design) {\n this.router\n .navigate([`../${Api.createDesignRule}`], {\n relativeTo: this.activatedRoute,\n queryParamsHandling: 'preserve',\n skipLocationChange: true,\n })\n .then();\n }\n }\n }),\n );\n\n this.startPropagatingFormChangesToQueryParams();\n }\n\n private buildSeveritiesObservable(): void {\n this.severities$ = this.featureFlagService.variation$(FeatureFlagCollection.customSeverities, false).pipe(\n switchMap((customSeveritiesEnabled: boolean): Observable => {\n if (!customSeveritiesEnabled || !this.isCustomAuditRule) {\n let severityKeys: $severity[];\n\n if (this.isCustomAuditRule) {\n severityKeys = Object.values($severity).filter(\n (severity: $severity) => !TenantSeveritiesService.isCustomSeverity(severity),\n );\n } else {\n // Preserve info severity for audit form\n severityKeys = Object.values($severity).filter((severity: $severity) => !customSeverities.includes(severity));\n }\n\n return of(\n severityKeys.map((severity: $severity) => ({\n name: `scan_issue_severity_${severity}`,\n value: severity,\n })),\n );\n }\n\n return this.tenantSeveritiesService.getAll().pipe(\n map((customSeveritiesMap: ICustomSeveritiesMap): INameValue[] => {\n return this.tenantSeveritiesService\n .getSeverityKeysSortedByRank(customSeveritiesMap)\n .map((severity: $severity): INameValue | null => {\n const customSeverity: ICustomSeverity = customSeveritiesMap.get(severity);\n\n if (SharedCommonUtility.notNullish(customSeverity)) {\n return {\n name: SharedTextUtility.capitalize(customSeverity[$customSeverity.label]),\n value: severity,\n };\n }\n\n return null;\n })\n .filter((nameValue: INameValue) => SharedCommonUtility.notNullish(nameValue));\n }),\n );\n }),\n );\n }\n\n private getFormattedStandardsByIdentifiers(identifiers: string[]): string[] {\n if (SharedCommonUtility.isNullishOrEmpty(identifiers)) {\n return [];\n }\n\n const formattedStandards: string[] = [];\n const supportedStandards: AuditStandards[] = [AuditStandards.wcag, AuditStandards.en301549, AuditStandards.section508];\n\n for (const standard of supportedStandards) {\n const successCriteria: ISuccessCriteria[] = this.successCriteriaService.getSuccessCriteriaListFromStandards(identifiers, [\n standard,\n ]);\n if (SharedCommonUtility.notNullishOrEmpty(successCriteria)) {\n const levelByVersions: Record = successCriteria.reduce(\n (acc: Record, current: ISuccessCriteria): Record => {\n current.versions.forEach((version: string): void => {\n if (current[$successCriteria.level]) {\n acc[version] = [...new Set([...(acc[version] ?? []), current[$successCriteria.level]])];\n }\n });\n return acc;\n },\n {},\n );\n const versions: string[] = Object.keys(levelByVersions);\n if (versions.length > 0) {\n versions.forEach((version: string) => {\n formattedStandards.push(`${standard} ${version} ${levelByVersions[version].join(', ')}`);\n });\n } else {\n formattedStandards.push(standard);\n }\n }\n }\n\n return formattedStandards;\n }\n\n public successCriteriaToLabel(sc: ISuccessCriteria): string {\n return `${sc[$successCriteria.num]} ${sc[$successCriteria.handle]}`;\n }\n\n public successCriteriaToSelectedItem(sc: ISuccessCriteria): string {\n return sc[$successCriteria.num];\n }\n\n public findSuccessCriteriaToSelectedItem(sc: ISuccessCriteria): string {\n return sc[$successCriteria.num];\n }\n\n public onSave(): void {\n this.formValidationRequest$.next();\n\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return undefined;\n }\n\n let ruleUpsertRequest: AuditRuleUpsertRequest;\n\n if (this.action === AuditRuleAction.Create) {\n ruleUpsertRequest = omit(this.form.value, $manualAudit.evaluationMedium) as Required & {\n [$auditRule.successCriterias]: string[];\n [$auditRule.techniques]?: string[];\n };\n } else {\n ruleUpsertRequest = this.isCustomAuditRule\n ? (omit(\n this.form.value,\n $auditRule.ruleId,\n $auditRule.techniques,\n $manualAudit.evaluationMedium,\n ) as IEditCustomAuditRules)\n : (omit(\n this.form.value,\n $auditRule.ruleId,\n $auditRule.techniques,\n $manualAudit.evaluationMedium,\n ) as IAuditRuleEditRequest);\n }\n\n if (!this.showTestFields) {\n ruleUpsertRequest[$auditRule.testId] = null;\n ruleUpsertRequest[$auditRule.testName] = null;\n ruleUpsertRequest[$auditRule.testManualSteps] = null;\n }\n\n ruleUpsertRequest[$auditRule.techniques] = SharedCommonUtility.notNullishOrEmpty(this.form.value.techniques)\n ? this.form.value.techniques.split('\\n').filter(SharedCommonUtility.notNullishOrEmpty)\n : [];\n\n return this.save.emit({\n action: this.action,\n ruleUpsertRequest,\n });\n }\n\n public get cancelLink(): string[] {\n return this.isCustomAuditRule ? ['/', Api.custom_audit_rules] : ['/', Api.admin, Api.master_library];\n }\n\n public get librarySelectContext(): SelectFieldContext {\n if (this.isCustomAuditRule) {\n return {\n field: $manualAudit.evaluationMedium,\n label: 'testing_medium',\n translateName: true,\n };\n }\n\n return {\n field: $auditRule.ruleLibrary,\n label: 'library',\n valueKey: 'value',\n nameKey: 'name',\n };\n }\n\n public ngAfterViewInit(): void {\n this.form.get($auditRule.ruleLibrary).updateValueAndValidity();\n }\n\n public ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnInit(): void {\n this.initializeLibrariesObservables();\n this.buildSeveritiesObservable();\n\n if (!this.isCustomAuditRule) {\n this.masterLibraryAuditRuleInitializer();\n } else {\n this.customAuditRuleInitializer();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","
\n
\n \n
\n
\n
\n \n {{ 'rule_libraries' | translate }}\n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n

{{ headingTitleKey | translate }}

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n
\n
\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Data, NavigationExtras, Router } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { Api } from '../../../../../shared/constants/api';\nimport { IAuditRuleFormSubmission } from '../../../interfaces/audit-rule.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { $auditRule, AuditRuleAction } from '../../../../../shared/constants/audit-rule';\nimport { IAuditRule } from '../../../../../shared/interfaces/audit-rule.interface';\nimport { AuditRuleService } from '../../../services/audit-rule.service';\nimport { CustomAuditRuleService } from '../../../services/custom-audit-rule.service';\nimport { ICustomAuditRuleWithLibraryName } from '../audit-rule-view/audit-rule-view.component';\nimport { IAuditRuleCreateRequest, IAuditRuleEditRequest } from '../../../../../shared/interfaces/audit-rule.request.interface';\nimport { NotificationPosition } from '../../../models/notification.model';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { NotificationService } from '../../../services/notification.service';\nimport { ICreateCustomAuditRules, IEditCustomAuditRules } from '../../../../../shared/interfaces/custom-audit-rule.interface';\nimport { LoadErrorHandler } from '../../../services/load-error-handler';\n\n@Component({\n selector: 'app-upsert-audit-rule',\n templateUrl: './upsert-audit-rule.component.html',\n})\nexport class UpsertAuditRuleComponent implements OnInit, OnDestroy {\n protected Api: typeof Api = Api;\n\n public auditRuleAction: AuditRuleAction;\n public ruleId: string;\n public auditRule: IAuditRule | ICustomAuditRuleWithLibraryName;\n public isMasterRule: boolean;\n public isCreate: boolean;\n\n private subscription: Subscription;\n\n public constructor(\n private auditRuleService: AuditRuleService,\n private customAuditRuleService: CustomAuditRuleService,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n private loadErrorHandler: LoadErrorHandler,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n ) {\n this.subscription = new Subscription();\n }\n\n private getRouteData(data: Data): void {\n this.isMasterRule = SharedCommonUtility.notNullish(data['isMasterRule']) ? data['isMasterRule'] : false;\n this.isCreate = SharedCommonUtility.notNullish(data['isCreate']) ? data['isCreate'] : false;\n this.auditRuleAction = this.isCreate ? AuditRuleAction.Create : AuditRuleAction.Update;\n }\n\n private getRuleInfo(): void {\n this.ruleId = decodeURIComponent(this.activatedRoute.snapshot.paramMap.get('ruleId'));\n\n if (SharedCommonUtility.notNullish(this.ruleId) && this.auditRuleAction === AuditRuleAction.Update) {\n let ruleInfoSubscription: Subscription;\n if (this.isMasterRule) {\n ruleInfoSubscription = this.auditRuleService.findRuleByID(this.ruleId).subscribe((auditRule: IAuditRule): void => {\n this.auditRule = auditRule;\n });\n } else {\n ruleInfoSubscription = this.customAuditRuleService\n .findCustomAuditRuleByRuleId(this.ruleId)\n .subscribe((customAuditRule: ICustomAuditRuleWithLibraryName): void => {\n this.auditRule = customAuditRule;\n });\n }\n\n this.subscription.add(ruleInfoSubscription);\n }\n }\n\n private onSaveSuccess(): void {\n const ruleSaveTranslationKey: string = this.isCreate ? 'rule_save_success' : 'fields_save_success';\n this.notificationService.success(this.translateService.instant(ruleSaveTranslationKey), NotificationPosition.Toast, true);\n\n let commands: string[];\n let extras: NavigationExtras = {\n relativeTo: this.activatedRoute,\n };\n\n if (this.isMasterRule && this.isCreate) {\n commands = ['..'];\n extras = {\n ...extras,\n queryParams: {\n [$auditRule.ruleId]: null,\n [$auditRule.description]: null,\n },\n queryParamsHandling: 'merge',\n };\n } else if (!this.isMasterRule && this.isCreate) {\n commands = ['/', Api.custom_audit_rules];\n extras = {\n queryParamsHandling: 'preserve',\n };\n } else if (!this.isCreate) {\n commands = [`../../${this.ruleId}/${Api.view}`];\n }\n\n this.router.navigate(commands, extras).then();\n }\n\n private handleError(error: HttpErrorResponse): void {\n const ruleSaveErrorTranslationKey: string = this.isCreate ? 'audit_rule_creation_error' : 'error_action_cant_be_performed';\n\n if (this.isMasterRule && !this.isCreate) {\n this.notificationService.error(\n this.translateService.instant(ruleSaveErrorTranslationKey),\n NotificationPosition.Toast,\n true,\n );\n } else if (this.isCreate) {\n this.loadErrorHandler.handleError(ruleSaveErrorTranslationKey, error, UpsertAuditRuleComponent.name);\n }\n }\n\n public get isCustomRuleCreate(): boolean {\n return !this.isMasterRule && this.isCreate;\n }\n\n public get backLink(): string {\n return `/${Api.custom_audit_rules}`;\n }\n\n public get headingTitleKey(): string {\n return this.auditRuleAction === AuditRuleAction.Create ? 'add_rule' : 'edit_rule';\n }\n\n public save(auditRuleFormSubmission: IAuditRuleFormSubmission): void {\n if (this.isMasterRule) {\n if (this.isCreate) {\n this.subscription.add(\n this.auditRuleService.createAuditRule(auditRuleFormSubmission.ruleUpsertRequest as IAuditRuleCreateRequest).subscribe({\n next: this.onSaveSuccess.bind(this),\n error: this.handleError.bind(this),\n }),\n );\n } else {\n this.subscription.add(\n this.auditRuleService\n .editRuleByRuleId(auditRuleFormSubmission.ruleUpsertRequest as IAuditRuleEditRequest, this.ruleId)\n .subscribe({\n next: this.onSaveSuccess.bind(this),\n error: this.handleError.bind(this),\n }),\n );\n }\n } else if (!this.isMasterRule) {\n if (this.isCreate) {\n this.subscription.add(\n this.customAuditRuleService\n .createCustomAuditRule(auditRuleFormSubmission.ruleUpsertRequest as ICreateCustomAuditRules)\n .subscribe({\n next: this.onSaveSuccess.bind(this),\n error: this.handleError.bind(this),\n }),\n );\n } else {\n this.subscription.add(\n this.customAuditRuleService\n .editCustomAuditRuleByRuleId(auditRuleFormSubmission.ruleUpsertRequest as IEditCustomAuditRules, this.ruleId)\n .subscribe({\n next: this.onSaveSuccess.bind(this),\n error: this.handleError.bind(this),\n }),\n );\n }\n }\n }\n\n public ngOnInit(): void {\n this.subscription.add(this.activatedRoute.data.subscribe((data: Data) => this.getRouteData(data)));\n\n if (!this.isCreate) {\n this.getRuleInfo();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input } from '@angular/core';\nimport {\n ControlValueAccessor,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Observable, Subject } from 'rxjs';\n\nimport { IUserAvatar } from '../../../interfaces/user.interface';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { UserService } from '../../../services/user.service';\nimport { SupportedImageMimeType } from '../../../../../shared/constants/mime-type';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\n\n@Component({\n selector: 'app-avatar-input',\n templateUrl: './avatar-input.component.html',\n styleUrls: ['./avatar-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AvatarInputComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarInputComponent implements ControlValueAccessor {\n private avatarInputElement: HTMLInputElement;\n private formValidationRequest: Subject;\n\n @Input() public label: string;\n\n public avatarImg: HTMLElement;\n public value: IUserAvatar;\n public avatarResized: Blob;\n public hasAvatarError: boolean;\n public avatarSelectedFile: EventEmitter;\n public avatarFileList: FileList;\n public supportedAvatarFileTypes: string;\n public form: UntypedFormGroup;\n public formValidationRequest$: Observable;\n\n public onChange: Function;\n public onTouched: Function;\n public isDisabled: boolean;\n\n public uniqueId: string;\n\n constructor(\n private domSanitizer: DomSanitizer,\n private translateService: TranslateService,\n private userService: UserService,\n private changeDetectorRef: ChangeDetectorRef,\n private formBuilder: UntypedFormBuilder,\n ) {\n this.uniqueId = CommonUtility.createUniqueDOMId();\n this.hasAvatarError = false;\n this.avatarSelectedFile = new EventEmitter();\n this.avatarFileList = null;\n this.setDefaultAvatar();\n this.supportedAvatarFileTypes = SupportedImageMimeType.join(',');\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n this.form = this.createForm();\n }\n\n private createForm(): UntypedFormGroup {\n const formConfig: Record = {\n avatar: new UntypedFormControl(null, {\n validators: [CustomValidators.validateSingleFileIsImage],\n updateOn: 'change',\n }),\n };\n return this.formBuilder.group(formConfig);\n }\n\n private setDefaultAvatar(): void {\n const avatar: IUserAvatar = {\n alt: this.translateService.instant('default_avatar_alt'),\n src: this.domSanitizer.bypassSecurityTrustUrl(this.userService.getDefaultAvatarURL()),\n };\n\n this.value = avatar;\n }\n\n public triggerFileUploadDialog(): void {\n CommonUtility.triggerClickEventOnElement(this.uniqueId);\n }\n\n public onSelectedAvatar(event: Event): void {\n if (event === null) {\n return;\n }\n this.avatarInputElement = event.target as HTMLInputElement;\n\n if (typeof this.avatarInputElement.files === 'object' && this.avatarInputElement.files.length === 0) {\n this.avatarInputElement.files = this.avatarFileList;\n return;\n }\n\n this.avatarFileList = this.avatarInputElement.files;\n this.avatarSelectedFile.emit(this.avatarFileList?.item(0) || null);\n }\n\n public onCroppedFile(blob: Blob): void {\n const reader: FileReader = new FileReader();\n\n const updateImageSrc = (evt: Event): void => {\n const imageAsBase64: string = (evt.target as any).result;\n\n this.value.src = this.domSanitizer.bypassSecurityTrustUrl(imageAsBase64);\n this.value.alt = this.translateService.instant('edit_profile_user_avatar_alt_text');\n\n this.changeDetectorRef.detectChanges();\n this.onChange(this.value);\n reader.removeEventListener('load', updateImageSrc);\n };\n\n this.avatarResized = blob;\n this.value.blob = blob;\n\n reader.addEventListener('load', updateImageSrc);\n reader.readAsDataURL(blob);\n }\n\n public avatarOnError(event: Event): void {\n const target: HTMLImageElement = event.target as HTMLImageElement;\n\n console.warn('[AvatarInputComponent.avatarOnError]', event);\n\n this.hasAvatarError = target.clientWidth === 0;\n this.setDefaultAvatar();\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.changeDetectorRef.detectChanges();\n }\n\n public writeValue(obj: IUserAvatar): void {\n if (obj === null) {\n return;\n }\n this.value = obj;\n this.changeDetectorRef.detectChanges();\n }\n}\n","
\n
\n \n
\n
\n
\n \"{{\n
\n \n \n \n \n
\n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { isEqual } from 'lodash';\n\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { UserService } from '../../../services/user.service';\nimport { $user, accountStatus } from '../../../../../shared/constants/user';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-view-avatar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n `,\n})\nexport class ViewAvatarComponent implements OnChanges {\n @Input() public user: IUserServerResponse;\n @Input() public width: string = '1.5rem';\n @Input() public height: string = '1.5rem';\n\n constructor(\n private userService: UserService,\n private translateService: TranslateService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n public getUserAvatarUrl(): string {\n return this.userService.getAvatar(this.user);\n }\n\n public getAltText(): string {\n if (SharedCommonUtility.isNullish(this.user)) {\n return '';\n }\n\n if (this.user[$user.accountStatus] === accountStatus.active) {\n return this.user[$user.displayName];\n }\n\n return `${this.user[$user.displayName]} (${this.translateService.instant('status_inactive')})`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n for (const prop of Object.getOwnPropertyNames(changes)) {\n if (\n !SharedCommonUtility.isNullish(changes[prop].previousValue) &&\n !isEqual(changes[prop].previousValue, changes[prop].currentValue)\n ) {\n this.changeDetector.detectChanges();\n return;\n }\n }\n }\n}\n","\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n {{ message }}\n
\n \n \n \n
\n \n \n \n
\n
\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nexport enum BannerType {\n success = 'success',\n error = 'error',\n info = 'info',\n warning = 'warning',\n}\n\n/**\n * TODO DS-186: get rid of this component once alternative is added to the\n * design system components\n */\n@Component({\n selector: 'app-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n})\nexport class BannerComponent {\n @Input()\n public visible: boolean = true;\n\n @Input()\n public message: string;\n\n @Input()\n public isHtml: boolean = false;\n\n @Input()\n public isRawHtml: boolean = false;\n\n public show(): void {\n this.visible = true;\n }\n\n public hide(): void {\n this.visible = false;\n }\n\n @Input()\n public type: BannerType;\n\n @Input()\n public closeable: boolean;\n\n @Output()\n public onClose: EventEmitter = new EventEmitter();\n\n constructor() {\n this.closeable = true;\n this.type = BannerType.success;\n }\n\n public closeBanner(): void {\n this.hide();\n this.onClose.emit();\n }\n\n protected readonly BannerType: typeof BannerType = BannerType;\n protected readonly Icons: typeof Icons = Icons;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { IDsBreadcrumbItem } from '@levelaccess/design-system';\nimport { map } from 'rxjs/operators';\n\nimport { BreadcrumbsService } from '../breadcrumbs/breadcrumbs.service';\nimport { IBreadcrumb } from '../breadcrumbs/breadcrumbs.shared';\n\n// WARNING: this recursively adds breadcrumbs to all children routes\n\n@Component({\n selector: 'app-breadcrumb-wrapper',\n templateUrl: './breadcrumb-wrapper.component.html',\n})\nexport class BreadcrumbWrapperComponent implements OnInit {\n public breadcrumbs$: Observable;\n\n public static wrap(route: Route): Route {\n return {\n path: '',\n component: BreadcrumbWrapperComponent,\n children: [route],\n };\n }\n\n constructor(private breadcrumbsService: BreadcrumbsService) {}\n\n public ngOnInit(): void {\n this.breadcrumbs$ = this.breadcrumbsService.crumbs$.pipe(\n map((breadcrumbs: IBreadcrumb[]): IDsBreadcrumbItem[] => {\n return breadcrumbs.map(\n (breadcrumb: IBreadcrumb): IDsBreadcrumbItem => ({\n label: breadcrumb.textTranslated ?? breadcrumb.text,\n rtLink: breadcrumb.path,\n queryParams: breadcrumb.queryParams,\n }),\n );\n }),\n );\n }\n}\n"," \n","import { Observable, of, from } from 'rxjs';\nimport { Params, QueryParamsHandling, ResolveFn } from '@angular/router';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport type BreadcrumbParamsHandling = QueryParamsHandling | 'none';\n\nexport interface IBreadcrumb {\n text: string;\n textTranslated?: string;\n path: string;\n isLinkToPageAvailable: boolean;\n queryParamsHandling: BreadcrumbParamsHandling;\n queryParams: Params;\n}\n\n// Breadcrumbs resolvers should implement this interface\nexport interface IBreadcrumbsResolver {\n resolve: ResolveFn;\n}\n\nexport function isPromise(value: any): boolean {\n return value && typeof value.then === 'function';\n}\n\nexport function wrapIntoObservable(value: T | Promise | Observable): Observable {\n if (value instanceof Observable) {\n return value;\n }\n\n if (isPromise(value)) {\n return from(Promise.resolve(value));\n }\n\n return of(value as T);\n}\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, Data, ResolveFn, Route, Event } from '@angular/router';\nimport { BehaviorSubject, Observable, of, Subscription } from 'rxjs';\nimport { concat, distinct, filter, first, mergeMap, toArray } from 'rxjs/operators';\n\nimport { IBreadcrumb, IBreadcrumbsResolver, wrapIntoObservable } from './breadcrumbs.shared';\nimport { BreadcrumbsConfig, IPostProcessBreadcrumb } from '../../resolvers/breadcrumbs/breadcrumbs.config';\nimport { DefaultBreadcrumbsResolver } from '../../resolvers/breadcrumbs/default-breadcrumbs.resolver';\nimport { ActivatedRouteData } from '../../shared/constants';\n\n@Injectable()\nexport class BreadcrumbsService implements OnDestroy {\n private subscription: Subscription;\n private readonly _breadcrumbs: BehaviorSubject;\n\n constructor(\n private _router: Router,\n private _config: BreadcrumbsConfig,\n private _injector: Injector,\n private _defaultResolver: DefaultBreadcrumbsResolver,\n ) {\n this.subscription = new Subscription();\n this._breadcrumbs = new BehaviorSubject([]);\n\n this.subscribeNavigationEnd();\n }\n\n get crumbs$(): Observable {\n return this._breadcrumbs.asObservable();\n }\n\n private subscribeNavigationEnd(): void {\n this.subscription.add(\n this._router.events\n .pipe(filter((routerEvent: Event) => routerEvent instanceof NavigationEnd))\n .subscribe(this.onNavigationEnd.bind(this)),\n );\n }\n\n private onNavigationEnd(): void {\n const currentRoot: ActivatedRouteSnapshot = this._router.routerState.snapshot.root;\n\n this.subscription.add(\n this._resolveCrumbs(currentRoot)\n .pipe(\n mergeMap((breadcrumbs: IBreadcrumb[]): IBreadcrumb[] => breadcrumbs),\n distinct((breadcrumb: IBreadcrumb): string => breadcrumb.path),\n toArray(),\n mergeMap((breadcrumbs: IBreadcrumb[]): Observable => {\n if (this._config.postProcess) {\n const processedBreadcrumbs: IPostProcessBreadcrumb = this._config.postProcess(breadcrumbs);\n return wrapIntoObservable(processedBreadcrumbs).pipe(first());\n }\n return of(breadcrumbs);\n }),\n )\n .subscribe((breadcrumbs: IBreadcrumb[]): void => this._breadcrumbs.next(breadcrumbs)),\n );\n }\n\n private _resolveCrumbs(route: ActivatedRouteSnapshot): Observable {\n let crumbs$: Observable;\n\n const routeConfig: Route | undefined = route?.routeConfig;\n const data: Data | undefined = routeConfig?.data;\n const title: [string] | ResolveFn | undefined =\n data?.[ActivatedRouteData.title] || routeConfig?.resolve?.[ActivatedRouteData.title];\n\n if (data && data.breadcrumbs && title) {\n let resolver: IBreadcrumbsResolver;\n\n if (typeof data.breadcrumbs.resolver === 'function') {\n resolver = this._injector.get(data.breadcrumbs.resolver);\n } else {\n resolver = this._defaultResolver;\n }\n\n const result: IPostProcessBreadcrumb = resolver.resolve(route, this._router.routerState.snapshot);\n crumbs$ = wrapIntoObservable(result).pipe(first());\n } else {\n crumbs$ = of([]);\n }\n\n if (route?.firstChild) {\n crumbs$ = crumbs$.pipe(concat(this._resolveCrumbs(route.firstChild)));\n }\n\n return crumbs$;\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { OnInit, OnDestroy, Directive } from '@angular/core';\nimport {\n UntypedFormGroup,\n UntypedFormBuilder,\n UntypedFormControl,\n Validators,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subject, Subscription, Observable, of, combineLatest, BehaviorSubject } from 'rxjs';\nimport { delay, map, startWith, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { Icons, IconStyles, DsButtonVariants } from '@levelaccess/design-system';\nimport _ from 'lodash';\n\nimport { UserService } from '../../../services/user.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { A11yService } from '../../../services/a11y.service';\nimport { FormService } from '../../../services/form.service';\nimport { NotificationService } from '../../../services/notification.service';\nimport { NotificationPosition } from '../../../models/notification.model';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { alertType } from '../../../constants/alert.constants';\nimport { $user, minPasswordLength } from '../../../../../shared/constants/user';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { AngularUtility } from '../../../utility/angular.utility';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { errorMessagesNames } from '../../../../../shared/constants/errors';\nimport { PASSWORD_ERRORS } from '../password-errors.constants';\nimport { DEBOUNCE_TIME } from '../../../shared/constants';\n\nconst mapPasswordErrorToTranslation: Record = {\n [PASSWORD_ERRORS.minlength]: 'at_least_X_characters',\n [PASSWORD_ERRORS.noLowercase]: 'at_least_1_lowercase_letter',\n [PASSWORD_ERRORS.noUppercase]: 'at_least_1_uppercase_letter',\n [PASSWORD_ERRORS.noNumberOrSpecial]: 'at_least_1_number_or_special_character',\n [PASSWORD_ERRORS.beenUsed]: 'never_been_used_before',\n};\n\ntype IPasswordChecklist = Record;\ninterface IPasswordCheckItem {\n translation: string;\n valid: boolean;\n}\n\n/**\n * @abstract AbstractChangePasswordComponent\n * @prop { boolean } currentPasswordRequired includes a current password input field\n * @prop { boolean } independentForm includes an independent form with controls, a submit button, and an \"every field is required\" label\n * @prop { PASSWORD_ERRORS[] } errorsToCheck is a list of errors to check for\n * @prop { string } submitButtonLabel pre-translated string for the submit button. This is also used for the error message which is hardcoded translation template\n */\n@Directive()\nexport abstract class AbstractChangePasswordComponent implements OnInit, OnDestroy {\n private asyncValidation$: BehaviorSubject = new BehaviorSubject(void 0);\n protected formValidationRequest: Subject;\n protected subscriptions: Subscription;\n public formValidationRequest$: Observable;\n public formChangePassword: UntypedFormGroup;\n public errorResponseMessages: Array;\n public alertType: typeof alertType;\n public user: IUserServerResponse;\n public formChecklist$: Observable;\n public serverErrorInfoBox: boolean = false;\n public serverErrorInfoBoxReason: string;\n public formErrorInfoBox: boolean = false;\n public formErrorInfoBoxReason: string;\n public Icons: typeof Icons = Icons;\n public IconStyles: typeof IconStyles = IconStyles;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n public abstract currentPasswordRequired: boolean;\n // only set if currentPasswordRequired is false\n public emailToken: string = undefined;\n public abstract independentForm: boolean;\n public abstract submitButtonLabel: string;\n public abstract syncErrorsToCheck: PASSWORD_ERRORS[];\n public abstract asyncErrorsToCheck: PASSWORD_ERRORS[];\n\n protected skipLoader: boolean;\n\n protected constructor(\n protected userService: UserService,\n protected formBuilder: UntypedFormBuilder,\n protected translateService: TranslateService,\n protected a11yService: A11yService,\n protected formService: FormService,\n protected notificationService: NotificationService,\n ) {\n this.alertType = alertType;\n this.subscriptions = new Subscription();\n this.skipLoader = false;\n }\n\n private validateHasNeverBeenUsed(control: UntypedFormControl): Observable {\n return of(control.value).pipe(\n delay(DEBOUNCE_TIME),\n switchMap((name: string): Observable => {\n if (this.currentPasswordRequired) {\n return this.userService.verifyPreviousPassword(name);\n }\n return this.userService.verifyPreviousPasswordVisitor(name, this.emailToken, this.skipLoader);\n }),\n map((verification: boolean): ValidationErrors | null => (verification ? null : { beenUsed: true })),\n tap((): void => {\n setTimeout((): void => {\n this.asyncValidation$.next();\n });\n }),\n );\n }\n\n protected createForm(): void {\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n\n const formConfig: Record = {\n ...(this.currentPasswordRequired\n ? {\n [$user.currentPassword]: new UntypedFormControl(null, {\n validators: [Validators.required],\n }),\n }\n : {}),\n [$user.newPassword]: new UntypedFormControl(null, {\n validators: [\n Validators.minLength(minPasswordLength),\n CustomValidators.validateHasUppercase,\n CustomValidators.validateHasLowercase,\n CustomValidators.validateHasNumberOrSpecial,\n Validators.required,\n ],\n asyncValidators: [this.validateHasNeverBeenUsed.bind(this)],\n }),\n };\n this.formChangePassword = this.formBuilder.group(formConfig);\n }\n\n private closeBothErrorInfoBox(): void {\n this.formErrorInfoBox = false;\n this.serverErrorInfoBox = false;\n }\n\n protected onSaveUserSettingsSuccess(): void {\n const message: string = this.translateService.instant('success_updating_profile');\n this.closeBothErrorInfoBox();\n this.formChangePassword.reset();\n this.formChangePassword.enable();\n this.formChangePassword.markAsPristine();\n this.asyncValidation$.next();\n this.notificationService.success(message, NotificationPosition.Toast, true);\n }\n\n protected onSaveUserSettingsError(response: HttpErrorResponse): void {\n this.formChangePassword.enable();\n\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.InvalidCurrentPassword) {\n this.serverErrorInfoBoxReason = this.translateService.instant('error_invalid_current_password');\n } else {\n this.serverErrorInfoBoxReason = this.translateService.instant('error_action_cant_be_performed');\n }\n this.serverErrorInfoBox = true;\n\n console.error('onSaveProfileError', response);\n }\n\n public isFieldValid(field: string): boolean {\n return this.formService.isFieldValid(field, this.formChangePassword);\n }\n\n public validatePassword(): boolean {\n if (this.formChangePassword.get($user.newPassword).valid === false || this.formChangePassword.dirty === false) {\n this.formErrorInfoBoxReason = this.translateService.instant(\n `fix_all_the_missing_requirements_and_activate_the_${this.submitButtonLabel}_button`,\n );\n this.formErrorInfoBox = true;\n return false;\n }\n return true;\n }\n\n public onSubmitPasswordChange(): void {\n this.formValidationRequest.next();\n\n if (!this.validatePassword()) {\n return;\n }\n\n this.formChangePassword.disable();\n\n this.a11yService.setMessage(this.translateService.instant('saving_your_profile_data'));\n\n this.submit();\n }\n\n protected submit(): void {\n if (this.independentForm) {\n throw Error('[AbstractChangePasswordComponent] expects `submit` to be defined');\n }\n }\n\n public closeServerInfoBox(): void {\n this.serverErrorInfoBox = false;\n }\n\n public closeFormInfoBox(): void {\n this.formErrorInfoBox = false;\n }\n\n public ngOnInit(): void {\n const syncFormChecklist$: Observable = this.formChangePassword.valueChanges.pipe(\n startWith([\n _.pick(\n {\n [PASSWORD_ERRORS.minlength]: true,\n [PASSWORD_ERRORS.noLowercase]: true,\n [PASSWORD_ERRORS.noUppercase]: true,\n [PASSWORD_ERRORS.noNumberOrSpecial]: true,\n },\n this.syncErrorsToCheck,\n ),\n ]),\n map((newValue: UntypedFormControl): IPasswordChecklist => {\n const fieldControl: AbstractControl = this.formChangePassword.controls[$user.newPassword];\n return this.syncErrorsToCheck.reduce(\n (previousValue: Partial, currentValue: PASSWORD_ERRORS): Partial => {\n return {\n ...previousValue,\n [currentValue]: newValue[$user.newPassword]?.length > 0 ? fieldControl.hasError(currentValue) : true,\n };\n },\n {},\n ) as IPasswordChecklist;\n }),\n AngularUtility.shareRef(),\n );\n\n // this async observable fetches LatestFrom the sync validators\n // and short circuits to being invalid if any sync validator is false\n const asyncFormChecklist$: Observable = this.asyncValidation$.pipe(\n startWith([\n _.pick(\n {\n [PASSWORD_ERRORS.beenUsed]: false,\n },\n this.asyncErrorsToCheck,\n ),\n ]),\n withLatestFrom(syncFormChecklist$),\n map(([__, syncChecklist]: [void, IPasswordChecklist]): IPasswordChecklist => {\n const fieldControl: AbstractControl = this.formChangePassword.controls[$user.newPassword];\n\n const shortCircuit: boolean = Object.values(syncChecklist).some((v: boolean) => v);\n\n const isInvalid = (currentValue: PASSWORD_ERRORS): boolean => {\n if (shortCircuit) {\n return true;\n }\n return fieldControl.value?.length > 0 ? fieldControl.hasError(currentValue) : true;\n };\n\n return this.asyncErrorsToCheck.reduce(\n (previousValue: Partial, currentValue: PASSWORD_ERRORS): Partial => {\n return {\n ...previousValue,\n [currentValue]: isInvalid(currentValue),\n };\n },\n {},\n ) as IPasswordChecklist;\n }),\n );\n\n this.formChecklist$ = combineLatest([syncFormChecklist$, asyncFormChecklist$]).pipe(\n map(([syncPasswordChecklist, asyncPasswordChecklist]: [IPasswordChecklist, IPasswordChecklist]): IPasswordCheckItem[] => {\n const passwordChecklist: IPasswordChecklist = {\n ...syncPasswordChecklist,\n ...asyncPasswordChecklist,\n };\n return Object.keys(passwordChecklist).map((errorKey: PASSWORD_ERRORS): IPasswordCheckItem => {\n return {\n translation: this.translateService.instant(mapPasswordErrorToTranslation[errorKey], minPasswordLength),\n valid: !passwordChecklist[errorKey],\n };\n });\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","export enum PASSWORD_ERRORS {\n noLowercase = 'noLowercase',\n noUppercase = 'noUppercase',\n noNumberOrSpecial = 'noNumberOrSpecial',\n minlength = 'minlength',\n beenUsed = 'beenUsed',\n}\n","import { Component, Input } from '@angular/core';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nimport { ClipboardUtilityService } from '../../services/clipboard-utility.service';\n\n@Component({\n selector: 'app-code-block',\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.component.scss'],\n})\nexport class CodeBlockComponent {\n @Input() public code: string;\n @Input() public copyButtonAriaLabel: string;\n\n constructor(private clipboardUtilityService: ClipboardUtilityService) {}\n\n public get microButtonVariant(): DsButtonVariants {\n return DsButtonVariants.microAction;\n }\n\n public get copyIcon(): Icons {\n return Icons.Copy;\n }\n\n public copyCodeToClipboard(): void {\n this.clipboardUtilityService.copyTextToClipboard(this.code);\n }\n}\n","
\n \n
\n \n {{ 'copy' | translate }}\n \n
\n
\n
{{code}}
\n","
\n
\n \n \n \n \n \n \n \n \n \n \n \n {{ header }}\n \n \n \n \n \n
\n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nlet counter: number = 0;\n\n@Component({\n selector: 'app-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n})\nexport class AccordionItemComponent {\n @Input()\n public collapsed: boolean;\n @Input()\n public contentDescription: string;\n @Input()\n public header: string;\n @Output()\n public collapsedChange: EventEmitter;\n @Output()\n public onClose: EventEmitter;\n\n public id: string;\n public contentId: string;\n\n constructor() {\n this.id = `accordion-item-${(counter += 1)}`;\n this.contentId = `${this.id}-body`;\n this.collapsed = true;\n this.collapsedChange = new EventEmitter();\n this.onClose = new EventEmitter();\n }\n\n public toggleCollapsed(): void {\n this.collapsed = !this.collapsed;\n this.collapsedChange.emit(this.collapsed);\n if (this.collapsed) {\n this.onClose.emit();\n }\n }\n}\n","\n
    \n
  • \n
    \n \n
    \n \n
  • \n \n
  • \n \n \n \n
\n \n \n
\n\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n","import {\n AfterContentChecked,\n Component,\n Directive,\n Input,\n TemplateRef,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n ElementRef,\n ChangeDetectorRef,\n Host,\n HostListener,\n HostBinding,\n} from '@angular/core';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nlet nextId = 0;\n\nexport enum CssState {\n FOCUS = 'focus',\n BOLD = 'bold',\n HOVER = 'hover',\n}\n\n@Directive({\n selector: 'ng-template[appAccordionPanelHeader]',\n})\nexport class AccordionPanelHeaderDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive that wraps the accordion panel content.\n */\n@Directive({ selector: 'ng-template[appAccordionPanelContent]' })\nexport class AccordionPanelContentDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\n@Directive({ selector: 'div[appAccordionPanel]' })\nexport class AccordionPanelDirective implements AfterContentChecked {\n @Input() public disabled: boolean = false;\n\n @Input() public id: string = `ngb-panel-${nextId++}`;\n\n public isOpen: boolean = false;\n\n public headerTpl: AccordionPanelHeaderDirective;\n public contentTpl: AccordionPanelContentDirective;\n\n @ContentChildren(AccordionPanelHeaderDirective, { descendants: false }) headerTpls: QueryList;\n @ContentChildren(AccordionPanelContentDirective, { descendants: false }) contentTpls: QueryList;\n\n public ngAfterContentChecked(): void {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\n\n@Component({\n selector: 'app-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AccordionComponent implements AfterContentChecked {\n @ContentChildren(AccordionPanelDirective) panels: QueryList;\n\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n */\n @Input() activeIds: string | readonly string[] = [];\n\n @Input() useList: boolean = false;\n\n @Input() nestedList: boolean = false;\n\n @Input() labeledBy: string = null;\n\n public get ariaLabelledBy(): string | undefined {\n return !this.nestedList && SharedCommonUtility.notNullish(this.labeledBy) ? this.labeledBy : undefined;\n }\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n private changeOpenState(panel: AccordionPanelDirective | null, nextState: boolean): void {\n if (SharedCommonUtility.notNullish(panel) && !panel.disabled && panel.isOpen !== nextState) {\n panel.isOpen = nextState;\n\n this.updateActiveIds();\n this.changeDetector.detectChanges();\n }\n }\n\n private findPanelById(panelId: string): AccordionPanelDirective | null {\n return this.panels.find((p: AccordionPanelDirective) => p.id === panelId) || null;\n }\n\n private updateActiveIds(): void {\n this.activeIds = this.panels\n .filter((panel: AccordionPanelDirective) => panel.isOpen && !panel.disabled)\n .map((panel: AccordionPanelDirective): string => panel.id);\n }\n\n public expand(panelId: string): void {\n this.changeOpenState(this.findPanelById(panelId), true);\n }\n\n public expandAll(): void {\n this.panels.forEach((panel: AccordionPanelDirective): void => this.changeOpenState(panel, true));\n }\n\n public collapse(panelId: string): void {\n this.changeOpenState(this.findPanelById(panelId), false);\n }\n\n public collapseAll(): void {\n this.panels.forEach((panel: AccordionPanelDirective) => {\n this.changeOpenState(panel, false);\n });\n }\n\n public toggle(panelId: string): void {\n const panel = this.findPanelById(panelId);\n if (panel) {\n this.changeOpenState(panel, !panel.isOpen);\n }\n }\n\n public ngAfterContentChecked(): void {\n if (typeof this.activeIds === 'string') {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n\n this.panels.forEach((panel: AccordionPanelDirective) => {\n panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1;\n });\n }\n}\n\n@Component({\n selector: 'app-accordion-chevron',\n template: `\n
\n \n \n \n
\n
\n \n \n \n
\n `,\n})\nexport class AccordionChevronComponent {\n @Input() opened: boolean;\n @Input() label: string;\n}\n\n@Directive({\n selector: 'button[appAccordionButton]',\n})\nexport class AccordionButtonDirective {\n @HostBinding('type') type: string = 'button';\n @HostBinding('class') class: string =\n 'h-100 w-100 d-flex flex-col justify-content-start align-items-baseline lap-accordion-button py-2';\n\n @Input() public hoverState: CssState;\n @Input() public focusState: CssState;\n\n public constructor(private el: ElementRef) {}\n\n @HostListener('mouseover') public onHover(): void {\n if (SharedCommonUtility.notNullish(this.hoverState)) {\n this.el.nativeElement.classList.add(this.hoverState);\n }\n }\n\n @HostListener('mouseleave') public onHoverOff(): void {\n if (SharedCommonUtility.notNullish(this.hoverState)) {\n this.el.nativeElement.classList.remove(this.hoverState);\n }\n }\n\n @HostListener('focus') public onFocus(): void {\n if (SharedCommonUtility.notNullish(this.focusState)) {\n this.el.nativeElement.classList.add(this.focusState);\n }\n }\n\n @HostListener('blur') public onBlur(): void {\n if (SharedCommonUtility.notNullish(this.focusState)) {\n this.el.nativeElement.classList.remove(this.focusState);\n }\n }\n}\n\n/**\n * A directive to put on a button that toggles panel opening and closing.\n */\n@Directive({\n selector: 'button[appAccordionPanelToggle]',\n})\nexport class AccordionPanelToggleDirective {\n @HostBinding('type') type: string = 'button';\n @HostBinding('class') class: string = 'h-100 w-100 d-flex flex-col justify-content-start align-items-baseline py-2';\n @HostBinding('disabled') get disabled(): boolean {\n return this.panel.disabled;\n }\n @HostBinding('class.collapsed') get collapsed(): boolean {\n return !this.panel.isOpen;\n }\n @HostBinding('attr.aria-expanded') get expanded(): boolean {\n return this.panel.isOpen;\n }\n @HostBinding('attr.aria-controls') get controls(): string {\n if (this.panel.isOpen) {\n return this.panel.id;\n }\n return undefined;\n }\n\n public constructor(\n public accordion: AccordionComponent,\n @Host() public panel: AccordionPanelDirective,\n ) {}\n\n @HostListener('click') click(): void {\n this.accordion.toggle(this.panel.id);\n }\n}\n","\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
{{ title }}
\n
{{ text }}
\n
\n
\n \n
\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DsButtonVariants, Icons, IconStyles } from '@levelaccess/design-system';\nimport { EapColors } from '../../shared/eap-colors';\n\nexport enum AlertType {\n warning = 'warning',\n info = 'info',\n error = 'error',\n}\n\n@Component({\n selector: 'app-common-alert-box',\n templateUrl: './common-alert-box.component.html',\n styleUrls: ['./common-alert-box.component.scss'],\n})\nexport class CommonAlertBoxComponent {\n public AlertType: typeof AlertType = AlertType;\n public IconStyles: typeof IconStyles = IconStyles;\n public Icons: typeof Icons = Icons;\n public EapColors: typeof EapColors = EapColors;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n @Input()\n public title: string;\n\n @Input()\n public text: string;\n\n @Input()\n public hasIcon: boolean = true;\n\n @Input()\n public alertType: AlertType = AlertType.warning;\n\n @Input()\n public closeable: boolean;\n\n @Output()\n public onClose: EventEmitter = new EventEmitter();\n}\n","
\n
\n \n {{ context.label | translate }} *\n \n
\n \n \n \n \n {{ getOptionName(value) | translate }}\n \n \n {{ getOptionName(value) }}\n \n \n \n \n
\n
\n \n
\n
\n
\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { isEqual } from 'lodash';\nimport { Subscription, Observable } from 'rxjs';\n\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { FormService } from '../../services/form.service';\n\nexport interface CheckboxSelectContext {\n field: string;\n label?: string;\n valueKey?: string;\n nameKey?: string | ((value: any) => string);\n translateName?: boolean;\n required?: boolean;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'app-common-checkbox-select',\n templateUrl: './common-checkbox-select.component.html',\n styleUrls: ['./common-checkbox-select.component.scss'],\n})\nexport class CommonCheckboxSelectComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: CheckboxSelectContext;\n @Input()\n public values: string[] | Record[];\n @Input()\n public formValidationRequest$: Observable;\n\n @Output()\n public valueChanged$: EventEmitter;\n\n public selectedValues: Set;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private formService: FormService,\n ) {\n this.valueChanged$ = new EventEmitter();\n this.subscription = new Subscription();\n this.selectedValues = new Set();\n }\n\n public get disabled(): boolean {\n return typeof this.context.disabled === 'boolean' ? this.context.disabled : false;\n }\n\n public get required(): boolean {\n return this.formService.isFieldRequired(this.form, this.context);\n }\n\n public get selectValues(): string[] | Record[] {\n return Array.isArray(this.values) ? this.values : [];\n }\n\n public getOptionName(value: string | Record): any {\n if (typeof this.context.nameKey === 'function') {\n return this.context.nameKey(value);\n }\n\n if (typeof this.context.nameKey === 'string') {\n return value[this.context.nameKey];\n }\n\n return value;\n }\n\n public getValue(value: unknown): unknown {\n if (typeof this.context.valueKey === 'string') {\n return value[this.context.valueKey];\n }\n\n return value;\n }\n\n public onSelectChange(): void {\n const value: unknown[] = Array.from(this.selectedValues);\n this.form.get(this.context.field).setValue(value);\n this.valueChanged$.emit(value);\n }\n\n public valueChanged(value: unknown | Record, selected: boolean): void {\n if (selected) {\n this.selectedValues.add(this.getValue(value));\n } else {\n this.selectedValues.delete(this.getValue(value));\n }\n this.onSelectChange();\n }\n\n public isSelected(value: unknown): boolean {\n return this.selectedValues.has(this.getValue(value));\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscription.add(\n this.formValidationRequest$.subscribe(() => {\n this.form.get(this.context.field).markAsDirty();\n this.form.get(this.context.field).markAsTouched();\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n this.selectedValues = new Set(this.form.get(this.context.field).value);\n this.subscription.add(\n this.form.get(this.context.field).valueChanges.subscribe((value: unknown[]) => {\n if (SharedCommonUtility.isNullishOrEmpty(value)) {\n return;\n }\n if (isEqual(Array.from(this.selectedValues).sort(), value.sort())) {\n return;\n }\n this.selectedValues = new Set(value);\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
0 }\">\n
\n \n \n \n \n \n \n \n
\n
\n\n \n {{ node.text | translate }}\n {{ node.text }}\n \n
\n\n \n \n \n \n
\n","import { Component, OnInit, Input, Output, EventEmitter, HostBinding, HostListener, ElementRef } from '@angular/core';\n\nimport { ICheckboxTreeNode, ICheckboxTreeConfig } from '../../../interfaces/checkbox-tree.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-checkbox-tree-node',\n templateUrl: './checkbox-tree-node.component.html',\n styleUrls: ['./checkbox-tree-node.component.scss'],\n})\nexport class CheckboxTreeNodeComponent implements OnInit {\n @HostBinding('attr.role') role: string = 'treeitem';\n\n @HostBinding('attr.id') get getId(): string {\n return `${this.treeId}-level${this.level}-node${this.index}`;\n }\n\n @HostBinding('attr.aria-expanded') get ariaExpanded(): boolean {\n return this.hasChildren ? !this.node.collapsed : null;\n }\n\n @Input()\n public level: number;\n\n @Input()\n public index: number;\n\n @Input()\n public treeId: string;\n\n @Input()\n public config: ICheckboxTreeConfig;\n\n @Input()\n public node: ICheckboxTreeNode;\n\n @Output()\n public nodeChanged: EventEmitter;\n\n constructor(private elementRef: ElementRef) {\n this.nodeChanged = new EventEmitter();\n }\n\n private checkDescendants(node: ICheckboxTreeNode, checked: boolean): void {\n node.checked = checked;\n node.children.forEach((child: ICheckboxTreeNode): void => this.checkDescendants(child, checked));\n }\n\n private onChildNodeChecked(): void {\n this.node.checked = undefined;\n\n if (!this.config.autoCheckParent) {\n return;\n }\n\n const allChildrenChecked: boolean = this.node.children.every((node: ICheckboxTreeNode): boolean => node.checked === true);\n if (allChildrenChecked) {\n this.node.checked = true;\n }\n }\n\n private onChildNodeUnchecked(): void {\n const hasCheckedDescendant: boolean = this.node.children.some(\n (node: ICheckboxTreeNode): boolean => node.checked === true || SharedCommonUtility.isNullish(node.checked),\n );\n\n if (hasCheckedDescendant) {\n this.node.checked = undefined;\n } else {\n this.node.checked = false;\n }\n }\n\n private getNodesDomFromEvent(event: KeyboardEvent): { nodes: HTMLElement[]; currentNodeIndex: number } {\n const tree: HTMLElement = (event.target as HTMLElement).closest('[role=\"tree\"]');\n const nodes: HTMLElement[] = Array.from(tree.querySelectorAll('[role=\"treeitem\"]'));\n const currentNodeIndex: number = nodes.indexOf(this.elementRef.nativeElement);\n return { nodes, currentNodeIndex };\n }\n\n private getNextNode(event: KeyboardEvent): HTMLElement | null {\n const { nodes, currentNodeIndex } = this.getNodesDomFromEvent(event);\n if (currentNodeIndex < 0 || currentNodeIndex >= nodes.length - 1) {\n return null;\n }\n\n return nodes[currentNodeIndex + 1];\n }\n\n private getPreviousNode(event: KeyboardEvent): HTMLElement | null {\n const { nodes, currentNodeIndex } = this.getNodesDomFromEvent(event);\n if (currentNodeIndex < 1) {\n return null;\n }\n\n return nodes[currentNodeIndex - 1];\n }\n\n private expandOrGetFirstChildNode(event: KeyboardEvent): HTMLElement | null {\n let focusNode: HTMLElement = null;\n\n const currentTargetIsNotCheckbox: boolean = (event.target as HTMLElement).tagName !== 'INPUT';\n if (currentTargetIsNotCheckbox) {\n focusNode = this.elementRef.nativeElement;\n }\n\n if (this.isCollapsed) {\n this.node.collapsed = false;\n } else if (SharedCommonUtility.isNullish(focusNode) && this.hasChildren) {\n focusNode = this.getNextNode(event);\n }\n\n return focusNode;\n }\n\n private collapseOrGetParentNode(event: KeyboardEvent): HTMLElement | null {\n let focusNode: HTMLElement = null;\n\n if (this.isCollapsed || !this.hasChildren) {\n focusNode = this.elementRef.nativeElement.parentElement.closest('[role=\"treeitem\"]');\n }\n this.node.collapsed = true;\n\n return focusNode;\n }\n\n private onKeyboardNavigation(event: KeyboardEvent, key: 'up' | 'down' | 'right' | 'left'): void {\n event.stopPropagation();\n event.preventDefault();\n\n let focusNode: HTMLElement;\n switch (key) {\n case 'up':\n focusNode = this.getPreviousNode(event);\n break;\n case 'down':\n focusNode = this.getNextNode(event);\n break;\n case 'right':\n focusNode = this.expandOrGetFirstChildNode(event);\n break;\n case 'left':\n focusNode = this.collapseOrGetParentNode(event);\n break;\n\n // no default\n }\n\n if (SharedCommonUtility.isNullish(focusNode)) {\n return;\n }\n\n (focusNode.querySelector('input[type=\"checkbox\"]') as HTMLInputElement).focus();\n }\n\n public get hasChildren(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.node.children);\n }\n\n public get isCollapsed(): boolean {\n return this.node.collapsed;\n }\n\n public get isIndeterminate(): boolean {\n return SharedCommonUtility.isNullish(this.node.checked);\n }\n\n public get checked(): boolean {\n return this.node.checked;\n }\n\n public set checked(value: boolean) {\n this.checkDescendants(this.node, value);\n this.nodeChanged.emit(value);\n }\n\n public onToggle(): void {\n this.node.collapsed = !this.node.collapsed;\n }\n\n public onChildNodeChanged(childNode: ICheckboxTreeNode, checked?: boolean): void {\n switch (checked) {\n case true:\n this.onChildNodeChecked();\n break;\n case false:\n this.onChildNodeUnchecked();\n break;\n default:\n this.node.checked = undefined;\n break;\n }\n\n this.nodeChanged.emit(this.node.checked);\n }\n\n @HostListener('keydown.arrowdown', ['$event'])\n public onKeyboardArrowDown(event: KeyboardEvent): void {\n this.onKeyboardNavigation(event, 'down');\n }\n\n @HostListener('keydown.arrowup', ['$event'])\n public onKeyboardArrowUp(event: KeyboardEvent): void {\n this.onKeyboardNavigation(event, 'up');\n }\n\n @HostListener('keydown.arrowright', ['$event'])\n public onKeyboardArrowRight(event: KeyboardEvent): void {\n this.onKeyboardNavigation(event, 'right');\n }\n\n @HostListener('keydown.arrowleft', ['$event'])\n public onKeyboardArrowLeft(event: KeyboardEvent): void {\n this.onKeyboardNavigation(event, 'left');\n }\n\n @HostListener('keydown.enter', ['$event'])\n public onKeyboardEnter(event: KeyboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (!this.hasChildren) {\n this.node.checked = !this.node.checked;\n } else {\n this.node.collapsed = !this.node.collapsed;\n }\n }\n\n ngOnInit(): void {\n if (this.config.expandAll) {\n this.node.collapsed = false;\n }\n }\n}\n"," 0; else emptyTree\">\n \n \n\n\n \n \n\n","import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { cloneDeep } from 'lodash';\n\nimport { ICheckboxTreeConfig, ICheckboxTreeNode } from '../../interfaces/checkbox-tree.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nlet counter: number = 1;\n\n@Component({\n selector: 'app-common-checkbox-tree',\n templateUrl: './common-checkbox-tree.component.html',\n})\nexport class CommonCheckboxTreeComponent {\n @HostBinding('attr.id') id: string;\n @HostBinding('attr.role') role: string = 'tree';\n\n private _nodes: ICheckboxTreeNode[];\n\n @Input()\n public config: ICheckboxTreeConfig;\n\n @Input()\n public emptyTreeNode: ICheckboxTreeNode;\n\n @Output()\n public treeChanged: EventEmitter;\n\n constructor() {\n this._nodes = [];\n\n this.id = `checkbox-tree${counter++}`;\n this.treeChanged = new EventEmitter();\n }\n\n private autoCorrectTreeNode(node: ICheckboxTreeNode): boolean {\n node.children.forEach((child: ICheckboxTreeNode): void => {\n if (node.checked) {\n child.checked = true;\n }\n\n const childState: boolean = this.autoCorrectTreeNode(child);\n if (node.checked) {\n return;\n }\n\n if (childState || SharedCommonUtility.isNullish(childState)) {\n node.checked = undefined;\n }\n });\n\n return node.checked;\n }\n\n public get nodes(): ICheckboxTreeNode[] {\n return this._nodes;\n }\n\n @Input()\n public set nodes(nodes: ICheckboxTreeNode[]) {\n const clonedNodes: ICheckboxTreeNode[] = cloneDeep(nodes);\n clonedNodes.forEach(this.autoCorrectTreeNode.bind(this));\n this._nodes = clonedNodes;\n }\n\n private flatValues(tree: ICheckboxTreeNode): T[] {\n const result: T[] = [];\n\n if (tree.checked) {\n result.push(tree.value);\n }\n\n if (!this.config.returnOptimizedHierarchy || !tree.checked) {\n const childValues: T[] = tree.children.flatMap(this.flatValues.bind(this));\n result.push(...childValues);\n }\n\n return result;\n }\n\n public onTreeChanged(): void {\n const values: T[] = this.nodes.flatMap(this.flatValues.bind(this));\n this.treeChanged.emit(values);\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonUtility } from '../../utility/common.utility';\n\nexport interface CheckboxContext {\n id?: string;\n describedBy?: string;\n}\n\n@Component({\n selector: 'app-common-checkbox',\n templateUrl: './common-checkbox.component.html',\n styleUrls: ['./common-checkbox.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CommonCheckboxComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonCheckboxComponent implements OnInit, ControlValueAccessor {\n @Input()\n public disabled: boolean;\n public onTouched: Function;\n public onChange: Function;\n\n public value: boolean;\n\n @Input()\n public indeterminate: boolean;\n\n @Input()\n public context: CheckboxContext;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.onTouched = (): void => {};\n this.onChange = (): void => {};\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectorRef.detectChanges();\n }\n\n public writeValue(obj: any): void {\n this.value = obj;\n this.changeDetectorRef.detectChanges();\n }\n\n public onValueChanged(value: boolean): void {\n if (value !== this.value) {\n this.onChange(value);\n }\n this.value = value;\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnInit(): void {\n this.context = {\n id: CommonUtility.createUniqueDOMId(this.context?.id),\n describedBy: this.context?.describedBy,\n };\n }\n}\n","
\n \n \n
\n","
\n
\n \n \n {{ header }}\n \n \n
\n
\n\n
\n
\n {{ 'label_comment_user_timestamp' | translate: [date, time, author] }}\n
\n
\n\n
\n
\n
\n \n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Component({\n selector: 'app-common-comment',\n templateUrl: './common-comment.component.html',\n styleUrls: ['./common-comment.component.scss'],\n})\nexport class CommonCommentComponent {\n @Input() public deletable: boolean = false;\n @Input() public header: string = this.translateService.instant('added_comment');\n @Input() public isCollapsed: boolean = false;\n @Input() public id: string;\n @Input() public author: string;\n @Input() public date: string;\n @Input() public time: string;\n\n @Output() public deleted: EventEmitter = new EventEmitter();\n\n constructor(private translateService: TranslateService) {}\n}\n","\n \n {{ confirmationHeader }}\n \n\n
\n

\n {{ confirmationMessage }}\n

\n\n \n \n {{ confirmationDescription }}\n \n \n\n \n {{ 'required_fields_label' | translate }}\n\n \n \n
\n\n \n
\n","import { Subject } from 'rxjs';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild } from '@angular/core';\n\nimport { ModalContainerComponent } from '../modals/modal-container.component';\nimport { IModal } from '../modals/modal.interface';\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { TranslateService } from '../../translate/translate.service';\nimport { CommonConfirmationModalOptions } from '../../interfaces/modal-dialog.interface';\n\n@Component({\n templateUrl: './common-confirmation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./common-confirmation.component.scss'],\n})\nexport class CommonConfirmationComponent implements IModal {\n private header: string;\n private messages: string[];\n private description: string;\n private labelAction: string;\n private labelClose: string;\n private shouldTranslate: boolean;\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n public confirmed: boolean;\n public form: UntypedFormGroup;\n public formValidationRequest: Subject;\n public confirmationLabel: string;\n public actionPlaceHolder: string;\n public isValidationNeeded: boolean;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.formValidationRequest = new Subject();\n this.form = this.formBuilder.group({\n confirmation: this.formBuilder.control(''),\n });\n this.confirmed = false;\n }\n\n private confirmAndClose(): void {\n this.confirmed = true;\n this.close();\n }\n\n private translateText(text: string): string {\n if (this.shouldTranslate) {\n return this.translateService.instant(text);\n }\n\n return text;\n }\n\n public onCreate({\n header,\n messages,\n confirmationLabel,\n actionPlaceholder,\n labelAction,\n labelClose,\n description,\n shouldTranslate,\n }: CommonConfirmationModalOptions): void {\n this.isValidationNeeded = Boolean(actionPlaceholder);\n\n this.header = header;\n this.messages = messages;\n this.description = description;\n this.confirmationLabel = confirmationLabel;\n this.actionPlaceHolder = actionPlaceholder;\n this.labelAction = labelAction;\n this.labelClose = labelClose || 'label_close';\n this.shouldTranslate = shouldTranslate ?? true;\n const wordToType: string = this.translateText(this.actionPlaceHolder);\n this.form\n .get('confirmation')\n .setValidators([CustomValidators.required, CustomValidators.validateIsEmpty, CustomValidators.in(new Set([wordToType]))]);\n this.changeDetectorRef.detectChanges();\n }\n\n public get confirmationHeader(): string {\n return this.translateText(this.header);\n }\n\n public get confirmationMessage(): string {\n return this.messages.map((message: string) => this.translateText(message)).join(' ');\n }\n\n public get confirmationDescription(): string {\n return this.translateText(this.description);\n }\n\n public get confirmationLabelAction(): string {\n return this.translateText(this.labelAction);\n }\n\n public get confirmationLabelClose(): string {\n return this.translateText(this.labelClose);\n }\n\n public close(): void {\n this.container.closeModal();\n }\n\n public onConfirm(): void {\n if (!this.isValidationNeeded) {\n this.confirmAndClose();\n return;\n }\n\n this.formValidationRequest.next();\n if (this.form.invalid) {\n return;\n }\n this.confirmAndClose();\n }\n}\n","
\n \n
\n {{ context.description | translate }}\n
\n \n \n
\n \n
\n
\n
{{ uploadDescription | translate }}
\n\n
0\" class=\"row mt-3 mb-4\">\n
\n \n \n\n \n \n {{ 'document_total_file_size' | translate }}:\n {{ getFormattedFileSize(getSelectedFilesTotalSize()) }}\n \n \n {{ '> ' + getFormattedFileSize(maxUploadSize) }}\n \n
\n
\n \n\n
\n \n
\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ElementRef,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { CommonControlsViewMode } from '../../constants/common-controls-view-mode';\nimport { config } from '../../../environments/config.shared';\nimport { IUploadClient } from '../../../../shared/interfaces/uploads.interface';\nimport { IHTMLInputEvent } from '../../interfaces/form.interface';\nimport { MimeTypes } from '../../../../shared/constants/mime-type';\nimport { ITableColumn, ITableConfig, ITableRow, SortEvent } from '../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../table/ngb-table/utilities/ngb-table.utilities';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\nimport { $uploads } from '../../../../shared/constants/uploads';\nimport { TranslateService } from '../../translate/translate.service';\nimport { NotificationPosition } from '../../models/notification.model';\nimport { NotificationService } from '../../services/notification.service';\nimport { SharedDateUtility } from '../../../../shared/utils/date.utility';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nexport interface CommonDragAndDropFilesFieldContext {\n customMessage?: string;\n label: string;\n tableLabel: string;\n field: string;\n acceptedTypes: string;\n required?: boolean;\n description?: string;\n overrideErrors?: Record;\n}\n\nexport enum defaultDragNDropTableFields {\n name = 'name',\n dateAdded = 'dateAdded',\n fileSize = 'fileSize',\n}\n\nexport function isUpload(attachment: File | IUploadClient): attachment is IUploadClient {\n return SharedCommonUtility.hasKey(attachment, $uploads.fileName);\n}\n\nfunction defaultTableConfig(translate: TranslateService): ITableConfig {\n const columns: Record = {\n [defaultDragNDropTableFields.name]: {\n translationKey: 'table_column_name',\n sortingEnabled: true,\n },\n [defaultDragNDropTableFields.dateAdded]: {\n translationKey: 'table_column_date_added',\n sortingEnabled: true,\n styles: {\n maxWidth: '20%',\n width: '20%',\n },\n },\n [defaultDragNDropTableFields.fileSize]: {\n translationKey: 'table_column_file_size',\n sortingEnabled: true,\n styles: {\n maxWidth: '20%',\n width: '20%',\n },\n },\n };\n\n return {\n columns: columns,\n caption: translate.instant('selected_files_to_upload'),\n };\n}\n\nfunction defaultTableDataMapping(entry: File | IUploadClient): ITableRow {\n if (isUpload(entry)) {\n const upload: IUploadClient = entry as IUploadClient;\n\n return {\n data: {\n [defaultDragNDropTableFields.dateAdded]: NgbTableUtilities.textCell({\n text: upload[$uploads.createdAt] ? SharedDateUtility.getLocalISODate(upload[$uploads.createdAt]) : '',\n }),\n [defaultDragNDropTableFields.name]: NgbTableUtilities.textCell({\n text: upload[$uploads.fileOriginalName],\n }),\n [defaultDragNDropTableFields.fileSize]: NgbTableUtilities.textCell({\n text: SharedCommonUtility.formatBytes(upload[$uploads.fileSize]),\n }),\n },\n };\n }\n\n return {\n data: {\n [defaultDragNDropTableFields.dateAdded]: NgbTableUtilities.textCell({\n text: SharedDateUtility.getLocalISODate(new Date()),\n }),\n [defaultDragNDropTableFields.name]: NgbTableUtilities.textCell({\n text: entry.name,\n }),\n [defaultDragNDropTableFields.fileSize]: NgbTableUtilities.textCell({\n text: SharedCommonUtility.formatBytes(entry.size),\n }),\n },\n };\n}\n\n/**\n * @deprecated Deprecated. See FileDragAndDropComponent.\n */\n@Component({\n selector: 'app-common-drag-and-drop-files',\n templateUrl: './common-drag-and-drop-files.component.html',\n styleUrls: ['./common-drag-and-drop-files.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonDragAndDropFilesComponent implements OnInit, OnDestroy, OnChanges {\n private subscription: Subscription;\n private _multiple: boolean;\n\n @ViewChild('nativeInput') public nativeInput: ElementRef;\n\n @Input()\n public filesRemovable: boolean;\n @Input()\n public set multiple(isMultiple: boolean) {\n this._multiple = isMultiple;\n\n if (isMultiple === false) {\n this.maxUploadQuantity = 1;\n } else {\n this.maxUploadQuantity = Number.POSITIVE_INFINITY;\n }\n }\n\n public get multiple(): boolean {\n return this._multiple;\n }\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: CommonDragAndDropFilesFieldContext;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public view: CommonControlsViewMode;\n @Input()\n public tableConfig: ITableConfig;\n @Input()\n public tableDataMapping: (value: File | IUploadClient, index?: number, array?: File[]) => ITableRow;\n @Input()\n public existingAttachments: IUploadClient[];\n @Input()\n public maxUploadSize: number;\n @Input()\n public maxUploadQuantity: number;\n @Input()\n public disabled$: BehaviorSubject;\n @Input()\n public uploadDescription: string;\n @Input()\n public displayTable: boolean = true;\n\n public tableData: ITableRow[];\n public mimeType: typeof MimeTypes;\n public isDragAreaActive: boolean;\n public selectedAttachments: File[];\n\n @Output()\n public updateSelectedAttachments: EventEmitter;\n @Output() existingAttachmentsChange: EventEmitter;\n @Output()\n public attachmentDeleted: EventEmitter;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n ) {\n this.view = 'col-view';\n\n this.mimeType = MimeTypes;\n this.isDragAreaActive = false;\n this.selectedAttachments = [];\n this.existingAttachments = [];\n this.tableData = [];\n this.updateSelectedAttachments = new EventEmitter();\n this.existingAttachmentsChange = new EventEmitter();\n this.attachmentDeleted = new EventEmitter();\n this.maxUploadSize = config.files.maxUploadSize;\n this.tableDataMapping = defaultTableDataMapping;\n this.tableConfig = defaultTableConfig(this.translateService);\n this.disabled$ = new BehaviorSubject(false);\n this.maxUploadQuantity = Number.POSITIVE_INFINITY;\n this.multiple = true;\n }\n\n get required(): boolean {\n return typeof this.context.required === 'boolean' ? this.context.required : true;\n }\n\n private mergeToExistingFiles(oldFiles: File[], newFiles: File[]): File[] {\n const warningMessage: string = this.translateService.instant('warning');\n const belowSizeLimit = (file: File): boolean => file.size <= this.maxUploadSize;\n const notDuplicated = (file: File): boolean => {\n return newFiles.some((checkFile: File): boolean => checkFile.name === file.name) === false;\n };\n const maxFilesAmount: number = this.maxUploadQuantity - this.existingAttachments.length;\n\n if (oldFiles.length + newFiles.length > maxFilesAmount) {\n const exceedsLimitMessage: string = this.translateService.instant(\n 'form-validation-attachment-quantity-exceeds-limit',\n this.maxUploadQuantity,\n );\n this.notificationService.warn(`${warningMessage}: ${exceedsLimitMessage}`, NotificationPosition.Toast);\n }\n\n if (newFiles.filter(belowSizeLimit).length !== newFiles.length) {\n const exceedsLimitMessage: string = this.translateService.instant(\n 'form-validation-files-that-exceeds-limit-were-not-attached',\n SharedCommonUtility.formatBytes(this.maxUploadSize),\n );\n this.notificationService.warn(`${warningMessage}: ${exceedsLimitMessage}`, NotificationPosition.Toast);\n }\n\n return [...oldFiles.filter(notDuplicated), ...newFiles.filter(belowSizeLimit)].slice(0, maxFilesAmount);\n }\n\n private constructTableData(): void {\n if (this.filesRemovable) {\n this.tableData = [...this.existingAttachments, ...this.selectedAttachments].map(\n (entry: File | IUploadClient): ITableRow => {\n const row: ITableRow = this.tableDataMapping(entry);\n\n row.data['action'] = NgbTableUtilities.buttonCell({\n text: this.translateService.instant('action_delete'),\n classes: ['btn-link', 'font-weight-500', 'p-0'],\n listeners: {\n click: (): void =>\n isUpload(entry)\n ? this.removeExistingFileFromUploadList(entry as IUploadClient)\n : this.removeFileFromUploadList(entry as File),\n },\n });\n\n return row;\n },\n );\n } else {\n this.tableData = [...this.existingAttachments, ...this.selectedAttachments].map(this.tableDataMapping);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private sort(attachments: ITableRow[], { column, direction }: SortEvent): ITableRow[] {\n const sortFunction = (a: ITableRow, b: ITableRow): number => {\n const aValue: string = a.data[column].config.text;\n const bValue: string = b.data[column].config.text;\n\n return direction === $sortingOrder.asc\n ? aValue.localeCompare(bValue, undefined, { numeric: true, sensitivity: 'base' })\n : bValue.localeCompare(aValue, undefined, { numeric: true, sensitivity: 'base' });\n };\n\n return attachments.sort(sortFunction);\n }\n\n public triggerDialog(): void {\n if (this.nativeInput?.nativeElement) {\n this.nativeInput.nativeElement.click();\n }\n }\n\n public getFormattedFileSize(size: number): string {\n return SharedCommonUtility.formatBytes(size);\n }\n\n public onTableSort({ column, direction }: SortEvent): void {\n if (direction !== $sortingOrder.all) {\n this.tableData = this.sort([...this.tableData], { column, direction });\n }\n }\n\n public getSelectedFilesTotalSize(): number {\n let size: number = this.existingAttachments\n .map((value: IUploadClient): number => value.fileSize)\n .reduce((total: number, current: number): number => total + current, 0);\n\n if (Array.isArray(this.selectedAttachments) === false || this.selectedAttachments.length === 0) {\n return size;\n }\n\n const addFileSize = (file: File): void => {\n size += file.size;\n };\n\n this.selectedAttachments.forEach(addFileSize);\n\n return size;\n }\n\n public sizeToUploadExceedsLimits(): boolean {\n return this.getSelectedFilesTotalSize() > this.maxUploadSize;\n }\n\n public onDragEnterOrOver(event: DragEvent): void {\n this.isDragAreaActive = true;\n\n event.preventDefault();\n }\n\n public onDragLeave(event: DragEvent): void {\n this.isDragAreaActive = false;\n\n event.preventDefault();\n }\n\n public onDropFiles(event: DragEvent): void {\n const files: FileList = event.dataTransfer.files;\n const eventTarget: HTMLElement = event.target || (event.srcElement as any);\n const uploadButtonWrapper: Element = eventTarget.closest('.upload-button');\n const htmlInputElement: HTMLInputElement = uploadButtonWrapper.querySelector('input[type=file]');\n\n this.selectedAttachments = this.mergeToExistingFiles(this.selectedAttachments, Array.from(files));\n this.updateSelectedAttachments.emit(this.selectedAttachments);\n\n this.isDragAreaActive = false;\n\n htmlInputElement.dataset.selectedFilesLength = String(this.selectedAttachments.length);\n\n this.constructTableData();\n event.preventDefault();\n }\n\n public removeFileFromUploadList(file: File): void {\n this.selectedAttachments = this.selectedAttachments.filter((_file: File): boolean => file !== _file);\n this.updateSelectedAttachments.emit(this.selectedAttachments);\n this.attachmentDeleted.emit();\n this.constructTableData();\n }\n\n public removeExistingFileFromUploadList(upload: IUploadClient): void {\n this.existingAttachments = this.existingAttachments.filter((_upload: IUploadClient): boolean => _upload !== upload);\n this.existingAttachmentsChange.emit(this.existingAttachments);\n this.constructTableData();\n }\n\n public uploadFilesEvent(event: Event): void {\n const htmlEvent: IHTMLInputEvent = event as IHTMLInputEvent;\n const files: FileList = htmlEvent.target.files;\n\n this.uploadFiles(Array.from(files));\n\n // Ensures onChange hook is called even on file reupload\n htmlEvent.target.value = '';\n }\n\n public uploadFiles(files: File[]): void {\n this.selectedAttachments = this.mergeToExistingFiles(this.selectedAttachments, files);\n this.updateSelectedAttachments.emit(this.selectedAttachments);\n this.constructTableData();\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscription = this.formValidationRequest$.subscribe(() => {\n this.form.get(this.context.field).markAsDirty();\n this.form.get(this.context.field).markAsTouched();\n this.changeDetectorRef.detectChanges();\n });\n }\n\n if (this.filesRemovable) {\n this.tableConfig = { ...this.tableConfig };\n this.tableConfig.columns['action'] = {\n translationKey: 'table_header_action',\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n };\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const areAttachmentsEqual = (prev: IUploadClient[], curr: IUploadClient[]): boolean => {\n if (Array.isArray(curr) && !Array.isArray(prev)) {\n return false;\n } else if (!Array.isArray(curr) && !Array.isArray(prev)) {\n return true;\n }\n return (\n prev.every((prevUpload: IUploadClient) =>\n curr.some((currUpload: IUploadClient) => prevUpload[$uploads._id] === currUpload[$uploads._id]),\n ) &&\n curr.every((currUpload: IUploadClient) =>\n prev.some((prevUpload: IUploadClient) => prevUpload[$uploads._id] === currUpload[$uploads._id]),\n )\n );\n };\n if (!areAttachmentsEqual(changes.existingAttachments?.previousValue, changes.existingAttachments?.currentValue)) {\n this.constructTableData();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n {{ 'label_add_or_drop_file' | translate }}\n
\n
\n
\n
\n {{ fileDropError | translate }}\n
\n
\n
\n
\n

\n {{ 'label_correct_fields_below' | 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
\n

\n {{ 'label_file_successfully_uploaded' | translate }}\n

\n
\n
\n
\n
\n

{{ fileUploadedMessage | translate }}

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

\n {{ 'label_invalid_missing_information' | translate }}\n

\n
\n
\n
\n
\n

{{ fileDataError | translate }}

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

\n {{ 'label_correct_fields_below' | translate }}\n

\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n\n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-common-file-dropbox',\n templateUrl: './common-file-dropbox.component.html',\n styleUrls: ['./common-file-dropbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonFileDropboxComponent {\n private MAX_FILES: number = 1;\n private MULTIPLE_FILE_ERROR: string = 'error_only_one_file_allowed_for_upload';\n\n @Input()\n public acceptedFileTypes: string[];\n\n @Input()\n public acceptedFileError: string;\n\n @Input()\n public fileDataError: string;\n\n @Input()\n public form: UntypedFormGroup;\n\n @Input()\n public fileValid: boolean | undefined;\n\n @Input()\n public fileUploaded: boolean | undefined;\n\n @Input()\n public fileUploadedMessage: string;\n\n @Output()\n public emitFile: EventEmitter;\n\n @Output()\n public clickedValidate: EventEmitter;\n\n @Output()\n public rebuildForm: EventEmitter;\n\n public fileDropError: string | undefined;\n public file: File;\n\n constructor() {\n this.emitFile = new EventEmitter();\n this.clickedValidate = new EventEmitter();\n this.rebuildForm = new EventEmitter();\n }\n\n private isFileTypeValid(file: File): boolean {\n const type: string = this.acceptedFileTypes.find(\n (acceptedType: string): boolean =>\n acceptedType.toLocaleLowerCase() === file.type.toLocaleLowerCase() ||\n file.name.toLocaleLowerCase().endsWith(acceptedType.toLocaleLowerCase()),\n );\n return !SharedCommonUtility.isNullish(type);\n }\n\n public filesDropped(event: File[]): void {\n if (event.length !== this.MAX_FILES) {\n this.fileDropError = this.MULTIPLE_FILE_ERROR;\n return;\n }\n const file: File = event[0];\n if (!this.isFileTypeValid(file)) {\n this.fileDropError = this.acceptedFileError;\n return;\n }\n\n this.file = file;\n this.emitFile.emit(file);\n this.fileUploaded = false;\n this.fileDropError = undefined;\n }\n\n public filesChosen(event: Event): void {\n const bulkUploadElement: HTMLInputElement = event.target as HTMLInputElement;\n if (Array.from(bulkUploadElement.files).length !== this.MAX_FILES) {\n return;\n }\n const file: File = Array.from(bulkUploadElement.files)[0];\n if (!this.isFileTypeValid(file)) {\n this.fileDropError = this.acceptedFileError;\n return;\n }\n this.file = file;\n this.emitFile.emit(file);\n this.fileUploaded = false;\n this.fileDropError = undefined;\n }\n\n public cancelFile(): void {\n this.file = undefined;\n this.fileUploaded = undefined;\n this.rebuildForm.emit();\n this.emitFile.emit(null);\n }\n\n public validate(event: Event): void {\n event.preventDefault();\n this.clickedValidate.emit();\n }\n}\n","
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-common-info-note',\n templateUrl: './common-info-note.component.html',\n styleUrls: ['./common-info-note.component.scss'],\n})\nexport class CommonInfoNoteComponent {\n @Input()\n public noteText: string;\n}\n","
\n \n {{ form.get(context.field).value }}\n
\n \n
\n \n
\n\n\n \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { CommonControlsViewMode } from '../../constants/common-controls-view-mode';\n\nexport interface InputFieldContext {\n customMessage?: string;\n label: string;\n field: string;\n readonly?: boolean;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n description?: string;\n fullWidthInput?: boolean;\n type?: string;\n autocomplete?: string;\n overrideErrors?: Record;\n class: string;\n tooltip: string;\n omitTabindex?: boolean;\n saveButton?: boolean;\n}\n\n@Component({\n selector: 'app-common-input-in-place-editor',\n templateUrl: './common-input-in-place-editor.component.html',\n styleUrls: ['./common-input-in-place-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonInputInPlaceEditorComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n private originalValue: string;\n\n @ViewChild('search') searchElement: ElementRef;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: InputFieldContext;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public view: CommonControlsViewMode;\n @Input()\n public toggleEdit: Subject;\n\n @Output()\n public inputChanged$: EventEmitter;\n @Output()\n public isEditToggled$: EventEmitter;\n\n public isEdit: boolean;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.view = 'col-view';\n this.isEdit = false;\n this.subscription = new Subscription();\n this.inputChanged$ = new EventEmitter();\n this.isEditToggled$ = new EventEmitter();\n this.toggleEdit = new Subject();\n }\n\n get required(): boolean {\n return typeof this.context.required === 'boolean' ? this.context.required : true;\n }\n\n get fullWidthInput(): boolean {\n return typeof this.context.fullWidthInput === 'boolean' ? this.context.fullWidthInput : true;\n }\n\n get type(): string {\n return typeof this.context.type === 'string' ? this.context.type : 'text';\n }\n\n get readonly(): boolean {\n return this.context.readonly === true;\n }\n\n @HostListener('document:keydown.escape')\n public onEscape(): void {\n if (this.isEdit) {\n this.toggleEditInput(false, true);\n }\n }\n\n public toggleEditInput(shouldEnableEdit: boolean, restoreValue: boolean = false): void {\n this.isEdit = shouldEnableEdit || this.form.get(this.context.field).invalid;\n this.isEditToggled$.emit(this.isEdit);\n if (shouldEnableEdit) {\n setTimeout(() => {\n // this will make the execution after the above boolean has changed\n this.searchElement.nativeElement.focus();\n }, 0);\n } else if (restoreValue) {\n this.form.get(this.context.field).setValue(this.originalValue);\n } else {\n this.inputChanged$.emit(this.form.get(this.context.field).value);\n this.originalValue = this.form.get(this.context.field).value;\n }\n }\n\n public onFocusOut(): void {\n if (this.context.saveButton) {\n return;\n }\n this.toggleEditInput(false);\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscription.add(\n this.formValidationRequest$.subscribe(() => {\n const field: AbstractControl = this.form.get(this.context.field);\n field.markAsDirty();\n field.markAsTouched();\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n this.subscription.add(\n this.form.valueChanges.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n }),\n );\n\n this.originalValue = this.form.get(this.context.field)?.value;\n\n this.subscription.add(\n this.form.get(this.context.field).valueChanges.subscribe((value: string) => {\n if (this.isEdit === false) {\n this.originalValue = value;\n }\n }),\n );\n\n this.subscription.add(\n this.toggleEdit.subscribe((toggled: boolean) => {\n this.toggleEditInput(toggled);\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
\n
\n \n {{ context.label | translate }} *\n \n \n
\n \n {{ context.subLabel | translate }}\n \n \n \n {{ context.description | translate }}\n \n \n
\n
\n \n
\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { DsButtonVariants, DsTooltipPosition, Icons } from '@levelaccess/design-system';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { CommonControlsViewMode } from '../../constants/common-controls-view-mode';\nimport { CommonUtility } from '../../utility/common.utility';\nimport { FormService } from '../../services/form.service';\n\ntype CustomLabelFormatter = (label: string, value: string, description: string) => string;\n\nexport interface InputFieldContext {\n id?: string;\n customMessage?: string;\n label: string;\n field: string;\n readonly?: boolean;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n describedby?: string;\n description?: string;\n descriptionLocation?: DescriptionLocation;\n fullWidthInput?: boolean;\n type?: string;\n autocomplete?: string;\n overrideErrors?: Record;\n tooltip?: string;\n noLabel?: boolean;\n hiddenLabel?: boolean;\n customLabelFormatter?: CustomLabelFormatter;\n width?: string;\n subLabel?: string;\n}\n\ntype DescriptionLocation = 'top' | 'bottom' | 'right';\n\n@Component({\n selector: 'app-common-input',\n templateUrl: './common-input.component.html',\n styleUrls: ['./common-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonInputComponent implements OnInit, OnDestroy, OnChanges {\n private subscription: Subscription;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: InputFieldContext;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public view: CommonControlsViewMode;\n\n public Icons: typeof Icons = Icons;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public DsTooltipPosition: typeof DsTooltipPosition = DsTooltipPosition;\n public labelId: string = CommonUtility.createUniqueDOMId();\n public descriptionId: string = CommonUtility.createUniqueDOMId();\n public subLabelId: string = CommonUtility.createUniqueDOMId();\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private formService: FormService,\n ) {\n this.view = 'col-view';\n }\n\n get required(): boolean {\n return this.formService.isFieldRequired(this.form, this.context);\n }\n\n get fullWidthInput(): boolean {\n if (SharedCommonUtility.isNullish(this.context.fullWidthInput) && SharedCommonUtility.isNullish(this.context.width)) {\n return true;\n }\n return this.context.fullWidthInput;\n }\n\n get type(): string {\n return typeof this.context.type === 'string' ? this.context.type : 'text';\n }\n\n get readonly(): boolean {\n return this.context.readonly === true;\n }\n\n public ngOnChanges(): void {\n if (SharedCommonUtility.notNullish(this.context?.disabled)) {\n if (this.context.disabled) {\n this.form.get(this.context.field).disable();\n } else {\n this.form.get(this.context.field).enable();\n }\n }\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscription = this.formValidationRequest$.subscribe(() => {\n const field: AbstractControl = this.form.get(this.context.field);\n field.markAsDirty();\n field.markAsTouched();\n this.changeDetectorRef.detectChanges();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","
\n 0)\"\n (click)=\"toggle()\"\n (keydown)=\"handleButtonKeyDown($event)\"\n #toggleButton\n >\n {{ selectedText$.value }}\n \n \n
\n
\n
    \n
  • \n \n
  • \n
\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport * as KeyCode from 'keycode-js';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nexport interface MultiSelectContext {\n noSelectionText?: string;\n label?: (selectedValues: string[]) => string;\n}\n\nconst valuesControlArray: string = 'values';\n\n@Component({\n selector: 'app-common-multi-select',\n templateUrl: './common-multi-select.component.html',\n styleUrls: ['./common-multi-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonMultiSelectComponent {\n private _availableValues: string[];\n private _selectedValues: Set;\n public readonly valuesControlArray: string;\n\n @ViewChild('toggleButton')\n public toggleButton: ElementRef;\n\n @Input()\n public context: MultiSelectContext;\n @Input()\n public set availableValues(value: string[]) {\n if (SharedCommonUtility.notNullishOrEmpty(value) && value !== this._availableValues) {\n this._availableValues = value;\n this.updateAvailableValues();\n }\n }\n public get availableValues(): string[] {\n return this._availableValues;\n }\n\n @Input()\n public set selectedValues(value: Set) {\n if (value !== this._selectedValues) {\n this._selectedValues = value;\n this.updateSelectedValues();\n }\n }\n public get selectedValues(): Set {\n return this._selectedValues;\n }\n @Output()\n public selectedValuesChange: EventEmitter>;\n @Input()\n public toggled: boolean;\n @Output()\n public toggledChange: EventEmitter;\n @Input()\n public disabledValues: Set;\n\n public valuesArray: UntypedFormArray;\n public form: UntypedFormGroup;\n public selectedText$: BehaviorSubject;\n public label$: BehaviorSubject;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private elementRef: ElementRef,\n ) {\n this.selectedValuesChange = new EventEmitter>();\n this.toggledChange = new EventEmitter();\n this.toggled = false;\n this._selectedValues = new Set();\n this._availableValues = [];\n this.selectedText$ = new BehaviorSubject('');\n this.valuesControlArray = valuesControlArray;\n this.label$ = new BehaviorSubject('');\n\n this.createForm();\n }\n\n private createForm(): void {\n this.form = this.formBuilder.group({ [valuesControlArray]: this.formBuilder.array([]) });\n this.valuesArray = this.form.get(valuesControlArray) as UntypedFormArray;\n }\n\n private addCheckbox(value: string): void {\n this.valuesArray.push(this.formBuilder.control(this.selectedValues.has(value)));\n }\n\n private updateAvailableValues(): void {\n this.valuesArray.clear();\n this.availableValues.forEach(this.addCheckbox.bind(this));\n }\n\n private updateSelectedValues(): void {\n this.valuesArray.setValue(this._availableValues.map((value: string): boolean => this._selectedValues.has(value)));\n this.updateSelectedText();\n }\n\n private updateSelectedText(): void {\n this.selectedText$.next((Array.from(this.selectedValues).join(', ') || this.context?.noSelectionText) ?? '');\n }\n\n @HostListener('document:click', ['$event'])\n public onClickOutside(event: MouseEvent): void {\n if (this.toggled === false) {\n return;\n }\n\n if (this.elementRef.nativeElement.contains(event.target as Node) === false) {\n this.toggled = false;\n }\n }\n\n public get label(): string {\n return this.context?.label?.(Array.from(this.selectedValues)) ?? this.selectedText$.value;\n }\n\n public checkBoxSelectionChanged(_idx: number): void {\n const selection: boolean[] = this.valuesArray.value;\n const selectedValues: Set = new Set();\n selection.forEach((selected: boolean, index: number): void => {\n if (selected) {\n selectedValues.add(this.availableValues[index]);\n }\n });\n this._selectedValues = selectedValues;\n this.updateSelectedText();\n this.selectedValuesChange.emit(selectedValues);\n }\n\n public toggle(): void {\n this.toggled = !this.toggled;\n this.toggledChange.emit(this.toggled);\n }\n\n public focusToggleButton(): void {\n this.toggleButton.nativeElement.focus();\n }\n\n public isDisabled(index: number): boolean {\n if (SharedCommonUtility.notNullish(this.disabledValues)) {\n return this.disabledValues.has(this.availableValues[index]);\n }\n return false;\n }\n\n public isLastActiveIndex(index: number): boolean {\n return !this.valuesArray.controls\n .slice(index + 1)\n .some((value: AbstractControl, subIndex: number) => !this.isDisabled(index + subIndex));\n }\n\n public handleInputKeyDown(event: KeyboardEvent, index: number): void {\n const isTabKeyDownInLastElement: boolean =\n event.keyCode === KeyCode.KEY_TAB && !event.shiftKey && this.isLastActiveIndex(index) && this.toggled;\n const isEscapeKeyDown: boolean = event.keyCode === KeyCode.KEY_ESCAPE && this.toggled;\n if (isTabKeyDownInLastElement || isEscapeKeyDown) {\n this.toggle();\n if (isEscapeKeyDown) {\n this.focusToggleButton();\n }\n }\n }\n\n public handleButtonKeyDown(event: KeyboardEvent): void {\n const isShiftTabKeyDownOnToggled: boolean = event.keyCode === KeyCode.KEY_TAB && event.shiftKey && this.toggled;\n const isEscapeKeyDown = event.keyCode === KeyCode.KEY_ESCAPE && this.toggled;\n if (isShiftTabKeyDownOnToggled || isEscapeKeyDown) {\n this.toggle();\n if (isEscapeKeyDown) {\n this.focusToggleButton();\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-common-name-tag',\n templateUrl: './common-name-tag.component.html',\n styleUrls: ['./common-name-tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonNameTagComponent {\n @Input()\n public fileName: string;\n\n @Input()\n public redBorder: boolean;\n\n @Output()\n public closeButtonClicked: EventEmitter;\n\n constructor() {\n this.closeButtonClicked = new EventEmitter();\n }\n\n public buttonClicked(): void {\n this.closeButtonClicked.emit();\n }\n}\n","
\n {{ fileName }}\n \n \n
\n","
\n
\n \n \n \n
\n\n \n {{ context.description | translate }}\n \n \n \n \n \n \n \n
\n \n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { CommonControlsViewMode } from '../../constants/common-controls-view-mode';\nimport { FormService } from '../../services/form.service';\n\nexport interface SelectFieldContext {\n customMessage?: string;\n label?: string;\n field: string;\n valueKey?: string;\n nameKey?: string | ((value: any) => string);\n translateName?: boolean;\n required?: boolean;\n description?: string;\n fullWidthInput?: boolean;\n disabled?: boolean;\n tooltip?: string;\n placeholderValue?: string;\n}\n\n@Component({\n selector: 'app-common-select',\n templateUrl: './common-select.component.html',\n styleUrls: ['./common-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonSelectComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: SelectFieldContext;\n @Input()\n public values: string[] | Record[];\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public view: CommonControlsViewMode;\n\n @Output()\n public valueChanged$: EventEmitter;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private formService: FormService,\n ) {\n this.view = 'col-view';\n this.valueChanged$ = new EventEmitter();\n }\n\n public get disabled(): boolean {\n return typeof this.context.disabled === 'boolean' ? this.context.disabled : this.form.get(this.context.field).disabled;\n }\n\n public get required(): boolean {\n return this.formService.isFieldRequired(this.form, this.context);\n }\n\n public get fullWidthInput(): boolean {\n return typeof this.context.fullWidthInput === 'boolean' ? this.context.fullWidthInput : true;\n }\n\n public get selectValues(): string[] | Record[] {\n return Array.isArray(this.values) ? this.values : [];\n }\n\n public getOptionName(value: string | Record): any {\n if (typeof this.context.nameKey === 'function') {\n return this.context.nameKey(value);\n }\n\n if (typeof this.context.nameKey === 'string') {\n return value[this.context.nameKey];\n }\n\n return value;\n }\n\n public comparator(): (a: any, b: any) => boolean {\n return (a: any, b: any): boolean => {\n if (a !== null && b !== null && typeof a === 'object' && typeof b === 'object') {\n return this.getOptionName(a) === this.getOptionName(b);\n }\n\n return a === b;\n };\n }\n\n public onSelectChange(): void {\n this.valueChanged$.emit(this.form.get(this.context.field).value);\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscription = this.formValidationRequest$.subscribe(() => {\n this.form.get(this.context.field).markAsDirty();\n this.form.get(this.context.field).markAsTouched();\n this.changeDetectorRef.detectChanges();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-common-spinner',\n templateUrl: './common-spinner.component.html',\n styleUrls: ['./common-spinner.component.scss'],\n})\nexport class CommonSpinnerComponent {\n /**\n * Specify width and height in pixels\n */\n @Input() public size: number;\n\n constructor() {\n this.size = 32;\n }\n}\n","
\n
\n
\n {{ 'loading_spinner_text' | translate }}\n
\n
\n
\n","\n
\n \n \n \n {{ status | translate }}\n
\n
\n\n\n \n\n\n\n \n\n\n
\n \n \n\n \n \n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'app-common-switch',\n templateUrl: './common-switch.component.html',\n styleUrls: ['./common-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonSwitchComponent {\n public label: string;\n @Input() public id: string;\n @Input() public name: string;\n @Input() public disabled: boolean;\n @Input() public nonClickableLabel: boolean;\n\n @Input() public value: boolean;\n @Output() public valueChange: EventEmitter;\n\n @Input() public labelTemplate: TemplateRef<{ nonClickableLabel: boolean }>;\n @Input() public switchButtonContainerTemplate: TemplateRef;\n @Input() public switchContainerClass: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.valueChange = new EventEmitter();\n this.switchContainerClass = 'd-flex align-items-center justify-content-between';\n }\n\n public onValueChanged(): void {\n this.value = !this.value;\n this.valueChange.emit(this.value);\n this.changeDetectorRef.detectChanges();\n }\n\n public get status(): string {\n return this.value === true ? 'label_on' : 'label_off';\n }\n}\n","
\n
\n \n \n
\n {{ context.description | translate }} \n \n
\n \n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { CommonControlsViewMode } from '../../constants/common-controls-view-mode';\nimport { FormService } from '../../services/form.service';\n\nexport interface TextareaFieldContext {\n customMessage?: string;\n label: string;\n field: string;\n id?: string;\n placeholder: string;\n required?: boolean;\n description?: string;\n rows?: number;\n lineLimit?: number;\n limitLabel?: string;\n noLabel?: boolean;\n overrideErrors?: Record;\n}\n\n@Component({\n selector: 'app-common-textarea',\n templateUrl: './common-textarea.component.html',\n styleUrls: ['./common-textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommonTextareaComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public context: TextareaFieldContext;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public view: CommonControlsViewMode;\n\n @Output()\n public valueChanged$: EventEmitter;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private formService: FormService,\n ) {\n this.view = 'col-view';\n this.subscriptions = new Subscription();\n this.valueChanged$ = new EventEmitter();\n }\n\n get domId(): string {\n return this.context.id ?? this.context.field;\n }\n\n get errorDomId(): string {\n return `${this.domId}-error`;\n }\n\n get required(): boolean {\n return this.formService.isFieldRequired(this.form, this.context);\n }\n\n public ngOnInit(): void {\n if (this.formValidationRequest$) {\n this.subscriptions.add(\n this.formValidationRequest$.subscribe(() => {\n this.form.get(this.context.field).updateValueAndValidity();\n }),\n );\n }\n this.subscriptions.add(\n this.form.valueChanges.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public onChange(): void {\n this.valueChanged$.emit(this.form.get(this.context.field).value);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n \n \n {{ noChangePrefix + ' ' + ('no_change' | translate) }}\n \n \n 0\">\n \n \n {{ '+' + variation }}\n \n \n \n \n {{ variation }}\n \n \n\n\n
\n \n \n {{ 'no_change' | translate }}\n \n \n \n {{ (isPositiveTrend ? 'score-increase-message' : 'score-decrease-message') | translate: [absVariation] }}\n \n
\n","import { Component, Input } from '@angular/core';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { SharedObjectUtility } from '../../../../shared/utils/object.utility';\nimport { EapColors } from '../../shared/eap-colors';\nimport { Icons } from '../../shared/eap-icons.component';\n\nexport interface ITrendConfig {\n currentValue: number;\n previousValue: number;\n isIncreaseImprovement: boolean;\n showNoChange?: boolean;\n noChangePrefix?: string;\n}\n\n@Component({\n selector: 'app-common-trend',\n templateUrl: './common-trend.component.html',\n})\nexport class CommonTrendComponent {\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n\n @Input() public config: ITrendConfig;\n\n constructor() {\n this.Icons = Icons;\n this.EapColors = EapColors;\n }\n\n public get isPositiveTrend(): boolean {\n return this.variation > 0;\n }\n\n public get variation(): number {\n const _variation: number = this.config?.currentValue - this.config?.previousValue;\n if (SharedObjectUtility.isNumber(_variation)) {\n return _variation;\n }\n return 0;\n }\n\n public get absVariation(): number {\n return Math.abs(this.variation);\n }\n\n public get noChangePrefix(): string {\n if (SharedCommonUtility.isNullishOrEmpty(this.config?.noChangePrefix)) {\n return '';\n }\n return this.config.noChangePrefix;\n }\n}\n","import { Component, Input, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport ClipboardJS from 'clipboard';\n\nimport { ClipboardService } from '../../services/clipboard.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-copy-to-clipboard',\n templateUrl: './copy-to-clipboard.component.html',\n styleUrls: ['./copy-to-clipboard.component.scss'],\n})\nexport class CopyToClipboardComponent implements OnInit, OnDestroy, AfterViewInit {\n /*\n * The ID of the HTMLElement you are copying the text from\n * Do not set both: inputId and textValue\n */\n @Input() public inputId: string;\n /*\n * Raw text to copy\n * Do not set both: inputId and textValue\n */\n @Input() public textValue: string;\n @Input() public buttonText: string;\n @Input() public tooltip: boolean;\n @Input() public clipboardOptions: ClipboardJS.Options;\n\n constructor(\n private clipboardService: ClipboardService,\n public translateService: TranslateService,\n ) {\n this.tooltip = true;\n }\n\n public ngOnInit(): void {\n if (SharedCommonUtility.isNullish(this.buttonText)) {\n this.buttonText = this.translateService.instant('copy');\n }\n }\n\n public ngAfterViewInit(): void {\n try {\n this.clipboardService.init(this.clipboardOptions, this.inputId);\n } catch (e) {\n console.error('Cannot init the clipboard component', e);\n }\n }\n\n public ngOnDestroy(): void {\n try {\n this.clipboardService.destroyClipboardService(this.inputId);\n } catch (e) {\n console.error('Cannot destroy the clipboard component', e);\n }\n }\n}\n","\n {{ buttonText }}\n \n \n \n\n","
\n
\n
\n \n
\n
\n","import { Component, EventEmitter, OnInit, AfterViewInit, OnDestroy, Input, ElementRef, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport Croppie from 'croppie';\n\nimport { BusyIndicatorService } from '../../services/busy-indicator/busy-indicator.service';\nimport { CommonUtility } from '../../utility/common.utility';\n\nconst DEFAULT_IMG =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';\n@Component({\n selector: 'app-crop-image',\n templateUrl: './crop-image.component.html',\n styleUrls: ['./crop-image.component.scss'],\n})\nexport class CropImageComponent implements OnInit, AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n private croppie: Croppie;\n\n private previewElm: HTMLImageElement;\n\n @Input() public file: EventEmitter;\n @Input() public options: any;\n @Output() public onCroppedFile: EventEmitter;\n\n public fileData: File;\n\n constructor(\n private element: ElementRef,\n private busyIndicatorService: BusyIndicatorService,\n ) {\n this.file = new EventEmitter();\n this.onCroppedFile = new EventEmitter();\n this.fileData = null;\n this.subscriptions = new Subscription();\n }\n\n private getElementsReferences(): void {\n const hostContainer = this.element.nativeElement;\n\n this.previewElm = hostContainer.querySelector('#croppieContainer');\n }\n\n private createImage(): void {\n const reader: FileReader = new FileReader();\n\n const processImage = (event: any): void => {\n this.croppie.bind({\n url: event.target.result,\n });\n\n reader.removeEventListener('load', processImage);\n this.busyIndicatorService.closeIndicator();\n };\n\n reader.addEventListener('load', processImage);\n reader.readAsDataURL(this.fileData);\n }\n\n private onIncomingFile(file: File): void {\n this.fileData = file;\n\n if (file === null) {\n return;\n }\n\n this.busyIndicatorService.openIndicator();\n\n CommonUtility.requestIdleCallback(this.createImage.bind(this));\n }\n\n private initCroppie(): void {\n this.croppie = new Croppie(this.previewElm, {\n viewport: { width: 100, height: 100, type: 'circle' },\n boundary: { width: 500, height: 300 },\n enableOrientation: true,\n showZoomer: true,\n });\n\n const preloadedImageUrl = DEFAULT_IMG;\n\n this.croppie.bind({\n url: preloadedImageUrl,\n zoom: 0,\n });\n }\n\n public onGetCroppedImage(): void {\n const saveResult = (data: Blob): void => {\n this.onCroppedFile.emit(data);\n };\n\n this.croppie\n .result({\n type: 'blob',\n })\n .then(saveResult);\n }\n\n public imageOnError(event: Event): void {\n console.error(event);\n }\n\n public ngOnInit(): void {\n const onIncomingFileSubscription: Subscription = this.file.subscribe(this.onIncomingFile.bind(this));\n\n this.subscriptions.add(onIncomingFileSubscription);\n }\n\n public ngAfterViewInit(): void {\n this.getElementsReferences();\n this.initCroppie();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.previewElm = null;\n }\n}\n","
\n \n {{ severityText }}\n
\n","import { Component, Input } from '@angular/core';\nimport { DsColors, Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { $severity } from '../../../../shared/constants/accessibility';\nimport { ICustomSeveritiesMap, ICustomSeverity } from '../../../../shared/interfaces/tenant.interface';\nimport { $customSeverity } from '../../../../shared/constants/tenant';\nimport { SeverityClass } from '../../interfaces/custom-severities.interface';\nimport { SharedTextUtility } from '../../../../shared/utils/text.utility';\n\n@Component({\n selector: 'app-custom-rule-severity',\n templateUrl: './custom-rule-severity.component.html',\n styleUrls: ['./custom-rule-severity.component.scss'],\n})\nexport class CustomRuleSeverityComponent {\n protected readonly Icons: typeof Icons = Icons;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly colors: typeof DsColors = DsColors;\n\n @Input() public severity: $severity;\n @Input() public customSeverities: ICustomSeveritiesMap;\n\n public $severity: typeof $severity;\n constructor() {\n this.$severity = $severity;\n }\n\n protected get severityText(): string {\n return SharedTextUtility.capitalize(this.customSeverities?.get(this.severity)?.[$customSeverity.label]);\n }\n\n protected get severityIcon(): Icons {\n const customSeverity: ICustomSeverity = this.customSeverities.get(this.severity);\n if (customSeverity[$customSeverity.system]) {\n return this.systemSeverityIcon;\n }\n if (customSeverity[$customSeverity.rank] === this.customSeverities.get($severity.high)[$customSeverity.rank] - 1) {\n return Icons.ChevronUp;\n }\n return Icons.ChevronDown;\n }\n\n protected get severityClass(): SeverityClass {\n const customSeverity: ICustomSeverity = this.customSeverities.get(this.severity);\n if (customSeverity[$customSeverity.system]) {\n return this.systemSeverityClass;\n }\n if (customSeverity[$customSeverity.rank] === this.customSeverities.get($severity.high)[$customSeverity.rank] - 1) {\n return SeverityClass.moderate;\n }\n return SeverityClass.minor;\n }\n\n private get systemSeverityIcon(): Icons | undefined {\n switch (this.severity) {\n case $severity.critical:\n return Icons.CircleMinus;\n case $severity.high:\n return Icons.ChevronsUp;\n case $severity.low:\n return Icons.ChevronsDown;\n default:\n return undefined;\n }\n }\n\n protected get systemSeverityClass(): SeverityClass | undefined {\n switch (this.severity) {\n case $severity.critical:\n return SeverityClass.critical;\n case $severity.high:\n return SeverityClass.high;\n case $severity.low:\n return SeverityClass.low;\n default:\n return undefined;\n }\n }\n}\n","\n
\n
    \n \n \n
    \n {{ step.label }}\n
    \n \n
    \n
\n {{ 'how_is_this_status_calculated' | translate }}\n
\n \n

{{ 'no_status_yet' | translate }}

\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { kebabCase, snakeCase } from 'lodash';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { $riskScoreLevels } from '../../../../../../shared/constants/risk-metrics';\nimport { RiskLevelUtility } from '../../../../../../shared/utils/risk-level.utility';\n\ninterface IStep {\n label: string;\n id: $riskScoreLevels;\n class: string;\n}\n\n@Component({\n selector: 'app-risk-management-status-stepper',\n templateUrl: './risk-management-status-stepper.component.html',\n styleUrls: ['./risk-management-status-stepper.component.scss'],\n})\nexport class RiskManagementStatusStepperComponent implements OnInit, OnChanges {\n public steps: IStep[];\n public level: $riskScoreLevels;\n\n @Input() public score: number;\n @Output() public onStatusExplanationClicked: EventEmitter = new EventEmitter();\n\n constructor(private translateService: TranslateService) {\n this.steps = [];\n }\n\n private getLevelText(level: string): string {\n return this.translateService.instant(snakeCase(level));\n }\n\n public get containsLevel(): boolean {\n return SharedCommonUtility.notNullish(this.level);\n }\n\n public ngOnInit(): void {\n this.setupLevels();\n }\n\n private setupLevels(): void {\n this.steps = [\n this.makeStep($riskScoreLevels.behind),\n this.makeStep($riskScoreLevels.needsAttention),\n this.makeStep($riskScoreLevels.onTrack),\n this.makeStep($riskScoreLevels.excelling),\n ];\n\n this.selectLevel();\n }\n\n private makeStep(level: $riskScoreLevels): IStep {\n return {\n label: this.getLevelText(level),\n id: level,\n class: kebabCase(level),\n };\n }\n\n private selectLevel(): void {\n this.level = RiskLevelUtility.getLevel(this.score);\n }\n\n public ngOnChanges(): void {\n this.setupLevels();\n }\n\n public isActive(step: IStep): boolean {\n return this.level === step.id;\n }\n\n public openRiskScoreExplanationModal(ev: Event): void {\n this.onStatusExplanationClicked.next(ev);\n }\n}\n","\n
\n

{{ 'available_levels' | translate }}

\n
    \n
  1. \n 0\" [icon]=\"Icons.ChevronRight\" class=\"me-2\">\n {{ levelText }}\n
  2. \n
\n
\n
\n

{{ currentLevelText }}

\n

\n {{ levelExplanation }}\n

\n

\n {{ additionalExplanation | translate }}\n

\n
\n
\n {{ 'findings_breakdown_label' | translate: [formattedComputedDate] }}\n
    \n
  • \n {{ value }}\n
  • \n
\n
\n
\n","import { Component, Input, OnInit, OnChanges } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { snakeCase } from 'lodash';\nimport { Icons } from '@levelaccess/design-system';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { $riskScoreLevels } from '../../../../../../shared/constants/risk-metrics';\nimport { DateUtility } from '../../../../utility/date.utility';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { ICustomSeveritiesMap } from '../../../../../../shared/interfaces/tenant.interface';\nimport { $severity } from '../../../../../../shared/constants/accessibility';\nimport { $customSeverity } from '../../../../../../shared/constants/tenant';\n\nexport interface IFindingsBreakdownData {\n resolvedCount: number;\n criticalOverdueCount: number;\n highOverdueCount: number;\n custom1OverdueCount?: number;\n custom2OverdueCount?: number;\n lowOverdueCount: number;\n computedDate: Date;\n}\n\n@Component({\n selector: 'app-risk-score-explanation-modal',\n templateUrl: './risk-score-explanation-modal.component.html',\n styleUrls: ['./risk-score-explanation-modal.component.scss'],\n})\nexport class RiskScoreExplanationModalComponent implements OnInit, OnChanges {\n @Input() public level: $riskScoreLevels;\n @Input() public additionalExplanation: string;\n @Input() public findingsData: IFindingsBreakdownData;\n @Input() public levelToExplanation: Record<$riskScoreLevels, string>;\n @Input() public customSeveritiesData: ICustomSeveritiesMap;\n @Input() public customSeverityKeysSortedByRank: $severity[];\n\n public Icons: typeof Icons;\n public findingsBreakdown: string[];\n\n constructor(\n public modal: NgbActiveModal,\n private translateService: TranslateService,\n ) {\n this.Icons = Icons;\n }\n\n public get availableLevels(): string[] {\n return Object.values($riskScoreLevels).map(this.translateLevel.bind(this));\n }\n\n public get currentLevelText(): string {\n return this.translateLevel(this.level);\n }\n\n public get levelExplanation(): string {\n const localization: string = SharedCommonUtility.isNullish(this.levelToExplanation)\n ? this.defaultLevelExplanationPerLevel[this.level]\n : this.levelToExplanation[this.level];\n return this.translateService.instant(localization);\n }\n\n public get formattedComputedDate(): string {\n return DateUtility.prettifyDate(this.findingsData.computedDate, {\n month: 'long',\n day: 'numeric',\n });\n }\n\n private buildFindingsBreakdown(): string[] {\n if (SharedCommonUtility.isNullish(this.findingsData)) {\n return null;\n }\n\n if (SharedCommonUtility.isNullish(this.customSeveritiesData)) {\n return [\n this.translateService.instant('findings_breakdown_resolved', this.findingsData.resolvedCount.toLocaleString()),\n this.translateService.instant(\n 'findings_breakdown_critical_overdue',\n this.findingsData.criticalOverdueCount.toLocaleString(),\n ),\n this.translateService.instant('findings_breakdown_high_overdue', this.findingsData.highOverdueCount.toLocaleString()),\n this.translateService.instant('findings_breakdown_low_overdue', this.findingsData.lowOverdueCount.toLocaleString()),\n ];\n }\n\n const translateFinding = (severity: $severity, count: number): string => {\n const severityLabel: string = this.customSeveritiesData.get(severity)?.[$customSeverity.label]?.toLocaleLowerCase();\n return this.translateService.instant('findings_breakdown_x_overdue', [severityLabel, count.toLocaleString()]);\n };\n\n const availableFindings: string[] = [\n this.translateService.instant('findings_breakdown_resolved', this.findingsData.resolvedCount.toLocaleString()),\n translateFinding($severity.critical, this.findingsData.criticalOverdueCount),\n translateFinding($severity.high, this.findingsData.highOverdueCount),\n ];\n\n if (SharedCommonUtility.notNullishOrEmpty(this.customSeverityKeysSortedByRank)) {\n this.customSeverityKeysSortedByRank.forEach((customSeverity: $severity) => {\n if (customSeverity === $severity.custom1) {\n availableFindings.push(translateFinding($severity.custom1, this.findingsData.custom1OverdueCount));\n }\n if (customSeverity === $severity.custom2) {\n availableFindings.push(translateFinding($severity.custom2, this.findingsData.custom2OverdueCount));\n }\n });\n }\n\n availableFindings.push(translateFinding($severity.low, this.findingsData.lowOverdueCount));\n return availableFindings;\n }\n\n private translateLevel(level: $riskScoreLevels): string {\n return this.translateService.instant(snakeCase(level));\n }\n\n private get defaultLevelExplanationPerLevel(): Record<$riskScoreLevels, string> {\n return {\n [$riskScoreLevels.behind]: 'risk_score_level_explanation_for_behind',\n [$riskScoreLevels.needsAttention]: 'risk_score_level_explanation_for_needs_attention',\n [$riskScoreLevels.onTrack]: 'risk_score_level_explanation_for_on_track',\n [$riskScoreLevels.excelling]: 'risk_score_level_explanation_for_excelling',\n };\n }\n\n public ngOnInit(): void {\n this.findingsBreakdown = this.buildFindingsBreakdown();\n }\n\n public ngOnChanges(): void {\n this.findingsBreakdown = this.buildFindingsBreakdown();\n }\n}\n","\n {{ 'label_scan_tag' | translate }} *\n\n\n \n \n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, mergeMap, take } from 'rxjs/operators';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { UserService } from '../../services/user.service';\nimport { ScanTagService } from '../../services/scan-tag.service';\nimport { IDigitalPropertyListItem } from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\nimport { $workspace } from '../../../../shared/constants/workspace';\nimport { IScanTag, IScanTagServerResponse } from '../../../../shared/interfaces/scan-tag.interface';\nimport { $scanTag, SystemTags } from '../../../../shared/constants/scan-tag';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { ScanTagUtility } from '../../../../shared/utils/scan-tag.utility';\nimport { AutomatedScanAdvancedService } from '../../pages/public/automated-scan/advanced/automated-scan-advanced.service';\nimport { scanningType } from '../../../../shared/constants/scanning';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-deprecated-scan-tag-selector',\n templateUrl: './deprecated-scan-tag-selector.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DeprecatedScanTagSelectorComponent),\n multi: true,\n },\n ],\n})\nexport class DeprecatedScanTagSelectorComponent implements ControlValueAccessor, OnInit {\n @Input() public disabled: boolean;\n @Input() public disabledUnselectedValue: boolean;\n @Input() public unselectedValueLabel: string;\n @Input() public required: boolean;\n\n public onChange: Function = () => {};\n public onTouched: Function = () => {};\n\n public selectedTagId: string;\n public subscriptions: Subscription;\n public $scanTag: typeof $scanTag;\n\n private allTags: IScanTag[] = [];\n private userTags: IScanTag[] = [];\n private enableReservedSystemTags: boolean;\n\n constructor(\n private userService: UserService,\n private scanTagService: ScanTagService,\n private changeDetector: ChangeDetectorRef,\n private loadErrorHandler: LoadErrorHandler,\n private automatedScanAdvancedService: AutomatedScanAdvancedService,\n ) {\n this.selectedTagId = null;\n this.subscriptions = new Subscription();\n this.$scanTag = $scanTag;\n this.unselectedValueLabel = 'label_select_a_scan_tag';\n this.disabledUnselectedValue = true;\n this.onChange = (ignore: string): void => {};\n this.onTouched = (): void => {};\n this.disabled = false;\n }\n\n public get availableTags(): IScanTag[] {\n return this.enableReservedSystemTags ? this.allTags : this.userTags;\n }\n\n private onGetScanTagsSuccess(response: IScanTagServerResponse): void {\n this.allTags = response.tags;\n this.userTags = response.tags.filter((tag: IScanTag) => !ScanTagUtility.isReservedSystemTag(tag[$scanTag.tagName]));\n this.changeDetector.detectChanges();\n }\n\n private onGetScanTagsError(error: HttpErrorResponse): void {\n this.loadErrorHandler.handleError('error_getting_scan_tags', error, DeprecatedScanTagSelectorComponent.name);\n }\n\n private onDigitalPropertyChanged(digitalProperty: IDigitalPropertyListItem): void {\n const digitalPropertyId: string = digitalProperty[$digitalProperty._id];\n const workspaceId: string = digitalProperty[$digitalProperty.workspace][$workspace._id];\n this.subscriptions.add(\n this.scanTagService.getScanTagsFromDigitalProperty(workspaceId, digitalPropertyId).subscribe({\n next: this.onGetScanTagsSuccess.bind(this),\n error: this.onGetScanTagsError.bind(this),\n }),\n );\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.userService.currentDigitalProperty$\n .pipe(\n distinctUntilChanged(),\n mergeMap((): Observable => this.userService.currentDigitalProperty$.pipe(take(1))),\n )\n .subscribe(this.onDigitalPropertyChanged.bind(this)),\n );\n\n this.subscribeToScanningType();\n }\n\n private subscribeToScanningType(): void {\n this.subscriptions.add(\n this.automatedScanAdvancedService.getScanningType$().subscribe((type: scanningType) => {\n if (type === scanningType.automatedUserFlow) {\n this.disabled = true;\n this.enableReservedSystemTags = true;\n this.selectByName(SystemTags.AutomatedUserFlow);\n } else {\n this.disabled = false;\n this.enableReservedSystemTags = false;\n this.resetSelectedTagIfUnavailable();\n }\n this.changeDetector.detectChanges();\n }),\n );\n }\n\n private selectByName(tagName: string): void {\n const scanTag: IScanTag = this.availableTags.find((tag: IScanTag) => tag[$scanTag.tagName] === tagName);\n\n if (SharedCommonUtility.notNullish(scanTag)) {\n this.select(scanTag._id);\n }\n }\n\n private resetSelectedTagIfUnavailable(): void {\n if (this.availableTags.every((tag: IScanTag) => tag._id !== this.selectedTagId)) {\n this.select(null);\n }\n }\n\n public select(tagId: string): void {\n if (tagId === this.selectedTagId) {\n return;\n }\n this.selectedTagId = tagId;\n this.onTouched();\n this.onChange(tagId);\n this.changeDetector.detectChanges();\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.detectChanges();\n }\n\n public writeValue(obj: string): void {\n this.select(obj);\n }\n}\n","export enum $advancedSetupStep {\n scope = 0,\n schedule = 1,\n scanSettings = 2,\n alerts = 3,\n review = 4,\n}\n","
\n
\n \n \n
\n\n \n
\n \n
\n\n
\n \n {{ formFields.scanCompletion | translate }}\n \n
\n\n
\n \n {{ formFields.scoreDropByPercent | translate }}\n \n\n
\n \n \n
\n
\n\n
\n \n {{ formFields.scoreDropByPercentFromPrevious | translate }}\n \n\n
\n \n \n
\n
\n\n \n \n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n $digitalPropertyMonitoringAlertType,\n $digitalPropertyMonitoringAlerts,\n} from '../../../../../../../../shared/constants/digital-properties';\nimport { $user, accountStatus } from '../../../../../../../../shared/constants/user';\nimport { $workspace } from '../../../../../../../../shared/constants/workspace';\nimport { WorkspaceUserSearchFields } from '../../../../../../../../shared/constants/workspace-user.constants';\nimport {\n IDigitalPropertyMonitoringUserAlertsWithEmail,\n IDigitalPropertyWorkspace,\n} from '../../../../../../../../shared/interfaces/digital-property.interface';\nimport { IUser } from '../../../../../../../../shared/interfaces/user.interface';\nimport { SharedCommonUtility } from '../../../../../../../../shared/utils/common.utility';\nimport { ErrorMessageService } from '../../../../../../services/error-message.service';\nimport { CustomValidators } from '../../../../../../services/helpers/form-custom-validators';\nimport { LoadErrorHandler } from '../../../../../../services/load-error-handler';\nimport { WorkspaceService } from '../../../../../../services/workspace.service';\n\nenum FormFields {\n email = 'email',\n scanCompletion = 'scanCompletion',\n scoreDropByPercent = 'scoreDropByPercent',\n scoreDropByPercentThreshold = 'scoreDropByPercentThreshold',\n scoreDropByPercentFromPrevious = 'scoreDropByPercentFromPrevious',\n scoreDropByPercentFromPreviousThreshold = 'scoreDropByPercentFromPreviousThreshold',\n atLeastOneAlertSelected = 'atLeastOneAlertSelected',\n}\n\n@Component({\n selector: 'app-monitoring-alerts-editor',\n templateUrl: './monitoring-alerts-editor.component.html',\n styleUrls: ['monitoring-alerts-editor.component.scss'],\n})\nexport class MonitoringAlertsEditorComponent implements AfterViewInit, OnDestroy, OnInit {\n private userAlerts$: ReplaySubject;\n private _userAlerts: IDigitalPropertyMonitoringUserAlertsWithEmail;\n private userIdsMap: Record;\n private subscriptions: Subscription;\n public notMonitoringSettingsUpdate: string;\n\n @Input()\n public set userAlerts(value: IDigitalPropertyMonitoringUserAlertsWithEmail) {\n this.userAlerts$.next(value);\n }\n\n @Input()\n public allAlertEmails: string[];\n\n @Input()\n public workspace: IDigitalPropertyWorkspace;\n\n @Input()\n public formValidationRequest$: Subject;\n\n @Output()\n public onCancel: EventEmitter;\n\n @Output()\n public onSave: EventEmitter;\n\n public scoreDropSelected: boolean;\n public scoreDropFromPreviousSelected: boolean;\n\n public alertEditorForm: UntypedFormGroup;\n public formFields: typeof FormFields;\n constructor(\n private element: ElementRef,\n private formBuilder: UntypedFormBuilder,\n private errorMessageService: ErrorMessageService,\n private workspaceService: WorkspaceService,\n private loadErrorHandler: LoadErrorHandler,\n ) {\n this.formFields = FormFields;\n this.onCancel = new EventEmitter();\n this.onSave = new EventEmitter();\n this.userAlerts$ = new ReplaySubject(1);\n this.userIdsMap = {};\n this.subscriptions = new Subscription();\n this.scoreDropSelected = false;\n this.scoreDropFromPreviousSelected = false;\n this.createForm();\n }\n private validateOneAlertSelected(control: AbstractControl): ValidationErrors | null {\n const atLeastOneSelected: boolean =\n control.value[FormFields.scanCompletion] === true ||\n control.value[FormFields.scoreDropByPercent] === true ||\n control.value[FormFields.scoreDropByPercentFromPrevious] === true;\n\n return atLeastOneSelected ? null : { noSelection: true };\n }\n\n private validateAlertEmail(control: AbstractControl): ValidationErrors | null {\n const email: string = control?.value.trim().toLowerCase();\n if (SharedCommonUtility.isValidEmail(email) && email !== this._userAlerts[$digitalPropertyMonitoringAlerts.email]) {\n if (this.allAlertEmails.includes(email)) {\n return { notUniqueEmail: true };\n }\n if (SharedCommonUtility.isNullish(this.userIdsMap[email])) {\n return { notPlatformEmail: true };\n }\n }\n return null;\n }\n\n private createForm(): void {\n this.alertEditorForm = this.formBuilder.group(\n {\n [FormFields.email]: this.formBuilder.control('', [\n CustomValidators.required,\n CustomValidators.validateEmail,\n this.validateAlertEmail.bind(this),\n ]),\n [FormFields.scanCompletion]: this.formBuilder.control(false),\n [FormFields.scoreDropByPercent]: this.formBuilder.control(false),\n [FormFields.scoreDropByPercentFromPrevious]: this.formBuilder.control(false),\n },\n\n { validators: [this.validateOneAlertSelected] },\n );\n }\n\n private getWorkspaceUsers(): void {\n this.subscriptions.add(\n this.workspaceService\n .getUsers(this.workspace[$workspace._id], {\n [WorkspaceUserSearchFields.status]: [accountStatus.active],\n [WorkspaceUserSearchFields.includeStaffUsers]: true,\n })\n .subscribe({\n next: this.onGetUsersSuccess.bind(this),\n error: this.onGetUsersError.bind(this),\n }),\n );\n }\n\n private onGetUsersSuccess(users: IUser[]): void {\n this.userIdsMap = users.reduce((acc: Record, user: IUser) => {\n acc[user[$user.email]] = user[$user._id];\n return acc;\n }, {});\n }\n\n private onGetUsersError(error: HttpErrorResponse): void {\n this.loadErrorHandler.handleError('unable_to_get_all_workspace_users', error, MonitoringAlertsEditorComponent.name);\n }\n\n public isValid(): boolean {\n this.formValidationRequest$.next();\n if (!this.alertEditorForm.valid) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return false;\n }\n return true;\n }\n\n private updateScoreDropSelected(selected: boolean): void {\n this.scoreDropSelected = selected;\n if (this.scoreDropSelected) {\n this.alertEditorForm.addControl(\n FormFields.scoreDropByPercentThreshold,\n this.formBuilder.control(this._userAlerts?.[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercent?.threshold, [\n CustomValidators.validateInteger,\n CustomValidators.min(1),\n CustomValidators.max(100),\n ]),\n );\n } else {\n this.alertEditorForm.removeControl(FormFields.scoreDropByPercentThreshold);\n }\n }\n\n private updateScoreDropFromPreviousSelected(selected: boolean): void {\n this.scoreDropFromPreviousSelected = selected;\n if (this.scoreDropFromPreviousSelected) {\n this.alertEditorForm.addControl(\n FormFields.scoreDropByPercentFromPreviousThreshold,\n this.formBuilder.control(\n this._userAlerts?.[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercentFromPrevious?.threshold,\n [CustomValidators.required, CustomValidators.validateInteger, CustomValidators.min(1), CustomValidators.max(100)],\n ),\n );\n } else {\n this.alertEditorForm.removeControl(FormFields.scoreDropByPercentFromPreviousThreshold);\n }\n }\n\n private initValueFromData(userAlerts: IDigitalPropertyMonitoringUserAlertsWithEmail | null): void {\n this._userAlerts = userAlerts;\n\n if (!userAlerts) {\n return;\n }\n\n this.alertEditorForm.get(FormFields.email).setValue(userAlerts[$digitalPropertyMonitoringAlerts.email]);\n this.alertEditorForm\n .get(FormFields.scanCompletion)\n .setValue(userAlerts[$digitalPropertyMonitoringAlerts.alerts].scanCompletion?.set);\n\n this.alertEditorForm\n .get(FormFields.scoreDropByPercent)\n .setValue(userAlerts[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercent?.set);\n this.updateScoreDropSelected(userAlerts[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercent?.set ?? false);\n\n this.alertEditorForm\n .get(FormFields.scoreDropByPercentFromPrevious)\n .setValue(userAlerts[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercentFromPrevious?.set);\n this.updateScoreDropFromPreviousSelected(\n userAlerts[$digitalPropertyMonitoringAlerts.alerts].scoreDropByPercentFromPrevious?.set ?? false,\n );\n }\n\n private getThresholdValue(field: string): number | undefined {\n const rawValue: string | number | undefined = this.alertEditorForm.get(field)?.value;\n if (typeof rawValue === 'number') {\n return Math.floor(rawValue);\n }\n if (typeof rawValue === 'string') {\n return rawValue.trim() ? Math.floor(Number(rawValue)) : undefined;\n }\n\n return undefined;\n }\n\n private getValue(): IDigitalPropertyMonitoringUserAlertsWithEmail {\n const email: string = this.alertEditorForm.get(FormFields.email).value.trim().toLowerCase();\n return {\n [$digitalPropertyMonitoringAlerts.userId]: this.userIdsMap[email],\n [$digitalPropertyMonitoringAlerts.email]: email,\n [$digitalPropertyMonitoringAlerts.alerts]: {\n [$digitalPropertyMonitoringAlertType.scanCompletion]: {\n set: this.alertEditorForm.get(FormFields.scanCompletion).value,\n },\n [$digitalPropertyMonitoringAlertType.scoreDropByPercent]: {\n set: this.alertEditorForm.get(FormFields.scoreDropByPercent).value,\n threshold: this.getThresholdValue(FormFields.scoreDropByPercentThreshold),\n },\n [$digitalPropertyMonitoringAlertType.scoreDropByPercentFromPrevious]: {\n set: this.alertEditorForm.get(FormFields.scoreDropByPercentFromPrevious).value,\n threshold: this.getThresholdValue(FormFields.scoreDropByPercentFromPreviousThreshold),\n },\n },\n };\n }\n\n public onSaveClicked(): void {\n if (!this.isValid()) {\n return;\n }\n this.onSave.next(this.getValue());\n }\n\n public onCancelClicked(): void {\n this.onCancel.next();\n }\n\n public onAlertSelectionChanged(field: FormFields): void {\n switch (field) {\n case FormFields.scoreDropByPercent:\n this.updateScoreDropSelected(this.alertEditorForm.get(field).value);\n break;\n case FormFields.scoreDropByPercentFromPrevious:\n this.updateScoreDropFromPreviousSelected(this.alertEditorForm.get(field).value);\n break;\n default:\n break;\n }\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.add(\n this.userAlerts$\n .pipe(\n map((value: IDigitalPropertyMonitoringUserAlertsWithEmail) => {\n this.initValueFromData(value);\n }),\n )\n .subscribe(),\n );\n }\n\n ngOnInit(): void {\n this.getWorkspaceUsers();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n

{{ stepNumber + 1 }} - {{ 'email_alerts' | translate }}

\n\n
\n
\n \n \n {{ 'max_alerts_recipient_info' | translate: [maxRecipientCount] }}\n \n
\n \n
\n\n
\n \n
\n\n \n
\n \n\n \n
\n
\n
\n","import { cloneDeep } from 'lodash';\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ReplaySubject, Subject, Subscription, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n $digitalPropertyMonitoringAlertType,\n $digitalPropertyMonitoringAlerts,\n $maxAlertsRecipientCount,\n} from '../../../../../../../shared/constants/digital-properties';\nimport {\n IDigitalPropertyMonitoringUserAlertsWithEmail,\n IDigitalPropertyWorkspace,\n} from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { ITableColumn, ITableConfig, ITableRow } from '../../../../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { MonitoringAlertsEditorComponent } from './monitoring-alerts-editor/monitoring-alerts-editor.component';\n\nenum $tableFields {\n user = 'user',\n alerts = 'alerts',\n action = 'action',\n}\n\n@Component({\n selector: 'app-monitoring-alerts-step',\n templateUrl: './monitoring-alerts-step.component.html',\n styleUrls: ['monitoring-alerts-step.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonitoringAlertsStepComponent implements OnInit, AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n private alerts$: ReplaySubject;\n @Input()\n public set alerts(value: IDigitalPropertyMonitoringUserAlertsWithEmail[]) {\n this.alerts$.next(cloneDeep(value));\n }\n\n @Input()\n public stepNumber: number;\n\n @Input()\n public workspace: IDigitalPropertyWorkspace;\n\n @Input()\n public formValidationRequest$: Subject;\n\n @ViewChild('alertActions', { read: TemplateRef })\n public alertActionTemplate: TemplateRef<{ alert: IDigitalPropertyMonitoringUserAlertsWithEmail }>;\n\n @ViewChild('alertsEditorComponent')\n public alertEditorComponent: MonitoringAlertsEditorComponent;\n\n public updatedAlerts: Map;\n\n public isEditing: boolean;\n public editedAlert: IDigitalPropertyMonitoringUserAlertsWithEmail;\n\n public $digitalPropertyMonitoringAlertType: typeof $digitalPropertyMonitoringAlertType;\n\n public tableConfig: ITableConfig;\n public tableData: ITableRow[];\n public maxRecipientCount: number;\n private viewInitialzed$: ReplaySubject;\n\n constructor(\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.subscriptions = new Subscription();\n this.$digitalPropertyMonitoringAlertType = $digitalPropertyMonitoringAlertType;\n this.alerts$ = new ReplaySubject(1);\n this.updatedAlerts = new Map();\n this.isEditing = false;\n this.maxRecipientCount = $maxAlertsRecipientCount;\n this.viewInitialzed$ = new ReplaySubject(1);\n this.setTableConfig();\n }\n\n private getSelectedAlertsText(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): string {\n return Object.keys($digitalPropertyMonitoringAlertType)\n .filter(\n (alertType: $digitalPropertyMonitoringAlertType): boolean =>\n alert[$digitalPropertyMonitoringAlerts.alerts][alertType]?.set,\n )\n .map((alertType: $digitalPropertyMonitoringAlertType): string => this.translateService.instant(alertType))\n .join(', ');\n }\n\n private getTableData(): void {\n this.tableData = [];\n this.updatedAlerts.forEach((value: IDigitalPropertyMonitoringUserAlertsWithEmail) => {\n this.tableData.push({\n data: {\n [$tableFields.user]: NgbTableUtilities.htmlCell({\n text: value[$digitalPropertyMonitoringAlerts.email],\n }),\n [$tableFields.alerts]: NgbTableUtilities.htmlCell({ text: this.getSelectedAlertsText(value) }),\n [$tableFields.action]: NgbTableUtilities.templateCell({\n template: this.alertActionTemplate,\n templateContext: { alert: value },\n }),\n },\n });\n });\n this.changeDetectorRef.detectChanges();\n }\n\n private initAlerts(alerts: IDigitalPropertyMonitoringUserAlertsWithEmail[]): void {\n this.updatedAlerts.clear();\n\n alerts?.forEach((value: IDigitalPropertyMonitoringUserAlertsWithEmail) => {\n this.updatedAlerts.set(value[$digitalPropertyMonitoringAlerts.email], value);\n });\n\n this.getTableData();\n }\n\n private updateAlert(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): void {\n this.updatedAlerts.delete(this.editedAlert[$digitalPropertyMonitoringAlerts.email]);\n this.updatedAlerts.set(alert[$digitalPropertyMonitoringAlerts.email], alert);\n this.getTableData();\n }\n\n private setTableConfig(): void {\n const columns: Record<$tableFields, ITableColumn> = {\n [$tableFields.user]: {\n translationKey: 'recipient_s_email',\n sortingEnabled: false,\n },\n [$tableFields.alerts]: {\n translationKey: 'label_monitoring_alerts',\n sortingEnabled: false,\n },\n [$tableFields.action]: {\n translationKey: 'column_header_action',\n sortingEnabled: false,\n },\n };\n\n this.tableConfig = {\n columns,\n caption: this.translateService.instant('current_alerts'),\n emptyState: {\n title: this.translateService.instant('no_email_alerts_setup'),\n subtitle: this.translateService.instant('no_email_alerts_setup_description'),\n },\n };\n }\n\n public isValid(): boolean {\n return SharedCommonUtility.isNullish(this.alertEditorComponent);\n }\n\n public get allAlertEmails(): string[] {\n return Array.from(this.updatedAlerts.keys());\n }\n\n public get maxAlertsReached(): boolean {\n return this.updatedAlerts.size >= $maxAlertsRecipientCount;\n }\n\n public onEditAlertsCancel(): void {\n this.isEditing = false;\n }\n\n public onEditAlertsSave(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): void {\n this.isEditing = false;\n this.updateAlert(alert);\n }\n\n public editAlert(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): void {\n this.editedAlert = alert;\n this.isEditing = true;\n }\n public removeAlert(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): void {\n this.updatedAlerts.delete(alert[$digitalPropertyMonitoringAlerts.email]);\n this.getTableData();\n }\n\n public getAlerts(): IDigitalPropertyMonitoringUserAlertsWithEmail[] {\n return Array.from(this.updatedAlerts.values());\n }\n\n public onAddRecipientClicked(): void {\n this.editAlert({\n [$digitalPropertyMonitoringAlerts.userId]: '',\n [$digitalPropertyMonitoringAlerts.email]: '',\n [$digitalPropertyMonitoringAlerts.alerts]: {},\n });\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n combineLatest([this.alerts$, this.viewInitialzed$])\n .pipe(\n map(([alerts, _]: [IDigitalPropertyMonitoringUserAlertsWithEmail[], boolean]) => {\n this.initAlerts(alerts);\n }),\n )\n .subscribe(),\n );\n }\n\n ngAfterViewInit(): void {\n this.viewInitialzed$.next(true);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n

{{ stepNumber + 1 }}. {{ 'review' | translate }}

\n\n
\n \n\n
\n
\n \n {{ 'label_page_option_' + discoveryMethod.toLowerCase() | translate }}\n
\n \n \n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.url] }}\n \n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.limitCrawlingPagesTo] }}\n \n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.crawlDeepLevel] }}\n \n
\n
\n \n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.crawler]?.[$digitalPropertyMonitoring.sitemapUrl] }}\n \n
\n
\n \n
\n \n
    \n
  • \n {{ page }}\n
  • \n
\n
\n
\n
\n
\n\n
\n
\n \n {{ ignoredEndings }}\n
\n
\n\n
\n
\n \n {{ excludedPages }}\n
\n
\n\n
\n
\n \n \n {{ 'scan_authentication_type_' + monitoring[$digitalPropertyMonitoring.scanAuthenticationType] | translate }}\n \n
\n
\n\n
\n
\n \n {{ popupButtonSelector }}\n
\n
\n\n
\n
\n \n {{ waitTime }}\n
\n
\n
\n
\n \n {{ 'include_iframes' | translate }}\n
\n
\n\n \n \n \n \n\n \n \n \n \n\n
\n
\n \n \n {{ header.name }}\n \n
\n
\n \n \n {{ header.value }}\n \n
\n
\n
\n\n
\n \n \n
{{ scheduleInfo }}
\n
\n\n
\n \n \n\n
\n
\n \n {{ 'scan_results_tool_option_' + testingTool | translate }}\n
\n
\n \n {{ conformanceLevel | translate }}\n
\n
\n \n {{ scanViewport }}\n
\n
\n
\n\n
\n \n \n \n \n {{ 'no_email_alerts' | translate }}\n \n
\n\n \n {{ 'monitoring_ea_allow_list_info' | translate }}\n \n {{ 'monitoring_ea_allow_list_info_link_label' | translate }}\n \n \n \n
\n\n\n
\n
{{ header | translate }}
\n \n
\n
\n\n\n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.scanAuthenticationUserName] }}\n \n
\n
\n \n \n {{ '********' }}\n \n
\n
\n
\n\n\n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaLoginPageURL] }}\n \n
\n
\n\n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaUserName] }}\n \n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaUserNameFieldId] }}\n \n
\n
\n\n
\n
\n \n \n {{ '********' }}\n \n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaPasswordFieldId] }}\n \n
\n
\n\n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaSubmitFieldId] }}\n \n
\n
\n \n \n {{ monitoring[$digitalPropertyMonitoring.secureWebAuthentication][$scan.swaSubmitSuccessId] }}\n \n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IDigitalPropertyMonitoringDetails } from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { $digitalPropertyMonitoring, MonitoringDiscoveryMethod } from '../../../../../../../shared/constants/digital-properties';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { scanAuthenticationType, standardNameAndLevel } from '../../../../../../../shared/constants/scanning';\nimport {\n AuditToolCommonNames,\n AuditToolCommonNamesToAuditToolNames,\n AuditToolNames,\n} from '../../../../../../../shared/constants/audit-tool';\nimport { $scan } from '../../../../../../../shared/constants/scan';\nimport { $scanViewport } from '../../../../../../../shared/constants/scan-viewport';\nimport { IScanViewport } from '../../../../../../../shared/interfaces/scan-viewport.interface';\nimport { $advancedSetupStep } from '../../constants/monitoring-advanced-setup';\nimport { ExcludePagesOperation } from '../../../../../../../shared/interfaces/scan.interface';\nimport { Icons } from '../../../../../shared/eap-icons.component';\nimport { EapColors } from '../../../../../shared/eap-colors';\nimport { MonitoringDateUtils } from '../../../utils/monitoring-date-utils';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-monitoring-review-step',\n templateUrl: './monitoring-review-step.component.html',\n styleUrls: ['monitoring-review-step.component.scss'],\n})\nexport class MonitoringReviewStepComponent {\n @Input()\n public monitoring: IDigitalPropertyMonitoringDetails;\n\n @Input()\n public stepNumber: number;\n\n @Output()\n public onGotoStep: EventEmitter;\n\n @Input()\n public defaultTool: AuditToolCommonNames;\n\n public $advancedSetupStep: typeof $advancedSetupStep;\n public MonitoringDiscoveryMethod: typeof MonitoringDiscoveryMethod;\n public scanAuthenticationType: typeof scanAuthenticationType;\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n public $scan: typeof $scan;\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n\n constructor(private translateService: TranslateService) {\n this.onGotoStep = new EventEmitter();\n this.$advancedSetupStep = $advancedSetupStep;\n this.MonitoringDiscoveryMethod = MonitoringDiscoveryMethod;\n this.scanAuthenticationType = scanAuthenticationType;\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n this.$scan = $scan;\n this.Icons = Icons;\n this.EapColors = EapColors;\n }\n\n public onEditStep(step: $advancedSetupStep): void {\n this.onGotoStep.emit(step);\n }\n\n public get discoveryMethod(): MonitoringDiscoveryMethod {\n if (this.monitoring[$digitalPropertyMonitoring.pagesToMonitor]?.length > 0) {\n return MonitoringDiscoveryMethod.listOfPages;\n }\n\n return this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.crawlDeepLevel]\n ? MonitoringDiscoveryMethod.crawl\n : MonitoringDiscoveryMethod.sitemap;\n }\n\n public get containsEmailAlerts(): boolean {\n return (\n SharedCommonUtility.notNullish(this.monitoring?.alerts) &&\n (!Array.isArray(this.monitoring.alerts) || this.monitoring.alerts.length > 0)\n );\n }\n\n public get testingTool(): AuditToolNames {\n return AuditToolCommonNamesToAuditToolNames[this.defaultTool];\n }\n\n public get conformanceLevel(): standardNameAndLevel {\n return this.monitoring[$digitalPropertyMonitoring.conformanceLevel];\n }\n\n public get scanViewport(): string {\n const scanViewPort: IScanViewport = this.monitoring[$digitalPropertyMonitoring.viewport];\n const viewportType: string = this.translateService.instant(`scan_viewport_${scanViewPort[$scanViewport.viewportType]}`);\n return this.translateService.instant('scan_viewport_value', [\n viewportType,\n scanViewPort.width.toString(),\n scanViewPort.height.toString(),\n ]);\n }\n\n public get hasIgnoreUrlEndings(): boolean {\n return (\n this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.skipHashes] ||\n this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.skipQueryParams]\n );\n }\n\n public get ignoredEndings(): string {\n const ignoredEndings: string[] = [];\n if (this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.skipHashes]) {\n ignoredEndings.push('\"#\"');\n }\n if (this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.skipQueryParams]) {\n ignoredEndings.push('\"?\"');\n }\n\n return ignoredEndings.map((value: string): string => this.translateService.instant('ignore_endings', value)).join(', ');\n }\n\n public get hasExcludedPages(): boolean {\n return (\n this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.excludeUrlOperations]?.length > 0 ||\n this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.excludeUrls]?.length > 0\n );\n }\n\n public get excludedPages(): string {\n if (this.monitoring[$digitalPropertyMonitoring.crawler]?.[$scan.excludeUrlOperations]?.length > 0) {\n return this.monitoring[$digitalPropertyMonitoring.crawler][$scan.excludeUrlOperations]\n .map((value: ExcludePagesOperation, index: number): string => {\n const operation: string = this.translateService.instant(`label_advanced_search_operation_${value}`);\n return `${operation} \"${this.monitoring[$digitalPropertyMonitoring.crawler][$scan.excludeUrls][index]}\"`;\n })\n .join(', ');\n }\n\n return this.monitoring[$digitalPropertyMonitoring.crawler][$scan.excludeUrls]\n .map((value: string): string => `\"${value}\"`)\n .join(', ');\n }\n\n public get hasAuthentication(): boolean {\n switch (this.monitoring[$digitalPropertyMonitoring.scanAuthenticationType]) {\n case scanAuthenticationType.basic_authentication:\n case scanAuthenticationType.secure_web_authentication:\n return true;\n default:\n return false;\n }\n }\n\n public get hasHeaders(): boolean {\n return this.monitoring[$digitalPropertyMonitoring.headers]?.length > 0;\n }\n\n public get hasIncludeIframes(): boolean {\n return this.monitoring[$digitalPropertyMonitoring.includeIframes];\n }\n\n public get scheduleInfo(): string {\n return MonitoringDateUtils.getScheduleMessageString(\n this.translateService,\n true,\n this.monitoring[$digitalPropertyMonitoring.occurrence],\n this.monitoring[$digitalPropertyMonitoring.startAt],\n );\n }\n\n public get hasPopupButtonSelector(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.monitoring[$digitalPropertyMonitoring.handlePopupsSelector]);\n }\n\n public get popupButtonSelector(): string {\n return this.monitoring[$digitalPropertyMonitoring.handlePopupsSelector];\n }\n\n public get hasWaitTime(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.monitoring[$digitalPropertyMonitoring.waitTimeSec]);\n }\n\n public get waitTime(): number {\n return this.monitoring[$digitalPropertyMonitoring.waitTimeSec];\n }\n}\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { $digitalPropertyMonitoring } from '../../../../../../../shared/constants/digital-properties';\nimport {\n AuditToolCommonNames,\n AuditToolCommonNamesToAuditToolNames,\n AuditToolNames,\n} from '../../../../../../../shared/constants/audit-tool';\nimport { wcagNameAndLevel } from '../../../../../../../shared/constants/scanning';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { IDigitalPropertyMonitoringDetails } from '../../../../../../../shared/interfaces/digital-property.interface';\n\n@Component({\n selector: 'app-monitoring-scan-settings-step',\n templateUrl: './monitoring-scan-settings-step.component.html',\n styleUrls: ['./monitoring-scan-settings-step.component.scss'],\n})\nexport class MonitoringScanSettingsStepComponent implements OnInit, AfterViewInit {\n public conformanceLevelSelectOptions: { key: string; value: wcagNameAndLevel }[];\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n\n @Input() public stepNumber: number;\n @Input() public form: UntypedFormGroup;\n @Input() public formValidationRequest$: Subject;\n @Input() public toolName: AuditToolCommonNames;\n\n public get testingTool(): AuditToolNames {\n return AuditToolCommonNamesToAuditToolNames[this.toolName];\n }\n\n @Input() public monitoring: IDigitalPropertyMonitoringDetails;\n\n constructor(private translateService: TranslateService) {\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n }\n\n private initializeForm(): void {\n if (this.monitoring?.[$digitalPropertyMonitoring.conformanceLevel]) {\n this.form\n .get($digitalPropertyMonitoring.conformanceLevel)\n .setValue(this.monitoring[$digitalPropertyMonitoring.conformanceLevel]);\n }\n if (this.monitoring?.[$digitalPropertyMonitoring.viewport]) {\n this.form.get($digitalPropertyMonitoring.viewport).setValue(this.monitoring[$digitalPropertyMonitoring.viewport]);\n }\n }\n\n private setupConformanceLevel(): void {\n this.conformanceLevelSelectOptions = Object.values(wcagNameAndLevel).map((conformanceLevel: wcagNameAndLevel) => ({\n key: this.translateService.instant(conformanceLevel),\n value: conformanceLevel,\n }));\n }\n\n public ngOnInit(): void {\n this.setupConformanceLevel();\n }\n\n ngAfterViewInit(): void {\n this.initializeForm();\n }\n}\n","
\n

{{ stepNumber + 1 }} - {{ 'scan_settings' | translate }}

\n\n
\n
\n \n {{ 'scan_results_tool_option_' + testingTool | translate }}\n
\n
\n \n
\n
\n \n
\n
\n
\n","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { $digitalPropertyMonitoring } from '../../../../../../../shared/constants/digital-properties';\nimport { scanRecurrenceEvery } from '../../../../../../../shared/constants/scanning';\nimport { IDigitalPropertyMonitoringDetails } from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { SharedDateUtility } from '../../../../../../../shared/utils/date.utility';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { MonitoringDateUtils } from '../../../utils/monitoring-date-utils';\n\n@Component({\n selector: 'app-monitoring-schedule-step',\n templateUrl: './monitoring-schedule-step.component.html',\n})\nexport class MonitoringScheduleStepComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n private subscriptions: Subscription;\n public RECURRENCE_OPTIONS: { key: string; value: scanRecurrenceEvery }[];\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n\n @Input() public stepNumber: number;\n @Input() public monitoring: IDigitalPropertyMonitoringDetails;\n @Input() public form: UntypedFormGroup;\n\n @Input() public formValidationRequest$: Subject;\n\n constructor(\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.RECURRENCE_OPTIONS = [scanRecurrenceEvery.week, scanRecurrenceEvery.biweekly, scanRecurrenceEvery.month].map(\n (option: scanRecurrenceEvery) => ({\n key: this.translateService.instant(`label_occurrence_${option.toLowerCase()}`),\n value: option,\n }),\n );\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n this.subscriptions = new Subscription();\n }\n\n private setStartAtFormValidator(): void {\n const currentLocalISODate: string = SharedDateUtility.getLocalISODate(new Date());\n if (\n this.monitoring?.[$digitalPropertyMonitoring.startAt] &&\n SharedDateUtility.getLocalISODate(this.monitoring?.[$digitalPropertyMonitoring.startAt]) < currentLocalISODate\n ) {\n this.subscriptions.add(\n this.form.controls[$digitalPropertyMonitoring.startAt].valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((startDate: string) => {\n const requiredChange: boolean =\n startDate !== SharedDateUtility.getLocalISODate(this.monitoring?.[$digitalPropertyMonitoring.startAt]);\n if (this.form.controls[$digitalPropertyMonitoring.startAt].dirty && requiredChange) {\n this.form.controls[$digitalPropertyMonitoring.startAt].setValidators([\n CustomValidators.required,\n CustomValidators.minDate(new Date(currentLocalISODate)),\n ]);\n this.form.controls[$digitalPropertyMonitoring.startAt].updateValueAndValidity();\n }\n }),\n );\n } else {\n this.form.controls[$digitalPropertyMonitoring.startAt].setValidators([\n CustomValidators.required,\n CustomValidators.minDate(new Date(currentLocalISODate)),\n ]);\n }\n }\n\n public get scheduleSet(): string {\n const startDate: Date = SharedDateUtility.getDateFromLocalInputDate(this.form.get($digitalPropertyMonitoring.startAt).value);\n const recurrence: scanRecurrenceEvery = this.form.get($digitalPropertyMonitoring.occurrence).value;\n\n return MonitoringDateUtils.getScheduleMessageString(this.translateService, true, recurrence, startDate);\n }\n\n public ngAfterViewInit(): void {\n if (this.monitoring?.[$digitalPropertyMonitoring.occurrence]) {\n this.form.get($digitalPropertyMonitoring.occurrence).setValue(this.monitoring[$digitalPropertyMonitoring.occurrence]);\n }\n if (this.monitoring?.[$digitalPropertyMonitoring.startAt]) {\n MonitoringDateUtils.setLocalInputDateFromDate(\n this.form.get($digitalPropertyMonitoring.startAt),\n this.monitoring[$digitalPropertyMonitoring.startAt],\n );\n }\n\n this.setStartAtFormValidator();\n }\n\n public ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n

{{ stepNumber + 1 }} - {{ 'schedule' | translate }}

\n\n
\n
\n \n \n
\n
\n \n
\n
\n
\n {{ scheduleSet }}\n
\n
\n","
\n

{{ stepNumber + 1 }} - {{ 'scope' | translate }}

\n \n
\n
\n \n
\n {{ 'page_discovery_method_description' | 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 {{ 'label_skip_hashes' | translate }}\n {{ 'skip_hashes_description' | translate }}\n \n\n \n {{ 'label_skip_query_params' | translate }}\n {{ 'skip_query_params_description' | 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\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n {{ 'include_iframes' | translate }}\n \n
\n
\n","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport {\n $digitalProperty,\n $digitalPropertyMonitoring,\n $digitalPropertyMonitoringPagesLimitDefault,\n MonitoringDiscoveryMethod,\n} from '../../../../../../../shared/constants/digital-properties';\nimport { $scan } from '../../../../../../../shared/constants/scan';\nimport { scanCreateRequest } from '../../../../../../../shared/constants/scan-create-request';\nimport { SCAN_URLS_SIZE_LIMIT_ERROR_KEY } from '../../../../../constants/scan.constants';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport {\n IDigitalPropertyDetails,\n IDigitalPropertyMonitoringDetails,\n IDPMonitoringCrawlerDefinition,\n IDPMonitoringSitemapDefinition,\n} from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { ExcludePagesOperation, IScanHeader } from '../../../../../../../shared/interfaces/scan.interface';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { AutomatedScanAdvancedService } from '../../../../../pages/public/automated-scan/advanced/automated-scan-advanced.service';\nimport { FeatureFlagCollection } from '../../../../../../../shared/interfaces/feature-flag.interface';\nimport { scanAuthenticationType } from '../../../../../../../shared/constants/scanning';\nimport { ScanAuthenticationDetailsComponent } from '../../../../scan-authentication-details/scan-authentication-details.component';\n\nconst DEFAULT_MIN_VALUE = 1;\n\n@Component({\n selector: 'app-monitoring-scope-step',\n templateUrl: './monitoring-scope-step.component.html',\n})\nexport class MonitoringScopeStepComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n private availableDiscoveryMethods: MonitoringDiscoveryMethod[];\n public MonitoringDiscoveryMethod: typeof MonitoringDiscoveryMethod;\n private sitemapDomainExample: string;\n private subscriptions: Subscription;\n\n @Input()\n public formValidationRequest$: Subject;\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public stepNumber: number;\n @Input()\n public monitoring: IDigitalPropertyMonitoringDetails;\n @Input()\n public digitalProperty: IDigitalPropertyDetails;\n\n @ViewChild(ScanAuthenticationDetailsComponent, { static: true })\n private scanAuthenticationDetails: ScanAuthenticationDetailsComponent;\n\n public scanCreateRequest: typeof scanCreateRequest;\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n protected readonly FeatureFlagCollection: typeof FeatureFlagCollection = FeatureFlagCollection;\n\n public get domains(): string[] {\n return this.digitalProperty?.[$digitalProperty.authorizedDomains] ?? [];\n }\n\n public get authorizedDomainsRegExp(): RegExp[] {\n return this.domains.map(SharedCommonUtility.urlPatternToRegexp);\n }\n\n public get isDpUrlPresent(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.digitalProperty[$digitalProperty.url]);\n }\n\n public get sitemapExampleDomain(): string {\n return this.sitemapDomainExample ?? 'https://example.com';\n }\n\n public get maxNumberOfPages(): number {\n return this.digitalProperty?.[$digitalProperty.pagesLimit] ?? $digitalPropertyMonitoringPagesLimitDefault;\n }\n\n constructor(\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n private advancedService: AutomatedScanAdvancedService,\n ) {\n this.MonitoringDiscoveryMethod = MonitoringDiscoveryMethod;\n this.scanCreateRequest = scanCreateRequest;\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n this.availableDiscoveryMethods = Object.values(MonitoringDiscoveryMethod);\n this.subscriptions = new Subscription();\n }\n\n public get domainsTemplate(): string {\n return `
    ${(this.domains ?? []).map((domain: string) => `
  • ${domain}
  • `).join('')}
`;\n }\n\n public get excludeOperations(): ExcludePagesOperation[] {\n return this.monitoring?.[$digitalPropertyMonitoring.crawler]?.[$scan.excludeUrlOperations] ?? [];\n }\n\n public get excludeUrls(): string[] {\n return this.monitoring?.[$digitalPropertyMonitoring.crawler]?.[$scan.excludeUrls] ?? [];\n }\n\n public get headers(): IScanHeader[] {\n return this.monitoring?.[$digitalPropertyMonitoring.headers];\n }\n\n public get discoveryMethodOptions(): { key: string; value: string }[] {\n return this.availableDiscoveryMethods.map((val: string): { key: string; value: string } => ({\n key: this.translateService.instant(`label_page_option_${val.toLowerCase()}`),\n value: val,\n }));\n }\n\n public onMonitoringDiscoveryMethodChange(discoveryMethod: MonitoringDiscoveryMethod): void {\n this.clearValidators();\n switch (discoveryMethod) {\n case MonitoringDiscoveryMethod.crawl:\n this.setCrawlValidators();\n break;\n case MonitoringDiscoveryMethod.sitemap:\n this.setSiteMapValidators();\n break;\n case MonitoringDiscoveryMethod.listOfPages:\n this.setListOfPagesValidators();\n break;\n default:\n throw new Error('Undefined discovery method');\n }\n }\n\n public clearValidators(): void {\n this.form.get(scanCreateRequest.url).clearValidators();\n this.form.get(scanCreateRequest.limitCrawlingPagesTo).clearValidators();\n this.form.get(scanCreateRequest.crawlDeepLevel).clearValidators();\n this.form.get($digitalPropertyMonitoring.sitemapUrl).clearValidators();\n this.form.get($digitalPropertyMonitoring.pagesToMonitor).clearValidators();\n }\n\n public setListOfPagesValidators(): void {\n this.form\n .get($digitalPropertyMonitoring.pagesToMonitor)\n .addValidators([\n CustomValidators.validateIsEmpty,\n CustomValidators.domainValidator,\n CustomValidators.limitMaxNumberOfLines(this.maxNumberOfPages, SCAN_URLS_SIZE_LIMIT_ERROR_KEY),\n CustomValidators.domainRestrictionsValidator(this.authorizedDomainsRegExp),\n ]);\n }\n\n public setSiteMapValidators(): void {\n this.form\n .get($digitalPropertyMonitoring.sitemapUrl)\n .addValidators([\n CustomValidators.validateIsEmpty,\n CustomValidators.required,\n CustomValidators.domainValidator,\n CustomValidators.sitemapValidator(() => this.authorizedDomainsRegExp),\n ]);\n }\n\n public setCrawlValidators(): void {\n this.form\n .get(scanCreateRequest.url)\n .setValidators([\n CustomValidators.validateIsEmpty,\n CustomValidators.domainRestrictionsValidator(this.authorizedDomainsRegExp),\n ]);\n this.form\n .get(scanCreateRequest.limitCrawlingPagesTo)\n .setValidators([\n CustomValidators.validateIsEmpty,\n CustomValidators.min(DEFAULT_MIN_VALUE),\n CustomValidators.max(this.maxNumberOfPages),\n CustomValidators.validateInteger,\n ]);\n this.form\n .get(scanCreateRequest.crawlDeepLevel)\n .setValidators([\n CustomValidators.validateIsEmpty,\n CustomValidators.min(DEFAULT_MIN_VALUE),\n CustomValidators.validateInteger,\n ]);\n }\n\n private updateAvailableDiscoveryMethods(): void {\n let methods: MonitoringDiscoveryMethod[] = Object.values(MonitoringDiscoveryMethod);\n if (!this.isDpUrlPresent || this.authorizedDomainsRegExp.length === 0) {\n methods = [MonitoringDiscoveryMethod.listOfPages];\n }\n\n this.availableDiscoveryMethods = methods;\n }\n\n private getMonitoringDiscoveryMethod(): MonitoringDiscoveryMethod {\n const discoveryMethod: MonitoringDiscoveryMethod =\n this.monitoring?.[$digitalPropertyMonitoring.crawler]?.discoveryMethod ?? MonitoringDiscoveryMethod.listOfPages;\n\n return this.availableDiscoveryMethods.includes(discoveryMethod) ? discoveryMethod : this.availableDiscoveryMethods[0];\n }\n\n private initializeForm(): void {\n this.form\n .get(scanCreateRequest.url)\n .setValue(\n this.monitoring?.[$digitalPropertyMonitoring.crawler]?.[$scan.url] || this.digitalProperty?.[$digitalProperty.url],\n );\n\n if (this.monitoring?.[$digitalPropertyMonitoring.pagesToMonitor]?.length > 0) {\n this.form\n .get($digitalPropertyMonitoring.pagesToMonitor)\n .setValue(this.monitoring[$digitalPropertyMonitoring.pagesToMonitor].join('\\n'));\n } else if (this.digitalProperty?.[$digitalProperty.url]) {\n this.form.get($digitalPropertyMonitoring.pagesToMonitor).setValue(this.digitalProperty[$digitalProperty.url]);\n }\n\n const uniqueDomains: Set = new Set(this.domains.filter((domain: string) => domain.indexOf('*') < 0));\n this.sitemapDomainExample = [...uniqueDomains][0] ?? 'https://example.com';\n if (!this.sitemapDomainExample.startsWith('http')) {\n this.sitemapDomainExample = `https://${this.sitemapDomainExample}`;\n }\n\n const crawler: IDPMonitoringCrawlerDefinition | IDPMonitoringSitemapDefinition =\n this.monitoring?.[$digitalPropertyMonitoring.crawler];\n\n if (crawler?.[$digitalPropertyMonitoring.discoveryMethod] === MonitoringDiscoveryMethod.sitemap) {\n this.form.get($digitalPropertyMonitoring.sitemapUrl).setValue(crawler[$digitalPropertyMonitoring.sitemapUrl]);\n } else if (crawler?.[$digitalPropertyMonitoring.discoveryMethod] === MonitoringDiscoveryMethod.crawl) {\n this.form.patchValue({\n [scanCreateRequest.limitCrawlingPagesTo]: crawler[$scan.limitCrawlingPagesTo],\n [scanCreateRequest.crawlDeepLevel]: crawler[$scan.crawlDeepLevel],\n [scanCreateRequest.skipHashes]: crawler[$scan.skipHashes],\n [scanCreateRequest.skipQueryParams]: crawler[$scan.skipQueryParams],\n });\n }\n\n this.form.get($digitalPropertyMonitoring.discoveryMethod).setValue(this.getMonitoringDiscoveryMethod());\n this.form.get(scanCreateRequest.preScanFlowId)?.setValue(this.monitoring?.[$digitalPropertyMonitoring.preScanFlowId] ?? null);\n\n const handlePopupsSelector: string = this.monitoring?.[$digitalPropertyMonitoring.handlePopupsSelector];\n this.form.get($digitalPropertyMonitoring.handlePopupsSelector)?.setValue(handlePopupsSelector);\n const waitTimeSec: number = this.monitoring?.[$digitalPropertyMonitoring.waitTimeSec];\n this.form.get($digitalPropertyMonitoring.waitTimeSec)?.setValue(waitTimeSec);\n const includeIframes: boolean = this.monitoring?.[$digitalPropertyMonitoring.includeIframes];\n this.form.get($digitalPropertyMonitoring.includeIframes)?.setValue(includeIframes);\n this.advancedService.patchScanOptions({\n handlePopupsSelector: handlePopupsSelector ?? null,\n waitTimeSec: waitTimeSec ?? null,\n includeIframes: includeIframes,\n });\n }\n\n private subscribeUserFlowChanges(): void {\n const preScanFlowChanges: Observable = this.form.valueChanges.pipe(\n map((formValues: Partial>) => formValues[scanCreateRequest.preScanFlowId]),\n distinctUntilChanged(),\n );\n\n this.subscriptions.add(\n preScanFlowChanges.subscribe((preScanFlowId: string | null): void => {\n if (SharedCommonUtility.notNullish(preScanFlowId)) {\n this.scanAuthenticationDetails.disabled = true;\n this.form.get(scanCreateRequest.scanAuthenticationType)?.setValue(scanAuthenticationType.no_authentication);\n this.scanAuthenticationDetails.updateAuthValues();\n } else {\n this.scanAuthenticationDetails.disabled = false;\n }\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public ngAfterViewInit(): void {\n this.updateAvailableDiscoveryMethods();\n this.initializeForm();\n this.onMonitoringDiscoveryMethodChange(this.getMonitoringDiscoveryMethod());\n this.subscribeUserFlowChanges();\n }\n\n public ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport {\n AuditToolCommonNames,\n AuditToolCommonNamesToAuditToolNames,\n AuditToolNames,\n} from '../../../../../shared/constants/audit-tool';\nimport { $digitalPropertyMonitoring } from '../../../../../shared/constants/digital-properties';\nimport { $scanViewport } from '../../../../../shared/constants/scan-viewport';\nimport { scanRecurrenceEvery, standardNameAndLevel } from '../../../../../shared/constants/scanning';\nimport {\n IDigitalPropertyMonitoringDetails,\n IQuickMonitoringSetupRequest,\n} from '../../../../../shared/interfaces/digital-property.interface';\nimport { IScanViewport } from '../../../../../shared/interfaces/scan-viewport.interface';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\nimport { ScanViewport } from '../../../../../shared/utils/scan-viewport';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { EapColors } from '../../../shared/eap-colors';\nimport { Icons } from '../../../shared/eap-icons.component';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { MonitoringDateUtils } from '../utils/monitoring-date-utils';\n\n@Component({\n selector: 'app-monitoring-quick-setup',\n templateUrl: './monitoring-quick-setup.component.html',\n styleUrls: ['./monitoring-quick-setup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonitoringQuickSetupComponent implements OnInit, AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n public form: UntypedFormGroup;\n public recurrenceValues: { key: string; val: string }[];\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n public conformanceLevel: standardNameAndLevel;\n\n @Input()\n public url: string;\n\n @Input()\n public toolName: AuditToolCommonNames;\n\n @Input()\n public monitoring: IDigitalPropertyMonitoringDetails;\n\n @Input()\n public formValidationRequest$: Subject;\n\n @Output()\n public dataChanged: EventEmitter;\n\n public get testingTool(): AuditToolNames {\n return AuditToolCommonNamesToAuditToolNames[this.toolName];\n }\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n ) {\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n this.subscriptions = new Subscription();\n this.Icons = Icons;\n this.EapColors = EapColors;\n\n this.createForm();\n\n this.recurrenceValues = [scanRecurrenceEvery.week, scanRecurrenceEvery.biweekly, scanRecurrenceEvery.month].map(\n (val: string): { key: string; val: string } => ({\n key: this.translateService.instant('label_occurrence_' + val.toLowerCase()),\n val,\n }),\n );\n\n this.dataChanged = new EventEmitter();\n }\n\n private createForm(): void {\n const minDate: string = SharedDateUtility.getLocalISODate(new Date());\n\n this.form = this.formBuilder.group({\n [$digitalPropertyMonitoring.occurrence]: this.formBuilder.control(scanRecurrenceEvery.biweekly),\n [$digitalPropertyMonitoring.startAt]: this.formBuilder.control(minDate, [CustomValidators.required]),\n });\n }\n\n private setStartAtFormValidator(): void {\n const currentLocalISODate: string = SharedDateUtility.getLocalISODate(new Date());\n if (\n this.monitoring?.[$digitalPropertyMonitoring.startAt] &&\n SharedDateUtility.getLocalISODate(this.monitoring?.[$digitalPropertyMonitoring.startAt]) < currentLocalISODate\n ) {\n this.subscriptions.add(\n this.form.controls[$digitalPropertyMonitoring.startAt].valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((startDate: string) => {\n const requiredChange: boolean =\n startDate !== SharedDateUtility.getLocalISODate(this.monitoring?.[$digitalPropertyMonitoring.startAt]);\n if (this.form.controls[$digitalPropertyMonitoring.startAt].dirty && requiredChange) {\n this.form.controls[$digitalPropertyMonitoring.startAt].setValidators(\n CustomValidators.minDate(new Date(currentLocalISODate)),\n );\n this.form.controls[$digitalPropertyMonitoring.startAt].updateValueAndValidity();\n }\n }),\n );\n } else {\n this.form.controls[$digitalPropertyMonitoring.startAt].setValidators(\n CustomValidators.minDate(new Date(currentLocalISODate)),\n );\n }\n }\n\n private setConformanceLevel(): void {\n if (this.toolName === AuditToolCommonNames.access_engine) {\n this.conformanceLevel = standardNameAndLevel.WCAG_v22_AA;\n } else {\n this.conformanceLevel = standardNameAndLevel.WCAG_v21_AA;\n }\n }\n\n public get scanViewport(): string {\n const scanViewPort: IScanViewport = ScanViewport.getDesktopViewport();\n const viewportType: string = this.translateService.instant('scan_viewport_' + scanViewPort[$scanViewport.viewportType]);\n return this.translateService.instant('scan_viewport_value', [\n viewportType,\n scanViewPort.width.toString(),\n scanViewPort.height.toString(),\n ]);\n }\n\n public isValid(): boolean {\n this.formValidationRequest$.next();\n return this.form.valid;\n }\n\n public getData(): IQuickMonitoringSetupRequest {\n const startDate: Date = SharedDateUtility.getDateFromLocalInputDate(this.form.get($digitalPropertyMonitoring.startAt).value);\n SharedDateUtility.randomizeTime(startDate);\n\n return {\n [$digitalPropertyMonitoring.isQuickSetup]: true,\n [$digitalPropertyMonitoring.occurrence]: this.form.get($digitalPropertyMonitoring.occurrence).value,\n [$digitalPropertyMonitoring.startAt]: startDate.toISOString(),\n ...(startDate.toDateString() === new Date().toDateString()\n ? {\n [$digitalPropertyMonitoring.runFirstScanImmediately]: true,\n }\n : {}),\n };\n }\n\n public get scheduleInfo(): string {\n const startDate: Date = SharedDateUtility.getDateFromLocalInputDate(this.form.get($digitalPropertyMonitoring.startAt).value);\n const recurrence: scanRecurrenceEvery = this.form.get($digitalPropertyMonitoring.occurrence).value;\n return MonitoringDateUtils.getScheduleMessageString(this.translateService, true, recurrence, startDate);\n }\n\n public ngOnInit(): void {\n this.setConformanceLevel();\n }\n\n ngAfterViewInit(): void {\n if (this.monitoring) {\n this.form.get($digitalPropertyMonitoring.occurrence).setValue(this.monitoring[$digitalPropertyMonitoring.occurrence]);\n\n MonitoringDateUtils.setLocalInputDateFromDate(\n this.form.get($digitalPropertyMonitoring.startAt),\n this.monitoring[$digitalPropertyMonitoring.startAt],\n );\n }\n this.subscriptions.add(this.form.valueChanges.subscribe(() => this.dataChanged.emit()));\n\n this.setStartAtFormValidator();\n this.changeDetector.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n

{{ 'quick_monitoring_setup' | translate }}

\n {{ 'required_fields_label' | translate }}\n
\n
\n {{ 'scope' | translate }}\n {{ 'crawl_dp_description_first_part' | translate }}\n {{ url }}\n {{ 'crawl_dp_description_second_part' | translate }}\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n {{ scheduleInfo }}\n
\n
\n
\n \n {{ 'scan_results_tool_option_' + testingTool | translate }}\n
\n
\n \n {{ conformanceLevel | translate }}\n
\n
\n \n {{ scanViewport }}\n
\n
\n \n {{ 'monitoring_ea_allow_list_info' | translate }}\n \n {{ 'monitoring_ea_allow_list_info_link_label' | translate }}\n \n \n \n
\n","import { Component, ViewChild } from '@angular/core';\nimport { ModalContainerComponent } from '../../modals/modal-container.component';\nimport { IModal } from '../../modals/modal.interface';\n\n@Component({\n templateUrl: './turn-off-monitoring-confirmation.component.html',\n})\nexport class TurnOffMonitoringConfirmationComponent implements IModal {\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n public confirmed: boolean;\n\n constructor() {}\n\n public close(): void {\n this.container.closeModal();\n }\n\n public onConfirm(): void {\n this.confirmed = true;\n this.close();\n }\n}\n","\n \n {{ 'turn_off_monitoring' | translate }}\n \n\n
\n

\n {{ 'label_turn_off_monitoring_confirmation_subtitle' | translate }}\n

\n

\n \n {{ 'label_turn_off_monitoring_confirmation_message' | translate }}\n \n

\n
\n\n \n
\n","import { AbstractControl } from '@angular/forms';\nimport { scanRecurrenceEvery } from '../../../../../shared/constants/scanning';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\nimport { TranslateService } from '../../../translate/translate.service';\n\nexport class MonitoringDateUtils {\n /**\n * Sets the value of the date input field with the local date of the date\n * passed in parameter.\n *\n * @param dateControl the date form input control\n * @param date the date to show\n */\n public static setLocalInputDateFromDate(dateControl: AbstractControl, date: Date | string): void {\n dateControl.setValue(SharedDateUtility.getLocalISODate(date));\n }\n\n public static getScheduleMessageString(\n translateService: TranslateService,\n monitoringLabel: boolean,\n recurrence: scanRecurrenceEvery,\n startAt: Date | string,\n ): string {\n let dayOn: string;\n let translateKey: string;\n\n const startDate: Date = new Date(startAt);\n const startDateString: string = SharedDateUtility.getDateString(startDate);\n\n const formatDays = (date: Date): string => {\n return translateService.instant(`days_${date.getDay()}`);\n };\n\n switch (recurrence) {\n case scanRecurrenceEvery.biweekly:\n translateKey = 'bi_weekly_scan_schedule';\n dayOn = formatDays(startDate);\n break;\n case scanRecurrenceEvery.week:\n translateKey = 'weekly_scan_schedule';\n dayOn = formatDays(startDate);\n break;\n case scanRecurrenceEvery.month:\n translateKey = 'monthly_scan_schedule';\n dayOn = String(startDate.getDate());\n break;\n default:\n return '';\n }\n\n if (monitoringLabel) {\n translateKey = `monitoring_${translateKey}`;\n }\n\n return translateService.instant(translateKey, [dayOn, startDateString]);\n }\n}\n","
\n
\n @if (useDsForm) {\n
\n \n \n \n \n {{ 'form_filter' | translate }}\n \n
\n } @else {\n \n
\n \n \n
\n }\n
\n\n
\n \n {{ 'label_expand_all' | translate }}\n \n \n {{ 'label_collapse_all' | translate }}\n \n
\n\n \n
\n \n \n \n

\n {{ value.workspaceName }}\n

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

\n {{ prop.name }}\n

\n \n
\n
\n
\n
\n
\n","import { switchMap } from 'rxjs/operators';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsButtonVariants } from '@levelaccess/design-system';\nimport {\n IDigitalPropertiesListResponse,\n IDigitalPropertyListItem,\n} from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\nimport { BusMessageChannels, BusMessageService } from '../../services/bus-message.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IWorkspacePropsType } from '../../interfaces/workspace.interface';\nimport { WindowService } from '../../services/window.service';\nimport { viewportSize } from '../../shared/constants';\nimport { DetectUtility } from '../../utility/detect.utility';\nimport { UserPropertyService } from '../../services/user-property.service';\nimport { AccordionComponent } from '../common-accordion/accordion.component';\n\n@Component({\n selector: 'app-digital-property-workspace-filter',\n templateUrl: './digital-property-workspace-filter.component.html',\n styleUrls: ['./digital-property-workspace-filter.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DigitalPropertyWorkspaceFilterComponent), multi: true },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DigitalPropertyWorkspaceFilterComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n private onChange: (value: string) => void;\n private onTouched: () => void;\n private properties: IDigitalPropertyListItem[];\n private subscriptions: Subscription;\n @ViewChild(AccordionComponent) private accordionComponent: AccordionComponent;\n\n public static onChangeConfirmations: Record = {};\n\n public selectedDigitalPropertyId: string;\n public values: Array;\n public filteredValues: Array;\n public filterText: string;\n public selectedWorkspaceIndex: number;\n public selectedWorkspaceId: string;\n\n public viewportSize: viewportSize;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n @Input()\n public includeTenantName: boolean = false;\n\n @Output()\n public propertyChange: EventEmitter;\n\n @Input()\n useDsForm: boolean = false;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private busMessageService: BusMessageService,\n private translateService: TranslateService,\n private windowService: WindowService,\n private userPropertyService: UserPropertyService,\n ) {\n this.values = [];\n this.filteredValues = [];\n this.filterText = '';\n this.onChange = (ignore: string): void => {};\n this.onTouched = (): void => {};\n this.properties = [];\n this.propertyChange = new EventEmitter();\n this.subscriptions = new Subscription();\n\n this.viewportSize = DetectUtility.getViewportSize();\n }\n\n private onDigitalPropertiesLoaded(props: IDigitalPropertiesListResponse): void {\n this.properties = props.items;\n this.values = UserPropertyService.transformDigitalPropertiesIntoWorkspaces(props, this.includeTenantName);\n\n const selectedValue: IWorkspacePropsType | undefined = this.values.find((prop: IWorkspacePropsType): boolean =>\n prop.digitalProperties.some(\n (item: IDigitalPropertyListItem): boolean => item[$digitalProperty._id] === this.selectedDigitalPropertyId,\n ),\n );\n\n if (typeof selectedValue !== 'undefined') {\n selectedValue.hidden = false;\n\n this.updateSelectedWorkspace();\n this.accordionComponent.expand(`accordion-panel-${this.selectedWorkspaceIndex}`);\n }\n\n this.applyFilter();\n }\n\n private updateSelectedWorkspace(): void {\n const byDigitalPropertyId = (prop: IWorkspacePropsType): boolean =>\n prop.digitalProperties.some(\n (item: IDigitalPropertyListItem): boolean => item[$digitalProperty._id] === this.selectedDigitalPropertyId,\n );\n\n const selectedWorkspace = this.values.find(byDigitalPropertyId);\n\n this.selectedWorkspaceIndex = this.values.indexOf(selectedWorkspace);\n this.selectedWorkspaceId = selectedWorkspace?._id;\n }\n\n private set windowViewportSize(size: viewportSize) {\n if (size !== this.viewportSize) {\n this.viewportSize = size;\n }\n }\n\n private focusOnNonDisabledToggleButton(evt?: MouseEvent): void {\n if (evt) {\n setTimeout(() => {\n const button: HTMLButtonElement = (evt.target as HTMLElement).parentNode.querySelector('button:not([disabled])');\n if (button) {\n button.focus();\n }\n }, 0);\n }\n }\n\n private propertySelectionConfirmed(): boolean {\n const confirmations: string[] = Object.values(DigitalPropertyWorkspaceFilterComponent.onChangeConfirmations);\n if (confirmations.length === 0) {\n return true;\n }\n const confirmResults: boolean[] = [];\n confirmations.forEach((message: string) => {\n confirmResults.push(this.windowService.confirm(this.translateService.instant(message)));\n });\n return confirmResults.filter((confirmed: boolean): boolean => confirmed === false).length === 0;\n }\n\n public get shouldShowExpandCollapseButtons(): boolean {\n return this.viewportSize !== viewportSize.small;\n }\n\n public static setOnChangeConfirmation(component: any, text?: string): void {\n if (typeof text !== 'undefined') {\n this.onChangeConfirmations[component] = text;\n } else {\n delete this.onChangeConfirmations[component];\n }\n }\n\n public onWindowResize(): void {\n const size: viewportSize = DetectUtility.getViewportSize();\n this.windowViewportSize = size;\n }\n\n public select(digitalPropertyId: string, initialLoading: boolean = false): void {\n if (digitalPropertyId === this.selectedDigitalPropertyId) {\n return;\n }\n if (initialLoading || this.propertySelectionConfirmed()) {\n this.selectedDigitalPropertyId = digitalPropertyId;\n this.updateSelectedWorkspace();\n this.onTouched();\n this.onChange(digitalPropertyId);\n this.propertyChange.emit(\n this.properties.find((prop: IDigitalPropertyListItem) => prop[$digitalProperty._id] === digitalPropertyId),\n );\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public applyFilter(): void {\n this.collapseAll();\n this.filteredValues = [];\n\n const searchString: string = this.filterText.trim().toLowerCase();\n\n if (searchString.length === 0) {\n this.filteredValues = [...this.values];\n this.changeDetectorRef.detectChanges();\n return;\n }\n\n const isPropertyNameAllowed = (prop: IDigitalPropertyListItem): boolean => {\n return prop[$digitalProperty.name].toLowerCase().includes(searchString);\n };\n\n for (const value of this.values) {\n if (value.workspaceName.toLowerCase().includes(searchString) || value.digitalProperties.some(isPropertyNameAllowed)) {\n const items: IWorkspacePropsType = { ...value };\n items.digitalProperties = items.digitalProperties.some(isPropertyNameAllowed)\n ? items.digitalProperties.filter(isPropertyNameAllowed)\n : items.digitalProperties;\n this.filteredValues.push(items);\n }\n }\n\n this.onTouched();\n this.expandAll();\n this.changeDetectorRef.detectChanges();\n }\n\n public areAllExpanded(): boolean {\n if (this.accordionComponent) {\n return this.accordionComponent.panels.length === this.accordionComponent.activeIds.length;\n }\n return false;\n }\n\n public areAllCollapsed(): boolean {\n if (this.accordionComponent) {\n return !this.accordionComponent.activeIds.length;\n }\n return false;\n }\n\n public expandAll(evt?: MouseEvent): void {\n this.accordionComponent.expandAll();\n this.focusOnNonDisabledToggleButton(evt);\n }\n\n public collapseAll(evt?: MouseEvent): void {\n this.accordionComponent.collapseAll();\n this.focusOnNonDisabledToggleButton(evt);\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(obj: any): void {\n this.select(obj, true);\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions.add(\n this.busMessageService\n .from(\n BusMessageChannels.workspaceCreated,\n BusMessageChannels.workspaceUpdated,\n BusMessageChannels.workspaceDeleted,\n BusMessageChannels.digitalPropertyChange,\n BusMessageChannels.userSwitchedToDigitalProperty,\n )\n .pipe(\n switchMap((): Observable => this.userPropertyService.getAvailableDigitalProperties()),\n )\n .subscribe({\n next: this.onDigitalPropertiesLoaded.bind(this),\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n
\n {{ 'scan_scope_subscription_info_title' | translate }}\n
\n
\n \n \n {{ 'label_hide_domains' | translate }}\n \n \n \n {{ 'label_view_available_domains' | translate }}\n \n \n \n \n
\n
    \n
  • \n {{ domain }}\n
  • \n
\n
\n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { DigitalPropertyService } from '../../services/digital-property.service';\nimport { UserService } from '../../services/user.service';\nimport { IDigitalProperty } from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\n\n@Component({\n selector: 'app-domain-restrictions',\n templateUrl: './domain-restrictions.component.html',\n styleUrls: ['./domain-restrictions.component.scss'],\n})\nexport class DomainRestrictionsComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n public hasDomainRestrictions: boolean;\n public loadingRestrictions: boolean;\n public authorizedDomains: string[];\n\n @Input()\n public showTitle: boolean;\n @Input()\n public boldButton: boolean;\n @Output()\n public domainsLoaded: EventEmitter = new EventEmitter();\n\n constructor(\n private digitalPropertyService: DigitalPropertyService,\n private userService: UserService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.subscriptions = new Subscription();\n this.loadingRestrictions = true;\n this.hasDomainRestrictions = false;\n this.showTitle = true;\n this.boldButton = true;\n }\n\n private onRestrictionsLoaded(restrictions: RegExp[]): void {\n this.domainsLoaded.emit(restrictions);\n this.loadingRestrictions = false;\n\n this.hasDomainRestrictions = (restrictions?.length || 0) > 0;\n\n this.changeDetectorRef.detectChanges();\n }\n\n private onDigitalPropertyChanged(property: IDigitalProperty): void {\n this.domains = property[$digitalProperty.authorizedDomains];\n }\n\n @Input()\n public set domains(domains: string[]) {\n this.authorizedDomains = domains;\n this.onRestrictionsLoaded(this.digitalPropertyService.getDomainRestrictions(domains));\n }\n\n public ngOnInit(): void {\n if (Array.isArray(this.authorizedDomains) === false) {\n this.subscriptions.add(\n this.userService.currentDigitalProperty$.pipe(debounceTime(100)).subscribe(this.onDigitalPropertyChanged.bind(this)),\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { IReportFormat } from '../interfaces/report-format.interface';\nimport { FileExtension } from './file-extension';\n\nexport const ReportFormat: { [key: string]: IReportFormat } = Object.freeze({\n CSV: {\n description: 'Excel (.csv)',\n type: FileExtension.csv,\n },\n XLSX: {\n description: 'Excel (.xlsx)',\n type: FileExtension.xlsx,\n },\n});\n","
\n \n {{ 'action_download' | translate }}\n \n \n
\n \n {{ 'download_report_format_label' | translate: reportFormat.type }}\n \n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ReportFormat } from '../../../../shared/constants/report-formats';\nimport { IReportFormat } from '../../../../shared/interfaces/report-format.interface';\nimport { ReportService } from '../../services/report.service';\nimport { A11yService } from '../../services/a11y.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { scanningJobType, scanningType } from '../../../../shared/constants/scanning';\nimport { NotificationService } from '../../services/notification.service';\nimport { NotificationPosition } from '../../models/notification.model';\nimport { IonDownloadReportError } from '../../interfaces/error.interface';\nimport { CommonUtility } from '../../utility/common.utility';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport { IAutomatedScanIssue } from '../../../../shared/interfaces/scan-issues.interface';\nimport { FileExtension } from '../../../../shared/constants/file-extension';\nimport { errorMessagesNames } from '../../../../shared/constants/errors';\nimport { ModalService } from '../../services/modal.service';\nimport { InfoModalComponent } from '../modals/info-modal/info-modal.component';\n\n@Component({\n selector: 'app-download-report-new',\n templateUrl: './download-report.component.html',\n styleUrls: ['./download-report.component.scss'],\n})\nexport class DownloadReportNewComponent implements OnDestroy {\n private subscriptions: Subscription;\n\n @Input() public scanId: string;\n @Input() public ruleId: string;\n @Input() public disabled: boolean;\n @Input() public auditTool: AccessibilityAuditToolNames;\n @Input() public selectedIssues: IAutomatedScanIssue[];\n @Output() public onDownloadReportError: EventEmitter;\n\n public reportFormats: IReportFormat[];\n public selectedFileExtension: FileExtension;\n public scanningType: typeof scanningType;\n public scanningJobType: typeof scanningJobType;\n public errorResponseMessages: string[];\n public selectLabelId: string;\n public ReportFormat: { [key: string]: IReportFormat };\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private reportService: ReportService,\n private a11yService: A11yService,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n ) {\n this.subscriptions = new Subscription();\n this.scanId = '';\n this.disabled = false;\n this.onDownloadReportError = new EventEmitter();\n this.reportFormats = Object.values(ReportFormat);\n this.scanningJobType = scanningJobType;\n this.scanningType = scanningType;\n this.errorResponseMessages = [];\n this.selectLabelId = CommonUtility.createUniqueDOMId();\n this.ReportFormat = ReportFormat;\n }\n\n private handleError(message: string, response: HttpErrorResponse): void {\n this.onDownloadReportError.emit({\n message: message,\n response: response,\n });\n\n console.error(`[${DownloadReportNewComponent.name}.handleError]`, message, response);\n }\n\n private onGetReportSuccess(): void {\n this.notificationService.success(\n this.translateService.instant('download_report_created_successfully'),\n NotificationPosition.Toast,\n );\n }\n\n private onGetReportError(response: HttpErrorResponse): void {\n const convertedError: HttpErrorResponse = CommonUtility.convertArrayBufferHTTPErrorToObject(response);\n if (CommonUtility.extractHTTPErrorName(convertedError) === errorMessagesNames.ErrorScanPagesExceededDownloadLimit) {\n const modal: InfoModalComponent = this.modalService.open(InfoModalComponent).instance;\n const message: string = this.translateService.instant(\n 'sorry_this_scan_contains_too_many_pages',\n convertedError.error.app.params[0],\n );\n modal.init({\n headerKey: 'cannot_download_report',\n bodyText: message,\n });\n this.onDownloadReportError.emit({\n message: message,\n response: response,\n });\n } else {\n this.handleError('error_download_scan_report', response);\n }\n }\n\n public onDownloadReportRequest(_fileExtension: FileExtension): void {\n this.selectedFileExtension = _fileExtension;\n this.a11yService.setMessage(this.translateService.instant('activating_download_report_request'));\n\n const scanUrl: string = this.activatedRoute.snapshot.queryParams[ApiQueryOption.url];\n\n const extraQueryParams: Record = {\n [ApiQueryOption.auditTool]: this.auditTool,\n };\n\n if (Array.isArray(this.selectedIssues)) {\n extraQueryParams[ApiQueryOption.issueIds] = this.selectedIssues\n .map((i: IAutomatedScanIssue): string => i.rawFindingId)\n .join(',');\n }\n\n const downloadReportSubscription: Subscription = this.reportService\n .downloadReportNew(this.scanId, _fileExtension, scanUrl, this.ruleId, extraQueryParams)\n .subscribe({ next: this.onGetReportSuccess.bind(this), error: this.onGetReportError.bind(this) });\n\n this.subscriptions.add(downloadReportSubscription);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n

{{ message }}

\n

{{ description }}

\n\n \n \n
\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { DsButtonVariants } from '@levelaccess/design-system';\n\n@Component({\n selector: 'app-ds-confirmation-modal',\n templateUrl: './ds-confirmation-modal.component.html',\n styleUrls: ['./ds-confirmation-modal.component.scss'],\n})\nexport class DsConfirmationModalComponent {\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n @Input() public title: string;\n @Input() public message: string;\n @Input() public description: string;\n @Input() public confirmLabel: string;\n @Input() public hideCancelButton: boolean = false;\n\n @Output() public confirm: EventEmitter = new EventEmitter();\n @Output() public cancel: EventEmitter = new EventEmitter();\n\n constructor(protected modal: NgbActiveModal) {}\n\n protected onCancel(): void {\n this.cancel.emit();\n this.modal.dismiss();\n }\n\n protected onConfirm(): void {\n this.confirm.emit();\n this.modal.close();\n }\n\n protected onClose(): void {\n this.cancel.emit();\n }\n}\n","
\n

{{ headerKey | translate }}

\n

{{ messageKey | translate }}

\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-error-message',\n templateUrl: './error-message.component.html',\n styleUrls: ['./error-message.component.scss'],\n})\nexport class ErrorMessageComponent {\n @Input() public headerKey?: string;\n @Input() public messageKey?: string;\n\n public isString(valueToCheck: any): boolean {\n return typeof valueToCheck === 'string';\n }\n}\n","
\n \n {{ 'exclude_pages' | translate }}\n {{ 'exclude_pages_description' | translate }}\n \n\n
\n
\n \n \n \n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { ExcludePagesOperation } from '../../../../shared/interfaces/scan.interface';\nimport { TranslateService } from '../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nexport const EXCLUDE_PAGES_FIELD_NAME: 'excludePagesComponent' = 'excludePagesComponent';\n\n@Component({\n selector: 'app-exclude-pages',\n templateUrl: './exclude-pages.component.html',\n styleUrls: ['./exclude-pages.component.scss'],\n})\nexport class ExcludePagesComponent implements OnInit {\n private maxInputLength: number = 100;\n private maxParamLength: number = 10;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public field: string;\n @Input()\n public excludeOperations: ExcludePagesOperation[];\n @Input()\n public excludeUrls: string[];\n public showControls: boolean;\n public operations: { key: string; value: string }[];\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n ) {\n this.field = EXCLUDE_PAGES_FIELD_NAME;\n this.operations = Object.values(ExcludePagesOperation).map((val: string): { key: string; value: string } => ({\n key: this.translateService.instant(`label_advanced_search_operation_${val}`),\n value: val,\n }));\n }\n\n public addControl(): void {\n this.fieldForm.push(\n this.formBuilder.group({\n operation: this.formBuilder.control(ExcludePagesOperation.contains, [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n ]),\n value: this.formBuilder.control('', [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n CustomValidators.maxLength(this.maxInputLength),\n ]),\n }),\n );\n }\n\n public get fieldForm(): UntypedFormArray {\n return this.form.get(this.field) as UntypedFormArray;\n }\n\n public get fieldValues(): UntypedFormGroup[] {\n return this.fieldForm.controls as UntypedFormGroup[];\n }\n\n public get isMaxParam(): boolean {\n return this.fieldForm.length >= this.maxParamLength;\n }\n\n public onShowControlsChange(value: boolean): void {\n if (value === false) {\n this.form.removeControl(this.field);\n return;\n }\n\n if (this.form.contains(this.field) === false) {\n this.form.registerControl(this.field, this.formBuilder.array([]));\n this.addControl();\n }\n }\n\n public removeControl(index: number): void {\n this.fieldForm.removeAt(index);\n }\n\n public ngOnInit(): void {\n if (this.fieldForm || SharedCommonUtility.isNullishOrEmpty(this.excludeOperations)) {\n this.showControls = this.fieldForm ? this.fieldForm.length > 0 : false;\n this.onShowControlsChange(this.showControls);\n return;\n }\n\n this.showControls = true;\n this.onShowControlsChange(true);\n\n this.fieldForm.patchValue(\n this.excludeOperations.map(\n (\n operation: ExcludePagesOperation,\n index: number,\n ): {\n operation: ExcludePagesOperation;\n value: string;\n } => {\n this.addControl();\n return {\n operation: operation,\n value: this.excludeUrls[index],\n };\n },\n ),\n );\n\n while (this.fieldForm.length > this.excludeOperations.length) {\n this.removeControl(this.excludeOperations.length);\n }\n }\n}\n","import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { IModal } from '../../../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../../../components/modals/modal-container.component';\nimport { ModalService } from '../../../../../../services/modal.service';\nimport { WorkspaceService } from '../../../../../../services/workspace.service';\nimport { IUser } from '../../../../../../../../shared/interfaces/user.interface';\nimport { AccessibilityAuditToolNames } from '../../../../../../../../shared/constants/audit-tool';\nimport { TranslateService } from '../../../../../../translate/translate.service';\nimport { NotificationService } from '../../../../../../services/notification.service';\nimport { NotificationPosition } from '../../../../../../models/notification.model';\nimport { IModalDialogInputData } from '../../../../../../interfaces/modal-dialog.interface';\nimport { ReportService } from '../../../../../../services/report.service';\nimport { IReport } from '../../../../../../interfaces/report.interface';\nimport { LoadErrorHandler } from '../../../../../../services/load-error-handler';\nimport { WorkspaceUserSearchFields } from '../../../../../../../../shared/constants/workspace-user.constants';\nimport { accountStatus } from '../../../../../../../../shared/constants/user';\n\n@Component({\n selector: 'app-share-report-modal',\n templateUrl: './share-report-modal.component.html',\n styleUrls: ['./share-report-modal.component.scss'],\n})\nexport class ShareReportModalComponent implements OnInit, IModal, OnDestroy {\n @Input() public modalInputData: IModalDialogInputData<{\n workspaceId: string;\n digitalPropertyId: string;\n scanId: string;\n auditTool: AccessibilityAuditToolNames;\n }>;\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n public subscriptions: Subscription;\n public possibleEmails: string[];\n public selectedEmails: string[];\n public form: UntypedFormGroup;\n\n constructor(\n private modalService: ModalService,\n private reportService: ReportService,\n private workspaceService: WorkspaceService,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n private loadErrorHandler: LoadErrorHandler,\n private formBuilder: UntypedFormBuilder,\n ) {\n this.subscriptions = new Subscription();\n this.possibleEmails = [];\n this.selectedEmails = [];\n this.buildForm();\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n email: this.formBuilder.control(null),\n });\n this.subscriptions.add(\n this.form.get('email').valueChanges.subscribe((value: string[]) => {\n this.selectedEmails = value;\n }),\n );\n }\n\n private onGetUsersSuccess(users: IUser[]): void {\n this.possibleEmails = users.map((user: IUser) => user.email);\n }\n\n private onGetUsersError(error: HttpErrorResponse): void {\n this.loadErrorHandler.handleError('unable_to_get_all_workspace_users', error, ShareReportModalComponent.name);\n this.close();\n }\n\n private getWorkspaceUsers(): void {\n this.subscriptions.add(\n this.workspaceService\n .getUsers(this.modalInputData.data.workspaceId, {\n [WorkspaceUserSearchFields.status]: [accountStatus.active],\n [WorkspaceUserSearchFields.includeStaffUsers]: true,\n })\n .subscribe({ next: this.onGetUsersSuccess.bind(this), error: this.onGetUsersError.bind(this) }),\n );\n }\n\n private onSendReportSuccess(report: IReport): void {\n this.close();\n this.notificationService.success(this.translateService.instant('sending_report_success'), NotificationPosition.Toast);\n console.debug('[ShareReportModalComponent.onSendReportSuccess', report);\n }\n\n private onGetReportError(response: HttpErrorResponse): void {\n this.close();\n this.loadErrorHandler.handleError('scanning_send_report_to_emails_error', response, ShareReportModalComponent.name);\n }\n\n public close(): void {\n this.modalService.closeModal();\n }\n\n public onShareReport(): void {\n this.subscriptions.add(\n this.reportService\n .sendReportToEmails(\n this.modalInputData.data.workspaceId,\n this.modalInputData.data.digitalPropertyId,\n this.modalInputData.data.scanId,\n this.modalInputData.data.auditTool,\n this.selectedEmails,\n )\n .subscribe(this.onSendReportSuccess.bind(this), this.onGetReportError.bind(this)),\n );\n }\n\n public ngOnInit(): void {\n this.getWorkspaceUsers();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n {{ 'share_report_modal_title' | translate }}\n \n
\n

{{ 'share_report_modal_subtitle' | translate }}

\n

{{ 'share_report_modal_content' | translate }}

\n
\n \n
\n
\n\n
\n \n \n
\n
\n","
\n
\n \n {{ 'share_report' | translate }}\n \n
\n
\n \n \n \n
\n \n \n
\n
\n
\n
\n","import { Component, ComponentRef, EventEmitter, Input, Output } from '@angular/core';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nimport { FileExtension } from '../../../../shared/constants/file-extension';\nimport { ModalService } from '../../services/modal.service';\nimport { ShareReportModalComponent } from '../../pages/public/scans/scan-results/view-scan-results-summary/share-report-modal/share-report-modal.component';\nimport { IModalDialogInputData } from '../../interfaces/modal-dialog.interface';\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport { EapColors } from '../../shared/eap-colors';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nconst FileTypeIcons: Record = {\n [FileExtension.csv]: Icons.FileInvoice,\n [FileExtension.xlsx]: Icons.FileExcel,\n};\n\n@Component({\n selector: 'app-export-report-button',\n templateUrl: './export-report-button.component.html',\n styleUrls: ['./export-report-button.component.scss'],\n})\nexport class ExportReportButtonComponent {\n @Output() public onDownloadReport: EventEmitter;\n @Input() public fileExtensions: FileExtension[];\n @Input() public shareModalInputData: IModalDialogInputData<{\n workspaceId: string;\n digitalPropertyId: string;\n scanId: string;\n auditTool: AccessibilityAuditToolNames;\n }>;\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n public DsButtonVariants: typeof DsButtonVariants;\n public FileTypeIcons: typeof FileTypeIcons;\n\n constructor(private modalService: ModalService) {\n this.Icons = Icons;\n this.EapColors = EapColors;\n this.DsButtonVariants = DsButtonVariants;\n this.onDownloadReport = new EventEmitter();\n this.FileTypeIcons = FileTypeIcons;\n }\n\n public get isShareable(): boolean {\n return SharedCommonUtility.notNullish(this.shareModalInputData);\n }\n\n public onDownloadReportRequest(fileExtension: FileExtension): void {\n this.onDownloadReport.emit(fileExtension);\n }\n\n public onShareReportRequest(): void {\n const modalComponentRef: ComponentRef = this.modalService.open(ShareReportModalComponent);\n modalComponentRef.instance.modalInputData = this.shareModalInputData;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonUtility } from '../../../utility/common.utility';\n\nconst APP_ACCEPT_FILES_DEFAULT: string = `.xlsx,.xls,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`;\n\n@Component({\n selector: 'app-custom-file-input',\n templateUrl: './custom-file-input.component.html',\n styleUrls: ['./custom-file-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CustomFileInputComponent),\n multi: true,\n },\n ],\n})\nexport class CustomFileInputComponent implements OnInit, ControlValueAccessor {\n private onChange: Function = () => {};\n private onTouched: Function = () => {};\n\n public disabled: boolean;\n public id: string;\n public selectedFiles: File[];\n public fileName: string;\n public filePath: string;\n\n @Input()\n public accept: string;\n @Input()\n public btnClass: string;\n @ViewChild('nativeInput') public nativeInputElement: ElementRef;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private renderer: Renderer2,\n ) {\n this.accept = APP_ACCEPT_FILES_DEFAULT;\n this.fileName = '';\n this.filePath = '';\n }\n\n private reset(): void {\n this.fileName = '';\n this.filePath = '';\n }\n\n public ngOnInit(): void {\n const id = CommonUtility.createUniqueDOMId();\n this.id = `file_input_${id}`;\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 @Input('disabled')\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectorRef.detectChanges();\n }\n\n public writeValue(obj: File[]): void {\n if (obj === null) {\n this.reset();\n }\n this.selectedFiles = obj;\n this.changeDetectorRef.detectChanges();\n }\n\n public onFilesSelected(event: Event | InputEvent): void {\n const files: FileList = (event.target as HTMLInputElement).files;\n this.setFiles(Array.from(files));\n }\n\n public setFiles(files: File[]): void {\n if (files.length > 0) {\n this.selectedFiles = files;\n this.fileName = this.selectedFiles[0].name;\n this.onTouched();\n this.onChange(this.selectedFiles);\n this.changeDetectorRef.detectChanges();\n } else {\n this.reset();\n }\n }\n\n @HostListener('dragover', ['$event'])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const files = event.dataTransfer.files;\n this.setFiles(Array.from(files));\n }\n\n @HostListener('keydown.enter', ['$event'])\n public onEnterKeyDown(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.renderer.selectRootElement(`#${this.id}`, true).click();\n }\n}\n","
\n
\n
\n \n {{ fileName }}\n
\n \n {{ 'btn_browse_files_label' | translate }}\n \n \n
\n
\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonUtility } from '../../utility/common.utility';\n\nconst APP_ACCEPT_FILES_DEFAULT: string = `.xlsx,.xls,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`;\n\n@Component({\n selector: 'app-file-input',\n templateUrl: './file-input.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileInputComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FileInputComponent implements OnInit, ControlValueAccessor {\n private onChange: Function = () => {};\n private onTouched: Function = () => {};\n public disabled: boolean;\n public id: string;\n public selectedFiles: File[];\n\n @Input()\n public accept: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.accept = APP_ACCEPT_FILES_DEFAULT;\n }\n\n public ngOnInit(): void {\n this.id = `file_input_${CommonUtility.createUniqueDOMId()}`;\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n @Input('disabled')\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectorRef.detectChanges();\n }\n\n public writeValue(obj: File[]): void {\n this.selectedFiles = obj;\n this.changeDetectorRef.detectChanges();\n }\n\n public onFilesSelected(event: Event | InputEvent): void {\n const files: FileList = (event.target as HTMLInputElement).files;\n this.selectedFiles = Array.from(files);\n this.onTouched();\n this.onChange(this.selectedFiles);\n this.changeDetectorRef.detectChanges();\n }\n}\n","\n","\n
\n
\n \n
\n
\n \n
\n \n {{ label | translate }}\n \n
\n
\n
\n
\n \n {{ 'label_clear_all_filters' | translate }}\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n {{ 'label_unsaved_filter_changes' | translate }}\n
\n
\n \n \n {{ 'label_apply_filters' | translate }}\n \n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-accordion-filter',\n templateUrl: './accordion-filter.component.html',\n styleUrls: ['./accordion-filter.component.scss'],\n})\nexport class AccordionFilterComponent {\n public filtersCollapsed: boolean;\n\n @Output()\n public onClose: EventEmitter;\n @Output()\n public onApply: EventEmitter;\n @Output()\n public onClear: EventEmitter;\n @Input()\n public filtersApplied: boolean;\n @Input()\n public filterLabels: string[];\n\n constructor() {\n this.onClose = new EventEmitter();\n this.onApply = new EventEmitter();\n this.onClear = new EventEmitter();\n this.filtersCollapsed = true;\n this.filtersApplied = false;\n this.filterLabels = [];\n }\n\n public clearAllFilters(): void {\n this.onClear.emit();\n }\n\n public closeFilters(): void {\n this.filtersCollapsed = true;\n this.onClose.emit();\n }\n\n public applyFilters(): void {\n this.filtersCollapsed = true;\n this.onApply.emit();\n }\n}\n","
\n
\n \n
\n
\n \n {{ 'label_select_all' | translate }}\n \n \n {{ 'label_unselect_all' | translate }}\n \n
\n
\n
\n
\n
    \n
  • \n \n
  • \n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { $checkboxSelect, IFilterOption, IFilterOutput } from '../../filter.interface';\nimport { CommonUtility } from '../../../../utility/common.utility';\n\nconst defaultValue = [];\n\n@Component({\n selector: 'app-filter-checkbox',\n templateUrl: './filter-checkbox.component.html',\n styleUrls: ['./filter-checkbox.component.scss'],\n})\nexport class FilterCheckboxComponent implements OnChanges {\n @Input() public isInMenu: boolean = true;\n @Input() public options: IFilterOption[] | null;\n @Input() public label: string;\n @Input() public field: string;\n @Input() public value: T[];\n @Input() public set disabled(value: boolean) {\n if (value) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n @Output() public valueChange: EventEmitter>;\n\n public output: IFilterOutput;\n\n public form: UntypedFormGroup;\n public $checkboxSelect: typeof $checkboxSelect;\n public domId: string;\n\n public constructor(private formBuilder: UntypedFormBuilder) {\n this.label = '';\n this.options = defaultValue;\n this.value = [];\n this.$checkboxSelect = $checkboxSelect;\n this.valueChange = new EventEmitter>();\n this.domId = this.createDomID(999);\n\n this.createForm();\n }\n\n private get optionsFormArray(): UntypedFormArray {\n return this.form.controls.options as UntypedFormArray;\n }\n\n private createForm(): void {\n this.form = this.formBuilder.group({\n options: new UntypedFormArray([]),\n });\n }\n\n private addOptionsToForm(): void {\n (this.options ?? []).forEach((option: IFilterOption, index: number) => {\n if (this.optionsFormArray.at(index)) {\n this.optionsFormArray.removeAt(index);\n }\n this.optionsFormArray.push(\n new UntypedFormControl({ value: this.value.includes(option.value), disabled: this.form.disabled }),\n );\n });\n }\n\n public resetToInitialValue(): void {\n (this.options ?? []).forEach((option: IFilterOption, index: number) => {\n const control: AbstractControl = this.optionsFormArray.at(index);\n if (control !== undefined) {\n control.setValue(this.value.includes(option.value));\n }\n });\n }\n\n public get values(): Array {\n return this.form\n .get('options')\n .value.map((checked: boolean, i: number) => (checked ? this.options[i].value : null))\n .filter((value: T | null) => value !== null);\n }\n\n public onFormChange(selectType: $checkboxSelect = null): void {\n const valueToEmit: IFilterOutput = {\n field: String(this.field),\n values: [],\n };\n if (selectType) {\n let checkValue: boolean;\n if (selectType === $checkboxSelect.unselectAll) {\n checkValue = false;\n } else if (selectType === $checkboxSelect.selectAll) {\n valueToEmit.values = this.options.map((option: IFilterOption) => option.value);\n checkValue = true;\n }\n this.optionsFormArray.controls.forEach((control: UntypedFormControl) => {\n control.patchValue(checkValue);\n });\n } else {\n valueToEmit.values = this.values;\n }\n this.valueChange.emit(valueToEmit);\n }\n\n public createDomID(i: number): string {\n return `${i}_${CommonUtility.createUniqueDOMId()}`;\n }\n\n public get controls(): AbstractControl[] {\n return (this.form.get('options') as UntypedFormArray).controls;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.options) {\n this.addOptionsToForm();\n }\n\n if (changes.value) {\n this.resetToInitialValue();\n }\n }\n}\n","export interface IFilterOutput {\n field: string;\n values: T | Array;\n}\n\nexport interface IFilterOption {\n label: string;\n value: T;\n translateLabel?: boolean; // default: true\n}\n\nexport enum $checkboxSelect {\n selectAll = 'selectAll',\n unselectAll = 'unSelectAll',\n}\n\nexport enum filterType {\n keyword = 'keyword',\n checkbox = 'checkbox',\n multiselect = 'multiselect',\n number = 'number',\n none = 'none',\n select = 'select',\n /**\n * Filters that are populated from the query params but don't display a control to users.\n */\n hidden = 'hidden',\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\n\nimport { CommonUtility } from '../../../utility/common.utility';\n\nexport enum $formFields {\n filterValue = 'filterValue',\n}\n\n@Component({\n selector: 'app-filtering-input',\n templateUrl: './filtering-input.component.html',\n styleUrls: ['./filtering-input.component.scss'],\n})\nexport class FilteringInputComponent implements OnInit {\n public componentID: string;\n\n @Input() public inputName: string;\n @Input() public buttonName: string;\n @Output() public onValueChange: EventEmitter;\n\n public form: UntypedFormGroup;\n\n public $formFields: typeof $formFields;\n\n constructor(private formBuilder: UntypedFormBuilder) {\n this.$formFields = $formFields;\n this.onValueChange = new EventEmitter();\n this.componentID = `${$formFields.filterValue}-${CommonUtility.createUniqueDOMId()}`;\n }\n\n private setUpForm(): void {\n const formConfig: any = {\n [$formFields.filterValue]: new UntypedFormControl(''),\n };\n\n this.form = this.formBuilder.group(formConfig);\n }\n\n public formSubmitted(): void {\n this.onValueChange.emit(this.form.get($formFields.filterValue).value);\n }\n\n public ngOnInit(): void {\n this.setUpForm();\n }\n}\n","
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\n\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { IFilterOutput } from '../filter.interface';\nimport { CommonUtility } from '../../../utility/common.utility';\n\nconst initialValue: unknown = {};\n\n@Component({\n selector: 'app-filter-keyword',\n templateUrl: './filter-keyword.component.html',\n styleUrls: ['./filter-keyword.component.scss'],\n})\nexport class FilterKeywordComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private _value: T;\n @Input() public label: string;\n @Input() public field: string;\n @Input() public form: UntypedFormGroup;\n @Output() public valueChange: EventEmitter>;\n public output: IFilterOutput;\n public domID: string;\n\n @Input() public set value(val: T) {\n this._value = val;\n this.initForm(val);\n this.form.get(this.field).setValue(val);\n }\n\n public constructor() {\n this.label = '';\n this.field = '';\n this._value = initialValue as T;\n this.valueChange = new EventEmitter>();\n this.domID = `${CommonUtility.createUniqueDOMId()}`;\n this.subscriptions = new Subscription();\n }\n\n public ngOnInit(): void {\n this.initForm(initialValue as T);\n this.subscriptions.add(\n this.form.get(this.field).valueChanges.subscribe((val: T): void => {\n this._value = val;\n this.output = { field: this.field, values: val };\n this.valueChange.emit(this.output);\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initForm(val: T): void {\n if (!this.form) {\n this.form = new UntypedFormGroup({\n [this.field]: new UntypedFormControl({ value: val === initialValue ? undefined : this._value }),\n });\n } else if (val !== initialValue) {\n this.form.get(this.field).setValue(this._value);\n }\n }\n}\n","
\n \n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { IFilterOutput } from '../filter.interface';\nimport { CommonUtility } from '../../../utility/common.utility';\n\n@Component({\n selector: 'app-filter-number',\n templateUrl: './filter-number.component.html',\n})\nexport class FilterNumberComponent implements OnInit {\n @Input() public label: string;\n @Input() public field: string;\n @Input() public disabled: boolean;\n @Input() public value: T;\n @Output() public valueChange: EventEmitter>;\n\n public output: IFilterOutput;\n public domID: string;\n\n public constructor() {\n this.label = '';\n this.field = '';\n this.disabled = false;\n this.valueChange = new EventEmitter>();\n this.domID = `${CommonUtility.createUniqueDOMId()}`;\n }\n\n public onValueChange(): void {\n this.valueChange.emit(this.output);\n }\n\n public ngOnInit(): void {\n this.output = {\n field: String(this.field),\n values: this.value,\n };\n }\n}\n","
\n \n \n
\n","
\n \n \n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { IFilterOption, IFilterOutput } from '../filter.interface';\nimport { CommonUtility } from '../../../utility/common.utility';\n\nconst initialValue: unknown = {};\n\n@Component({\n selector: 'app-filter-select',\n templateUrl: './filter-select.component.html',\n})\nexport class FilterSelectComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private _value: T;\n @Input() public label: string;\n @Input() public field: string;\n @Input() public options: IFilterOption[] | null;\n @Input() public form: UntypedFormGroup;\n @Output() public valueChange: EventEmitter>;\n public output: IFilterOutput;\n public domID: string;\n\n @Input() public set value(val: T) {\n this._value = val;\n this.initForm(val);\n this.form.get(this.field).setValue(val);\n }\n\n public constructor() {\n this.label = '';\n this.field = '';\n this._value = initialValue as T;\n this.valueChange = new EventEmitter>();\n this.domID = `${CommonUtility.createUniqueDOMId()}`;\n this.subscriptions = new Subscription();\n }\n\n public ngOnInit(): void {\n this.initForm(initialValue as T);\n this.subscriptions.add(\n this.form.get(this.field).valueChanges.subscribe((val: T): void => {\n this._value = val;\n this.output = { field: this.field, values: val };\n this.valueChange.emit(this.output);\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initForm(val: T): void {\n if (!this.form) {\n this.form = new UntypedFormGroup({\n [this.field]: new UntypedFormControl({ value: val === initialValue ? undefined : this._value }),\n });\n } else if (val !== initialValue) {\n this.form.get(this.field).setValue(this._value);\n }\n }\n}\n"," 0\"\n class=\"alert alert-danger\"\n role=\"group\"\n [attr.aria-labelledby]=\"componentId + '-header'\"\n tabindex=\"-1\"\n id=\"{{ componentId }}\"\n>\n

3 ? 'visuallyhidden' : ''\" id=\"{{ componentId }}-header\" [innerHTML]=\"header\">

\n\n \n\n

{{ 'form_validation_errors' | translate }}

\n\n","import { OnInit, OnDestroy, Component, Input } from '@angular/core';\nimport { UntypedFormGroup, AbstractControl } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { IFormErrorMessage } from '../../interfaces/form.interface';\nimport { CommonUtility } from '../../utility/common.utility';\nimport { TranslateService } from '../../translate/translate.service';\nimport { FormService } from '../../services/form.service';\n\n@Component({\n selector: 'app-form-error-messages',\n templateUrl: './form-error-messages.component.html',\n styleUrls: ['./form-error-messages.component.scss'],\n})\nexport class FormErrorMessagesComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n @Input() public form: UntypedFormGroup;\n @Input() public header: string;\n @Input() public formValidationRequest$: Observable;\n\n public formErrors: Array;\n public invalidFormControls: AbstractControl[];\n public componentId: string;\n public formErrorsWithNames: any[];\n\n constructor(\n private translateService: TranslateService,\n private formService: FormService,\n ) {\n this.subscriptions = new Subscription();\n this.header = '';\n this.invalidFormControls = [];\n this.formErrors = [];\n this.componentId = 'form-errors-' + CommonUtility.createUniqueDOMId();\n this.formErrorsWithNames = [];\n }\n\n private processFormChanges(): void {\n this.formErrors = this.formService.getErrorMessages(this.form);\n this.invalidFormControls = this.formService.getInvalidControls(this.form);\n\n this.createFormErrorsWithNames();\n CommonUtility.setFocusToElement(this.componentId);\n }\n\n private createFormErrorsWithNames(): void {\n const getFormErrorsWithNames = (error: IFormErrorMessage): { message: string; controlName: string; controlText: string } => {\n const label: HTMLLabelElement | null = document.querySelector(`[for='${error.controlName}']`);\n\n let labelText: string = error.controlName;\n\n if (label === null) {\n console.warn('[FormErrorMessagesComponent.createFormErrorsWithNames] missing label for element', error.controlName);\n } else {\n labelText = label.textContent;\n }\n\n return {\n controlText: labelText,\n ...error,\n };\n };\n\n this.formErrorsWithNames = this.formErrors.map(getFormErrorsWithNames);\n }\n\n public navigateToFormControl(event: Event): void {\n event.preventDefault();\n\n const elementId: string = (event.target as HTMLAnchorElement).hash.replace('#', '');\n\n CommonUtility.setFocusToElement(elementId);\n }\n\n public ngOnInit(): void {\n if (this.header.length === 0) {\n this.header = this.translateService.instant('form_validation_error_title');\n }\n\n const formValidationRequestSubscription = this.formValidationRequest$.subscribe(this.processFormChanges.bind(this));\n\n this.subscriptions.add(formValidationRequestSubscription);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { random } from 'lodash';\n\n@Component({\n selector: 'app-form-field-char-count',\n templateUrl: './form-field-char-count.component.html',\n})\nexport class FormFieldCharCountComponent {\n /**\n * Max character limit. Defaults to 100.\n */\n @Input() public charLimit: number = 100;\n @Input() public field: AbstractControl;\n @Input() public getLength: (control: AbstractControl) => number = (control: AbstractControl): number =>\n control.value?.length ?? 0;\n\n public id: string;\n\n constructor() {\n this.id = `FormFieldCharCountComponent_${random(100000000, 999999999, false)}`;\n }\n}\n","\n {{ 'form_char_count_text' | translate: [getLength(field), charLimit] }}\n\n"," 0\">\n
0 }\" class=\"form-control-validation-error d-flex\">\n \n {{ ('status_error' | translate) + ':' }}\n \n \n

{{ message }}

\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewRef,\n} from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { identity, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, finalize, startWith, switchMap, take, tap } from 'rxjs/operators';\n\nimport { FormService } from '../../services/form.service';\nimport { CustomFormControl } from '../../interfaces/form.interface';\nimport { A11yService } from '../../services/a11y.service';\n\n@Component({\n selector: 'app-form-field-error',\n templateUrl: './form-field-error.component.html',\n styleUrls: ['./form-field-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormFieldErrorComponent implements OnInit, OnDestroy, OnChanges {\n private subscriptions: Subscription;\n\n public message: string;\n\n @Input() public field: CustomFormControl | AbstractControl;\n @Input() public name: string;\n @Input() public label: string;\n @Input() public customMessage: string;\n @Input() public formValidationRequest$: Observable;\n @Input() public overrideErrors: Record;\n @Input() public distinctChanges: boolean;\n @Input() public alwaysAnnounceError: boolean;\n\n // Note: formValidationRequest$ is used mostly in onSubmit form event when we want to revalidate and get all form errors\n\n constructor(\n private formService: FormService,\n private changeDetectorRef: ChangeDetectorRef,\n private a11yService: A11yService,\n ) {\n this.subscriptions = new Subscription();\n this.message = '';\n this.distinctChanges = true;\n }\n\n private processChanges(shouldAnnounceError: boolean = false): void {\n if (this.field.pristine && this.field.untouched) {\n this.message = '';\n this.detectChanges();\n return;\n }\n\n this.message = this.formService.getErrorMessageForField(\n this.field as CustomFormControl,\n this.name,\n this.customMessage,\n this.label,\n typeof this.overrideErrors !== 'undefined' ? this.overrideErrors : {},\n );\n\n if (shouldAnnounceError || this.alwaysAnnounceError) {\n this.a11yService.setAlertMessage(this.message);\n }\n\n this.detectChanges();\n }\n\n private detectChanges(): void {\n if ((this.changeDetectorRef as ViewRef).destroyed === false) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public ngOnInit(): void {\n const fieldChangesSubscription: Subscription = this.field.valueChanges\n .pipe(\n this.distinctChanges ? distinctUntilChanged() : identity,\n switchMap((value: any) =>\n this.field.statusChanges.pipe(\n filter((status: string) => {\n return status !== 'PENDING';\n }),\n take(1),\n ),\n ),\n )\n .subscribe(this.processChanges.bind(this, false));\n\n this.subscriptions.add(fieldChangesSubscription);\n\n if (typeof this.formValidationRequest$ === 'undefined') {\n return;\n }\n\n const formValidationRequestSubscription: Subscription = this.formValidationRequest$\n .pipe(\n tap((): void => this.field.markAsTouched()),\n switchMap(() =>\n this.field.statusChanges.pipe(\n startWith(this.field.status),\n filter((status: string): boolean => status !== 'PENDING'),\n take(1),\n ),\n ),\n finalize(() => this.detectChanges()),\n )\n .subscribe(this.processChanges.bind(this, true));\n\n this.subscriptions.add(formValidationRequestSubscription);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.customMessage && changes.customMessage.previousValue !== changes.customMessage.currentValue) ||\n (changes.label && changes.label.previousValue !== changes.label.currentValue)\n ) {\n this.processChanges();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-form-field-line-count',\n templateUrl: './form-field-line-count.component.html',\n})\nexport class FormFieldLineCountComponent implements OnInit, OnChanges {\n @Input() public lineLimit: number;\n @Input() public fieldValue: string;\n @Input() public limitLabel?: string;\n\n public lineCount: number;\n\n constructor() {\n this.lineLimit = 100;\n this.lineCount = 0;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const lines: string[] = changes.fieldValue.currentValue.split('\\n').filter((line: string) => line.length > 0);\n this.lineCount = lines.length;\n }\n\n public ngOnInit(): void {\n if (SharedCommonUtility.isNullish(this.limitLabel)) {\n this.limitLabel = 'label_lines_count';\n }\n }\n}\n","{{ 'form_line_count_text' | translate: [lineCount, lineLimit, limitLabel | translate] }}\n","export enum $formFields {\n nativeInputDate = 'nativeInputDate',\n}\n","
\n
\n \n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n","import { Input, Component, ChangeDetectionStrategy, forwardRef, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n UntypedFormGroup,\n UntypedFormBuilder,\n UntypedFormControl,\n AbstractControl,\n ValidationErrors,\n ControlValueAccessor,\n Validator,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validators,\n AbstractControlOptions,\n} from '@angular/forms';\n\nimport { IDateFieldParameters } from './interfaces/params.interface';\nimport { $dateParts } from '../../../../../shared/constants/date';\nimport { $formFields } from './constants/form-fields';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { DateFallbackFormUtils } from '../utils/form';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\n\n@Component({\n selector: 'app-date-field',\n templateUrl: './date-field.component.html',\n styleUrls: ['./date-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateFieldComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateFieldComponent), multi: true },\n ],\n})\nexport class DateFieldComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n private resultDate: Date;\n private changeSubscription: Subscription = Subscription.EMPTY;\n\n @Input() public dateFieldParameters: IDateFieldParameters | undefined;\n @Input() public required: boolean = false;\n @Input() public errorFieldId: string;\n\n public $dateParts: typeof $dateParts;\n public $formFields: typeof $formFields;\n\n public form: UntypedFormGroup;\n public formId: string;\n public isDateInputSupported: boolean;\n public availableYears: number[];\n public availableDays: number[];\n public disabled: boolean;\n\n constructor(private formBuilder: UntypedFormBuilder) {\n if (typeof this.dateFieldParameters !== 'object') {\n this.dateFieldParameters = {\n max: null,\n min: null,\n };\n }\n if (typeof this.dateFieldParameters.nativeInputId !== 'string') {\n this.dateFieldParameters.nativeInputId = CommonUtility.createUniqueDOMId();\n }\n this.$dateParts = $dateParts;\n this.$formFields = $formFields;\n\n this.form = null;\n this.formId = CommonUtility.createUniqueDOMId();\n this.isDateInputSupported = CommonUtility.isInputTypeSupported('date');\n this.availableYears = [];\n this.availableDays = [];\n this.resultDate = null;\n\n this.setupForm();\n }\n\n private onChange: Function = () => null;\n private onTouched: Function = () => null;\n private onValidatorChange: () => void = () => void 0;\n\n private setupForm(): void {\n if (this.isDateInputSupported) {\n this.form = this.formBuilder.group({\n [$formFields.nativeInputDate]: new UntypedFormControl('', DateFieldComponent.defaultFormControlConfig()),\n });\n this.changeSubscription = this.form\n .get($formFields.nativeInputDate)\n .valueChanges.subscribe((value: string) => this.nativeDateChanged(value));\n } else {\n this.setUpFallbackForm();\n }\n }\n\n private setUpFallbackForm(): void {\n this.form = this.formBuilder.group({\n [$dateParts.year]: new UntypedFormControl(null, DateFieldComponent.defaultFormControlConfig()),\n [$dateParts.month]: new UntypedFormControl(null, DateFieldComponent.defaultFormControlConfig()),\n [$dateParts.day]: new UntypedFormControl(null, DateFieldComponent.defaultFormControlConfig()),\n });\n this.populateFormValues();\n if (SharedCommonUtility.isDateValid(this.resultDate)) {\n this.syncFormDate(this.resultDate);\n }\n this.changeSubscription = this.form.valueChanges.subscribe(() => this.fallbackDateChanged());\n }\n\n private emitChange(value: any): void {\n this.onTouched();\n this.onChange(value);\n }\n\n private populateFormValues(): void {\n this.populateYears();\n\n if (SharedCommonUtility.isDateValid(this.resultDate)) {\n this.populateDays(this.resultDate.getMonth());\n return;\n }\n\n this.populateDays(0);\n }\n\n private populateYears(): void {\n const formField: AbstractControl = this.form.get($dateParts.year);\n\n this.availableYears = DateFallbackFormUtils.populateYears(formField);\n\n if (SharedCommonUtility.isDateValid(this.resultDate) === false) {\n formField.setValue(null);\n }\n }\n\n private populateDays(month: number): void {\n const resultDateIsValid: boolean = SharedCommonUtility.isDateValid(this.resultDate);\n const date: Date = resultDateIsValid ? this.resultDate : new Date();\n\n const formField: AbstractControl = this.form.get($dateParts.day);\n const days: number[] = DateFallbackFormUtils.populateDays(formField, month, date);\n\n this.availableDays = days;\n\n if (days.length < date.getDate()) {\n this.form.get($dateParts.day).setValue(days.length);\n\n if (resultDateIsValid) {\n this.resultDate.setDate(days.length);\n }\n }\n }\n\n private setResultDate(receivedDate: Date): void {\n if (this.isDateInputSupported) {\n this.setNativeResultDate(receivedDate);\n } else {\n this.setFallbackResultDate(receivedDate);\n }\n\n this.emitChange(this.resultDate);\n }\n\n private setNativeResultDate(receivedDate: Date): void {\n const nativeInput: AbstractControl = this.form.get($formFields.nativeInputDate);\n\n this.resultDate = SharedCommonUtility.isDateValid(receivedDate) ? receivedDate : null;\n\n if (this.resultDate === null) {\n nativeInput.setValue('', { emitEvent: false });\n } else {\n const newValue: string = SharedDateUtility.getLocalISODate(this.resultDate);\n nativeInput.setValue(newValue, { emitEvent: false });\n }\n }\n\n private setFallbackResultDate(receivedDate: Date): void {\n if (SharedCommonUtility.isDateValid(receivedDate)) {\n this.resultDate = DateFallbackFormUtils.setResultDate(this.dateFieldParameters, receivedDate);\n this.populateDays(this.resultDate.getMonth());\n } else {\n this.resultDate = null;\n }\n this.syncFormDate(this.resultDate);\n this.triggerValidation();\n }\n\n private isFallbackFormFilledPartially(): boolean {\n const formValues: (string | null)[] = [\n this.form.get($dateParts.year).value,\n this.form.get($dateParts.month).value,\n this.form.get($dateParts.day).value,\n ];\n\n const nullOnly = (item: string | null): boolean => {\n return item === null;\n };\n\n const nullCount: number = formValues.filter(nullOnly).length;\n\n return nullCount > 0 && nullCount < formValues.length;\n }\n\n private syncFormDate(date: Date): void {\n let value: any = { [$dateParts.year]: null, [$dateParts.month]: null, [$dateParts.day]: null };\n if (SharedCommonUtility.isDateValid(date)) {\n value = { [$dateParts.year]: date.getFullYear(), [$dateParts.month]: date.getMonth(), [$dateParts.day]: date.getDate() };\n }\n this.form.setValue(value, { emitEvent: false });\n }\n\n private triggerValidation(): void {\n this.onValidatorChange();\n }\n\n private getDateFromFallbackForm(): Date | null {\n const yearValue: string = this.form.get($dateParts.year).value;\n const monthValue: string = this.form.get($dateParts.month).value;\n const dateValue: string = this.form.get($dateParts.day).value;\n\n const values: string[] = [yearValue, monthValue, dateValue];\n\n if (values.includes(null)) {\n return null;\n }\n\n const date: Date = SharedDateUtility.getLocalDateFromNumbers(Number(yearValue), Number(monthValue), Number(dateValue));\n return SharedCommonUtility.isDateValid(date) ? date : null;\n }\n\n private static defaultFormControlConfig(): AbstractControlOptions {\n return {\n validators: null,\n updateOn: 'blur',\n };\n }\n\n public nativeDateChanged(date: string): void {\n const newDate: Date = SharedDateUtility.getLocalDate(date);\n this.setResultDate(newDate);\n }\n\n public fallbackDateChanged(): void {\n if (this.isFallbackFormFilledPartially()) {\n this.resultDate = null;\n }\n this.triggerValidation();\n\n const formDate: Date = this.getDateFromFallbackForm();\n\n if (SharedCommonUtility.isDateValid(formDate) === false) {\n this.emitChange(null);\n return;\n }\n\n if (SharedCommonUtility.isDateValid(this.resultDate) === false) {\n this.resultDate = formDate;\n }\n\n this.setResultDate(formDate);\n }\n\n public nativeMinValue(): string {\n const minDate = this.dateFieldParameters.min;\n return SharedCommonUtility.getTypeOf(minDate) === 'date' ? SharedDateUtility.getLocalISODate(minDate) : '';\n }\n\n public nativeMaxValue(): string {\n const maxDate: Date = this.dateFieldParameters.max;\n return SharedCommonUtility.getTypeOf(maxDate) === 'date' ? SharedDateUtility.getLocalISODate(maxDate) : '';\n }\n\n public ngOnInit(): void {\n this.setResultDate(this.resultDate);\n }\n\n public writeValue(obj: any): void {\n if (\n obj === this.resultDate ||\n (SharedCommonUtility.isDateValid(obj) &&\n SharedCommonUtility.isDateValid(this.resultDate) &&\n this.resultDate.getTime() === obj.getDate())\n ) {\n return;\n }\n this.setResultDate(obj);\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 setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n return Validators.compose([\n CustomValidators.isValidDate,\n CustomValidators.minDate(this.dateFieldParameters.min),\n CustomValidators.maxDate(this.dateFieldParameters.max),\n ])(control);\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n public ngOnDestroy(): void {\n this.changeSubscription.unsubscribe();\n }\n}\n","export enum $formFields {\n nativeDatetimeLocal = 'nativeDatetimeLocal',\n}\n","
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n","import { Input, Component, ChangeDetectionStrategy, forwardRef, OnDestroy } from '@angular/core';\nimport {\n UntypedFormGroup,\n UntypedFormBuilder,\n UntypedFormControl,\n AbstractControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validator,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { IDatetimeLocalParameters } from './interfaces/params.interface';\nimport { $dateParts } from '../../../../../shared/constants/date';\nimport { $formFields } from './constants/form-fields';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { DateFallbackFormUtils } from '../utils/form';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\n\n@Component({\n selector: 'app-datetime-local',\n templateUrl: './datetime-local.component.html',\n styleUrls: ['./datetime-local.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatetimeLocalComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatetimeLocalComponent), multi: true },\n ],\n})\nexport class DatetimeLocalComponent implements OnDestroy, ControlValueAccessor, Validator {\n private resultDate: Date;\n private subscription: Subscription;\n\n @Input() public datetimeLocalParameters: IDatetimeLocalParameters | undefined;\n @Input() public required: boolean = false;\n @Input() public errorFieldId: string;\n public $dateParts: typeof $dateParts;\n\n public $formFields: typeof $formFields;\n public form: UntypedFormGroup;\n public formId: string;\n public isNativeLocalDatetimeSupported: boolean;\n public availableYears: number[];\n public availableDays: number[];\n public availableHours: string[];\n public availableMinutes: string[];\n\n constructor(private formBuilder: UntypedFormBuilder) {\n if (typeof this.datetimeLocalParameters !== 'object') {\n this.datetimeLocalParameters = {\n max: null,\n min: null,\n };\n }\n if (typeof this.datetimeLocalParameters.nativeInputId !== 'string') {\n this.datetimeLocalParameters.nativeInputId = CommonUtility.createUniqueDOMId();\n }\n this.subscription = Subscription.EMPTY;\n this.$dateParts = $dateParts;\n this.$formFields = $formFields;\n\n this.form = null;\n this.formId = CommonUtility.createUniqueDOMId();\n this.isNativeLocalDatetimeSupported = CommonUtility.isInputTypeSupported('datetime-local');\n this.availableYears = [];\n this.availableDays = [];\n this.availableHours = [];\n this.availableMinutes = [];\n\n this.setupForm();\n }\n\n private onChange: Function = () => null;\n private onTouched: Function = () => null;\n\n private setUpFallbackForm(): void {\n this.form = this.formBuilder.group({\n [$dateParts.year]: new UntypedFormControl(null, {}),\n [$dateParts.month]: new UntypedFormControl(null, {}),\n [$dateParts.day]: new UntypedFormControl(null, {}),\n [$dateParts.hour]: new UntypedFormControl(null, {}),\n [$dateParts.minute]: new UntypedFormControl(null, {}),\n });\n this.populateFormValues();\n this.syncFormDate(this.resultDate);\n }\n\n private populateFormValues(): void {\n this.populateYears();\n this.populateHours();\n this.populateMinutes();\n this.form.get($dateParts.month).setValue(0);\n if (SharedCommonUtility.isDateValid(this.resultDate)) {\n this.populateDays(this.resultDate.getMonth());\n }\n this.form.get($dateParts.day).setValue(1);\n }\n\n private populateYears(): void {\n const formField: AbstractControl = this.form.get($dateParts.year);\n this.availableYears = DateFallbackFormUtils.populateYears(formField);\n }\n\n private populateDays(month: number): void {\n const formField: AbstractControl = this.form.get($dateParts.day);\n const days: number[] = DateFallbackFormUtils.populateDays(formField, month, this.resultDate);\n\n this.availableDays = days;\n if (days.length < this.resultDate.getDate()) {\n this.resultDate.setDate(days.length);\n this.form.get($dateParts.day).setValue(days.length);\n }\n }\n\n private populateHours(): void {\n const hours: string[] = [];\n for (let i: number = 0; i <= 23; i += 1) {\n hours.push(SharedCommonUtility.withLeadingZeros(i, 2));\n }\n this.availableHours = hours;\n this.form.get($dateParts.hour).setValue(this.availableHours[0]);\n }\n\n private populateMinutes(): void {\n const minutes: string[] = [];\n for (let i: number = 0; i <= 59; i += 1) {\n minutes.push(SharedCommonUtility.withLeadingZeros(i, 2));\n }\n this.availableMinutes = minutes;\n this.form.get($dateParts.minute).setValue(this.availableMinutes[0]);\n }\n\n private setResultDate(receivedDate: Date): void {\n if (this.isNativeLocalDatetimeSupported) {\n this.setNativeValue(receivedDate);\n } else {\n this.setFallbackResultDate(receivedDate);\n }\n this.emitChange(this.resultDate);\n }\n\n private setFallbackResultDate(receivedDate: Date): void {\n if (SharedCommonUtility.isDateValid(receivedDate)) {\n this.resultDate = DateFallbackFormUtils.setResultDate(this.datetimeLocalParameters, receivedDate);\n this.populateDays(this.resultDate.getMonth());\n } else {\n this.resultDate = null;\n }\n this.syncFormDate(this.resultDate);\n }\n\n private emitChange(date: Date): void {\n this.onChange(date);\n this.onTouched();\n }\n\n private setNativeValue(receivedDate: Date): void {\n const nativeInput: AbstractControl = this.form.get($formFields.nativeDatetimeLocal);\n\n this.resultDate = SharedCommonUtility.isDateValid(receivedDate)\n ? DateFallbackFormUtils.setResultDate(this.datetimeLocalParameters, receivedDate)\n : null;\n\n if (this.resultDate === null) {\n nativeInput.setValue('', { emitEvent: false });\n } else {\n const newValue: string = SharedDateUtility.dateToDatetimeLocalFormat(this.resultDate);\n nativeInput.setValue(newValue, { emitEvent: false });\n }\n }\n\n private setupNativeDatetime(): void {\n this.form = this.formBuilder.group({\n [$formFields.nativeDatetimeLocal]: new UntypedFormControl(null, {}),\n });\n this.subscription = this.form.get($formFields.nativeDatetimeLocal).valueChanges.subscribe((value: string) => {\n this.nativeDateChanged(value);\n });\n }\n\n private isFallbackFormFilledPartially(): boolean {\n const formValues: (string | null)[] = Object.values(this.form.getRawValue());\n\n const nullOnly = (item: string | null): boolean => {\n return item === null;\n };\n\n return formValues.some(nullOnly);\n }\n\n private getDateFromFallbackForm(): Date | null {\n if (this.isFallbackFormFilledPartially()) {\n return null;\n }\n const value: any = this.form.getRawValue();\n Object.entries(value).forEach(([key, val]: [string, string]) => (value[key] = Number(val)));\n\n const date: Date = new Date(\n value[$dateParts.year],\n value[$dateParts.month],\n value[$dateParts.day],\n value[$dateParts.hour],\n value[$dateParts.minute],\n );\n return SharedCommonUtility.isDateValid(date) ? date : null;\n }\n\n private setupForm(): void {\n this.subscription.unsubscribe();\n if (this.isNativeLocalDatetimeSupported) {\n this.setupNativeDatetime();\n } else {\n this.setUpFallbackForm();\n }\n }\n\n public syncFormDate(date: Date): void {\n let value: any = {\n [$dateParts.year]: null,\n [$dateParts.month]: null,\n [$dateParts.day]: null,\n [$dateParts.hour]: null,\n [$dateParts.minute]: null,\n };\n if (SharedCommonUtility.isDateValid(date)) {\n value = {\n [$dateParts.year]: date.getFullYear(),\n [$dateParts.month]: date.getMonth(),\n [$dateParts.day]: date.getDate(),\n [$dateParts.hour]: SharedCommonUtility.withLeadingZeros(date.getHours(), 2),\n [$dateParts.minute]: SharedCommonUtility.withLeadingZeros(date.getMinutes(), 2),\n };\n }\n this.form.setValue(value, { emitEvent: false });\n }\n\n public nativeDateChanged(date: string): void {\n const newDate: Date = typeof date === 'string' && date.trim().length > 0 ? new Date(date) : null;\n this.setResultDate(new Date(newDate));\n }\n\n public fallbackDateChanged(): void {\n const formDate: Date = this.getDateFromFallbackForm();\n this.setResultDate(formDate);\n }\n\n public nativeMinValue(): string {\n return SharedCommonUtility.getTypeOf(this.datetimeLocalParameters.min) === 'date'\n ? SharedDateUtility.dateToDatetimeLocalFormat(this.datetimeLocalParameters.min)\n : '';\n }\n\n public nativeMaxValue(): string {\n return SharedCommonUtility.getTypeOf(this.datetimeLocalParameters.max) === 'date'\n ? SharedDateUtility.dateToDatetimeLocalFormat(this.datetimeLocalParameters.max)\n : '';\n }\n\n public writeValue(obj: any): void {\n this.setResultDate(obj);\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 validate(control: AbstractControl): ValidationErrors | null {\n return Validators.compose([\n CustomValidators.isValidDate,\n CustomValidators.minDate(this.datetimeLocalParameters.min),\n CustomValidators.maxDate(this.datetimeLocalParameters.max),\n ])(control);\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n
\n \n \n {{ (multiple ? 'select_or_drag_and_drop_files' : 'select_or_drag_and_drop_file') | translate }}\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
0\">\n
\n \n {{ context.tableTitle }}\n \n
\n
\n \n \n
\n
\n
\n \n {{ 'document_total_file_size' | translate }}:\n {{ getFormattedFileSize(totalFileSize) }}\n \n \n {{ '> ' + getFormattedFileSize(maxTotalFileSize) }}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n","import {\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 { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { has, isEqual, sortBy } from 'lodash';\n\nimport { CommonUtility } from '../../../../utility/common.utility';\nimport { IUploadClient } from '../../../../../../shared/interfaces/uploads.interface';\nimport { NotificationPosition } from '../../../../models/notification.model';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { NotificationService } from '../../../../services/notification.service';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport {\n IDclConfig,\n ITableColumn,\n ITableConfig,\n ITableRow,\n SortEvent,\n} from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport { $uploads } from '../../../../../../shared/constants/uploads';\nimport { SharedDateUtility } from '../../../../../../shared/utils/date.utility';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { $sortingOrder } from '../../../../../../shared/constants/sort';\nimport { ICellConfig } from '../../../table/ngb-table/cells/base-cell/base-cell.component';\n\nenum TableColumn {\n Name = 'Name',\n DateAdded = 'DateAdded',\n FileSize = 'FileSize',\n Action = 'Action',\n}\n\nexport interface IFileDragAndDropContext {\n /**\n * Translated form field label.\n */\n label?: string;\n field: string;\n acceptedFileExtensions: string[];\n /**\n * Required if form control validation is desired.\n */\n acceptedMimeTypes?: string[];\n /**\n * Max size per file.\n */\n maxFileSize: number;\n /**\n * Max size across all files. If not provided then defaults to maxFileSize * maxTotalFileQuantity.\n */\n maxTotalFileSize?: number;\n /**\n * Maximum number of allowed files. Defaults to 1. Existing uploads are included in the limit.\n */\n maxTotalFileQuantity?: number;\n /**\n * Defaults to true.\n */\n required?: boolean;\n /**\n * Custom error message for form error.\n */\n customMessage?: string;\n /**\n * Translated title for file table. If provided then a table will be displayed listing uploaded files and attachments.\n * Table is also displayed if removableFiles is set to true.\n */\n tableTitle?: string;\n /**\n * Used to override error messages in the form field error.\n */\n overrideErrors?: Record;\n}\n\nfunction isUpload(attachment: File | IUploadClient): attachment is IUploadClient {\n return has(attachment, $uploads.fileName);\n}\n\n@Component({\n selector: 'app-file-drag-and-drop',\n templateUrl: './file-drag-and-drop.component.html',\n styleUrls: ['./file-drag-and-drop.component.scss'],\n})\nexport class FileDragAndDropComponent implements OnInit, OnDestroy, OnChanges {\n private subscription: Subscription = new Subscription();\n private originalTableData: ITableRow[] = [];\n\n public id: string;\n public dragActive: boolean = false;\n public _files: File[] = [];\n public tableConfig: ITableConfig;\n public tableData: ITableRow[] = [];\n\n public set files(_files: File[]) {\n this._files = _files;\n this.updateInputFiles();\n }\n\n public get files(): File[] {\n return this._files;\n }\n\n @ViewChild('nativeInput')\n public nativeInput: ElementRef;\n\n @Input()\n public context: IFileDragAndDropContext;\n @Input()\n public removableFiles: boolean = true;\n @Input()\n public existingUploads: IUploadClient[] = [];\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Subject = new Subject();\n @Input()\n public disabled: boolean = false;\n @Input()\n public showDateAdded: boolean = true;\n @Input()\n public ariaLabel: string = 'select_or_drag_and_drop_files';\n\n @Output()\n public existingUploadsChange: EventEmitter = new EventEmitter();\n @Output()\n public fileChange: EventEmitter = new EventEmitter();\n @Output()\n public attachmentDeleted: EventEmitter = new EventEmitter();\n\n constructor(\n private translateService: TranslateService,\n private notificationService: NotificationService,\n ) {}\n\n /**\n * Notifies user if number of attached files exceeds allowed quantity.\n *\n * @param files Files attached via input[type=\"file\"]\n * @param warningMessage\n * @private\n */\n private validateFileQuantity(files: File[], warningMessage: string): void {\n if (this.files.length + files.length > this.maxFileQuantity) {\n const exceedsLimitMessage: string = this.translateService.instant(\n 'form-validation-attachment-quantity-exceeds-limit',\n this.maxFileQuantity,\n );\n this.notificationService.warn(`${warningMessage}: ${exceedsLimitMessage}`, NotificationPosition.Toast);\n }\n }\n\n private validateIndividualFileSize(files: File[], warningMessage: string): File[] {\n const filesBelowSizeReq: File[] = files.filter((file: File) => file.size <= this.context.maxFileSize);\n if (filesBelowSizeReq.length !== files.length) {\n const exceedsLimitMessage: string = this.translateService.instant(\n 'form-validation-files-that-exceeds-limit-were-not-attached',\n this.getFormattedFileSize(this.context.maxFileSize),\n );\n this.notificationService.warn(`${warningMessage}: ${exceedsLimitMessage}`, NotificationPosition.Toast);\n }\n\n return filesBelowSizeReq;\n }\n\n private get canValidateFormControl(): boolean {\n return (\n !SharedCommonUtility.isNullishOrEmpty(this.context.acceptedFileExtensions) &&\n !SharedCommonUtility.isNullishOrEmpty(this.context.acceptedMimeTypes)\n );\n }\n\n private validateFormControl(): boolean {\n if (!this.canValidateFormControl) {\n return true;\n }\n\n const control: AbstractControl = this.form.get(this.context.field);\n\n control.setValidators([\n CustomValidators.validateAttachmentFileType(\n this.files,\n this.context.acceptedMimeTypes,\n this.context.acceptedFileExtensions,\n ),\n CustomValidators.validateAttachmentTotalSize([...this.existingUploads, ...this.files], this.maxTotalFileSize),\n ]);\n\n control.updateValueAndValidity();\n this.formValidationRequest$.next();\n\n return control.valid;\n }\n\n private createTableConfig(): void {\n const columns: Record = {\n [TableColumn.Name]: {\n translationKey: 'table_column_name',\n sortingEnabled: true,\n styles: {\n maxWidth: '50%',\n width: '50%',\n },\n },\n [TableColumn.DateAdded]: {\n translationKey: 'table_column_date_added',\n sortingEnabled: true,\n styles: {\n maxWidth: '20%',\n width: '20%',\n },\n },\n [TableColumn.FileSize]: {\n translationKey: 'table_column_file_size',\n sortingEnabled: true,\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n },\n };\n\n if (!this.showDateAdded) {\n delete columns[TableColumn.DateAdded];\n }\n\n if (this.removableFiles) {\n columns[TableColumn.Action] = {\n translationKey: 'table_header_action',\n styles: {\n maxWidth: '15%',\n width: '15%',\n },\n };\n }\n\n this.tableConfig = {\n columns: columns,\n caption: this.translateService.instant('selected_files_to_upload'),\n };\n }\n\n private toTableRow(entry: File | IUploadClient): ITableRow {\n let name: string;\n let dateAdded: Date;\n let fileSize: number;\n\n if (isUpload(entry)) {\n name = entry[$uploads.fileOriginalName];\n dateAdded = new Date(entry[$uploads.createdAt]);\n fileSize = entry[$uploads.fileSize];\n } else {\n name = entry.name;\n dateAdded = new Date();\n fileSize = entry.size;\n }\n\n const rowData: Record> = {\n [TableColumn.Name]: NgbTableUtilities.textCell({\n text: name,\n }),\n [TableColumn.DateAdded]: NgbTableUtilities.textCell({\n text: SharedDateUtility.getLocalISODate(dateAdded),\n }),\n [TableColumn.FileSize]: NgbTableUtilities.textCell({\n text: this.getFormattedFileSize(fileSize),\n }),\n };\n\n if (!this.showDateAdded) {\n delete rowData[TableColumn.DateAdded];\n }\n\n if (this.removableFiles) {\n rowData[TableColumn.Action] = NgbTableUtilities.buttonCell({\n text: this.translateService.instant('action_delete'),\n classes: ['btn-link', 'font-weight-500', 'py-0'],\n listeners: {\n click: this.removeEntry.bind(this, entry),\n },\n });\n }\n\n return { data: rowData, originalData: entry };\n }\n\n private generateTableData(): void {\n this.originalTableData = [...this.existingUploads, ...this.files].map(this.toTableRow.bind(this));\n this.tableData = [...this.originalTableData];\n }\n\n public removeEntry(entry: File | IUploadClient): void {\n if (isUpload(entry)) {\n this.existingUploads = this.existingUploads.filter((upload: IUploadClient): boolean => !isEqual(upload, entry));\n this.existingUploadsChange.emit(this.existingUploads);\n } else {\n this.files = this.files.filter((file: File): boolean => !isEqual(file, entry));\n this.fileChange.emit(this.files);\n this.attachmentDeleted.emit();\n }\n\n this.tableData = this.tableData.filter((row: ITableRow): boolean => !isEqual(row.originalData, entry));\n\n this.validateFormControl();\n }\n\n private getComparable = (column: string, rawData: File | IUploadClient): string | number => {\n switch (column) {\n case TableColumn.Name:\n return isUpload(rawData) ? rawData[$uploads.fileOriginalName] : rawData.name;\n case TableColumn.FileSize:\n return isUpload(rawData) ? rawData[$uploads.fileSize] : rawData.size;\n case TableColumn.DateAdded:\n return SharedDateUtility.getLocalISODate(isUpload(rawData) ? rawData[$uploads.createdAt] : new Date());\n default:\n return '';\n }\n };\n\n private sort(data: (File | IUploadClient)[], { column, direction }: SortEvent): (File | IUploadClient)[] {\n const sortFn = (entry: File | IUploadClient): string | number => this.getComparable(column, entry);\n const sortedData: (File | IUploadClient)[] = sortBy(data, sortFn);\n if (direction === $sortingOrder.asc) {\n return sortedData;\n }\n return sortedData.reverse();\n }\n\n /**\n * Syncs input.files with this.files\n * Without it browser doesn't allow to upload the same file\n * after it was remowed.\n */\n private updateInputFiles(): void {\n const dataTransfer: DataTransfer = new DataTransfer();\n for (const file of this._files) {\n dataTransfer.items.add(file);\n }\n if (this?.nativeInput?.nativeElement) {\n this.nativeInput.nativeElement.files = dataTransfer.files;\n }\n }\n\n /**\n * Max file quantity after existing uploads have been factored in.\n */\n public get maxFileQuantity(): number {\n if (SharedCommonUtility.notNullish(this.context.maxTotalFileQuantity)) {\n return Math.max(this.context.maxTotalFileQuantity - this.existingUploads.length, 0);\n }\n\n return Math.max(1 - this.existingUploads.length, 0);\n }\n\n public get maxTotalFileQuantity(): number {\n return this.context.maxTotalFileQuantity ?? 1;\n }\n\n public get acceptedExtensions(): string {\n return this.context.acceptedFileExtensions.join(',');\n }\n\n public get displayTable(): boolean {\n return this.removableFiles || !SharedCommonUtility.isNullishOrEmpty(this.context.tableTitle);\n }\n\n public get multiple(): boolean {\n return this.maxFileQuantity > 1;\n }\n\n public get uploadDisabled(): boolean {\n return (\n this.files.length + this.existingUploads.length === this.maxTotalFileQuantity ||\n this.maxTotalFileSizeExceeded ||\n this.disabled\n );\n }\n\n public get required(): boolean {\n return this.context.required ?? true;\n }\n\n public get maxTotalFileSize(): number {\n return this.context.maxTotalFileSize ?? this.context.maxFileSize * this.maxTotalFileQuantity;\n }\n\n public get totalFileSize(): number {\n const totalExistingUploadSize: number = this.existingUploads\n .map((value: IUploadClient): number => value.fileSize)\n .reduce((acc: number, curr: number): number => acc + curr, 0);\n\n const totalNewFileSize: number = this.files\n .map((file: File) => file.size)\n .reduce((acc: number, curr: number): number => acc + curr, 0);\n\n return totalExistingUploadSize + totalNewFileSize;\n }\n\n public get maxTotalFileSizeExceeded(): boolean {\n return this.totalFileSize >= this.maxTotalFileSize;\n }\n\n public get errorHighlight(): boolean {\n const field: AbstractControl = this.form.get(this.context.field);\n return field.invalid && field.touched && !field.pristine;\n }\n\n public getFormattedFileSize(size: number): string {\n return SharedCommonUtility.formatBytes(size);\n }\n\n public sortTable({ column, direction }: SortEvent): void {\n if (direction === $sortingOrder.all) {\n this.tableData = [...this.originalTableData];\n } else {\n const originalData: (File | IUploadClient)[] = this.originalTableData.map(\n (row: ITableRow) => row.originalData,\n );\n const sortedData: (File | IUploadClient)[] = this.sort(originalData, { column, direction });\n this.tableData = sortedData.map(this.toTableRow.bind(this));\n }\n }\n\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.dragActive = true;\n }\n\n public onDragLeave(event: Event): void {\n event.preventDefault();\n this.dragActive = false;\n }\n\n /**\n * Handles file uploads via drag and drop.\n *\n * @param event\n */\n public onDragDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragActive = false;\n this.onFileChange(Array.from(event.dataTransfer.files));\n }\n\n /**\n * Handles direct file uploads via clicking and selecting a file.\n *\n * @param event\n */\n public onChange(event: Event): void {\n event.preventDefault();\n const element: HTMLInputElement = event.currentTarget as HTMLInputElement;\n this.onFileChange(Array.from(element.files));\n }\n\n /**\n * Handles validations and displaying file table if applicable.\n *\n * @param files\n */\n public onFileChange(files: File[]): void {\n const numFilesBefore: number = this.files.length;\n\n const warningMessage: string = this.translateService.instant('warning');\n this.validateFileQuantity(files, warningMessage);\n\n const filesBeforeChange: File[] = this.files;\n const filesBelowSizeReq: File[] = this.validateIndividualFileSize(files, warningMessage);\n this.files = this.files.concat(...filesBelowSizeReq).slice(0, this.maxFileQuantity);\n\n if (\n SharedCommonUtility.notNullish(this.form) &&\n !SharedCommonUtility.isNullishOrEmpty(this.context.field) &&\n !this.validateFormControl()\n ) {\n this.files = filesBeforeChange;\n return;\n }\n\n if (this.displayTable) {\n this.generateTableData();\n }\n\n if (this.files.length > numFilesBefore) {\n this.fileChange.emit(this.files);\n }\n }\n\n public ngOnInit(): void {\n this.id = CommonUtility.createUniqueDOMId(this.context.field);\n\n this.subscription.add(\n this.formValidationRequest$.subscribe(() => {\n const control: AbstractControl = this.form.get(this.context.field);\n control?.markAsDirty();\n control?.markAsTouched();\n }),\n );\n\n if (this.displayTable) {\n this.createTableConfig();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n SharedCommonUtility.notNullish(changes.existingUploads) &&\n SharedCommonUtility.notNullishOrEmpty(changes.existingUploads.currentValue) &&\n !isEqual(changes.existingUploads.currentValue, changes.existingUploads.previousValue)\n ) {\n this.generateTableData();\n this.validateFormControl();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\n\nconst $yearsRange: number = 5;\n\nexport interface IParams {\n min?: Date | null;\n max?: Date | null;\n}\n\nexport class DateFallbackFormUtils {\n constructor() {}\n\n public static populateYears(field: AbstractControl): number[] {\n const date: Date = new Date();\n const year: number = date.getFullYear() + $yearsRange;\n\n const years: number[] = [];\n for (let i: number = 0; i <= $yearsRange * 2; i += 1) {\n years.push(year - i);\n }\n\n field.setValue(date.getFullYear());\n return years;\n }\n\n public static populateDays(field: AbstractControl, month: number, date: Date): number[] {\n const resultDate: Date = date instanceof Date ? date : new Date();\n\n const days: number[] = [];\n const daysNum: number = SharedDateUtility.amountOfDaysInMonth(month + 1, resultDate.getFullYear());\n\n for (let i: number = 1; i <= daysNum; i += 1) {\n days.push(i);\n }\n\n // Note: in case there are less days than in previously selected month\n if (daysNum < resultDate.getDate()) {\n field.setValue(daysNum);\n }\n return days;\n }\n\n public static setResultDate(params: IParams, receivedDate: Date): Date {\n if (SharedCommonUtility.isDateValid(receivedDate) === false) {\n return null;\n }\n let date: Date = new Date(receivedDate);\n\n if (SharedCommonUtility.getTypeOf(params.min) === 'date' && date < params.min) {\n date = new Date(params.min.getTime());\n }\n if (SharedCommonUtility.getTypeOf(params.max) === 'date' && date > params.max) {\n date = new Date(params.max.getTime());\n }\n date.setSeconds(0, 0);\n date.setUTCSeconds(0, 0);\n\n return date;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-global-spinner',\n templateUrl: './global-spinner.component.html',\n styleUrls: ['./global-spinner.component.scss'],\n})\nexport class GlobalSpinnerComponent {\n constructor() {}\n}\n","
\n
\n {{ 'loading_spinner_text' | translate }}\n
\n

{{ 'loading_spinner_text' | translate }}

\n
\n","import { Component, Input } from '@angular/core';\nimport { Icons } from '../../shared/eap-icons.component';\n\n@Component({\n selector: 'app-icon',\n styles: [':host { line-height: 16px; color: #333; }'],\n template: `\n \n \n \n `,\n})\nexport class IconComponent {\n /**\n * Icon colour is inherited from parent 'color' attribute.\n */\n @Input() icon: Icons;\n}\n","import { IHighlight, IImageScale, IImageSize, IPoint } from '../../interfaces/image-highlight.interface';\nimport {\n DEFAULT_HIGHLIGHT_HEIGHT,\n DEFAULT_HIGHLIGHT_MARGIN,\n DEFAULT_HIGHLIGHT_POSITION,\n DEFAULT_HIGHLIGHT_WIDTH,\n MIN_HIGHLIGHT_SIZE,\n} from '../../constants/image-highlight.constants';\nimport { IBoundingBox } from '../../../../shared/interfaces/design-review.interface';\nimport { $boundingBox } from '../../../../shared/constants/design-review';\n\nexport class HighlightImgHelper {\n constructor(private img: HTMLImageElement) {}\n\n private addMarginToPoint(mousePos: IPoint, imgBoundingBox: IBoundingBox, margin: number = DEFAULT_HIGHLIGHT_MARGIN): IPoint {\n const neededMarginX: number = mousePos.x - imgBoundingBox.x < margin ? margin - (mousePos.x - imgBoundingBox.x) : 0;\n const neededMarginY: number = mousePos.y - imgBoundingBox.y < margin ? margin - (mousePos.y - imgBoundingBox.y) : 0;\n\n return {\n x: mousePos.x + neededMarginX,\n y: mousePos.y + neededMarginY,\n };\n }\n\n private pointIntersectsBox(point: IPoint, box: IBoundingBox): boolean {\n const xIntersects: boolean = box.x <= point.x && point.x <= box.x + box.width;\n const yIntersects: boolean = box.y <= point.y && point.y <= box.y + box.height;\n return xIntersects && yIntersects;\n }\n\n private imgCanFitBox(\n mousePos: IPoint,\n imgBoundingBox: IBoundingBox,\n desiredWidth: number = DEFAULT_HIGHLIGHT_WIDTH,\n desiredHeight: number = DEFAULT_HIGHLIGHT_HEIGHT,\n margin: number = DEFAULT_HIGHLIGHT_MARGIN,\n ): boolean {\n const canFitWidth: boolean = mousePos.x + desiredWidth <= imgBoundingBox.x + imgBoundingBox.width - margin;\n const canFitHeight: boolean = mousePos.y + desiredHeight <= imgBoundingBox.y + imgBoundingBox.height - margin;\n return canFitWidth && canFitHeight && this.pointIntersectsBox(mousePos, imgBoundingBox);\n }\n\n private adjustPosToFitBox(\n mousePos: IPoint,\n imgBoundingBox: IBoundingBox,\n desiredWidth: number = DEFAULT_HIGHLIGHT_WIDTH,\n desiredHeight: number = DEFAULT_HIGHLIGHT_HEIGHT,\n margin: number = DEFAULT_HIGHLIGHT_MARGIN,\n ): IPoint {\n const availableSpaceXAxis: number = imgBoundingBox.x + imgBoundingBox.width - margin - mousePos.x;\n const availableSpaceYAxis: number = imgBoundingBox.y + imgBoundingBox.height - margin - mousePos.y;\n return {\n x: availableSpaceXAxis < desiredWidth ? mousePos.x - (desiredWidth - availableSpaceXAxis) : mousePos.x,\n y: availableSpaceYAxis < desiredHeight ? mousePos.y - (desiredHeight - availableSpaceYAxis) : mousePos.y,\n };\n }\n\n public getImageBoundingBox(): IBoundingBox {\n const imgBoundingRect: DOMRect = this.img.getBoundingClientRect();\n const bodyBoundingRect: DOMRect = document.body.getBoundingClientRect();\n return {\n [$boundingBox.x]: imgBoundingRect.x,\n [$boundingBox.y]: imgBoundingRect.y - bodyBoundingRect.y, // get Y pos relative to top of page\n [$boundingBox.width]: imgBoundingRect.width,\n [$boundingBox.height]: imgBoundingRect.height,\n };\n }\n\n public getImageSize(): IImageSize {\n const boundingBox: DOMRect = this.img.getBoundingClientRect();\n\n return {\n original: {\n width: this.img.naturalWidth,\n height: this.img.naturalHeight,\n },\n actual: {\n width: boundingBox.width,\n height: boundingBox.height,\n },\n };\n }\n\n public getImageScale(): IImageScale {\n const imgSize: IImageSize = this.getImageSize();\n return this.computeCoefficients(imgSize);\n }\n\n public computeCoefficients(imgSize: IImageSize): IImageScale {\n return {\n heightCoefficient: imgSize.actual.height / imgSize.original.height,\n widthCoefficient: imgSize.actual.width / imgSize.original.width,\n };\n }\n\n public isBoxValid(box: IBoundingBox): boolean {\n const imgSize: IImageSize = this.getImageSize();\n\n const isValidSize: boolean = box.width >= MIN_HIGHLIGHT_SIZE && box.height >= MIN_HIGHLIGHT_SIZE;\n\n const isInsideImageBounds: boolean =\n box.x >= 0 && box.x + box.width <= imgSize.actual.width && box.y >= 0 && box.y + box.height <= imgSize.actual.height;\n\n return isValidSize && isInsideImageBounds;\n }\n\n public computePossibleBoundingBoxFromPoint(mousePos: IPoint): IBoundingBox {\n const box: IBoundingBox = {\n x: DEFAULT_HIGHLIGHT_POSITION.x,\n y: DEFAULT_HIGHLIGHT_POSITION.y,\n width: DEFAULT_HIGHLIGHT_WIDTH,\n height: DEFAULT_HIGHLIGHT_HEIGHT,\n };\n const imgBoundingBox: IBoundingBox = this.getImageBoundingBox();\n\n if (!this.pointIntersectsBox(mousePos, imgBoundingBox)) {\n return box;\n }\n\n let candidatePoint: IPoint = this.addMarginToPoint(mousePos, imgBoundingBox);\n if (this.imgCanFitBox(candidatePoint, imgBoundingBox)) {\n box.x = candidatePoint.x - imgBoundingBox.x;\n box.y = candidatePoint.y - imgBoundingBox.y;\n } else {\n candidatePoint = this.adjustPosToFitBox(candidatePoint, imgBoundingBox);\n\n if (candidatePoint.x - imgBoundingBox.x < 0) {\n candidatePoint.x = DEFAULT_HIGHLIGHT_POSITION.x;\n }\n\n if (candidatePoint.y - imgBoundingBox.y < 0) {\n candidatePoint.y = DEFAULT_HIGHLIGHT_POSITION.y;\n }\n\n candidatePoint = this.addMarginToPoint(candidatePoint, imgBoundingBox);\n box.x = candidatePoint.x - imgBoundingBox.x;\n box.y = candidatePoint.y - imgBoundingBox.y;\n\n if (candidatePoint.x + DEFAULT_HIGHLIGHT_WIDTH >= imgBoundingBox.x + imgBoundingBox.width) {\n box.width = imgBoundingBox.width - 2 * DEFAULT_HIGHLIGHT_MARGIN;\n }\n\n if (candidatePoint.y + DEFAULT_HIGHLIGHT_HEIGHT >= imgBoundingBox.y + imgBoundingBox.height) {\n box.height = imgBoundingBox.height - 2 * DEFAULT_HIGHLIGHT_MARGIN;\n }\n }\n\n return box;\n }\n\n public getAllowedCoordinates({ point, highlight }: { point: IPoint; highlight: IHighlight }): IPoint {\n const offsetRight: number = this.getImageSize().actual.width - (point.x + highlight.width);\n const offsetBottom: number = this.getImageSize().actual.height - (point.y + highlight.height);\n const safeLimitRight: number = this.getImageSize().actual.width - highlight.width;\n const safeLimitBottom: number = this.getImageSize().actual.height - highlight.height;\n\n if (point.x < 0) {\n point.x = 0;\n }\n\n if (offsetRight < 0) {\n point.x = safeLimitRight;\n }\n\n if (offsetBottom < 0) {\n point.y = safeLimitBottom;\n }\n\n if (point.y < 0) {\n point.y = 0;\n }\n\n return point;\n }\n\n public getMouseAllowedCoordinates(\n currentMousePoint: IPoint,\n boxRelativeDistanceToMouseInitialPosition: IPoint,\n selectedBox: IHighlight,\n ): IPoint {\n const point: IPoint = {\n x: currentMousePoint.x - boxRelativeDistanceToMouseInitialPosition.x,\n y: currentMousePoint.y - boxRelativeDistanceToMouseInitialPosition.y,\n };\n return this.getAllowedCoordinates({ point, highlight: selectedBox });\n }\n\n public getKeyboardAllowedCoordinates(movedHighlight: IHighlight, highlight: IHighlight): IPoint {\n if (movedHighlight && this.isBoxValid(movedHighlight)) {\n return movedHighlight;\n }\n\n const point: IPoint = {\n x: movedHighlight.x,\n y: movedHighlight.y,\n };\n\n return this.getAllowedCoordinates({ point, highlight });\n }\n}\n","import { IHighlightDisplayOptions, IPoint } from '../../interfaces/image-highlight.interface';\nimport { IBoundingBox } from '../../../../shared/interfaces/design-review.interface';\nimport { BoxPositions } from '../../constants/image-highlight.constants';\n\nexport class HighlightMouseHelper {\n constructor(private highlightDisplayOptions: IHighlightDisplayOptions) {}\n\n public isMouseInsideHighlightBounds(box: IBoundingBox, point: IPoint): boolean {\n return point.x >= box.x && point.x <= box.x + box.width && point.y >= box.y && point.y <= box.y + box.height;\n }\n\n public getCoordinatesFromMouseEvent(event: MouseEvent): IPoint {\n return {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n public getBoxPosition(mousePoint: IPoint, selectedBox: IBoundingBox): BoxPositions | null {\n const topLeftResizeBox: IBoundingBox = {\n x: selectedBox.x - this.highlightDisplayOptions.resizeRectSize,\n y: selectedBox.y - this.highlightDisplayOptions.resizeRectSize,\n width: this.highlightDisplayOptions.resizeRectSize * 2,\n height: this.highlightDisplayOptions.resizeRectSize * 2,\n };\n\n const topRightResizeBox: IBoundingBox = {\n x: selectedBox.x + selectedBox.width - this.highlightDisplayOptions.resizeRectSize,\n y: selectedBox.y - this.highlightDisplayOptions.resizeRectSize,\n width: this.highlightDisplayOptions.resizeRectSize * 2,\n height: this.highlightDisplayOptions.resizeRectSize * 2,\n };\n\n const bottomLeftResizeBox: IBoundingBox = {\n x: selectedBox.x - this.highlightDisplayOptions.resizeRectSize,\n y: selectedBox.y + selectedBox.height - this.highlightDisplayOptions.resizeRectSize,\n width: this.highlightDisplayOptions.resizeRectSize * 2,\n height: this.highlightDisplayOptions.resizeRectSize * 2,\n };\n\n const bottomRightResizeBox: IBoundingBox = {\n x: selectedBox.x + selectedBox.width - this.highlightDisplayOptions.resizeRectSize,\n y: selectedBox.y + selectedBox.height - this.highlightDisplayOptions.resizeRectSize,\n width: this.highlightDisplayOptions.resizeRectSize * 2,\n height: this.highlightDisplayOptions.resizeRectSize * 2,\n };\n\n if (this.isMouseInsideHighlightBounds(topLeftResizeBox, mousePoint)) {\n return BoxPositions.topLeft;\n }\n\n if (this.isMouseInsideHighlightBounds(topRightResizeBox, mousePoint)) {\n return BoxPositions.topRight;\n }\n\n if (this.isMouseInsideHighlightBounds(bottomLeftResizeBox, mousePoint)) {\n return BoxPositions.bottomLeft;\n }\n\n if (this.isMouseInsideHighlightBounds(bottomRightResizeBox, mousePoint)) {\n return BoxPositions.bottomRight;\n }\n\n return null;\n }\n\n public getResizedBoxBasedOnMousePoint(\n currentMousePoint: IPoint,\n selectedBox: IBoundingBox,\n boxPosition: BoxPositions,\n initialBoxSize: IBoundingBox,\n ): IBoundingBox {\n const getNewHeightAccountingForCurrentMousePointAtBottomPosition = (): number => currentMousePoint.y - initialBoxSize.y;\n\n const getNewHeightAccountingForCurrentMousePointAtTopPosition = (): number =>\n initialBoxSize.height + (initialBoxSize.y - currentMousePoint.y);\n\n const getNewWidthAccountingForCurrentMousePointAtRightPosition = (): number => currentMousePoint.x - initialBoxSize.x;\n\n const getNewWidthAccountingForCurrentMousePointAtLeftPosition = (): number =>\n initialBoxSize.width + (initialBoxSize.x - currentMousePoint.x);\n\n let newWidth: number = selectedBox.width;\n let newheight: number = selectedBox.height;\n let newX: number = selectedBox.x;\n let newY: number = selectedBox.y;\n\n switch (boxPosition) {\n case BoxPositions.topLeft:\n newX = currentMousePoint.x;\n newY = currentMousePoint.y;\n newWidth = getNewWidthAccountingForCurrentMousePointAtLeftPosition();\n newheight = getNewHeightAccountingForCurrentMousePointAtTopPosition();\n break;\n case BoxPositions.topRight:\n newX = initialBoxSize.x;\n newY = currentMousePoint.y;\n newWidth = getNewWidthAccountingForCurrentMousePointAtRightPosition();\n newheight = getNewHeightAccountingForCurrentMousePointAtTopPosition();\n break;\n case BoxPositions.bottomLeft:\n newX = currentMousePoint.x;\n newY = initialBoxSize.y;\n newWidth = getNewWidthAccountingForCurrentMousePointAtLeftPosition();\n newheight = getNewHeightAccountingForCurrentMousePointAtBottomPosition();\n break;\n case BoxPositions.bottomRight:\n newX = initialBoxSize.x;\n newY = initialBoxSize.y;\n newWidth = getNewWidthAccountingForCurrentMousePointAtRightPosition();\n newheight = getNewHeightAccountingForCurrentMousePointAtBottomPosition();\n break;\n\n default:\n console.error('[resizeSelectedBoxBasedOnMousePoint] invalid boxResizingFromPosition value', boxPosition);\n break;\n }\n\n return {\n x: newX,\n y: newY,\n width: newWidth,\n height: newheight,\n };\n }\n}\n","import { clone } from 'lodash';\n\nimport { IHighlight } from '../../interfaces/image-highlight.interface';\nimport { MovementDirection } from '../../constants/image-highlight.constants';\nimport { $boundingBox } from '../../../../shared/constants/design-review';\n\nconst DIRECTIONS_MAP: Partial>>> = {\n [MovementDirection.ArrowDown]: {\n [MovementDirection.ArrowLeft]: MovementDirection.ArrowDownLeft,\n [MovementDirection.ArrowRight]: MovementDirection.ArrowDownRight,\n },\n [MovementDirection.ArrowUp]: {\n [MovementDirection.ArrowLeft]: MovementDirection.ArrowUpLeft,\n [MovementDirection.ArrowRight]: MovementDirection.ArrowUpRight,\n },\n [MovementDirection.ArrowLeft]: {\n [MovementDirection.ArrowUp]: MovementDirection.ArrowUpLeft,\n [MovementDirection.ArrowDown]: MovementDirection.ArrowDownLeft,\n },\n [MovementDirection.ArrowRight]: {\n [MovementDirection.ArrowUp]: MovementDirection.ArrowUpRight,\n [MovementDirection.ArrowDown]: MovementDirection.ArrowDownRight,\n },\n};\n\nexport class HighlightActionsHelper {\n public getCombinedDirection(mainDirection: MovementDirection, otherDirection: MovementDirection): MovementDirection {\n if (!otherDirection) {\n return mainDirection;\n }\n\n const direction: MovementDirection | undefined = DIRECTIONS_MAP[mainDirection]?.[otherDirection];\n\n return direction ?? mainDirection;\n }\n\n public moveHighlight(input: IHighlight, direction: MovementDirection, amount: number): IHighlight {\n const result: IHighlight = clone(input);\n switch (direction) {\n case MovementDirection.ArrowUp:\n result[$boundingBox.y] -= amount;\n break;\n case MovementDirection.ArrowDown:\n result[$boundingBox.y] += amount;\n break;\n case MovementDirection.ArrowLeft:\n result[$boundingBox.x] -= amount;\n break;\n case MovementDirection.ArrowRight:\n result[$boundingBox.x] += amount;\n break;\n case MovementDirection.ArrowUpLeft:\n result[$boundingBox.x] -= amount;\n result[$boundingBox.y] -= amount;\n break;\n case MovementDirection.ArrowUpRight:\n result[$boundingBox.x] += amount;\n result[$boundingBox.y] -= amount;\n break;\n case MovementDirection.ArrowDownLeft:\n result[$boundingBox.x] -= amount;\n result[$boundingBox.y] += amount;\n break;\n case MovementDirection.ArrowDownRight:\n result[$boundingBox.x] += amount;\n result[$boundingBox.y] += amount;\n break;\n default:\n return result;\n }\n return result;\n }\n\n public resizeHighlight(input: IHighlight, direction: MovementDirection, amount: number): IHighlight {\n const result: IHighlight = clone(input);\n switch (direction) {\n case MovementDirection.ArrowUp:\n result[$boundingBox.height] -= amount;\n break;\n case MovementDirection.ArrowRight:\n result[$boundingBox.width] += amount;\n break;\n case MovementDirection.ArrowDown:\n result[$boundingBox.height] += amount;\n break;\n case MovementDirection.ArrowLeft:\n result[$boundingBox.width] -= amount;\n break;\n case MovementDirection.ArrowUpLeft:\n result[$boundingBox.height] -= amount;\n result[$boundingBox.width] -= amount;\n break;\n case MovementDirection.ArrowUpRight:\n result[$boundingBox.height] -= amount;\n result[$boundingBox.width] += amount;\n break;\n case MovementDirection.ArrowDownLeft:\n result[$boundingBox.height] += amount;\n result[$boundingBox.width] -= amount;\n break;\n case MovementDirection.ArrowDownRight:\n result[$boundingBox.height] += amount;\n result[$boundingBox.width] += amount;\n break;\n default:\n return result;\n }\n return result;\n }\n}\n","import { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { IHighlight, IHighlightFinding } from '../../interfaces/image-highlight.interface';\nimport { NotificationService } from '../../services/notification.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { NotificationPosition } from '../../models/notification.model';\n\nexport class HighlightCopyPasteHelper {\n private selectedHighlight: IHighlight;\n private selectedFinding: IHighlightFinding;\n\n constructor(\n private notificationService: NotificationService,\n private translateService: TranslateService,\n ) {}\n\n public copy(selectedBox: IHighlight, finding?: IHighlightFinding): void {\n if (SharedCommonUtility.isNullishOrEmpty(selectedBox.findings)) {\n return;\n }\n\n this.selectedHighlight = selectedBox;\n this.selectedFinding = finding;\n\n if (this.selectedHighlight.findings.length === 1 || SharedCommonUtility.notNullish(finding)) {\n this.notificationService.success(this.translateService.instant('finding_copied'), NotificationPosition.Toast);\n } else {\n this.notificationService.success(this.translateService.instant('findings_copied'), NotificationPosition.Toast);\n }\n }\n\n public paste(action: (highlightId: string, findingId?: string) => void): void {\n if (!this.selectedHighlight) {\n return;\n }\n\n action(this.selectedHighlight._id, this.selectedFinding?._id);\n\n if (this.selectedHighlight.findings.length === 1 || SharedCommonUtility.notNullish(this.selectedFinding)) {\n this.notificationService.success(this.translateService.instant('finding_pasted'), NotificationPosition.Toast);\n } else {\n this.notificationService.success(this.translateService.instant('findings_pasted'), NotificationPosition.Toast);\n }\n }\n}\n","\n
\n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n\n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {{ finding.index + 1 }}\n \n\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n {{ 'add_finding_action' | translate }}\n \n \n \n \n \n \n
\n\n\n\n
\n
\n \n \n \n
\n \n {{ 'global_finding' | translate }}\n \n
\n
\n \n \n \n
\n
\n \n {{ 'edit_finding_design_review' | translate }}\n \n \n \n \n \n {{ 'remove_finding' | translate }}\n \n \n \n \n
\n
\n\n \n \n \n {{ 'close_popover' | translate }}\n \n \n
\n","import {\n ApplicationRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgbPopover } from '@ng-bootstrap/ng-bootstrap';\nimport { clone, cloneDeep, find, isUndefined, sortBy } from 'lodash';\nimport { combineLatest, Observable, of, ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime, delay, filter, first, map, shareReplay } from 'rxjs/operators';\nimport { IBoundingBox } from '../../../../shared/interfaces/design-review.interface';\nimport { DEBOUNCE_TIME } from '../../shared/constants';\n\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport {\n getFindingNumberBox,\n getActionBox,\n highlightNumberCornerRadius,\n highlightNumberDistanceFromHighlight,\n highlightNumberRectStrokeWidth,\n highlightNumberSize,\n inlineFocusOffset,\n} from '../../../../shared/utils/image-highlighter.utility';\nimport {\n BoxPositions,\n HighlightModes,\n ImageHighlightModes,\n ImageHighlightStates,\n MovementDirection,\n MovementSpeed,\n EventKeys,\n} from '../../constants/image-highlight.constants';\nimport {\n ICoordinates,\n IHighlight,\n IHighlightCopy,\n IHighlightDisplayOptions,\n IHighlightFinding,\n IImageScale,\n IImageSize,\n IPoint,\n ISpatialChange,\n} from '../../interfaces/image-highlight.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { $boundingBox } from '../../../../shared/constants/design-review';\nimport { HighlightImgHelper } from './highlight-img.helper';\nimport { HighlightMouseHelper } from './highlight-mouse.helper';\nimport { HighlightActionsHelper } from './highlight-actions.helper';\nimport { HighlightCopyPasteHelper } from './highlight-copy-paste.helper';\nimport { NotificationService } from '../../services/notification.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { Icons } from '../../shared/eap-icons.component';\n\nenum tabbablePopoverItems {\n link = 'popover-link',\n deleteButton = 'popover-delete',\n}\n\n@Component({\n selector: 'app-image-highlighter',\n templateUrl: './image-highlighter.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./image-highlighter.component.scss'],\n})\nexport class ImageHighlighterComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n private isMouseDown: boolean;\n private newHighlightCoordinates: ICoordinates;\n private imageEditingState: ImageHighlightStates;\n private componentReady$: Observable;\n private absoluteMousePosition: IPoint = { x: 0, y: 0 };\n private _imgHelper: HighlightImgHelper;\n private _mouseHelper: HighlightMouseHelper;\n private _actionsHelper: HighlightActionsHelper;\n\n @ViewChild('highlightRects')\n private highlightRects: ElementRef;\n\n @ViewChild('img')\n public imageElement: ElementRef;\n\n public imageLoaded$: EventEmitter;\n public originalBoxes: IHighlight[] = [];\n public imageHighlightModes: typeof ImageHighlightModes = ImageHighlightModes;\n public highlightModes: typeof HighlightModes = HighlightModes;\n public highlights: IHighlight[] = [];\n public findingsLength: number = 0;\n public newBox: IHighlight;\n public selectedBox: IHighlight;\n public selectedFinding: IHighlightFinding;\n public boxRelativeDistanceToMouseInitialPosition: IPoint;\n public boxInitialPositionAndSizeBeforeResize: IHighlight;\n public boxResizingFromPosition: BoxPositions;\n public $imageHighlightModes: typeof ImageHighlightModes;\n public focusSettingEventEmitter: EventEmitter;\n public tabbablePopoverItems: typeof tabbablePopoverItems = tabbablePopoverItems;\n public MovementDirection: typeof MovementDirection;\n public MovementSpeed: typeof MovementSpeed;\n public Icons: typeof Icons;\n\n @Input()\n public startingIndex: number = 0;\n\n @Input()\n public screenshotPath$: Observable = of('');\n @Input()\n public originalBoxes$: Observable[]> = of([]);\n @Input()\n public findingToFocus$: Observable> = of(null);\n\n @Input()\n public mode: ImageHighlightModes;\n\n @Input()\n public showPopoverButtonTray: boolean;\n\n @Input()\n public showPopoverEditButton: boolean;\n\n @Input()\n public showPopoverRemoveButton: boolean;\n\n @Output()\n public onHighlightCreated: EventEmitter> = new EventEmitter();\n\n @Output()\n public onHighlightEdited: EventEmitter> = new EventEmitter>();\n\n @Output()\n public onHighlightSelected: EventEmitter> = new EventEmitter>();\n\n @Output()\n public onFindingSelected: EventEmitter> = new EventEmitter>();\n\n @Output()\n public onFindingEditButtonClicked: EventEmitter = new EventEmitter();\n\n @Output()\n public onFindingDeleteButtonClicked: EventEmitter = new EventEmitter();\n\n @Output()\n public onCopyHighlight: EventEmitter = new EventEmitter();\n\n @Output()\n public onOriginalWidthSet: ReplaySubject = new ReplaySubject();\n\n @Output()\n public onAddToHighlight: EventEmitter> = new EventEmitter>();\n\n /**\n * used to signalize to the parent component, that the highlighted rectangle has changed in position or size,\n * requesting that the parent scrolls the viewport by the specific amount if applicable\n *\n * WHY this is used? the element.scrollToView method works fine for vertical scrolling, but fails for horizontal, that's\n * why we have to use this weird emitter, so that the parent can do the horizontal scroll manually\n */\n @Output()\n public onSpatialChange: EventEmitter = new EventEmitter();\n\n public highlightDisplayOptions: IHighlightDisplayOptions = {\n resizeRectSize: 8,\n outlineBorderOffset: 4,\n highlightNumberSize,\n highlightNumberDistanceFromHighlight,\n highlightNumberRectStrokeWidth,\n highlightNumberCornerRadius,\n inlineFocusOffset,\n };\n private otherDirection: MovementDirection;\n private copyPasteHelper: HighlightCopyPasteHelper;\n\n constructor(\n private modalService: ModalService,\n private applicationRef: ApplicationRef,\n notificationService: NotificationService,\n protected translateService: TranslateService,\n ) {\n this.focusSettingEventEmitter = new EventEmitter();\n this.imageEditingState = ImageHighlightStates.noop;\n this.subscription = new Subscription();\n this.imageLoaded$ = new EventEmitter();\n this.$imageHighlightModes = ImageHighlightModes;\n this.MovementDirection = MovementDirection;\n this.MovementSpeed = MovementSpeed;\n this.copyPasteHelper = new HighlightCopyPasteHelper(notificationService, translateService);\n this.Icons = Icons;\n }\n\n public get imgHelper(): HighlightImgHelper {\n if (!this._imgHelper) {\n this._imgHelper = new HighlightImgHelper(this.imageElement.nativeElement);\n }\n\n return this._imgHelper;\n }\n\n public get mouseHelper(): HighlightMouseHelper {\n if (!this._mouseHelper) {\n this._mouseHelper = new HighlightMouseHelper(this.highlightDisplayOptions);\n }\n\n return this._mouseHelper;\n }\n\n public get actionsHelper(): HighlightActionsHelper {\n if (!this._actionsHelper) {\n this._actionsHelper = new HighlightActionsHelper();\n }\n\n return this._actionsHelper;\n }\n\n private getReverseScaleBoundingBox(box: IHighlight): IHighlight {\n const scale: IImageScale = this.imgHelper.getImageScale();\n return {\n ...box,\n height: box.height * (1 / scale.heightCoefficient),\n width: box.width * (1 / scale.widthCoefficient),\n x: box.x * (1 / scale.widthCoefficient),\n y: box.y * (1 / scale.heightCoefficient),\n };\n }\n\n private scaleBoundingBoxes(boxes: IHighlight[], scale: IImageScale): IHighlight[] {\n return boxes.map((box: IHighlight): IHighlight => {\n return {\n ...box,\n height: box.height * scale.heightCoefficient,\n width: box.width * scale.widthCoefficient,\n x: box.x * scale.widthCoefficient,\n y: box.y * scale.heightCoefficient,\n };\n });\n }\n\n private setNumberRectAndIndex(lastFindingIndex: number, highlight: IHighlight): number {\n const imgSize: IImageSize = this.imgHelper.getImageSize();\n let _lastFindingIndex: number = lastFindingIndex;\n let intermediaryIndex: number;\n highlight.index = _lastFindingIndex;\n this.initializeHighlightAction(highlight);\n\n highlight.findings.forEach((finding: IHighlightFinding, findingIndex: number) => {\n intermediaryIndex = findingIndex;\n finding.numberBox = getFindingNumberBox(highlight, highlight.findings.length, findingIndex, imgSize.actual.width);\n finding.index = _lastFindingIndex++;\n });\n\n highlight.action.box = getActionBox(highlight, highlight.findings.length, intermediaryIndex, imgSize.actual.width);\n\n return _lastFindingIndex;\n }\n\n /**\n * Initializes highlight action attribute, so that it can be set\n *\n * @param highlight\n * @private\n */\n private initializeHighlightAction(highlight: IHighlight): void {\n if (isUndefined(highlight.action)) {\n highlight.action = {\n box: {\n [$boundingBox.x]: 0,\n [$boundingBox.y]: 0,\n [$boundingBox.height]: 0,\n [$boundingBox.width]: 0,\n },\n isSelected: false,\n isFocused: false,\n };\n }\n }\n\n private setNumberRectAndIndexToHighlights(highlights: IHighlight[]): void {\n highlights.reduce(this.setNumberRectAndIndex.bind(this), this.startingIndex);\n }\n\n private sortByTopLeftPosition(boxes: IHighlight[]): IHighlight[] {\n return sortBy(boxes, [(box: IHighlight): number => box.y, (box: IHighlight): number => box.x]);\n }\n\n private getHighlightsWithViewMode(boxes: IHighlight[]): IHighlight[] {\n return boxes.map(\n (box: IHighlight): IHighlight => ({\n ...box,\n isSelected: box._id === this.selectedBox?._id,\n mode: box._id === this.selectedBox?._id ? this.selectedBox.mode : HighlightModes.view,\n }),\n );\n }\n\n private getAdjustedDrawnCoordinates(): ICoordinates {\n const clonedCoordinates: ICoordinates = clone(this.newHighlightCoordinates);\n\n if (clonedCoordinates.x2 < clonedCoordinates.x1) {\n [clonedCoordinates.x2, clonedCoordinates.x1] = [clonedCoordinates.x1, clonedCoordinates.x2];\n }\n\n if (clonedCoordinates.y2 < clonedCoordinates.y1) {\n [clonedCoordinates.y1, clonedCoordinates.y2] = [clonedCoordinates.y2, clonedCoordinates.y1];\n }\n\n return clonedCoordinates;\n }\n\n private updateBoxCoordinates(box: IHighlight, currentMouseCoordinates: IPoint): void {\n box.x = currentMouseCoordinates.x;\n box.y = currentMouseCoordinates.y;\n this.setNumberRectAndIndex(box.index, box);\n }\n\n private updateBoxSize(box: IBoundingBox, width: number, height: number): void {\n box.width = width;\n box.height = height;\n }\n\n private updateNewBoxCoordinates(currentMouseCoordinates: IPoint): void {\n const { x, y } = currentMouseCoordinates;\n if (SharedCommonUtility.isNullish(this.newHighlightCoordinates)) {\n return;\n }\n\n this.newHighlightCoordinates.x2 = x;\n this.newHighlightCoordinates.y2 = y;\n\n const coordinates: ICoordinates = this.getAdjustedDrawnCoordinates();\n this.newBox.x = coordinates.x1;\n this.newBox.y = coordinates.y1;\n this.newBox.width = coordinates.x2 - coordinates.x1;\n this.newBox.height = coordinates.y2 - coordinates.y1;\n }\n\n private onAddStart({ x, y }: IPoint): void {\n this.imageEditingState = ImageHighlightStates.adding;\n\n this.newHighlightCoordinates = {\n x1: x,\n y1: y,\n x2: x,\n y2: y,\n };\n\n const box: IBoundingBox = {\n x: this.newHighlightCoordinates.x1,\n y: this.newHighlightCoordinates.y1,\n width: 0,\n height: 0,\n };\n\n this.newBox = {\n ...box,\n _id: null,\n isSelected: null,\n data: null,\n mode: HighlightModes.view,\n };\n }\n\n private onStartMovingHighlight(point: IPoint): void {\n this.imageEditingState = ImageHighlightStates.moving;\n this.boxRelativeDistanceToMouseInitialPosition = {\n x: point.x - this.selectedBox.x,\n y: point.y - this.selectedBox.y,\n };\n }\n\n private onStartResizingHighlight(point: IPoint): void {\n this.imageEditingState = ImageHighlightStates.resizing;\n\n this.boxInitialPositionAndSizeBeforeResize = clone>(this.selectedBox);\n }\n\n private resizeSelectedBoxBasedOnMousePoint(currentMousePoint: IPoint): void {\n const resizedBox: IBoundingBox = this.mouseHelper.getResizedBoxBasedOnMousePoint(\n currentMousePoint,\n this.selectedBox,\n this.boxResizingFromPosition,\n this.boxInitialPositionAndSizeBeforeResize,\n );\n\n if (this.imgHelper.isBoxValid(resizedBox)) {\n this.updateBoxSize(this.selectedBox, resizedBox[$boundingBox.width], resizedBox[$boundingBox.height]);\n this.updateBoxCoordinates(this.selectedBox, { x: resizedBox[$boundingBox.x], y: resizedBox[$boundingBox.y] });\n }\n }\n\n private handleMouseMoveOnEdit(currentMousePoint: IPoint): void {\n if (this.imageEditingState === ImageHighlightStates.moving) {\n const point: IPoint = this.imgHelper.getMouseAllowedCoordinates(\n currentMousePoint,\n this.boxRelativeDistanceToMouseInitialPosition,\n this.selectedBox,\n );\n\n this.updateBoxCoordinates(this.selectedBox, point);\n }\n\n if (this.imageEditingState === ImageHighlightStates.resizing) {\n this.resizeSelectedBoxBasedOnMousePoint(currentMousePoint);\n }\n }\n\n private get isEditingImage(): boolean {\n return this.imageEditingState === ImageHighlightStates.moving || this.imageEditingState === ImageHighlightStates.resizing;\n }\n\n private handleMouseMoveUpEdit(currentMousePoint: IPoint): void {\n if (this.isEditingImage) {\n const rescaledBox: IHighlight = this.getReverseScaleBoundingBox(this.selectedBox);\n this.onHighlightEdited.emit(rescaledBox);\n this.onHighlightSelected.next(rescaledBox);\n this.selectedFinding = null;\n this.onFindingSelected.next(null);\n }\n\n this.boxRelativeDistanceToMouseInitialPosition = null;\n this.imageEditingState = ImageHighlightStates.noop;\n }\n\n private handleMouseMoveOnAdd(currentMouseCoordinates: IPoint, copyHighlightId?: string, findingId?: string): void {\n this.updateNewBoxCoordinates(currentMouseCoordinates);\n if (this.imgHelper.isBoxValid(this.newBox)) {\n this.newBox = this.getReverseScaleBoundingBox(this.newBox);\n this.newBox.mode = HighlightModes.view;\n if (copyHighlightId) {\n this.onCopyHighlight.emit({ ...this.newBox, highlightId: copyHighlightId, findingId: findingId });\n } else {\n this.onHighlightCreated.emit(this.newBox);\n }\n this.selectHighlight(this.newBox);\n }\n\n this.redraw();\n this.newBox = null;\n this.imageEditingState = ImageHighlightStates.noop;\n }\n\n private unselectAllHighlightsExcept(selectedHighlight: IHighlight): void {\n this.highlights.forEach((highlight: IHighlight) => {\n if (selectedHighlight?._id === highlight._id) {\n return;\n }\n highlight.isSelected = false;\n highlight.isFocused = false;\n highlight.mode = HighlightModes.view;\n highlight.isAction = false;\n });\n }\n\n private unselectAllFindings(): void {\n this.highlights.forEach((highlight: IHighlight) => {\n highlight.findings.forEach((finding: IHighlightFinding) => {\n finding.isSelected = false;\n finding.isFocused = false;\n finding.highlight.mode = HighlightModes.view;\n finding.highlight.isSelected = false;\n });\n });\n }\n\n private unselectAllFindingsExcept(selectedFinding: IHighlightFinding): void {\n this.highlights.forEach((highlight: IHighlight) => {\n highlight.findings.forEach((finding: IHighlightFinding) => {\n if (selectedFinding?._id === finding._id) {\n return;\n }\n finding.isSelected = false;\n finding.isFocused = false;\n finding.highlight.mode = HighlightModes.view;\n finding.highlight.isSelected = false;\n });\n });\n }\n\n private getHighlightClickableRect(highlight: IHighlight): SVGRectElement {\n return this.highlightRects.nativeElement.querySelector(`g[id='${highlight._id}'] rect.clickable`);\n }\n\n private getFindingClickableRect(finding: IHighlightFinding): SVGRectElement {\n return this.highlightRects.nativeElement.querySelector(`g[id='${finding._id}'] rect.clickable`);\n }\n\n private selectFinding(finding: IHighlightFinding): void {\n const clickableRect: SVGRectElement = this.getFindingClickableRect(finding);\n clickableRect?.dispatchEvent(new Event('click'));\n clickableRect?.focus();\n }\n\n public focusOnFinding(finding: IHighlightFinding): void {\n const clickableRect: SVGRectElement = this.getFindingClickableRect(finding);\n clickableRect?.focus();\n }\n\n private subscribeToHighlightFocus(): void {\n const focusSubscription = combineLatest([this.componentReady$.pipe(delay(0)), this.findingToFocus$])\n .pipe(\n filter(([isComponentReady, highlight]: [boolean, IHighlightFinding]) => {\n return isComponentReady && SharedCommonUtility.notNullish(highlight);\n }),\n map(([_, finding]: [boolean, IHighlightFinding]) => finding),\n )\n .subscribe({\n next: (finding: IHighlightFinding) => {\n this.selectFinding(finding);\n },\n });\n\n this.subscription.add(focusSubscription);\n }\n\n private createComponentReadyObservable(): void {\n this.componentReady$ = combineLatest([this.imageLoaded$, this.screenshotPath$]).pipe(\n filter(([isImageLoaded, screenshotPath]: [boolean, string]) => {\n return isImageLoaded === true && SharedCommonUtility.notNullishOrEmpty(screenshotPath);\n }),\n debounceTime(DEBOUNCE_TIME),\n map(([]: [boolean, string]) => true),\n shareReplay(1),\n first(),\n );\n }\n\n public onFindingMouseDown(event: MouseEvent, finding: IHighlightFinding): void {\n this.isMouseDown = true;\n }\n\n private addHighlight(highlightId?: string, findingId?: string): void {\n this.imageEditingState = ImageHighlightStates.adding;\n const box: IBoundingBox = this.imgHelper.computePossibleBoundingBoxFromPoint(this.absoluteMousePosition);\n\n this.selectedBox = null;\n this.onHighlightSelected.next(null);\n this.onFindingSelected.next(null);\n this.newHighlightCoordinates = { x1: box.x, y1: box.y, x2: box.x, y2: box.y };\n this.newBox = { ...box, _id: null, isSelected: null, data: null, mode: HighlightModes.view };\n this.handleMouseMoveOnAdd({ x: box.x + box.width, y: box.y + box.height }, highlightId, findingId);\n }\n\n private scrollToElement(element: Element): void {\n element.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }\n\n private selectHighlight(highlight: IHighlight): void {\n if (SharedCommonUtility.notNullish(highlight) && !highlight.isAction) {\n highlight.isAction = true;\n }\n\n this.selectedBox = highlight;\n this.selectedBox.mode = HighlightModes.edit;\n this.selectedBox.isSelected = true;\n this.unselectAllHighlightsExcept(this.selectedBox);\n // by now the highlight isn't drawn on screen yet, that's we need to wait for next tick to focus it\n this.applicationRef.tick();\n this.getHighlightClickableRect(highlight)?.focus();\n this.selectedBox.isFocused = true;\n this.onHighlightSelected.next(this.selectedBox);\n }\n\n public get tooltipPlacement(): string {\n return window.innerWidth > 500 ? 'auto' : 'center';\n }\n\n public setFindingsLength(highlights: IHighlight[]): void {\n if (!highlights) {\n return;\n }\n\n this.findingsLength = 0;\n\n highlights.forEach((highlight: IHighlight) => {\n this.findingsLength += highlight.findings?.length;\n });\n }\n\n public onHighlightMouseDown(event: MouseEvent, highlight: IHighlight): void {\n this.isMouseDown = true;\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n\n // specifically handling the case, when already editing a highlight (especially with keyboard) and user selects\n // a different highlight -> should save the previous highlight, deselect it and then select the new one\n if (this.isEditingImage && highlight._id !== this.selectedBox._id) {\n this.finishEditingSelectedBox();\n }\n\n if (this.canEdit(highlight)) {\n this.selectHighlight(highlight);\n\n const currentMouseCoordinates: IPoint = this.mouseHelper.getCoordinatesFromMouseEvent(event);\n\n const boxPosition: BoxPositions | null = this.mouseHelper.getBoxPosition(currentMouseCoordinates, this.selectedBox);\n if (boxPosition !== null) {\n this.boxResizingFromPosition = boxPosition;\n this.onStartResizingHighlight(currentMouseCoordinates);\n return;\n }\n\n const shouldMove: boolean = this.mouseHelper.isMouseInsideHighlightBounds(this.selectedBox, currentMouseCoordinates);\n\n if (shouldMove) {\n this.onStartMovingHighlight(currentMouseCoordinates);\n }\n }\n }\n\n public onMouseDown(event: MouseEvent): void {\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n\n const currentMouseCoordinates: IPoint = this.mouseHelper.getCoordinatesFromMouseEvent(event);\n\n if (this.mode === ImageHighlightModes.add) {\n this.selectedBox = null;\n this.onHighlightSelected.next(null);\n this.onFindingSelected.next(null);\n this.onAddStart(currentMouseCoordinates);\n this.isMouseDown = true;\n return;\n }\n }\n\n public onMouseMove(event: MouseEvent): void {\n if (this.isMouseDown === false) {\n return;\n }\n\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n\n const currentMouseCoordinates: IPoint = this.mouseHelper.getCoordinatesFromMouseEvent(event);\n\n if (this.mode === ImageHighlightModes.add) {\n this.updateNewBoxCoordinates(currentMouseCoordinates);\n return;\n }\n\n if (this.mode === ImageHighlightModes.edit) {\n this.handleMouseMoveOnEdit(currentMouseCoordinates);\n }\n }\n\n public onMouseUp(event: MouseEvent): void {\n if (!this.isMouseDown) {\n return;\n }\n\n setTimeout(() => {\n // this is needed to prevent setting `isMouseDown` to `false`\n // until all the logic behind the `mouseDown` event is finished\n this.isMouseDown = false;\n }, 0);\n\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n\n const currentMouseCoordinates: IPoint = this.mouseHelper.getCoordinatesFromMouseEvent(event);\n\n if (this.mode === ImageHighlightModes.add) {\n this.handleMouseMoveOnAdd(currentMouseCoordinates);\n }\n\n if (this.mode === ImageHighlightModes.edit) {\n this.handleMouseMoveUpEdit(currentMouseCoordinates);\n }\n }\n\n public onMouseLeave(event: MouseEvent): void {\n this.isMouseDown = false;\n this.newHighlightCoordinates = null;\n this.newBox = null;\n this.boxRelativeDistanceToMouseInitialPosition = null;\n }\n\n public resetOtherDirection(eventKey: string): void {\n // \"Meta\" is the \"command\" button on Mac. When resizing, the last pressed eventKey on Mac is always \"Meta\"\n if (eventKey === this.otherDirection || eventKey === EventKeys.Meta) {\n this.otherDirection = null;\n }\n }\n\n public setOtherDirection(eventKey: string): void {\n if (this.otherDirection || !MovementDirection[eventKey]) {\n return;\n }\n\n this.otherDirection = eventKey as MovementDirection;\n }\n\n public onKeyboardMove(\n event: KeyboardEvent,\n highlight: IHighlight,\n direction: MovementDirection,\n speed: MovementSpeed,\n ): void {\n if (highlight.mode !== HighlightModes.edit) {\n return;\n }\n event.preventDefault();\n\n const combinedDirection: MovementDirection = this.actionsHelper.getCombinedDirection(direction, this.otherDirection);\n\n const movedHighlight: IHighlight = this.actionsHelper.moveHighlight(highlight, combinedDirection, speed);\n const point: IPoint = this.imgHelper.getKeyboardAllowedCoordinates(movedHighlight, highlight);\n\n this.onSpatialChange.emit({\n point: {\n x: point.x - highlight.x,\n y: point.y - highlight.y,\n },\n element: this.getHighlightClickableRect(highlight),\n });\n\n this.selectHighlight(highlight);\n this.updateBoxCoordinates(this.selectedBox, {\n x: point.x,\n y: point.y,\n });\n this.onHighlightSelected.next(this.selectedBox);\n this.imageEditingState = ImageHighlightStates.moving;\n }\n\n public onKeyboardResize(\n event: KeyboardEvent,\n highlight: IHighlight,\n direction: MovementDirection,\n speed: MovementSpeed,\n ): void {\n if (highlight.mode !== HighlightModes.edit) {\n return;\n }\n event.preventDefault();\n\n const combinedDirection: MovementDirection = this.actionsHelper.getCombinedDirection(direction, this.otherDirection);\n\n const resizedHighlight: IHighlight = this.actionsHelper.resizeHighlight(highlight, combinedDirection, speed);\n if (!this.imgHelper.isBoxValid(resizedHighlight)) {\n return;\n }\n\n this.onSpatialChange.emit({\n point: {\n x: resizedHighlight[$boundingBox.width] - highlight[$boundingBox.width],\n y: resizedHighlight[$boundingBox.height] - highlight[$boundingBox.height],\n },\n element: this.getHighlightClickableRect(highlight),\n });\n\n this.selectHighlight(highlight);\n this.updateBoxSize(this.selectedBox, resizedHighlight.width, resizedHighlight.height);\n this.updateBoxCoordinates(this.selectedBox, resizedHighlight);\n this.onHighlightSelected.next(this.selectedBox);\n this.imageEditingState = ImageHighlightStates.resizing;\n }\n\n public saveSelectedHighlight(): void {\n if (SharedCommonUtility.isNullish(this.selectedBox) || this.mode === ImageHighlightModes.view) {\n return;\n }\n const rescaledBoundingBox: IHighlight = this.getReverseScaleBoundingBox(this.selectedBox);\n this.onHighlightEdited.emit(rescaledBoundingBox);\n }\n\n public copySelectedHighlight(): void {\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n this.copyPasteHelper.copy(this.selectedBox);\n }\n\n public pasteSelectedHighlight(): void {\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n this.copyPasteHelper.paste((highlightId: string, findingId: string) => this.addHighlight(highlightId, findingId));\n }\n\n public copyFinding(finding: IHighlightFinding): void {\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n this.copyPasteHelper.copy(finding.highlight, finding);\n }\n\n public pasteFinding(event: any): void {\n if (this.modalService.isModalOpen()) {\n return;\n }\n\n event?.preventDefault();\n\n if (this.mode === ImageHighlightModes.view) {\n return;\n }\n this.copyPasteHelper.paste((highlightId: string, findingId: string) => this.addHighlight(highlightId, findingId));\n }\n\n private finishEditingSelectedBox(): void {\n this.selectedBox = this.getReverseScaleBoundingBox(this.selectedBox);\n this.selectedBox.mode = HighlightModes.view;\n this.onHighlightSelected.next(null);\n this.onHighlightEdited.emit(this.selectedBox);\n this.selectedBox = null;\n this.imageEditingState = ImageHighlightStates.noop;\n }\n\n public handleHighlightKeyEnterEvent(event: Event, highlight: IHighlight): void {\n event.preventDefault();\n this.triggerHighlightSelected(highlight);\n }\n\n public triggerHighlightSelected(highlight: IHighlight): void {\n if (this.mode === ImageHighlightModes.add) {\n return;\n }\n\n // if already in edit mode -> 'enter' key or selecting a different highlight means \"save current changes\"\n if (this.isEditingImage) {\n this.finishEditingSelectedBox();\n return;\n }\n\n if (this.canEdit(highlight)) {\n highlight.mode = HighlightModes.edit;\n }\n\n this.selectedBox = highlight;\n this.unselectAllHighlightsExcept(highlight);\n\n this.onHighlightSelected.next(this.getReverseScaleBoundingBox(highlight));\n }\n\n public handleFindingKeyEnterEvent(event: Event, finding: IHighlightFinding, popover: NgbPopover): void {\n event.preventDefault();\n this.triggerFindingSelected(finding, popover);\n }\n\n public triggerFindingSelected(finding: IHighlightFinding, popover: NgbPopover): void {\n if (this.mode === ImageHighlightModes.add) {\n return;\n }\n\n if (popover.isOpen()) {\n popover.close();\n finding.isFocused = true;\n finding.isSelected = true;\n } else {\n popover.open();\n finding.isFocused = false;\n finding.isSelected = true;\n }\n\n this.selectedFinding = finding;\n if (this.canEdit(finding.highlight)) {\n finding.highlight.isSelected = true;\n finding.highlight.mode = HighlightModes.edit;\n }\n\n this.unselectAllFindingsExcept(finding);\n\n this.onFindingSelected.next(finding);\n this.onHighlightSelected.next(finding.highlight);\n }\n\n public selectInput(): void {\n this.focusSettingEventEmitter.emit();\n }\n\n /**\n * Checks if passed in highlight is the action highlight\n *\n * @param highlight Highlight to check\n */\n public isActionHighlight(highlight: IHighlight): boolean {\n return highlight.isAction;\n }\n\n public onHighlightBlur(highlight: IHighlight): void {\n highlight.isFocused = false;\n }\n\n public onFindingBlur(finding: IHighlightFinding): void {\n finding.isFocused = false;\n }\n\n public onFindingReverseTab(finding: IHighlightFinding, highlight: IHighlight): void {\n if (this.isFirstFindingInHighlight(finding)) {\n highlight.isAction = false;\n }\n }\n\n /**\n * Checks if provided {finding} is the first finding for the highlight\n *\n * @param finding\n * @private\n */\n private isFirstFindingInHighlight(finding: IHighlightFinding): boolean {\n const firstFinding = finding.highlight.findings[0];\n return firstFinding._id === finding._id;\n }\n\n public onHighlightDeselect(highlight: IHighlight): void {\n highlight.isSelected = false;\n highlight.isFocused = true;\n highlight.mode = HighlightModes.view;\n this.selectedBox = null;\n this.onHighlightSelected.next(null);\n }\n\n public onFindingPopoverEscape(event: KeyboardEvent, finding: IHighlightFinding, popover: NgbPopover): void {\n if (popover.isOpen()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n popover.close();\n finding.isSelected = false;\n finding.isFocused = true;\n this.selectedFinding = null;\n\n this.unselectAllHighlightsExcept(finding.highlight);\n this.unselectAllFindings();\n\n this.focusOnFinding(finding);\n }\n }\n\n public onFindingDeselect(event: KeyboardEvent, finding: IHighlightFinding, highlight: IHighlight): void {\n if ((event.target as SVGRectElement) === this.getFindingClickableRect(finding)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (finding.isSelected) {\n finding.isSelected = false;\n }\n }\n }\n\n public onPopoverDeleteButtonClick(): void {\n this.onFindingDeleteButtonClicked.emit();\n }\n\n public onPopoverEditButtonClick(): void {\n this.onFindingEditButtonClicked.emit();\n }\n\n public onImageLoaded(): void {\n this.imageLoaded$.next(true);\n }\n\n public draw(): void {\n const boxesWithViewMode: IHighlight[] = this.getHighlightsWithViewMode(this.originalBoxes);\n const scaledBoxes: IHighlight[] = this.scaleBoundingBoxes(boxesWithViewMode, this.imgHelper.getImageScale());\n this.highlights = this.sortByTopLeftPosition(scaledBoxes);\n this.setFindingsLength(this.highlights);\n this.setNumberRectAndIndexToHighlights(this.highlights);\n this.unselectAllHighlightsExcept(this.selectedBox);\n }\n\n public redraw(): void {\n if (SharedCommonUtility.isNullish(this.imageElement)) {\n return;\n }\n\n this.draw();\n }\n\n public getResizeBoxLeftX(box: IHighlight): number {\n return box.x - this.highlightDisplayOptions.resizeRectSize / 2;\n }\n\n public getResizeBoxRightX(box: IHighlight): number {\n return box.x + box.width - this.highlightDisplayOptions.resizeRectSize / 2;\n }\n\n public getResizeBoxTopY(box: IHighlight): number {\n return box.y - this.highlightDisplayOptions.resizeRectSize / 2;\n }\n\n public getResizeBoxBottomY(box: IHighlight): number {\n return box.y + box.height - this.highlightDisplayOptions.resizeRectSize / 2;\n }\n\n public close(popover: NgbPopover): void {\n popover.close();\n }\n\n public canEdit(highlight: IHighlight): boolean {\n return this.mode === ImageHighlightModes.edit && highlight.editable === true;\n }\n\n public highlightTrackBy(index: number, item: IHighlight): string {\n return item?._id;\n }\n\n public findingTrackBy(index: number, item: IHighlightFinding): string {\n return item?._id;\n }\n\n public getScreenLabel(highlights: IHighlight[], findingsLength: number): string {\n let textKey: string;\n\n if (highlights.length === 1) {\n textKey =\n findingsLength === 1 ? 'screen_with_single_highlight_and_single_finding' : 'screen_with_single_highlight_and_n_findings';\n } else {\n textKey = findingsLength === 1 ? 'screen_with_n_highlights_and_single_finding' : 'screen_with_n_highlights_and_n_findings';\n }\n\n return this.translateService.instant(textKey, [highlights.length, findingsLength]);\n }\n\n public onHighlightFocused(event: FocusEvent, highlight: IHighlight): void {\n highlight.isFocused = true;\n highlight.action.isSelected = false;\n\n if (!highlight.isAction) {\n highlight.isAction = true;\n }\n\n if (this.isMouseDown === true) {\n return;\n }\n\n this.scrollToElement(event.target as SVGRectElement);\n }\n\n public onFindingFocused(event: Event, finding: IHighlightFinding, highlight: IHighlight): void {\n finding.isFocused = true;\n\n if (!highlight.isAction) {\n highlight.isAction = true;\n }\n\n if (this.isMouseDown === true) {\n return;\n }\n\n this.unselectAllHighlightsExcept(highlight);\n this.unselectAllFindingsExcept(finding);\n\n this.scrollToElement(event.target as SVGRectElement);\n }\n\n public subscribeToEmitOriginalWidth(): void {\n this.subscription.add(\n this.componentReady$.subscribe({\n next: () => {\n const imageSize: IImageSize = this.imgHelper.getImageSize();\n this.onOriginalWidthSet.next(imageSize.original.width);\n },\n }),\n );\n }\n\n private subscribeToHighlightChanges(): void {\n this.subscription.add(\n combineLatest([this.imageLoaded$, this.originalBoxes$])\n .pipe(\n filter(([isImageLoaded, originalBoxes]: [boolean, IHighlight[]]) => {\n return isImageLoaded === true;\n }),\n map(([_, originalBoxes]: [boolean, IHighlight[]]) => [originalBoxes]),\n )\n .subscribe({\n next: ([originalBoxes]: [IHighlight[]]) => {\n this.originalBoxes = cloneDeep(originalBoxes);\n this.redraw();\n\n const newlyAddedBox: IHighlight | null = find(originalBoxes, 'newlyAdded');\n if (SharedCommonUtility.notNullish(newlyAddedBox)) {\n this.selectHighlight(find(this.highlights, { _id: newlyAddedBox._id }));\n }\n },\n }),\n );\n }\n\n public updateAbsoluteMousePosition(event: MouseEvent): void {\n this.absoluteMousePosition = {\n x: event.pageX,\n y: event.pageY,\n };\n }\n\n private isInputElementActive(): boolean {\n const tagName: string = document.activeElement.tagName.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n }\n\n @HostListener('document:keydown.N')\n public addHighlightHotkey(): void {\n if (this.mode !== ImageHighlightModes.add || this.isInputElementActive() || this.modalService.isModalOpen()) {\n return;\n }\n this.addHighlight();\n }\n\n public ngOnInit(): void {\n if (SharedCommonUtility.isNullish(this.mode)) {\n this.mode = ImageHighlightModes.edit;\n }\n\n this.createComponentReadyObservable();\n this.subscribeToHighlightChanges();\n this.subscribeToHighlightFocus();\n this.subscribeToEmitOriginalWidth();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public triggerAction(event: any, highlight: IHighlight): void {\n if (this.canEdit(highlight)) {\n highlight.action.isSelected = true;\n highlight.mode = HighlightModes.edit;\n }\n\n this.unselectAllFindings();\n\n this.onHighlightSelected.next(highlight);\n this.onAddToHighlight.emit();\n }\n\n public handleActionKeyEnterEvent(event: any, highlight: IHighlight): void {\n highlight.action.isSelected = true;\n event.preventDefault();\n this.triggerAction(event, highlight);\n }\n\n public onActionBlur(highlight: IHighlight): void {\n highlight.action.isFocused = false;\n highlight.action.isSelected = false;\n highlight.isAction = false;\n }\n\n public onActionFocused(event: FocusEvent, highlight: IHighlight): void {\n highlight.action.isFocused = true;\n\n this.scrollToElement(event.target as SVGRectElement);\n }\n\n /**\n * Checks is highlight add action selected.\n * Used for display purposes.\n *\n * @param highlight\n */\n public actionSelected(highlight: IHighlight): boolean {\n return highlight.action.isSelected;\n }\n\n /**\n * Checking reverse tabbing from highlight box\n *\n * @param highlight\n */\n public onHighlightReverseTab(highlight: IHighlight): void {\n highlight.isAction = false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { RestBuilder } from '../helpers/rest.builder';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureResourceApi {\n private restBuilder: RestBuilder;\n\n public constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /secure_resources/:resourceId\n public getSecureResourceBytes(resourceId: string): Observable {\n const url: string = this.getSecureResourceUrl(resourceId);\n\n const headers: HttpHeaders = new HttpHeaders({\n 'Cache-Control': 'private',\n });\n\n return this.httpClient.get(url, {\n responseType: 'blob',\n headers: headers,\n });\n }\n\n public getSecureResourceUrl(resourceId: string): string {\n return this.restBuilder.create().secureResources(resourceId).getApiUrl();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SecureResourceApi } from './rest/secure-resource-api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureResourceService {\n public constructor(private secureResourceApi: SecureResourceApi) {}\n\n public getSecureResourceBytes(resourceId: string): Observable {\n return this.secureResourceApi.getSecureResourceBytes(resourceId);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { SecureResourceService } from '../../services/secure-resource.service';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Directive({\n selector: 'img[appSecureResourceId]',\n})\nexport class SecureResourceIdDirective implements OnDestroy {\n private subscription: Subscription;\n\n @Input()\n public set appSecureResourceId(resourceId: string) {\n this.loadSecureImage(resourceId);\n }\n\n public constructor(\n private resourceService: SecureResourceService,\n private elementRef: ElementRef,\n private loadErrorHandler: LoadErrorHandler,\n private translateService: TranslateService,\n ) {\n this.subscription = new Subscription();\n }\n\n private loadSecureImage(resourceId: string): void {\n this.subscription.add(\n this.resourceService.getSecureResourceBytes(resourceId).subscribe(\n (imageBytes: Blob) => {\n this.elementRef.nativeElement.src = URL.createObjectURL(imageBytes);\n this.elementRef.nativeElement.dispatchEvent(new Event('load'));\n },\n (error: HttpErrorResponse) => {\n this.loadErrorHandler.handleError(\n this.translateService.instant('failed_to_load_resource', resourceId),\n error,\n SecureResourceIdDirective.name,\n );\n this.elementRef.nativeElement.dispatchEvent(new Event('error'));\n },\n ),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DsButtonVariants } from '@levelaccess/design-system';\nimport { IPopulatedIssueIntegrationConnection } from '../../../../../../shared/interfaces/issue-integration-connection.interface';\n\n@Component({\n templateUrl: './connection-error-modal.component.html',\n styleUrls: ['./connection-error-modal.component.scss'],\n})\nexport class ConnectionErrorModalComponent {\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n @Input()\n public connection: IPopulatedIssueIntegrationConnection;\n\n @Output()\n public confirmed: EventEmitter = new EventEmitter();\n\n constructor(protected modal: NgbActiveModal) {}\n\n protected cancelClicked(): void {\n this.modal.dismiss();\n }\n\n protected reauthorizeClicked(): void {\n this.confirmed.emit();\n this.modal.close();\n }\n}\n","\n
\n \n {{ 'integration_type_supplied_error' | translate: [connection.integrationType | translate] }}\n \n {{ connection.lastReportedError }}\n
\n
\n \n \n
\n
\n","\n
\n
{{ task.taskProjectId }}
\n
\n\n \n \n
\n","import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DsButtonVariants } from '@levelaccess/design-system';\nimport { IFailedTask } from '../../../../../../shared/interfaces/task.interface';\n\n@Component({\n templateUrl: './disconnected-tasks-modal.component.html',\n styleUrls: ['disconnected-tasks-modal.component.scss'],\n})\nexport class DisconnectedTasksModalComponent {\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n @Input()\n public failedTasks: IFailedTask[];\n\n @Output()\n public confirmed: EventEmitter = new EventEmitter();\n\n constructor(protected modal: NgbActiveModal) {}\n\n protected cancelClicked(): void {\n this.modal.dismiss();\n }\n\n protected confirmClicked(): void {\n this.confirmed.emit();\n this.modal.close();\n }\n}\n","
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n
\n \n\n \n \n \n \n
\n\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { MarkdownUtility } from '../../../../shared/utils/markdown.utility';\n\nexport enum MarkdownEditorMode {\n Preview,\n Edit,\n}\n\nexport interface IMarkdownEditorConfig {\n /**\n * Number of rows for the textarea.\n */\n rows?: number;\n required?: boolean;\n /**\n * Whether the textarea should be resizable. Only supports vertical resizing.\n */\n resizable?: boolean;\n /**\n * Mode to start editor in. Defaults to edit.\n */\n mode?: MarkdownEditorMode;\n /**\n * min height of textarea and preview.\n */\n minHeight?: string;\n}\n\n@Component({\n selector: 'app-markdown-editor',\n templateUrl: './markdown-editor.component.html',\n styleUrls: ['./markdown-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MarkdownEditorComponent),\n multi: true,\n },\n ],\n})\nexport class MarkdownEditorComponent implements OnInit, ControlValueAccessor {\n public internalValue: string = '';\n\n @Input() public config: IMarkdownEditorConfig = {\n rows: 10,\n required: false,\n resizable: false,\n mode: MarkdownEditorMode.Edit,\n minHeight: '240px',\n };\n\n public MarkdownEditorMode: typeof MarkdownEditorMode;\n\n public disabled: boolean = false;\n public domId: string = CommonUtility.createUniqueDOMId();\n public mode: MarkdownEditorMode = MarkdownEditorMode.Edit;\n\n private onChange: Function = () => {};\n\n public ngOnInit(): void {\n this.MarkdownEditorMode = MarkdownEditorMode;\n this.mode = this.config.mode;\n }\n\n public propagateChange(): void {\n const cleaned: string = MarkdownUtility.sanitize(this.internalValue || '');\n this.onChange(cleaned);\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {}\n\n public setDisabledState(isDisabled: boolean): void {\n if (this.disabled !== isDisabled) {\n this.disabled = isDisabled;\n }\n }\n\n public writeValue(obj: string): void {\n this.internalValue = obj;\n }\n\n public render(): any {\n return MarkdownUtility.render(this.internalValue || '');\n }\n\n public toggleMode(): void {\n this.mode = this.mode === MarkdownEditorMode.Edit ? MarkdownEditorMode.Preview : MarkdownEditorMode.Edit;\n }\n}\n","import { MarkdownUtility } from '../../../../../shared/utils/markdown.utility';\nimport { TranslateService } from '../../../translate/translate.service';\n\nexport interface ICreateTaskDescription {\n header: string;\n content: string;\n}\n\n/**\n * @deprecated Will be removed on EAP-28995\n */\nexport class JiraMarkdownUtils {\n public static jiraDescriptionBlock(translateService: TranslateService, description: ICreateTaskDescription): string {\n return description.content && description.content.length > 0\n ? `**${translateService.instant(description.header)}**${MarkdownUtility.br}${description.content}\\n\\n`\n : '';\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\n\nimport { MarkdownUtility } from '../../../../shared/utils/markdown.utility';\n\n@Component({\n selector: 'app-markdown-view',\n template: `
`,\n})\nexport class MarkdownViewComponent implements OnChanges {\n @Input() public value: string;\n\n public convertedData: string;\n\n public ngOnChanges(): void {\n this.convertedData = MarkdownUtility.render(this.value || '');\n }\n}\n","\n
\n {{ options.headerKey | translate }}\n
\n
\n
\n
\n

\n {{ options.bodyHighlightKey | translate }}\n

\n
\n
\n
\n
\n \n \n \n {{ options.bodyKey | translate }}\n
\n
\n
\n \n
\n","import { Component, Input, ViewChild } from '@angular/core';\n\nimport { IModal } from '../modal.interface';\nimport { ModalContainerComponent } from '../modal-container.component';\nimport { AlertModalOptions } from '../../../interfaces/modal-dialog.interface';\n\n@Component({\n selector: 'app-alert-modal',\n templateUrl: './alert-modal.component.html',\n styleUrls: ['./alert-modal.component.scss'],\n})\nexport class AlertModalComponent implements IModal {\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n @Input() public options: AlertModalOptions;\n\n public init(options: AlertModalOptions): void {\n this.options = options;\n }\n}\n","\n
\n {{ headerKey | translate }}\n
\n
\n
\n
\n

{{ subtitleKey | translate }}

\n
\n
\n\n
\n
\n {{ bodyKey | translate }}\n
\n
\n\n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n","import { Component, ViewChild } from '@angular/core';\nimport { IModal } from '../modal.interface';\nimport { ModalContainerComponent } from '../modal-container.component';\n\n@Component({\n selector: 'app-checkbox-confirmation-modal',\n templateUrl: './checkbox-confirmation-modal.component.html',\n styleUrls: ['./checkbox-confirmation-modal.component.scss'],\n})\nexport class CheckboxConfirmationModalComponent implements IModal {\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n public headerKey: string = '';\n public subtitleKey: string = '';\n public bodyKey: string = '';\n public confirmationPromptKey: string = '';\n public actionBtnKey: string = '';\n public confirmed: boolean = false;\n public cancelled: boolean = true;\n public showConfirmationCheckbox: boolean = true;\n\n constructor() {}\n\n public init(\n headerKey: string,\n subtitleKey: string,\n bodyKey: string,\n confirmationPromptKey: string,\n actionBtnKey: string,\n showConfirmationCheckbox: boolean = true,\n ): void {\n this.headerKey = headerKey;\n this.subtitleKey = subtitleKey;\n this.bodyKey = bodyKey;\n this.confirmationPromptKey = confirmationPromptKey;\n this.actionBtnKey = actionBtnKey;\n this.showConfirmationCheckbox = showConfirmationCheckbox;\n }\n\n public cancel(): void {\n this.cancelled = true;\n this.confirmed = false;\n this.container.closeModal();\n }\n\n public submit(): void {\n this.cancelled = false;\n this.confirmed = true;\n this.container.closeModal();\n }\n}\n","\n
\n {{ options.headerKey | translate }}\n
\n
\n \n
\n
\n \n
\n
\n

\n {{ options.bodyHeader | translate }}\n

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

\n {{ options.bodyHeader | translate }}\n

\n
\n
\n

\n {{ options.bodyText | translate }}\n

\n
\n
\n
\n \n
\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { InfoModalOptions } from '../../../interfaces/modal-dialog.interface';\nimport { ModalContainerComponent } from '../modal-container.component';\nimport { IModal } from '../modal.interface';\n\n@Component({\n selector: 'app-info-modal',\n templateUrl: './info-modal.component.html',\n styleUrls: ['./info-modal.component.scss'],\n})\nexport class InfoModalComponent implements IModal {\n @ViewChild(ModalContainerComponent, { static: true })\n container: ModalContainerComponent;\n\n @Input() public options: InfoModalOptions;\n\n public init(options: InfoModalOptions): void {\n const defaultOptions: Partial = {\n buttonKey: 'label_close',\n };\n this.options = {\n ...defaultOptions,\n ...options,\n };\n }\n}\n","
\n
\n \n
\n
\n

\n \n \n {{ title }}\n \n
\n
\n
\n\n
\n \n
\n\n \n
\n
\n\n","import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\n\nimport { CommonUtility } from '../../utility/common.utility';\n\n@Component({\n selector: 'app-modal-container',\n templateUrl: './modal-container.component.html',\n styleUrls: ['./modal-container.component.scss'],\n})\nexport class ModalContainerComponent implements OnInit, AfterViewInit {\n public isActive: boolean;\n @Input()\n public displayFooter: boolean;\n @Input()\n public displayHeader: boolean;\n @Input()\n public displayXButton: boolean;\n @Input()\n public cardClass: string;\n @Input()\n public cardBodyClass: string;\n @Input()\n public backdropClose: boolean;\n @Input()\n public scrollable: boolean;\n @Input()\n public closeLabel: string = 'label_close';\n @Input()\n public title: string;\n\n @Output() public onClose$: EventEmitter = new EventEmitter();\n\n constructor(private elRef: ElementRef) {\n this.isActive = false;\n this.displayFooter = true;\n this.displayHeader = true;\n this.displayXButton = true;\n this.backdropClose = true;\n this.scrollable = false;\n }\n\n @HostListener('document:keydown.escape')\n public onDragEnter(): void {\n if (this.backdropClose) {\n this.closeModal();\n }\n }\n\n public onOverlayClick(): void {\n if (this.backdropClose) {\n this.closeModal();\n }\n }\n\n public onContainerClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n public closeModal(): void {\n this.isActive = false;\n CommonUtility.deactivateFocusTrap();\n this.onClose$.next();\n }\n\n public ngAfterViewInit(): void {\n CommonUtility.setFocusToElement(null, this.elRef.nativeElement.querySelector('.btn-close-modal'));\n }\n\n public ngOnInit(): void {\n this.isActive = true;\n }\n}\n","\n
\n {{ options.headerKey | translate }}\n
\n
\n
\n

\n {{ options.descriptionKey | translate }}\n

\n
\n
\n
\n

{{ options.listHeaderKey | translate }}

\n
    \n
  • \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { SharedTextUtility } from '../../../../../shared/utils/text.utility';\nimport {\n PromptConfirmationModalOptions,\n PromptDialogListArgument,\n PromptDialogListItem,\n TranslationPromptArgument,\n} from '../../../interfaces/modal-dialog.interface';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { InputFieldContext } from '../../common-input/common-input.component';\nimport { ErrorMessageService } from '../../../services/error-message.service';\nimport { ModalContainerComponent } from '../modal-container.component';\nimport { IModal } from '../modal.interface';\n\nenum FormFields {\n prompt = 'prompt',\n}\n\n@Component({\n selector: 'app-prompt-confirmation-modal',\n templateUrl: './prompt-confirmation-modal.component.html',\n styleUrls: ['./prompt-confirmation-modal.component.scss'],\n})\nexport class PromptConfirmationModalComponent implements IModal, AfterViewInit {\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n @Input() public options: PromptConfirmationModalOptions;\n\n public confirmed: boolean;\n public form: UntypedFormGroup;\n public formValidationRequest$: Subject = new Subject();\n\n public constructor(\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n private errorMessageService: ErrorMessageService,\n private element: ElementRef,\n ) {\n this.confirmed = false;\n this.form = this.formBuilder.group({\n [FormFields.prompt]: new UntypedFormControl(null, [CustomValidators.required]),\n });\n }\n\n private updatePatternValidator(): void {\n const formControl: UntypedFormControl = this.form.get(FormFields.prompt) as UntypedFormControl;\n const pattern: string = this.translateService.instant(this.options.promptInputKey);\n formControl.setValidators([CustomValidators.required, CustomValidators.pattern(pattern)]);\n }\n\n public get nameInputContext(): InputFieldContext {\n return {\n label: 'confirmation',\n field: FormFields.prompt,\n description: this.translateService.instant(this.options.promptConfirmKey),\n overrideErrors: {\n pattern: this.translateService.instant('form_error_pattern_incorrect'),\n },\n };\n }\n\n private shouldTranslate(value: T): value is T & TranslationPromptArgument {\n return SharedCommonUtility.notNullishOrEmpty((value as TranslationPromptArgument).translationKey);\n }\n\n public formatListItem(listItem: PromptDialogListItem): string {\n const translationArguments: string[] = listItem.arguments.map((item: PromptDialogListArgument) => {\n const value: string = this.shouldTranslate(item) ? this.translateService.instant(item.translationKey) : String(item.value);\n return item.highlight ? `${SharedTextUtility.escapeHtmlTags(value)}` : value;\n });\n return this.translateService.instant(listItem.messageKey, translationArguments);\n }\n\n public init(options: PromptConfirmationModalOptions): void {\n const defaultOptions: Partial = {\n cancelButtonKey: 'label_cancel',\n };\n this.options = {\n ...defaultOptions,\n ...options,\n };\n }\n\n public confirm(): void {\n this.formValidationRequest$.next();\n\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n\n this.confirmed = true;\n this.container.closeModal();\n }\n\n public ngAfterViewInit(): void {\n this.updatePatternValidator();\n }\n}\n","
\n \n
\n {{ 'label_monitoring_alert' | translate }}\n
\n

{{ alertMessage }}

\n
\n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input } from '@angular/core';\nimport { $digitalPropertyMonitoringAlerts } from '../../../../shared/constants/digital-properties';\n\n@Component({\n selector: 'app-monitoring-alert-icon',\n templateUrl: './monitoring-alert-icon.component.html',\n styleUrls: ['./monitoring-alert-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonitoringAlertIconComponent {\n @Input()\n public alert: string[];\n public displayTooltip: boolean;\n public $alerts: typeof $digitalPropertyMonitoringAlerts;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.$alerts = $digitalPropertyMonitoringAlerts;\n }\n\n @HostListener('document:click', ['$event'])\n public onClickOutside(event: MouseEvent): void {\n if (this.displayTooltip === false) {\n return;\n }\n\n if (this.elementRef.nativeElement.contains(event.target as Node) === false) {\n this.displayTooltip = false;\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public showAlertTooltip(): void {\n this.displayTooltip = true;\n this.changeDetectorRef.detectChanges();\n }\n\n public get isAlertArray(): boolean {\n return Array.isArray(this.alert);\n }\n\n public get alerts(): string[] {\n if (Array.isArray(this.alert)) {\n return this.alert as unknown as string[];\n }\n return [];\n }\n}\n","
\n 0\" [config]=\"alertsTableConfig\" [data]=\"alertsTableData\">\n
\n","import { Component, Input } from '@angular/core';\nimport { ITableColumn, ITableConfig, ITableRow } from '../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../table/ngb-table/utilities/ngb-table.utilities';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IDigitalPropertyMonitoringUserAlertsWithEmail } from '../../../../shared/interfaces/digital-property.interface';\nimport {\n $digitalPropertyMonitoringAlerts,\n $digitalPropertyMonitoringAlertType,\n} from '../../../../shared/constants/digital-properties';\n\nenum $alertTableFields {\n recipient = 'recipient',\n alerts = 'alerts',\n}\n\n@Component({\n selector: 'app-monitoring-alert-table',\n templateUrl: './monitoring-alert-table.component.html',\n})\nexport class MonitoringAlertTableComponent {\n @Input() public alerts: IDigitalPropertyMonitoringUserAlertsWithEmail[] = [];\n\n public alertsTableConfig: ITableConfig;\n\n constructor(private translateService: TranslateService) {\n this.getAlertsTableConfig();\n }\n\n private getAlertsTableConfig(): void {\n const columns: Record<$alertTableFields, ITableColumn> = {\n [$alertTableFields.recipient]: {\n translationKey: 'recipient_s_email',\n sortingEnabled: false,\n },\n [$alertTableFields.alerts]: {\n translationKey: 'label_monitoring_alerts',\n sortingEnabled: false,\n },\n };\n\n this.alertsTableConfig = {\n columns,\n caption: this.translateService.instant('current_alerts'),\n };\n }\n\n private getSelectedAlertsText(alert: IDigitalPropertyMonitoringUserAlertsWithEmail): string {\n return Object.keys($digitalPropertyMonitoringAlertType)\n .filter(\n (alertType: $digitalPropertyMonitoringAlertType): boolean =>\n alert[$digitalPropertyMonitoringAlerts.alerts][alertType]?.set,\n )\n .map((alertType: $digitalPropertyMonitoringAlertType): string => this.translateService.instant(alertType))\n .join(', ');\n }\n\n public get alertsTableData(): ITableRow[] {\n if (Array.isArray(this.alerts)) {\n return this.alerts.map(\n (value: IDigitalPropertyMonitoringUserAlertsWithEmail): ITableRow => ({\n data: {\n [$alertTableFields.recipient]: NgbTableUtilities.textCell({\n text: value[$digitalPropertyMonitoringAlerts.email],\n }),\n [$alertTableFields.alerts]: NgbTableUtilities.textCell({ text: this.getSelectedAlertsText(value) }),\n },\n }),\n );\n }\n\n return [];\n }\n}\n","
\n \n\n \n \n {{ 'restore_to_setup_monitoring' | translate }}\n \n \n\n \n \n \n\n \n \n {{ 'set_up_monitoring' | translate }}\n \n \n\n \n
\n \n {{ 'label_monitoring' | translate }}\n \n \n
\n
\n\n \n \n {{ 'not_supported' | translate }}\n \n \n
\n\n\n
\n \n {{ getMonitoringOccurrenceLabel(data.monitoring) | translate }}\n \n \n {{ 'next_scan' | translate }}: \n {{ nextSchedule | dateTime }}\n \n \n {{ 'next_scan_to_be_scheduled' | translate }}\n \n
\n
\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n IDigitalPropertyMonitoring,\n IDigitalPropertyMonitoringUserAlerts,\n} from '../../../../shared/interfaces/digital-property.interface';\nimport {\n $digitalPropertyMonitoring,\n $digitalPropertyMonitoringAlerts,\n $digitalPropertyMonitoringAlertType,\n} from '../../../../shared/constants/digital-properties';\nimport { IMonitoringLabel } from './monitoring-label.interface';\nimport { Api } from '../../../../shared/constants/api';\nimport { $user } from '../../../../shared/constants/user';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../translate/translate.service';\nimport { TenantWorkspacesTableComponent } from '../../admin/tenants/tenant-details/tenant-workspaces-table/tenant-workspaces-table.component';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { UserService } from '../../services/user.service';\nimport { LinkedPropertyUtility } from '../../../../shared/utils/linked-property.utility';\n\n@Component({\n selector: 'app-monitoring-label',\n templateUrl: './monitoring-label.component.html',\n styleUrls: ['./monitoring-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonitoringLabelComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private userId: string;\n\n @Input()\n public data: IMonitoringLabel;\n public $digitalPropertyMonitoring: typeof $digitalPropertyMonitoring;\n public Api: typeof Api;\n\n constructor(\n private translateService: TranslateService,\n private loadErrorHandler: LoadErrorHandler,\n private userService: UserService,\n ) {\n this.$digitalPropertyMonitoring = $digitalPropertyMonitoring;\n this.Api = Api;\n this.subscriptions = new Subscription();\n this.userId = '';\n }\n\n public getMonitoringOccurrenceLabel(monitoring: IDigitalPropertyMonitoring): string {\n return `label_occurrence_${monitoring[$digitalPropertyMonitoring.occurrence].toLowerCase()}`;\n }\n\n public get queryParams(): Params {\n return this.data ? LinkedPropertyUtility.getLinkedPropertyQueryParam(this.data.digitalPropertyId, this.data.workspaceId) : {};\n }\n\n public get hasMonitoring(): boolean {\n return this.data?.monitoring?.[$digitalPropertyMonitoring.enabled];\n }\n\n public get hasAccess(): boolean {\n if (SharedCommonUtility.isNullish(this.data?.userCanSetupMonitoring)) {\n return true;\n }\n\n return this.data?.userCanSetupMonitoring;\n }\n\n public get nextSchedule(): string | null {\n return this.data?.monitoring?.[$digitalPropertyMonitoring.nextScheduledAt];\n }\n\n public get hasNextSchedule(): boolean {\n return typeof this.nextSchedule === 'string';\n }\n\n public get alerts(): string[] | undefined {\n const alert: IDigitalPropertyMonitoringUserAlerts[] = this.data?.monitoring?.[$digitalPropertyMonitoring.alerts];\n\n if (Array.isArray(alert)) {\n const alerts: string[] = [];\n for (const userAlerts of alert) {\n if (userAlerts[$digitalPropertyMonitoringAlerts.userId] === this.userId) {\n const userAlert: Partial> =\n userAlerts[$digitalPropertyMonitoringAlerts.alerts];\n\n if (userAlert.scanCompletion?.set) {\n alerts.push(this.translateService.instant('scan_completed'));\n }\n\n if (userAlert.scoreDropByPercent?.set) {\n alerts.push(this.translateService.instant('score_drop_below_value', [userAlert.scoreDropByPercent.threshold]));\n }\n\n if (userAlert.scoreDropByPercentFromPrevious?.set) {\n alerts.push(\n this.translateService.instant('score_drop_below_previous_score_by_value', [\n userAlert.scoreDropByPercentFromPrevious.threshold,\n ]),\n );\n }\n }\n }\n\n if (alerts.length === 0) {\n return undefined;\n }\n return alerts;\n }\n\n return alert;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnInit(): void {\n const onGetUserSuccess = (user: IUserServerResponse): void => {\n this.userId = user[$user._id];\n };\n\n const onGetUserError = (error: HttpErrorResponse): void => {\n this.loadErrorHandler.handleError('error_getting_me_profile', error, TenantWorkspacesTableComponent.name);\n };\n\n this.subscriptions.add(\n this.userService.getAuthenticatedUserProfile().subscribe({\n next: onGetUserSuccess,\n error: onGetUserError,\n }),\n );\n }\n}\n","
\n \n {{ label | translate }} *\n @if (description) {\n

{{ description }}

\n }\n \n \n @if (errorMessage) {\n
\n \n {{ errorMessage | translate }}\n
\n }\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n {{ valueToSelectedItemLabelFunction(selectedValue) }}\n \n {{ 'remove_selected_value' | translate }}\n \n \n \n \n
\n
\n
\n
\n\n","import { ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit, ElementRef, ViewChild } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, finalize, map, switchMap, tap } from 'rxjs/operators';\nimport { AbstractControl, ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { of, Subscription, Observable } from 'rxjs';\nimport { identity } from 'lodash';\n\nimport { Icons } from '@levelaccess/design-system';\nimport { CommonUtility } from '../../utility/common.utility';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../translate/translate.service';\n\n/**\n * typeahead multiselect component. can be used as a form component. operates on actual object values - can be any\n * complex object or just strings. supports transforming the actual value objects:\n * 1) before rendering them in the dropdown list. @see #valueToDropdownLabelFunction\n * 2) before rendering them in the selected items list. useful when you for example only want to display an\n * id of the selected item but show its full description in the dropdown. @see #valueToSelectedItemLabelFunction\n * 3) before emitting selected values. @see #valueToOutputValueFunction and @see #registerOnChange from the\n * ControlValueAccessor interface.\n * apart form that, also allows to get values dynamically based on input @see fetchPossibleValues\n */\n@Component({\n selector: 'app-multiselect-typeahead',\n templateUrl: './multiselect-typeahead.component.html',\n styleUrls: ['./multiselect-typeahead.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => MultiselectTypeaheadComponent),\n },\n ],\n})\nexport class MultiselectTypeaheadComponent implements OnInit, OnDestroy, ControlValueAccessor {\n private subscription: Subscription;\n private readonly uniqueId: string;\n private onTouched: () => any;\n private onChange: (values: any) => any;\n\n @Input() public label: string;\n @Input() public noLabel: boolean;\n @Input() public selectedLabel: string;\n @Input() public formControlName: string;\n @Input() public disabled: boolean;\n @Input() public possibleValues: T[];\n @Input() public allowCustomValues: boolean;\n @Input() public id: string;\n /**\n * used if you need to display in the dropdown list of available options something else than the actual available\n * values.\n * if present it's called before rendering the selection dropdown with available options\n */\n @Input() public valueToDropdownLabelFunction: (item: T) => string;\n /**\n * if present it's called before rendering selected items to screen\n */\n @Input() public valueToSelectedItemLabelFunction: (item: T) => string;\n /**\n * if present it's called when adding custom values to the selection\n */\n @Input() public dropdownLabelToValueFunction: (item: string) => T;\n\n /**\n * if present, it's called in getter \"values\" transforming them from T[] to U[]. this affects what's\n * emitted through onChange and valueChange.\n */\n @Input() public valueToOutputValueFunction: (item: T) => U;\n\n @Input() public outputValueToValueFunction: (item: U) => T;\n\n @Input() public fetchPossibleValues: (term: string) => Observable;\n\n @Input() public required: boolean = false;\n @Input() public formValidationRequest$: Observable;\n @Input() public form: UntypedFormGroup;\n @Input() public maxValues?: number;\n @Input() public maxValueLength?: number;\n @Input() public description?: string = '';\n @Input() public isAlphanumericValidationEnabled?: boolean = false;\n\n @ViewChild('inputElement') public inputElement: ElementRef;\n\n public search: (text$: Observable) => Observable;\n public selectedValues: T[];\n public formId: string;\n public innerForm: UntypedFormGroup;\n public get domID(): string {\n return this.id || this.uniqueId;\n }\n public errorMessage: string = '';\n public readonly Icons: typeof Icons;\n\n public constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n ) {\n this.label = '';\n this.noLabel = false;\n this.selectedLabel = '';\n this.disabled = false;\n this.possibleValues = [];\n this.allowCustomValues = false;\n this.search = this.searchValue.bind(this);\n this.selectedValues = [];\n this.formId = this.createDomID('multiselectForm');\n this.subscription = new Subscription();\n this.valueToOutputValueFunction = identity;\n this.valueToDropdownLabelFunction = identity;\n this.dropdownLabelToValueFunction = identity;\n this.outputValueToValueFunction = identity;\n this.valueToSelectedItemLabelFunction = (selectedItem: T): string => selectedItem?.toString();\n this.uniqueId = CommonUtility.createUniqueDOMId();\n this.Icons = Icons;\n }\n\n private searchValue(text$: Observable): Observable {\n return text$.pipe(\n debounceTime(200),\n distinctUntilChanged(),\n switchMap((term: string) => {\n let result: Observable;\n if (term.length < 2) {\n result = of([]);\n } else if (!SharedCommonUtility.isNullish(this.fetchPossibleValues)) {\n result = this.fetchPossibleValues(term);\n } else {\n result = of(this.possibleValues);\n }\n\n return result.pipe(\n map((possibleValues: T[]) => {\n return Array.from(possibleValues) // sort mutates the array, so we clone it before sorting\n .filter((v: T) => this.valueToDropdownLabelFunction(v).toLowerCase().indexOf(term.toLowerCase()) > -1)\n .sort((a: T, b: T) => {\n const lowerTerm: string = term.toLowerCase();\n const lowerA: string = this.valueToDropdownLabelFunction(a).toLowerCase();\n const lowerB: string = this.valueToDropdownLabelFunction(b).toLowerCase();\n\n // Strings starting with the term come first\n const aStartsWith: boolean = lowerA.startsWith(lowerTerm);\n const bStartsWith: boolean = lowerB.startsWith(lowerTerm);\n if (aStartsWith && !bStartsWith) {\n return -1;\n }\n if (bStartsWith && !aStartsWith) {\n return 1;\n }\n\n // Fall back to alphabetical order, sorting numerically and case-insensitively\n return lowerA.localeCompare(lowerB, undefined, { numeric: true, sensitivity: 'base' });\n })\n .slice(0, 10)\n .map((v: T) => this.valueToDropdownLabelFunction(v));\n }),\n );\n }),\n tap(() => {\n if (!SharedCommonUtility.isNullish(this.onTouched)) {\n this.onTouched();\n }\n }),\n finalize(() => this.changeDetectorRef.detectChanges()),\n );\n }\n\n private emitValues(): void {\n if (!SharedCommonUtility.isNullish(this.onChange)) {\n this.onChange(this.values);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * @label\n * @returns the value for which this.valueToOption(..) returns [label] or null if no such option exists.\n */\n private findSelectedValueByLabel(label: any, labelFunction: (T) => any): T {\n return (\n this.possibleValues.find((value: T) => labelFunction(value).startsWith(label)) ??\n this.possibleValues.find((value: T) => labelFunction(value).includes(label))\n );\n }\n\n private addSelectedItem(inputText: string): void {\n if (!this.allowCustomValues) {\n this.addExistingValue(inputText);\n return;\n }\n\n const trimmedInput: string = inputText?.trim();\n if (!trimmedInput) {\n return;\n }\n\n this.processMultipleOrSingleValue(trimmedInput);\n this.resetInputField();\n }\n\n private addExistingValue(inputText: string): void {\n const matchingOption: T = this.findSelectedValueByLabel(inputText, this.valueToDropdownLabelFunction);\n\n if (!SharedCommonUtility.isNullish(matchingOption) && !this.selectedValues.includes(matchingOption)) {\n this.selectedValues.push(matchingOption);\n this.resetInputField();\n this.emitValues();\n }\n }\n\n private processMultipleOrSingleValue(trimmedInput: string): void {\n if (trimmedInput.includes(' ')) {\n this.processMultipleValues(trimmedInput);\n } else {\n this.processAndAddSingleTag(trimmedInput);\n }\n }\n\n private processMultipleValues(input: string): void {\n const inputParts: string[] = input\n .split(' ')\n .map((part: string) => part.trim())\n .filter((part: string) => part);\n\n inputParts.forEach((part: string) => {\n this.processAndAddSingleTag(part);\n });\n }\n\n private resetInputField(): void {\n const inputField: AbstractControl = this.innerForm.get(this.innerInputName);\n setTimeout(() => inputField.setValue(null), 0);\n this.changeDetectorRef.detectChanges();\n }\n\n private processAndAddSingleTag(inputText: string): void {\n if (!this.validateOnEnter(inputText)) {\n return;\n }\n\n let matchingOption: T = this.findSelectedValueByLabel(inputText, this.valueToDropdownLabelFunction);\n\n if (SharedCommonUtility.isNullish(matchingOption) && this.allowCustomValues) {\n matchingOption = this.dropdownLabelToValueFunction(inputText);\n }\n\n if (!SharedCommonUtility.isNullish(matchingOption) && this.selectedValues.includes(matchingOption) === false) {\n this.selectedValues.push(matchingOption);\n this.errorMessage = '';\n this.changeDetectorRef.detectChanges();\n this.emitValues();\n }\n }\n\n public get innerInputName(): string {\n return `${this.formControlName}_input`;\n }\n\n @Input() public set values(inValues: U[]) {\n if (SharedCommonUtility.isNullish(inValues)) {\n this.selectedValues = [];\n return;\n }\n\n inValues.forEach((inValue: U) => {\n let selectedItem: T = this.findSelectedValueByLabel(inValue, this.valueToOutputValueFunction);\n\n if (SharedCommonUtility.isNullish(selectedItem) && this.allowCustomValues) {\n selectedItem = this.outputValueToValueFunction(inValue);\n }\n\n this.selectedValues.push(selectedItem);\n });\n\n this.changeDetectorRef.detectChanges();\n }\n\n public get values(): U[] {\n return Array.from(this.selectedValues).map(this.valueToOutputValueFunction);\n }\n\n public removeValue(_value: T): void {\n const index: number = this.selectedValues\n .map(this.valueToSelectedItemLabelFunction)\n .indexOf(this.valueToSelectedItemLabelFunction(_value));\n if (index >= 0) {\n this.selectedValues.splice(index, 1);\n this.emitValues();\n this.inputElement?.nativeElement?.focus();\n }\n }\n\n public pushOnItemSelected(item: { item: any }): void {\n if (this.allowCustomValues) {\n if (SharedCommonUtility.notNullish(item) && SharedCommonUtility.notNullish(item.item)) {\n this.addSelectedItem(item.item);\n }\n } else {\n this.addSelectedItem(item.item);\n }\n }\n\n public pushOnEnter(): void {\n const inputText: string = this.innerForm.controls[this.innerInputName].value;\n\n if (this.allowCustomValues) {\n if (inputText && inputText.trim()) {\n this.addSelectedItem(inputText);\n }\n } else {\n this.addSelectedItem(inputText);\n }\n }\n\n public createDomID(prefix: string): string {\n return `${prefix}_${CommonUtility.createUniqueDOMId()}`;\n }\n\n /* ControlValueAccessor implementation */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n writeValue(obj: U[]): void {\n this.values = obj;\n }\n /* end of ControlValueAccessor implementation */\n\n public clear(): void {\n this.values = [];\n this.selectedValues = [];\n this.innerForm.get(this.innerInputName).setValue('');\n this.emitValues();\n }\n\n public ngOnInit(): void {\n this.innerForm = this.formBuilder.group({\n [this.innerInputName]: this.formBuilder.control(null),\n });\n\n this.subscription.add(\n this.innerForm.get(this.innerInputName).valueChanges.subscribe((value: string) => {\n if (value) {\n this.validateInput(value);\n }\n }),\n );\n\n if (this.formValidationRequest$) {\n this.subscription = this.formValidationRequest$.subscribe(() => {\n const field: AbstractControl = this.form.get(this.formControlName);\n field.markAsDirty();\n field.markAsTouched();\n const innerField: AbstractControl = this.innerForm.get(this.innerInputName);\n innerField.markAsDirty();\n innerField.markAsTouched();\n this.changeDetectorRef.detectChanges();\n });\n }\n }\n\n private updateErrorState(errorKey: string, params?: any[]): void {\n if (errorKey) {\n this.errorMessage = this.translateService.instant(errorKey, params);\n } else {\n this.errorMessage = '';\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private validateInput(inputText: string): boolean {\n if (!this.allowCustomValues) {\n return true;\n }\n\n if (this.isAlphanumericValidationEnabled && !/^[a-zA-Z0-9 ]+$/.test(inputText)) {\n this.updateErrorState('alpha_numeric_error');\n return false;\n }\n\n if (this.maxValueLength && inputText.length > this.maxValueLength) {\n this.updateErrorState('max_tag_char_length', [this.maxValueLength]);\n return false;\n }\n\n this.updateErrorState('');\n return true;\n }\n\n private isDuplicate(inputText: string): boolean {\n const normalizedInput = inputText.toLowerCase();\n const isDuplicate = this.selectedValues.some(\n (value: T) => this.valueToSelectedItemLabelFunction(value).toLowerCase() === normalizedInput,\n );\n\n if (isDuplicate) {\n this.updateErrorState('duplicate_tag_value');\n return true;\n }\n return false;\n }\n\n private exceedsMaxValues(): boolean {\n if (this.maxValues && this.selectedValues.length >= this.maxValues) {\n this.updateErrorState('max_tag_length', [this.maxValues]);\n return true;\n }\n return false;\n }\n\n public validateOnEnter(inputText: string): boolean {\n if (!this.allowCustomValues) {\n return true;\n }\n\n if (!inputText || inputText.trim() === '') {\n return false;\n }\n\n this.errorMessage = '';\n\n if (!this.validateInput(inputText)) {\n return false;\n }\n\n if (this.isDuplicate(inputText)) {\n return false;\n }\n\n if (this.exceedsMaxValues()) {\n return false;\n }\n\n return true;\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","
\n

\n {{ severityLabel ?? (findingSeverity | translate) }}\n

\n
\n
{{ agingIssues ?? 0 | compactNumber }}
\n
\n
\n \n \n 0\"\n class=\"m-2 overdue-findings-icon\"\n \n tabindex=\"0\"\n [icon]=\"Icons.Flag\"\n [iconStyle]=\"IconStyles.Solid\"\n [tooltipPlacement]=\"DsTooltipPosition.top\"\n [ds-tooltip]=\"'policy_violated' | translate\"\n [attr.aria-label]=\"'policy_violated' | translate\"\n [style.color]=\"EapColors.RedError\"\n >\n
\n
\n \n {{ 'view_findings' | translate }}\n \n
\n
\n","import { Component, Input } from '@angular/core';\nimport { DsTooltipPosition, Icons, IconStyles } from '@levelaccess/design-system';\nimport { $severity } from '../../../../shared/constants/accessibility';\nimport { EapColors } from '../../shared/eap-colors';\nimport { AuditFindingQAStatus, AuditFindingQAStatusUnresolved } from '../../../../shared/constants/audit-finding';\nimport { Api } from '../../../../shared/constants/api';\nimport { EvaluationStandards } from '../../../../shared/constants/manual-evaluation';\n\n@Component({\n selector: 'app-overdue-unresolved-findings-by-severity',\n templateUrl: './overdue-unresolved-findings-by-severity.component.html',\n})\nexport class OverdueUnresolvedFindingsBySeverityComponent {\n @Input()\n public findingSeverity: $severity;\n @Input()\n public severityLabel: string;\n @Input()\n public agingIssues: number;\n @Input()\n public severityTimeInterval: number;\n @Input()\n public scanId: string;\n @Input()\n public standard: EvaluationStandards;\n\n public Icons: typeof Icons;\n public IconStyles: typeof IconStyles;\n public EapColors: typeof EapColors;\n public AuditFindingQAStatusUnresolved: ReadonlyArray;\n public severity: typeof $severity;\n public DsTooltipPosition: typeof DsTooltipPosition;\n public Api: typeof Api;\n\n constructor() {\n this.Icons = Icons;\n this.IconStyles = IconStyles;\n this.EapColors = EapColors;\n this.AuditFindingQAStatusUnresolved = AuditFindingQAStatusUnresolved;\n this.DsTooltipPosition = DsTooltipPosition;\n this.severity = $severity;\n this.Api = Api;\n }\n}\n","
\n
\n
\n \n \n \n \n \n

{{ 'page_loading' | translate }}

\n

{{ 'page_loading_description' | translate }}

\n

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

{{ 'page_loading_error' | translate }}

\n

\n

\n \n \n \n

\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Api } from '../../../../shared/constants/api';\n\nexport enum pageLoadingState {\n loading = 'loading',\n loaded = 'loaded',\n error = 'error',\n}\n\n@Component({\n selector: 'app-page-loading-state',\n templateUrl: './page-loading-state.component.html',\n styleUrls: ['./page-loading-state.component.scss'],\n})\nexport class PageLoadingStateComponent {\n @Input() loadingState: pageLoadingState;\n\n public Api: typeof Api;\n public pageLoadingState: typeof pageLoadingState;\n\n constructor() {\n this.pageLoadingState = pageLoadingState;\n this.Api = Api;\n }\n\n public reloadPage(): void {\n window.location.reload();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-arrows-navigation',\n templateUrl: './pagination-arrows-navigation.component.html',\n styleUrls: ['./pagination-arrows-navigation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationArrowsNavigationComponent {\n @Input() public entriesAmount: number;\n\n @Input() public currentPage: number;\n @Output() public currentPageChange: EventEmitter;\n\n @Input() public entriesPerPage: number;\n\n constructor() {\n this.currentPageChange = new EventEmitter();\n }\n\n public getPaginationFrom(): number {\n if (this.entriesAmount === 0) {\n return 0;\n }\n\n return (this.currentPage - 1) * this.entriesPerPage + 1;\n }\n\n public getPaginationTo(): number {\n return Math.min(this.currentPage * this.entriesPerPage, this.entriesAmount);\n }\n\n public getPagesCount(): number {\n return Math.ceil(this.entriesAmount / this.entriesPerPage);\n }\n\n public paginate(page: number): void {\n this.currentPage = page;\n this.currentPageChange.emit(page);\n }\n\n public isFirstPage(): boolean {\n return this.currentPage <= 1;\n }\n\n public isLastPage(): boolean {\n return this.currentPage >= this.getPagesCount();\n }\n}\n","
\n \n {{ getPaginationFrom() }}–{{ getPaginationTo() }}\n {{ 'of' | translate }}\n {{ entriesAmount }}\n \n \n {{ 'pagination_go_to_previous_page' | translate }}\n \n \n {{ 'pagination_go_to_next_page' | translate }}\n \n
\n","
\n
\n \n \n {{ label || ('label_rows_per_page' | translate) }}\n \n \n \n \n \n \n {{ 'n_of_t' | translate: [(startIndex | async) + ' - ' + (lastIndex | async), collectionSize$ | async] }}\n  {{ 'results' | translate }}\n
\n
\n\n
\n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n \n {{ (pageNum !== page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n\n","import { Component, EventEmitter, Input, OnInit, AfterViewChecked, Output, OnChanges } from '@angular/core';\nimport { of, Observable, isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\n/**\n * @deprecated. Please use the Design System component \"ds-pagination\" instead.\n */\n@Component({\n selector: 'app-responsive-pagination',\n templateUrl: './responsive-pagination.component.html',\n styleUrls: ['./responsive-pagination.component.scss'],\n})\nexport class ResponsivePaginationComponent implements OnInit, OnChanges, AfterViewChecked {\n @Input()\n public collectionSize: number | Observable;\n @Input()\n public entryLimits: number[];\n @Input()\n public label: string;\n @Input()\n public page: number;\n @Input()\n public pageSize: number;\n @Input()\n public preventFocusScroll: boolean;\n @Input()\n public hidePageSizeSelector: boolean;\n @Input()\n public idSuffix: string;\n @Input()\n public hideLabel: boolean;\n @Input()\n public hideNOfT: boolean;\n @Input()\n public tableId: string;\n @Output()\n public pageChange: EventEmitter;\n @Output()\n public pageSizeChange: EventEmitter;\n public selectorId: string;\n private isEllipsesFixed: boolean = false;\n public ready: boolean = false;\n\n constructor() {\n this.pageChange = new EventEmitter();\n this.pageSizeChange = new EventEmitter();\n this.hidePageSizeSelector = false;\n }\n\n public get collectionSize$(): Observable {\n if (isObservable(this.collectionSize)) {\n return this.collectionSize;\n }\n return of(this.collectionSize);\n }\n\n public get startIndex(): Observable {\n return this.collectionSize$.pipe(\n map((size: number): number => Math.min(size, this.page * this.pageSize - this.pageSize + 1)),\n );\n }\n\n public get lastIndex(): Observable {\n return this.collectionSize$.pipe(map((size: number): number => Math.min(size, this.page * this.pageSize)));\n }\n\n public handlePageChange(page: number): void {\n this.pageChange.emit(page);\n }\n\n public ngOnInit(): void {\n this.selectorId = CommonUtility.createUniqueDOMId();\n }\n\n public ngOnChanges(): void {\n this.ready =\n SharedCommonUtility.notNullish(this.page) &&\n SharedCommonUtility.notNullish(this.pageSize) &&\n SharedCommonUtility.notNullish(this.collectionSize);\n }\n\n public ngAfterViewChecked(): void {\n if (this.isEllipsesFixed) {\n return;\n }\n\n const paginationEllipses: NodeListOf = document.querySelectorAll(\n `a.page-link[tabindex='-1'][aria-disabled]:not([href])`,\n );\n if (SharedCommonUtility.notNullishOrEmpty(paginationEllipses)) {\n paginationEllipses.forEach((ellipsis: HTMLElement) => {\n ellipsis.removeAttribute('aria-disabled');\n ellipsis.removeAttribute('tabindex');\n });\n this.isEllipsesFixed = true;\n }\n }\n}\n","
\n
\n {{ formattedValue }}\n \n
\n
\n
\n","import { AfterViewInit, Component, ElementRef, Input, OnChanges, ViewChild } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { GaugeChart } from 'echarts/charts';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { EChartsOption } from 'echarts/types/dist/shared';\nimport { TranslateService } from '../../translate/translate.service';\nimport { Icons } from '../../shared/eap-icons.component';\nimport { EapColors } from '../../shared/eap-colors';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nexport enum ShowWarningWhen {\n above = 'above',\n below = 'below',\n}\n\n@Component({\n selector: 'app-progress-doughnut',\n templateUrl: './progress-doughnut.component.html',\n styleUrls: ['./progress-doughnut.component.scss'],\n})\nexport class ProgressDoughnutComponent implements AfterViewInit, OnChanges {\n @ViewChild('progressChart') private progressChart: ElementRef;\n\n @Input()\n public threshold: number;\n\n @Input()\n public warning: ShowWarningWhen;\n\n @Input()\n public progress: number;\n\n @Input()\n public maxValue: number;\n\n @Input()\n public showPercent: boolean;\n\n public get formattedValue(): string {\n return this.showPercent ? this.translateService.instant('percent_formatter', this.progress) : String(this.progress);\n }\n\n public get isWarningOn(): boolean {\n return this.warning === 'above' ? this.progress > this.threshold : this.progress < this.threshold;\n }\n\n private chart: echarts.EChartsType;\n public warningIcon: Icons;\n public warningColor: EapColors;\n public okColor: EapColors;\n\n constructor(private translateService: TranslateService) {\n this.warning = ShowWarningWhen.below;\n this.threshold = 80;\n this.showPercent = true;\n this.maxValue = 100;\n this.warningIcon = Icons.WarningTriangleIcon;\n this.warningColor = EapColors.RedError;\n this.okColor = EapColors.BlueInfo;\n\n echarts.use([GaugeChart, SVGRenderer]);\n }\n\n private renderChart(): void {\n if (this.chart) {\n this.chart.dispose();\n }\n\n if (SharedCommonUtility.isNullish(this.progressChart)) {\n return;\n }\n\n const option: EChartsOption = {\n series: [\n {\n name: 'Progress',\n type: 'gauge',\n progress: {\n show: true,\n width: 15,\n itemStyle: {\n color: this.isWarningOn ? this.warningColor : this.okColor,\n },\n },\n radius: '190%',\n center: ['50%', '98%'],\n detail: {\n show: false,\n },\n startAngle: 180,\n endAngle: 0,\n splitNumber: 0,\n max: this.maxValue,\n pointer: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n axisLine: {\n show: true,\n lineStyle: {\n width: 15,\n shadowColor: 'black',\n shadowBlur: 1,\n color: [[1, EapColors.GreyPageBackground]],\n },\n },\n splitLine: {\n show: false,\n },\n title: {\n show: false,\n },\n data: [\n {\n value: this.progress,\n },\n ],\n },\n ],\n };\n\n this.chart = echarts.init(this.progressChart.nativeElement, null, { width: 140, height: 70 });\n this.chart.setOption(option);\n }\n\n ngAfterViewInit(): void {\n this.renderChart();\n }\n\n public ngOnChanges(): void {\n this.renderChart();\n }\n}\n","
\n \n {{ 'percent_formatter' | translate: [progressPercentage.percentage] }}\n \n \n
\n\n
\n
\n\n\n
\n {{ 'resolved_findings_count' | translate: [formattedResolvedCount] }}\n
\n\n
\n \n \n \n {{ 'resolved_findings_variation' | translate: [formattedVariation, progressPercentage.previousDate] }}\n \n \n \n {{ 'resolved_findings_percentage_unchanged' | translate: [progressPercentage.previousDate] }}\n \n \n {{\n 'resolved_findings_percentage_increase' | translate: [progressPercentage.absVariation, progressPercentage.previousDate]\n }}\n \n \n {{\n 'resolved_findings_percentage_decrease' | translate: [progressPercentage.absVariation, progressPercentage.previousDate]\n }}\n \n \n
\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { DsTooltipPosition, Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { TranslateService } from '../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { DateUtility } from '../../utility/date.utility';\nimport { EapColors } from '../../shared/eap-colors';\n\ninterface IProgressPercentage {\n percentage: number;\n variation: number;\n absVariation: number;\n previousDate: string;\n}\n\n@Component({\n selector: 'app-resolved-findings-progress',\n templateUrl: './resolved-findings-progress.component.html',\n styleUrls: ['./resolved-findings-progress.component.scss'],\n})\nexport class ResolvedFindingsProgressComponent implements OnChanges {\n @Input()\n public resolvedCount: number;\n @Input()\n public totalCount: number;\n @Input()\n public previousResolvedCount: number;\n @Input()\n public previousTotalCount: number;\n @Input()\n public previousComputedDate: Date;\n @Input()\n public percentageThreshold: number;\n\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n public IconStyles: typeof IconStyles;\n public DsTooltipPosition: typeof DsTooltipPosition;\n public progressPercentage: IProgressPercentage;\n\n constructor(private translateService: TranslateService) {\n this.Icons = Icons;\n this.IconStyles = IconStyles;\n this.EapColors = EapColors;\n this.DsTooltipPosition = DsTooltipPosition;\n }\n\n public get formattedResolvedCount(): string {\n return SharedCommonUtility.formatCompactNumber(this.resolvedCount);\n }\n\n public get isPositiveVariation(): boolean {\n return this.progressPercentage?.variation > 0;\n }\n\n public get isNegativeVariation(): boolean {\n return this.progressPercentage?.variation < 0;\n }\n\n public get isUnchangedVariation(): boolean {\n return this.progressPercentage?.variation === 0;\n }\n\n public get isPolicyViolated(): boolean {\n return this.progressPercentage ? this.progressPercentage.percentage < this.percentageThreshold : false;\n }\n\n public get formattedVariation(): string {\n if (this.isUnchangedVariation) {\n return this.translateService.instant('no_change');\n }\n const sign: string = this.isPositiveVariation ? '+' : '';\n const variationPercent: string = (this.progressPercentage.variation / 100).toLocaleString([], {\n style: 'percent',\n });\n return `${sign}${variationPercent}`;\n }\n\n private buildProgressPercentage(): void {\n const currentPercentage: number = SharedCommonUtility.percent(this.resolvedCount, this.totalCount);\n this.progressPercentage = {\n percentage: currentPercentage,\n variation: null,\n absVariation: null,\n previousDate: null,\n };\n\n if (this.previousTotalCount > 0 && SharedCommonUtility.notNullish(this.previousComputedDate)) {\n const previousPercentage: number = SharedCommonUtility.percent(this.previousResolvedCount, this.previousTotalCount);\n const variation: number = currentPercentage - previousPercentage || 0;\n this.progressPercentage.variation = variation;\n this.progressPercentage.absVariation = Math.abs(variation);\n this.progressPercentage.previousDate = DateUtility.prettifyDate(this.previousComputedDate, {\n month: 'short',\n day: 'numeric',\n });\n }\n }\n\n public ngOnChanges(): void {\n this.buildProgressPercentage();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-route-wrapper',\n template: ``,\n})\nexport class RouteWrapperComponent {}\n","
\n
\n \n \n\n \n \n\n
\n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { auditIssuesViewStatus } from '../../../../shared/constants/audit-issues-view';\n\n@Component({\n selector: 'app-rule-filter',\n templateUrl: './rule-filter.component.html',\n styleUrls: ['./rule-filter.component.scss'],\n})\nexport class RuleFilterComponent {\n @Input() public status: auditIssuesViewStatus;\n\n @Input() public failedRulesCount: number;\n @Input() public reviewRulesCount: number;\n @Input() public passedRulesCount: number;\n @Input() public hidePassedRules: boolean;\n\n @Output() public onFilterChanged: EventEmitter = new EventEmitter();\n\n public issueStatus: typeof auditIssuesViewStatus;\n\n constructor() {\n this.issueStatus = auditIssuesViewStatus;\n }\n\n public onFilterSelect(event: auditIssuesViewStatus): void {\n this.onFilterChanged.emit(event);\n }\n}\n","\n
\n
\n

{{ title | translate }}

\n

{{ description | translate }}

\n
\n\n
\n
\n
\n \n \n \n \n
\n\n
\n \n {{ tableController.paginationLabel }}\n \n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n {{ (pageNum !== tableController.page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n
\n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n {{ tableController.paginationLabel }}\n \n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n {{ (pageNum !== tableController.page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { NgbPaginationConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { SupplementaryTableController } from './supplementary-table-controller';\n\n@Component({\n selector: 'app-rule-issues-supplementary-table',\n templateUrl: './rule-issues-supplementary-table.component.html',\n styleUrls: ['./rule-issues-table.component.scss'],\n providers: [NgbPaginationConfig],\n})\nexport class RuleIssuesSupplementaryTableComponent {\n @Input()\n public tableController: SupplementaryTableController;\n @Input()\n public title: string;\n @Input()\n public description: string;\n @Input()\n public name: string;\n @Input()\n public topPaginationAriaLabel: string;\n @Input()\n public bottomPaginationAriaLabel: string;\n}\n","
\n
\n {{ 'v_table_has_been_loaded' | translate: ('view_by' | translate) + ' ' + ('rule' | translate) }}\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n {{ getPaginationLabel(page, entriesPerPage, filteredTableData.length) }}\n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n {{ (pageNum !== page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n
\n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n {{ getPaginationLabel(page, entriesPerPage, filteredTableData.length) }}\n \n {{ 'label_previous' | translate }}\n {{ 'label_next' | translate }}\n \n \n {{ (pageNum !== page ? 'go_to_page' : 'page') | translate }}\n  \n \n {{ pageNum }}\n \n \n
\n
\n\n 0\"\n [tableController]=\"recommendationsTable\"\n [title]=\"'recommendations'\"\n [description]=\"'best_practices_table_description'\"\n [name]=\"'recommendations'\"\n [topPaginationAriaLabel]=\"'aria_label_scan_results_recommendations_table_top_pagination'\"\n [bottomPaginationAriaLabel]=\"'aria_label_scan_results_recommendations_table_bottom_pagination'\"\n>\n\n\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { NgbPaginationConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { partition } from 'lodash';\nimport { Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { IPageSummary, IScanSummary, IUserFlowScanPointSummary } from '../../../../shared/interfaces/scan-summaries.interface';\nimport {\n IDclConfig,\n ITableColumn,\n ITableConfig,\n ITableEmptyState,\n ITableRow,\n SortEvent,\n} from '../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../translate/translate.service';\nimport { severityToComparable } from '../../../../shared/constants/accessibility';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\nimport { NgbTableUtilities } from '../table/ngb-table/utilities/ngb-table.utilities';\nimport { AuditStandards } from '../../../../shared/constants/audit-standard';\nimport { NgbTableComponent } from '../table/ngb-table/ngb-table.component';\nimport { ISuccessCriteria } from '../../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { AccessibilityAuditToolNames, AuditToolNameToAuditType } from '../../../../shared/constants/audit-tool';\nimport { SharedAuditsUtility } from '../../../../shared/utils/audits.utility';\nimport { IAuditIssueViewData, IAuditIssueViewQueryParams } from '../../../../shared/interfaces/audit-issues-view.interface';\nimport { $auditIssuesView, auditIssuesViewStatus } from '../../../../shared/constants/audit-issues-view';\nimport { SharedSortUtility } from '../../../../shared/utils/sort.utility';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { SupplementaryTableController } from './supplementary-table-controller';\nimport { AclSecurityAdapter } from '../../services/acl.service';\nimport { UserAclService } from '../../services/user-acl.service';\nimport { RequiredSecurities } from '../../../../shared/constants/required-securities';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { SuccessCriteriaService } from '../../services/success-criteria.service';\nimport { CriteriaPreset, Separator, SuccessCriteriaFormatterService } from '../../services/success-criteria-formatter.service';\nimport { FeatureFlagService } from '../../services/feature-flag/feature-flag.service';\nimport { TenantSeveritiesService } from '../../services/tenant-severities.service';\nimport { ICustomSeveritiesMap } from '../../../../shared/interfaces/tenant.interface';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\nimport { ISeverityCellConfig } from '../table/ngb-table/cells/severity-cell/severity-cell.component';\nimport { IDSSeverityCellConfig } from '../table/ngb-table/cells/ds-severity-cell/ds-severity-cell.component';\nimport { ScanOrigin } from '../../../../shared/constants/scanning';\nimport { ParsedStandards } from '../../../../shared/constants/standard-parsing';\nimport { $scanSummaries } from '../../../../shared/constants/scan-summaries';\nimport { $scanAudit } from '../../../../shared/constants/scan-audit';\nimport { standardFilters } from '../../../../shared/constants/filters';\nimport { IParsedStandard } from '../../../../shared/interfaces/standard-parsing.interface';\n\nenum tableHeaders {\n ruleDescription = 'ruleDescription',\n successCriteriaConformanceLevel = 'successCriteriaConformanceLevel',\n severity = 'severity',\n elements = 'elements',\n open = 'open',\n dismissed = 'dismissed',\n scoreImpact = 'scoreImpact',\n findings = 'findings',\n}\n\ninterface IFailedHeaderOption {\n addScoreData: boolean;\n}\n\ninterface IIssueStatus {\n filter: (datum: IAuditIssueViewData) => boolean;\n header: tableHeaders[];\n value: (datum: IAuditIssueViewData) => number[]; // the number of issues\n applicableHeaders: (options?: IFailedHeaderOption) => string[];\n isDescriptionLink: boolean;\n}\n\ntype ISummary = IPageSummary | IScanSummary | IUserFlowScanPointSummary;\n\nconst FailedHandler: IIssueStatus = {\n filter: SharedAuditsUtility.hasAuditIssuesViewStatus.bind(SharedAuditsUtility, auditIssuesViewStatus.failed),\n header: [tableHeaders.open, tableHeaders.dismissed, tableHeaders.scoreImpact],\n value: (datum: IAuditIssueViewData): number[] => [\n datum[$auditIssuesView.failures],\n datum[$auditIssuesView.ignores],\n datum[$auditIssuesView.scoreImpact],\n ],\n applicableHeaders: (options: IFailedHeaderOption): string[] => {\n const noImpactHeaders: string[] = [\n tableHeaders.ruleDescription,\n tableHeaders.successCriteriaConformanceLevel,\n tableHeaders.severity,\n tableHeaders.open,\n tableHeaders.dismissed,\n ];\n if (options.addScoreData) {\n return [...noImpactHeaders, tableHeaders.scoreImpact];\n }\n return noImpactHeaders;\n },\n isDescriptionLink: true,\n};\n\nconst ReviewHandler: IIssueStatus = {\n filter: SharedAuditsUtility.hasAuditIssuesViewStatus.bind(SharedAuditsUtility, auditIssuesViewStatus.review),\n header: [tableHeaders.findings],\n value: (datum: IAuditIssueViewData): number[] => [datum[$auditIssuesView.failures]],\n applicableHeaders: () => [tableHeaders.ruleDescription, tableHeaders.successCriteriaConformanceLevel, tableHeaders.findings],\n isDescriptionLink: true,\n};\n\nconst PassedHandler: IIssueStatus = {\n filter: SharedAuditsUtility.hasAuditIssuesViewStatus.bind(SharedAuditsUtility, auditIssuesViewStatus.passed),\n header: [tableHeaders.elements],\n value: (datum: IAuditIssueViewData): number[] => [datum[$auditIssuesView.passes]],\n applicableHeaders: () => [tableHeaders.ruleDescription, tableHeaders.successCriteriaConformanceLevel, tableHeaders.elements],\n isDescriptionLink: false,\n};\n\nconst issueStatusToHandler: Record = {\n [auditIssuesViewStatus.failed]: FailedHandler,\n [auditIssuesViewStatus.review]: ReviewHandler,\n [auditIssuesViewStatus.passed]: PassedHandler,\n};\n\n@Component({\n selector: 'app-rule-issues-table',\n templateUrl: './rule-issues-table.component.html',\n styleUrls: ['./rule-issues-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NgbPaginationConfig],\n})\nexport class RuleIssuesTableComponent implements OnInit, OnChanges, OnDestroy {\n private readonly rawTableData: Record;\n\n public manualReviewTable: SupplementaryTableController;\n public recommendationsTable: SupplementaryTableController;\n\n @ViewChild('issuesTable') private issueTable: NgbTableComponent;\n\n @Input() public summary: ISummary;\n @Input() public auditTool: AccessibilityAuditToolNames;\n @Input() public scanId: string;\n @Input() public addScoreData: boolean;\n @Input() public isMonitoringTag: boolean;\n @Input() public isMonitoring: boolean;\n @Input() public flawPageId?: string;\n @Input() public componentId?: string;\n @Input() public scanOrigin?: ScanOrigin;\n @Input() public showWcagTerminologyOnly?: boolean;\n\n public tableConfig: Record;\n public tableData: Record;\n public filteredPaginatedTableData: ITableRow[];\n\n public entriesPerPage: number;\n public page: number;\n public entriesAmounts: number[];\n public issueStatusFilter: auditIssuesViewStatus;\n public AccessibilityAuditToolNames: typeof AccessibilityAuditToolNames;\n public includeStandard: IParsedStandard;\n public auditType: string;\n\n private subscription: Subscription = new Subscription();\n private canRunSupplementalScan: boolean;\n private customSeverities: ICustomSeveritiesMap;\n\n constructor(\n private translateService: TranslateService,\n private paginationConfig: NgbPaginationConfig,\n private userAclService: UserAclService,\n private successCriteriaService: SuccessCriteriaService,\n private successCriteriaFormatterService: SuccessCriteriaFormatterService,\n private featureFlagService: FeatureFlagService,\n private tenantSeveritiesService: TenantSeveritiesService,\n private changeDetector: ChangeDetectorRef,\n ) {\n this.addScoreData = false;\n this.paginationConfig.maxSize = 2;\n\n this.rawTableData = {\n [auditIssuesViewStatus.failed]: [],\n [auditIssuesViewStatus.review]: [],\n [auditIssuesViewStatus.passed]: [],\n };\n this.tableData = {\n [auditIssuesViewStatus.failed]: [],\n [auditIssuesViewStatus.review]: [],\n [auditIssuesViewStatus.passed]: [],\n };\n this.entriesAmounts = [5, 10, 20];\n this.entriesPerPage = this.entriesAmounts[1];\n this.page = 1;\n this.filterStatus(auditIssuesViewStatus.failed);\n\n this.tableConfig = null;\n\n this.AccessibilityAuditToolNames = AccessibilityAuditToolNames;\n this.isMonitoringTag = false;\n this.manualReviewTable = new SupplementaryTableController(\n translateService,\n this.entriesAmounts,\n this.successCriteriaFormatterService,\n );\n this.recommendationsTable = new SupplementaryTableController(\n translateService,\n this.entriesAmounts,\n this.successCriteriaFormatterService,\n );\n }\n\n private getAllTableConfig(): Record {\n return {\n [auditIssuesViewStatus.failed]: this.getTableConfig(auditIssuesViewStatus.failed, {\n iconId: 'highfive',\n title: this.translateService.instant('there_are_no_failed_findings'),\n subtitle: this.translateService.instant('scan_results_aggregated_issues_failed_empty_state_subtitle'),\n iconHeight: '80',\n iconWidth: '100',\n iconFill: 'none',\n }),\n [auditIssuesViewStatus.review]: this.getTableConfig(auditIssuesViewStatus.review, {\n iconId: 'clipboard-icon',\n title: this.translateService.instant('scan_results_aggregated_issues_review_empty_state_title'),\n subtitle: this.translateService.instant('scan_results_aggregated_issues_review_empty_state_subtitle'),\n iconHeight: '90',\n iconWidth: '70',\n iconFill: 'none',\n }),\n [auditIssuesViewStatus.passed]: this.getTableConfig(auditIssuesViewStatus.passed, {\n iconId: 'clipboard-red',\n title: this.translateService.instant('scan_results_aggregated_issues_passed_empty_state_title'),\n subtitle: this.translateService.instant('passed_no_results_available_description'),\n iconHeight: '90',\n iconWidth: '70',\n iconFill: 'none',\n }),\n };\n }\n\n private getTableConfig(issueStatusFilter: auditIssuesViewStatus, emptyState: ITableEmptyState): ITableConfig {\n const allColumns: { [key: string]: ITableColumn } = {\n [tableHeaders.ruleDescription]: {\n translationKey: 'table_header_rule_description',\n sortingEnabled: true,\n styles: {\n maxWidth: '45%',\n width: '45%',\n },\n },\n [tableHeaders.successCriteriaConformanceLevel]: {\n translationKey: this.showWcagTerminologyOnly ? 'standard_and_criterion' : 'table_header_sc_conformance_level',\n sortingEnabled: true,\n styles: {\n whiteSpace: 'pre-line',\n },\n },\n [tableHeaders.severity]: {\n translationKey: 'table_column_severity',\n sortingEnabled: true,\n },\n };\n for (const header of issueStatusToHandler[issueStatusFilter].header) {\n allColumns[header] = {\n translationKey: header,\n sortingEnabled: true,\n };\n }\n\n const tableConfig: ITableConfig = {\n emptyState: emptyState,\n caption: this.translateService.instant('findings_discovered'),\n columns: {},\n };\n\n const applicableHeaders: string[] = issueStatusToHandler[issueStatusFilter].applicableHeaders({\n addScoreData: this.addScoreData,\n });\n for (const applicableHeader of applicableHeaders) {\n tableConfig.columns[applicableHeader] = allColumns[applicableHeader];\n }\n return tableConfig;\n }\n\n private getComparable(column: string, rawDatum: IAuditIssueViewData): string {\n for (const [index, header] of issueStatusToHandler[this.issueStatusFilter].header.entries()) {\n if (column === header) {\n return String(issueStatusToHandler[this.issueStatusFilter].value(rawDatum)[index]);\n }\n }\n switch (column) {\n case tableHeaders.successCriteriaConformanceLevel:\n return this.displaySuccessCriteriasFull(rawDatum[$auditIssuesView.successCriteriaIdentifier]);\n case tableHeaders.severity:\n return severityToComparable[rawDatum[$auditIssuesView.severity]];\n case tableHeaders.findings:\n return String(rawDatum[$auditIssuesView.failures]);\n default:\n return String(rawDatum[column]);\n }\n }\n\n private displaySuccessCriteriasFull(identifiers: string[]): string {\n if (this.showWcagTerminologyOnly) {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n identifiers: identifiers ?? [],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaWithStandardFull,\n includeStandard: this.includeStandard,\n });\n }\n\n return this.successCriteriaFormatterService.toDisplayCriterias({\n identifiers: identifiers ?? [],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaFull,\n });\n }\n\n private extractData(summary: ISummary): [IAuditIssueViewData[], IAuditIssueViewData[], IAuditIssueViewData[]] {\n const [wcagIssues, recommendations]: IAuditIssueViewData[][] = SharedAuditsUtility.getAuditIssuesViewData(\n summary,\n this.auditTool,\n this.scanId,\n this.addScoreData,\n this.flawPageId,\n this.componentId,\n this.isMonitoring,\n this.scanOrigin,\n );\n\n const [manualReviewIssues, issues]: IAuditIssueViewData[][] = partition(wcagIssues, SharedAuditsUtility.isManualReviewStatus);\n\n return [issues, recommendations, manualReviewIssues];\n }\n\n private isDescriptionLink(issueStatus: IIssueStatus): boolean {\n return issueStatus.isDescriptionLink && !this.isMonitoringTag;\n }\n\n private toTableRows(\n issueStatusFilter: auditIssuesViewStatus,\n rawData: IAuditIssueViewData[],\n canRunSupplementalScan: boolean,\n ): ITableRow[] {\n const toTableRow = (entry: IAuditIssueViewData): ITableRow => {\n const queryParams: IAuditIssueViewQueryParams = entry[$auditIssuesView.queryParams];\n queryParams[ApiQueryOption.severity] = entry[$auditIssuesView.severity];\n queryParams[ApiQueryOption.ruleDescription] = entry[$auditIssuesView.ruleDescription];\n queryParams[ApiQueryOption.identifier] = entry[$auditIssuesView.successCriteriaIdentifier];\n queryParams[ApiQueryOption.totalFinding] =\n entry[$auditIssuesView.failures] + entry[$auditIssuesView.ignores] + entry[$auditIssuesView.passes];\n\n const severityCell: IDclConfig = SharedCommonUtility.notNullish(\n this.customSeverities?.get(entry[$auditIssuesView.severity]),\n )\n ? NgbTableUtilities.DSSeverityCell({\n severity: entry[$auditIssuesView.severity],\n customSeverity: this.customSeverities.get(entry[$auditIssuesView.severity]),\n })\n : NgbTableUtilities.severityCell({\n severity: entry[$auditIssuesView.severity],\n });\n\n const tableRow: ITableRow = {\n data: {\n [tableHeaders.ruleDescription]:\n canRunSupplementalScan && this.isDescriptionLink(issueStatusToHandler[issueStatusFilter])\n ? NgbTableUtilities.linkCell({\n text: entry[$auditIssuesView.ruleDescription],\n attributes: {\n routerLink: entry[$auditIssuesView.link],\n queryParams,\n queryParamsHandling: 'merge',\n },\n })\n : NgbTableUtilities.textCell({\n text: entry[$auditIssuesView.ruleDescription],\n }),\n [tableHeaders.successCriteriaConformanceLevel]: NgbTableUtilities.textCell({\n text: this.displaySuccessCriteriasFull(entry[$auditIssuesView.successCriteriaIdentifier]),\n }),\n [tableHeaders.severity]: severityCell,\n },\n };\n for (const [index, header] of issueStatusToHandler[issueStatusFilter].header.entries()) {\n tableRow.data[header] = NgbTableUtilities.textCell({\n text: String(issueStatusToHandler[issueStatusFilter].value(entry)[index]),\n });\n }\n return tableRow;\n };\n\n return rawData.filter(issueStatusToHandler[issueStatusFilter].filter).map(toTableRow);\n }\n\n private initialSort(issueStatusFilter: auditIssuesViewStatus): void {\n const sortFunction = (a: IAuditIssueViewData, b: IAuditIssueViewData): number => {\n const aWcagStandard: ISuccessCriteria = this.successCriteriaService.getSuccessCriteriaFromStandard(\n AuditStandards.wcag,\n a[$auditIssuesView.successCriteriaIdentifier][0],\n );\n const bWcagStandard: ISuccessCriteria = this.successCriteriaService.getSuccessCriteriaFromStandard(\n AuditStandards.wcag,\n b[$auditIssuesView.successCriteriaIdentifier][0],\n );\n\n const aSeverity: string = this.getComparable(tableHeaders.severity, a);\n const bSeverity: string = this.getComparable(tableHeaders.severity, b);\n\n const aIssues: string = this.getComparable(issueStatusToHandler[issueStatusFilter].header[0], a);\n const bIssues: string = this.getComparable(issueStatusToHandler[issueStatusFilter].header[0], b);\n\n return (\n bSeverity.localeCompare(aSeverity, 'en-US', { numeric: true, sensitivity: 'base' }) ||\n aIssues.localeCompare(bIssues, 'en-US', { numeric: true, sensitivity: 'base' }) ||\n aWcagStandard.versions[0].localeCompare(bWcagStandard.versions[0], 'en-US', {\n numeric: true,\n sensitivity: 'base',\n }) ||\n aWcagStandard.level.localeCompare(bWcagStandard.level)\n );\n };\n\n this.rawTableData[issueStatusFilter].sort(sortFunction);\n }\n\n private loadStandard(): void {\n if (this.showWcagTerminologyOnly) {\n this.auditType = AuditToolNameToAuditType[this.auditTool];\n this.includeStandard =\n ParsedStandards[\n this.summary[$scanSummaries.scanAuditsId][$scanAudit.audits][this.auditType][standardFilters.includeStandard]\n ];\n }\n }\n\n private reload(): void {\n const [issues, recommendations, manualReviewRequired]: IAuditIssueViewData[][] = this.extractData(this.summary);\n this.loadStandard();\n\n this.manualReviewTable.setIssueData(\n manualReviewRequired,\n {\n ruleDescriptionAsLink: !this.isMonitoringTag,\n displayAdditionalColumns: true,\n },\n this.showWcagTerminologyOnly,\n this.includeStandard,\n this.customSeverities,\n );\n this.recommendationsTable.setIssueData(\n recommendations,\n {\n ruleDescriptionAsLink: !this.isMonitoringTag,\n displayAdditionalColumns: false,\n },\n false,\n null,\n this.customSeverities,\n );\n\n for (const issueStatusFilter of Object.values(auditIssuesViewStatus)) {\n this.rawTableData[issueStatusFilter] = issues.filter(issueStatusToHandler[issueStatusFilter].filter);\n this.initialSort(issueStatusFilter);\n this.tableData[issueStatusFilter] = this.toTableRows(\n issueStatusFilter,\n this.rawTableData[issueStatusFilter],\n this.canRunSupplementalScan,\n );\n }\n\n this.setFilteredPaginatedTable();\n }\n\n private getPage(data: ITableRow[], page: number, entriesPerPage: number): ITableRow[] {\n const start: number = (page - 1) * entriesPerPage;\n const end: number = page * entriesPerPage;\n\n return data.slice(start, end);\n }\n\n private setFilteredPaginatedTable(): void {\n this.filteredPaginatedTableData = this.getPage(this.filteredTableData, this.page, this.entriesPerPage);\n }\n\n private tableDefaultSort(rows: IAuditIssueViewData[]): IAuditIssueViewData[] {\n const sortByDescription = (a: IAuditIssueViewData, b: IAuditIssueViewData): number => {\n const aValue: string = this.getComparable($auditIssuesView.ruleDescription, a);\n const bValue: string = this.getComparable($auditIssuesView.ruleDescription, b);\n\n return aValue.localeCompare(bValue, 'en-US', { numeric: true, sensitivity: 'base' });\n };\n const sortByIssues = (a: IAuditIssueViewData, b: IAuditIssueViewData): number => {\n const aValue: number = Number(this.getComparable($auditIssuesView.failures, a));\n const bValue: number = Number(this.getComparable($auditIssuesView.failures, b));\n\n return bValue - aValue;\n };\n\n return rows\n .sort(sortByDescription)\n .sort(sortByIssues)\n .sort(SharedSortUtility.functionSortObjectBySeverity($sortingOrder.desc, $auditIssuesView.severity));\n }\n\n public get hasComponentId(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.componentId);\n }\n\n public get filteredTableData(): ITableRow[] {\n return this.tableData[this.issueStatusFilter];\n }\n\n public get filteredTableConfig(): ITableConfig {\n return this.tableConfig[this.issueStatusFilter];\n }\n\n public get failedRulesCount(): number {\n return this.tableData[auditIssuesViewStatus.failed].length + this.manualReviewTable.dataLength;\n }\n\n public get reviewRulesCount(): number {\n return this.tableData[auditIssuesViewStatus.review].length;\n }\n\n public get passedRulesCount(): number {\n return this.tableData[auditIssuesViewStatus.passed].length;\n }\n\n public get showRuleIssuesSupplementartyTable(): boolean {\n return this.manualReviewTable.dataLength > 0 && this.issueStatusFilter === auditIssuesViewStatus.failed;\n }\n\n public filterStatus(event: auditIssuesViewStatus): void {\n this.issueStatusFilter = event;\n if (typeof this.issueTable !== 'undefined') {\n this.issueTable.reloadWithNewConfig(this.filteredTableConfig);\n }\n this.setFilteredPaginatedTable();\n }\n\n private sortFunc(direction: $sortingOrder, aValue: string | number, bValue: string | number): number {\n let ascending: number = 0;\n if (direction === $sortingOrder.all) {\n return ascending;\n }\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n ascending = aValue - bValue;\n } else {\n ascending = String(aValue).localeCompare(String(bValue), 'en-US', { numeric: true, sensitivity: 'base' });\n }\n\n return direction === $sortingOrder.asc ? ascending : -ascending;\n }\n\n public onTableSort({ column, direction }: SortEvent): void {\n const sortFunc = (a: IAuditIssueViewData, b: IAuditIssueViewData): number => {\n const aValue: string = this.getComparable(column, a);\n const bValue: string = this.getComparable(column, b);\n\n return this.sortFunc(direction, aValue, bValue);\n };\n\n if (direction === $sortingOrder.all) {\n this.tableData[this.issueStatusFilter] = this.toTableRows(\n this.issueStatusFilter,\n this.tableDefaultSort(this.rawTableData[this.issueStatusFilter]),\n this.canRunSupplementalScan,\n );\n } else {\n this.tableData[this.issueStatusFilter] = this.toTableRows(\n this.issueStatusFilter,\n [...this.rawTableData[this.issueStatusFilter]].sort(sortFunc),\n this.canRunSupplementalScan,\n );\n }\n\n this.setFilteredPaginatedTable();\n }\n\n public onPageChange(page: number): void {\n this.page = page;\n this.setFilteredPaginatedTable();\n }\n\n public onEntriesPerPageChange(entriesPerPage: number): void {\n this.entriesPerPage = entriesPerPage;\n this.setFilteredPaginatedTable();\n }\n\n public getPaginationLabel(page: number, entriesPerPage: number, total: number): string {\n return this.translateService.instant('n_of_t', [\n `${Math.min((page - 1) * entriesPerPage + 1, total)} - ${Math.min(page * entriesPerPage, total)}`,\n String(total),\n ]);\n }\n\n public ngOnInit(): void {\n this.loadStandard();\n\n const canRunSupplementalScan$: Observable = this.userAclService.createCheckAccessForCurrentUser().pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useWorkspaceFromUser()\n .useDigitalPropertyFromUser()\n .useFunctionalActions(RequiredSecurities.AT_Scans_Read.functionalActions)\n .check(),\n ),\n tap((canRunSupplementalScan: boolean): void => {\n this.canRunSupplementalScan = canRunSupplementalScan;\n }),\n );\n\n const customSeverities$: Observable = this.featureFlagService\n .variation$(FeatureFlagCollection.customSeverities, false)\n .pipe(\n switchMap((customSeveritiesEnabled: boolean): Observable => {\n if (!customSeveritiesEnabled) {\n return of(null);\n }\n\n return this.tenantSeveritiesService.getAll();\n }),\n );\n\n this.tableConfig = this.getAllTableConfig();\n\n this.subscription.add(\n combineLatest([canRunSupplementalScan$, customSeverities$])\n .pipe(\n tap(([canRunSupplementalScan, customSeverities]: [boolean, ICustomSeveritiesMap]): void => {\n this.canRunSupplementalScan = canRunSupplementalScan;\n this.customSeverities = customSeverities;\n this.reload();\n this.changeDetector.detectChanges();\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnChanges(): void {\n this.tableConfig = this.getAllTableConfig();\n this.reload();\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { ITableConfig, ITableRow, SortEvent } from '../components/table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../translate/translate.service';\nimport { $sortingOrder } from '../../../shared/constants/sort';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\nexport abstract class BasePaginatedTableController {\n public entriesPerPage: number;\n public availableEntriesPerPage: number[];\n public page: number;\n public paginatedData: ITableRow[];\n public paginationLabel: string;\n public dataLength: number;\n protected tableData: ITableRow[];\n\n protected rawData: T[];\n public tableConfig: ITableConfig;\n protected translateService: TranslateService;\n\n protected constructor(translateService: TranslateService, entriesPerPageAmount: number[]) {\n this.translateService = translateService;\n this.availableEntriesPerPage = entriesPerPageAmount;\n this.page = 1;\n this.entriesPerPage = entriesPerPageAmount[0];\n this.rawData = [];\n this.tableData = [];\n this.dataLength = 0;\n }\n\n protected getPaginationLabel(page: number, entriesPerPage: number, total: number): string {\n return this.translateService.instant('n_of_t', [\n `${Math.min((page - 1) * entriesPerPage + 1, total)} - ${Math.min(page * entriesPerPage, total)}`,\n String(total),\n ]);\n }\n\n protected updatePaginatedData(): void {\n this.paginatedData = SharedCommonUtility.getPaginatedItems(this.tableData, this.page, this.entriesPerPage);\n this.paginationLabel = this.getPaginationLabel(this.page, this.entriesPerPage, this.tableData.length);\n }\n\n protected sortFunc(direction: $sortingOrder, aValue: string | number, bValue: string | number): number {\n let ascending: number = 0;\n if (direction === $sortingOrder.all) {\n return ascending;\n }\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n ascending = aValue - bValue;\n } else {\n ascending = String(aValue).localeCompare(String(bValue), 'en-US', { numeric: true, sensitivity: 'base' });\n }\n\n return direction === $sortingOrder.asc ? ascending : -ascending;\n }\n\n public onEntriesPerPageChange(value: number): void {\n this.entriesPerPage = value;\n this.updatePaginatedData();\n }\n\n public onPageChange(value: number): void {\n this.page = value;\n this.updatePaginatedData();\n }\n\n protected abstract filterInitialData(rawData: T[]): T[];\n protected abstract initialSort(): void;\n protected abstract toTableData(rawData: T[]): ITableRow[];\n protected abstract sortData(column: string, direction: $sortingOrder, a: T, b: T): number;\n\n public setInitialData(rawData: T[]): void {\n this.rawData = this.filterInitialData(rawData);\n this.initialSort();\n this.tableData = this.toTableData(this.rawData);\n this.dataLength = this.tableData.length;\n this.updatePaginatedData();\n }\n\n public onTableSort({ column, direction }: SortEvent): void {\n const sortFunc = (a: T, b: T): number => {\n return this.sortData(column, direction, a, b);\n };\n\n if (direction === $sortingOrder.all) {\n this.tableData = this.toTableData(this.rawData);\n } else {\n this.tableData = this.toTableData([...this.rawData].sort(sortFunc));\n }\n\n this.updatePaginatedData();\n }\n}\n","import { BasePaginatedTableController } from '../../shared/base-paginated-table-controller';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IDclConfig, ITableConfig, ITableRow } from '../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../table/ngb-table/utilities/ngb-table.utilities';\nimport { IAuditIssueViewData } from '../../../../shared/interfaces/audit-issues-view.interface';\nimport { $auditIssuesView } from '../../../../shared/constants/audit-issues-view';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\nimport { severityToComparable } from '../../../../shared/constants/accessibility';\nimport { CriteriaPreset, Separator, SuccessCriteriaFormatterService } from '../../services/success-criteria-formatter.service';\nimport { ICustomSeveritiesMap } from '../../../../shared/interfaces/tenant.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { IDSSeverityCellConfig } from '../table/ngb-table/cells/ds-severity-cell/ds-severity-cell.component';\nimport { ISeverityCellConfig } from '../table/ngb-table/cells/severity-cell/severity-cell.component';\nimport { IParsedStandard } from '../../../../shared/interfaces/standard-parsing.interface';\n\nenum tableColumns {\n ruleDescription = 'ruleDescription',\n findings = 'findings',\n successCriteriaConformanceLevel = 'successCriteriaConformanceLevel',\n severity = 'severity',\n open = 'open',\n dismissed = 'dismissed',\n}\n\nexport class SupplementaryTableController extends BasePaginatedTableController {\n private ruleDescriptionAsLink: boolean;\n private displayAdditionalColumns: boolean;\n private customSeverities: ICustomSeveritiesMap;\n private showWcagTerminologyOnly: boolean;\n private includeStandard: IParsedStandard;\n\n constructor(\n translateService: TranslateService,\n availableEntriesPerPage: number[],\n private successCriteriaFormatterService: SuccessCriteriaFormatterService,\n ) {\n super(translateService, availableEntriesPerPage);\n this.entriesPerPage = availableEntriesPerPage[1];\n }\n\n private getTableConfig(): ITableConfig {\n return {\n caption: this.translateService.instant('best_practices'),\n columns: {\n [tableColumns.ruleDescription]: {\n translationKey: 'table_header_rule_description',\n sortingEnabled: true,\n },\n ...(this.displayAdditionalColumns\n ? {\n [tableColumns.successCriteriaConformanceLevel]: {\n translationKey: this.showWcagTerminologyOnly ? 'standard_and_criterion' : 'table_header_sc_conformance_level',\n sortingEnabled: true,\n },\n [tableColumns.severity]: {\n translationKey: 'table_column_severity',\n sortingEnabled: true,\n styles: {\n width: '10%',\n },\n },\n [tableColumns.open]: {\n translationKey: 'open',\n sortingEnabled: true,\n },\n [tableColumns.dismissed]: {\n translationKey: 'dismissed',\n sortingEnabled: true,\n },\n }\n : {\n [tableColumns.findings]: {\n translationKey: 'findings',\n sortingEnabled: true,\n },\n }),\n },\n };\n }\n\n private getSuccessCriteriaInfo(identifiers: string[]): string {\n if (this.showWcagTerminologyOnly === true) {\n return this.successCriteriaFormatterService.toDisplayCriterias({\n identifiers: identifiers ?? [],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaWithStandardFull,\n includeStandard: this.includeStandard,\n });\n }\n\n return this.successCriteriaFormatterService.toDisplayCriterias({\n identifiers: identifiers ?? [],\n separator: Separator.newLine,\n preset: CriteriaPreset.criteriaFull,\n });\n }\n\n protected initialSort(): void {\n const sortFunction = (a: IAuditIssueViewData, b: IAuditIssueViewData): number =>\n this.sortFunc($sortingOrder.asc, a[$auditIssuesView.failures], b[$auditIssuesView.failures]);\n\n this.rawData.sort(sortFunction);\n }\n\n protected filterInitialData(rawData: IAuditIssueViewData[]): IAuditIssueViewData[] {\n return rawData.filter((val: IAuditIssueViewData) => val[$auditIssuesView.failures] > 0 || val[$auditIssuesView.ignores] > 0);\n }\n\n protected toTableData(rawData: IAuditIssueViewData[]): ITableRow[] {\n const toTableRow = (entry: IAuditIssueViewData): ITableRow => {\n const severityCell: IDclConfig = SharedCommonUtility.notNullish(\n this.customSeverities,\n )\n ? NgbTableUtilities.DSSeverityCell({\n severity: entry[$auditIssuesView.severity],\n customSeverity: this.customSeverities.get(entry[$auditIssuesView.severity]),\n })\n : NgbTableUtilities.severityCell({\n severity: entry[$auditIssuesView.severity],\n });\n\n return {\n data: {\n [tableColumns.ruleDescription]: this.ruleDescriptionAsLink\n ? NgbTableUtilities.linkCell({\n text: entry[$auditIssuesView.ruleDescription],\n attributes: {\n routerLink: entry[$auditIssuesView.link],\n queryParams: entry[$auditIssuesView.queryParams],\n queryParamsHandling: 'merge',\n },\n })\n : NgbTableUtilities.textCell({ text: entry[$auditIssuesView.ruleDescription] }),\n ...(this.displayAdditionalColumns\n ? {\n [tableColumns.successCriteriaConformanceLevel]: NgbTableUtilities.textCell({\n text: this.getSuccessCriteriaInfo(entry[$auditIssuesView.successCriteriaIdentifier]),\n classes: ['pre-line'],\n }),\n [tableColumns.severity]: severityCell,\n [tableColumns.open]: NgbTableUtilities.textCell({\n text: String(entry[$auditIssuesView.failures]),\n }),\n [tableColumns.dismissed]: NgbTableUtilities.textCell({\n text: String(entry[$auditIssuesView.ignores]),\n }),\n }\n : {\n [tableColumns.findings]: NgbTableUtilities.textCell({\n text: String(entry[$auditIssuesView.failures]),\n }),\n }),\n },\n };\n };\n\n return rawData.map(toTableRow);\n }\n\n protected sortData(column: string, direction: $sortingOrder, a: IAuditIssueViewData, b: IAuditIssueViewData): number {\n let aValue: string | number = '';\n let bValue: string | number = '';\n\n switch (column) {\n case tableColumns.ruleDescription:\n aValue = a[$auditIssuesView.ruleDescription];\n bValue = b[$auditIssuesView.ruleDescription];\n break;\n case tableColumns.findings:\n aValue = a[$auditIssuesView.failures];\n bValue = b[$auditIssuesView.failures];\n break;\n case tableColumns.successCriteriaConformanceLevel:\n aValue = this.getSuccessCriteriaInfo(a[$auditIssuesView.successCriteriaIdentifier]);\n bValue = this.getSuccessCriteriaInfo(b[$auditIssuesView.successCriteriaIdentifier]);\n break;\n case tableColumns.severity:\n aValue = severityToComparable[a[$auditIssuesView.severity]];\n bValue = severityToComparable[b[$auditIssuesView.severity]];\n break;\n case tableColumns.open:\n aValue = String(a[$auditIssuesView.failures]);\n bValue = String(b[$auditIssuesView.failures]);\n break;\n case tableColumns.dismissed:\n aValue = String(a[$auditIssuesView.ignores]);\n bValue = String(b[$auditIssuesView.ignores]);\n break;\n default:\n // no default\n break;\n }\n\n return this.sortFunc(direction, aValue, bValue);\n }\n\n public setIssueData(\n rawData: IAuditIssueViewData[],\n { ruleDescriptionAsLink, displayAdditionalColumns }: { ruleDescriptionAsLink: boolean; displayAdditionalColumns: boolean },\n showWcagTerminologyOnly: boolean = false,\n includeStandard: IParsedStandard = null,\n customSeverities?: ICustomSeveritiesMap,\n ): void {\n this.ruleDescriptionAsLink = ruleDescriptionAsLink;\n this.customSeverities = customSeverities;\n this.showWcagTerminologyOnly = showWcagTerminologyOnly;\n this.includeStandard = includeStandard;\n // display success criteria & conformance level, severity, open and dismissed data\n this.displayAdditionalColumns = displayAdditionalColumns;\n this.tableConfig = this.getTableConfig();\n this.setInitialData(rawData);\n }\n}\n","
\n \n \n \n \n
\n {{ 'scan_issue_severity_' + severity | translate }}\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { $severity } from '../../../../shared/constants/accessibility';\n\n@Component({\n selector: 'app-rule-severity',\n templateUrl: './rule-severity.component.html',\n})\nexport class RuleSeverityComponent {\n @Input() public severity: string;\n\n public $severity: typeof $severity;\n constructor() {\n this.$severity = $severity;\n }\n}\n","\n
\n {{ 'change_status' | translate }}\n
\n\n
\n

\n {{\n (this.modalInputData?.data?.enabled\n ? 'ask_if_want_to_include_rule_for_future_scans'\n : 'ask_if_want_to_exclude_rule_for_future_scans'\n ) | translate\n }}\n

\n

\n {{\n (this.modalInputData?.data?.enabled\n ? 'ask_if_want_to_include_num_rules_for_future_scans'\n : 'ask_if_want_to_exclude_num_rules_for_future_scans'\n ) | translate: [this.modalInputData?.data?.ruleId.length]\n }}\n

\n

\n {{ 'title' | translate }}:\n {{ this.modalInputData?.data?.title }}\n

\n
\n
\n
\n \n \n\n
\n \n
\n
\n
\n
\n
\n\n \n
\n","import { Component, Input, Output, EventEmitter, ViewChild, OnDestroy, ElementRef } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subject, Observable, Subscription } from 'rxjs';\n\nimport { A11yService } from '../../services/a11y.service';\nimport { ModalService } from '../../services/modal.service';\nimport { ErrorMessageService } from '../../services/error-message.service';\nimport { TranslateService } from '../../translate/translate.service';\nimport { AuditRuleService } from '../../services/audit-rule.service';\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { IModalDialogInputData } from '../../interfaces/modal-dialog.interface';\nimport { IRuleAuditHistoryLineItem } from '../../../../shared/interfaces/rule-audit-history.interface';\nimport { IModal } from '../modals/modal.interface';\nimport { ModalContainerComponent } from '../modals/modal-container.component';\nimport { errorMessagesNames } from '../../../../shared/constants/errors';\n\n@Component({\n selector: 'app-rule-status-change',\n templateUrl: './rule-status-change.component.html',\n styleUrls: ['./rule-status-change.component.scss'],\n})\nexport class RuleStatusChangeComponent implements IModal, OnDestroy {\n private subscription: Subscription;\n private formValidationRequest: Subject;\n\n @Input() public modalInputData: IModalDialogInputData;\n\n @Output() public onSave: EventEmitter;\n @Output() public onCancel: EventEmitter;\n\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n public form: UntypedFormGroup;\n public formValidationRequest$: Observable;\n\n constructor(\n private a11yService: A11yService,\n private formBuilder: UntypedFormBuilder,\n private modalService: ModalService,\n private errorMessageService: ErrorMessageService,\n private translateService: TranslateService,\n private auditRuleService: AuditRuleService,\n private element: ElementRef,\n ) {\n this.subscription = new Subscription();\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n\n this.onSave = new EventEmitter();\n this.onCancel = new EventEmitter();\n\n this.createForm();\n }\n\n private createForm(): void {\n const formConfig = {\n comment: new UntypedFormControl('', {\n validators: [CustomValidators.validateIsEmpty, Validators.required],\n updateOn: 'blur',\n }),\n };\n this.form = this.formBuilder.group(formConfig);\n }\n\n private handleError(message: string, response: HttpErrorResponse): void {\n const errorMessage: string = this.errorMessageService.getAppErrorResponse(response);\n const appMessage: string = this.translateService.instant(message);\n\n this.a11yService.setMessage(appMessage);\n\n console.error('[RuleStatusChange.handleError] ' + appMessage, response, errorMessage);\n }\n\n private onChangeRuleStatusError(response: HttpErrorResponse): void {\n this.handleError('error_action_cant_be_performed', response);\n\n if (response?.error?.app?.name === errorMessagesNames.UserRoleNotDefined) {\n this.modalService.closeModal();\n }\n }\n\n public isBulkOperation(ruleId?: string | string[]): boolean {\n return Array.isArray(ruleId);\n }\n\n public closeModal(res?: IRuleAuditHistoryLineItem): void {\n if (typeof res !== 'undefined') {\n this.onSave.emit(res);\n } else {\n this.onCancel.emit();\n }\n this.modalService.closeModal();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public async changeRuleStatus(): Promise {\n this.formValidationRequest.next();\n\n if (this.form.valid) {\n this.subscription.add(\n this.auditRuleService\n .toggleAuditRule(\n this.isBulkOperation(this.modalInputData.data.ruleId)\n ? this.modalInputData.data.ruleId.join(',')\n : this.modalInputData.data.ruleId,\n this.modalInputData.data.enabled,\n this.form.get('comment').value,\n this.isBulkOperation(this.modalInputData.data.ruleId),\n )\n .subscribe({\n next: this.closeModal.bind(this),\n error: this.onChangeRuleStatusError.bind(this),\n }),\n );\n } else {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n }\n }\n}\n","
\n \n {{ 'rerun_scanning' | translate }}\n \n \n {{ 'remove_scanning' | translate }}\n \n \n {{ 'view_scan_results' | translate }}\n \n
\n","import { Component, EventEmitter, Input, Output, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NotificationService } from '../../services/notification.service';\nimport { NotificationPosition } from '../../models/notification.model';\nimport { ScanService } from '../../services/scan.service';\nimport { IScanActionError } from '../../interfaces/scan.interface';\nimport { TranslateService } from '../../translate/translate.service';\nimport { completedStatuses, cannotRerunScanningTypes, scanningType, scanStatus } from '../../../../shared/constants/scanning';\nimport { ScanAction } from '../../shared/constants';\nimport { Api } from '../../../../shared/constants/api';\nimport { IScan } from '../../../../shared/interfaces/scan.interface';\nimport { $scan, SCAN_URLS_SIZE_LIMIT } from '../../../../shared/constants/scan';\nimport { WindowService } from '../../services/window.service';\nimport { AclSecurityAdapter } from '../../services/acl.service';\nimport { UserAclService } from '../../services/user-acl.service';\nimport { RequiredSecurities } from '../../../../shared/constants/required-securities';\n\n@Component({\n selector: 'app-scan-actions',\n templateUrl: './scan-actions.component.html',\n styleUrls: ['./scan-actions.component.scss'],\n})\nexport class ScanActionsComponent implements OnDestroy {\n private subscription: Subscription;\n @Input() public scan: IScan;\n @Output() public onScanActionSuccess: EventEmitter;\n @Output() public onScanActionError: EventEmitter;\n\n public scanStatus: typeof scanStatus;\n public Api: typeof Api;\n\n constructor(\n private translateService: TranslateService,\n private scanService: ScanService,\n private notificationService: NotificationService,\n private windowService: WindowService,\n private userAclService: UserAclService,\n ) {\n this.subscription = new Subscription();\n this.onScanActionSuccess = new EventEmitter();\n this.onScanActionError = new EventEmitter();\n this.scanStatus = scanStatus;\n this.Api = Api;\n }\n\n private handleError(message: string, response: HttpErrorResponse): void {\n const errorDetails: IScanActionError = {\n message: message,\n response: response,\n };\n\n this.onScanActionError.emit(errorDetails);\n }\n\n public removeScan(): void {\n const onRemoveScanSuccess = (): void => {\n this.notificationService.success(\n this.translateService.instant('remove_scan_success_body', [this.scan.url]),\n NotificationPosition.Toast,\n );\n this.onScanActionSuccess.emit(ScanAction.Remove);\n };\n\n const onRemoveScanError = (response: HttpErrorResponse): void => {\n this.handleError('remove_scan_error', response);\n };\n\n const isConfirmed: boolean = this.windowService.confirm(this.translateService.instant('remove_scan_confirmation'));\n\n if (isConfirmed === false) {\n return;\n }\n\n this.subscription.add(\n this.scanService\n .removeScan(this.scan.workspace.toString(), this.scan[$scan.digitalProperty] as string, this.scan._id)\n .subscribe(onRemoveScanSuccess, onRemoveScanError),\n );\n }\n\n public canRerunScan(): boolean {\n if (cannotRerunScanningTypes.includes(this.scan[$scan.scanningType])) {\n return false;\n }\n\n return this.scan.status === this.scanStatus.completed || this.scan.status === this.scanStatus.completed_with_errors;\n }\n\n public get canRemoveScan$(): Observable {\n return this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useWorkspaceFromUser()\n .useDigitalPropertyFromUser()\n .useFunctionalActions(RequiredSecurities.AT_Scans_Delete.functionalActions)\n .check(),\n ),\n );\n }\n\n public rerunScan(): void {\n const onRerunScanSuccess = (): void => {\n this.notificationService.success(\n this.translateService.instant('rerun_scan_success_body', [this.scan.url]),\n NotificationPosition.Toast,\n );\n if (this.scan.scanningType === scanningType.entireSite && this.scan.limitCrawlingPagesTo > SCAN_URLS_SIZE_LIMIT) {\n this.notificationService.info({\n message: this.translateService.instant('rerun_scan_limit_size_of_url_entireSite', SCAN_URLS_SIZE_LIMIT),\n });\n }\n if (this.scan.scanningType === scanningType.customLinks && this.scan.customLinks.length > SCAN_URLS_SIZE_LIMIT) {\n this.notificationService.info({\n message: this.translateService.instant('rerun_scan_limit_size_of_url_customLinks', SCAN_URLS_SIZE_LIMIT),\n });\n }\n this.onScanActionSuccess.emit(ScanAction.ReRun);\n };\n\n const onRerunScanError = (response: HttpErrorResponse): void => {\n this.handleError('rerun_scan_error', response);\n };\n\n this.subscription.add(\n this.scanService\n .rerunScan(this.scan.workspace.toString(), this.scan[$scan.digitalProperty] as string, this.scan._id)\n .subscribe(onRerunScanSuccess, onRerunScanError),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public isScanCompleted(): boolean {\n return this.scan && completedStatuses.includes(this.scan[$scan.status]);\n }\n}\n","import { CallbackDataParams, EChartsOption, EChartsType } from 'echarts/types/dist/shared';\nimport * as echarts from 'echarts/core';\nimport { GridComponent, MarkLineComponent, TooltipComponent } from 'echarts/components';\nimport { LineChart } from 'echarts/charts';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { Component, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IAnalyticsResultItem } from '../../../../shared/interfaces/analytics.interface';\nimport { scanStatus } from '../../../../shared/constants/scanning';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IAccessibilityMarkLine, IAccessibilityMarkLinePoint } from '../../interfaces/scan-chart.interface';\nimport { ScanChartUtility } from '../../utility/scan-chart.utility';\nimport { EapColors } from '../../shared/eap-colors';\nimport { DateUtility } from '../../utility/date.utility';\nimport { $analyticsResultItem } from '../../../../shared/constants/analytics';\n\n@Component({\n selector: 'app-scan-analytics-health-graph',\n templateUrl: './scan-analytics-health-graph.component.html',\n styleUrls: ['./scan-analytics-health-graph.component.scss'],\n})\nexport class ScanAnalyticsHealthGraphComponent implements OnDestroy {\n @Input() set healthData(healthData: IAnalyticsResultItem[]) {\n if (healthData) {\n this.onGetHealthDataSuccess(healthData);\n }\n }\n\n @Input() private scanHistoryLimit: number;\n private subscriptions: Subscription;\n\n private LINE_COLOR: string = '#002F57';\n private GRIDLINE_COLOR: string = EapColors.GreyStrokeInactive;\n\n public chartData: IAnalyticsResultItem[];\n public chart: EChartsType;\n\n constructor(private translate: TranslateService) {\n this.subscriptions = new Subscription();\n this.chartData = [];\n }\n\n private getHealthValuesAndLabels(): [string[], number[]] {\n const labels: string[] = [];\n const healthValues: number[] = [];\n\n const constructData = (scanAnalytics: IAnalyticsResultItem): void => {\n const date: Date = new Date(scanAnalytics.scanDate);\n const month: string = new Intl.DateTimeFormat('en', { month: 'short' }).format(date);\n const day: string = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);\n\n labels.push(`${month} ${day}`);\n\n if (scanAnalytics.scanStatus === scanStatus.completed_with_errors && scanAnalytics.scanHealth === null) {\n healthValues.push(0);\n } else {\n healthValues.push(Math.floor(scanAnalytics.scanHealth));\n }\n };\n\n this.chartData = this.chartData\n .sort((a: IAnalyticsResultItem, b: IAnalyticsResultItem): number => {\n return new Date(a.scanDate).getTime() - new Date(b.scanDate).getTime();\n })\n .slice(-this.scanHistoryLimit);\n this.chartData.forEach(constructData);\n\n const blankEntries: number = this.scanHistoryLimit - labels.length;\n\n for (let _ = 0; _ < blankEntries; _++) {\n labels.push('');\n }\n\n return [labels, healthValues];\n }\n\n private drawHealthGraph(): void {\n if (Object.keys(this.chartData).length === 0) {\n return;\n }\n\n const [labels, healthValues]: [string[], number[]] = this.getHealthValuesAndLabels();\n const markLinePoints: IAccessibilityMarkLinePoint[] = ScanChartUtility.getMarkLinePoints(this.chartData);\n echarts.use([GridComponent, TooltipComponent, LineChart, MarkLineComponent, SVGRenderer]);\n this.chart = echarts.init(document.getElementById('echarts'));\n document.querySelector('#echarts svg').setAttribute('aria-hidden', 'true');\n\n const xAxisTitle: string = this.translate.instant('graph_axis_date');\n const yAxisTitle: string = this.translate.instant('accessibility_health_score');\n const seriesTitle: string = yAxisTitle;\n\n const option: EChartsOption = {\n grid: {\n containLabel: true,\n top: '5%',\n bottom: '15%',\n left: '10%',\n right: '5%',\n },\n animation: false,\n tooltip: {\n backgroundColor: 'rgb(0,0,0)',\n confine: true,\n textStyle: {\n color: 'rgb(255,255,255)',\n },\n formatter: (params: CallbackDataParams): string => {\n const formattedDate: string = DateUtility.prettifyDate(\n new Date(this.chartData[params.dataIndex][$analyticsResultItem.scanDate]),\n {\n year: 'numeric',\n month: 'long',\n },\n );\n return `${formattedDate}
${params.seriesName}: ${params.data}
${this.translate.instant(\n this.chartData[params.dataIndex][$analyticsResultItem.includeStandard],\n )}`;\n },\n },\n xAxis: {\n boundaryGap: false,\n name: xAxisTitle,\n nameLocation: 'middle',\n nameTextStyle: {\n fontWeight: 'bold',\n fontSize: 16,\n lineHeight: 24,\n color: 'black',\n fontFamily: 'Arial',\n },\n nameGap: 32,\n data: labels,\n axisTick: {\n alignWithLabel: true,\n },\n },\n yAxis: {\n name: yAxisTitle,\n nameLocation: 'middle',\n nameTextStyle: {\n fontWeight: 'bold',\n fontSize: 16,\n lineHeight: 24,\n color: 'black',\n fontFamily: 'Arial',\n },\n min: 0,\n max: 100,\n nameGap: 32,\n splitLine: {\n lineStyle: {\n color: this.GRIDLINE_COLOR,\n },\n },\n },\n series: [\n {\n name: seriesTitle,\n type: 'line',\n symbol: 'circle',\n symbolSize: 10,\n data: healthValues,\n zlevel: 2,\n itemStyle: {\n color: this.LINE_COLOR,\n },\n lineStyle: {\n color: this.LINE_COLOR,\n },\n markLine: {\n name: 'Scanner version changed',\n zlevel: 1,\n tooltip: {\n formatter: ScanChartUtility.markLineFormatter.bind(this, this.translate, this.chartData),\n },\n symbol: 'none',\n data: markLinePoints.map(\n (accessibilityPoint: IAccessibilityMarkLinePoint): IAccessibilityMarkLine => ({\n label: {\n show: false,\n },\n xAxis: accessibilityPoint.index,\n accessibilityPoint: accessibilityPoint,\n }),\n ),\n },\n },\n ],\n };\n\n this.chart.setOption(option);\n }\n\n private onGetHealthDataSuccess(healthData: IAnalyticsResultItem[]): void {\n this.chartData = healthData;\n this.drawHealthGraph();\n }\n\n public onWindowResize(): void {\n this.chart?.resize();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n \n {{ 'monitoring_report_accessibility_health_graph_description' | translate }}\n \n
\n
\n\n","
\n \n {{ 'label_add_authentication_details' | 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
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { scanAuthenticationType } from '../../../../shared/constants/scanning';\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { InputFieldContext } from '../common-input/common-input.component';\nimport { scanCreateRequest } from '../../../../shared/constants/scan-create-request';\nimport { UserService } from '../../services/user.service';\nimport {\n IDigitalProperty,\n IDigitalPropertyListItem,\n IDigitalPropertyMonitoring,\n} from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty, $digitalPropertyMonitoring } from '../../../../shared/constants/digital-properties';\nimport { DigitalPropertyService } from '../../services/digital-property.service';\nimport { ISecureWebAuthentication } from '../../../../shared/interfaces/scan-secuire-web-authentication.interface';\nimport { $scan } from '../../../../shared/constants/scan';\n\nconst basicControls: string[] = [scanCreateRequest.scanAuthenticationPassword, scanCreateRequest.scanAuthenticationUserName];\nconst swaControls: string[] = [\n scanCreateRequest.swaLoginPageURL,\n scanCreateRequest.swaPassword,\n scanCreateRequest.swaUserName,\n scanCreateRequest.swaPasswordFieldId,\n scanCreateRequest.swaUserNameFieldId,\n scanCreateRequest.swaSubmitFieldId,\n scanCreateRequest.swaSubmitUsernameFieldId,\n scanCreateRequest.swaSubmitSuccessId,\n];\nconst controls: string[] = [...basicControls, ...swaControls];\nconst nonRequiredFields: string[] = [scanCreateRequest.swaSubmitUsernameFieldId];\n\n@Component({\n selector: 'app-scan-authentication-details',\n templateUrl: './scan-authentication-details.component.html',\n styleUrls: ['./scan-authentication-details.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanAuthenticationDetailsComponent implements OnInit, OnDestroy {\n private scanAuthenticationChangeSubscription: Subscription;\n private propertyChangeSubscription: Subscription;\n private domainRestrictions$: BehaviorSubject;\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Observable;\n public isDisabled: boolean;\n public scanCreateRequest: typeof scanCreateRequest;\n public scanAuthenticationType: typeof scanAuthenticationType;\n public addAuthDetails: boolean;\n\n @Input()\n public set monitoring(value: IDigitalPropertyMonitoring) {\n if (this.form.get(scanCreateRequest.scanAuthenticationType) || !value?.[$digitalPropertyMonitoring.scanAuthenticationType]) {\n return;\n }\n\n switch (value[$digitalPropertyMonitoring.scanAuthenticationType]) {\n case scanAuthenticationType.basic_authentication:\n this.onAddAuthenticationDetails(true);\n this.form.patchValue({\n [scanCreateRequest.scanAuthenticationType]: scanAuthenticationType.basic_authentication,\n [scanCreateRequest.scanAuthenticationUserName]: value[$digitalPropertyMonitoring.scanAuthenticationUserName],\n [scanCreateRequest.scanAuthenticationPassword]: value[$digitalPropertyMonitoring.scanAuthenticationPassword],\n });\n break;\n case scanAuthenticationType.secure_web_authentication:\n const swaAuthentication: ISecureWebAuthentication = value[$digitalPropertyMonitoring.secureWebAuthentication];\n this.onAddAuthenticationDetails(true);\n this.form.patchValue({\n [scanCreateRequest.scanAuthenticationType]: scanAuthenticationType.secure_web_authentication,\n [scanCreateRequest.swaLoginPageURL]: swaAuthentication[$scan.swaLoginPageURL],\n [scanCreateRequest.swaPassword]: swaAuthentication[$scan.swaPassword],\n [scanCreateRequest.swaUserName]: swaAuthentication[$scan.swaUserName],\n [scanCreateRequest.swaPasswordFieldId]: swaAuthentication[$scan.swaPasswordFieldId],\n [scanCreateRequest.swaUserNameFieldId]: swaAuthentication[$scan.swaUserNameFieldId],\n [scanCreateRequest.swaSubmitFieldId]: swaAuthentication[$scan.swaSubmitFieldId],\n [scanCreateRequest.swaSubmitUsernameFieldId]: swaAuthentication[$scan.swaSubmitUsernameFieldId],\n [scanCreateRequest.swaSubmitSuccessId]: swaAuthentication[$scan.swaSubmitSuccessId],\n });\n break;\n // no default\n }\n }\n\n @Input()\n public set disabled(value: boolean) {\n this.isDisabled = value;\n\n const opts: Record = { emitEvent: false };\n\n [...controls, scanCreateRequest.scanAuthenticationType]\n .filter((key: string): boolean => key in this.form.controls)\n .map((key: string): AbstractControl => this.form.get(key))\n .forEach((control: AbstractControl): void => (this.isDisabled ? control.disable(opts) : control.enable(opts)));\n\n this.changeDetectorRef.detectChanges();\n }\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private changeDetectorRef: ChangeDetectorRef,\n private userService: UserService,\n private digitalPropertyService: DigitalPropertyService,\n ) {\n this.scanCreateRequest = scanCreateRequest;\n this.scanAuthenticationType = scanAuthenticationType;\n this.scanAuthenticationChangeSubscription = new Subscription();\n this.propertyChangeSubscription = new Subscription();\n this.domainRestrictions$ = new BehaviorSubject([]);\n }\n\n private setAuthenticationType(type: scanAuthenticationType = scanAuthenticationType.basic_authentication): void {\n const control: UntypedFormControl = this.form.get(scanCreateRequest.scanAuthenticationType) as UntypedFormControl;\n if (control === null) {\n this.form.registerControl(scanCreateRequest.scanAuthenticationType, this.formBuilder.control(type));\n } else {\n control.setValue(type, { onlySelf: true, emitEvent: false });\n }\n }\n\n private addValidators(): void {\n controls\n .filter((control: string): boolean => control in this.form.controls)\n .forEach((control: string): void => {\n const ctrl: AbstractControl = this.form.get(control);\n const validators: ValidatorFn[] = [];\n if (!nonRequiredFields.includes(control)) {\n validators.push(CustomValidators.required);\n validators.push(CustomValidators.validateIsEmpty);\n }\n if (control === scanCreateRequest.swaLoginPageURL) {\n validators.push(CustomValidators.urlValidator);\n validators.push(CustomValidators.domainRestrictionsValidator(this.domainRestrictions$.value));\n }\n ctrl.setValidators(validators);\n });\n }\n\n private removeBasicAuthControls(): void {\n this.form.removeControl(scanCreateRequest.scanAuthenticationUserName);\n this.form.removeControl(scanCreateRequest.scanAuthenticationPassword);\n }\n\n private removeSWAControls(): void {\n this.form.removeControl(scanCreateRequest.swaLoginPageURL);\n this.form.removeControl(scanCreateRequest.swaPassword);\n this.form.removeControl(scanCreateRequest.swaUserName);\n this.form.removeControl(scanCreateRequest.swaPasswordFieldId);\n this.form.removeControl(scanCreateRequest.swaUserNameFieldId);\n this.form.removeControl(scanCreateRequest.swaSubmitFieldId);\n this.form.removeControl(scanCreateRequest.swaSubmitUsernameFieldId);\n this.form.removeControl(scanCreateRequest.swaSubmitSuccessId);\n }\n\n private onDigitalPropertyChanged(property: IDigitalProperty): void {\n this.domainRestrictions$.next(\n this.digitalPropertyService.getDomainRestrictions(property[$digitalProperty.authorizedDomains]),\n );\n }\n\n public upsertControls(): void {\n const controlNotExists = (control: string): boolean => control in this.form.controls === false;\n const setControl = (control: string): any => this.form.registerControl(control, this.formBuilder.control(''));\n\n switch (this.form.get(scanCreateRequest.scanAuthenticationType).value) {\n case scanAuthenticationType.secure_web_authentication:\n swaControls.filter(controlNotExists).forEach(setControl);\n break;\n\n case scanAuthenticationType.basic_authentication:\n basicControls.filter(controlNotExists).forEach(setControl);\n break;\n // no default\n }\n\n this.addValidators();\n\n this.form.updateValueAndValidity();\n }\n\n public resetControls(): void {\n const setControl = (control: string): any => this.form.registerControl(control, this.formBuilder.control(''));\n const removeControl = (key: string): void => this.form.removeControl(key);\n const hasControl = (key: string): boolean => key in this.form.controls;\n\n switch (this.form.get(scanCreateRequest.scanAuthenticationType).value) {\n case scanAuthenticationType.secure_web_authentication:\n swaControls.forEach(setControl);\n basicControls.filter(hasControl).forEach(removeControl);\n break;\n\n case scanAuthenticationType.basic_authentication:\n basicControls.forEach(setControl);\n swaControls.filter(hasControl).forEach(removeControl);\n break;\n // no default\n }\n\n this.addValidators();\n\n this.form.updateValueAndValidity();\n }\n\n public onAddAuthenticationDetails(addAuthEnabled: boolean, resetControls: boolean = true): void {\n if (addAuthEnabled) {\n this.setAuthenticationType(\n resetControls\n ? scanAuthenticationType.basic_authentication\n : this.form.get(scanCreateRequest.scanAuthenticationType).value,\n );\n\n this.scanAuthenticationChangeSubscription.unsubscribe();\n this.scanAuthenticationChangeSubscription = this.form\n .get(scanCreateRequest.scanAuthenticationType)\n .valueChanges.subscribe(() => this.resetControls());\n } else {\n this.setAuthenticationType(scanAuthenticationType.no_authentication);\n\n this.removeBasicAuthControls();\n this.removeSWAControls();\n }\n\n this.addAuthDetails = addAuthEnabled;\n\n if (resetControls) {\n this.resetControls();\n } else {\n this.upsertControls();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n // eslint-disable-next-line consistent-return\n public getInputFieldContext(field: scanCreateRequest): InputFieldContext {\n switch (field) {\n case scanCreateRequest.scanAuthenticationUserName:\n case scanCreateRequest.swaUserName:\n return {\n label: 'scan_authentication_user_name',\n field,\n placeholder: 'user_name_placeholder',\n autocomplete: 'off',\n required: true,\n };\n case scanCreateRequest.scanAuthenticationPassword:\n case scanCreateRequest.swaPassword:\n return {\n label: 'scan_authentication_password',\n field,\n placeholder: 'user_password_placeholder',\n type: 'password',\n autocomplete: 'off',\n required: true,\n };\n case scanCreateRequest.swaUserNameFieldId:\n return {\n label: 'username_field_css_selector',\n field,\n placeholder: 'username_field_css_selector',\n required: true,\n };\n case scanCreateRequest.swaPasswordFieldId:\n return {\n label: 'password_field_css_selector',\n field,\n placeholder: 'password_field_css_selector',\n required: true,\n };\n case scanCreateRequest.swaSubmitSuccessId:\n return {\n label: 'success_element_css_selector',\n field,\n placeholder: 'success_element_css_selector',\n required: true,\n };\n case scanCreateRequest.swaSubmitFieldId:\n return {\n label: 'submit_button_css_selector',\n field,\n placeholder: 'submit_button_css_selector',\n required: true,\n };\n case scanCreateRequest.swaSubmitUsernameFieldId:\n return {\n label: 'username_submit_button_css_selector',\n field,\n placeholder: 'username_submit_button_css_selector',\n required: false,\n description: 'html_username_submit_button_id_description',\n };\n case scanCreateRequest.swaLoginPageURL:\n return {\n label: 'scan_authentication_login_url',\n field,\n subLabel: 'login_url_placeholder',\n required: true,\n };\n // no default\n }\n }\n\n public updateAuthValues(): void {\n const authenticationType: scanAuthenticationType = this.form.getRawValue()[\n scanCreateRequest.scanAuthenticationType\n ] as scanAuthenticationType;\n if (authenticationType && authenticationType !== scanAuthenticationType.no_authentication) {\n this.onAddAuthenticationDetails(true, false);\n } else {\n this.onAddAuthenticationDetails(false);\n }\n }\n\n public ngOnInit(): void {\n this.updateAuthValues();\n\n this.scanAuthenticationChangeSubscription = this.form.get(scanCreateRequest.scanAuthenticationType).valueChanges.subscribe({\n next: this.updateAuthValues.bind(this),\n });\n\n this.propertyChangeSubscription.add(\n this.userService.currentDigitalProperty$\n .pipe(\n distinctUntilChanged(\n (prev: IDigitalPropertyListItem | null, next: IDigitalPropertyListItem | null): boolean =>\n prev?.[$digitalProperty._id] === next?.[$digitalProperty._id],\n ),\n )\n .subscribe(this.onDigitalPropertyChanged.bind(this)),\n );\n }\n\n public ngOnDestroy(): void {\n this.scanAuthenticationChangeSubscription.unsubscribe();\n this.propertyChangeSubscription.unsubscribe();\n }\n}\n","
\n \n {{ 'label_modify_headers' | translate }}\n \n\n
\n
\n {{ 'label_modify_headers_description' | translate }}\n
\n\n
\n \n \n \n \n 1\"\n (click)=\"removeControl(index)\"\n [disabled]=\"isDisabled\"\n class=\"btn btn-link margin-bottom fw-bold\"\n >\n {{ 'action_delete' | translate }}\n \n
\n \n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { scanCreateRequest } from '../../../../shared/constants/scan-create-request';\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { $scanHeaders } from '../../../../shared/constants/scan';\nimport { IScanHeader } from '../../../../shared/interfaces/scan.interface';\n\n@Component({\n selector: 'app-scan-extra-headers',\n templateUrl: './scan-extra-headers.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanExtraHeadersComponent {\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public headersControlName: string;\n public isDisabled: boolean;\n public modifyHeaders: boolean;\n public $scanHeaders: typeof $scanHeaders;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.headersControlName = scanCreateRequest.headers;\n this.$scanHeaders = $scanHeaders;\n }\n\n @Input()\n public set disabled(value: boolean) {\n this.isDisabled = value;\n\n if (value) {\n this.headersForm?.disable({ emitEvent: false });\n } else {\n this.headersForm?.enable({ emitEvent: false });\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public addControl(name: string = '', value: string = ''): void {\n this.headersForm.push(\n this.formBuilder.group({\n [$scanHeaders.name]: this.formBuilder.control(name, [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$scanHeaders.value]: this.formBuilder.control(value, [CustomValidators.required, CustomValidators.validateIsEmpty]),\n }),\n );\n\n this.changeDetectorRef.detectChanges();\n }\n\n @Input()\n public set headers(headers: IScanHeader[]) {\n if (Array.isArray(headers) && headers.length > 0) {\n if (this.form.contains(this.headersControlName) === false) {\n this.form.registerControl(this.headersControlName, this.formBuilder.array([]));\n } else {\n this.headersForm.clear();\n }\n\n this.modifyHeaders = true;\n\n for (const header of headers) {\n this.addControl(header[$scanHeaders.name], header[$scanHeaders.value]);\n }\n } else {\n this.modifyHeaders = false;\n this.onModifyHeaders(false);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n public get headersForm(): UntypedFormArray {\n return this.form.get(this.headersControlName) as UntypedFormArray;\n }\n\n public get headersValues(): UntypedFormGroup[] {\n return this.headersForm.controls as UntypedFormGroup[];\n }\n\n public onModifyHeaders(value: boolean): void {\n if (value === false) {\n this.form.removeControl(this.headersControlName);\n this.changeDetectorRef.detectChanges();\n return;\n }\n\n if (this.form.contains(this.headersControlName) === false) {\n this.form.registerControl(this.headersControlName, this.formBuilder.array([]));\n this.addControl();\n }\n }\n\n public removeControl(index: number): void {\n this.headersForm.removeAt(index);\n this.changeDetectorRef.detectChanges();\n }\n}\n","
\n \n {{ 'scan_score_chart_aria_label' | translate: scanScore }}\n \n
\n
\n {{ 'legend' | translate }}\n
\n
    \n
  • \n \n {{ 'label_score_weak' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.low][0], scoreRanges[scoreRangeLabels.low][1]] }}\n \n
  • \n
  • \n \n {{ 'label_score_average' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.mid][0], scoreRanges[scoreRangeLabels.mid][1]] }}\n \n
  • \n
  • \n \n {{ 'label_score_strong' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.high][0], scoreRanges[scoreRangeLabels.high][1]] }}\n \n
  • \n
\n
\n
\n
\n
\n
\n {{ 'monitoring_score_change_details_first_part' | translate }}\n \n {{ scoreChange.message }}\n \n
\n {{ 'monitoring_score_change_details_second_part' | translate: scoreChange.score }}\n
\n
\n\n\n \n \n \n \n \n \n \n \n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n ViewChild,\n SimpleChanges,\n ChangeDetectorRef,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { PieChart } from 'echarts/charts';\nimport { EChartsOption } from 'echarts/types/dist/shared';\nimport { isEqual } from 'lodash';\n\nimport { IScanSummary } from '../../../../shared/interfaces/scan-summaries.interface';\nimport { $scanSummaries } from '../../../../shared/constants/scan-summaries';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../translate/translate.service';\n\nenum scoreRangeLabels {\n low = 'low',\n mid = 'mid',\n high = 'high',\n}\n\n@Component({\n selector: 'app-scan-health-chart',\n templateUrl: './scan-health-chart.component.html',\n styleUrls: ['./scan-health-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanHealthChartComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n private pieChart: echarts.EChartsType;\n\n @ViewChild('scoreChartTarget') private scoreChartTarget: ElementRef;\n @ViewChild('svgPatterns') private svgPatterns: ElementRef;\n @Input() public scanSummary: IScanSummary;\n @Input() public previousScanSummary: IScanSummary;\n\n public scanScore: number;\n public scoreRanges: Record;\n public scoreRangeLabels: typeof scoreRangeLabels;\n public scoreChange: {\n class: string;\n message: string;\n score: string;\n };\n public colors: Record;\n\n constructor(\n private ref: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService,\n ) {\n this.scanSummary = null;\n this.scanScore = null;\n this.scoreRangeLabels = scoreRangeLabels;\n this.scoreRanges = {\n [scoreRangeLabels.low]: [0, 49],\n [scoreRangeLabels.mid]: [50, 79],\n [scoreRangeLabels.high]: [80, 100],\n };\n this.colors = {\n [scoreRangeLabels.low]: '#b10606',\n [scoreRangeLabels.mid]: '#B85000',\n [scoreRangeLabels.high]: '#20652a',\n };\n }\n\n private initChart(): void {\n if (!this.scoreChartTarget) {\n return;\n }\n\n this.scanScore = Math.floor(this.scanSummary[$scanSummaries.score]);\n\n if (this.pieChart) {\n this.pieChart.dispose();\n }\n\n this.changeDetectorRef.detectChanges();\n\n const option: EChartsOption = {\n series: {\n type: 'pie',\n radius: [55, 70],\n left: 'center',\n width: '100%',\n animation: false,\n silent: true,\n itemStyle: {\n borderColor: '#FFFFFF',\n borderWidth: 0,\n },\n label: {\n show: false,\n },\n labelLine: {},\n data: [\n {\n value: this.scanScore,\n },\n {\n value: 100 - this.scanScore,\n },\n ],\n },\n };\n\n echarts.use([PieChart, SVGRenderer]);\n const elChart: HTMLDivElement = this.scoreChartTarget.nativeElement;\n this.pieChart = echarts.init(elChart);\n elChart.querySelector('svg').setAttribute('aria-hidden', 'true');\n this.pieChart.on('finished', () => {\n const xmlns: string = 'http://www.w3.org/2000/svg';\n const scoreLabelWrap: SVGGElement = document.createElementNS(xmlns, 'g') as SVGGElement;\n scoreLabelWrap.setAttribute('class', 'score-label');\n const scoreLabel: SVGTextElement = document.createElementNS(xmlns, 'text') as SVGTextElement;\n scoreLabel.setAttribute('dx', '50%');\n scoreLabel.setAttribute('dy', '50%');\n scoreLabel.setAttribute('text-anchor', 'middle');\n scoreLabel.textContent = String(this.scanScore);\n scoreLabelWrap.appendChild(scoreLabel);\n this.pieChart.getDom().getElementsByTagName('svg')[0].appendChild(scoreLabelWrap);\n });\n this.pieChart.setOption(option);\n }\n\n public get scoreClass(): string {\n if (\n this.scanScore >= this.scoreRanges[scoreRangeLabels.low][0] &&\n this.scanScore <= this.scoreRanges[scoreRangeLabels.low][1]\n ) {\n return scoreRangeLabels.low;\n } else if (\n this.scanScore >= this.scoreRanges[scoreRangeLabels.mid][0] &&\n this.scanScore <= this.scoreRanges[scoreRangeLabels.mid][1]\n ) {\n return scoreRangeLabels.mid;\n }\n return scoreRangeLabels.high;\n }\n\n public calculateScoreChange(): void {\n if (SharedCommonUtility.isNullish(this.previousScanSummary)) {\n return;\n }\n const prevScore: number = Math.floor(this.previousScanSummary[$scanSummaries.score]);\n const latestScore: number = Math.floor(this.scanSummary[$scanSummaries.score]);\n\n if (latestScore - prevScore > 0) {\n this.scoreChange = {\n class: 'score-increase',\n message: this.translateService.instant('score-increase-message', latestScore - prevScore),\n score: String(prevScore),\n };\n } else if (latestScore - prevScore < 0) {\n this.scoreChange = {\n class: 'score-decrease',\n message: this.translateService.instant('score-decrease-message', prevScore - latestScore),\n score: String(prevScore),\n };\n } else {\n this.scoreChange = {\n class: 'score-unchanged',\n message: this.translateService.instant('score-unchanged-message'),\n score: String(prevScore),\n };\n }\n }\n\n public ngOnInit(): void {\n this.calculateScoreChange();\n }\n\n public ngAfterViewInit(): void {\n this.ref.nativeElement.querySelectorAll('svg.square').forEach((i: HTMLElement) => {\n i.appendChild(this.svgPatterns.nativeElement);\n });\n this.initChart();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('scanSummary' in changes) {\n if (!isEqual(changes.scanSummary.previousValue, changes.scanSummary.currentValue)) {\n this.initChart();\n }\n }\n }\n\n public ngOnDestroy(): void {\n if (this.pieChart) {\n this.pieChart.off('click');\n }\n }\n}\n","
\n

{{ 'pre_scan_advanced_scan_title' | translate }}

\n \n
\n {{ 'pre_scan_advanced_scan_description' | translate }}\n {{ 'create_new_flow' | translate }}\n {{ 'or_choose_one_from_dropdown' | translate }}\n
\n\n
\n
\n \n
\n
\n
\n","import { ChangeDetectionStrategy, Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { scanCreateRequest } from '../../../../shared/constants/scan-create-request';\nimport { Api } from '../../../../shared/constants/api';\nimport { ApiPathBuilder } from '../../../../shared/services/api-path-builder';\nimport { AutomatedUserFlowService } from '../../services/automated-user-flow.service';\nimport { AutomatedFlowType } from '../../../../shared/constants/automated-user-flow';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { IAutomatedFlowShortItem } from '../../../../shared/interfaces/automated-user-flow.interface';\n\n@Component({\n selector: 'app-scan-pre-scan-flow',\n templateUrl: './scan-pre-scan-flow.component.html',\n styleUrl: './scan-pre-scan-flow.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanPreScanFlowComponent implements OnInit, OnDestroy {\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public showTitle: boolean = true;\n\n protected readonly scanCreateRequest: typeof scanCreateRequest = scanCreateRequest;\n protected readonly Api: typeof Api = Api;\n protected preScanFlows$: Observable;\n\n constructor(\n private formBuilder: FormBuilder,\n private userFlowService: AutomatedUserFlowService,\n private loadErrorHandler: LoadErrorHandler,\n ) {\n this.preScanFlows$ = this.userFlowService\n .getByType(AutomatedFlowType.preScan)\n .pipe(\n catchError(\n this.loadErrorHandler.handleErrorObservable.bind(\n this.loadErrorHandler,\n 'automated_scan_user_flow_load_failed',\n ScanPreScanFlowComponent.name,\n ),\n ),\n );\n }\n\n protected get createFlowLink(): string {\n return ApiPathBuilder('/').websitesAndApps.scans.user_flows.automated_user_flows.create.build();\n }\n\n ngOnInit(): void {\n this.form.addControl(scanCreateRequest.preScanFlowId, this.formBuilder.control(null));\n }\n\n ngOnDestroy(): void {\n this.form.removeControl(scanCreateRequest.preScanFlowId);\n }\n}\n","import { Api } from '../constants/api';\nimport { SharedCommonUtility } from '../utils/common.utility';\n\ntype Query = [string, string | number | boolean];\n\ntype PathBuilder = {\n [P in keyof T]: PathBuilder & ((...args: (string | number)[]) => PathBuilder);\n} & {\n build: () => string;\n query: (param: Query[0], value: Query[1]) => PathBuilder;\n};\n\ntype IApiPathBuilder = (host?: string, ...initialPath: string[]) => PathBuilder;\n\n/**\n * A proxy that builds a path based on the properties accessed.\n *\n * @example ApiPathBuilder().issue_integration_connection.issue_tracking.issue_integration_connection.build();\n * @example ApiPathBuilder().issue_integration_connection.issue_tracking('10001').issue_integration_connection.build();\n * @example ApiPathBuilder('https://blah.com').api.issue_tracking.active('1').home.build();\n * @example ApiPathBuilder().issue_integration_connection.issue_tracking.query('param', 'value').build();\n */\nexport const ApiPathBuilder: IApiPathBuilder = (host?: string, ...extraPaths: string[]): PathBuilder => {\n const createProxy = (path: string[], query?: Query[]): PathBuilder => {\n return new Proxy((): void => {}, {\n get(_: any, prop: string): any {\n if (prop === 'build' || prop === 'toString') {\n const queryStr: string = (query ?? []).map(([param, value]: Query): string => `${param}=${value}`).join('&');\n return (): string => `${host ? '' : '/'}${path.join('/')}${queryStr ? `?${queryStr}` : ''}`;\n }\n\n if (prop === 'query') {\n return (param: string, value: string | number | boolean): PathBuilder => {\n if (query) {\n query.push([param, encodeURIComponent(value)]);\n }\n return createProxy(path, query ?? [[param, encodeURIComponent(value)]]);\n };\n }\n\n if (prop in Api) {\n path.push(Api[prop]);\n }\n\n return createProxy(path, query);\n },\n apply(_: any, __: any, args: any[]): any {\n if (args.length > 0) {\n path.push(...args.map(encodeURIComponent));\n }\n return createProxy(path, query);\n },\n });\n };\n\n return createProxy(host ? [SharedCommonUtility.removeTrailingSlash(host), ...extraPaths] : extraPaths);\n};\n","import { EChartsOption } from 'echarts/types/dist/shared';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { PieChart } from 'echarts/charts';\n\nimport { CommonUtility } from '../../utility/common.utility';\n\ntype ScoreLevel = 'high' | 'low' | 'medium';\n\n@Component({\n selector: 'app-scan-score-circle',\n templateUrl: './scan-score-circle.component.html',\n styleUrls: ['./scan-score-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanScoreCircleComponent implements AfterViewInit {\n private pieChart: echarts.EChartsType;\n\n @Input()\n public score: number;\n public uid: string;\n\n constructor() {\n this.uid = CommonUtility.createUniqueDOMId();\n }\n\n public drawScanScoreChart(): void {\n const option: EChartsOption = {\n series: {\n type: 'pie',\n radius: [18, 26],\n left: 'center',\n animation: false,\n silent: true,\n itemStyle: {\n borderColor: '#FFFFFF',\n borderWidth: 0,\n },\n label: {\n show: false,\n },\n labelLine: {\n show: false,\n },\n data: [\n {\n value: this.score,\n },\n {\n value: 100 - this.score,\n },\n ],\n },\n };\n\n echarts.use([PieChart, SVGRenderer]);\n const elChart: HTMLDivElement = document.getElementById(this.uid) as HTMLDivElement;\n this.pieChart = echarts.init(elChart);\n this.pieChart.setOption(option);\n }\n\n public get scoreLevel(): ScoreLevel {\n if (this.score < 50) {\n return 'low';\n }\n if (this.score < 80) {\n return 'medium';\n }\n return 'high';\n }\n\n public ngAfterViewInit(): void {\n this.drawScanScoreChart();\n }\n}\n","\n
{{ score }}
\n
\n\n","
\n
\n \n
\n \n \n
\n
\n\n
\n
    \n \n \n \n
\n
\n
\n","import { Subscription } from 'rxjs';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Output,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { IDigitalPropertyListItem } from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\nimport { UserService } from '../../services/user.service';\nimport { ScanTagService } from '../../services/scan-tag.service';\nimport { IScanTag, IScanTagServerResponse } from '../../../../shared/interfaces/scan-tag.interface';\nimport { $scanTag } from '../../../../shared/constants/scan-tag';\nimport { TranslateService } from '../../translate/translate.service';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { ScanTagUtility } from '../../../../shared/utils/scan-tag.utility';\n\n@Component({\n selector: 'app-scan-tag-filter',\n templateUrl: './scan-tag-filter.component.html',\n styleUrls: ['./scan-tag-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanTagFilterComponent implements OnInit, AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n\n @ViewChild('searchField')\n private searchField: ElementRef;\n\n public selectedScanTagId: string;\n public digitalPropertyScanTags: IScanTag[];\n public filteredValues: IScanTag[];\n public filterText: string;\n public $scanTag: typeof $scanTag;\n\n @Output()\n public onTagSelected: EventEmitter;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private userService: UserService,\n private scanTagService: ScanTagService,\n private translateService: TranslateService,\n private loadErrorHandler: LoadErrorHandler,\n ) {\n this.subscriptions = new Subscription();\n this.digitalPropertyScanTags = [];\n this.filteredValues = [];\n this.filterText = '';\n this.onTagSelected = new EventEmitter();\n }\n\n private onGetDigitalPropertySuccess(digitalProperty: IDigitalPropertyListItem): void {\n this.subscriptions.add(\n this.scanTagService\n .getScanTagsFromDigitalProperty(digitalProperty[$digitalProperty.workspace]._id, digitalProperty[$digitalProperty._id])\n .subscribe({\n next: this.onGetScanTagsSuccess.bind(this),\n error: this.onGetScanTagsError.bind(this),\n }),\n );\n }\n\n private handleError(message: string, response: HttpErrorResponse, words?: string | string[] | number | number[]): void {\n this.loadErrorHandler.handleErrorWithCustomAppMessage(\n message,\n this.translateService.instant(message, words),\n response,\n ScanTagFilterComponent.name,\n );\n }\n\n private onGetScanTagsError(errorResponse: HttpErrorResponse): void {\n this.handleError('error_getting_scan_tags', errorResponse);\n }\n\n private onGetDigitalPropertyError(errorResponse: HttpErrorResponse): void {\n this.handleError('error_getting_digital_property', errorResponse);\n }\n\n private onGetScanTagsSuccess(scanTagResponse: IScanTagServerResponse): void {\n this.digitalPropertyScanTags = scanTagResponse.tags.filter(\n (scanTag: IScanTag): boolean => !ScanTagUtility.isReservedSystemTag(scanTag[$scanTag.tagName]),\n );\n\n this.applyFilter();\n }\n\n public select(scanTag: IScanTag): void {\n if (scanTag === null || scanTag[$scanTag._id] === this.selectedScanTagId) {\n return;\n }\n this.selectedScanTagId = scanTag[$scanTag._id];\n this.onTagSelected.emit(scanTag);\n this.changeDetectorRef.detectChanges();\n }\n\n public applyFilter(): void {\n this.filteredValues = [];\n\n const searchString: string = this.filterText.trim().toLowerCase();\n\n if (searchString.length === 0) {\n this.filteredValues = [...this.digitalPropertyScanTags];\n this.changeDetectorRef.detectChanges();\n return;\n }\n\n for (const scanTag of this.digitalPropertyScanTags) {\n if (scanTag[$scanTag.tagName].toLowerCase().includes(searchString)) {\n this.filteredValues.push(scanTag);\n }\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.userService.currentDigitalProperty$.subscribe({\n next: this.onGetDigitalPropertySuccess.bind(this),\n error: this.onGetDigitalPropertyError.bind(this),\n }),\n );\n }\n\n public ngAfterViewInit(): void {\n this.searchField.nativeElement.focus();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, mergeMap, take } from 'rxjs/operators';\n\nimport { $scanTag, SystemTags } from '../../../../shared/constants/scan-tag';\nimport { IScanTag, IScanTagServerResponse } from '../../../../shared/interfaces/scan-tag.interface';\nimport { UserService } from '../../services/user.service';\nimport { ScanTagService } from '../../services/scan-tag.service';\nimport { LoadErrorHandler } from '../../services/load-error-handler';\nimport { AutomatedScanAdvancedService } from '../../pages/public/automated-scan/advanced/automated-scan-advanced.service';\nimport { IDigitalPropertyListItem } from '../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\nimport { $workspace } from '../../../../shared/constants/workspace';\nimport { ScanTagUtility } from '../../../../shared/utils/scan-tag.utility';\nimport { scanningType } from '../../../../shared/constants/scanning';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n@Component({\n selector: 'app-scan-tag-selector',\n templateUrl: './scan-tag-selector.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ScanTagSelectorComponent),\n multi: true,\n },\n ],\n})\nexport class ScanTagSelectorComponent implements OnInit, ControlValueAccessor {\n public readonly $scanTag: typeof $scanTag = $scanTag;\n\n private allTags: IScanTag[] = [];\n private userTags: IScanTag[] = [];\n private enableReservedSystemTags: boolean;\n\n @Input() public disabled: boolean;\n @Input() public disabledUnselectedValue: boolean;\n @Input() public required: boolean;\n @Input() public errorState: boolean;\n @Input() public errorMessage: string;\n\n public subscriptions: Subscription;\n public selectedTagId: string | null;\n\n private _onChange: (_scanId: string) => void;\n private _onTouched: () => void;\n\n constructor(\n private automatedScanAdvancedService: AutomatedScanAdvancedService,\n private changeDetector: ChangeDetectorRef,\n private loadErrorHandler: LoadErrorHandler,\n private scanTagService: ScanTagService,\n private userService: UserService,\n ) {\n this.subscriptions = new Subscription();\n this._onChange = (_scanId: string): void => {};\n this._onTouched = (): void => {};\n this.selectedTagId = null;\n this.disabledUnselectedValue = true;\n this.disabled = false;\n }\n\n public get availableTags(): IScanTag[] {\n return this.enableReservedSystemTags ? this.allTags : this.userTags;\n }\n\n private subscribeToScanningType(): void {\n this.subscriptions.add(\n this.automatedScanAdvancedService.getScanningType$().subscribe((type: scanningType) => {\n if (type === scanningType.automatedUserFlow) {\n this.disabled = true;\n this.enableReservedSystemTags = true;\n this.selectByName(SystemTags.AutomatedUserFlow);\n } else {\n this.disabled = false;\n this.enableReservedSystemTags = false;\n this.resetSelectedTagIfUnavailable();\n }\n this.changeDetector.detectChanges();\n }),\n );\n }\n\n private handleSelectTag(_scanTagId: string): void {\n if (_scanTagId === this.selectedTagId) {\n return;\n }\n this.selectedTagId = _scanTagId;\n }\n\n public onScanTagChange(event: Event): void {\n const target: HTMLInputElement = event.target as HTMLInputElement;\n this.handleSelectTag(target.value);\n this._onTouched();\n this._onChange(target.value);\n this.changeDetector.detectChanges();\n }\n\n private selectByName(tagName: string): void {\n const scanTag: IScanTag = this.availableTags.find((tag: IScanTag) => tag[$scanTag.tagName] === tagName);\n\n if (SharedCommonUtility.notNullish(scanTag)) {\n this.handleSelectTag(scanTag._id);\n }\n }\n\n private resetSelectedTagIfUnavailable(): void {\n if (this.availableTags.every((tag: IScanTag) => tag._id !== this.selectedTagId)) {\n this.handleSelectTag(null);\n }\n }\n\n public registerOnChange(fn: (_level: string) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.detectChanges();\n }\n\n public writeValue(value: string): void {\n this.selectedTagId = value;\n this.changeDetector.detectChanges();\n }\n\n private onDigitalPropertyChanged(digitalProperty: IDigitalPropertyListItem): void {\n const digitalPropertyId: string = digitalProperty[$digitalProperty._id];\n const workspaceId: string = digitalProperty[$digitalProperty.workspace][$workspace._id];\n this.subscriptions.add(\n this.scanTagService.getScanTagsFromDigitalProperty(workspaceId, digitalPropertyId).subscribe({\n next: (response: IScanTagServerResponse): void => {\n this.allTags = response.tags;\n this.userTags = response.tags.filter((tag: IScanTag) => !ScanTagUtility.isReservedSystemTag(tag[$scanTag.tagName]));\n this.changeDetector.detectChanges();\n },\n error: (error: HttpErrorResponse) => {\n this.loadErrorHandler.handleError('error_getting_scan_tags', error, ScanTagSelectorComponent.name);\n },\n }),\n );\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.userService.currentDigitalProperty$\n .pipe(\n distinctUntilChanged(),\n mergeMap((): Observable => this.userService.currentDigitalProperty$.pipe(take(1))),\n )\n .subscribe(this.onDigitalPropertyChanged.bind(this)),\n );\n\n this.subscribeToScanningType();\n }\n}\n","
\n
\n \n {{ 'scan_score_chart_aria_label' | translate: [score] }}\n \n
\n {{ computedDate }}\n
\n @if (!hideLegend) {\n
\n
\n
\n {{ 'legend' | translate }}\n
\n
    \n
  • \n \n {{ 'label_score_weak' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.low][0], scoreRanges[scoreRangeLabels.low][1]] }}\n \n
  • \n
  • \n \n {{ 'label_score_average' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.mid][0], scoreRanges[scoreRangeLabels.mid][1]] }}\n \n
  • \n
  • \n \n {{ 'label_score_strong' | translate }}: \n \n {{ 'n_dash_m' | translate: [scoreRanges[scoreRangeLabels.high][0], scoreRanges[scoreRangeLabels.high][1]] }}\n \n
  • \n
\n
\n
\n }\n \n \n \n \n \n \n \n \n \n \n
\n","import { EChartsOption } from 'echarts/types/dist/shared';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { PieChart } from 'echarts/charts';\nimport { ScoreRangeColors, ScoreRanges, scoreRangeLabels } from '../../constants/charts.constants';\n\n@Component({\n selector: 'app-score-chart',\n templateUrl: './score-chart.component.html',\n styleUrls: ['./score-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScoreChartComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() public score: number;\n @Input() public computedDate: string;\n @Input() public hideLegend: boolean;\n\n @ViewChild('scoreChartTarget') private scoreChartTarget: ElementRef;\n @ViewChild('svgPatterns') private svgPatterns: ElementRef;\n\n public scoreRanges: Record;\n public scoreRangeLabels: typeof scoreRangeLabels;\n public colors: Record;\n\n private pieChart: echarts.EChartsType;\n\n constructor(\n private ref: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n this.scoreRangeLabels = scoreRangeLabels;\n this.scoreRanges = ScoreRanges;\n this.colors = ScoreRangeColors;\n }\n\n public get scoreClass(): string {\n if (this.hideLegend) {\n return 'no-legend';\n }\n\n if (this.score >= this.scoreRanges[scoreRangeLabels.low][0] && this.score <= this.scoreRanges[scoreRangeLabels.low][1]) {\n return scoreRangeLabels.low;\n } else if (\n this.score >= this.scoreRanges[scoreRangeLabels.mid][0] &&\n this.score <= this.scoreRanges[scoreRangeLabels.mid][1]\n ) {\n return scoreRangeLabels.mid;\n }\n return scoreRangeLabels.high;\n }\n\n private initChart(): void {\n if (!this.scoreChartTarget) {\n return;\n }\n\n if (this.pieChart) {\n this.pieChart.dispose();\n }\n\n this.changeDetectorRef.detectChanges();\n\n const option: EChartsOption = {\n series: {\n type: 'pie',\n radius: [55, 70],\n left: 'center',\n width: '100%',\n animation: false,\n silent: true,\n itemStyle: {\n borderColor: '#FFFFFF',\n borderWidth: 0,\n },\n label: {\n show: false,\n },\n labelLine: {},\n data: [\n {\n value: this.score,\n },\n {\n value: 100 - this.score,\n },\n ],\n },\n };\n\n echarts.use([PieChart, SVGRenderer]);\n const elChart: HTMLDivElement = this.scoreChartTarget.nativeElement;\n this.pieChart = echarts.init(elChart);\n this.pieChart.on('finished', () => {\n const xmlns: string = 'http://www.w3.org/2000/svg';\n const scoreLabelWrap: SVGGElement = document.createElementNS(xmlns, 'g') as SVGGElement;\n scoreLabelWrap.setAttribute('class', 'score-label');\n scoreLabelWrap.setAttribute('data-test-id', 'score-label');\n const scoreLabel: SVGTextElement = document.createElementNS(xmlns, 'text') as SVGTextElement;\n scoreLabel.setAttribute('dx', '50%');\n scoreLabel.setAttribute('dy', '50%');\n scoreLabel.setAttribute('text-anchor', 'middle');\n scoreLabel.textContent = String(this.score);\n scoreLabelWrap.appendChild(scoreLabel);\n this.pieChart.getDom().getElementsByTagName('svg')[0].appendChild(scoreLabelWrap);\n });\n this.pieChart.setOption(option);\n }\n\n public ngAfterViewInit(): void {\n this.ref.nativeElement.querySelectorAll('svg.square').forEach((i: HTMLElement) => {\n i.appendChild(this.svgPatterns.nativeElement);\n });\n this.initChart();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('score' in changes && changes.score.previousValue !== changes.score.currentValue) {\n this.initChart();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.pieChart) {\n this.pieChart.off('click');\n }\n }\n}\n","
\n \n
\n \n \n \n \n 0\"\n class=\"search-input-clear-button\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"clear()\"\n (keydown.enter)=\"clear()\"\n [attr.aria-label]=\"'clear_text' | translate\"\n [class.search-input-clear-button--full-right]=\"stackSearchButtonOnMobile\"\n >\n \n \n \n {{ 'form_search' | translate }}\n \n
\n\n \n {{ 'form_search' | translate }}\n \n
\n","import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonUtility } from '../../utility/common.utility';\n\n@Component({\n selector: 'app-searchbox',\n templateUrl: './searchbox.component.html',\n styleUrls: ['./searchbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchboxComponent),\n multi: true,\n },\n ],\n})\nexport class SearchboxComponent implements ControlValueAccessor {\n private static searchBoxPrefix: string = 'search-box';\n\n @ViewChild('textbox', { static: false })\n private textbox: ElementRef;\n\n public onChange: Function = (_: string) => {};\n public value: string;\n public componentID: string;\n\n @Input() public label: string;\n @Input() public placeholder: string = '';\n @Input() public inputId: string;\n\n @Input() public stackSearchButtonOnMobile: boolean;\n\n constructor(private cdRef: ChangeDetectorRef) {\n this.componentID = `${SearchboxComponent.searchBoxPrefix}-${CommonUtility.createUniqueDOMId()}`;\n }\n\n public get controlId(): string {\n if (this.inputId) {\n return this.inputId;\n }\n return this.componentID;\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n\n public writeValue(val: string): void {\n this.value = val;\n this.cdRef.markForCheck();\n }\n\n public clear(): void {\n this.value = null;\n this.textbox.nativeElement.focus();\n this.propagateChanges();\n }\n\n public propagateChanges(event?: KeyboardEvent): void {\n event?.preventDefault();\n this.onChange(this.value);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Icons } from '@levelaccess/design-system';\n\n@Component({\n selector: 'app-secure-alert',\n templateUrl: './secure-alert.component.html',\n styleUrls: ['./secure-alert.component.scss'],\n})\nexport class SecureAlertComponent {\n @Input() public alert: string;\n\n constructor() {}\n\n public get alertIcon(): Icons {\n return Icons.TriangleExclamation;\n }\n}\n","
\n \n
\n
\n","import { Component, Input, ViewChild } from '@angular/core';\n\nimport { IModal } from '../modals/modal.interface';\nimport { ModalContainerComponent } from '../modals/modal-container.component';\nimport { ModalService } from '../../services/modal.service';\nimport { IModalDialogInputData } from '../../interfaces/modal-dialog.interface';\nimport { ClipboardUtilityService } from '../../services/clipboard-utility.service';\n\n@Component({\n selector: 'app-share-issue-report-modal',\n templateUrl: './share-issue-report-modal.component.html',\n styleUrls: ['./share-issue-report-modal.component.scss'],\n})\nexport class ShareIssueReportModalComponent implements IModal {\n @Input() public modalInputData: IModalDialogInputData<{ url: string }>;\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n constructor(\n private modalService: ModalService,\n private clipboardUtilityService: ClipboardUtilityService,\n ) {}\n\n public copyToClipboard(textToCopy: string): void {\n this.clipboardUtilityService.copyTextToClipboard(textToCopy);\n }\n\n public close(): void {\n this.modalService.closeModal();\n }\n}\n","\n \n {{ 'share_report_modal_title' | translate }}\n \n
\n
\n
\n {{ 'audit_rule_property_nodesHTML' | translate }}:\n \n {{ 'copy' | translate }}\n \n \n \n \n
\n
\n
{{ modalInputData.data.url }}
\n
\n
\n
\n\n
\n \n
\n
\n","import { Component, ComponentRef, Input } from '@angular/core';\nimport { ShareIssueReportModalComponent } from '../share-issue-report-modal/share-issue-report-modal.component';\nimport { ModalService } from '../../services/modal.service';\n\nexport type UrlFactory = string | (() => Promise);\n\n@Component({\n selector: 'app-share-issue-report-url',\n templateUrl: './share-issue-report-url.component.html',\n styleUrls: ['./share-issue-report-url.component.scss'],\n})\nexport class ShareIssueReportUrlComponent {\n @Input() public url: UrlFactory;\n\n constructor(private modalService: ModalService) {}\n\n public async openShareIssueModal(): Promise {\n let issueLink: string;\n switch (typeof this.url) {\n case 'string':\n issueLink = this.url;\n break;\n case 'function':\n issueLink = await this.url().catch(() => window.location.href);\n break;\n default:\n issueLink = window.location.href;\n break;\n }\n\n const modalComponentRef: ComponentRef =\n this.modalService.open(ShareIssueReportModalComponent);\n\n modalComponentRef.instance.modalInputData = {\n data: {\n url: issueLink,\n },\n };\n }\n}\n","\n \n \n \n {{ 'action_share' | translate }}\n\n","
\n
\n \n \n \n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\n\nexport interface ISortSelectorValue {\n sortingOrder: $sortingOrder;\n field: string;\n}\n\nexport interface ISortSelectorItem {\n name: string;\n value: ISortSelectorValue;\n}\n\n@Component({\n selector: 'app-sort-selector',\n templateUrl: './sort-selector.component.html',\n styleUrls: ['./sort-selector.component.scss'],\n})\nexport class SortSelectorComponent {\n @Input()\n public sortItems: ISortSelectorItem[];\n\n @Input()\n public sortValue: ISortSelectorValue;\n\n @Output()\n public onSort: EventEmitter;\n\n constructor() {\n this.sortItems = [];\n this.sortValue = null;\n this.onSort = new EventEmitter();\n }\n\n public formSubmitted(): void {\n this.onSort.emit(this.sortValue);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-status',\n template: `{{ 'status_' + value | translate }}`,\n})\nexport class StatusComponent {\n @Input()\n public value: string;\n}\n","export const PANEL_ID_PREFIX = 'step_panel_';\nexport const TAB_ID_PREFIX = 'step_tab_';\n","import { Directive, ElementRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\n\n@Directive({\n selector: '[appStepNext]',\n})\nexport class StepNextDirective {\n public click$: Observable;\n\n constructor(private host: ElementRef) {\n this.click$ = fromEvent(this.host.nativeElement, 'click');\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\n\n@Directive({\n selector: '[appStepPrevious]',\n})\nexport class StepPreviousDirective {\n public click$: Observable;\n\n constructor(private host: ElementRef) {\n this.click$ = fromEvent(this.host.nativeElement, 'click');\n }\n}\n","
\n
\n
    \n \n
  1. \n
    \n
\n
\n
\n\n
\n \n
\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport { ViewportScroller } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { StepComponent } from '../step/step.component';\nimport { StepNextDirective } from '../directives/step-next.directive';\nimport { StepPreviousDirective } from '../directives/step-previous.directive';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { CommonUtility } from '../../../utility/common.utility';\n\n@Component({\n selector: 'app-horizontal-stepper',\n styleUrls: ['./horizontal-stepper.component.scss'],\n templateUrl: './horizontal-stepper.component.html',\n exportAs: 'appHorizontalStepper',\n})\nexport class HorizontalStepperComponent implements AfterContentInit {\n private subscriptions: Subscription = new Subscription();\n private ACTIVE_STEP: number = 0;\n\n @Output() public activeStepChange: EventEmitter = new EventEmitter();\n\n @ContentChildren(StepComponent, { descendants: true })\n public steps: QueryList;\n\n @ContentChild(StepNextDirective)\n public stepNext: StepNextDirective;\n\n @ContentChild(StepPreviousDirective)\n public stepPrevious: StepPreviousDirective;\n\n constructor(private viewportScroller: ViewportScroller) {}\n\n private setPanelIds(): void {\n if (!SharedCommonUtility.isNullish(this.steps)) {\n this.steps.forEach((step: StepComponent): void => {\n step.id = CommonUtility.createUniqueDOMId();\n step.setHostAttributes();\n });\n }\n }\n\n private setActiveStatus(step: number, active: boolean = true): void {\n const stepComponent: StepComponent = this.steps.get(step);\n if (!SharedCommonUtility.isNullish(stepComponent)) {\n stepComponent.isActive = active;\n }\n }\n\n private registerNextStep(): void {\n if (!SharedCommonUtility.isNullish(this.stepNext)) {\n this.subscriptions.add(this.stepNext.click$.subscribe(this.nextStep.bind(this)));\n }\n }\n\n private registerPreviousStep(): void {\n if (!SharedCommonUtility.isNullish(this.stepPrevious)) {\n this.subscriptions.add(this.stepPrevious.click$.subscribe(this.previousStep.bind(this)));\n }\n }\n\n @Input()\n set activeStep(value: number) {\n if (value !== this.ACTIVE_STEP) {\n this.setActiveStatus(this.ACTIVE_STEP, false);\n this.ACTIVE_STEP = value;\n this.setActiveStatus(value);\n this.activeStepChange.emit(this.ACTIVE_STEP);\n }\n }\n\n get activeStep(): number {\n return this.ACTIVE_STEP;\n }\n\n public previousStep(): void {\n if (this.ACTIVE_STEP > 0) {\n this.activeStep--;\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n\n public nextStep(): void {\n if (this.ACTIVE_STEP < this.steps.length - 1) {\n this.activeStep++;\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n\n public ngAfterContentInit(): void {\n this.setPanelIds();\n this.setActiveStatus(this.ACTIVE_STEP);\n this.registerNextStep();\n this.registerPreviousStep();\n }\n}\n","
\n
\n \n \n \n \n \n\n \n {{ step + 1 }}\n \n
\n {{ label }}\n \n {{ 'label_step_n' | translate: [step + 1] }}\n {{ label }}\n \n {{ 'done' | translate }}\n \n \n
\n","import { Component, DoCheck, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { TAB_ID_PREFIX } from '../constants';\n\n@Component({\n selector: '[appStepHeader]',\n templateUrl: './step-header.component.html',\n styleUrls: ['./step-header.component.scss'],\n})\nexport class StepHeaderComponent implements OnInit, DoCheck {\n @Input() public step: number = 0;\n @Input() public activeStep: number = -1;\n @Input() public label: string = '';\n @Input() public id: string = '';\n\n @HostBinding('attr.aria-current') ariaCurrent: string;\n @HostBinding('id') domId: string;\n\n constructor() {}\n\n private setHostAttributes(): void {\n this.ariaCurrent = this.active ? 'step' : 'false';\n }\n\n public get done(): boolean {\n return this.step < this.activeStep;\n }\n\n public get active(): boolean {\n return this.step === this.activeStep;\n }\n\n public ngOnInit(): void {\n this.setHostAttributes();\n\n this.domId = `${TAB_ID_PREFIX}${this.id}`;\n }\n\n public ngDoCheck(): void {\n this.setHostAttributes();\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[appStepContent]',\n})\nexport class StepContentDirective {\n constructor(public content: TemplateRef) {}\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { StepContentDirective } from './step-content.directive';\nimport { PANEL_ID_PREFIX, TAB_ID_PREFIX } from '../constants';\n\n@Component({\n selector: 'div[appStep]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n `,\n})\nexport class StepComponent implements OnInit {\n private IS_ACTIVE: boolean = false;\n\n @Input() public label: string = '';\n\n public id: string = '';\n\n @HostBinding('attr.role') role: string = 'region';\n @HostBinding('attr.aria-labelledby') ariaLabelledBy: string;\n @HostBinding('id') domId: string;\n @HostBinding('style.display') display: string;\n @HostBinding('class.current-step') get isCurrentStep(): boolean {\n return this.isActive;\n }\n\n @ContentChild(StepContentDirective)\n public lazyContent: StepContentDirective;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n public setHostAttributes(): void {\n this.display = this.IS_ACTIVE ? 'block' : 'none';\n this.ariaLabelledBy = `${TAB_ID_PREFIX}${this.id}`;\n this.domId = `${PANEL_ID_PREFIX}${this.id}`;\n }\n\n public ngOnInit(): void {\n this.setHostAttributes();\n }\n\n @Input()\n set isActive(value: boolean) {\n if (this.IS_ACTIVE !== value) {\n this.IS_ACTIVE = value;\n this.display = this.IS_ACTIVE ? 'block' : 'none';\n\n this.cdr.markForCheck();\n }\n }\n\n get isActive(): boolean {\n return this.IS_ACTIVE;\n }\n}\n","
\n
\n
\n
\n

{{ 'issue_table_column_selection_title' | translate }}

\n {{ 'issue_table_column_selection_description' | translate: maxSelected }}\n
\n
\n \n {{ currentSelectedCount }} / {{ maxSelected }}\n {{ 'label_columns' | translate }}\n \n
\n
\n\n
\n
\n

{{ columnGroup.name | translate }}

\n
\n \n
\n
\n
\n\n
\n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport {\n ITableColumnSelectorColumnDefinition,\n ITableColumnSelectorColumnGroup,\n} from '../../../interfaces/table_column_selector.interface';\n\n@Component({\n selector: 'app-table-column-selector-panel',\n templateUrl: './table-column-selector-panel.component.html',\n styleUrls: ['./table-column-selector-panel.component.scss'],\n})\nexport class TableColumnSelectorPanelComponent implements OnChanges {\n @Input() public selectedColumns: string[];\n @Input() public columnGroups: ITableColumnSelectorColumnGroup[];\n @Output() public selectedColumnsChange: EventEmitter;\n @Output() public cancel: EventEmitter;\n\n public form: UntypedFormGroup;\n\n public allColumns: Set;\n public readonly maxSelected: number;\n public currentSelectedCount: number;\n\n constructor(private formBuilder: UntypedFormBuilder) {\n this.allColumns = new Set();\n this.selectedColumns = [];\n this.selectedColumnsChange = new EventEmitter();\n this.cancel = new EventEmitter();\n this.maxSelected = 6;\n this.currentSelectedCount = 0;\n this.createForm();\n }\n\n private createForm(): void {\n this.form = this.formBuilder.group({});\n }\n\n private updateAllColumns(): void {\n this.allColumns = new Set(\n this.columnGroups.reduce((acc: string[], current: ITableColumnSelectorColumnGroup): string[] => {\n return [...acc, ...current.columns.map((value: ITableColumnSelectorColumnDefinition): string => value.field)];\n }, []),\n );\n }\n\n private setupControls(): void {\n this.updateAllColumns();\n\n this.allColumns.forEach((column: string): void => {\n if (!this.form.controls[column]) {\n this.form.addControl(column, new UntypedFormControl({ value: false }));\n }\n });\n\n // remove eventual controls not in the definition\n for (const controlName in this.form.controls) {\n if (this.allColumns.has(controlName) === false) {\n this.form.removeControl(controlName);\n }\n }\n this.initializeSelectedControls();\n }\n\n private updateControlsLockStatus(): void {\n if (this.currentSelectedCount >= this.maxSelected) {\n for (const col of this.allColumns) {\n if (this.form.get(col).value === false) {\n this.form.get(col).disable();\n } else {\n this.form.get(col).enable();\n }\n }\n } else {\n this.allColumns.forEach((column: string): void => {\n this.form.get(column).enable();\n });\n }\n }\n\n private initializeSelectedControls(): void {\n // clean-up eventual selected values that are not part of the definition\n if (this.allColumns.size > 0) {\n this.selectedColumns = this.selectedColumns.filter((col: string): boolean => this.allColumns.has(col));\n }\n if (this.selectedColumns.length > this.maxSelected) {\n this.selectedColumns = this.selectedColumns.slice(0, this.maxSelected);\n }\n\n for (const column of this.allColumns) {\n this.form.get(column).setValue(this.selectedColumns.includes(column));\n }\n\n this.currentSelectedCount = this.selectedColumns.length;\n\n this.updateControlsLockStatus();\n }\n\n private getSelectedFields(): string[] {\n const selectedFields: string[] = [];\n for (const column of this.allColumns) {\n if (this.form.get(column).value) {\n selectedFields.push(column);\n }\n }\n return selectedFields;\n }\n\n public get columnClass(): string {\n const columnCount: number = this.columnGroups?.length ?? 0;\n\n if (columnCount < 2) {\n return 'col-12';\n } else if (columnCount === 2) {\n return 'col-6';\n }\n\n return 'col-4';\n }\n\n public onSelectionChange(column: string): void {\n if (this.form.get(column).value) {\n this.currentSelectedCount += 1;\n } else {\n this.currentSelectedCount -= 1;\n }\n this.updateControlsLockStatus();\n }\n\n public onClose(): void {\n this.initializeSelectedControls();\n this.cancel.emit();\n }\n\n public onApply(): void {\n this.selectedColumnsChange.emit(this.getSelectedFields());\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.setupControls();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ITableColumnSelectorColumnGroup } from '../../interfaces/table_column_selector.interface';\n\n@Component({\n selector: 'app-table-column-selector',\n templateUrl: './table-column-selector.component.html',\n styleUrls: ['./table-column-selector.component.scss'],\n})\nexport class TableColumnSelectorComponent {\n public columnSelectorOpened: boolean;\n @Input()\n public selectedColumns: string[] = [];\n @Output()\n public selectedColumnsChange: EventEmitter = new EventEmitter();\n @Input()\n public columnsDefinition: ITableColumnSelectorColumnGroup[] = [];\n\n public toggleColumnSelector(): void {\n this.columnSelectorOpened = !this.columnSelectorOpened;\n }\n\n public onCancel(): void {\n this.columnSelectorOpened = false;\n }\n\n public onSelectedColumnsChange(columns: string[]): void {\n this.columnSelectorOpened = false;\n this.selectedColumns = columns;\n this.selectedColumnsChange.emit(columns);\n }\n}\n","
\n \n \n \n \n {{ 'label_hide_and_show_columns' | translate }}\n \n\n \n \n \n
\n\n","export enum customColumnType {\n attachments = 'attachments',\n checkbox = 'checkbox',\n link = 'link',\n linkedCell = 'linkedCell',\n severity = 'severity',\n externalLink = 'externalLink',\n score = 'score',\n scoreImpact = 'scoreImpact',\n img = 'img',\n monitoring = 'monitoring',\n tooltip = 'tooltip',\n textWithTag = 'textWithTag',\n action = 'action',\n progress = 'progress',\n profilePicture = 'profilePicture',\n remediationProgress = 'remediationProgress',\n invitationStatus = 'invitationStatus',\n forcedWordWrapText = 'forcedWordWrapText',\n}\n\nexport enum $linkColumn {\n href = 'href',\n linkLabel = 'linkLabel',\n}\n","
\n
\n \n \n \n \n \n \n
\n \n \n {{ getColumnConfig(columnKey).translationKey | translate }}\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {{ getColumnConfig(columnKey).translationKey ? (getColumnConfig(columnKey).translationKey | translate) : '' }}\n \n
\n \n
\n \n \n \n 0\">\n \n \n \n \n \n 0\">\n \n \n \n 0\" [style.height.rem]=\"actions.length * 1.8\">\n \n \n \n \n \n
\n {{\n tableCaption\n }}\n {{ 'column_headers_with_buttons_are_sortable' | translate }}\n
\n \n 0\">\n
\n

\n {{ 'column_header_action' | 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 \n \n \n \n \n \n {{ 'scan_issue_severity_' + getSeverityCellData(columnKey, rowIndex) | translate }}\n \n\n
\n \n 0; else scoreEmptyLabel\">\n \n \n
\n {{ 'n_of_t' | translate: [scoreResult, 100] }}\n \n {{ scoreResult }}\n \n / 100\n ({{ cellData.scoreLabels[i] | translate }}) \n
\n
\n
\n \n {{ cellData.emptyStateLabel }}\n \n
\n
\n\n
\n \n {{ getScoreImpactCellData(columnKey, rowIndex) < 0 ? '–' : '+' }}\n \n {{ getScoreImpactCellData(columnKey, rowIndex, true) }}% \n
\n\n
\n \n
\n\n
\n {{ getTextWithTagCellData(columnKey, rowIndex).text }}\n \n {{ getTextWithTagCellData(columnKey, rowIndex).tagLabel }}\n \n
\n\n
\n {{ getToolTipCellData(columnKey, rowIndex).message }}\n \n \n {{ getToolTipCellData(columnKey, rowIndex).tooltipMessage }}\n \n
\n \n\n
\n \n
\n\n
\n \n
\n\n
\n \n \n \n \n {{ getImageCellData(columnKey, rowIndex).url }}\n \n
\n\n
\n \n \n \n \n \n \n \n \n \n
\n\n
\n \n 0; else noRemediations\">\n
\n
\n
\n
\n
\n \n {{\n 'findings_remaining'\n | translate\n : getRemediationProgressCellData(columnKey, rowIndex).max -\n getRemediationProgressCellData(columnKey, rowIndex).current\n }}\n
\n ({{ getRemediationProgressCellData(columnKey, rowIndex).critical }}\n {{ getRemediationProgressCellData(columnKey, rowIndex).criticalLabel | lowercase }})\n \n
\n
{{ roundDown(getRemediationProgressCellData(columnKey, rowIndex).progress) }}%
\n
\n \n \n
\n {{ 'label_remediation_progress_empty' | translate }}\n
\n
\n \n \n\n
\n
0\" class=\"progress-val\">\n {{ roundDown(getProgressCellData(columnKey, rowIndex).progress) }}%\n
\n
0\" class=\"progress flex-1\">\n
\n
\n
\n {{ 'label_remediation_progress_empty' | translate }}\n
\n \n\n
\n \"\"\n {{ getProfilePictureCellData(columnKey, rowIndex).message }}\n
\n\n \n \n \n\n
\n {{ getCellData(columnKey, rowIndex) }}\n
\n \n \n {{ getCellData(columnKey, rowIndex) }}\n\n\n\n \n \n \n 1 ? 'rowgroup' : 'row'\"\n class=\"custom-table-row-header-selector\"\n >\n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n @if (data.disabled) {\n \n {{ data.linkLabel }}\n \n } @else {\n \n {{ data.linkLabel }}\n \n
\n \n {{ data.image.label }}\n
\n }\n
\n
\n\n\n \n\n\n\n
\n {{ 'status_' + data | translate }}\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { isEqual } from 'lodash';\n\nimport {\n IActionColumnData,\n ICheckboxColumnData,\n ICustomCellType,\n ICustomColumnsData,\n ICustomTableAction,\n ICustomTableColumn,\n ICustomTableColumnState,\n ICustomTableConfiguration,\n ICustomTableRow,\n ICustomTableRowCellConfig,\n ICustomTableState,\n IImageColumnData,\n IAttachmentColumnData,\n ILinkColumnData,\n IProfilePictureColumnData,\n IProgressColumnData,\n IRemediationProgressColumnData,\n ITextWithTagColumnData,\n ITooltipColumnData,\n IScoreColumnData,\n} from './custom-table.interface';\nimport { $sortingOrder } from '../../../../../shared/constants/sort';\nimport { customColumnType } from './constants';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { tableEmptyStateType } from './empty-state/table-empty-state.component';\nimport { $severity } from '../../../../../shared/constants/accessibility';\nimport { IMonitoringLabel } from '../../monitoring-label/monitoring-label.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { $invitationStatus } from '../../../../../shared/constants/workspace-user.constants';\nimport { IDropdownCellConfig, IDropdownItem } from '../ngb-table/cells/dropdown-cell/dropdown-cell.component';\n\nconst sortingStatesOrder: readonly $sortingOrder[] = Object.freeze([$sortingOrder.all, $sortingOrder.asc, $sortingOrder.desc]);\n\n/**\n * Note: table configuration, data and state are using same data structure like so: tableState.columns[columnId][customField]\n * Usage and configuration examples can be found in custom-table.component.spec.ts file\n *\n * @deprecated use {@link NgbTableComponent} instead\n */\n@Component({\n selector: 'app-custom-table',\n templateUrl: './custom-table.component.html',\n styleUrls: ['./custom-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomTableComponent implements OnChanges, OnInit {\n private _rowsData: ICustomTableRow[];\n\n @Input() public config: ICustomTableConfiguration;\n @Input() public actions: ICustomTableAction[];\n @Input() public tableCaption: string;\n @Input() public emptyState?: tableEmptyStateType;\n @Input() public emptyStateHideBorders?: boolean;\n @Input() public defaultSortOrder?: $sortingOrder;\n @Input() public tableRowsAreCheckable?: boolean;\n\n @Output() public onTableStateChanged: EventEmitter;\n @Output() public onTableRowChecked: EventEmitter;\n\n public $sortingOrder: typeof $sortingOrder;\n public $severity: typeof $severity;\n public $invitationStatus: typeof $invitationStatus;\n\n @Input()\n public set rowsData(rowsData: ICustomTableRow[]) {\n this._rowsData = rowsData;\n\n for (const row of rowsData) {\n if (typeof row._uid === 'undefined') {\n row._uid = CommonUtility.createUniqueDOMId();\n }\n }\n }\n\n public get rowsData(): ICustomTableRow[] {\n return this._rowsData;\n }\n\n public tableState: ICustomTableState;\n public customColumnType: typeof customColumnType;\n public tableDataAvailable: boolean;\n public columnsList: string[];\n public checkedAll: boolean;\n public checkedRows: { [key: number]: boolean };\n public hasSortableColumns: boolean;\n\n constructor(private translateService: TranslateService) {\n this.customColumnType = customColumnType;\n this.$sortingOrder = $sortingOrder;\n this.$severity = $severity;\n this.$invitationStatus = $invitationStatus;\n\n this.onTableStateChanged = new EventEmitter();\n this.onTableRowChecked = new EventEmitter();\n this.columnsList = [];\n this.checkedAll = false;\n this.checkedRows = {};\n this.tableDataAvailable = false;\n\n this.tableState = {\n columns: {},\n };\n }\n\n private refreshColumnState(): void {\n this.tableDataAvailable = this.isTableDataAvailable();\n this.columnsList = this.getColumnsList();\n if (this.tableDataAvailable === false) {\n return;\n }\n\n const newTableState: ICustomTableState = { columns: {} };\n\n for (const columnIndex in this.config.columns) {\n if (typeof this.tableState.columns[columnIndex] !== 'undefined') {\n newTableState.columns[columnIndex] = this.tableState.columns[columnIndex];\n continue;\n }\n\n const newState: ICustomTableColumnState = {};\n\n if (this.config.columns[columnIndex].sortingEnabled) {\n newState.sortingOrder = $sortingOrder.all;\n }\n\n newTableState.columns[columnIndex] = newState;\n }\n\n this.tableState = newTableState;\n }\n\n private getCustomTableCellData(columnKey: string, rowIndex: number): ICustomCellType[T] | null {\n if (this.tableDataAvailable === false) {\n return null;\n }\n\n if (this.rowsData[rowIndex] === undefined) {\n return null;\n }\n\n const columns: ICustomColumnsData = this.rowsData[rowIndex].customColumns ?? this.rowsData[rowIndex].columns;\n if (columns === undefined) {\n return null;\n }\n\n if (columns[columnKey] === undefined) {\n return null;\n }\n\n return columns[columnKey] as ICustomCellType[T];\n }\n\n private resetColumnsSorting(): void {\n for (const columnKey in this.tableState.columns) {\n if (this.getColumnConfig(columnKey).sortingEnabled !== true) {\n continue;\n }\n\n this.tableState.columns[columnKey].sortingOrder = $sortingOrder.all;\n }\n }\n\n private triggerTableStateChangeEvent(): void {\n this.onTableStateChanged.emit(this.tableState);\n }\n\n private isTableDataAvailable(): boolean {\n if (SharedCommonUtility.getTypeOf(this.config) !== 'object' || Array.isArray(this.rowsData) === false) {\n return false;\n }\n\n if (Object.keys(this.config.columns).length === 0) {\n return false;\n }\n\n return true;\n }\n\n private getColumnsList(): string[] {\n if (this.tableDataAvailable === false) {\n return [];\n }\n\n return Object.keys(this.config.columns);\n }\n\n public sortingTriggered(columnKey: string): void {\n const columnState: ICustomTableColumnState = this.getColumnState(columnKey);\n let sortingOrderIndex: number = sortingStatesOrder.indexOf(columnState.sortingOrder);\n\n if (sortingOrderIndex === -1) {\n return;\n }\n\n sortingOrderIndex += 1;\n\n if (sortingOrderIndex >= sortingStatesOrder.length) {\n sortingOrderIndex = 0;\n }\n\n this.resetColumnsSorting();\n\n const updatedSortingOrder: $sortingOrder = sortingStatesOrder[sortingOrderIndex];\n this.tableState.columns[columnKey].sortingOrder = updatedSortingOrder;\n\n this.triggerTableStateChangeEvent();\n }\n\n public getColumnState(columnKey: string): ICustomTableColumnState {\n if (this.tableState.columns[columnKey] === undefined) {\n return {};\n }\n\n return this.tableState.columns[columnKey];\n }\n\n public getCellData(columnKey: string, rowIndex: number): string {\n if (this.tableDataAvailable === false) {\n return '';\n }\n\n if (this.rowsData[rowIndex] === undefined) {\n return '';\n }\n\n return this.rowsData[rowIndex].columns[columnKey];\n }\n\n public getCellDataForMonitoring(columnKey: string, rowIndex: number): IMonitoringLabel {\n if (this.tableDataAvailable === false) {\n return null;\n }\n\n if (this.rowsData[rowIndex] === undefined) {\n return null;\n }\n\n return this.rowsData[rowIndex].columns[columnKey];\n }\n\n public getScoreCellData(columnKey: string, rowIndex: number): IScoreColumnData {\n const cellData: IScoreColumnData = this.getCustomTableCellData(columnKey, rowIndex);\n const scores: number[] = cellData.scores;\n const emptyStateLabel: string = cellData?.emptyStateLabel;\n const scoreLabels: string[] = cellData?.scoreLabels;\n\n return { scores, emptyStateLabel, scoreLabels };\n }\n\n public getScoreCellClass(columnKey: string, rowIndex: number): Record[] {\n const cellData: IScoreColumnData = this.getScoreCellData(columnKey, rowIndex);\n\n return cellData.scores.map((score: number) => ({\n high: score >= 80,\n medium: score >= 50,\n low: score < 50,\n }));\n }\n\n public getScoreImpactCellData(columnKey: string, rowIndex: number, absolute: boolean = false): number {\n const res: number = parseFloat((parseFloat(this.getCellData(columnKey, rowIndex)) * 100).toFixed(2));\n\n return absolute ? Math.abs(res) : res;\n }\n\n public getColumnConfig(columnKey: string): ICustomTableColumn {\n return this.config.columns[columnKey];\n }\n\n public getArrowsContainerClasses(columnKey: string): string {\n const columnState: ICustomTableColumnState = this.getColumnState(columnKey);\n\n if (columnState.sortingOrder === $sortingOrder.asc) {\n return `arrow-ascending`;\n }\n\n if (columnState.sortingOrder === $sortingOrder.desc) {\n return `arrow-descending`;\n }\n\n return '';\n }\n\n public getTableHeaderAriaSort(columnKey: string): string | undefined {\n if (!this.getColumnConfig(columnKey)?.sortingEnabled) {\n return undefined;\n }\n\n const columnState: ICustomTableColumnState = this.getColumnState(columnKey);\n\n return this.getSortOrderText(columnState.sortingOrder);\n }\n\n public getSortOrderText(sortingOrder: $sortingOrder): string {\n if (sortingOrder === $sortingOrder.asc) {\n return this.translateService.instant('ascending');\n }\n\n if (sortingOrder === $sortingOrder.desc) {\n return this.translateService.instant('descending');\n }\n\n return this.translateService.instant('none');\n }\n\n public getTableHeaderAriaSortLabel(columnKey: string): string {\n const sortCol = this.translateService.instant(this.config.columns[columnKey]?.translationKey);\n const sortDir = this.getTableHeaderAriaSort(columnKey).toLowerCase();\n const sortTxt = this.translateService.instant('label_sort').toLowerCase();\n return `${sortCol} ${sortDir} ${sortTxt}`;\n }\n\n /* Note: for custom columns */\n\n // For downloads and external links, see getExternalLinkCellData\n public getLinkCellData(columnKey: string, rowIndex: number): ILinkColumnData {\n const result: ILinkColumnData | null = this.getCustomTableCellData(columnKey, rowIndex);\n\n if (result === null) {\n return {\n linkLabel: '',\n href: '#',\n queryParams: {},\n disabled: false,\n };\n }\n\n return result;\n }\n\n public getActionCellData(columnKey: string, rowIndex: number): IActionColumnData {\n const result: IActionColumnData | null = this.getCustomTableCellData(columnKey, rowIndex);\n\n if (result === null) {\n return {\n action: (): void => {},\n label: '',\n };\n }\n\n return result;\n }\n\n public getProgressCellAsPercent(columnKey: string, rowIndex: number): string {\n const progress: IProgressColumnData = this.getProgressCellData(columnKey, rowIndex);\n return `${progress.progress}%`;\n }\n\n public getProgressCellRounded(columnKey: string, rowIndex: number): string {\n const progress: IProgressColumnData = this.getProgressCellData(columnKey, rowIndex);\n return `${Math.round(progress.progress)}`;\n }\n\n public getProgressCellData(columnKey: string, rowIndex: number): IProgressColumnData {\n return this.getCustomTableCellData(columnKey, rowIndex) || { current: 0, max: 100, progress: 0 };\n }\n\n public getRemediationProgressCellData(columnKey: string, rowIndex: number): IRemediationProgressColumnData {\n return this.getCustomTableCellData(columnKey, rowIndex);\n }\n\n public getImageCellData(columnKey: string, rowIndex: number): IImageColumnData {\n return this.getCustomTableCellData(columnKey, rowIndex) || { url: '', embedImage: false };\n }\n\n public getAttachmentsCellData(columnKey: string, rowIndex: number): IAttachmentColumnData[] {\n return (\n this.getCustomTableCellData(columnKey, rowIndex) || [\n { icon: 'attachment-document', href: '' },\n ]\n );\n }\n\n public getTextWithTagCellData(columnKey: string, rowIndex: number): ITextWithTagColumnData {\n return (\n this.getCustomTableCellData(columnKey, rowIndex) || {\n text: '',\n tagColor: '',\n tagLabel: '',\n }\n );\n }\n\n public getToolTipCellData(columnKey: string, rowIndex: number): ITooltipColumnData {\n return (\n this.getCustomTableCellData(columnKey, rowIndex) || {\n message: '',\n tooltipMessage: '',\n tooltipPopupMessage: '',\n hideTooltip: true,\n }\n );\n }\n\n public getCheckboxCellData(columnKey: string, rowIndex: number): ICheckboxColumnData {\n const result: ICheckboxColumnData | null = this.getCustomTableCellData(columnKey, rowIndex);\n\n if (result === null) {\n return {\n action: (): void => void 0,\n checked: (): boolean => false,\n disabled: (): boolean => true,\n indeterminate: (): boolean => false,\n label: (): string => '',\n };\n }\n\n return result;\n }\n\n public getSeverityCellData(columnKey: string, rowIndex: number): $severity {\n return this.getCustomTableCellData(columnKey, rowIndex);\n }\n\n public getProfilePictureCellData(columnKey: string, rowIndex: number): IProfilePictureColumnData {\n return this.getCustomTableCellData(columnKey, rowIndex);\n }\n\n public getInvitationStatusCellData(columnKey: string, rowIndex: number): $invitationStatus {\n return this.getCustomTableCellData(columnKey, rowIndex);\n }\n\n public getRemediationProgressAriaLabel(columnKey: string): string {\n const columnText: string = this.translateService.instant(this.config.columns[columnKey]?.translationKey);\n return this.translateService.instant('aria_label_progress_bar', columnText);\n }\n\n public hasCell(columnKey: string, rowIndex: number): boolean {\n return (\n this.rowsData[rowIndex].columns.hasOwnProperty(columnKey) ||\n this.rowsData[rowIndex].customColumns?.hasOwnProperty(columnKey)\n );\n }\n\n public getCellConfig(columnKey: string, rowIndex: number): ICustomTableRowCellConfig | undefined {\n return this.rowsData[rowIndex].config?.[columnKey];\n }\n\n public hasAvailableActions(row: ICustomTableRow): boolean {\n return this.actions.some((action: ICustomTableAction) => {\n return typeof action.hide === 'undefined' || action.hide(row) === false;\n });\n }\n\n public getActionCellConfig(row: ICustomTableRow): IDropdownCellConfig {\n const dropdownItems: IDropdownItem[] = this.actions\n .map((action: ICustomTableAction): IDropdownItem => {\n if (action.hide && action.hide(row)) {\n return null;\n }\n return {\n label: action.name,\n clickListener: action.handler.bind(action.handler, row),\n disabled: action.disabled && action.disabled(row),\n };\n })\n .filter((val: IDropdownItem | null): boolean => val !== null);\n\n return {\n ellipsisIcon: true,\n classes: [],\n dropdownItems: dropdownItems,\n };\n }\n\n public onCheckHead(): void {\n if (this.checkedAll) {\n for (let i = 0; i < this.rowsData.length; i++) {\n this.checkedRows[i] = this.checkedAll;\n }\n } else {\n this.checkedRows = {};\n }\n this.onTableRowChecked.emit(this.checkedAll);\n }\n\n public onCheckCell(rowIndex: number): void {\n if (this.checkedRows[rowIndex] === false) {\n delete this.checkedRows[rowIndex];\n }\n this.onTableRowChecked.emit(Object.keys(this.checkedRows).map((k: string): number => parseInt(k, 10)));\n this.checkedAll = false;\n }\n\n public roundDown(num: number): number {\n return Math.floor(num);\n }\n\n public trackBy(index: number, item: { _uid?: string }): string {\n if (item === null || typeof item === 'undefined') {\n return null;\n }\n\n if (typeof item._uid === 'string') {\n return item._uid;\n }\n\n return String(index);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n this.tableRowsAreCheckable &&\n changes.rowsData &&\n !isEqual(changes.rowsData.currentValue, changes.rowsData.previousValue)\n ) {\n this.checkedRows = this.checkedAll\n ? Array.from(Array(this.rowsData.length).keys()).reduce(\n (\n accu: { [key: number]: boolean },\n curr: number,\n ): {\n [key: number]: boolean;\n } => {\n accu[curr] = true;\n return accu;\n },\n {},\n )\n : {};\n }\n this.refreshColumnState();\n }\n\n public ngOnInit(): void {\n this.hasSortableColumns = Object.values(this.config.columns).some(\n (column: ICustomTableColumn): boolean => column.sortingEnabled,\n );\n }\n}\n","\n \n \n
\n \n \n \n
\n

{{ 'no_search_results_available' | translate }}

\n
{{ 'label_no_search_results_hint' | translate }}
\n
\n \n
\n \n \n \n
\n

{{ 'in_review_no_results_available' | translate }}

\n
{{ 'in_review_no_results_available_description' | translate }}
\n
\n \n
\n \n \n \n
\n

{{ 'failed_no_results_available' | translate }}

\n
{{ 'failed_no_results_available_description' | translate }}
\n
\n \n
\n \n \n \n
\n

{{ 'passed_no_results_available' | translate }}

\n
{{ 'passed_no_results_available_description' | translate }}
\n
\n \n
\n \n \n \n
\n

{{ 'not_applicable_no_results_available' | translate }}

\n
\n {{ 'not_applicable_no_results_available_description' | translate }}\n
\n
\n \n
\n \n \n \n
\n

{{ 'no_digital_properties_found' | translate }}

\n
{{ 'no_digital_properties_found_description' | translate }}
\n
\n
\n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport enum tableEmptyStateType {\n searchingNoResults = 'searchingNoResults',\n inReviewNoResultsTotal = 'issuesInReviewNoResultsTotal',\n failedNoResultsTotal = 'failedNoResultsTotal',\n passedNoResultsTotal = 'passedNoResultsTotal',\n notApplicableNoResultsTotal = 'notApplicableNoResultsTotal',\n noDigitalPropertiesFound = 'noDigitalPropertiesFound',\n}\n\n@Component({\n selector: 'app-table-empty-state',\n templateUrl: './table-empty-state.component.html',\n styleUrls: ['./table-empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableEmptyStateComponent {\n @Input() public tableEmptyState: tableEmptyStateType;\n @Input() public hideBorders?: boolean;\n\n public tableEmptyStateType: typeof tableEmptyStateType;\n\n constructor() {\n this.tableEmptyStateType = tableEmptyStateType;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig, BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IAttachmentData {\n iconId: string;\n href: string;\n}\n\nexport interface IAttachmentCellConfig extends ICellConfig {\n attachments: IAttachmentData[];\n}\n\n@Component({\n selector: 'table-cell-attachments',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n \n \n \n \n \n
\n `,\n})\nexport class AttachmentsCellComponent extends BaseCellComponent {\n @Input() public config: IAttachmentCellConfig;\n}\n","import { Renderer2, Component, AfterViewInit, ViewChild, ElementRef, Input } from '@angular/core';\n\nexport interface ITagConfig {\n tagLabel?: string;\n tagColor?: string;\n tagTooltip?: string;\n}\n\nexport type IElementStyle = Partial>;\n\nexport interface IElementConfig {\n classes?: string[];\n styles?: IElementStyle;\n wrapperStyles?: IElementStyle;\n attributes?: { [attribute: string]: any };\n listeners?: { [event: string]: (...args: any[]) => any };\n}\n\nexport interface ICellConfig extends IElementConfig {\n text?: string;\n subText?: string;\n colSpan?: number;\n translate?: boolean;\n}\n\nexport interface IIconConfig extends IElementConfig {\n iconName: string;\n iconWidth: string;\n iconHeight: string;\n iconStyles?: IElementStyle;\n iconBeforeText?: boolean;\n iconAriaLabelText?: string;\n}\n\nexport function setupCell(renderer: Renderer2, config: IElementConfig, element: HTMLElement): void {\n if (config.attributes) {\n for (const attr of Object.keys(config.attributes)) {\n element.setAttribute(attr, config.attributes[attr]);\n }\n }\n\n if (config.classes) {\n for (const cssClass of config.classes) {\n renderer.addClass(element, cssClass);\n }\n }\n\n if (config.listeners && Object.keys(config.listeners).length > 0) {\n for (const event of Object.keys(config.listeners)) {\n element.addEventListener(event, config.listeners[event]);\n }\n }\n}\n\n@Component({\n selector: 'table-cell-base',\n template: '',\n styleUrls: ['./base-cell.component.scss'],\n})\nexport class BaseCellComponent implements AfterViewInit {\n @ViewChild('ref')\n public element: ElementRef;\n\n @Input() public config: ICellConfig;\n\n constructor(protected renderer: Renderer2) {}\n\n public ngAfterViewInit(): void {\n setupCell(this.renderer, this.config, this.element.nativeElement);\n }\n}\n","import { DsColors, Icons, IconStyles } from '@levelaccess/design-system';\nimport { Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseCellComponent, ICellConfig, IIconConfig } from '../base-cell/base-cell.component';\n\nexport interface IButtonCellConfig extends ICellConfig {\n icon?: IIconConfig;\n isDisabled$?: Observable;\n isExternalLink?: boolean;\n}\n\n@Component({\n selector: 'table-cell-button',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n \n \n \n \n \n {{ config.text }}\n @if (config.isExternalLink) {\n \n }\n \n `,\n})\nexport class ButtonCellComponent extends BaseCellComponent {\n protected readonly Icons: typeof Icons = Icons;\n protected readonly DsColors: typeof DsColors = DsColors;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n\n @Input() public config: IButtonCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ICheckboxCellConfig extends ICellConfig {\n indeterminate?: boolean;\n /**\n * Accepts a boolean value that represents the checked status of the checkbox input.\n *\n * Accepts a function that returns a boolean representing the checked status of the checkbox input.\n * The function is re evaluated on each change detection of the cell\n */\n checked?: boolean | (() => boolean);\n disabled?: boolean | (() => boolean);\n label?: string;\n id?: string;\n}\n\n@Component({\n selector: 'table-cell-checkbox',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n \n {{ config.label | translate }}\n \n
\n `,\n})\nexport class CheckboxCellComponent extends BaseCellComponent {\n @Input() public config: ICheckboxCellConfig;\n\n get checked(): boolean {\n return typeof this.config?.checked === 'function' ? this.config.checked() : this.config?.checked;\n }\n\n get disabled(): boolean {\n return typeof this.config?.disabled === 'function' ? this.config.disabled() : this.config?.disabled;\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, Type, ViewChild } from '@angular/core';\nimport { BaseCellComponent, ICellConfig, setupCell } from '../base-cell/base-cell.component';\nimport { IDclConfig } from '../../utilities/ngb-table.interface';\n\nexport interface IComposedCellConfig extends ICellConfig {\n configs: IDclConfig[];\n}\n\n@Component({\n selector: 'table-cell-composed',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n \n \n
\n `,\n})\nexport class ComposedCellComponent extends BaseCellComponent implements AfterViewInit {\n @Input() public config: IComposedCellConfig;\n @ViewChild('composedRef')\n public element: ElementRef;\n\n get types(): Type[] {\n return this.config.configs.map((config: IDclConfig) => config.type);\n }\n\n get configs(): ICellConfig[] {\n return this.config.configs.map((config: IDclConfig) => config.config);\n }\n\n public ngAfterViewInit(): void {\n setupCell(this.renderer, this.config, this.element.nativeElement);\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ITrendConfig } from '../../../../common-trend/common-trend.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\n\nexport interface IDataPointCellConfig extends ICellConfig {\n value: number;\n text?: string;\n isIncreaseImprovement?: boolean;\n previousValue?: number;\n showNoChange?: boolean;\n}\n\n@Component({\n selector: 'table-cell-data-point',\n template: `\n \n {{ config.text ?? config.value }}\n \n \n \n \n `,\n})\nexport class DataPointCellComponent implements OnInit {\n public trendConfig: ITrendConfig;\n\n @Input() public config: IDataPointCellConfig;\n\n public get hasPreviousData(): boolean {\n return typeof this.config.previousValue === 'number';\n }\n\n public ngOnInit(): void {\n if (this.hasPreviousData) {\n this.buildTrendConfig();\n }\n }\n\n private buildTrendConfig(): void {\n this.trendConfig = {\n currentValue: this.config.value,\n previousValue: this.config.previousValue,\n isIncreaseImprovement: this.config.isIncreaseImprovement,\n showNoChange: this.config.showNoChange,\n };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IDocumentFileItem } from '../../../../document/document.interface';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IDocumentFilesCellConfig extends ICellConfig {\n attachments: IDocumentFileItem[];\n}\n\n@Component({\n selector: 'table-cell-document-attachment',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
    \n
  • \n \n \n {{ attachment.fileExtension }}\n \n \n
  • \n
\n `,\n})\nexport class DocumentFilesCellComponent extends BaseCellComponent {\n @Input() public config: IDocumentFilesCellConfig;\n}\n","import {\n AfterViewInit,\n Component,\n HostListener,\n ElementRef,\n Input,\n ChangeDetectorRef,\n Renderer2,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { Options as FocusTrapOptions } from 'focus-trap';\nimport { DsButtonVariants, DsTooltipPosition, Icons, IconStyles } from '@levelaccess/design-system';\nimport { isNull } from 'lodash';\nimport { Observable } from 'rxjs';\n\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { CommonUtility } from '../../../../../utility/common.utility';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IDropdownItem {\n label: string;\n clickListener: () => any;\n disabled?: boolean;\n icon?: Icons;\n translate?: boolean;\n}\n\nexport interface IDropdownCellConfig extends ICellConfig {\n ellipsisIcon?: boolean;\n largeIcon?: boolean;\n ariaLabel?: string;\n icon?: Icons;\n iconTooltip?: string;\n dropdownItems: IDropdownItem[];\n isDisabled?: Observable;\n}\n\n@Component({\n selector: 'table-cell-dropdown',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n \n \n \n \n \n {{ config.translate === false ? config.text : (config.text | translate) }}\n \n \n \n \n \n \n {{ dropdownItem.translate === false ? dropdownItem.label : (dropdownItem.label | translate) }}\n \n \n \n {{ dropdownItem.translate === false ? dropdownItem.label : (dropdownItem.label | translate) }}\n \n \n \n
\n \n `,\n})\nexport class DropdownCellComponent extends BaseCellComponent implements OnDestroy, AfterViewInit {\n public static cellDataType: string = 'DropdownCellComponent';\n public isOpen: boolean = false;\n public x: number = 0;\n public y: number = 0;\n public xOffset1: number = 0;\n public yOffset1: number = 0;\n public xOffset2: number = 0;\n public yOffset2: number = 0;\n @Input() public config: IDropdownCellConfig;\n public menuIdSuffix: string;\n public initialFocus: string;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly DsTooltipPosition: typeof DsTooltipPosition = DsTooltipPosition;\n protected maxHeight: string;\n\n constructor(\n renderer: Renderer2,\n private zone: NgZone,\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private translationService: TranslateService,\n ) {\n super(renderer);\n this.menuIdSuffix = SharedCommonUtility.getRandomInsecureString();\n }\n\n public generateUniqueId(index: number): string {\n return 'dropdown-menu-action-button_' + (index + 1);\n }\n\n ngAfterViewInit(): void {\n this.initialFocus = 'button[role=\"menuitem\"]';\n }\n\n private setMaxHeight(viewPortTop: number): void {\n const totalHeight: number = document.documentElement.scrollHeight;\n const absoluteTop: number = viewPortTop + window.scrollY;\n const maxHeight: number = Math.min(totalHeight - absoluteTop, 336);\n\n this.maxHeight = `${maxHeight}px`;\n }\n\n public isDisabled(item: IDropdownItem): boolean {\n return item.disabled ? item.disabled : false;\n }\n\n @HostListener('window:scroll', ['$event'])\n public onWindowScroll(): void {\n if (this.isOpen) {\n this.xOffset2 = window.scrollX;\n this.yOffset2 = window.scrollY;\n }\n }\n\n @HostListener('window:resize', ['$event'])\n public onWindowResize(): void {\n if (this.isOpen) {\n this.toggle();\n }\n }\n\n @HostListener('document:click', ['$event'])\n public onClickHandler(event: Event): void {\n if (this.isOpen && this.elementRef.nativeElement.contains(event.target as Node) === false) {\n this.toggle();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n public onEscapeKeydownHandler(): void {\n if (this.isOpen) {\n this.toggle();\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n public onArrowUpKeydownHandler(event: KeyboardEvent): boolean {\n if (this.isOpen) {\n event.preventDefault();\n if (document.activeElement && document.activeElement.closest('div[role=\"menu\"]')) {\n const focusable: HTMLCollection = document.activeElement.parentNode.children;\n if (focusable.length > 0 && document.activeElement.parentNode.firstElementChild === document.activeElement) {\n CommonUtility.setFocusToElement(\n document.activeElement.parentNode.lastElementChild.id,\n document.activeElement.parentNode.lastElementChild as HTMLElement,\n );\n } else if (focusable.length > 0) {\n const currentIndex: number = Array.from(focusable).indexOf(document.activeElement);\n const previousElement: HTMLElement = focusable.item(currentIndex - 1) as HTMLElement;\n CommonUtility.setFocusToElement(previousElement.id, previousElement);\n }\n\n this.changeDetectorRef.detectChanges();\n\n return false;\n }\n }\n return true;\n }\n\n @HostListener('keydown.arrowDown', ['$event'])\n public onArrowDownKeydownHandler(event: KeyboardEvent): boolean {\n if (this.isOpen) {\n event.preventDefault();\n if (document.activeElement && document.activeElement.closest('div[role=\"menu\"]')) {\n const focusable: HTMLCollection = document.activeElement.parentNode.children;\n if (focusable.length > 0 && document.activeElement.parentNode.lastElementChild === document.activeElement) {\n CommonUtility.setFocusToElement(\n document.activeElement.parentNode.firstElementChild.id,\n document.activeElement.parentNode.firstElementChild as HTMLElement,\n );\n } else if (focusable.length > 0) {\n const currentIndex: number = Array.from(focusable).indexOf(document.activeElement);\n const nextElement: HTMLElement = focusable.item(currentIndex + 1) as HTMLElement;\n CommonUtility.setFocusToElement(nextElement.id, nextElement);\n\n this.changeDetectorRef.detectChanges();\n }\n return false;\n }\n }\n return true;\n }\n\n public toggle(event?: MouseEvent): void {\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n if (event) {\n const boundingRect: { x: number; y: number } = (event.target as HTMLElement).getBoundingClientRect();\n this.x = event.clientX || boundingRect.x;\n this.y = event.clientY || boundingRect.y;\n this.xOffset1 = this.xOffset2 = window.scrollX;\n this.yOffset1 = this.yOffset2 = window.scrollY;\n\n this.setMaxHeight(this.y + 10);\n }\n\n this.zone.runOutsideAngular(() => {\n const focusTrapOptionsWithInitialFocus: FocusTrapOptions = {\n initialFocus: this.initialFocus,\n };\n\n if (this.initialFocus && this.initialFocusExistsOnPage()) {\n setTimeout(() => {\n CommonUtility.activateFocusTrap(this.elementRef.nativeElement, focusTrapOptionsWithInitialFocus);\n }, 0);\n } else {\n setTimeout(() => {\n CommonUtility.activateFocusTrap(this.elementRef.nativeElement);\n }, 0);\n }\n });\n } else {\n CommonUtility.deactivateFocusTrap();\n }\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n CommonUtility.deactivateFocusTrap();\n }\n\n public get ariaLabel(): string {\n if (this.config.ariaLabel) {\n return this.config.ariaLabel;\n } else if (!this.config.text) {\n if (this.config.dropdownItems.length > 0) {\n return this.translationService.instant('show_actions_dropdown');\n }\n return this.translationService.instant('no_actions_available');\n }\n return null;\n }\n\n private initialFocusExistsOnPage(): boolean {\n return !isNull(this.elementRef.nativeElement.querySelector(this.initialFocus));\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\nimport { Observable } from 'rxjs';\nimport { BaseCellComponent, ICellConfig } from '../base-cell/base-cell.component';\n\nexport interface IDSButtonCellConfig extends ICellConfig {\n variant: DsButtonVariants;\n clickListener: Function;\n microActionIcon?: Icons;\n isDisabled$?: Observable;\n}\n\n@Component({\n selector: 'table-cell-ds-button',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n @if (isMicroAction()) {\n \n {{ config.text }}\n \n } @else {\n \n }\n `,\n})\nexport class DSButtonCellComponent extends BaseCellComponent {\n private static readonly MICRO_ACTION_VARIANTS: DsButtonVariants[] = [\n DsButtonVariants.microAction,\n DsButtonVariants.microActionHorizontalLayout,\n DsButtonVariants.microActionStacked,\n DsButtonVariants.microActionWithChevronRight,\n DsButtonVariants.microActionWithChevronRightInline,\n ];\n\n @Input() public config: IDSButtonCellConfig;\n\n public isMicroAction(): boolean {\n return DSButtonCellComponent.MICRO_ACTION_VARIANTS.includes(this.config.variant);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { DsChipColorVariant } from '@levelaccess/design-system';\n\nimport { BaseCellComponent, ICellConfig } from '../base-cell/base-cell.component';\n\nexport interface IDSChipCellConfig extends ICellConfig {\n chipColorVariant: DsChipColorVariant;\n}\n\n@Component({\n selector: 'table-cell-ds-chip',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: ` `,\n})\nexport class DSChipCellComponent extends BaseCellComponent {\n @Input() public config: IDSChipCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { DsColors, Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { BaseCellComponent, ICellConfig } from '../base-cell/base-cell.component';\nimport { $severity } from '../../../../../../../shared/constants/accessibility';\nimport { ICustomSeverity } from '../../../../../../../shared/interfaces/tenant.interface';\nimport { SeverityClass } from '../../../../../interfaces/custom-severities.interface';\nimport { $customSeverity } from '../../../../../../../shared/constants/tenant';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { SharedTextUtility } from '../../../../../../../shared/utils/text.utility';\n\nexport interface IDSSeverityCellConfig extends ICellConfig {\n severity: $severity;\n customSeverity: ICustomSeverity;\n customSeverityKeysSortedByRank?: $severity[];\n icon?: Icons;\n class?: SeverityClass;\n}\n\n@Component({\n selector: 'table-cell-custom-severity',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n {{ severityText }}\n
\n `,\n})\nexport class DsSeverityCellComponent extends BaseCellComponent {\n protected readonly Icons: typeof Icons = Icons;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly colors: typeof DsColors = DsColors;\n protected readonly customSeveritiesClassAndIcon: { class: SeverityClass; icon: Icons }[] = [\n { class: SeverityClass.moderate, icon: Icons.ChevronUp },\n { class: SeverityClass.minor, icon: Icons.ChevronDown },\n ];\n\n @Input() public config: IDSSeverityCellConfig;\n\n private getCustomSeverityIndex(severity: $severity): number {\n return this.config.customSeverityKeysSortedByRank?.indexOf(severity) ?? -1;\n }\n\n protected get severityText(): string {\n return SharedCommonUtility.notNullishOrEmpty(this.config.text)\n ? this.config.text\n : SharedTextUtility.capitalize(this.config.customSeverity?.[$customSeverity.label]);\n }\n\n protected get systemSeverityIcon(): Icons | undefined {\n switch (this.config.severity) {\n case $severity.critical:\n return Icons.CircleMinus;\n case $severity.high:\n return Icons.ChevronsUp;\n case $severity.low:\n return Icons.ChevronsDown;\n case $severity.custom2:\n case $severity.custom1:\n if (this.config.customSeverityKeysSortedByRank?.includes(this.config.severity)) {\n const customIndex: number = this.getCustomSeverityIndex(this.config.severity);\n return this.customSeveritiesClassAndIcon[customIndex].icon;\n }\n return this.config.icon;\n case $severity.info:\n default:\n return this.config.icon;\n }\n }\n\n protected get systemSeverityClass(): SeverityClass | undefined {\n switch (this.config.severity) {\n case $severity.critical:\n return SeverityClass.critical;\n case $severity.high:\n return SeverityClass.high;\n case $severity.low:\n return SeverityClass.low;\n case $severity.custom2:\n case $severity.custom1:\n if (this.config.customSeverityKeysSortedByRank?.includes(this.config.severity)) {\n const customIndex: number = this.getCustomSeverityIndex(this.config.severity);\n return this.customSeveritiesClassAndIcon[customIndex].class;\n }\n return this.config.class;\n case $severity.info:\n default:\n return this.config.class;\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'empty-cell',\n template: ``,\n})\nexport class EmptyCellComponent {}\n","import { Component } from '@angular/core';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'table-cell-external-link-button',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n \n {{ config.text }}\n \n \n \n \n \n \n `,\n})\nexport class ExternalLinkButtonCellComponent extends BaseCellComponent {\n get lastSegmentOfHref(): string {\n const href: string = this.config?.attributes?.href;\n if (SharedCommonUtility.notNullish(href)) {\n const segments: string[] = href.split('/');\n return segments?.[segments?.length - 1];\n }\n return '';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Icons, IconStyles, DsColors } from '@levelaccess/design-system';\n\nimport { BaseCellComponent, ICellConfig, ITagConfig } from '../base-cell/base-cell.component';\n\nexport interface IExternalLinkCellConfig extends ICellConfig, ITagConfig {\n showExternalLinkIcon?: boolean;\n}\n\n@Component({\n selector: 'table-cell-external-link',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n {{ config.text }}\n \n \n `,\n})\nexport class ExternalLinkCellComponent extends BaseCellComponent {\n protected readonly Icons: typeof Icons = Icons;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly DsColors: typeof DsColors = DsColors;\n\n @Input() public config: IExternalLinkCellConfig;\n}\n","import { Component } from '@angular/core';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\n@Component({\n selector: 'table-cell-html',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `
`,\n})\nexport class HtmlCellComponent extends BaseCellComponent {}\n","import { Component } from '@angular/core';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\n@Component({\n selector: 'table-cell-html-highlight',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `
`,\n})\nexport class HtmlHighlightCellComponent extends BaseCellComponent {}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IImageCellConfig extends ICellConfig {\n src: string;\n alt: string;\n}\n\n@Component({\n selector: 'table-cell-image',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n `,\n})\nexport class ImageCellComponent extends BaseCellComponent {\n @Input() public config: IImageCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { AuditToolNames } from '../../../../../../../shared/constants/audit-tool';\nimport { flawStatus } from '../../../../../../../shared/constants/flaw';\nimport { RuleAuditHistoryType } from '../../../../../../../shared/constants/rule-audit-history';\nimport { IFlaw } from '../../../../../../../shared/interfaces/flaw.interface';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IIssueStateLabelCellConfig extends ICellConfig {\n status: flawStatus;\n hasHistory: boolean;\n flaw?: IFlaw;\n url: string;\n selector: string;\n scanId: string;\n ruleId: string;\n toolName: AuditToolNames;\n tabIndex?: number;\n}\n\n@Component({\n selector: 'table-cell-issue-state',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n styles: [\n `\n div {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n }\n\n button {\n padding: 3px 4px;\n border: 1px solid #757575;\n border-radius: 4px;\n }\n `,\n ],\n template: `\n
\n \n {{ 'label_dismissed' | translate }}\n \n \n {{ 'label_' + config.status | translate }}\n \n \n
\n `,\n})\nexport class IssueStateLabelCellComponent extends BaseCellComponent {\n @Input() public config: IIssueStateLabelCellConfig;\n public type: RuleAuditHistoryType = RuleAuditHistoryType.issue;\n public flawStatus: typeof flawStatus = flawStatus;\n}\n","import { Component, Input } from '@angular/core';\nimport { IAutomatedScanIssue, IScanIssues } from '../../../../../../../shared/interfaces/scan-issues.interface';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IIssuesViewDetailsCellConfig extends ICellConfig {\n selectedIssue: IAutomatedScanIssue;\n issues: IScanIssues;\n}\n\n@Component({\n selector: 'table-cell-issues-view-details',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n
\n \n
\n

{{ config.issues.title }}

\n
\n
\n \n \n
\n
\n
\n
\n `,\n})\nexport class IssuesViewDetailsCellComponent extends BaseCellComponent {\n @Input() public config: IIssuesViewDetailsCellConfig;\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { QueryParamsHandling } from '@angular/router';\nimport { Params } from 'express-serve-static-core';\nimport { BaseCellComponent, ICellConfig, IIconConfig, ITagConfig, setupCell } from '../base-cell/base-cell.component';\n\nexport interface ILinkCellConfig extends ICellConfig, ITagConfig {\n icon?: IIconConfig;\n tagLabel?: string;\n tagColor?: string;\n noDecoration?: boolean;\n linkLabel?: string;\n}\n\n@Component({\n selector: 'table-cell-link',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n \n \n \n \n
\n \n \n \n \n {{ config.text }}\n \n \n \n \n \n \n {{ config.tagLabel }}\n \n \n
\n {{ config.subText }}\n
\n
\n `,\n})\nexport class LinkCellComponent extends BaseCellComponent implements OnInit, AfterViewInit {\n @ViewChild('svgTemplate')\n public svgElement: ElementRef;\n\n @Input() public config: ILinkCellConfig;\n public routerLink: string;\n public queryParams: Params;\n public fragment: string;\n public queryParamsHandling: QueryParamsHandling;\n public state: { [k: string]: any };\n\n public onClick(event: MouseEvent): void {\n event?.stopPropagation();\n }\n\n public ngOnInit(): void {\n this.routerLink = this.config.attributes['href'] || this.config.attributes['routerLink'];\n this.queryParams = this.config.attributes['queryParams'] || {};\n this.fragment = this.config.attributes['fragment'] || null;\n this.queryParamsHandling = this.config.attributes['queryParamsHandling'] || '';\n this.state = this.config.attributes['state'];\n }\n\n public ngAfterViewInit(): void {\n if (this.config.icon !== undefined) {\n setupCell(this.renderer, this.config.icon, this.svgElement.nativeElement);\n }\n\n super.ngAfterViewInit();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IOrderedListItemData } from '../ordered-list-cell/ordered-list-cell.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ILinksOrderedListItemData extends IOrderedListItemData {\n routerLink: string;\n}\n\nexport interface ILinksOrderedListCellConfig extends ICellConfig {\n items: ILinksOrderedListItemData[];\n}\n\n@Component({\n selector: 'table-cell-links-ol',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
    \n
  1. \n {{ item.text }}\n
  2. \n
\n `,\n})\nexport class LinksOrderedListCellComponent extends BaseCellComponent {\n @Input() public config: ILinksOrderedListCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IOrderedListItemData {\n text: string;\n}\n\nexport interface IOrderedListCellConfig extends ICellConfig {\n items: IOrderedListItemData[];\n}\n\n@Component({\n selector: 'table-cell-ol',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
    \n
  1. \n {{ item.text }}\n
  2. \n
\n `,\n})\nexport class OrderedListCellComponent extends BaseCellComponent {\n @Input() public config: IOrderedListCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\n@Component({\n selector: 'table-cell-pending',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n
\n \n {{ 'loading_spinner_text' | translate }}\n \n {{ config.text }}\n {{ 'status_pending' | translate }}\n
\n
\n `,\n})\nexport class PendingCellComponent extends BaseCellComponent {\n @Input() public config: ICellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { IRuleStatusToggleData } from '../../../../rule-status-toggle/rule-status-toggle.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\n\nexport type IRuleStatusToggleConfig = IRuleStatusToggleData & ICellConfig;\n\n@Component({\n selector: 'table-cell-rule-status',\n template: ``,\n})\nexport class RuleStatusToggleCellComponent {\n @Input() public config: IRuleStatusToggleConfig;\n}\n","import { Component, OnInit, Input, Renderer2 } from '@angular/core';\nimport { Icons } from '@levelaccess/design-system';\nimport { EapColors } from '../../../../../shared/eap-colors';\nimport { ITrendConfig } from '../../../../common-trend/common-trend.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IScoreCellConfig extends ICellConfig {\n score: number;\n isIncreaseImprovement?: boolean;\n previousValue?: number;\n showNoChange?: boolean;\n}\n\n@Component({\n selector: 'table-cell-score',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n {{ 'n_of_t' | translate: [config.score, 100] }}\n \n {{ config.score }} / 100\n \n \n \n `,\n})\nexport class ScoreCellComponent extends BaseCellComponent implements OnInit {\n public Icons: typeof Icons;\n public EapColors: typeof EapColors;\n\n public trendConfig: ITrendConfig;\n\n @Input() public config: IScoreCellConfig;\n\n constructor(protected renderer: Renderer2) {\n super(renderer);\n this.Icons = Icons;\n this.EapColors = EapColors;\n }\n\n public get scoreClass(): string {\n if (typeof this.config?.score !== 'undefined') {\n if (this.config.score >= 0 && this.config.score <= 49) {\n return 'score-low';\n } else if (this.config.score >= 50 && this.config.score <= 79) {\n return 'score-mid';\n }\n return 'score-high';\n }\n\n return null;\n }\n\n public get hasPreviousData(): boolean {\n return typeof this.config.previousValue === 'number';\n }\n\n public ngOnInit(): void {\n if (this.hasPreviousData) {\n this.buildTrendConfig();\n }\n }\n\n private buildTrendConfig(): void {\n this.trendConfig = {\n currentValue: this.config.score,\n previousValue: this.config.previousValue,\n isIncreaseImprovement: true,\n noChangePrefix: '-',\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { ImageCellComponent } from '../image-cell/image-cell.component';\n\n@Component({\n selector: 'table-cell-secure-image',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n `,\n})\nexport class SecureImageCellComponent extends ImageCellComponent {}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { SelectFieldContext } from '../../../../common-select/common-select.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ISelectCellConfig extends ICellConfig {\n data$: Observable[]>;\n form: UntypedFormGroup;\n formField: string;\n nameKey: string;\n valueKey: string;\n placeholderLabel?: string;\n}\n\n@Component({\n selector: 'table-cell-select',\n template: `\n \n `,\n})\nexport class SelectCellComponent extends BaseCellComponent implements OnInit {\n @Input() public config: ISelectCellConfig;\n\n public context: SelectFieldContext;\n\n public ngOnInit(): void {\n this.context = {\n field: this.config.formField,\n nameKey: this.config.nameKey,\n valueKey: this.config.valueKey,\n placeholderValue: this.config.placeholderLabel,\n };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { $severity } from '../../../../../../../shared/constants/accessibility';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ISeverityCellConfig extends ICellConfig {\n severity: $severity;\n text?: string;\n}\n\n@Component({\n selector: 'table-cell-severity',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n \n \n \n \n\n \n \n \n \n \n {{ (config.text | titlecase) || ('scan_issue_severity_' + config.severity | translate) }}\n
\n `,\n})\nexport class SeverityCellComponent extends BaseCellComponent {\n @Input() public config: ISeverityCellConfig;\n public $severity: typeof $severity = $severity;\n}\n","import { TemplateRef, Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ITemplateCellConfig extends ICellConfig {\n template: TemplateRef;\n templateContext?: any;\n}\n\n@Component({\n selector: 'template-cell-text',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n `,\n})\nexport class TemplateCellComponent extends BaseCellComponent {\n @Input() public config: ITemplateCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { BaseCellComponent, ICellConfig, IIconConfig, ITagConfig } from '../base-cell/base-cell.component';\n\nexport interface ITextCellConfig extends ICellConfig, ITagConfig {\n icon?: IIconConfig;\n tagLabel?: string;\n tagColor?: string;\n tagTooltip?: string;\n for?: string;\n}\n\n@Component({\n selector: 'table-cell-text',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n \n \n {{ config.icon.iconAriaLabelText }}\n \n \n \n \n \n \n \n \n \n \n \n {{ config.text }}\n \n \n \n \n \n {{ config.tagLabel }}\n \n
\n {{ config.subText }}\n
\n `,\n})\nexport class TextCellComponent extends BaseCellComponent {\n @Input() public config: ITextCellConfig;\n}\n","import { Component, Input, Renderer2 } from '@angular/core';\nimport { CommonUtility } from '../../../../../utility/common.utility';\nimport { BaseCellComponent, ICellConfig, IIconConfig } from '../base-cell/base-cell.component';\n\nexport interface ITextWithIconCellConfig extends ICellConfig {\n icon?: IIconConfig;\n iconText?: string;\n iconTextStyles?: Partial>;\n}\n\n@Component({\n selector: 'table-cell-text-with-icon-text',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n \n \n \n {{ config.icon.iconAriaLabelText }}\n \n \n \n \n {{ config.text }}\n
\n \n \n \n {{ config.iconText }}\n \n \n \n
\n `,\n})\nexport class TextWithIconCellComponent extends BaseCellComponent {\n @Input() public config: ITextWithIconCellConfig;\n public iconTitleId: string;\n\n public constructor(renderer: Renderer2) {\n super(renderer);\n this.iconTitleId = CommonUtility.createUniqueDOMId('iconTitle');\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IThumbnailCellConfig extends ICellConfig {\n thumbnailUrl: string;\n imageUrl: string;\n thumbnailAlt: string;\n}\n\n@Component({\n selector: 'table-cell-thumbnail',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n \n \n \"{{\n \n \n \n
\n `,\n})\nexport class ThumbnailCellComponent extends BaseCellComponent {\n @Input() public config: IThumbnailCellConfig;\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ITitleCellConfig extends ICellConfig {\n title: string;\n details: string;\n}\n\n@Component({\n selector: 'table-cell-title',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n {{ config.title }}\n
\n {{ config.details }}\n `,\n})\nexport class TitleCellComponent extends BaseCellComponent {\n @Input() public config: ITitleCellConfig;\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { DsButtonVariants, DsTooltipPosition, Icons } from '@levelaccess/design-system';\nimport { BaseCellComponent, ICellConfig } from '../base-cell/base-cell.component';\n\nexport interface ITooltipCellConfig extends ICellConfig {\n tooltipPlacement?: DsTooltipPosition;\n icon?: Icons;\n}\n\nconst defaultConfig: ITooltipCellConfig = {\n tooltipPlacement: DsTooltipPosition.right,\n icon: Icons.CircleInfo,\n};\n\n@Component({\n selector: 'table-cell-tooltip',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n\n template: `\n \n `,\n})\nexport class TooltipCellComponent extends BaseCellComponent implements OnInit {\n @ViewChild('tooltipRef', { read: ElementRef })\n public element: ElementRef;\n @Input() public config: ITooltipCellConfig;\n\n protected readonly DsTooltipPosition: typeof DsTooltipPosition = DsTooltipPosition;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n protected readonly Icons: typeof Icons = Icons;\n\n public ngOnInit(): void {\n this.config = { ...defaultConfig, ...this.config };\n }\n}\n","import { Component, AfterViewInit, Input, ViewChild, Renderer2, ChangeDetectorRef } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { TypeaheadComponent } from '../../../../typeahead/typeahead.component';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface ITypeAheadCellConfig extends ICellConfig {\n data$: Observable[]>;\n form: UntypedFormGroup;\n formField: string;\n nameKey: string;\n valueKey: string;\n onSearch: (term: string) => void;\n defaultTerm?: string;\n}\n\n@Component({\n selector: 'table-cell-typeahead',\n template: `\n \n \n
{{ item[config.nameKey] }}
\n
\n \n `,\n})\nexport class TypeAheadCellComponent extends BaseCellComponent implements AfterViewInit {\n @Input() public config: ITypeAheadCellConfig;\n\n @ViewChild(TypeaheadComponent)\n private typeaheadComponent: TypeaheadComponent;\n\n constructor(\n renderer2: Renderer2,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super(renderer2);\n }\n\n public onSearch(term: string): void {\n this.config.onSearch(term);\n }\n\n public onSelect(value: any): void {\n this.typeaheadComponent.searchQuery = value[this.config.nameKey];\n this.config.form.get(this.config.formField).setValue(value[this.config.valueKey]);\n }\n\n public ngAfterViewInit(): void {\n super.ngAfterViewInit();\n if (SharedCommonUtility.notNullishOrEmpty(this.config.defaultTerm)) {\n this.typeaheadComponent.searchQuery = this.config.defaultTerm;\n this.changeDetectorRef.detectChanges();\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ICellConfig } from '../base-cell/base-cell.component';\nimport { BaseCellComponent } from '../base-cell/base-cell.component';\n\nexport interface IUserCellConfig extends ICellConfig {\n user: { accountStatus?: string };\n}\n\n@Component({\n selector: 'table-cell-user-status',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: ` `,\n})\nexport class UserAccountStatusCellComponent extends BaseCellComponent {\n @Input() public config: IUserCellConfig;\n}\n","
\n
\n \n \n \n \n

{{ config.title }}

\n

\n

{{ config.subtitle }}

\n @if (config.dsButton) {\n \n {{ config.dsButton.label }}\n \n } @else if (config.button) {\n \n {{ config.button.label }}\n \n }\n
\n
\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { ITableEmptyState } from '../utilities/ngb-table.interface';\nimport { A11yService } from '../../../../services/a11y.service';\n\n@Component({\n selector: 'table-empty-state',\n templateUrl: './table-empty-state.component.html',\n styleUrls: ['./table-empty-state.component.scss'],\n})\nexport class NgbTableEmptyStateComponent implements OnChanges {\n @Input() public config: ITableEmptyState;\n\n public constructor(private a11yService: A11yService) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n const prev: ITableEmptyState | undefined = changes['config']?.previousValue;\n const curr: ITableEmptyState | undefined = changes['config']?.currentValue;\n\n if (curr?.title && prev?.title !== curr?.title) {\n this.a11yService.setMessage(curr.title);\n }\n\n if (curr?.subtitle && curr?.subtitle !== prev?.subtitle) {\n this.a11yService.setMessage(curr.subtitle);\n }\n }\n}\n","\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {{ config?.columns[column]?.translationKey | translate: config?.columns[column]?.translationExtra }}\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n 0; else noDataState\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{\n config.caption\n }}\n
{{ 'select_row' | translate }}\n \n \n \n \n {{ config?.columns[column]?.translationKey | translate: config?.columns[column]?.translationExtra }}\n \n \n
\n \n
\n
\n
\n

{{ 'loading_spinner_text' | translate }}

\n
\n
\n
\n \n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n OnChanges,\n SimpleChanges,\n ViewChildren,\n QueryList,\n} from '@angular/core';\nimport { ISelectedSingleData, ITableConfig, ITableRow, SelectAllEvent, SortEvent } from './utilities/ngb-table.interface';\nimport { $sortingOrder } from '../../../../../shared/constants/sort';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { Icons } from '../../../shared/eap-icons.component';\nimport { DclWrapperComponent } from './utilities/dcl-wrapper.component';\nimport { CheckboxCellComponent } from './cells/checkbox-cell/checkbox-cell.component';\n\nconst NO_ROW_SELECTED = { row: null, index: -1 };\n\n@Component({\n selector: 'app-ngb-table',\n templateUrl: './ngb-table.component.html',\n styleUrls: ['./ngb-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgbTableComponent implements OnInit, OnChanges {\n @Input() public _config: ITableConfig;\n @Input() public data: ITableRow[];\n @Input() public allSelected: boolean;\n @Input() public sortingOrder: Record;\n\n @Output() public onSelectAll: EventEmitter;\n @Output() public onSort: EventEmitter;\n @Output() public rowSelectionChange: EventEmitter;\n\n @ViewChildren(DclWrapperComponent) private cellWrappers: QueryList;\n\n public columns: string[];\n public rotateDir: Record<$sortingOrder, $sortingOrder>;\n public $sortingOrder: typeof $sortingOrder;\n public rowSelection: ISelectedSingleData;\n public Icons: typeof Icons;\n\n @Input() public set config(config: ITableConfig) {\n this._config = config;\n this.columns = this.getColumns();\n this.initSortingState();\n }\n\n public get config(): ITableConfig {\n return this._config;\n }\n\n @Input()\n public set rowSelectionIndex(index: number) {\n if (index >= 0 && index < this.data?.length) {\n this.rowSelected(this.data[index], index);\n } else {\n this.rowSelected(NO_ROW_SELECTED.row, NO_ROW_SELECTED.index);\n }\n this.changeDetector.detectChanges();\n }\n\n public constructor(private changeDetector: ChangeDetectorRef) {\n this.config = null;\n this.data = null;\n this.columns = [];\n this.sortingOrder = {};\n this.rowSelection = { row: null, index: -1 };\n this.rotateDir = {\n [$sortingOrder.asc]: $sortingOrder.desc,\n [$sortingOrder.desc]: $sortingOrder.all,\n [$sortingOrder.all]: $sortingOrder.asc,\n };\n this.onSelectAll = new EventEmitter();\n this.onSort = new EventEmitter();\n this.rowSelectionChange = new EventEmitter();\n this.$sortingOrder = $sortingOrder;\n this.Icons = Icons;\n }\n\n private initSortingState(): void {\n for (const col of this.columns) {\n if (this.config.columns[col].sortingEnabled && SharedCommonUtility.isNullish(this.sortingOrder[col])) {\n this.sortingOrder[col] = $sortingOrder.all;\n }\n }\n }\n\n public getColumns(): string[] {\n if (this.config) {\n return Object.keys(this.config.columns);\n }\n return [];\n }\n\n public isTableDataAvailable(): boolean {\n if (SharedCommonUtility.getTypeOf(this.config) !== 'object' || Array.isArray(this.data) === false) {\n return false;\n } else if (Object.keys(this.config.columns).length === 0) {\n return false;\n }\n return true;\n }\n\n public get isDataLoading(): boolean {\n return Array.isArray(this.data) === false;\n }\n\n public sortingTriggered(column: string): void {\n if (this.config.columns[column]?.sortingEnabled) {\n Object.keys(this.config.columns).forEach((col: string) => {\n if (this.config.columns[col].sortingEnabled && (col !== column || !(col in this.sortingOrder))) {\n this.sortingOrder[col] = $sortingOrder.all;\n }\n });\n\n const currSortOrder: $sortingOrder = this.sortingOrder[column];\n this.sortingOrder[column] = currSortOrder ? this.rotateDir[currSortOrder] : $sortingOrder.all;\n this.rowSelection = NO_ROW_SELECTED;\n this.onSort.emit({\n column: column,\n direction: this.sortingOrder[column],\n });\n }\n }\n\n public reloadWithNewConfig(config: ITableConfig): void {\n this.config = config;\n this.ngOnInit();\n }\n\n /**\n * @deprecated should provide updated @Input data: ITableRow[] instead\n */\n public reloadWithNewData(data: ITableRow[]): void {\n this.data = data;\n if (!SharedCommonUtility.isNullish(this.rowSelection)) {\n this.rowSelection.row = data[this.rowSelection.index];\n }\n this.ngOnInit();\n }\n\n public markForCheck(filter?: (cell: DclWrapperComponent) => boolean): void {\n this.cellWrappers.filter(filter ?? ((): boolean => true)).forEach((cell: DclWrapperComponent) => cell.markForCheck());\n }\n\n public allRowsSelected(event: Event): void {\n const checkbox: HTMLInputElement = event.target as HTMLInputElement;\n const selected: boolean = checkbox.checked;\n this.onSelectAll.emit({ selected });\n this.markForCheck((cell: DclWrapperComponent): boolean => cell.type === CheckboxCellComponent);\n }\n\n public rowSelected(row: ITableRow, index: number): void {\n if (!this.config.singleSelect?.selectable || this.rowSelection?.row === row || row?.isDisabled) {\n return;\n }\n\n if (row === null) {\n this.rowSelection = NO_ROW_SELECTED;\n this.rowSelectionChange.emit(null);\n } else {\n this.rowSelection = { row, index };\n this.rowSelectionChange.emit(this.rowSelection);\n }\n }\n\n public isRowSelected(index: number): boolean {\n return this.rowSelection.index === index;\n }\n\n public getCellStyles(row: ITableRow, column: string): Partial> {\n return { ...this.config.columns[column].styles, ...row.data[column]?.config?.styles };\n }\n\n public trackByFn(_: number, item: ITableRow): ITableRow | string {\n return item.key ?? item;\n }\n\n public ngOnInit(): void {\n this.columns = this.getColumns();\n this.initSortingState();\n\n this.changeDetector.detectChanges();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const data: ITableRow[] | undefined = changes.data?.currentValue;\n if (\n this.config?.singleSelect?.selectFirstRow &&\n Array.isArray(data) &&\n data.length > 0 &&\n (SharedCommonUtility.isNullish(changes.rowSelectionIndex) || changes?.rowSelectionIndex?.firstChange) &&\n !data[0]?.isDisabled\n ) {\n this.rowSelected(data[0], 0);\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ICellConfig, BaseCellComponent } from '../cells/base-cell/base-cell.component';\n\n@Component({\n selector: 'dcl-wrapper',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DclWrapperComponent implements AfterViewInit, OnChanges, OnDestroy {\n @ViewChild('target', { read: ViewContainerRef })\n private target: ViewContainerRef;\n private isViewInitialized: boolean;\n\n @Input() public type: any;\n @Input() public config: ICellConfig;\n\n public cmpRef: ComponentRef;\n\n public constructor(private changeDetector: ChangeDetectorRef) {\n this.isViewInitialized = false;\n }\n\n private updateComponent(): void {\n if (this.isViewInitialized === false) {\n return;\n }\n\n if (this.cmpRef) {\n this.cmpRef.destroy();\n }\n\n this.cmpRef = this.target.createComponent(this.type);\n\n if (this.config) {\n this.cmpRef.instance.config = this.config;\n }\n\n this.changeDetector.detectChanges();\n }\n\n public ngOnChanges(): void {\n this.updateComponent();\n }\n\n public ngAfterViewInit(): void {\n this.isViewInitialized = true;\n this.updateComponent();\n }\n\n public ngOnDestroy(): void {\n if (this.cmpRef) {\n this.cmpRef.destroy();\n }\n }\n\n public markForCheck(): void {\n this.changeDetector.markForCheck();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { BaseCellComponent, ICellConfig } from '../base-cell/base-cell.component';\n\nexport interface IUserAvatarCellConfig extends ICellConfig {\n text: string;\n src: string;\n alt: string;\n}\n\n@Component({\n selector: 'table-cell-user-avatar',\n styleUrls: ['../base-cell/base-cell.component.scss'],\n template: `\n
\n
\n \n \n \n
\n
\n {{ config.text }}\n
\n
\n `,\n})\nexport class UserAvatarCellComponent extends BaseCellComponent {\n @Input() public config: IUserAvatarCellConfig;\n}\n","import { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { IAttachmentCellConfig, AttachmentsCellComponent } from '../cells/attachments-cell/attachments-cell.component';\nimport { ICellConfig } from '../cells/base-cell/base-cell.component';\nimport { IButtonCellConfig, ButtonCellComponent } from '../cells/button-cell/button-cell.component';\nimport { ICheckboxCellConfig, CheckboxCellComponent } from '../cells/checkbox-cell/checkbox-cell.component';\nimport { IDataPointCellConfig, DataPointCellComponent } from '../cells/data-point-cell/data-point-cell.component';\nimport { IDocumentFilesCellConfig, DocumentFilesCellComponent } from '../cells/document-files-cell/document-files-cell.component';\nimport { IDropdownCellConfig, DropdownCellComponent } from '../cells/dropdown-cell/dropdown-cell.component';\nimport { EmptyCellComponent } from '../cells/empty-cell/empty-cell.component';\nimport { ExternalLinkButtonCellComponent } from '../cells/external-link-button-cell/external-link-button-cell.component';\nimport { ExternalLinkCellComponent, IExternalLinkCellConfig } from '../cells/external-link-cell/external-link-cell.component';\nimport { HtmlCellComponent } from '../cells/html-cell/html-cell.component';\nimport { HtmlHighlightCellComponent } from '../cells/html-highlight-cell/html-highlight-cell.component';\nimport { IImageCellConfig, ImageCellComponent } from '../cells/image-cell/image-cell.component';\nimport {\n IIssueStateLabelCellConfig,\n IssueStateLabelCellComponent,\n} from '../cells/issue-state-label-cell/issue-state-label-cell.component';\nimport {\n IIssuesViewDetailsCellConfig,\n IssuesViewDetailsCellComponent,\n} from '../cells/issues-view-details-cell/issue-view-details-cell.component';\nimport { ILinkCellConfig, LinkCellComponent } from '../cells/link-cell/link-cell.component';\nimport {\n ILinksOrderedListCellConfig,\n LinksOrderedListCellComponent,\n} from '../cells/links-ordered-list-cell/links-ordered-list-cell.component';\nimport { IOrderedListCellConfig, OrderedListCellComponent } from '../cells/ordered-list-cell/ordered-list-cell.component';\nimport { PendingCellComponent } from '../cells/pending-cell/pending-cell.component';\nimport {\n IRuleStatusToggleConfig,\n RuleStatusToggleCellComponent,\n} from '../cells/rule-status-toggle-cell/rule-status-toggle-cell.component';\nimport { IScoreCellConfig, ScoreCellComponent } from '../cells/score-cell/score-cell.component';\nimport { SecureImageCellComponent } from '../cells/secure-image-cell/secure-image-cell.component';\nimport { ISelectCellConfig, SelectCellComponent } from '../cells/select-cell/select-cell.component';\nimport { ISeverityCellConfig, SeverityCellComponent } from '../cells/severity-cell/severity-cell.component';\nimport { ITemplateCellConfig, TemplateCellComponent } from '../cells/template-cell/template-cell.component';\nimport { ITextCellConfig, TextCellComponent } from '../cells/text-cell/text-cell.component';\nimport { ITextWithIconCellConfig, TextWithIconCellComponent } from '../cells/text-with-icon-cell/text-with-icon-cell.component';\nimport { IThumbnailCellConfig, ThumbnailCellComponent } from '../cells/thumbnail-cell/thumbnail-cell.component';\nimport { ITitleCellConfig, TitleCellComponent } from '../cells/title-cell/title-cell.component';\nimport { ITypeAheadCellConfig, TypeAheadCellComponent } from '../cells/type-ahead-cell/type-ahead-cell.component';\nimport {\n IUserCellConfig,\n UserAccountStatusCellComponent,\n} from '../cells/user-account-status-cell/user-account-status-cell.component';\nimport { IUserAvatarCellConfig, UserAvatarCellComponent } from '../cells/user-avatar-cell/user-avatar-cell-component';\nimport { IDclConfig } from './ngb-table.interface';\nimport { DSButtonCellComponent, IDSButtonCellConfig } from '../cells/ds-button-cell/ds-button-cell.component';\nimport { DSChipCellComponent, IDSChipCellConfig } from '../cells/ds-chip-cell/ds-chip-cell.component';\nimport { DsSeverityCellComponent, IDSSeverityCellConfig } from '../cells/ds-severity-cell/ds-severity-cell.component';\nimport { ComposedCellComponent, IComposedCellConfig } from '../cells/composed-cell/composed-cell.component';\nimport { ITooltipCellConfig, TooltipCellComponent } from '../cells/tooltip-cell/tooltip-cell.component';\n\nexport class NgbTableUtilities {\n public static composedCell(config: IComposedCellConfig): IDclConfig {\n return {\n type: ComposedCellComponent,\n config: config,\n };\n }\n\n public static textCell(config: ITextCellConfig): IDclConfig {\n return {\n type: TextCellComponent,\n config: config,\n };\n }\n\n public static linkCell(config: ILinkCellConfig): IDclConfig {\n return {\n type: LinkCellComponent,\n config: config,\n };\n }\n\n public static tooltipCell(config: ITooltipCellConfig): IDclConfig {\n return {\n type: TooltipCellComponent,\n config: config,\n };\n }\n\n public static externalLinkCell(config: IExternalLinkCellConfig): IDclConfig {\n return {\n type: ExternalLinkCellComponent,\n config: config,\n };\n }\n\n public static externalLinkButtonCell(config: ICellConfig): IDclConfig {\n return {\n type: ExternalLinkButtonCellComponent,\n config: config,\n };\n }\n\n public static buttonCell(config: IButtonCellConfig): IDclConfig {\n return {\n type: ButtonCellComponent,\n config: config,\n };\n }\n\n public static DSbuttonCell(config: IDSButtonCellConfig): IDclConfig {\n return {\n type: DSButtonCellComponent,\n config: config,\n };\n }\n\n public static DSChipCell(config: IDSChipCellConfig): IDclConfig {\n return {\n type: DSChipCellComponent,\n config: config,\n };\n }\n\n public static DSSeverityCell(config: IDSSeverityCellConfig): IDclConfig {\n return {\n type: DsSeverityCellComponent,\n config: config,\n };\n }\n\n public static dropdownCell(config: IDropdownCellConfig): IDclConfig {\n if (config.ellipsisIcon && !SharedCommonUtility.isNullishOrEmpty(config.text)) {\n throw new Error(\n `ngb-table.dropdownCell - The properties 'ellipsisIcon' and 'text' are incompatible! Please pick only one and remove the other.`,\n );\n }\n return {\n type: DropdownCellComponent,\n config: config,\n };\n }\n\n public static severityCell(config: ISeverityCellConfig): IDclConfig {\n return {\n type: SeverityCellComponent,\n config: config,\n };\n }\n\n public static scoreCell(config: IScoreCellConfig): IDclConfig {\n return {\n type: ScoreCellComponent,\n config: config,\n };\n }\n\n public static checkboxCell(config: ICheckboxCellConfig): IDclConfig {\n return {\n type: CheckboxCellComponent,\n config: config,\n };\n }\n\n public static issueStateLabelCell(config: IIssueStateLabelCellConfig): IDclConfig {\n return {\n type: IssueStateLabelCellComponent,\n config: config,\n };\n }\n\n public static titleCell(config: ITitleCellConfig): IDclConfig {\n return {\n type: TitleCellComponent,\n config: config,\n };\n }\n\n public static htmlCell(config: ICellConfig): IDclConfig {\n return {\n type: HtmlCellComponent,\n config: config,\n };\n }\n\n public static htmlHighlightCell(config: ICellConfig): IDclConfig {\n return {\n type: HtmlHighlightCellComponent,\n config: config,\n };\n }\n\n public static issuesViewDetailsCell(config: IIssuesViewDetailsCellConfig): IDclConfig {\n return {\n type: IssuesViewDetailsCellComponent,\n config: config,\n };\n }\n\n public static pendingCell(config: ICellConfig): IDclConfig {\n return {\n type: PendingCellComponent,\n config,\n };\n }\n\n public static attachmentsCell(config: IAttachmentCellConfig): IDclConfig {\n return {\n type: AttachmentsCellComponent,\n config,\n };\n }\n\n public static thumbnailCell(config: IThumbnailCellConfig): IDclConfig {\n return {\n type: ThumbnailCellComponent,\n config,\n };\n }\n\n public static orderedListCell(config: IOrderedListCellConfig): IDclConfig {\n return {\n type: OrderedListCellComponent,\n config,\n };\n }\n\n public static linksOrderedListCell(config: ILinksOrderedListCellConfig): IDclConfig {\n return {\n type: LinksOrderedListCellComponent,\n config,\n };\n }\n\n public static userAccountStatusCell(config: IUserCellConfig): IDclConfig {\n return {\n type: UserAccountStatusCellComponent,\n config,\n };\n }\n\n public static userAvatarCell(config: IUserAvatarCellConfig): IDclConfig {\n return {\n type: UserAvatarCellComponent,\n config,\n };\n }\n\n public static templateCell(config: ITemplateCellConfig): IDclConfig {\n return {\n type: TemplateCellComponent,\n config: config,\n };\n }\n\n public static imageCell(config: IImageCellConfig): IDclConfig {\n return {\n type: ImageCellComponent,\n config: config,\n };\n }\n\n public static secureImageCell(config: IImageCellConfig): IDclConfig {\n return {\n type: SecureImageCellComponent,\n config: config,\n };\n }\n\n public static documentFilesCell(config: IDocumentFilesCellConfig): IDclConfig {\n return {\n type: DocumentFilesCellComponent,\n config: config,\n };\n }\n\n public static textWithIconCell(config: ITextWithIconCellConfig): IDclConfig {\n return {\n type: TextWithIconCellComponent,\n config: config,\n };\n }\n\n public static emptyCell(): IDclConfig {\n return {\n type: EmptyCellComponent,\n config: null,\n };\n }\n\n public static selectCell(config: ISelectCellConfig): IDclConfig {\n return {\n type: SelectCellComponent,\n config,\n };\n }\n\n public static typeAheadCell(config: ITypeAheadCellConfig): IDclConfig {\n return {\n type: TypeAheadCellComponent,\n config,\n };\n }\n\n public static dataPointCell(config: IDataPointCellConfig): IDclConfig {\n return {\n type: DataPointCellComponent,\n config,\n };\n }\n\n static ruleStatusToggleCell(config: IRuleStatusToggleConfig): IDclConfig {\n return {\n type: RuleStatusToggleCellComponent,\n config: config,\n };\n }\n}\n","
\n \n \n \n
\n","import { difference } from 'lodash';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DsInputStates } from '@levelaccess/design-system';\n\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-testing-tool-filter',\n templateUrl: './testing-tool-filter.component.html',\n})\nexport class TestingToolFilterComponent {\n @Input() public set currentSelection(selection: AccessibilityAuditToolNames) {\n if (SharedCommonUtility.notNullish(selection)) {\n this.currentValue = selection;\n }\n }\n @Input() public toolsToExclude: AccessibilityAuditToolNames[];\n @Output() public onToolSelected: EventEmitter;\n\n public DsInputStates: typeof DsInputStates;\n public auditToolNames: typeof AccessibilityAuditToolNames;\n public currentValue: AccessibilityAuditToolNames;\n\n constructor() {\n this.DsInputStates = DsInputStates;\n this.auditToolNames = AccessibilityAuditToolNames;\n this.onToolSelected = new EventEmitter();\n this.currentValue = AccessibilityAuditToolNames.ibm;\n }\n\n public get toolsToList(): AccessibilityAuditToolNames[] {\n const auditToolNamesKeys: AccessibilityAuditToolNames[] = Object.values(this.auditToolNames);\n let filteredAuditTools: AccessibilityAuditToolNames[] = auditToolNamesKeys;\n if (SharedCommonUtility.notNullishOrEmpty(this.toolsToExclude)) {\n filteredAuditTools = difference(auditToolNamesKeys, this.toolsToExclude);\n }\n\n return filteredAuditTools;\n }\n\n public onToolSelect(toolName: AccessibilityAuditToolNames): void {\n this.onToolSelected.emit(toolName);\n this.currentValue = toolName;\n }\n}\n","\n
\n \n \n \n {{ status | translate }}\n
\n
\n\n\n \n\n\n
\n \n \n \n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'app-toggle-switch',\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleSwitchComponent {\n public label: string;\n @Input() public id: string;\n @Input() public name: string;\n @Input() public disabled: boolean;\n @Input() public nonClickableLabel: boolean;\n\n @Input() public value: boolean;\n @Output() public valueChange: EventEmitter = new EventEmitter();\n\n @Input() public switchButtonContainerTemplate: TemplateRef;\n @Input() public switchContainerClass: string;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.switchContainerClass = 'd-flex align-items-center';\n }\n\n public onValueChanged(): void {\n this.value = !this.value;\n this.valueChange.emit(this.value);\n this.changeDetectorRef.detectChanges();\n }\n\n public get status(): string {\n return this.value === true ? 'label_on' : 'label_off';\n }\n}\n","
\n \n \n \n \n
\n
\n {{ 'no_results_found' | translate }}\n
\n \n\n","import {\n Component,\n OnDestroy,\n AfterViewInit,\n AfterViewChecked,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ContentChild,\n ViewChild,\n TemplateRef,\n HostListener,\n} from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\nimport * as KeyCode from 'keycode-js';\n\nimport { CommonUtility } from '../../utility/common.utility';\n\n@Component({\n selector: 'app-typeahead',\n templateUrl: './typeahead.component.html',\n styleUrls: ['./typeahead.component.scss'],\n})\nexport class TypeaheadComponent implements OnDestroy, AfterViewInit, AfterViewChecked {\n private debounceSubscription: Subscription;\n private lastSearchQuery: string;\n\n public searchQuery: string;\n public isInputFocused: boolean;\n public hoverItemIndex: number;\n\n @Input() public id: string;\n @Input() public data: any[];\n @Input() public isAutofocused: boolean;\n\n @Output() public onSearch: EventEmitter;\n @Output() public onSelect: EventEmitter;\n @Output() public onCancel: EventEmitter;\n\n @ContentChild('typeaheadResultRow') public resultRowTpl: TemplateRef;\n\n @ViewChild('searchInput') public searchInputRef: ElementRef;\n @ViewChild('resultsList') public resultsListRef: ElementRef;\n\n constructor() {\n this.isInputFocused = false;\n\n this.onSearch = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onCancel = new EventEmitter();\n }\n\n @HostListener('document:click', ['$event'])\n public onKeyUp(event: MouseEvent): void {\n if (this.searchInputRef.nativeElement !== document.activeElement) {\n this.isInputFocused = false;\n this.hoverItemIndex = undefined;\n }\n }\n\n public onSearchInputFocused(): void {\n this.isInputFocused = true;\n }\n\n public onSearchInputKeyDown(event: KeyboardEvent): void {\n if (\n (event.keyCode === KeyCode.KEY_RETURN || event.keyCode === KeyCode.KEY_FIREFOX_ENTER) &&\n typeof this.hoverItemIndex !== 'undefined'\n ) {\n event.preventDefault();\n this.onResultsSelected(this.data[this.hoverItemIndex]);\n } else if (event.keyCode === KeyCode.KEY_ESCAPE) {\n if (\n typeof this.searchQuery === 'undefined' ||\n this.searchQuery.length === 0 ||\n (this.isInputFocused === false && typeof this.hoverItemIndex === 'undefined')\n ) {\n this.onCancel.emit();\n }\n this.isInputFocused = false;\n this.hoverItemIndex = undefined;\n } else if (event.keyCode === KeyCode.KEY_UP || event.keyCode === KeyCode.KEY_DOWN) {\n event.preventDefault();\n } else {\n this.isInputFocused = true;\n }\n }\n\n public onSearchInputKeyUp(event: KeyboardEvent): void {\n if (event.keyCode === KeyCode.KEY_UP || event.keyCode === KeyCode.KEY_DOWN) {\n if (event.keyCode === KeyCode.KEY_UP) {\n if (typeof this.hoverItemIndex === 'undefined') {\n this.hoverItemIndex = 0;\n }\n if (this.hoverItemIndex === 0) {\n this.hoverItemIndex = this.data.length - 1;\n } else {\n this.hoverItemIndex -= 1;\n }\n } else if (event.keyCode === KeyCode.KEY_DOWN) {\n if (typeof this.hoverItemIndex === 'undefined') {\n this.hoverItemIndex = this.data.length - 1;\n }\n if (this.hoverItemIndex === this.data.length - 1) {\n this.hoverItemIndex = 0;\n } else {\n this.hoverItemIndex += 1;\n }\n }\n\n if (typeof this.resultsListRef !== 'undefined') {\n const hoveredElement: HTMLDivElement = this.resultsListRef.nativeElement.children[this.hoverItemIndex];\n if (hoveredElement) {\n this.resultsListRef.nativeElement.scrollTop = hoveredElement.offsetTop;\n }\n }\n }\n }\n\n public onResultsSelected(value: any): void {\n this.onSelect.emit(value);\n this.isInputFocused = false;\n }\n\n public onResultsMouseEnter(index: number): void {\n this.hoverItemIndex = index;\n }\n\n public onResultsMouseLeave(index: number): void {\n this.hoverItemIndex = undefined;\n }\n\n public ngOnDestroy(): void {\n if (typeof this.debounceSubscription !== 'undefined') {\n this.debounceSubscription.unsubscribe();\n }\n }\n\n public ngAfterViewInit(): void {\n if (this.isAutofocused) {\n CommonUtility.setFocusToElement(this.id);\n }\n }\n\n public ngAfterViewChecked(): void {\n if (typeof this.debounceSubscription !== 'undefined') {\n return;\n }\n\n const onSearch: (text: KeyboardEvent) => void = (text: KeyboardEvent): void => {\n const value: string = this.searchInputRef.nativeElement.value;\n if (this.lastSearchQuery === value) {\n return;\n }\n this.lastSearchQuery = value;\n this.hoverItemIndex = undefined;\n this.onSearch.emit(value);\n };\n\n this.debounceSubscription = fromEvent(this.searchInputRef.nativeElement, 'keyup')\n .pipe(filter(Boolean), debounceTime(300), distinctUntilChanged(), tap(onSearch))\n .subscribe();\n }\n}\n","
\n
\n \n
\n
\n
\n \n {{ 'configured' | translate }}\n
\n \n {{ 'remove' | translate }}\n \n
\n \n
\n \n {{ 'mfa_turn_on_mfa' | translate }}\n \n
\n
\n
\n","import { Component, Input, OnDestroy, EventEmitter, Output, ComponentRef } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { map, filter, take } from 'rxjs/operators';\nimport { DsButtonVariants, Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { IMfaStatusResponse } from '../../../../shared/interfaces/user.interface';\nimport { $mfaStatus } from '../../../../shared/constants/user';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { CommonConfirmationComponent } from '../common-confirmation-modal/common-confirmation.component';\nimport { CommonConfirmationModalOptions } from '../../interfaces/modal-dialog.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { EapColors } from '../../shared/eap-colors';\n\n@Component({\n selector: 'app-user-mfa',\n styleUrls: ['./user-mfa.component.scss'],\n templateUrl: './user-mfa.component.html',\n})\nexport class UserMfaComponent implements OnDestroy {\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n public readonly IconStyles: typeof IconStyles = IconStyles;\n public readonly EapColors: typeof EapColors = EapColors;\n public $mfaStatus: typeof $mfaStatus;\n\n private subscriptions: Subscription;\n\n @Input()\n public mfaStatusResponse$: Observable;\n\n @Input()\n public disableMfaConfirmationMessage: string = 'mfa_disable_confirmation_message';\n\n @Output()\n public enableMfa: EventEmitter;\n\n @Output()\n public disableMfa: EventEmitter;\n\n constructor(private modalService: ModalService) {\n this.subscriptions = new Subscription();\n\n this.$mfaStatus = $mfaStatus;\n this.enableMfa = new EventEmitter();\n this.disableMfa = new EventEmitter();\n }\n\n private closeDisableMfaModal(isConfirmedFn: () => boolean): void {\n if (!isConfirmedFn()) {\n return;\n }\n\n this.disableMfa.emit();\n }\n\n public get mfaIsConfigurable$(): Observable {\n return this.mfaStatusResponse$.pipe(\n filter((response: IMfaStatusResponse): boolean => SharedCommonUtility.notNullish(response)),\n map((response: IMfaStatusResponse): boolean => response.isConfigurable),\n );\n }\n\n public get mfaStatus$(): Observable<$mfaStatus> {\n return this.mfaStatusResponse$.pipe(\n filter((response: IMfaStatusResponse): boolean => SharedCommonUtility.notNullish(response)),\n map((response: IMfaStatusResponse): $mfaStatus => response.isConfigurable && response.status),\n );\n }\n\n public get canEnableMfa(): boolean {\n return this.enableMfa.observers.length > 0;\n }\n\n public openDisableMfaModal(): void {\n const modalComponent: ComponentRef = this.modalService.open(CommonConfirmationComponent);\n const modalOptions: CommonConfirmationModalOptions = {\n messages: [],\n description: this.disableMfaConfirmationMessage,\n header: 'mfa_disable_confirmation_title',\n labelAction: 'label_ok',\n labelClose: 'label_cancel',\n };\n modalComponent.instance.onCreate(modalOptions);\n\n const isConfirmedFn = (): boolean => modalComponent.instance.confirmed;\n this.subscriptions.add(\n modalComponent.instance.container.onClose$.pipe(take(1)).subscribe(this.closeDisableMfaModal.bind(this, isConfirmedFn)),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { map as mapRx, tap } from 'rxjs/operators';\nimport { FormBuilder } from '@angular/forms';\nimport { Observable, combineLatest, BehaviorSubject, Subscription } from 'rxjs';\nimport { map } from 'lodash';\n\nimport { SecurityGroupService } from '../../../../services/security-group.service';\nimport { SecurityEntityLevel, $securityGroup } from '../../../../../../shared/constants/security-group';\nimport { ITableColumn, ITableRow, SelectAllEvent } from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport {\n ISecurityGroupWithEntityNames,\n ISecurityGroupsResponse,\n} from '../../../../../../shared/interfaces/security-group.interface';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { PermissionsTableComponent } from '../permissions-table.component';\nimport { AngularUtility } from '../../../../utility/angular.utility';\n\nenum GroupsTableColumns {\n checkbox = 'checkbox',\n group = 'group',\n}\n\n@Component({\n selector: 'app-admin-portal-permissions-table',\n templateUrl: './admin-portal-permissions-table.component.html',\n styleUrls: ['./admin-portal-permissions-table.component.scss'],\n})\nexport class AdminPortalPermissionsTableComponent extends PermissionsTableComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription = new Subscription();\n\n protected allGroups: ISecurityGroupWithEntityNames[] = [];\n protected allSelected$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(\n formBuilder: FormBuilder,\n private translateService: TranslateService,\n private securityGroupService: SecurityGroupService,\n ) {\n super(formBuilder);\n this.buildTableConfig();\n }\n\n private buildTableConfig(): void {\n const columns: Record = {\n [GroupsTableColumns.checkbox]: {\n translationKey: 'select_all_the_groups',\n selectAllEnabled: true,\n hideLabel: true,\n styles: {\n maxWidth: '3rem',\n width: '2.8rem',\n paddingRight: '0',\n paddingLeft: '0.95rem',\n },\n },\n [GroupsTableColumns.group]: {\n translationKey: 'label_security_group_name',\n },\n };\n\n this.tableConfig = {\n columns,\n caption: this.translateService.instant('security_groups_table'),\n emptyState: {\n title: this.translateService.instant('label_no_security_groups'),\n },\n };\n }\n\n private updateAllCheckedIfNecessary(): void {\n const selectedGroups: Set = new Set(this.formGroupIds.value);\n const allSelected: boolean = this.allGroups.every((group: ISecurityGroupWithEntityNames): boolean =>\n selectedGroups.has(group[$securityGroup._id]),\n );\n\n this.allSelected$.next(allSelected);\n }\n\n protected buildObservables(): void {\n super.buildObservables();\n\n const securityGroupsResponse$: Observable> = this.securityGroupService\n .groupsWithEntityNames({\n skip: 0,\n limit: 9999,\n includeStaffGroups: false,\n skipOrganizationAdmin: true,\n entityLevel: SecurityEntityLevel.admin,\n })\n .pipe(\n tap((securityGroupsResponse: ISecurityGroupsResponse): void => {\n this.allGroups = securityGroupsResponse.groups;\n this.onPermissionsLoaded.emit(securityGroupsResponse.groups);\n }),\n AngularUtility.shareRef(),\n );\n\n this.total$ = securityGroupsResponse$.pipe(\n mapRx(\n (securityGroupsResponse: ISecurityGroupsResponse): number => securityGroupsResponse._total,\n ),\n );\n\n this.tableData$ = combineLatest([securityGroupsResponse$, this.page$]).pipe(\n mapRx(([securityGroupsResponse, page]: [ISecurityGroupsResponse, number]): ITableRow[] => {\n const groups: ISecurityGroupWithEntityNames[] = securityGroupsResponse.groups.slice(\n (page - 1) * this.pageSize,\n page * this.pageSize,\n );\n\n return groups.map((group: ISecurityGroupWithEntityNames): ITableRow => {\n const groupId: string = group[$securityGroup._id];\n return {\n originalData: group,\n data: {\n [GroupsTableColumns.checkbox]: NgbTableUtilities.checkboxCell({\n checked: () => this.formGroupIds.value.includes(groupId),\n attributes: {\n 'aria-label': this.translateService.instant('select_label', group[$securityGroup.name]),\n },\n styles: {\n marginTop: '5px',\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (($event.target as HTMLInputElement).checked) {\n this.updateFormGroupIds([...this.formGroupIds.value, groupId]);\n } else {\n this.updateFormGroupIds(this.formGroupIds.value.filter((id: string): boolean => groupId !== id));\n }\n\n this.updateAllCheckedIfNecessary();\n },\n },\n }),\n [GroupsTableColumns.group]: NgbTableUtilities.htmlCell({\n text: group[$securityGroup.name],\n }),\n },\n };\n });\n }),\n );\n }\n\n protected onSelectAll(event: SelectAllEvent): void {\n this.allSelected$.next(event.selected);\n\n if (event.selected) {\n this.updateFormGroupIds(map(this.allGroups, $securityGroup._id));\n } else {\n this.updateFormGroupIds([]);\n }\n }\n\n public ngOnInit(): void {\n this.buildObservables();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n\n\n\n\n","

{{ 'website_apps' | translate }}

\n\n
\n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n\n\n\n\n\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map as mapRx, startWith, tap } from 'rxjs/operators';\nimport { chain, orderBy } from 'lodash';\n\nimport { PermissionsTableComponent } from '../permissions-table.component';\nimport { ITableColumn, ITableRow, SortEvent } from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport {\n ISecurityGroup,\n ISecurityGroupsResponse,\n ISecurityGroupWithEntityNames,\n} from '../../../../../../shared/interfaces/security-group.interface';\nimport {\n $securityEntity,\n $securityGroup,\n SecurityEntityLevel,\n SecurityGroupOrigin,\n SecurityGroupTemplateNames,\n} from '../../../../../../shared/constants/security-group';\nimport { SecurityGroupService } from '../../../../services/security-group.service';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { $sortingOrder } from '../../../../../../shared/constants/sort';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { AngularUtility } from '../../../../utility/angular.utility';\nimport { SharedTextUtility } from '../../../../../../shared/utils/text.utility';\n\ninterface IWorkspaceOption {\n workspaceId: string;\n workspaceName: string;\n}\n\ninterface ISearchAndFilterForm {\n [SearchAndFilterFormFields.workspaceFilter]: FormControl;\n [SearchAndFilterFormFields.digitalPropertySearch]: FormControl;\n}\n\nexport enum TableColumns {\n websiteApp = 'website-app',\n workspace = 'workspace',\n isDigitalPropertyUser = 'is-digital-property-user',\n}\n\nexport enum SearchAndFilterFormFields {\n workspaceFilter = 'workspace-filter',\n digitalPropertySearch = 'digital-property-search',\n}\n\n@Component({\n selector: 'app-digital-property-permissions-table',\n templateUrl: './digital-property-permissions-table.component.html',\n styleUrls: ['./digital-property-permissions-table.component.scss'],\n})\nexport class DigitalPropertyPermissionsTableComponent extends PermissionsTableComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n public searchAndFilterForm: FormGroup;\n public workspaceFilterOptions: IWorkspaceOption[];\n\n public SearchAndFilterFormFields: typeof SearchAndFilterFormFields = SearchAndFilterFormFields;\n\n constructor(\n formBuilder: FormBuilder,\n private translateService: TranslateService,\n private securityGroupService: SecurityGroupService,\n ) {\n super(formBuilder);\n\n this.subscriptions = new Subscription();\n\n this.searchAndFilterForm = new FormGroup({\n [SearchAndFilterFormFields.workspaceFilter]: new FormControl(''),\n [SearchAndFilterFormFields.digitalPropertySearch]: new FormControl(''),\n });\n\n this.workspaceFilterOptions = [];\n\n const columns: Record = {\n [TableColumns.websiteApp]: {\n translationKey: 'website_app',\n sortingEnabled: true,\n styles: {\n width: '15rem',\n },\n },\n [TableColumns.workspace]: {\n translationKey: 'workspace',\n sortingEnabled: true,\n styles: {\n width: '18rem',\n },\n },\n [TableColumns.isDigitalPropertyUser]: {\n translationKey: 'website_app_user',\n },\n };\n\n this.tableConfig = {\n columns,\n caption: this.translateService.instant('table_caption_digital_properties_permissions'),\n };\n\n this.sortOption$.next({\n column: TableColumns.workspace,\n direction: $sortingOrder.asc,\n });\n }\n\n protected get workspaceFilter(): FormControl {\n return this.searchAndFilterForm.get(SearchAndFilterFormFields.workspaceFilter) as FormControl;\n }\n\n protected get websiteAppSearch(): FormControl {\n return this.searchAndFilterForm.get(SearchAndFilterFormFields.digitalPropertySearch) as FormControl;\n }\n\n protected buildObservables(): void {\n super.buildObservables();\n\n const filterDigitalPropertyUserGroups = (group: ISecurityGroup): boolean =>\n group[$securityGroup.name] === SecurityGroupTemplateNames.website_app_user;\n\n const digitalPropertyGroups$: Observable = this.securityGroupService\n .groupsWithEntityNames({\n skip: 0,\n limit: 9999,\n includeStaffGroups: false,\n entityLevel: SecurityEntityLevel.digitalProperty,\n origin: SecurityGroupOrigin.predefined,\n skipOrganizationAdmin: true,\n })\n .pipe(\n mapRx(({ groups }: ISecurityGroupsResponse): ISecurityGroupWithEntityNames[] =>\n groups.filter(filterDigitalPropertyUserGroups),\n ),\n tap((groups: ISecurityGroupWithEntityNames[]): void => this.onPermissionsLoaded.emit(groups)),\n AngularUtility.shareRef(),\n );\n\n const workspaceFilterOptions$: Observable = digitalPropertyGroups$.pipe(\n mapRx((groups: ISecurityGroupWithEntityNames[]): IWorkspaceOption[] =>\n chain(groups)\n .map(\n (group: ISecurityGroupWithEntityNames): IWorkspaceOption => ({\n workspaceId: group[$securityGroup.entities][0][$securityEntity.workspaceId],\n workspaceName: group.workspaceNames.join(),\n }),\n )\n .uniqBy((workspaceOption: IWorkspaceOption): string => workspaceOption.workspaceId)\n .value(),\n ),\n );\n\n this.subscriptions.add(\n workspaceFilterOptions$.subscribe((options: IWorkspaceOption[]): void => {\n this.workspaceFilterOptions = options;\n }),\n );\n\n const workspaceFilter$: Observable = this.workspaceFilter.valueChanges.pipe(\n startWith(this.workspaceFilter.value),\n distinctUntilChanged(),\n tap(() => this.page$.next(1)),\n );\n\n const filteredGroups$: Observable = combineLatest([\n digitalPropertyGroups$,\n workspaceFilter$,\n ]).pipe(\n mapRx(([groups, workspaceId]: [ISecurityGroupWithEntityNames[], string]): ISecurityGroupWithEntityNames[] => {\n if (SharedCommonUtility.isNullishOrEmpty(workspaceId)) {\n return groups;\n }\n\n return groups.filter(\n (group: ISecurityGroupWithEntityNames): boolean =>\n group[$securityGroup.entities][0][$securityEntity.workspaceId] === workspaceId,\n );\n }),\n );\n\n const websiteAppSearch$: Observable = this.websiteAppSearch.valueChanges.pipe(\n startWith(this.websiteAppSearch.value),\n distinctUntilChanged(),\n tap(() => this.page$.next(1)),\n );\n\n const searchedGroups$: Observable = combineLatest([filteredGroups$, websiteAppSearch$]).pipe(\n mapRx(([groups, websiteAppName]: [ISecurityGroupWithEntityNames[], string]): ISecurityGroupWithEntityNames[] => {\n if (SharedCommonUtility.isNullishOrEmpty(websiteAppName?.trim())) {\n return groups;\n }\n\n return groups.filter((group: ISecurityGroupWithEntityNames): boolean =>\n group.digitalPropertyNames.join().toLowerCase().includes(websiteAppName.trim().toLowerCase()),\n );\n }),\n AngularUtility.shareRef(),\n );\n\n this.total$ = searchedGroups$.pipe(\n tap((groups: ISecurityGroupWithEntityNames[]): void => {\n if (groups.length !== 0) {\n return;\n }\n\n if (SharedCommonUtility.notNullishOrEmpty(this.workspaceFilter.value)) {\n const selectedWorkspaceFilter: IWorkspaceOption = this.workspaceFilterOptions.find(\n (option: IWorkspaceOption): boolean => option.workspaceId === this.workspaceFilter.value,\n );\n this.tableConfig.emptyState = {\n iconId: 'magnifying-glass-2',\n titleHtml: this.translateService.instantHtml('there_are_no_websites_apps_in_workspace', [\n SharedTextUtility.escape(selectedWorkspaceFilter.workspaceName),\n ]),\n subtitle: this.translateService.instant('adjust_filter_or_try_different_name'),\n };\n } else {\n this.tableConfig.emptyState = {\n iconId: 'magnifying-glass-2',\n title: this.translateService.instant('there_are_no_websites_apps_with_that_name'),\n subtitle: this.translateService.instant('try_searching_different_name'),\n };\n }\n }),\n mapRx((groups: ISecurityGroupWithEntityNames[]): number => groups.length),\n );\n\n const orderedGroups$: Observable = combineLatest([searchedGroups$, this.sortOption$]).pipe(\n mapRx(([groups, sortOption]: [ISecurityGroupWithEntityNames[], SortEvent]): ISecurityGroupWithEntityNames[] =>\n this.sortGroups(groups, sortOption),\n ),\n );\n\n const paginatedGroups$: Observable = combineLatest([orderedGroups$, this.page$]).pipe(\n mapRx(([groups, page]: [ISecurityGroupWithEntityNames[], number]): ISecurityGroupWithEntityNames[] => {\n return groups.slice((page - 1) * this.pageSize, page * this.pageSize);\n }),\n );\n\n const userGroupIds$: Observable = this.formGroupIds.valueChanges.pipe(startWith([...this.formGroupIds.value]));\n\n this.tableData$ = combineLatest([paginatedGroups$, userGroupIds$]).pipe(\n mapRx(([groups, userGroupIds]: [ISecurityGroupWithEntityNames[], string[]]): ITableRow[] =>\n groups.map((group: ISecurityGroupWithEntityNames): ITableRow => {\n const websiteApp: string = group.digitalPropertyNames.join();\n\n return {\n data: {\n [TableColumns.websiteApp]: NgbTableUtilities.textCell({ text: websiteApp }),\n [TableColumns.workspace]: NgbTableUtilities.textCell({ text: group.workspaceNames.join() }),\n [TableColumns.isDigitalPropertyUser]: NgbTableUtilities.checkboxCell({\n checked: userGroupIds.includes(group[$securityGroup._id]),\n styles: {\n marginTop: '5px',\n },\n attributes: {\n 'aria-label': this.translateService.instant('adds_user_to_digital_property_user_group', websiteApp),\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (($event.target as HTMLInputElement).checked) {\n this.updateFormGroupIds([...this.formGroupIds.value, group[$securityGroup._id]]);\n } else {\n const filterUncheckedGroupIds = (groupId: string): boolean => groupId !== group[$securityGroup._id];\n this.updateFormGroupIds(this.formGroupIds.value.filter(filterUncheckedGroupIds));\n }\n },\n },\n }),\n },\n };\n }),\n ),\n );\n }\n\n private sortGroups(groups: ISecurityGroupWithEntityNames[], sortOption: SortEvent): ISecurityGroupWithEntityNames[] {\n if (SharedCommonUtility.isNullish(sortOption) || sortOption.direction === $sortingOrder.all) {\n return groups;\n }\n\n switch (sortOption.column) {\n case TableColumns.websiteApp:\n return orderBy(\n groups,\n (group: ISecurityGroupWithEntityNames) => group.digitalPropertyNames.join().toLowerCase(),\n sortOption.direction,\n );\n case TableColumns.workspace:\n return orderBy(\n groups,\n (group: ISecurityGroupWithEntityNames) => group.workspaceNames.join().toLowerCase(),\n sortOption.direction,\n );\n // no default\n }\n\n return groups;\n }\n\n public onWorkspaceFilterEnter(event: KeyboardEvent): void {\n event.preventDefault();\n }\n\n public ngOnInit(): void {\n this.buildObservables();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n
\n","import { Component, Input, Output, EventEmitter, OnInit, ElementRef } from '@angular/core';\nimport { Icons, DsButtonVariants, IconStyles } from '@levelaccess/design-system';\nimport { EapColors } from '../../../../shared/eap-colors';\n\nexport enum BannerType {\n info = 'info',\n error = 'error',\n check = 'check',\n}\n\n/**\n * TODO DS-186: get rid of this component once alternative is added to the\n * design system components\n */\n@Component({\n selector: 'app-edit-permissions-banner',\n templateUrl: './edit-permissions-banner.component.html',\n styleUrls: ['./edit-permissions-banner.component.scss'],\n})\nexport class EditPermissionsBannerComponent implements OnInit {\n public Icons: typeof Icons = Icons;\n public EapColors: typeof EapColors = EapColors;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public IconStyles: typeof IconStyles = IconStyles;\n public BannerType: typeof BannerType = BannerType;\n\n @Input() public scrollInto: boolean = false;\n @Input() public bannerType: BannerType = BannerType.info;\n @Output() public onClose: EventEmitter = new EventEmitter();\n\n constructor(private elementRef: ElementRef) {}\n\n public ngOnInit(): void {\n if (this.scrollInto) {\n this.elementRef.nativeElement.scrollIntoView({\n behavior: 'smooth',\n });\n }\n }\n}\n","\n \n \n \n \n
\n \n\n \n\n \n \n\n \n \n\n \n \n\n \n \n
\n
\n\n\n \n \n \n \n\n\n\n \n {{ 'label_workspace_admin_info' | translate }}\n \n {{ 'learn_more' | translate }}\n \n \n\n\n\n \n {{ 'label_select_group_in_tenant' | translate }}\n \n\n\n\n
\n
\n
\n {{ 'required_fields_label' | translate }}\n
\n
\n \n \n \n
\n\n
\n 0\"\n [required]=\"true\"\n >\n \n \n
\n\n
\n
\n
\n \n {{ 'label_organization_administrator_checkbox' | translate }}\n \n {{ 'label_organization_administrator_checkbox_description' | 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 0\"\n [required]=\"true\"\n \n >\n \n \n
\n\n \n \n\n
\n \n \n {{ 'manage_users_cancel_label' | translate }}\n \n
\n \n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, startWith, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { isEqual } from 'lodash';\n\nimport { DsButtonVariants, DsInputStates, Icons, IconStyles } from '@levelaccess/design-system';\nimport { $user } from '../../../../../shared/constants/user';\nimport {\n $securityGroup,\n $securityGroups,\n SecurityEntityLevel,\n SecurityGroupOrigin,\n} from '../../../../../shared/constants/security-group';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { ErrorMessageService } from '../../../services/error-message.service';\nimport { UserService } from '../../../services/user.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { IUserAvatar } from '../../../interfaces/user.interface';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport { IMfaStatusResponse, IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { avatarFile } from '../../../../../shared/constants/multer';\nimport { LoadErrorHandler } from '../../../services/load-error-handler';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { NotificationPosition } from '../../../models/notification.model';\nimport { NotificationService } from '../../../services/notification.service';\nimport { SecurityGroupService, SecurityGroupsParams } from '../../../services/security-group.service';\nimport {\n ISecurityGroup,\n ISecurityGroupsResponse,\n ISecurityGroupWithEntityNames,\n} from '../../../../../shared/interfaces/security-group.interface';\nimport { ITableColumn, ITableConfig, ITableRow, SelectAllEvent } from '../../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../../table/ngb-table/utilities/ngb-table.utilities';\nimport { DEFAULT_ENTRY_LIMITS } from '../../../constants/form.constants';\nimport { SecurityUserService } from '../../../services/security-user.service';\nimport { ModalService } from '../../../services/modal.service';\nimport { IRequiredSecurity } from '../../../../../shared/interfaces/security.interface';\nimport { RequiredSecurities } from '../../../../../shared/constants/required-securities';\nimport { CommonConfirmationComponent } from '../../common-confirmation-modal/common-confirmation.component';\nimport { AngularUtility } from '../../../utility/angular.utility';\nimport { EapColors } from '../../../shared/eap-colors';\nimport { BannerType } from './edit-permissions-banner/edit-permissions-banner.component';\nimport { IUserRole } from '../../../../../shared/interfaces/user-role.interface';\nimport { UserRoleService } from '../../../services/user-role.service';\nimport { FormService } from '../../../services/form.service';\nimport { MimeTypeToFileExtension } from '../../../../../shared/constants/mime-type';\n\nexport enum UserSecurityGroupSelection {\n groupSelection = 'groupSelection',\n}\n\nenum GroupsTableColumns {\n checkbox = 'checkbox',\n workspace = 'workspace',\n digital_property = 'digital_property',\n group = 'group',\n}\n\nconst ORGANIZATION_ADMINISTRATOR: Readonly = 'Organization administrator';\n\nconst isOrgAdmin = (securityGroups: ISecurityGroup[]): boolean => {\n return securityGroups.some((group: ISecurityGroup) => {\n return (\n group[$securityGroup.origin] === SecurityGroupOrigin.predefined && group[$securityGroup.name] === ORGANIZATION_ADMINISTRATOR\n );\n });\n};\n\n@Component({\n selector: 'app-edit-user',\n templateUrl: './edit-user.component.html',\n styleUrls: ['./edit-user.component.scss'],\n})\nexport class EditUserComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private formValidationRequest: Subject;\n private user: IUserServerResponse;\n\n @ViewChild('workspaceAdminInfo', { read: TemplateRef })\n private workspaceAdminInfoRef: TemplateRef;\n\n @ViewChild('noGroupsSelectedError', { read: TemplateRef })\n private noGroupsSelectedErrorRef: TemplateRef;\n\n @Input() public userId: string;\n @Input() public titleId: string;\n\n public $user: typeof $user;\n public formValidationRequest$: Observable;\n public mfaStatusResponse$: BehaviorSubject;\n\n public form: UntypedFormGroup;\n public permissionsForm: UntypedFormGroup;\n public tableData: ITableRow[] = [];\n public pageNumber: number = 1;\n public pageSize: number = DEFAULT_ENTRY_LIMITS[1];\n public readonly DEFAULT_ENTRY_LIMITS: readonly number[] = DEFAULT_ENTRY_LIMITS;\n public DsInputStates: typeof DsInputStates = DsInputStates;\n public totalRows$: Observable;\n\n public availableSecurityGroups$: Observable;\n public securityGroupsResponse$: Observable;\n public orgAdminRequiredSecurity: IRequiredSecurity = RequiredSecurities.UM_Organization_Administration_Create;\n public userSelectedSecurityGroupsIds: Set;\n public selectedSecurityGroupsFromServer: ISecurityGroupsResponse;\n public organizationAdminCheckbox$: Observable;\n public selectionChanged$: BehaviorSubject;\n public tableData$: Observable;\n public selectableGroups: ISecurityGroup[];\n public selectablePermissionGroups: ISecurityGroup[];\n public allPageSelected$: Observable;\n public showOrgAdminCheckbox$: Observable;\n public userRoles$: Observable;\n public displayNameError$: Observable;\n public roleError: string;\n\n public page$: BehaviorSubject;\n public pageSize$: BehaviorSubject;\n public pageSizes: readonly number[];\n\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public Icons: typeof Icons = Icons;\n public EapColors: typeof EapColors = EapColors;\n public IconStyles: typeof IconStyles = IconStyles;\n public BannerType: typeof BannerType = BannerType;\n public permissionsBannerRef: TemplateRef = null;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private formService: FormService,\n private element: ElementRef,\n private userService: UserService,\n private translateService: TranslateService,\n private errorMessageService: ErrorMessageService,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n private changeDetector: ChangeDetectorRef,\n private appConfigService: AppConfigService,\n private loadErrorHandler: LoadErrorHandler,\n private notificationService: NotificationService,\n private securityGroupService: SecurityGroupService,\n private securityUserService: SecurityUserService,\n private modalService: ModalService,\n private activatedRoute: ActivatedRoute,\n private userRoleService: UserRoleService,\n ) {\n this.subscriptions = new Subscription();\n this.$user = $user;\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n this.mfaStatusResponse$ = new BehaviorSubject(undefined);\n this.userSelectedSecurityGroupsIds = new Set();\n\n this.page$ = new BehaviorSubject(1);\n this.pageSize$ = new BehaviorSubject(DEFAULT_ENTRY_LIMITS[1]);\n this.selectableGroups = [];\n this.selectablePermissionGroups = [];\n this.selectionChanged$ = new BehaviorSubject(undefined);\n\n this.permissionsForm = this.formBuilder.group({\n [$user.groupIds]: new UntypedFormArray([]),\n });\n }\n\n public createForm(): UntypedFormGroup {\n const formConfig: Record = {\n [$user.email]: new UntypedFormControl('', {\n validators: [CustomValidators.required, CustomValidators.validateIsEmpty, CustomValidators.validateEmail],\n updateOn: 'change',\n }),\n [$user.displayName]: new UntypedFormControl('', {\n validators: [CustomValidators.required, CustomValidators.validateIsEmpty],\n updateOn: 'change',\n }),\n [$user.firstName]: new UntypedFormControl(''),\n [$user.lastName]: new UntypedFormControl(''),\n [$user.roleId]: new UntypedFormControl('', [CustomValidators.required, CustomValidators.validateIsEmpty]),\n [$user.avatar]: new UntypedFormControl(null),\n [UserSecurityGroupSelection.groupSelection]: new UntypedFormGroup({\n [$user.groupIds]: new UntypedFormArray([]),\n [$user.organizationAdministrator]: new UntypedFormControl(false),\n }),\n };\n\n return this.formBuilder.group(formConfig);\n }\n\n public get groupsFormFields(): { groupIds: UntypedFormArray; organizationAdministrator: UntypedFormControl } {\n const securityGroupsFormFields: AbstractControl | null = this.form?.get(UserSecurityGroupSelection.groupSelection);\n return {\n [$user.groupIds]: securityGroupsFormFields?.get($user.groupIds) as UntypedFormArray,\n [$user.organizationAdministrator]: securityGroupsFormFields?.get($user.organizationAdministrator) as UntypedFormControl,\n };\n }\n\n public get groupsSelectionFormGroup(): UntypedFormGroup {\n return this.form.get(UserSecurityGroupSelection.groupSelection) as UntypedFormGroup;\n }\n\n private resetFormWithDefaults(): void {\n const avatar: IUserAvatar = {\n src: this.userService.getAvatar(this.user),\n alt: this.translateService.instant('edit_profile_user_avatar_alt_text'),\n };\n\n this.form.get($user.avatar).setValue(avatar);\n this.form.get($user.email).setValue(this.user[$user.email]);\n this.form.get($user.displayName).setValue(this.user[$user.displayName]);\n this.form.get($user.firstName).setValue(this.user[$user.firstName]);\n this.form.get($user.lastName).setValue(this.user[$user.lastName]);\n\n if (SharedCommonUtility.notNullish(this.user[$user.roleId])) {\n this.form.get($user.roleId).setValue(this.user[$user.roleId]);\n }\n\n this.form\n .get(UserSecurityGroupSelection.groupSelection)\n .get($user.organizationAdministrator)\n .patchValue(isOrgAdmin(this.selectedSecurityGroupsFromServer.groups));\n // the form value will be set through userSelectedSecurityGroupsIds + selectionChanged$ observable\n this.form.get(UserSecurityGroupSelection.groupSelection).get($user.groupIds).patchValue([]);\n this.userSelectedSecurityGroupsIds = new Set(\n this.selectedSecurityGroupsFromServer.groups.map((group: ISecurityGroup) => group[$securityGroup._id]),\n );\n this.selectionChanged$.next();\n\n this.changeDetector.detectChanges();\n }\n\n private getTableData(securityGroups: ISecurityGroupWithEntityNames[]): ITableRow[] {\n return securityGroups.map((securityGroup: ISecurityGroupWithEntityNames) => {\n const groupId: string = securityGroup[$securityGroup._id];\n return {\n originalData: securityGroup,\n data: {\n [GroupsTableColumns.checkbox]: NgbTableUtilities.checkboxCell({\n checked: this.userSelectedSecurityGroupsIds.has(groupId),\n attributes: {\n 'aria-label': this.translateService.instant('select_label', securityGroup[$securityGroup.name]),\n },\n styles: {\n marginTop: '5px',\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (this.userSelectedSecurityGroupsIds.has(groupId)) {\n this.userSelectedSecurityGroupsIds.delete(groupId);\n } else {\n this.userSelectedSecurityGroupsIds.add(groupId);\n }\n this.selectionChanged$.next();\n },\n },\n }),\n [GroupsTableColumns.workspace]: NgbTableUtilities.htmlCell({\n text: securityGroup.workspaceNames.join(),\n }),\n [GroupsTableColumns.digital_property]: NgbTableUtilities.htmlCell({\n text: securityGroup.digitalPropertyNames.join(),\n }),\n [GroupsTableColumns.group]: NgbTableUtilities.htmlCell({\n text: securityGroup[$securityGroup.name],\n }),\n },\n };\n });\n }\n\n public get tableConfig(): ITableConfig {\n const columns: Record = {\n [GroupsTableColumns.checkbox]: {\n translationKey: 'select_all_the_groups',\n selectAllEnabled: true,\n hideLabel: true,\n styles: {\n maxWidth: '3rem',\n width: '2.8rem',\n paddingRight: '0',\n paddingLeft: '0.95rem',\n },\n },\n [GroupsTableColumns.workspace]: {\n translationKey: 'workspace',\n },\n [GroupsTableColumns.digital_property]: {\n translationKey: 'digital_property',\n },\n [GroupsTableColumns.group]: {\n translationKey: 'label_security_group_name',\n },\n };\n\n return {\n columns,\n caption: this.translateService.instant('security_groups_table'),\n emptyState: {\n title: this.translateService.instant('label_no_security_groups'),\n },\n };\n }\n\n public onSelectAll(event: SelectAllEvent): void {\n this.selectableGroups.forEach((securityGroup: ISecurityGroup) => {\n if (event.selected) {\n this.userSelectedSecurityGroupsIds.add(securityGroup[$securityGroup._id]);\n return;\n }\n this.userSelectedSecurityGroupsIds.delete(securityGroup[$securityGroup._id]);\n });\n this.selectionChanged$.next();\n }\n\n private updateMfaStatus(): void {\n const getMfaStatus = this.userService.getMfaStatusForUser(this.userId);\n\n this.subscriptions.add(\n getMfaStatus.pipe(take(1)).subscribe({\n next: (status: IMfaStatusResponse): void => this.mfaStatusResponse$.next(status),\n error: (error: HttpErrorResponse): void =>\n this.loadErrorHandler.handleError('mfa_failed_to_get_status', error, EditUserComponent.name),\n }),\n );\n }\n\n private onDisableMfaSuccess(): void {\n const message: string = this.translateService.instant('mfa_disabled_successfully');\n this.notificationService.success(message, NotificationPosition.Toast);\n this.updateMfaStatus();\n }\n\n private async onEditUserSuccess(): Promise {\n this.subscriptions.add(\n of(this.userId === this.userService.getStoredUserId())\n .pipe(\n switchMap((shouldReloadCurrentUser: boolean): Observable => {\n if (shouldReloadCurrentUser) {\n return this.userService.getMeProfile().pipe(switchMap(() => of(void 0)));\n }\n return of(void 0);\n }),\n tap((): void => {\n this.notificationService.success(\n this.translateService.instant('edit_security_user_success'),\n NotificationPosition.Toast,\n true,\n );\n this.navigateToParentRoute();\n }),\n )\n .subscribe(),\n );\n }\n\n private onEditUserError(error: HttpErrorResponse, permissionsUpdate: boolean = false): void {\n if (!permissionsUpdate) {\n this.form.enable();\n this.form.get($user.email).disable();\n }\n\n this.loadErrorHandler.handleError('edit_security_user_failure', error, EditUserComponent.name);\n }\n\n private getFormDataWithoutAvatar(): FormData {\n return CommonUtility.createFormData({\n [$user.displayName]: this.form.get($user.displayName).value,\n [$user.firstName]: this.form.get($user.firstName).value,\n [$user.lastName]: this.form.get($user.lastName).value,\n [$user.groupIds]: Array.from(this.userSelectedSecurityGroupsIds),\n [$user.roleId]: this.form.get($user.roleId).value,\n });\n }\n\n private confirmGroupRemoveModal(user: IUserServerResponse, userProfile: FormData): Observable {\n const modal: CommonConfirmationComponent = this.modalService.open(CommonConfirmationComponent).instance;\n modal.onCreate({\n header: 'remove_user',\n messages: [this.translateService.instant('remove_user_are_you_sure', user[$user.displayName])],\n labelAction: 'remove_user',\n labelClose: 'form_cancel',\n description: this.translateService.instant('remove_user_confirmation_description', user[$user.displayName]),\n });\n return modal.container.onClose$.pipe(\n take(1),\n switchMap((): Observable => {\n if (modal.confirmed) {\n return this.securityUserService.updateUserProfile(this.userId, userProfile);\n }\n this.form.enable();\n return EMPTY;\n }),\n );\n }\n\n public onPermissionsSubmit(event: Event): void {\n event.preventDefault();\n\n const selectablePermissionGroupIds: string[] = this.selectablePermissionGroups.map(\n (group: ISecurityGroup): string => group[$securityGroup._id],\n );\n const { groupIds: selectedPermissionGroupIds }: { groupIds: string[] } = this.permissionsForm.value;\n\n const hasSelectablePermissionsSelected: boolean = selectedPermissionGroupIds.some((groupId: string) =>\n selectablePermissionGroupIds.includes(groupId),\n );\n if (!hasSelectablePermissionsSelected) {\n this.permissionsBannerRef = this.noGroupsSelectedErrorRef;\n return;\n }\n\n this.subscriptions.add(\n this.securityUserService.updateUserSecurityGroups(this.userId, this.permissionsForm.value).subscribe({\n next: this.onEditUserSuccess.bind(this),\n error: this.onEditUserError.bind(this, true),\n }),\n );\n }\n\n public navigateToParentRoute(): void {\n this.router\n .navigate(['../..'], { relativeTo: this.activatedRoute })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n public onOrgAdminPermissionsLoaded(groups: ISecurityGroupWithEntityNames[]): void {\n if (groups.length === 0) {\n this.permissionsBannerRef = this.workspaceAdminInfoRef;\n } else {\n this.selectablePermissionGroups.push(...groups);\n }\n }\n\n public onWorkspacePermissionsLoaded(groups: ISecurityGroupWithEntityNames[]): void {\n this.selectablePermissionGroups.push(...groups);\n }\n\n public onDigitalPropertyPermissionsLoaded(groups: ISecurityGroupWithEntityNames[]): void {\n this.selectablePermissionGroups.push(...groups);\n }\n\n public onPermissionsBannerClose(): void {\n this.permissionsBannerRef = null;\n }\n\n public onSubmit(event: Event): void {\n this.roleError = '';\n event.preventDefault();\n this.formValidationRequest.next();\n\n if (!this.form.valid) {\n if (this.form.get($user.roleId).errors) {\n this.roleError = this.formService.getErrorMessageForField(\n this.form.get($user.roleId),\n $user.roleId,\n '',\n this.translateService.instant('manage_users_role_label'),\n );\n }\n\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n this.form.disable();\n\n const avatarFormControl: AbstractControl = this.form.get($user.avatar);\n const isAvatarUpdated: boolean = avatarFormControl.value !== null && typeof avatarFormControl.value.blob !== 'undefined';\n\n const userProfile: FormData = this.getFormDataWithoutAvatar();\n if (isAvatarUpdated) {\n const avatarImgExtension: string = MimeTypeToFileExtension[avatarFormControl.value?.blob.type];\n userProfile.append(avatarFile, avatarFormControl.value.blob, `placeholder${avatarImgExtension}`);\n }\n\n let updateRequestCall: Observable;\n\n const securityGroupsFormFields: AbstractControl | null = this.form.get(UserSecurityGroupSelection.groupSelection);\n const deleteUserFromAllGroups: boolean =\n !securityGroupsFormFields?.get($user.organizationAdministrator).value && this.userSelectedSecurityGroupsIds.size === 0;\n\n if (deleteUserFromAllGroups) {\n updateRequestCall = this.confirmGroupRemoveModal(this.user, userProfile);\n } else {\n updateRequestCall = this.securityUserService.updateUserProfile(this.userId, userProfile);\n }\n\n this.subscriptions.add(\n updateRequestCall.subscribe({\n next: this.onEditUserSuccess.bind(this),\n error: this.onEditUserError.bind(this),\n }),\n );\n }\n\n public onDisableMfa(): void {\n this.subscriptions.add(\n this.userService.disableMfaForUser(this.userId).subscribe({\n next: this.onDisableMfaSuccess.bind(this),\n error: (error: HttpErrorResponse): void =>\n this.loadErrorHandler.handleError('mfa_failed_to_disable', error, EditUserComponent.name),\n }),\n );\n }\n\n public onPageChange(page: number): void {\n this.page$.next(page);\n }\n\n public onPageSizeChange(pageSize: number): void {\n this.pageSize$.next(pageSize);\n }\n\n private subscribeToSelectionChange(): void {\n this.subscriptions.add(\n this.selectionChanged$.subscribe({\n next: (): void => {\n const userGroupsFormArray: UntypedFormArray = this.groupsFormFields[$user.groupIds];\n userGroupsFormArray.clear();\n\n this.userSelectedSecurityGroupsIds.forEach((id: string) => {\n userGroupsFormArray.push(\n new UntypedFormControl({\n [$securityGroup._id]: id,\n }),\n );\n });\n },\n }),\n );\n }\n\n private async loadOneTimeCompleteObservables(): Promise {\n this.form = this.createForm();\n this.userRoles$ = this.getUserRoles$();\n this.buildErrorObservables();\n\n const user$: Observable = this.userService.getUserById(this.userId).pipe(\n tap((user: IUserServerResponse): void => {\n this.user = user;\n }),\n catchError((error: HttpErrorResponse): Observable => {\n this.loadErrorHandler.handleError('error_while_getting_admin_user', error, EditUserComponent.name);\n return of(undefined);\n }),\n );\n\n const baseParams: { origin: SecurityGroupOrigin } = {\n origin: SecurityGroupOrigin.predefined,\n };\n const selectedSecurityGroups$: Observable = this.securityGroupService\n .findAllSecurityGroupsByUserIdAndTenantId(this.userId, {\n ...(this.appConfigService.isTenantEnabled()\n ? {\n ...baseParams,\n includeStaffGroups: true,\n }\n : { entityLevel: SecurityEntityLevel.admin }),\n })\n .pipe(\n tap((securityGroups: ISecurityGroupsResponse) => {\n this.selectedSecurityGroupsFromServer = securityGroups;\n\n const permissionsFormArray: UntypedFormArray = this.permissionsForm.get($user.groupIds) as UntypedFormArray;\n\n securityGroups.groups.forEach((group: ISecurityGroup): void =>\n permissionsFormArray.push(this.formBuilder.control(group[$securityGroup._id])),\n );\n }),\n catchError((error: HttpErrorResponse): Observable => {\n this.loadErrorHandler.handleError('error_failed_to_load_security_groups', error, EditUserComponent.name);\n return of(undefined);\n }),\n );\n\n return Promise.all([selectedSecurityGroups$.pipe(take(1)).toPromise(), user$.pipe(take(1)).toPromise()]);\n }\n\n private buildTableObservables(): void {\n this.organizationAdminCheckbox$ = this.groupsFormFields.organizationAdministrator?.valueChanges.pipe(\n filter(SharedCommonUtility.notNullish),\n startWith(this.groupsFormFields.organizationAdministrator?.value as boolean),\n AngularUtility.shareRef(),\n );\n\n this.securityGroupsResponse$ = combineLatest([\n this.page$,\n this.pageSize$,\n this.organizationAdminCheckbox$,\n this.showOrgAdminCheckbox$,\n ]).pipe(\n filter(SharedCommonUtility.elementsNotNullish),\n switchMap(\n (args: [number, number, boolean, boolean]): Observable> => {\n const [page, pageSize, isOrganizationAdminSelected, usePermissionsRedesign] = args;\n if (usePermissionsRedesign) {\n return of({ [$securityGroups.groups]: [], [$securityGroups._total]: 0 });\n }\n\n const params: SecurityGroupsParams = {\n skip: Number(this.activatedRoute.snapshot.queryParams['skip'] || page),\n limit: Number(this.activatedRoute.snapshot.queryParams['limit'] || pageSize),\n ...(isOrganizationAdminSelected\n ? {\n // retrieves organization administrator group for a tenant\n includeStaffGroups: false,\n entityLevel: SecurityEntityLevel.tenant,\n origin: SecurityGroupOrigin.predefined,\n }\n : { includeStaffGroups: false, skipOrganizationAdmin: true }),\n };\n return this.securityGroupService.groupsWithEntityNames(params).pipe(\n tap((loadedGroups: ISecurityGroupsResponse) => {\n this.selectableGroups = loadedGroups.groups;\n if (SharedCommonUtility.isNullishOrEmpty(loadedGroups?.[$securityGroups.groups])) {\n this.notificationService.error(this.translateService.instant('loaded_groups_empty'), NotificationPosition.Toast);\n }\n this.selectionChanged$.next();\n }),\n );\n },\n ),\n AngularUtility.shareRef(),\n catchError(\n this.loadErrorHandler.handleErrorBindable.bind(\n this.loadErrorHandler,\n 'error_failed_to_load_security_groups',\n EditUserComponent.name,\n ),\n ),\n );\n\n this.allPageSelected$ = this.selectionChanged$.pipe(\n switchMap((): Observable => {\n const groupIds: string[] = this.selectableGroups.map((group: ISecurityGroup): string => group[$securityGroup._id]);\n\n const allSelected: boolean =\n groupIds.length > 0 && groupIds.every((id: string): boolean => this.userSelectedSecurityGroupsIds.has(id));\n\n return of(allSelected);\n }),\n );\n\n this.availableSecurityGroups$ = this.securityGroupsResponse$.pipe(\n filter((value: ISecurityGroupsResponse): boolean => SharedCommonUtility.notNullish(value)),\n map((data: ISecurityGroupsResponse) => data[$securityGroups.groups]),\n );\n\n this.totalRows$ = this.securityGroupsResponse$.pipe(\n filter((value: ISecurityGroupsResponse): boolean => SharedCommonUtility.notNullish(value)),\n map((data: ISecurityGroupsResponse): number => {\n return data[$securityGroups._total];\n }),\n );\n\n this.tableData$ = combineLatest([this.availableSecurityGroups$, this.selectionChanged$]).pipe(\n map(([securityGroups, _]: [ISecurityGroupWithEntityNames[], void]): ITableRow[] => {\n return this.getTableData(securityGroups);\n }),\n );\n }\n\n private subscribeGetSelectedSecurityGroups(): void {\n this.subscriptions.add(\n this.availableSecurityGroups$\n .pipe(\n withLatestFrom(this.organizationAdminCheckbox$, this.showOrgAdminCheckbox$),\n distinctUntilChanged(isEqual),\n tap(\n ([availableSecurityGroups, orgAdminCheckbox, usePermissionsRedesign]: [\n ISecurityGroupWithEntityNames[],\n boolean,\n boolean,\n ]) => {\n if (orgAdminCheckbox && !usePermissionsRedesign) {\n this.userSelectedSecurityGroupsIds = new Set(\n availableSecurityGroups.map((group: ISecurityGroup) => group[$securityGroup._id]),\n );\n } else {\n this.userSelectedSecurityGroupsIds = new Set(\n this.selectedSecurityGroupsFromServer[$securityGroups.groups]\n .filter((group: ISecurityGroup) => {\n return (\n usePermissionsRedesign ||\n group[$securityGroup.origin] !== SecurityGroupOrigin.predefined ||\n group[$securityGroup.name] !== ORGANIZATION_ADMINISTRATOR\n );\n })\n .map((value: ISecurityGroup) => value[$securityGroup._id]),\n );\n }\n this.selectionChanged$.next();\n },\n ),\n )\n .subscribe(),\n );\n }\n\n private buildErrorObservables(): void {\n this.displayNameError$ = this.formService\n .buildFormControlErrorMessage$(\n this.form.get($user.displayName),\n this.translateService.instant('manage_users_display_name_label'),\n )\n .pipe(AngularUtility.shareRef());\n }\n\n private getUserRoles$(): Observable {\n return this.userRoleService\n .getUserRoles()\n .pipe(\n catchError(\n this.loadErrorHandler.handleErrorObservable.bind(\n this.loadErrorHandler,\n 'error_loading_user_roles',\n EditUserComponent.name,\n ),\n ),\n );\n }\n\n public async ngOnInit(): Promise {\n this.showOrgAdminCheckbox$ = of(this.appConfigService.isTenantEnabled());\n\n const initialLoad: unknown[] = await this.loadOneTimeCompleteObservables();\n if (!SharedCommonUtility.elementsNotNullish(initialLoad)) {\n // cannot load properly so just short circuit\n return;\n }\n\n this.resetFormWithDefaults();\n\n this.buildTableObservables();\n\n this.updateMfaStatus();\n this.subscribeGetSelectedSecurityGroups();\n this.subscribeToSelectionChange();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Observable, forkJoin, combineLatest } from 'rxjs';\nimport { filter, switchMap, map as mapRx, take, startWith, tap } from 'rxjs/operators';\nimport { FormBuilder } from '@angular/forms';\nimport { map } from 'lodash';\n\nimport { ITableRow, ITableColumn } from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { TenantService } from '../../../../services/tenant.service';\nimport { UserService } from '../../../../services/user.service';\nimport { IUserServerResponse } from '../../../../../../shared/interfaces/user.interface';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { ITenantInfoWithPackageInfo } from '../../../../../../shared/interfaces/tenant.interface';\nimport { $user } from '../../../../../../shared/constants/user';\nimport { SecurityGroupService } from '../../../../services/security-group.service';\nimport { SecurityEntityLevel, SecurityGroupOrigin, $securityGroup } from '../../../../../../shared/constants/security-group';\nimport {\n ISecurityGroupsResponse,\n ISecurityGroupWithEntityNames,\n} from '../../../../../../shared/interfaces/security-group.interface';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { PermissionsTableComponent } from '../permissions-table.component';\n\ninterface ITenantInfoAndOrgAdminGroups {\n tenantInfo: ITenantInfoWithPackageInfo;\n orgAdminGroups: ISecurityGroupWithEntityNames[];\n}\n\nenum TableColumns {\n organization = 'organization',\n package = 'package',\n isOrganizationAdmin = 'is-organization-admin',\n}\n\n@Component({\n selector: 'app-organization-permissions-table',\n templateUrl: './organization-permissions-table.component.html',\n styleUrls: ['./organization-permissions-table.component.scss'],\n})\nexport class OrganizationPermissionsTableComponent extends PermissionsTableComponent implements OnInit {\n constructor(\n formBuilder: FormBuilder,\n private translateService: TranslateService,\n private userService: UserService,\n private tenantService: TenantService,\n private securityGroupService: SecurityGroupService,\n ) {\n super(formBuilder);\n\n const columns: Record = {\n [TableColumns.organization]: {\n translationKey: 'organization',\n styles: {\n width: '15rem',\n },\n },\n [TableColumns.package]: {\n translationKey: 'label_package',\n styles: {\n width: '10rem',\n },\n },\n [TableColumns.isOrganizationAdmin]: {\n translationKey: 'organization_admin',\n },\n };\n\n this.tableConfig = {\n columns,\n caption: this.translateService.instant('table_caption_organization_permissions'),\n };\n }\n\n protected buildObservables(): void {\n super.buildObservables();\n\n const tenantInfo$: Observable = this.userService.userDataChanged$.pipe(\n filter((user: IUserServerResponse): boolean => SharedCommonUtility.notNullish(user)),\n take(1),\n switchMap(\n (user: IUserServerResponse): Observable =>\n this.tenantService.getTenantFromTenantedScope(user[$user.currentTenantId]),\n ),\n );\n\n const orgAdminGroups$: Observable = this.securityGroupService\n .groupsWithEntityNames({\n skip: 0,\n limit: 9999,\n includeStaffGroups: false,\n entityLevel: SecurityEntityLevel.tenant,\n origin: SecurityGroupOrigin.predefined,\n skipOrganizationAdmin: false,\n })\n .pipe(\n mapRx(\n (response: ISecurityGroupsResponse): ISecurityGroupWithEntityNames[] => response.groups,\n ),\n tap((orgAdminGroups: ISecurityGroupWithEntityNames[]): void => {\n this.onPermissionsLoaded.emit(orgAdminGroups);\n }),\n );\n\n const tenantInfoAndOrgAdminGroups$: Observable = forkJoin([tenantInfo$, orgAdminGroups$]).pipe(\n mapRx(\n ([tenantInfo, orgAdminGroups]: [\n ITenantInfoWithPackageInfo,\n ISecurityGroupWithEntityNames[],\n ]): ITenantInfoAndOrgAdminGroups => ({\n tenantInfo,\n orgAdminGroups,\n }),\n ),\n );\n\n const formGroupsIds$: Observable = this.formGroupIds.valueChanges.pipe(startWith([...this.formGroupIds.value]));\n\n this.tableData$ = combineLatest([tenantInfoAndOrgAdminGroups$, formGroupsIds$]).pipe(\n mapRx(([{ tenantInfo, orgAdminGroups }, userGroupIds]: [ITenantInfoAndOrgAdminGroups, string[]]): ITableRow[] => {\n const orgAdminGroupIds: string[] = map(orgAdminGroups, $securityGroup._id);\n const isUserInOrgAdminGroup = (): boolean =>\n orgAdminGroupIds.length > 0 && orgAdminGroupIds.every(userGroupIds.includes.bind(userGroupIds));\n\n return [\n {\n data: {\n [TableColumns.organization]: NgbTableUtilities.textCell({ text: tenantInfo.name }),\n [TableColumns.package]: NgbTableUtilities.textCell({ text: tenantInfo.packageName }),\n [TableColumns.isOrganizationAdmin]: NgbTableUtilities.checkboxCell({\n checked: isUserInOrgAdminGroup(),\n disabled: orgAdminGroupIds.length === 0,\n styles: {\n marginTop: '5px',\n },\n attributes: {\n 'aria-label': this.translateService.instant('adds_user_to_organization_admin_group', tenantInfo.name),\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (($event.target as HTMLInputElement).checked) {\n this.updateFormGroupIds([...this.formGroupIds.value, ...orgAdminGroupIds]);\n } else {\n const filterOrgAdminGroups = (groupId: string): boolean => !orgAdminGroupIds.includes(groupId);\n this.updateFormGroupIds(this.formGroupIds.value.filter(filterOrgAdminGroups));\n }\n },\n },\n }),\n },\n },\n ];\n }),\n );\n }\n\n public ngOnInit(): void {\n this.buildObservables();\n }\n}\n","

{{ 'organizations' | translate }}

\n\n\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, FormBuilder } from '@angular/forms';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { $user } from '../../../../../shared/constants/user';\nimport { ITableConfig, ITableRow, SortEvent } from '../../table/ngb-table/utilities/ngb-table.interface';\nimport { ISecurityGroupWithEntityNames } from '../../../../../shared/interfaces/security-group.interface';\nimport { $sortingOrder } from '../../../../../shared/constants/sort';\n\n@Directive()\nexport abstract class PermissionsTableComponent {\n protected pageSize: number = 10;\n\n public tableConfig: ITableConfig;\n public tableData$: Observable;\n public sortOrder$: Observable>;\n public page$: BehaviorSubject;\n public sortOption$: BehaviorSubject;\n public total$: Observable;\n\n @Input()\n public form: UntypedFormGroup;\n\n @Output()\n public onPermissionsLoaded: EventEmitter;\n\n constructor(private formBuilder: FormBuilder) {\n this.page$ = new BehaviorSubject(1);\n this.sortOption$ = new BehaviorSubject(null);\n this.onPermissionsLoaded = new EventEmitter();\n }\n\n protected get formGroupIds(): UntypedFormArray {\n return this.form.get($user.groupIds) as UntypedFormArray;\n }\n\n protected onSort(sort: SortEvent): void {\n this.sortOption$.next(sort);\n }\n\n protected onPageChange(page: number): void {\n this.page$.next(page);\n }\n\n protected buildObservables(): void {\n this.sortOrder$ = this.sortOption$.pipe(\n map(\n (sortOption: SortEvent): Record =>\n sortOption ? { [sortOption.column]: sortOption.direction } : {},\n ),\n );\n }\n\n public updateFormGroupIds(groupIds: string[]): void {\n this.formGroupIds.clear({ emitEvent: false });\n Array.from(new Set(groupIds)).forEach((groupId: string, index: number): void =>\n this.formGroupIds.push(this.formBuilder.control(groupId), { emitEvent: index === groupIds.length - 1 }),\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\nimport { startWith, map as mapRx, tap, distinctUntilChanged } from 'rxjs/operators';\nimport { chain, orderBy } from 'lodash';\n\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { ITableRow, ITableColumn, SortEvent } from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport {\n ISecurityGroupWithEntityNames,\n ISecurityGroupsResponse,\n ISecurityGroup,\n} from '../../../../../../shared/interfaces/security-group.interface';\nimport {\n SecurityEntityLevel,\n SecurityGroupOrigin,\n $securityGroup,\n $securityEntity,\n SecurityGroupTemplateNames,\n} from '../../../../../../shared/constants/security-group';\nimport { SecurityGroupService } from '../../../../services/security-group.service';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { PermissionsTableComponent } from '../permissions-table.component';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { $sortingOrder } from '../../../../../../shared/constants/sort';\nimport { AngularUtility } from '../../../../utility/angular.utility';\n\ninterface IWorkspaceWithUserAndAdminGroups {\n workspaceName: string;\n workspaceAdminGroups: string[];\n workspaceUserGroups: string[];\n}\n\ninterface ISearchForm {\n [SearchFormFields.workspaceSearch]: FormControl;\n}\n\nexport enum TableColumns {\n workspace = 'workspace',\n isWorkspaceAdmin = 'is-workspace-admin',\n isWorkspaceUser = 'is-workspace-user',\n}\n\nexport enum SearchFormFields {\n workspaceSearch = 'workspace-search',\n}\n\n@Component({\n selector: 'app-workspace-permissions-table',\n templateUrl: './workspace-permissions-table.component.html',\n styleUrls: ['./workspace-permissions-table.component.scss'],\n})\nexport class WorkspacePermissionsTableComponent extends PermissionsTableComponent implements OnInit {\n public searchForm: FormGroup;\n\n public SearchFormFields: typeof SearchFormFields = SearchFormFields;\n\n constructor(\n formBuilder: FormBuilder,\n private translateService: TranslateService,\n private securityGroupService: SecurityGroupService,\n ) {\n super(formBuilder);\n\n this.searchForm = new FormGroup({\n [SearchFormFields.workspaceSearch]: new FormControl(''),\n });\n\n const columns: Record = {\n [TableColumns.workspace]: {\n translationKey: 'label_workspace',\n sortingEnabled: true,\n styles: {\n width: '15rem',\n },\n },\n [TableColumns.isWorkspaceAdmin]: {\n translationKey: 'workspace_admin',\n styles: {\n width: '18rem',\n },\n },\n [TableColumns.isWorkspaceUser]: {\n translationKey: 'workspace_user',\n },\n };\n\n this.tableConfig = {\n columns,\n emptyState: {\n iconId: 'magnifying-glass-2',\n title: this.translateService.instant('no_workspaces_found_with_that_name'),\n subtitle: this.translateService.instant('try_searching_different_name'),\n },\n caption: this.translateService.instant('table_caption_workspaces_permissions'),\n };\n }\n\n protected get workspaceSearch(): FormControl {\n return this.searchForm.get(SearchFormFields.workspaceSearch) as FormControl;\n }\n\n protected buildObservables(): void {\n super.buildObservables();\n\n const filterWorkspaceAdminGroups = (group: ISecurityGroup): boolean =>\n group[$securityGroup.name] === SecurityGroupTemplateNames.workspace_administrator;\n\n const filterWorkspaceUserGroups = (group: ISecurityGroup): boolean =>\n group[$securityGroup.name] === SecurityGroupTemplateNames.workspace_user;\n\n const mapGroupId = (group: ISecurityGroup): string => group[$securityGroup._id];\n\n const workspaceGroups$: Observable> = this.securityGroupService\n .groupsWithEntityNames({\n skip: 0,\n limit: 9999,\n includeStaffGroups: false,\n entityLevel: SecurityEntityLevel.workspace,\n origin: SecurityGroupOrigin.predefined,\n skipOrganizationAdmin: true,\n })\n .pipe(\n tap(({ groups }: ISecurityGroupsResponse): void =>\n this.onPermissionsLoaded.emit([\n ...groups.filter(filterWorkspaceAdminGroups),\n ...groups.filter(filterWorkspaceUserGroups),\n ]),\n ),\n );\n\n const flattenedGroups$: Observable = workspaceGroups$.pipe(\n mapRx(({ groups }: ISecurityGroupsResponse): IWorkspaceWithUserAndAdminGroups[] => {\n const workspaceNames: Record = chain(groups)\n .keyBy((group: ISecurityGroupWithEntityNames): string => group[$securityGroup.entities][0][$securityEntity.workspaceId])\n .mapValues((group: ISecurityGroupWithEntityNames): string => group.workspaceNames.join())\n .value();\n\n return chain(groups)\n .groupBy((group: ISecurityGroup): string => group[$securityGroup.entities][0][$securityEntity.workspaceId])\n .mapValues(\n (wsGroups: ISecurityGroupWithEntityNames[], workspaceId: string): IWorkspaceWithUserAndAdminGroups => ({\n workspaceName: workspaceNames[workspaceId],\n workspaceAdminGroups: wsGroups.filter(filterWorkspaceAdminGroups).map(mapGroupId),\n workspaceUserGroups: wsGroups.filter(filterWorkspaceUserGroups).map(mapGroupId),\n }),\n )\n .values()\n .value();\n }),\n );\n\n const workspaceSearch$: Observable = this.workspaceSearch.valueChanges.pipe(\n startWith(this.workspaceSearch.value),\n distinctUntilChanged(),\n tap(() => this.page$.next(1)),\n );\n\n const searchedGroups$: Observable = combineLatest([\n flattenedGroups$,\n workspaceSearch$,\n ]).pipe(\n mapRx(([groups, workspaceName]: [IWorkspaceWithUserAndAdminGroups[], string]): IWorkspaceWithUserAndAdminGroups[] => {\n if (SharedCommonUtility.isNullishOrEmpty(workspaceName?.trim())) {\n return groups;\n }\n\n return groups.filter((group: IWorkspaceWithUserAndAdminGroups): boolean =>\n group.workspaceName.toLowerCase().includes(workspaceName.trim().toLowerCase()),\n );\n }),\n AngularUtility.shareRef(),\n );\n\n this.total$ = searchedGroups$.pipe(mapRx((workspaces: IWorkspaceWithUserAndAdminGroups[]): number => workspaces.length));\n\n const orderedGroups$: Observable = combineLatest([\n searchedGroups$,\n this.sortOption$,\n ]).pipe(\n mapRx(([groups, sortOption]: [IWorkspaceWithUserAndAdminGroups[], SortEvent]): IWorkspaceWithUserAndAdminGroups[] => {\n if (\n SharedCommonUtility.isNullish(sortOption) ||\n sortOption.column !== TableColumns.workspace ||\n sortOption.direction === $sortingOrder.all\n ) {\n return groups;\n }\n\n return orderBy(\n groups,\n (group: IWorkspaceWithUserAndAdminGroups) => group.workspaceName.toLowerCase(),\n sortOption.direction,\n );\n }),\n );\n\n const paginatedGroups$: Observable = combineLatest([orderedGroups$, this.page$]).pipe(\n mapRx(([groups, page]: [IWorkspaceWithUserAndAdminGroups[], number]): IWorkspaceWithUserAndAdminGroups[] => {\n return groups.slice((page - 1) * this.pageSize, page * this.pageSize);\n }),\n );\n\n const userGroupIds$: Observable = this.formGroupIds.valueChanges.pipe(startWith([...this.formGroupIds.value]));\n\n this.tableData$ = combineLatest([paginatedGroups$, userGroupIds$]).pipe(\n mapRx(([groups, userGroupIds]: [IWorkspaceWithUserAndAdminGroups[], string[]]): ITableRow[] => {\n const isUserInGroups = (groupIds: string[]): boolean =>\n groupIds.some((groupId: string): boolean => userGroupIds.includes(groupId));\n\n return groups.map(\n (workspace: IWorkspaceWithUserAndAdminGroups): ITableRow => ({\n data: {\n [TableColumns.workspace]: NgbTableUtilities.textCell({ text: workspace.workspaceName }),\n [TableColumns.isWorkspaceAdmin]: NgbTableUtilities.checkboxCell({\n checked: isUserInGroups(workspace.workspaceAdminGroups),\n styles: {\n marginTop: '5px',\n },\n attributes: {\n 'aria-label': this.translateService.instant('adds_user_to_workspace_admin_group', workspace.workspaceName),\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (($event.target as HTMLInputElement).checked) {\n this.updateFormGroupIds([...this.formGroupIds.value, ...workspace.workspaceAdminGroups]);\n } else {\n const filterUncheckedGroupIds = (groupId: string): boolean =>\n !workspace.workspaceAdminGroups.includes(groupId);\n this.updateFormGroupIds(this.formGroupIds.value.filter(filterUncheckedGroupIds));\n }\n },\n },\n }),\n [TableColumns.isWorkspaceUser]: NgbTableUtilities.checkboxCell({\n checked: isUserInGroups(workspace.workspaceUserGroups),\n styles: {\n marginTop: '5px',\n },\n attributes: {\n 'aria-label': this.translateService.instant('adds_user_to_workspace_user_group', workspace.workspaceName),\n },\n listeners: {\n click: ($event: MouseEvent): void => {\n $event.stopPropagation();\n if (($event.target as HTMLInputElement).checked) {\n this.updateFormGroupIds([...this.formGroupIds.value, ...workspace.workspaceUserGroups]);\n } else {\n const filterUncheckedGroupIds = (groupId: string): boolean =>\n !workspace.workspaceUserGroups.includes(groupId);\n this.updateFormGroupIds(this.formGroupIds.value.filter(filterUncheckedGroupIds));\n }\n },\n },\n }),\n },\n }),\n );\n }),\n );\n }\n\n public ngOnInit(): void {\n this.buildObservables();\n }\n}\n","

{{ 'workspaces' | translate }}

\n\n
\n \n
\n\n\n\n\n\n\n","
\n
\n \n \n {{ 'view_flaw_status_change_new_status_' + historyItem.status | translate }}\n \n
\n
\n
\n {{ getUserAndTimestamp() }}\n
\n
\n
\n
\n\n\n \n \n \n \n \n \n \n \n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { TranslateService } from '../../../translate/translate.service';\nimport { IIssueStatusHistory } from '../../../../../shared/interfaces/issue-status-history.interface';\n\nconst dateStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat([], {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n});\n\nconst timeStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat([], {\n hour: '2-digit',\n minute: '2-digit',\n timeZoneName: 'short',\n});\n\n@Component({\n selector: 'app-view-flaw-status-history-item',\n templateUrl: './view-flaw-status-history-item.component.html',\n styleUrls: ['./view-flaw-status-history-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewFlawStatusHistoryItemComponent {\n @Input()\n public expanded: boolean;\n\n @Input()\n public historyItem: IIssueStatusHistory;\n\n constructor(private translateService: TranslateService) {\n this.expanded = true;\n }\n\n public getUserAndTimestamp(): string {\n const dateTimeOfComment: Date = new Date(this.historyItem.date);\n\n const displayName: string = this.translateService.instant('manual_audit_issue_comments_user_timestamp', [\n dateStyle.format(dateTimeOfComment),\n timeStyle.format(dateTimeOfComment),\n this.historyItem.userId,\n ]);\n\n if (this.historyItem.userDisabled) {\n return `${displayName} (${this.translateService.instant('status_inactive')})`;\n }\n\n return displayName;\n }\n}\n","export enum issueStatusHistory {\n dismissed = 'dismissed',\n open = 'open',\n fixed = 'fixed',\n partiallyFixed = 'partiallyFixed',\n notFixed = 'notFixed',\n notReproducible = 'notReproducible',\n cannotBeFixed = 'cannotBeFixed',\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { IIssueStatusHistory } from '../../../shared/interfaces/issue-status-history.interface';\nimport { FlawService } from './flaw.service';\nimport { ManualAuditIssueService } from './manual-audit-issue.service';\nimport { IFlawStatusUserHistory } from '../../../shared/interfaces/flaw.interface';\nimport { issueStatusHistory } from '../../../shared/constants/issue-status-history';\nimport { IRuleAuditHistoryManualLineItem } from '../../../shared/interfaces/rule-audit-history.interface';\nimport { $ruleAuditHistory, $ruleAuditHistoryExtra } from '../../../shared/constants/rule-audit-history';\nimport { $user, accountStatus } from '../../../shared/constants/user';\nimport { IManualAuditHistoryRequest } from '../interfaces/manual-evaluation.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IssueStatusHistoryService {\n constructor(\n private flawService: FlawService,\n private manualAuditIssueService: ManualAuditIssueService,\n ) {}\n\n private getHistoryFromFlaw(flawId: string): Observable {\n return this.flawService.getHistory(flawId).pipe(\n map((flawStatusUserHistories: IFlawStatusUserHistory[]): IIssueStatusHistory[] => {\n return flawStatusUserHistories.map((statusHistory: IFlawStatusUserHistory): IIssueStatusHistory => {\n return {\n comment: statusHistory.comment,\n date: statusHistory.date,\n status: issueStatusHistory[statusHistory.status],\n userId: statusHistory.user,\n userDisabled: statusHistory.userDisabled,\n };\n });\n }),\n );\n }\n\n private getHistoryFromRuleAuditHistory(manualAuditRequest: IManualAuditHistoryRequest): Observable {\n return this.manualAuditIssueService.getRuleAuditHistory(manualAuditRequest).pipe(\n map((ruleAuditHistory: IRuleAuditHistoryManualLineItem[]): IIssueStatusHistory[] => {\n return ruleAuditHistory.flatMap((history: IRuleAuditHistoryManualLineItem): IIssueStatusHistory => {\n return {\n comment: history[$ruleAuditHistory.reason],\n date: new Date(history[$ruleAuditHistory.createdAt]),\n status: issueStatusHistory[history[$ruleAuditHistory.extra][$ruleAuditHistoryExtra.to]],\n userId: history[$ruleAuditHistory.user][$user.displayName],\n userDisabled: history[$ruleAuditHistory.user][$user.accountStatus] !== accountStatus.active,\n };\n });\n }),\n );\n }\n\n public getStatusUpdateHistory(source: string | IManualAuditHistoryRequest): Observable {\n if (typeof source === 'string') {\n return this.getHistoryFromFlaw(source);\n }\n\n return this.getHistoryFromRuleAuditHistory(source);\n }\n}\n","\n \n \n \n {{ 'label_show_issue_audit_history' | translate }}\n\n\n\n
\n
\n \n
\n
\n
\n\n\n
\n

\n {{ 'label_activity_log' | translate }}\n

\n \n
\n
\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { IIssueStatusHistory } from '../../../../shared/interfaces/issue-status-history.interface';\nimport { IssueStatusHistoryService } from '../../services/issue-status-history.service';\nimport { IManualAuditHistoryRequest } from '../../interfaces/manual-evaluation.interface';\n\n@Component({\n selector: 'app-view-flaw-status-history',\n templateUrl: './view-flaw-status-history.component.html',\n styleUrls: ['./view-flaw-status-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewFlawStatusHistoryComponent {\n private issueSource$: BehaviorSubject;\n public issueStatusHistories$: Observable;\n\n @Input() public set issueSource(value: string | IManualAuditHistoryRequest) {\n this.issueSource$.next(value);\n }\n\n constructor(private issueStatusHistoryService: IssueStatusHistoryService) {\n this.issueSource$ = new BehaviorSubject(null);\n\n this.issueStatusHistories$ = this.issueSource$.pipe(\n switchMap((source: string | IManualAuditHistoryRequest) => this.issueStatusHistoryService.getStatusUpdateHistory(source)),\n );\n }\n}\n","
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n {{ 'scan_viewport_' + scanViewport.viewportType | translate }}\n
\n
\n {{ getViewportLabel(scanViewport) }}\n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { ScanViewportType } from '../../../../shared/constants/scan-viewport';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IScanViewport } from '../../../../shared/interfaces/scan-viewport.interface';\n\n@Component({\n selector: 'app-viewport-box',\n templateUrl: './viewport-box.component.html',\n})\nexport class ViewportBoxComponent {\n @Input() public scanViewport: IScanViewport;\n public viewportType: typeof ScanViewportType;\n public isCustomViewport: boolean = false;\n\n constructor(private translateService: TranslateService) {\n this.viewportType = ScanViewportType;\n }\n\n public getViewportLabel(viewport: IScanViewport): string {\n return this.translateService.instant('viewport_value_label', [viewport.width.toString(), viewport.height.toString()]);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { $scanViewport } from '../../../../shared/constants/scan-viewport';\n\n@Component({\n selector: 'app-viewport-custom-values',\n templateUrl: './viewport-custom-values.component.html',\n styleUrls: ['./viewport-custom-values.component.scss'],\n})\nexport class ViewportCustomValuesComponent {\n @Input()\n public viewportForm: UntypedFormGroup;\n public $scanViewport: typeof $scanViewport;\n\n constructor() {\n this.$scanViewport = $scanViewport;\n this.viewportForm = new UntypedFormGroup({});\n }\n}\n","
\n

{{ 'custom_dimensions_label' | translate }}

\n
\n \n \n {{ 'pixel_label' | translate }}\n
\n
\n \n \n {{ 'pixel_label' | translate }}\n
\n
\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ 'scan_viewport_' + scanViewport.viewportType | translate }}\n {{ getViewportLabel() }}\n\n","import { Component, Input } from '@angular/core';\nimport { ScanViewportType } from '../../../../shared/constants/scan-viewport';\nimport { IScanViewport } from '../../../../shared/interfaces/scan-viewport.interface';\n\n@Component({\n selector: 'app-viewport-inline',\n templateUrl: './viewport-inline.component.html',\n})\nexport class ViewportInlineComponent {\n @Input() public scanViewport: IScanViewport;\n public viewportType: typeof ScanViewportType;\n\n constructor() {\n this.viewportType = ScanViewportType;\n }\n\n public getViewportLabel(): string {\n return `(${this.scanViewport?.width ?? '??'} x ${this.scanViewport?.height ?? '??'}px)`;\n }\n}\n","\n\n \n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n AbstractControl,\n ControlValueAccessor,\n UntypedFormBuilder,\n UntypedFormGroup,\n NG_VALUE_ACCESSOR,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nimport { $scanViewport, ScanViewportType } from '../../../../shared/constants/scan-viewport';\nimport { TranslateService } from '../../translate/translate.service';\nimport { IScanViewport } from '../../../../shared/interfaces/scan-viewport.interface';\nimport { ScanViewport } from '../../../../shared/utils/scan-viewport';\n\nconst DEFAULT_HEIGHT: number = 600;\nconst MIN_VALUE: number = 100;\nconst MAX_HEIGHT: number = 5000;\nconst DEFAULT_WIDTH: number = 800;\nconst MAX_WIDTH: number = 1920;\n\n@Component({\n selector: 'app-viewport-select',\n templateUrl: './viewport-select.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ViewportSelectComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewportSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n private onChange: Function = () => {};\n private onTouched: Function = () => {};\n private subscription: Subscription;\n\n public disabled: boolean;\n public viewportType: typeof ScanViewportType;\n public $scanViewport: typeof $scanViewport;\n public form: UntypedFormGroup;\n public viewports: IScanViewport[];\n @Input()\n public formValidationRequest$: Observable;\n\n constructor(\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n private builder: UntypedFormBuilder,\n ) {\n this.viewportType = ScanViewportType;\n this.$scanViewport = $scanViewport;\n this.subscription = new Subscription();\n\n this.form = this.builder.group({\n [$scanViewport.viewportType]: this.builder.control(''),\n [$scanViewport.width]: this.builder.control(null),\n [$scanViewport.height]: this.builder.control(null),\n });\n\n this.viewports = [\n ScanViewport.getMobileViewport(),\n ScanViewport.getTabletViewport(),\n ScanViewport.getDesktopViewport(),\n new ScanViewport(ScanViewportType.custom, DEFAULT_HEIGHT, DEFAULT_WIDTH),\n ];\n }\n\n // eslint-disable-next-line consistent-return\n private getViewportFromType(value: IScanViewport): IScanViewport {\n switch (value[$scanViewport.viewportType]) {\n case ScanViewportType.desktop:\n return ScanViewport.getDesktopViewport();\n case ScanViewportType.tablet:\n return ScanViewport.getTabletViewport();\n case ScanViewportType.mobile:\n return ScanViewport.getMobileViewport();\n case ScanViewportType.custom:\n return new ScanViewport(ScanViewportType.custom, value[$scanViewport.height], value[$scanViewport.width]);\n // no default\n }\n }\n\n private setupCustomControls(value: ScanViewportType): void {\n if (value === ScanViewportType.custom) {\n const heightValidators: ValidatorFn[] = [Validators.required, Validators.min(MIN_VALUE), Validators.max(MAX_HEIGHT)];\n const widthValidators: ValidatorFn[] = [Validators.required, Validators.min(MIN_VALUE), Validators.max(MAX_WIDTH)];\n\n if (this.form.contains($scanViewport.height)) {\n this.form.get($scanViewport.height).setValue(DEFAULT_HEIGHT);\n } else {\n this.form.registerControl($scanViewport.height, this.builder.control(DEFAULT_HEIGHT, heightValidators));\n }\n\n if (this.form.contains($scanViewport.width)) {\n this.form.get($scanViewport.width).setValue(DEFAULT_WIDTH);\n } else {\n this.form.registerControl($scanViewport.width, this.builder.control(DEFAULT_WIDTH, widthValidators));\n }\n\n this.form.updateValueAndValidity();\n } else {\n this.form.removeControl($scanViewport.height);\n this.form.removeControl($scanViewport.width);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private onViewportValueChange(value: IScanViewport): void {\n const type: IScanViewport = this.getViewportFromType(value);\n\n this.onTouched();\n this.onChange(type);\n this.changeDetectorRef.detectChanges();\n }\n\n public writeValue(obj: IScanViewport): void {\n this.form.patchValue(obj, { emitEvent: false });\n this.changeDetectorRef.detectChanges();\n }\n\n public registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n Object.values(this.form.controls).forEach((value: AbstractControl): void =>\n this.disabled ? value.disable({ emitEvent: false }) : value.enable({ emitEvent: false }),\n );\n }\n\n public getViewportLabel(): (scanViewPort: IScanViewport) => string {\n return (scanViewPort: IScanViewport): string => {\n const viewportType: string = this.translateService.instant('scan_viewport_' + scanViewPort[$scanViewport.viewportType]);\n\n if (scanViewPort[$scanViewport.viewportType] === ScanViewportType.custom) {\n return viewportType;\n }\n\n return this.translateService.instant('scan_viewport_value', [\n viewportType,\n scanViewPort.width.toString(),\n scanViewPort.height.toString(),\n ]);\n };\n }\n\n public ngOnInit(): void {\n this.subscription.add(this.form.get($scanViewport.viewportType).valueChanges.subscribe(this.setupCustomControls.bind(this)));\n this.subscription.add(this.form.valueChanges.subscribe(this.onViewportValueChange.bind(this)));\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { sum } from 'lodash';\n\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ITableConfig, ITableRow, ITableColumn } from '../../../table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../../../table/ngb-table/utilities/ngb-table.utilities';\nimport { $riskScoreLevels } from '../../../../../../shared/constants/risk-metrics';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { IRiskMetricsChartData } from '../../../../interfaces/risk-metrics-chart.interface';\nimport { $riskMetricsChartData } from '../../../../constants/risk-metrics-chart';\nimport { DashboardDataFrequency } from '../../../../../../shared/interfaces/ws-dashboard.interface';\nimport { RiskChartUtility } from '../../../../utility/risk-chart.utility';\n\nenum $tableColumns {\n date = 'date',\n behind = 'behind',\n needsAttention = 'needsAttention',\n onTrack = 'onTrack',\n excelling = 'excelling',\n total = 'total',\n}\n\n@Component({\n selector: 'app-websites-apps-by-risk-management-table-modal',\n templateUrl: './websites-apps-by-risk-management-table-modal.component.html',\n})\nexport class WebsitesAppsByRiskManagementStatusTableModalComponent implements OnInit {\n public tableData$: Observable[]>;\n public tableConfig$: Observable;\n\n private chartData$: BehaviorSubject = new BehaviorSubject(null);\n private frequency$: BehaviorSubject = new BehaviorSubject(\n DashboardDataFrequency.weekly,\n );\n\n @Input() set data(data: IRiskMetricsChartData[]) {\n if (data) {\n this.chartData$.next(data);\n }\n }\n\n @Input() set frequency(freq: DashboardDataFrequency) {\n this.frequency$.next(freq);\n }\n constructor(\n private translateService: TranslateService,\n public modal: NgbActiveModal,\n ) {}\n\n private createTableConfig(frequency: DashboardDataFrequency): ITableConfig {\n const columns: Record = {\n [$tableColumns.date]: {\n translationKey: RiskChartUtility.getDescriptorKeyForFrequency(frequency),\n styles: {\n width: '30%',\n maxWidth: '30%',\n },\n },\n [$tableColumns.behind]: {\n translationKey: 'behind',\n styles: {\n width: '15%',\n maxWidth: '15%',\n },\n },\n [$tableColumns.needsAttention]: {\n translationKey: 'needs_attention',\n styles: {\n width: '15%',\n maxWidth: '15%',\n },\n },\n [$tableColumns.onTrack]: {\n translationKey: 'on_track',\n styles: {\n width: '15%',\n maxWidth: '15%',\n },\n },\n [$tableColumns.excelling]: {\n translationKey: 'excelling',\n styles: {\n width: '15%',\n maxWidth: '15%',\n },\n },\n [$tableColumns.total]: {\n translationKey: 'total',\n styles: {\n width: '10%',\n maxWidth: '10%',\n },\n },\n };\n\n return {\n columns: columns,\n caption: this.translateService.instant('websites_apps_by_risk_management_status_table'),\n };\n }\n\n private buildTableData(\n snapshots: IRiskMetricsChartData[],\n frequency: DashboardDataFrequency,\n ): ITableRow[] {\n return [...snapshots].reverse().map((snapshot: IRiskMetricsChartData) => ({\n originalData: snapshot,\n data: {\n [$tableColumns.date]: NgbTableUtilities.textCell({\n text: RiskChartUtility.formatDateForFrequency(snapshot[$riskMetricsChartData.computedAt], frequency, true),\n }),\n [$tableColumns.behind]: NgbTableUtilities.textCell({\n text: snapshot[$riskMetricsChartData.dpCountsByRiskLevel][$riskScoreLevels.behind].toLocaleString(),\n }),\n [$tableColumns.needsAttention]: NgbTableUtilities.textCell({\n text: snapshot[$riskMetricsChartData.dpCountsByRiskLevel][$riskScoreLevels.needsAttention].toLocaleString(),\n }),\n [$tableColumns.onTrack]: NgbTableUtilities.textCell({\n text: snapshot[$riskMetricsChartData.dpCountsByRiskLevel][$riskScoreLevels.onTrack].toLocaleString(),\n }),\n [$tableColumns.excelling]: NgbTableUtilities.textCell({\n text: snapshot[$riskMetricsChartData.dpCountsByRiskLevel][$riskScoreLevels.excelling].toLocaleString(),\n }),\n [$tableColumns.total]: NgbTableUtilities.textCell({\n text: sum(Object.values(snapshot[$riskMetricsChartData.dpCountsByRiskLevel])).toLocaleString(),\n }),\n },\n }));\n }\n\n public ngOnInit(): void {\n this.tableConfig$ = this.frequency$.pipe(\n map((freq: DashboardDataFrequency) => {\n return this.createTableConfig(freq);\n }),\n );\n this.tableData$ = combineLatest([this.chartData$, this.frequency$]).pipe(\n map(([data, frequency]: [IRiskMetricsChartData[], DashboardDataFrequency]) => {\n return this.buildTableData(data, frequency);\n }),\n );\n }\n}\n","\n \n\n","import { EChartsOption, EChartsType } from 'echarts/types/dist/shared';\nimport { Component, Input } from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { GridComponent, LegendComponent, TooltipComponent } from 'echarts/components';\nimport { max } from 'lodash';\nimport { BarChart } from 'echarts/charts';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { DsModalService, DsModalVariant } from '@levelaccess/design-system';\nimport { $riskScoreLevels } from '../../../../../shared/constants/risk-metrics';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { DateUtility } from '../../../utility/date.utility';\nimport { WebsitesAppsByRiskManagementStatusTableModalComponent } from './websites-apps-by-risk-management-table-modal/websites-apps-by-risk-management-table-modal.component';\nimport { IRiskMetricsChartConfig, IRiskMetricsChartData } from '../../../interfaces/risk-metrics-chart.interface';\nimport { $riskMetricsChartConfig, $riskMetricsChartData } from '../../../constants/risk-metrics-chart';\nimport { DashboardDataFrequency } from '../../../../../shared/interfaces/ws-dashboard.interface';\nimport { RiskChartUtility } from '../../../utility/risk-chart.utility';\n\n@Component({\n selector: 'app-websites-apps-by-risk-management-chart',\n templateUrl: './websites-apps-by-risk-management-chart.component.html',\n styleUrls: ['websites-apps-by-risk-management-chart.component.scss'],\n})\nexport class WebsitesAppsByRiskManagementStatusChartComponent {\n private chartData: IRiskMetricsChartData[];\n private frequency: DashboardDataFrequency;\n\n private DECAL_COLOR: string = 'rgba(255, 255, 255, 0.8)';\n // TODO: extract to colors to DSColors in design system package\n private BEHIND_COLOR: string = '#F4364C';\n private NEEDS_ATTENTION_COLOR: string = '#DB6E00';\n private ON_TRACK_COLOR: string = '#4B9E24';\n private EXCELLING_COLOR: string = '#074EB0';\n private DATA_POINT_LIMIT: number = 6;\n private MIN_Y_AXIS_OFFSET: number = 10;\n\n @Input() set config(config: IRiskMetricsChartConfig) {\n if (config) {\n this.onGetConfigSuccess(config);\n }\n }\n public chart: EChartsType;\n\n constructor(\n private translate: TranslateService,\n private dsModalService: DsModalService,\n ) {}\n\n private onGetConfigSuccess(config: IRiskMetricsChartConfig): void {\n this.frequency = config[$riskMetricsChartConfig.frequency];\n this.chartData = [...config[$riskMetricsChartConfig.data]]\n .sort(\n (a: IRiskMetricsChartData, b: IRiskMetricsChartData): number =>\n new Date(a[$riskMetricsChartData.computedAt]).getTime() - new Date(b[$riskMetricsChartData.computedAt]).getTime(),\n )\n .slice(-this.DATA_POINT_LIMIT);\n this.drawGraph();\n }\n\n private getDataValuesForStatus(metrics: IRiskMetricsChartData[], status: $riskScoreLevels): number[] {\n return metrics.map((data: IRiskMetricsChartData) => {\n return data[$riskMetricsChartData.dpCountsByRiskLevel][status];\n });\n }\n\n private calculateYAxisMax(values: number[]): number {\n const highestYValue: number = max(values) ?? 0;\n if (highestYValue % this.MIN_Y_AXIS_OFFSET === 0) {\n return highestYValue + this.MIN_Y_AXIS_OFFSET;\n }\n return Math.ceil(highestYValue / this.MIN_Y_AXIS_OFFSET) * this.MIN_Y_AXIS_OFFSET;\n }\n\n private drawGraph(): void {\n const behind: number[] = this.getDataValuesForStatus(this.chartData, $riskScoreLevels.behind);\n const needsAttention: number[] = this.getDataValuesForStatus(this.chartData, $riskScoreLevels.needsAttention);\n const onTrack: number[] = this.getDataValuesForStatus(this.chartData, $riskScoreLevels.onTrack);\n const excelling: number[] = this.getDataValuesForStatus(this.chartData, $riskScoreLevels.excelling);\n\n const labels: string[] = this.chartData.map((metrics: IRiskMetricsChartData) => {\n return RiskChartUtility.formatDateForFrequency(new Date(metrics[$riskMetricsChartData.computedAt]), this.frequency);\n });\n\n const yAxisMax = this.calculateYAxisMax([...behind, ...needsAttention, ...onTrack, ...excelling]);\n\n const xAxisTitle: string = this.translate.instant(RiskChartUtility.getDescriptorKeyForFrequency(this.frequency));\n const yAxisTitle: string = this.translate.instant('number_of_websites_apps');\n\n const behindString: string = this.translate.instant('behind');\n const needsAttentionString: string = this.translate.instant('needs_attention');\n const onTrackString: string = this.translate.instant('on_track');\n const excellingString: string = this.translate.instant('excelling');\n\n echarts.use([TooltipComponent, GridComponent, LegendComponent, BarChart, SVGRenderer]);\n this.chart = echarts.init(document.getElementById('riskManagementStatusChart'));\n\n const option: EChartsOption = {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'none',\n },\n formatter: (params: any): string => {\n let formattedToolTip: string = '';\n const formattedDate: string = DateUtility.prettifyDate(\n new Date(this.chartData[params[0].dataIndex][$riskMetricsChartData.computedAt]),\n {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n );\n formattedToolTip += formattedDate;\n const toolTipData: string[] = params.map((param: any) => {\n return `
${param.marker}${param.seriesName}${param.value}`;\n });\n formattedToolTip += toolTipData.join('');\n return formattedToolTip;\n },\n },\n legend: {\n data: [behindString, needsAttentionString, onTrackString, excellingString],\n left: 'right',\n },\n grid: {\n left: '4%',\n right: '0%',\n bottom: '10%',\n top: '20%',\n containLabel: true,\n },\n xAxis: [\n {\n name: xAxisTitle,\n nameLocation: 'middle',\n type: 'category',\n data: labels,\n nameTextStyle: {\n fontWeight: 'bold',\n fontSize: 16,\n lineHeight: 24,\n color: 'black',\n fontFamily: 'Arial',\n },\n nameGap: 32,\n },\n ],\n yAxis: [\n {\n type: 'value',\n name: yAxisTitle,\n nameLocation: 'middle',\n nameGap: 32,\n nameTextStyle: {\n fontWeight: 'bold',\n fontSize: 16,\n lineHeight: 24,\n color: 'black',\n fontFamily: 'Arial',\n },\n minInterval: 1,\n min: 0,\n max: yAxisMax,\n },\n ],\n series: [\n {\n name: behindString,\n type: 'bar',\n barMaxWidth: 30,\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: behind,\n itemStyle: {\n borderWidth: 3,\n borderColor: 'rgba(0, 0, 0, 0)',\n decal: {\n color: this.DECAL_COLOR,\n dashArrayX: [1, 0],\n dashArrayY: [2, 5],\n symbolSize: 1,\n rotation: -Math.PI / 6,\n },\n },\n color: this.BEHIND_COLOR,\n },\n {\n name: needsAttentionString,\n type: 'bar',\n barMaxWidth: 30,\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: needsAttention,\n itemStyle: {\n borderWidth: 3,\n borderColor: 'rgba(0, 0, 0, 0)',\n decal: {\n symbol: 'circle',\n symbolSize: 0.5,\n rotation: Math.PI / 6,\n color: this.DECAL_COLOR,\n },\n },\n color: this.NEEDS_ATTENTION_COLOR,\n },\n {\n name: onTrackString,\n type: 'bar',\n barMaxWidth: 30,\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: onTrack,\n itemStyle: {\n borderWidth: 3,\n borderColor: 'rgba(0, 0, 0, 0)',\n decal: {\n color: this.DECAL_COLOR,\n dashArrayX: [1, 0],\n dashArrayY: [2, 5],\n symbolSize: 1,\n rotation: Math.PI / 6,\n },\n },\n color: this.ON_TRACK_COLOR,\n },\n {\n name: excellingString,\n type: 'bar',\n barMaxWidth: 30,\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: excelling,\n itemStyle: {\n borderWidth: 3,\n borderColor: 'rgba(0, 0, 0, 0)',\n },\n color: this.EXCELLING_COLOR,\n },\n ],\n aria: {\n // Note: default screen reader behaviour is overriden in the template\n // keeping enabled for decal to work\n enabled: true,\n decal: {\n show: true,\n },\n },\n };\n\n this.chart.setOption(option);\n\n const chartSvg: SVGElement = this.chart.getDom().querySelector('svg');\n chartSvg.setAttribute('style', 'overflow: visible;');\n chartSvg.parentElement.setAttribute('style', 'overflow: visible;');\n\n // echart seems to set the id of this element to '0' which conflicts\n // causing an accessibility violation\n const chartRect: SVGRectElement = this.chart.getDom().querySelector('rect');\n chartRect.setAttribute('id', CommonUtility.createUniqueDOMId('0'));\n\n this.chart.on('legendselectchanged', (params: any) => {\n this.chart.setOption({ animation: false });\n this.chart.dispatchAction({\n type: 'legendSelect',\n name: params.name,\n });\n this.chart.setOption({ animation: true });\n });\n }\n\n public openTableModal(ev: Event): void {\n ev.preventDefault();\n\n const componentRef: WebsitesAppsByRiskManagementStatusTableModalComponent = this.dsModalService.open(\n WebsitesAppsByRiskManagementStatusTableModalComponent,\n DsModalVariant.center,\n ).componentInstance;\n componentRef.data = this.chartData;\n componentRef.frequency = this.frequency;\n }\n}\n","
\n
\n \n {{ 'websites_apps_by_risk_management_status_description' | translate }}\n \n \n {{ 'view_websites_apps_by_risk_management_status_table' | translate }}\n {{ 'view_table_link' | translate }}\n \n
\n
\n
\n","
\n
\n {{ 'websites_apps_by_risk_management_status_details_description' | translate }}\n
\n
{{ computedDateDescription$ | async }}
\n
\n\n\n \n \n \n \n \n \n \n \n \n\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core';\nimport { snakeCase } from 'lodash';\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { Event, NavigationEnd, Router } from '@angular/router';\nimport { DsModalService } from '@levelaccess/design-system';\nimport { filter, map } from 'rxjs/operators';\n\nimport { TranslateService } from '../../../translate/translate.service';\nimport { ITableColumn, ITableConfig, ITableRow, SortEvent } from '../../table/ngb-table/utilities/ngb-table.interface';\nimport { $dpMetrics, $dpMetricsSortKeys, $findingsMetrics, $riskScoreLevels } from '../../../../../shared/constants/risk-metrics';\nimport {\n IDigitalPropertyMetrics,\n IPaginatedDigitalPropertyMetricsList,\n} from '../../../../../shared/interfaces/digital-property-metrics.interface';\nimport { NgbTableUtilities } from '../../table/ngb-table/utilities/ngb-table.utilities';\nimport { $paginatedResponse } from '../../../../../shared/interfaces/response.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { ISortingParams } from '../../../../../shared/interfaces/request.interface';\nimport { Api, ApiQueryOption } from '../../../../../shared/constants/api';\nimport { $sortingOrder } from '../../../../../shared/constants/sort';\nimport { $digitalProperty } from '../../../../../shared/constants/digital-properties';\nimport { LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { $findingCounts } from '../../../../../shared/constants/finding-counts';\nimport { DateUtility } from '../../../utility/date.utility';\nimport { DashboardDataFrequency } from '../../../../../shared/interfaces/ws-dashboard.interface';\n\nenum $tableColumns {\n dpName = 'dpName',\n resolvedCount = 'resolvedCount',\n resolvedPercentage = 'resolvedPercentage',\n}\n\n@Component({\n selector: 'app-websites-apps-by-risk-management-status-details',\n templateUrl: './websites-apps-by-risk-management-status-details.component.html',\n})\nexport class WebsitesAppsByRiskManagementStatusDetailsComponent implements OnInit, OnChanges, OnDestroy {\n @Input() public page: number;\n @Input() public titleId: string;\n @Input() public set frequency(frequency: DashboardDataFrequency) {\n this.frequency$.next(frequency);\n }\n @Input() public set computedAt(computedAt: Date) {\n this.computedAt$.next(computedAt);\n }\n\n @Output() public onTabChange: EventEmitter<$riskScoreLevels>;\n @Output() public onPageChange: EventEmitter;\n @Output() public onSort: EventEmitter>;\n\n public tableConfig: ITableConfig;\n public tableData: ITableRow[];\n public riskScoreLevels: $riskScoreLevels[];\n public tabLabels: Record<$riskScoreLevels, string>;\n public formattedComputedDate: string;\n public metricsData: IDigitalPropertyMetrics[];\n public collectionSize$: BehaviorSubject;\n public computedDateDescription$: Observable;\n\n private subscriptions: Subscription;\n\n private frequency$: BehaviorSubject;\n private computedAt$: BehaviorSubject;\n\n constructor(\n private translateService: TranslateService,\n private modalService: DsModalService,\n private router: Router,\n ) {\n this.subscriptions = new Subscription();\n this.page = 1;\n this.riskScoreLevels = Object.values($riskScoreLevels);\n this.onTabChange = new EventEmitter<$riskScoreLevels>();\n this.onPageChange = new EventEmitter();\n this.onSort = new EventEmitter>();\n this.metricsData = [];\n this.collectionSize$ = new BehaviorSubject(0);\n this.frequency$ = new BehaviorSubject(DashboardDataFrequency.weekly);\n this.computedAt$ = new BehaviorSubject(null);\n }\n\n @Input() public set dpMetricsList(metricsList: IPaginatedDigitalPropertyMetricsList) {\n this.metricsData = metricsList?.[$paginatedResponse.data];\n this.collectionSize$.next(metricsList?.[$paginatedResponse._total]);\n }\n\n public tabIdChange(index: number): void {\n this.onTabChange.emit(this.riskScoreLevels[index]);\n }\n\n public changePage(page: number): void {\n this.onPageChange.emit(page);\n }\n\n public sortTableData(sort: SortEvent): void {\n const sortParams: ISortingParams<$dpMetricsSortKeys> =\n SharedCommonUtility.isNullish(sort) || sort.direction === $sortingOrder.all\n ? null\n : {\n [ApiQueryOption.sortBy]: this.getSortKey(sort.column as $tableColumns),\n [ApiQueryOption.sortOrder]: sort.direction,\n };\n this.onSort.emit(sortParams);\n }\n\n private getSortKey(column: $tableColumns): $dpMetricsSortKeys {\n switch (column) {\n case $tableColumns.dpName:\n return $dpMetricsSortKeys.digitalPropertyName;\n case $tableColumns.resolvedCount:\n return $dpMetricsSortKeys.totalResolvedFindings;\n case $tableColumns.resolvedPercentage:\n return $dpMetricsSortKeys.totalPercentageResolved;\n default:\n return null;\n }\n }\n\n private buildTabLabels(): void {\n this.tabLabels = this.riskScoreLevels.reduce((acc: Record, level: $riskScoreLevels) => {\n acc[level] = this.translateService.instant(snakeCase(level));\n return acc;\n }, {});\n }\n\n private buildTableConfig(): void {\n const columns: Record = {\n [$tableColumns.dpName]: {\n translationKey: 'website_and_app_label',\n sortingEnabled: true,\n styles: {\n width: '50%',\n maxWidth: '50%',\n },\n },\n [$tableColumns.resolvedPercentage]: {\n translationKey: 'percent_resolved',\n sortingEnabled: true,\n styles: {\n width: '25%',\n maxWidth: '25%',\n },\n },\n [$tableColumns.resolvedCount]: {\n translationKey: 'number_resolved',\n sortingEnabled: true,\n styles: {\n width: '25%',\n maxWidth: '25%',\n },\n },\n };\n\n this.tableConfig = {\n columns: columns,\n caption: this.translateService.instant('websites_apps_by_risk_management_status_details_table'),\n emptyState: {\n iconId: 'file-tray',\n title: this.translateService.instant('no_websites_apps_in_status'),\n },\n };\n }\n\n private getTableData(): ITableRow[] {\n if (SharedCommonUtility.isNullish(this.metricsData)) {\n return null;\n }\n\n return this.metricsData.map((dpMetrics: IDigitalPropertyMetrics) => ({\n originalData: dpMetrics,\n data: {\n [$tableColumns.dpName]: NgbTableUtilities.linkCell({\n text: dpMetrics[$dpMetrics.digitalProperty][$digitalProperty.name],\n noDecoration: true,\n attributes: {\n routerLink: `/${Api.dashboard}`,\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(\n dpMetrics[$dpMetrics.digitalProperty][$digitalProperty._id],\n dpMetrics[$dpMetrics.workspaceId],\n ),\n },\n }),\n [$tableColumns.resolvedPercentage]: NgbTableUtilities.textCell({\n text: this.translateService.instant(\n 'percent_formatter',\n dpMetrics[$dpMetrics.findingsMetrics][$findingsMetrics.percentageResolved][$findingCounts.total].toLocaleString(),\n ),\n }),\n [$tableColumns.resolvedCount]: NgbTableUtilities.textCell({\n text: dpMetrics[$dpMetrics.findingsMetrics]?.[$findingsMetrics.resolvedFindings][$findingCounts.total].toLocaleString(),\n }),\n },\n }));\n }\n\n private subscribeToRouteChanges(): void {\n this.subscriptions.add(\n this.router.events.pipe(filter((event: Event) => event instanceof NavigationEnd)).subscribe(() => {\n this.modalService.closeAllModals();\n }),\n );\n }\n\n private getComputedDateDescription(computedAt: Date, frequency: DashboardDataFrequency): string {\n switch (frequency) {\n case DashboardDataFrequency.quarterly:\n return this.translateService.instant('data_from_date_previous_quarter', DateUtility.prettifyDate(computedAt));\n case DashboardDataFrequency.monthly:\n return this.translateService.instant('data_from_date_previous_month', DateUtility.prettifyDate(computedAt));\n case DashboardDataFrequency.weekly:\n default:\n return this.translateService.instant('data_from_date', DateUtility.prettifyDate(computedAt));\n }\n }\n\n public ngOnInit(): void {\n this.buildTabLabels();\n this.buildTableConfig();\n this.subscribeToRouteChanges();\n this.computedDateDescription$ = combineLatest([this.computedAt$, this.frequency$]).pipe(\n map(([computedAt, frequency]: [Date, DashboardDataFrequency]) => {\n return this.getComputedDateDescription(computedAt, frequency);\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n public ngOnChanges(): void {\n this.tableData = this.getTableData();\n }\n}\n","
\n \n \n \n \n
\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IRiskMetricsChartConfig, IRiskMetricsChartData } from '../../interfaces/risk-metrics-chart.interface';\nimport { DashboardDataFrequency } from '../../../../shared/interfaces/ws-dashboard.interface';\nimport { $riskMetricsChartConfig } from '../../constants/risk-metrics-chart';\nimport { ITableEmptyState } from '../table/ngb-table/utilities/ngb-table.interface';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Component({\n selector: 'app-websites-apps-by-risk-management-status',\n templateUrl: './websites-apps-by-risk-management-status.component.html',\n})\nexport class WebsitesAppsByRiskManagementStatusComponent implements OnInit {\n @Input()\n public set chartData(data: IRiskMetricsChartData[]) {\n this.chartData$.next(data);\n }\n\n @Input()\n public set frequency(freq: DashboardDataFrequency) {\n this.frequency$.next(freq);\n }\n\n @Input()\n public showHeader: boolean;\n\n public Icons: typeof Icons = Icons;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public chartConfig$: Observable;\n public emptyStateConfig$: Observable;\n\n private chartData$: BehaviorSubject = new BehaviorSubject(null);\n private frequency$: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(private translateService: TranslateService) {}\n\n public ngOnInit(): void {\n this.chartConfig$ = combineLatest([this.chartData$, this.frequency$]).pipe(\n map(([data, frequency]: [IRiskMetricsChartData[], DashboardDataFrequency]) => {\n return {\n [$riskMetricsChartConfig.data]: data,\n [$riskMetricsChartConfig.frequency]: frequency ?? DashboardDataFrequency.weekly,\n };\n }),\n );\n\n this.emptyStateConfig$ = this.frequency$.pipe(\n map((frequency: DashboardDataFrequency) => {\n return {\n iconId: 'empty-box',\n title: this.translateService.instant('websites_apps_by_risk_management_status_empty_state_title'),\n subtitle: this.getEmptyStateTranslationDescription(frequency),\n };\n }),\n );\n }\n\n private getEmptyStateTranslationDescription(frequency: DashboardDataFrequency): string {\n const key: string =\n frequency === DashboardDataFrequency.weekly\n ? 'websites_apps_by_risk_management_status_empty_state_subtitle'\n : 'websites_apps_by_risk_management_status_empty_state_frequency_subtitle';\n return this.translateService.instant(key);\n }\n}\n","
\n
\n
\n \n
\n
maxDisplayedUsers\" class=\"position-relative\">\n \n +{{ hiddenUsers.length }}\n \n
\n
\n
\n\n\n
\n \n {{ getDisplayName(user) }}\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { of, Subscription } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { IWorkspaceUserData, IWorkspaceUserInfo } from '../../../../../shared/interfaces/workspace-user.interface';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { $workspaceUser } from '../../../../../shared/constants/workspace-user.constants';\nimport { UserService } from '../../../services/user.service';\nimport { $user, accountStatus } from '../../../../../shared/constants/user';\nimport { LoadErrorHandler } from '../../../services/load-error-handler';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-workspace-users-list',\n templateUrl: './users-list.component.html',\n styleUrls: ['./users-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkspaceUsersListComponent implements OnDestroy, OnChanges {\n private subscription: Subscription;\n\n @Output() public onStaffUsersFetch: EventEmitter;\n @Input() public workspaceId: string;\n\n public maxDisplayedUsers: Readonly;\n public usersCount: number;\n public usersToDisplay?: IWorkspaceUserData[];\n public hiddenUsers?: IWorkspaceUserData[];\n public $user: typeof $user;\n\n constructor(\n private userService: UserService,\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n private loadErrorHandler: LoadErrorHandler,\n ) {\n this.onStaffUsersFetch = new EventEmitter();\n this.$user = $user;\n this.subscription = new Subscription();\n this.usersCount = 0;\n this.maxDisplayedUsers = 5;\n }\n\n private onGetWorkspaceUsersSuccess(response: IWorkspaceUserInfo[]): void {\n const staffUsers: IWorkspaceUserData[] = [];\n const usersData: IWorkspaceUserData[] = response\n .filter((user: IWorkspaceUserInfo): boolean => {\n const res: boolean =\n Array.isArray(user.roles) === false ||\n user.roles.filter((role: { name: string }): boolean => role.name === 'workspaceStaff').length === 0;\n if (res === false) {\n staffUsers.push(user[$workspaceUser.user]);\n }\n return res;\n })\n .map((user: IWorkspaceUserInfo) => user[$workspaceUser.user])\n .filter((user: IWorkspaceUserData): boolean => SharedCommonUtility.getTypeOf(user) === 'object');\n\n this.onStaffUsersFetch.emit(staffUsers);\n\n this.usersCount = usersData.length;\n\n this.usersToDisplay = usersData.slice(0, this.maxDisplayedUsers);\n this.hiddenUsers = usersData.splice(this.maxDisplayedUsers);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private getData(): void {\n this.subscription.add(\n // TODO: EAP-28329, We need a new API to load workspace users in Admin portal\n of([]).subscribe({\n next: this.onGetWorkspaceUsersSuccess.bind(this),\n error: (error: HttpErrorResponse) => {\n this.loadErrorHandler.handleError('unable_to_get_all_workspace_users', error, WorkspaceUsersListComponent.name);\n },\n }),\n );\n }\n\n public getUserAvatarUrl(user: IWorkspaceUserData): string {\n return this.userService.getAvatar(user);\n }\n\n public getDisplayName(user: IWorkspaceUserData): string {\n if (user[$user.accountStatus] === accountStatus.active) {\n return user[$user.displayName];\n }\n\n return `${user[$user.displayName]} (${this.translateService.instant('status_inactive')})`;\n }\n\n public focusUsersListPopover(): void {\n (document.querySelector('.popover-body > div') as HTMLButtonElement).focus();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.workspaceId === 'undefined') {\n return;\n }\n\n this.getData();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","export enum alertType {\n danger = 'danger',\n info = 'info',\n success = 'success',\n warning = 'warning',\n}\n","import { AuditFindingQAStatus } from '../../../shared/constants/audit-finding';\n\nexport enum severityColors {\n critical = '#b10606',\n high = '#b85000',\n low = '#0552b8',\n}\n\nexport enum scoreRangeLabels {\n low = 'low',\n mid = 'mid',\n high = 'high',\n}\n\nexport const ScoreRanges: Readonly> = Object.freeze({\n [scoreRangeLabels.low]: [0, 49],\n [scoreRangeLabels.mid]: [50, 79],\n [scoreRangeLabels.high]: [80, 100],\n});\n\nexport const ScoreRangeColors: Readonly> = Object.freeze({\n [scoreRangeLabels.low]: '#b10606',\n [scoreRangeLabels.mid]: '#b85000',\n [scoreRangeLabels.high]: '#20652a',\n});\n\nexport const RemediationChartColors: Readonly>> = Object.freeze({\n [AuditFindingQAStatus.dismissed]: '#B10606',\n [AuditFindingQAStatus.fixed]: '#298335',\n [AuditFindingQAStatus.notFixed]: '#B0008E',\n [AuditFindingQAStatus.open]: '#555555',\n [AuditFindingQAStatus.partiallyFixed]: '#002F57',\n});\n\nexport enum findingsGraphSectionLabels {\n pass = 'pass',\n fail = 'fail',\n warn = 'warn',\n notChecked = 'notChecked',\n}\n\nexport const ReportFindingsChartColors: Readonly>> = Object.freeze({\n [findingsGraphSectionLabels.pass]: '#298335',\n [findingsGraphSectionLabels.fail]: '#B0008E',\n [findingsGraphSectionLabels.warn]: '#002f57',\n [findingsGraphSectionLabels.notChecked]: '#555',\n});\n\nexport const DECAL_COLOR: string = 'rgba(255, 255, 255, 0.8)';\nexport const TOOLTIP_BACKGROUND_COLOR: string = '#000000';\nexport const TOOLTIP_TEXT_COLOR: string = '#ffffff';\n","export enum validationError {\n invalidFileType = 'invalidFileType',\n invalidFileTypes = 'invalidFileTypes',\n attachmentQuantityExceedsLimit = 'attachmentQuantityExceedsLimit',\n attachmentSizeExceedsLimit = 'attachmentSizeExceedsLimit',\n digitalPropertyKey = 'digitalPropertyKey',\n digitalPropertyFieldWorkspaceDuplicate = 'digitalPropertyFieldWorkspaceDuplicate',\n masterLibraryRuleIdDuplicate = 'masterLibraryRuleIdDuplicate',\n customSeveritiesLabelDuplicate = 'customSeveritiesLabelDuplicate',\n userWayWebsiteDuplicate = 'userWayWebsiteDuplicate',\n notMatchDomain = 'notMatchDomain',\n urlInvalid = 'urlInvalid',\n in = 'in',\n maxlength = 'maxlength',\n datesValidator = 'datesValidator',\n charactersOnly = 'charactersOnly',\n invalidJSON = 'invalidJSON',\n invalidSubdomain = 'invalidSubdomain',\n invalidDate = 'invalidDate',\n minDate = 'minDate',\n maxDate = 'maxDate',\n alphaNumericCharactersOnly = 'alphaNumericCharactersOnly',\n nonEmojiCharactersOnly = 'nonEmojiCharactersOnly',\n designRuleIdPattern = 'designRuleIdPattern',\n invalidInteger = 'invalidInteger',\n unique = 'unique',\n required = 'required',\n invalidZeroInt = 'invalidZeroInt',\n}\n\nexport const DEFAULT_ENTRY_LIMITS: readonly number[] = Object.freeze([5, 10, 20]);\nexport const LARGE_ENTRY_LIMITS: readonly number[] = Object.freeze([10, 20, 50, 100]);\nexport const FINDING_TABLE_ENTRY_LIMITS: readonly number[] = Object.freeze([25, 50, 100]);\nexport const DEFAULT_PAGINATION_MAX_SIZE: number = 3;\n","import { IPoint } from '../interfaces/image-highlight.interface';\n\nexport enum HighlightModes {\n add = 'add',\n view = 'view',\n edit = 'edit',\n}\n\nexport enum ImageHighlightModes {\n add = 'add',\n view = 'view',\n edit = 'edit',\n remove = 'remove',\n}\n\nexport enum ImageHighlightAction {\n Add = 'add',\n Edit = 'edit',\n Delete = 'delete',\n Paste = 'paste',\n}\n\nexport enum ImageHighlightStates {\n noop = 'noop',\n adding = 'adding',\n resizing = 'resizing',\n moving = 'moving',\n}\n\nexport enum ZoomDirection {\n in = 'in',\n out = 'out',\n}\n\nexport const ZOOM_FACTORS: readonly number[] = Object.freeze([0.3, 0.5, 0.75, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5]);\n\nexport enum BoxPositions {\n topLeft = 'topLeft',\n topRight = 'topRight',\n bottomLeft = 'bottomLeft',\n bottomRight = 'bottomRight',\n}\n\nexport const MIN_HIGHLIGHT_SIZE: number = 20;\nexport const DEFAULT_HIGHLIGHT_WIDTH: number = 100;\nexport const DEFAULT_HIGHLIGHT_HEIGHT: number = 100;\nexport const DEFAULT_HIGHLIGHT_MARGIN: number = 5;\nexport const DEFAULT_HIGHLIGHT_POSITION: Readonly = Object.freeze({ x: 5, y: 5 });\n\nexport enum MovementDirection {\n ArrowUp = 'ArrowUp',\n ArrowDown = 'ArrowDown',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight',\n ArrowUpLeft = 'ArrowUpLeft',\n ArrowUpRight = 'ArrowUpRight',\n ArrowDownLeft = 'ArrowDownLeft',\n ArrowDownRight = 'ArrowDownRight',\n}\n\nexport enum MovementSpeed {\n slow = 1,\n fast = 10,\n}\n\nexport enum EventKeys {\n Meta = 'Meta',\n}\n","export enum $paginationParams {\n sortBy = 'sortBy',\n direction = 'direction',\n pageNumber = 'pageNumber',\n pageSize = 'pageSize',\n}\n","export enum $riskMetricsChartData {\n dpCountsByRiskLevel = 'dpCountsByRiskLevel',\n computedAt = 'computedAt',\n}\n\nexport enum $riskMetricsChartConfig {\n data = 'data',\n frequency = 'frequency',\n}\n","export const SCAN_URLS_SIZE_LIMIT_ERROR_KEY: string = 'exceedMaxNumberOfUrls';\n","export const MAX_EMAILS_LIMIT_ERROR_KEY: string = 'maxEmails';\n\nexport enum $userCreationPageParams {\n newUserIds = 'newUserIds',\n}\n","export enum $viewIssuesParams {\n dismissedFilter = 'dismissedFilter',\n advancedSearch = 'advancedSearch',\n issueId = 'issueId',\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Directive({\n selector: '[appAriaLabelSort]',\n})\nexport class AriaLabelSortDirective {\n @Input()\n appAriaLabelSort: string;\n @Input()\n sortColumn: string;\n @Input()\n sortColumnExtra: string;\n\n @HostBinding('attr.aria-label') get ariaLabel(): string {\n const sortCol: string = this.translateService.instant(this.sortColumn, this.sortColumnExtra);\n const sortDir: string = this.translateService.instant(this.appAriaLabelSort ?? 'none').toLowerCase();\n const sortTxt: string = this.translateService.instant('label_sort').toLowerCase();\n return `${sortCol} ${sortDir} ${sortTxt}`;\n }\n\n constructor(private translateService: TranslateService) {}\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\n\n@Directive({\n selector: 'th,td[appAriaSort]',\n exportAs: 'appAriaSort',\n})\nexport class AriaSortDirective implements OnChanges {\n @Input()\n appAriaSort: $sortingOrder | 'asc' | 'desc' | 'all';\n\n @HostBinding('attr.aria-sort') ariaSort: string = null;\n\n constructor() {}\n\n ngOnChanges(): void {\n if (this.appAriaSort === $sortingOrder.asc) {\n this.ariaSort = 'ascending';\n return;\n } else if (this.appAriaSort === $sortingOrder.desc) {\n this.ariaSort = 'descending';\n return;\n }\n\n this.ariaSort = null;\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, HostListener, NgZone, OnDestroy } from '@angular/core';\nimport { Options as FocusTrapOptions } from 'focus-trap';\nimport { isNull } from 'lodash';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Directive({\n selector: 'details[appCloseActionMenu]',\n})\nexport class CloseActionMenuDirective implements OnDestroy {\n private menuItemSelector: string = '*[role=\"menu\"] > *[role=\"menuitem\"] > *:not([disabled], [tabindex=\"-1\"])';\n\n constructor(\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private zone: NgZone,\n ) {}\n\n @HostListener('document:keydown.escape')\n public closeDropdown(): void {\n this.elRef.nativeElement.open = false;\n }\n\n @HostListener('document:click', ['$event'])\n public handleOutsideClick(event: MouseEvent): void {\n if (!this.elRef.nativeElement.contains(event.target as Node)) {\n this.closeDropdown();\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n public handleArrowUp(event: KeyboardEvent): void {\n this.handleArrowKeys(event, (activeElementIndex: number, menuItemsLength: number) =>\n activeElementIndex === 0 ? menuItemsLength - 1 : activeElementIndex - 1,\n );\n }\n\n @HostListener('keydown.arrowDown', ['$event'])\n public handleArrowDown(event: KeyboardEvent): void {\n this.handleArrowKeys(event, (activeElementIndex: number, menuItemsLength: number) =>\n activeElementIndex === menuItemsLength - 1 ? 0 : activeElementIndex + 1,\n );\n }\n\n @HostListener('toggle', ['$event'])\n public toggle(): void {\n if (this.isOpen) {\n this.zone.runOutsideAngular(() => {\n const options: FocusTrapOptions = { allowOutsideClick: true };\n\n if (this.initialFocusExistsOnPage()) {\n options.initialFocus = this.menuItemSelector;\n }\n\n setTimeout(() => {\n CommonUtility.activateFocusTrap(this.elRef.nativeElement, options);\n }, 0);\n });\n } else {\n CommonUtility.deactivateFocusTrap();\n }\n\n this.cdr.detectChanges();\n }\n\n public ngOnDestroy(): void {\n CommonUtility.deactivateFocusTrap();\n }\n\n private get isOpen(): boolean {\n return this.elRef.nativeElement.open;\n }\n\n private initialFocusExistsOnPage(): boolean {\n return !isNull(this.elRef.nativeElement.querySelector(this.menuItemSelector));\n }\n\n private handleArrowKeys(\n event: KeyboardEvent,\n indexToFocusThunk: (activeElementIndex: number, menuItemsLength: number) => number,\n ): void {\n if (this.isOpen) {\n event.preventDefault();\n\n if (SharedCommonUtility.notNullish(document.activeElement)) {\n const menuItems: Element[] = Array.from(this.elRef.nativeElement.querySelectorAll(this.menuItemSelector));\n const activeElIndex: number = menuItems.indexOf(document.activeElement);\n\n if (menuItems.length > 0 && activeElIndex > -1) {\n const itemToFocusIndex: number = indexToFocusThunk(activeElIndex, menuItems.length);\n const itemToFocus: HTMLElement = menuItems[itemToFocusIndex] as HTMLElement;\n CommonUtility.setFocusToElement(null, itemToFocus);\n }\n\n this.cdr.detectChanges();\n }\n }\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[appCollapse]',\n})\nexport class CollapseDirective {\n @HostBinding('class.hide')\n public isCollapsing: boolean;\n\n @Input()\n public set appCollapse(value: boolean) {\n if (value) {\n this.hide();\n return;\n }\n\n this.show();\n }\n constructor() {}\n\n public hide(): void {\n this.isCollapsing = true;\n }\n\n public show(): void {\n this.isCollapsing = false;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[appCtrlKey]',\n})\nexport class CtrlKeyDirective implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n @Output() ctrlV: EventEmitter = new EventEmitter();\n @Output() ctrlC: EventEmitter = new EventEmitter();\n @Output() ctrlS: EventEmitter = new EventEmitter();\n @Output() ctrlZ: EventEmitter = new EventEmitter();\n @Output() ctrlY: EventEmitter = new EventEmitter();\n @Input() public document: boolean = false;\n @Input() public stopPropagation: boolean = true;\n\n private callEvent(event: KeyboardEvent): void {\n if (!event.ctrlKey && !event.metaKey) {\n return;\n }\n\n const methodName: string = `onCtrl${event.key.toUpperCase()}`;\n\n if (typeof this[methodName] !== 'function') {\n return;\n }\n\n (this[methodName] as Function).call(this, event);\n }\n\n private prepareEvent(event: KeyboardEvent): void {\n event.preventDefault();\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n public onCtrlV(event: KeyboardEvent): void {\n if (this.ctrlV.observers.length === 0) {\n return;\n }\n this.prepareEvent(event);\n this.ctrlV.emit();\n }\n\n public onCtrlC(event: KeyboardEvent): void {\n if (this.ctrlC.observers.length === 0) {\n return;\n }\n this.prepareEvent(event);\n this.ctrlC.emit();\n }\n\n public onCtrlS(event: KeyboardEvent): void {\n if (this.ctrlS.observers.length === 0) {\n return;\n }\n this.prepareEvent(event);\n this.ctrlS.emit();\n }\n\n public onCtrlZ(event: KeyboardEvent): void {\n if (this.ctrlZ.observers.length === 0) {\n return;\n }\n this.prepareEvent(event);\n this.ctrlZ.emit();\n }\n\n public onCtrlY(event: KeyboardEvent): void {\n if (this.ctrlY.observers.length === 0) {\n return;\n }\n this.prepareEvent(event);\n this.ctrlY.emit();\n }\n\n constructor(private el: ElementRef) {\n this.subscriptions = new Subscription();\n }\n\n public ngOnInit(): void {\n const el: HTMLElement | Document = this.document ? document : this.el.nativeElement;\n\n this.subscriptions.add(fromEvent(el, 'keydown').subscribe({ next: this.callEvent.bind(this) }));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { ResourceUtility } from '../../utility/resource.utility';\nimport { NotificationPosition } from '../../models/notification.model';\nimport { NotificationService } from '../../services/notification.service';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Directive({\n selector: '[appDownloadLink]',\n})\nexport class DownloadLinkDirective implements OnInit, OnDestroy {\n private subscription: Subscription;\n\n // Determines whether the directive is active and will intercept download links to the secure download APIs\n // Empty string is the default value, and it corresponds to being true.\n @Input() public appDownloadLink: boolean | '';\n\n constructor(\n private element: ElementRef,\n private httpClient: HttpClient,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n ) {\n this.subscription = new Subscription();\n }\n\n /**\n * Returns a relative URL.\n */\n private get url(): string {\n return this.element.nativeElement.pathname;\n }\n\n private secureDownload(event: MouseEvent): void {\n if (this.appDownloadLink === false) {\n return;\n }\n event.preventDefault();\n\n this.subscription.add(\n this.httpClient\n .get(this.url, {\n observe: 'response',\n responseType: 'arraybuffer',\n })\n .subscribe({\n next: (response: HttpResponse) => {\n ResourceUtility.downloadResponse(response);\n },\n error: () => {\n const errorMessage: string = this.translateService.instant('failed_download_file');\n this.notificationService.error(errorMessage, NotificationPosition.Toast);\n },\n }),\n );\n }\n\n public ngOnInit(): void {\n this.element.nativeElement.addEventListener('click', this.secureDownload.bind(this));\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Directive, OnInit, OnDestroy, TemplateRef, ViewContainerRef, Input } from '@angular/core';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\n\nimport { FeatureFlagService } from '../../services/feature-flag/feature-flag.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\n\n@Directive({\n selector: '[featureFlag]',\n})\nexport class FeatureFlagDirective implements OnInit, OnDestroy {\n /**\n * This class directive can be used to evaluate a feature flag in the template level.\n */\n private _flag: string;\n private _negate: boolean;\n private isHidden: boolean;\n private subscriptions: Subscription;\n\n constructor(\n private featureFlagService: FeatureFlagService,\n private tplRef: TemplateRef,\n private viewContainerRef: ViewContainerRef,\n ) {\n this.subscriptions = new Subscription();\n this.isHidden = true;\n this._negate = false;\n }\n\n @Input()\n public set featureFlag(flag: string) {\n if (SharedCommonUtility.isNullishOrEmpty(flag)) {\n throw new Error('Feature flag key is required.');\n }\n\n const isNegatedFlag: boolean = flag[0] === '!';\n if (isNegatedFlag) {\n const flagKey: string = flag.slice(1);\n if (!Object.values(FeatureFlagCollection).includes(flagKey as FeatureFlagCollection)) {\n throw new Error(`${flagKey} is not a valid feature flag`);\n }\n this._negate = true;\n this._flag = flagKey;\n } else {\n if (!Object.values(FeatureFlagCollection).includes(flag as FeatureFlagCollection)) {\n throw new Error(`${flag} is not a valid feature flag`);\n }\n\n this._flag = flag;\n }\n }\n\n private updateView(val: VariationValue): void {\n if (!val) {\n this.viewContainerRef.clear();\n this.isHidden = true;\n return;\n }\n\n if (this.isHidden) {\n this.viewContainerRef.clear();\n this.viewContainerRef.createEmbeddedView(this.tplRef);\n this.isHidden = false;\n }\n }\n\n private checkValidity(): void {\n this.subscriptions.add(\n this.featureFlagService.variation$(this._flag, false).subscribe({\n next: (val: VariationValue) => this.updateView(this._negate ? !val : val),\n }),\n );\n }\n\n public ngOnInit(): void {\n this.checkValidity();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Directive, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appFileDrop]',\n})\nexport class FileDropDirective {\n @Output() filesDropped: EventEmitter = new EventEmitter();\n\n constructor() {}\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const transfer: DataTransfer = event.dataTransfer;\n if (Array.from(transfer.files).length !== 0) {\n this.filesDropped.emit(Array.from(transfer.files));\n }\n }\n\n @HostListener('dragover', ['$event'])\n onDragOver(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[appFilterHost]',\n})\nexport class FilterHostDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nconst FOCUSABLE_ELEMENTS: string[] = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'];\nconst INVALID_ATTRIBUTES: string = [':not([tabindex=\"-1\"])', ':not([disabled=true])'].join('');\nconst FOCUSABLE_QUERY: string = FOCUSABLE_ELEMENTS.map(\n (focusableElement: string) => `${focusableElement}${INVALID_ATTRIBUTES}`,\n).join(',');\n\n@Directive({\n selector: '[appFocusFirstFocusableElement]',\n})\nexport class FocusFirstFocusableElementDirective implements AfterViewInit {\n constructor(private el: ElementRef) {}\n\n public ngAfterViewInit(): void {\n const element: HTMLElement = this.el.nativeElement.querySelector(FOCUSABLE_QUERY);\n if (SharedCommonUtility.notNullish(element)) {\n element.focus();\n }\n }\n}\n","import { Directive, Input, EventEmitter, ElementRef, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\n@Directive({\n selector: '[appFocus]',\n})\nexport class FocusDirective implements OnInit, OnDestroy {\n @Input('appFocus') focusEvent: EventEmitter;\n\n private subscriptions: Subscription;\n\n constructor(@Inject(ElementRef) private element: ElementRef) {\n this.subscriptions = new Subscription();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.focusEvent?.pipe(delay(0)).subscribe((): void => {\n this.element.nativeElement.focus();\n }),\n );\n }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input, select, textarea',\n})\nexport class NativeElementInjectorDirective implements OnInit {\n constructor(\n private el: ElementRef,\n private control: NgControl,\n ) {}\n\n public ngOnInit(): void {\n if (typeof this.control.control === 'undefined') {\n return;\n }\n\n (this.control.control as any).nativeElement = this.el.nativeElement;\n }\n}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { UserService } from '../../services/user.service';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { AclService, AclSecurityAdapter } from '../../services/acl.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { IRequiredSecurity } from '../../../../shared/interfaces/security.interface';\nimport { SecurityEntityLevel } from '../../../../shared/constants/security-group';\nimport { AppConfigService } from '../../services/app-config.service';\n\n@Directive({\n selector: '[appHasPermissions]',\n})\nexport class HasPermissionsDirective implements OnInit, OnDestroy {\n private currentUser: IUserServerResponse;\n private requiredSecurity: IRequiredSecurity;\n private isHidden: boolean;\n private readonly subscriptions: Subscription;\n\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private userService: UserService,\n private aclService: AclService,\n private appConfigServices: AppConfigService,\n ) {\n this.isHidden = true;\n this.subscriptions = new Subscription();\n }\n\n private updateView(): void {\n if (this.checkPermission()) {\n if (this.isHidden) {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.isHidden = false;\n }\n } else {\n this.isHidden = true;\n this.viewContainer.clear();\n }\n }\n\n private checkPermission(): boolean {\n if (SharedCommonUtility.isNullish(this.currentUser)) {\n return false;\n }\n\n const adapter: AclSecurityAdapter = this.aclService\n .createAccessCheck(this.currentUser)\n .useFunctionalActions(this.requiredSecurity?.functionalActions);\n\n const isAdmin: boolean = !this.appConfigServices.isTenantEnabled();\n const allowAdminAccess: boolean =\n this.requiredSecurity?.entityLevel !== SecurityEntityLevel.admin && this.requiredSecurity?.allowAdminAccess;\n\n if (isAdmin && allowAdminAccess) {\n adapter.useAdmin();\n } else {\n switch (this.requiredSecurity?.entityLevel) {\n case SecurityEntityLevel.admin:\n case SecurityEntityLevel.tenant:\n adapter.useEntityLevel();\n break;\n case SecurityEntityLevel.digitalProperty:\n adapter.useWorkspaceFromUser().useDigitalPropertyFromUser();\n break;\n default:\n adapter.useWorkspaceFromUser();\n break;\n }\n }\n\n return adapter.check();\n }\n\n @Input()\n public set appHasPermissions(permissions: IRequiredSecurity) {\n this.requiredSecurity = permissions;\n\n this.updateView();\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.userService.userDataChanged$.subscribe((user: IUserServerResponse) => {\n this.currentUser = user;\n this.updateView();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport hljs from 'highlight.js/lib/core';\nimport hjjs_xml from 'highlight.js/lib/languages/xml';\nimport hljs_xquery from 'highlight.js/lib/languages/xquery';\nimport hljs_js from 'highlight.js/lib/languages/javascript';\nimport { LinkifyHtmlPipe } from '../../pipes/linkify-html.pipe';\n\n@Directive({\n selector: '[appHighlight]',\n})\nexport class HighlightDirective implements OnChanges {\n @Input() public type: string;\n @Input() public appHighlight: string;\n @Input() public linkify: boolean;\n\n constructor(private el: ElementRef) {\n hljs.registerLanguage('xml', hjjs_xml);\n hljs.registerLanguage('xquery', hljs_xquery);\n hljs.registerLanguage('javascript', hljs_js);\n }\n\n public ngOnChanges(): void {\n const html: string = hljs.highlight(this.appHighlight ?? '', { language: this.type }).value;\n this.el.nativeElement.innerHTML = this.linkify ? new LinkifyHtmlPipe().transform(html) : html;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\nimport { CommonUtility } from '../../utility/common.utility';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[type=\"number\"]',\n})\nexport class InputOnlyNumbersDirective {\n @HostListener('keypress', ['$event'])\n public keypressEvent(event: KeyboardEvent): void {\n const charCode: number = CommonUtility.getKeyCode(event);\n\n if (charCode < 48 || charCode > 57) {\n event.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n public pasteEvent(event: ClipboardEvent): void {\n const data: number = Number(event.clipboardData.getData('text'));\n\n if (Number.isNaN(data)) {\n event.preventDefault();\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Renderer2 } from '@angular/core';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\n@Directive({\n selector: 'div.card',\n})\n// TODO: EAP-26271 deprecate this directive\nexport class NewNavCardDirective implements AfterViewInit {\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n private updateView(): void {\n const h1Element: HTMLElement = this.elementRef.nativeElement.querySelector('div.card-header h1');\n if (SharedCommonUtility.notNullish(h1Element)) {\n this.renderer.addClass(this.elementRef.nativeElement, 'new-nav-card');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'new-nav-card');\n }\n }\n\n public ngAfterViewInit(): void {\n this.updateView();\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { KEYS } from '../../../../shared/constants/keys';\n\n@Directive({\n selector: '[appNgbNav]',\n exportAs: 'appNgbNav',\n})\nexport class NgbNavDirective implements AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n\n constructor(\n private element: ElementRef,\n private route: ActivatedRoute,\n ) {\n this.subscriptions = new Subscription();\n }\n\n private resetTabs(): void {\n const tabsList: HTMLElement = this.element.nativeElement;\n const allTabs: NodeListOf = Array.prototype.slice.call(tabsList.querySelectorAll('a'), 0);\n\n const resetTab = (tab: HTMLAnchorElement): void => {\n tab.setAttribute('tabindex', '-1');\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('aria-expanded', 'false');\n };\n\n allTabs.forEach(resetTab);\n }\n\n private setActiveTab(tab: HTMLAnchorElement): void {\n tab.setAttribute('tabindex', '0');\n tab.setAttribute('aria-selected', 'true');\n tab.setAttribute('aria-expanded', 'true');\n }\n\n ngAfterViewInit(): void {\n const tabsList: HTMLElement = this.element.nativeElement;\n const allTabs: HTMLAnchorElement[] = Array.prototype.slice.call(tabsList.querySelectorAll('a'), 0);\n\n const applyTabChange = (selectedId: string): void => {\n if (typeof selectedId === 'string' && selectedId.length > 0) {\n const findTab = (tab: HTMLAnchorElement): boolean => {\n return tab.hash.replace('#', '') === selectedId;\n };\n\n const foundTabIndex: number = allTabs.findIndex(findTab);\n\n if (foundTabIndex === -1) {\n return;\n }\n\n this.resetTabs();\n this.setActiveTab(allTabs[foundTabIndex]);\n } else {\n const selected: HTMLAnchorElement = allTabs.find((a: HTMLAnchorElement) => a.getAttribute('aria-selected') === 'true');\n if (typeof selected === 'undefined') {\n return;\n }\n this.resetTabs();\n this.setActiveTab(selected);\n }\n };\n\n if (this.route.fragment) {\n this.subscriptions.add(this.route.fragment.subscribe(applyTabChange));\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private goToPreviousTab(tab: HTMLAnchorElement): void {\n const previous: Element = tab.closest('a').previousElementSibling;\n\n if (previous === null) {\n return;\n }\n\n this.resetTabs();\n this.setActiveTab(previous as HTMLAnchorElement);\n CommonUtility.setFocusToElement(null, previous as HTMLAnchorElement);\n }\n\n private goToNextTab(tab: HTMLAnchorElement): void {\n const next: Element = tab.closest('a').nextElementSibling;\n\n if (next === null) {\n return;\n }\n\n this.resetTabs();\n this.setActiveTab(next as HTMLAnchorElement);\n CommonUtility.setFocusToElement(null, next as HTMLAnchorElement);\n }\n\n @HostListener('keydown', ['$event'])\n public keydownEvent(event: Event): void {\n const target: HTMLElement = (event.target as HTMLElement) || (event.srcElement as any);\n\n if (event.type === 'keydown') {\n if ((event as KeyboardEvent).keyCode === KEYS.LEFT) {\n this.goToPreviousTab(target as HTMLAnchorElement);\n event.preventDefault();\n } else if ((event as KeyboardEvent).keyCode === KEYS.RIGHT) {\n this.goToNextTab(target as HTMLAnchorElement);\n event.preventDefault();\n } else if ((event as KeyboardEvent).keyCode === KEYS.SPACE) {\n target.click();\n event.preventDefault();\n }\n\n return;\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\nconst DEFAULT_DISABLED_STATE_TIMEOUT = 500; // in ms\n\n@Directive({\n selector: '[appNoDoubleActivate]',\n})\nexport class NoDoubleActivateDirective {\n @HostListener('click', ['$event'])\n public clickEvent(event: Event): void {\n const eventTarget: HTMLElement = event.target || (event.srcElement as any);\n\n const setDisabledState = (): void => {\n eventTarget.setAttribute('disabled', 'disabled');\n };\n\n const removeDisabledState = (): void => {\n eventTarget.removeAttribute('disabled');\n };\n\n window.setTimeout(setDisabledState);\n window.setTimeout(removeDisabledState, DEFAULT_DISABLED_STATE_TIMEOUT);\n }\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { AfterViewInit, Directive, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { KEYS } from '../../../../shared/constants/keys';\nimport { CommonUtility } from '../../utility/common.utility';\n\n@Directive({\n selector: '[appTabs]',\n})\nexport class TabsDirective implements AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n\n constructor(\n private element: ElementRef,\n private route: ActivatedRoute,\n ) {\n this.subscriptions = new Subscription();\n }\n\n private resetTabs(): void {\n const tabsList: HTMLElement = this.element.nativeElement;\n const allTabs: NodeListOf = Array.prototype.slice.call(tabsList.querySelectorAll('a'), 0);\n\n const resetTab = (tab: HTMLAnchorElement): void => {\n const tabId: string = tab.hash.replace('#', '') || tab.getAttribute('aria-controls');\n const tabContent: HTMLElement = document.getElementById(tabId);\n\n tab.setAttribute('tabindex', '-1');\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('aria-expanded', 'false');\n\n tab.closest('li').classList.remove('selected-tab');\n\n if (tabContent) {\n tabContent.classList.remove('hide');\n tabContent.classList.add('hide');\n tabContent.removeAttribute('tabindex');\n }\n };\n\n allTabs.forEach(resetTab);\n }\n\n private setActiveTab(tab: HTMLAnchorElement): void {\n const tabId: string = tab.hash.replace('#', '') || tab.getAttribute('aria-controls');\n const tabContent: HTMLElement = document.getElementById(tabId);\n\n tab.setAttribute('tabindex', '0');\n tab.setAttribute('aria-selected', 'true');\n tab.setAttribute('aria-expanded', 'true');\n\n tab.closest('li').classList.add('selected-tab');\n\n if (tabContent) {\n tabContent.classList.remove('hide');\n tabContent.setAttribute('tabindex', '0');\n }\n }\n\n private goToPreviousTab(tab: HTMLAnchorElement): void {\n const previousLi: Element = tab.closest('li').previousElementSibling;\n\n if (previousLi === null) {\n return;\n }\n\n const previousTab: HTMLAnchorElement = previousLi.querySelector('a');\n\n this.resetTabs();\n this.setActiveTab(previousTab);\n CommonUtility.setFocusToElement(null, previousTab);\n }\n\n private goToNextTab(tab: HTMLAnchorElement): void {\n const nextLi: Element = tab.closest('li').nextElementSibling;\n\n if (nextLi === null) {\n return;\n }\n\n const nextTab: HTMLAnchorElement = nextLi.querySelector('a');\n\n this.resetTabs();\n this.setActiveTab(nextTab);\n CommonUtility.setFocusToElement(null, nextTab);\n }\n\n public ngAfterViewInit(): void {\n const tabsList: HTMLElement = this.element.nativeElement;\n const allTabs: HTMLAnchorElement[] = Array.prototype.slice.call(tabsList.querySelectorAll('a'), 0);\n\n const applyTabChange = (selectedId: string): void => {\n if (typeof selectedId === 'string' && selectedId.length > 0) {\n const findTab = (tab: HTMLAnchorElement): boolean => {\n return tab.hash.replace('#', '') === selectedId;\n };\n\n const foundTabIndex: number = allTabs.findIndex(findTab);\n\n if (foundTabIndex === -1) {\n return;\n }\n\n this.resetTabs();\n this.setActiveTab(allTabs[foundTabIndex]);\n } else {\n const selected: HTMLAnchorElement = allTabs.find((a: HTMLAnchorElement) => a.getAttribute('aria-selected') === 'true');\n if (typeof selected === 'undefined') {\n return;\n }\n this.resetTabs();\n this.setActiveTab(selected);\n }\n };\n\n if (this.route.fragment) {\n this.subscriptions.add(this.route.fragment.subscribe(applyTabChange));\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n public clickEvent(event: Event): void {\n let target: HTMLElement = (event.target as HTMLElement) || (event.srcElement as any);\n\n if (event.type === 'keydown') {\n if ((event as KeyboardEvent).keyCode === KEYS.LEFT) {\n this.goToPreviousTab(target as HTMLAnchorElement);\n event.preventDefault();\n } else if ((event as KeyboardEvent).keyCode === KEYS.RIGHT) {\n this.goToNextTab(target as HTMLAnchorElement);\n event.preventDefault();\n }\n\n return;\n }\n\n if ([target.nodeName.toLowerCase(), target.parentNode.nodeName.toLowerCase()].includes('a') === false) {\n return;\n }\n\n if (target.parentNode.nodeName.toLowerCase() === 'a') {\n target = target.parentNode as HTMLElement;\n }\n\n this.resetTabs();\n this.setActiveTab(target as HTMLAnchorElement);\n CommonUtility.setFocusToElement(null, target);\n\n event.preventDefault();\n }\n}\n","import { Component, OnInit, OnDestroy, ElementRef, Input, HostListener } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nimport { MessageBusService, MessageBusChannels } from '../../services/message-bus.service';\nimport { CommonUtility } from '../../utility/common.utility';\n\nexport const tooltipId: string = 'tooltipArea';\n\nenum arrowPosition {\n top = 'top',\n bottom = 'bottom',\n}\n@Component({\n selector: 'app-tooltip-component',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n})\nexport class TooltipComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private readonly adjustingHorizontal: number;\n\n public text: string;\n public isVisibleByButton: boolean = false;\n public isVisibleByWindow: boolean = false;\n public top: number;\n public left: number;\n public arrowOffset: number;\n public arrowPositionVertical: string;\n\n public tooltipId: string = tooltipId;\n\n @Input() public zIndex: number;\n\n constructor(\n private messageBusService: MessageBusService,\n private router: Router,\n private elementRef: ElementRef,\n ) {\n this.subscriptions = new Subscription();\n this.text = '';\n this.arrowOffset = 0;\n this.arrowPositionVertical = arrowPosition.bottom;\n this.adjustingHorizontal = 9; // 7 border width of arrow + 2 border width of left and right\n }\n\n @HostListener('mouseover', ['$event'])\n public onMouseover(): void {\n if (SharedCommonUtility.isNullishOrEmpty(this.text)) {\n return;\n }\n this.isVisibleByWindow = true;\n }\n\n @HostListener('mouseout')\n public onMouseOut(): void {\n this.isVisibleByWindow = false;\n this.hideTooltip();\n }\n\n private adjustPositionToViewport(target: HTMLElement): void {\n const viewportWidth: number = document.documentElement.clientWidth || window.innerWidth;\n const viewportHeight: number = document.documentElement.clientHeight || window.innerHeight;\n\n const elementSizeAndPosition: ClientRect | DOMRect = target.getBoundingClientRect();\n\n const tooltipElement: HTMLElement = this.elementRef.nativeElement.querySelector('[role=\"tooltip\"]');\n const tooltipSizeAndPosition: ClientRect | DOMRect = tooltipElement.getBoundingClientRect();\n const horizontalScroll: number = tooltipSizeAndPosition.left + tooltipSizeAndPosition.width - viewportWidth;\n\n if (tooltipSizeAndPosition.left < 0) {\n this.left = elementSizeAndPosition.left + target.clientWidth / 2 - this.adjustingHorizontal;\n } else if (tooltipSizeAndPosition.left + tooltipElement.clientWidth > viewportWidth) {\n this.left = tooltipSizeAndPosition.left - horizontalScroll - this.adjustingHorizontal * 2;\n }\n\n if (tooltipSizeAndPosition.top < 0) {\n this.top = elementSizeAndPosition.top + elementSizeAndPosition.height;\n this.arrowPositionVertical = arrowPosition.top;\n } else if (elementSizeAndPosition.top + elementSizeAndPosition.height > viewportHeight) {\n this.top = viewportHeight - tooltipSizeAndPosition.height;\n }\n\n this.arrowOffset = elementSizeAndPosition.left - this.left + elementSizeAndPosition.width / 2 - 6;\n }\n\n private setPositionBasedOnTargetElement(targetElement: EventTarget): void {\n const viewportWidth: number = document.documentElement.clientWidth || window.innerWidth;\n\n const target: HTMLElement = targetElement as HTMLElement;\n const targetSizeAndPosition: ClientRect | DOMRect = target.getBoundingClientRect();\n const tooltipElement: HTMLElement = this.elementRef.nativeElement.querySelector('[role=\"tooltip\"]');\n const tooltipSizeAndPosition: ClientRect | DOMRect = tooltipElement.getBoundingClientRect();\n const pageScroll: { scrollX: number; scrollY: number } = CommonUtility.getPageScroll();\n\n let top: number = targetSizeAndPosition.top - tooltipSizeAndPosition.height;\n\n if (top < 0) {\n top = 0;\n }\n\n this.top = Math.round(top) + pageScroll.scrollY;\n\n let left: number = targetSizeAndPosition.left - tooltipSizeAndPosition.width / 2 + target.clientWidth / 2;\n if (left + tooltipSizeAndPosition.width > viewportWidth) {\n left = viewportWidth - tooltipSizeAndPosition.width;\n }\n\n this.left = Math.round(left) + pageScroll.scrollX;\n }\n\n private setPositions(target: EventTarget): void {\n this.setPositionBasedOnTargetElement(target);\n\n // Note: this is needed because we need to give a chance for browser to render a tooltip\n window.setTimeout(this.adjustPositionToViewport.bind(this, target));\n }\n\n private showTooltip(data: any): void {\n if (typeof data.text !== 'string' || data.text.length === 0) {\n return;\n }\n\n this.text = data.text;\n this.isVisibleByButton = true;\n this.arrowPositionVertical = 'bottom';\n\n // Note: this is needed because we need to give a chance for browser to render a tooltip\n window.setTimeout(this.setPositions.bind(this, data.event.target));\n }\n\n private hideTooltipByButton(): void {\n this.isVisibleByButton = false;\n this.hideTooltip();\n }\n\n private hideTooltip(): void {\n if (this.isVisibleByButton || this.isVisibleByWindow) {\n return;\n }\n this.text = '';\n this.top = 0;\n this.left = 0;\n }\n\n public ngOnInit(): void {\n const showTooltipSubscription: Subscription = this.messageBusService\n .from(MessageBusChannels.tooltipShow)\n .subscribe(this.showTooltip.bind(this));\n const hideTooltipSubscription: Subscription = this.messageBusService\n .from(MessageBusChannels.tooltipHide)\n .subscribe(this.hideTooltipByButton.bind(this));\n const routeChangedSubscription: Subscription = this.router.events.subscribe({\n next: this.hideTooltipByButton.bind(this),\n });\n\n this.subscriptions.add(showTooltipSubscription);\n this.subscriptions.add(hideTooltipSubscription);\n this.subscriptions.add(routeChangedSubscription);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n {{ text }}\n\n","import { ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { MessageBusChannels, MessageBusService } from '../../services/message-bus.service';\nimport { tooltipId } from './tooltip.component';\n\n@Directive({\n selector: '[appTooltip]',\n})\nexport class TooltipDirective {\n @HostBinding('attr.tabIndex') tabIndex: string = '0';\n private _describedBy: string = null;\n public set describedBy(value: string) {\n this._describedBy = value;\n if (value === null) {\n this.elementRef.nativeElement.removeAttribute('aria-describedby');\n } else {\n this.elementRef.nativeElement.setAttribute('aria-describedby', tooltipId);\n }\n }\n public get describedBy(): string {\n return this._describedBy;\n }\n\n private tooltipValue: string;\n\n @Input() public set appTooltip(text: string) {\n this.tooltipValue = text;\n }\n\n constructor(\n private messageBusService: MessageBusService,\n private cd: ChangeDetectorRef,\n private elementRef: ElementRef,\n ) {}\n\n @HostListener('focus', ['$event'])\n @HostListener('mouseenter', ['$event'])\n public onActive(event: MouseEvent | KeyboardEvent): void {\n this.describedBy = tooltipId;\n this.messageBusService.to(MessageBusChannels.tooltipShow, { text: this.tooltipValue, event: event });\n this.cd.detectChanges();\n // console.log('>>> aria-describedby added')\n }\n\n @HostListener('focusout')\n @HostListener('mouseleave')\n @HostListener('document:keydown.escape')\n public onDeactive(): void {\n this.describedBy = null;\n this.messageBusService.to(MessageBusChannels.tooltipHide, '');\n this.cd.detectChanges();\n // console.log('>>> aria-describedby removed')\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n EmbeddedViewRef,\n Input,\n TemplateRef,\n ViewContainerRef,\n AfterViewInit,\n} from '@angular/core';\nimport { TRANSLATIONS_VALUE_PLACEHOLDER } from '../../translate/translate.service';\n\ntype TemplateKey = '0' | '1' | '2' | '3' | '4' | '5';\n\n/**\n * @example\n *
\n *\n * \n * Contact Support\n * \n *\n */\n@Directive({\n selector: '[appTranslateTemplates][innerHTML]',\n})\nexport class TranslateTemplatesDirective implements AfterViewInit {\n @Input() appTranslateTemplates: Partial>> = {};\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit(): void {\n const element: HTMLElement = this.viewContainerRef.element.nativeElement;\n const html: string = element.innerHTML;\n\n this.viewContainerRef.clear();\n\n Object.keys(this.appTranslateTemplates).forEach((key: string, index: number) => {\n const placeholder: string = `${TRANSLATIONS_VALUE_PLACEHOLDER}${index}`;\n\n const parts: string[] = html.split(placeholder);\n\n element.innerHTML = parts[0];\n\n if (this.appTranslateTemplates[key]) {\n const viewRef: EmbeddedViewRef = this.viewContainerRef.createEmbeddedView(this.appTranslateTemplates[key]);\n\n viewRef.rootNodes.forEach((node: Node) => element.appendChild(node));\n }\n\n if (parts[1]) {\n const remainingText: Text = document.createTextNode(parts[1]);\n element.appendChild(remainingText);\n }\n });\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Directive, ElementRef, AfterViewInit } from '@angular/core';\nimport * as KeyCode from 'keycode-js';\n\n@Directive({\n selector: '[appTrapFocus]',\n exportAs: 'appTrapFocus',\n})\nexport class TrapFocusDirective implements AfterViewInit {\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.trapFocus(this.el.nativeElement);\n }\n\n trapFocus(element: HTMLElement): void {\n const focusableElements =\n 'a[href], button, textarea, input[type=\"text\"], input[type=\"radio\"], input[type=\"checkbox\"], select';\n const focusableNodeList = element.querySelectorAll(focusableElements);\n const focusableContent = Array.from(focusableNodeList).filter((el: any) => !el.disabled);\n const firstFocusableElement: any = focusableContent[0];\n const lastFocusableElement: any = focusableContent[focusableContent.length - 1];\n\n element.addEventListener('keydown', function (e: KeyboardEvent) {\n const isTabPressed = e.keyCode === KeyCode.KEY_TAB;\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableElement) {\n /* shift + tab */\n lastFocusableElement.focus();\n e.preventDefault();\n }\n } else if (document.activeElement === lastFocusableElement) {\n /* tab */\n firstFocusableElement.focus();\n e.preventDefault();\n }\n });\n }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n/**\n * This directive was created to address\n * https://github.com/ng-bootstrap/ng-bootstrap/issues/4181\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[ngbTypeahead]',\n})\nexport class TypeaheadDirective implements OnInit {\n constructor(private elRef: ElementRef) {}\n\n public ngOnInit(): void {\n this.elRef.nativeElement.ariaMultiLine = null;\n }\n}\n","import { ICustomSeverityWithSeverityKey } from '../../../shared/interfaces/tenant.interface';\n\nexport enum SeverityClass {\n critical = 'critical',\n high = 'high',\n moderate = 'moderate',\n minor = 'minor',\n low = 'low',\n}\n\nexport interface ICustomSeverityWithTableRanking extends ICustomSeverityWithSeverityKey {\n tableRanking: number;\n tableRankingClass: SeverityClass;\n}\n","export enum $navigationCustomState {\n scrollToTop = 'scrollToTop',\n captureNavFocus = 'captureNavFocus',\n userEmails = 'userEmails',\n mobileScanScreen = 'mobileScanScreen',\n}\n\nexport interface NavigationCustomState {\n // if false, then AppComponent.handleRouterScroller will not scroll the page to top automatically on route change\n [$navigationCustomState.scrollToTop]?: boolean;\n [$navigationCustomState.captureNavFocus]?: boolean;\n [$navigationCustomState.userEmails]?: string[];\n [$navigationCustomState.mobileScanScreen]?: string;\n}\n","export class NotificationModel {\n public id: string;\n public keepAfterRouteChange: boolean;\n public keepOnlyOne: boolean;\n public message: string | null;\n public position: NotificationPosition;\n public type: NotificationType;\n\n constructor() {}\n}\n\nexport enum NotificationType {\n Success,\n Error,\n Info,\n Warning,\n}\n\nexport enum NotificationPosition {\n Toast,\n Inline,\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { IScanOptions } from '../../../../../../shared/interfaces/scan-options.interface';\nimport { scanOptionsFormFields } from '../../../../../../shared/constants/scan-options';\nimport { scanCreateRequest } from '../../../../../../shared/constants/scan-create-request';\nimport { scanningType } from '../../../../../../shared/constants/scanning';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutomatedScanAdvancedService {\n private scanOptionsSubject: BehaviorSubject;\n private scanningTypeSubject: BehaviorSubject = new BehaviorSubject(scanningType.singlePage);\n\n constructor() {\n this.scanOptionsSubject = new BehaviorSubject({\n _id: scanOptionsFormFields.$defaultScanOptions,\n } as IScanOptions);\n }\n\n public setScanOptions(options: IScanOptions): void {\n this.scanOptionsSubject.next(options);\n }\n\n public patchScanOptions(options: Partial): void {\n const currentValue: IScanOptions = this.scanOptionsSubject.getValue();\n this.scanOptionsSubject.next({\n ...currentValue,\n ...options,\n });\n }\n\n public onScanOptionsChanged(): Observable {\n return this.scanOptionsSubject.asObservable().pipe(delay(0));\n }\n\n public assignScanOptions(\n form: UntypedFormGroup,\n values: Partial>,\n defaults?: Partial>,\n ): void {\n form.patchValue(Object.assign({}, values, defaults));\n form.markAsUntouched();\n Object.keys(values).forEach((key: scanCreateRequest): void => form.get(key)?.markAsUntouched());\n }\n\n public getScanningType(): scanningType {\n return this.scanningTypeSubject.getValue();\n }\n\n public getScanOptions(): IScanOptions {\n return this.scanOptionsSubject.getValue();\n }\n\n public setScanningType(type: scanningType): void {\n this.scanningTypeSubject.next(type);\n }\n\n public getScanningType$(): Observable {\n return this.scanningTypeSubject.asObservable();\n }\n}\n","
\n \n {{ 'close_popups_label' | translate }}\n \n
\n
\n
\n
\n
\n {{ 'close_popups_description' | translate }}\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { CustomValidators } from '../../../../../../services/helpers/form-custom-validators';\nimport { scanCreateRequest } from '../../../../../../../../shared/constants/scan-create-request';\nimport { AutomatedScanAdvancedService } from '../../automated-scan-advanced.service';\nimport { IScanOptions } from '../../../../../../../../shared/interfaces/scan-options.interface';\nimport { SharedCommonUtility } from '../../../../../../../../shared/utils/common.utility';\nimport { scanningType } from '../../../../../../../../shared/constants/scanning';\n\n@Component({\n selector: 'app-advanced-scan-handle-popups',\n templateUrl: './handle-popups.component.html',\n})\nexport class HandlePopupsComponent implements OnInit, OnDestroy {\n private subscription: Subscription = new Subscription();\n\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public popupsControlName: string = scanCreateRequest.handlePopupsSelector;\n public modifyHandlePopups: boolean = false;\n public disabled: boolean = false;\n\n constructor(\n private el: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n private advancedService: AutomatedScanAdvancedService,\n ) {}\n\n private subscribeToScanningType(): void {\n this.subscription.add(\n this.advancedService.getScanningType$().subscribe((type: scanningType) => {\n if (type === scanningType.automatedUserFlow) {\n this.removeControl();\n this.modifyHandlePopups = false;\n this.disabled = true;\n } else {\n this.disabled = false;\n }\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n private removeControl(): void {\n if (SharedCommonUtility.notNullish(this.form.get(this.popupsControlName))) {\n this.form.removeControl(this.popupsControlName);\n this.changeDetectorRef.detectChanges();\n }\n }\n\n private registerControl(value: string = ''): void {\n const popupSelectorControl: AbstractControl = this.form.get(this.popupsControlName);\n if (SharedCommonUtility.notNullish(popupSelectorControl)) {\n popupSelectorControl.patchValue(value);\n } else {\n this.form.registerControl(\n this.popupsControlName,\n this.formBuilder.control(value, [CustomValidators.required, CustomValidators.validateIsEmpty]),\n );\n }\n }\n\n private onOptionsUpdated(opts: IScanOptions): void {\n this.modifyHandlePopups = SharedCommonUtility.notNullishOrEmpty(opts.handlePopupsSelector);\n\n if (this.modifyHandlePopups) {\n this.registerControl(opts.handlePopupsSelector);\n } else {\n this.removeControl();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public onModifyHandlePopups(value: boolean): void {\n if (!value) {\n this.removeControl();\n return;\n }\n\n if (!this.form.contains(this.popupsControlName)) {\n this.registerControl();\n }\n\n this.changeDetectorRef.detectChanges();\n this.el.nativeElement.querySelector('#close-popup-selector input').focus();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public ngOnInit(): void {\n this.subscription.add(this.advancedService.onScanOptionsChanged().subscribe(this.onOptionsUpdated.bind(this)));\n this.subscribeToScanningType();\n }\n}\n","
\n \n {{ 'add_wait_time' | translate }}\n \n
\n
\n
\n
\n
\n {{ 'wait_time_description' | translate }}\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { AutomatedScanAdvancedService } from '../../automated-scan-advanced.service';\nimport { IScanOptions } from '../../../../../../../../shared/interfaces/scan-options.interface';\nimport { SharedCommonUtility } from '../../../../../../../../shared/utils/common.utility';\nimport { CustomValidators } from '../../../../../../services/helpers/form-custom-validators';\nimport { scanCreateRequest } from '../../../../../../../../shared/constants/scan-create-request';\nimport { scanningType } from '../../../../../../../../shared/constants/scanning';\n\n@Component({\n selector: 'app-advanced-scan-wait-time',\n templateUrl: './wait-time.component.html',\n})\nexport class WaitTimeComponent implements OnInit, OnDestroy {\n private subscription: Subscription = new Subscription();\n\n public modifyWaitTime: boolean = false;\n @Input()\n public form: UntypedFormGroup;\n @Input()\n public formValidationRequest$: Observable;\n @Input()\n public waitTimeControlName: string = scanCreateRequest.waitTimeSec;\n public disabled: boolean = false;\n\n constructor(\n private el: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n private advancedService: AutomatedScanAdvancedService,\n ) {}\n\n private subscribeToScanningType(): void {\n this.subscription.add(\n this.advancedService.getScanningType$().subscribe((type: scanningType) => {\n if (type === scanningType.automatedUserFlow) {\n this.removeControl();\n this.modifyWaitTime = false;\n this.disabled = true;\n } else {\n this.disabled = false;\n }\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public onModifyWaitTime(value: boolean): void {\n if (!value) {\n this.removeControl();\n return;\n }\n\n if (!this.form.contains(this.waitTimeControlName)) {\n this.registerControl();\n }\n\n this.changeDetectorRef.detectChanges();\n this.el.nativeElement.querySelector('#wait-time-sec input').focus();\n }\n\n private onOptionsUpdated(opts: IScanOptions): void {\n this.modifyWaitTime = SharedCommonUtility.notNullish(opts.waitTimeSec);\n\n if (this.modifyWaitTime) {\n this.registerControl(opts.waitTimeSec);\n } else {\n this.removeControl();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private removeControl(): void {\n if (SharedCommonUtility.notNullish(this.form.get(this.waitTimeControlName))) {\n this.form.removeControl(this.waitTimeControlName);\n this.changeDetectorRef.detectChanges();\n }\n }\n\n private registerControl(value: number = 0): void {\n const waitTimeControl: AbstractControl = this.form.get(this.waitTimeControlName);\n if (SharedCommonUtility.notNullish(waitTimeControl)) {\n waitTimeControl.patchValue(value);\n } else {\n this.form.registerControl(\n this.waitTimeControlName,\n this.formBuilder.control(value, [\n CustomValidators.required,\n CustomValidators.validateIsEmpty,\n CustomValidators.min(0),\n CustomValidators.max(10),\n ]),\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public ngOnInit(): void {\n this.subscription.add(this.advancedService.onScanOptionsChanged().subscribe(this.onOptionsUpdated.bind(this)));\n this.subscribeToScanningType();\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, filter, mergeMap } from 'rxjs/operators';\nimport { Observable, of, Subscription } from 'rxjs';\n\nimport { NotificationPosition } from '../../../models/notification.model';\nimport { IGetScansQuery, IScan } from '../../../../../shared/interfaces/scan.interface';\nimport { ScanService } from '../../../services/scan.service';\nimport { NotificationService } from '../../../services/notification.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { ICurrentSelectedProperty, UserService } from '../../../services/user.service';\nimport { RestService } from '../../../services/rest.service';\nimport {\n IDashboardLatestScansServerResponse,\n IDashboardManualEvaluationsBySeverity,\n} from '../../../../../shared/interfaces/dashboard-scan-result.interface';\nimport { $scan } from '../../../../../shared/constants/scan';\nimport { $severity, allSeverities } from '../../../../../shared/constants/accessibility';\nimport { AuditFindingQAStatus, AuditFindingQAStatusRemaining } from '../../../../../shared/constants/audit-finding';\nimport { WorkspacesRestAPI } from '../../../services/rest/workspaces.api';\nimport { UserPropertyService } from '../../../services/user-property.service';\nimport { LoadErrorHandler } from '../../../services/load-error-handler';\nimport { AccessibilityAuditToolNames } from '../../../../../shared/constants/audit-tool';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\nexport interface IRecentActivityPreferences {\n limit: number | null;\n filter: Record;\n}\n\n@Injectable()\nexport class DashboardService {\n constructor(\n private scanService: ScanService,\n private restService: RestService,\n private workspaceRest: WorkspacesRestAPI,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private userPropertyService: UserPropertyService,\n private loadErrorHandler: LoadErrorHandler,\n private userService: UserService,\n ) {}\n\n public countTotalIssuesForStatus(\n issues: IDashboardManualEvaluationsBySeverity,\n qaStatus: AuditFindingQAStatus | AuditFindingQAStatus[],\n severities: readonly $severity[] = allSeverities,\n ): number {\n const sumForSeverity = (severity: $severity): number => {\n let total: number = 0;\n (Array.isArray(qaStatus) ? qaStatus : [qaStatus]).forEach((status: AuditFindingQAStatus): void => {\n if (typeof issues[severity][status] === 'number') {\n total += issues[severity][status];\n }\n });\n return total;\n };\n const reduceToSum = (a: number, b: number): number => a + b;\n\n return severities.map(sumForSeverity).reduce(reduceToSum, 0);\n }\n\n public countTotalIssuesForSeverity(\n issues: IDashboardManualEvaluationsBySeverity,\n severity: $severity,\n excludeStatuses: AuditFindingQAStatus | AuditFindingQAStatus[] = [],\n ): number {\n const excluded: AuditFindingQAStatus[] = Array.isArray(excludeStatuses) ? excludeStatuses : [excludeStatuses];\n\n let total: number = 0;\n\n [AuditFindingQAStatus.fixed, ...AuditFindingQAStatusRemaining].forEach((qaStatus: AuditFindingQAStatus): void => {\n if (typeof issues[severity][qaStatus] === 'number' && excluded.includes(qaStatus) === false) {\n total += issues[severity][qaStatus];\n }\n });\n\n return total;\n }\n\n public handleHttpError(response: HttpErrorResponse, componentName: string): void {\n this.loadErrorHandler.handleError(null, response, componentName);\n }\n\n public rerunScan(scan: IScan): Subscription {\n const onRerunScanSuccess = (): void => {\n this.notificationService.success(this.translateService.instant('rerun_scan_in_progress'), NotificationPosition.Toast);\n };\n\n const onRerunScanError = (): void => {\n this.notificationService.error(this.translateService.instant('rerun_scan_error', [scan.url]), NotificationPosition.Toast);\n };\n\n return this.scanService\n .rerunScan(scan.workspace as unknown as string, scan[$scan.digitalProperty] as string, scan._id)\n .subscribe(onRerunScanSuccess, onRerunScanError);\n }\n\n public getSelectedWorkspaceManualAudits(): Observable {\n const onGetManualAuditsError = (err: any): Observable => {\n this.notificationService.error(\n this.translateService.instant('error_reading_dashboard_manual_audits'),\n NotificationPosition.Toast,\n );\n return of(0);\n };\n\n return this.userPropertyService.currentSelectedProperty().pipe(\n filter((property: ICurrentSelectedProperty) => {\n if (SharedCommonUtility.isNullish(property)) {\n this.userService.setToNoWorkspaceState();\n return false;\n }\n return true;\n }),\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable => {\n return this.workspaceRest.getAllManualEvaluations(workspaceId, digitalPropertyId);\n }),\n catchError(onGetManualAuditsError),\n );\n }\n\n public getSelectedWorkspaceScansCount(): Observable {\n const onGetScansError = (): Observable => {\n this.notificationService.error(this.translateService.instant('error_reading_dashboard_scans'), NotificationPosition.Toast);\n return of(0);\n };\n\n return this.scanService.getSelectedWorkspaceScansCount().pipe(catchError(onGetScansError));\n }\n\n public getLatestScans(\n workspaceId: string,\n digitalPropertyId: string,\n tool: AccessibilityAuditToolNames,\n queryFilter: IGetScansQuery,\n skip: number,\n limit: number,\n ): Observable {\n return this.restService.getDashboardLatestScans(workspaceId, digitalPropertyId, tool, queryFilter, skip, limit);\n }\n}\n","
\n \"\"\n

{{ label | translate }}

\n \n {{ buttonName | translate }}\n \n \n {{ buttonName | translate }}\n \n \n {{ buttonName | translate }}\n \n \n \n {{ buttonName | translate }}\n \n
\n \n {{ buttonName | translate }}\n \n
\n \n {{ dropdownOption[index].label | translate }}\n \n
\n
\n
\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nimport { TestAutomationService, TestAutomationTools } from '../../../../../services/test-automation.service';\nimport { NotificationPosition } from '../../../../../models/notification.model';\nimport { NotificationService } from '../../../../../services/notification.service';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { LoadErrorHandler } from '../../../../../services/load-error-handler';\nimport { DetectUtility } from '../../../../../utility/detect.utility';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\n\nexport enum DownloadType {\n button,\n dropdown,\n internal_link,\n external_link,\n install,\n}\n\nexport interface ImageDetails {\n src: string;\n width: number;\n}\n\nexport interface option {\n label: string;\n tool: TestAutomationTools;\n action?: (...args: any[]) => any;\n}\n\n@Component({\n selector: 'app-tool-template',\n templateUrl: './tool-template.html',\n styles: ['h3 { margin-bottom: 2.7rem; margin-top: 1.75rem;}'],\n})\nexport class ToolTemplateComponent implements OnDestroy {\n @Input()\n public downloadType: DownloadType;\n public DownloadType: typeof DownloadType = DownloadType;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public Icons: typeof Icons = Icons;\n\n @Input()\n public image: ImageDetails;\n\n @Input()\n public dropdownOption?: option[];\n\n @Input()\n public tool?: TestAutomationTools;\n\n @Input()\n public label: string;\n\n @Input()\n public buttonName: string;\n\n @Input()\n public buttonVariant: DsButtonVariants = DsButtonVariants.primary;\n\n @Input()\n public disabled: boolean;\n\n @Input()\n public url?: string;\n\n private subscriptions: Subscription;\n constructor(\n private testAutomationService: TestAutomationService,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private errorHandler: LoadErrorHandler,\n ) {\n this.subscriptions = new Subscription();\n }\n\n private downloadSuccess(): void {\n this.notificationService.success(\n this.translateService.instant('test_automation_tool_download_success'),\n NotificationPosition.Toast,\n );\n }\n\n private downloadError(error: unknown): void {\n this.errorHandler.handleError('test_automation_tool_download_error', error as HttpErrorResponse, ToolTemplateComponent.name);\n }\n\n private openLink(href: string): void {\n location.href = href;\n }\n\n public handleDropdownClick(dropdownOption: option): void {\n if (SharedCommonUtility.notNullish(dropdownOption.action)) {\n dropdownOption.action();\n return;\n }\n\n this.download(dropdownOption.tool);\n }\n\n public download(tool: TestAutomationTools): void {\n this.subscriptions.add(\n this.testAutomationService\n .download(tool)\n .pipe(take(1))\n .subscribe({\n next: this.downloadSuccess.bind(this),\n error: this.downloadError.bind(this),\n }),\n );\n }\n\n public install(tool: TestAutomationTools): void {\n if (tool !== TestAutomationTools.extension_firefox || DetectUtility.getBrowserName() !== 'Firefox') {\n return;\n }\n\n this.subscriptions.add(\n this.testAutomationService\n .getToolUrl(tool)\n .pipe(take(1))\n .subscribe({\n next: this.openLink.bind(this),\n error: this.downloadError.bind(this),\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n
\n \n \n \n \n \n \n\n \n \n \n \n
\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { NgbActiveOffcanvas } from '@ng-bootstrap/ng-bootstrap';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { DsButtonVariants, DsModalColorVariant, DsModalService } from '@levelaccess/design-system';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { IModal } from '../../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../../components/modals/modal-container.component';\nimport { BannerType } from '../../../../../components/banner/banner.component';\nimport { ErrorMessageService } from '../../../../../services/error-message.service';\nimport {\n IUserPreference,\n IUserPreferencesServerResponse,\n IUserPreferenceParamMapping,\n} from '../../../../../../../shared/interfaces/user-preference.interface';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { UserService } from '../../../../../services/user.service';\nimport {\n $userPreference,\n userPreferenceScope,\n userPreferenceScopeParam,\n} from '../../../../../../../shared/constants/user-preferences';\nimport { DashboardDataFrequency } from '../../../../../../../shared/interfaces/ws-dashboard.interface';\nimport { A11yService } from '../../../../../services/a11y.service';\nimport { NotificationService } from '../../../../../services/notification.service';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { NotificationPosition } from '../../../../../models/notification.model';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\n\nenum FormFields {\n frequency = 'frequency',\n}\n\n@Component({\n selector: 'app-user-preferences-slideout',\n templateUrl: './user-preferences-slideout.component.html',\n})\nexport class DashboardUserPreferencesSlideoutComponent implements IModal, OnDestroy {\n @ViewChild(ModalContainerComponent, { static: false })\n public container: ModalContainerComponent;\n\n @Input() public set frequency(value: string) {\n this.frequency$.next(value);\n }\n\n public get frequency(): string {\n return this.frequency$.value;\n }\n\n @Output() public onPreferenceUpdated: EventEmitter;\n\n protected form: UntypedFormGroup;\n\n protected readonly FormFields: typeof FormFields = FormFields;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n protected readonly DsModalColorVariant: typeof DsModalColorVariant = DsModalColorVariant;\n protected readonly BannerType: typeof BannerType = BannerType;\n protected readonly DashboardDataFrequency: typeof DashboardDataFrequency = DashboardDataFrequency;\n protected readonly FrequencyOptions: DashboardDataFrequency[] = [\n DashboardDataFrequency.weekly,\n DashboardDataFrequency.monthly,\n DashboardDataFrequency.quarterly,\n ];\n\n private frequency$: BehaviorSubject = new BehaviorSubject(DashboardDataFrequency.weekly);\n private subscriptions: Subscription;\n protected formFieldErrors: Record = {};\n\n constructor(\n protected modal: NgbActiveOffcanvas,\n protected modalService: DsModalService,\n private formBuilder: UntypedFormBuilder,\n private userService: UserService,\n private a11yService: A11yService,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private errorMessageService: ErrorMessageService,\n private element: ElementRef,\n ) {\n this.subscriptions = new Subscription();\n this.onPreferenceUpdated = new EventEmitter();\n this.setupForm();\n }\n\n private setupForm(): void {\n this.form = this.formBuilder.group({\n [FormFields.frequency]: this.formBuilder.control(DashboardDataFrequency.weekly, [CustomValidators.required]),\n });\n\n this.subscriptions.add(\n this.frequency$\n .pipe(\n filter((freq: DashboardDataFrequency) => SharedCommonUtility.notNullishOrEmpty(freq)),\n map((freq: DashboardDataFrequency) => {\n this.form.controls[FormFields.frequency].setValue(freq);\n }),\n )\n .subscribe(),\n );\n }\n\n private findPreference(preferences: IUserPreferencesServerResponse, param: userPreferenceScopeParam): IUserPreference {\n const preference: IUserPreference = preferences.userPreferences.find((value: IUserPreference) => {\n return value[$userPreference.param] === param;\n });\n\n return preference || null;\n }\n\n private onUpdatePreferencesSuccess(response: IUserPreferencesServerResponse): void {\n this.onPreferenceUpdated.emit({\n [userPreferenceScopeParam.frequency]: this.findPreference(response, userPreferenceScopeParam.frequency),\n });\n this.modalService.closeAllModals();\n }\n\n private onUpdatePreferencesError(error: any): void {\n const message =\n this.translateService.instant('error_while_saving_user_preferences') +\n ': ' +\n this.errorMessageService.getGlobalErrorResponse(error);\n this.a11yService.setMessage(message);\n this.notificationService.error(message, NotificationPosition.Toast, true);\n }\n\n public submit(): void {\n if (!this.form.valid) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n const body: { [key: string]: any } = {\n [userPreferenceScopeParam.frequency]: this.form.get(FormFields.frequency).value,\n };\n\n this.subscriptions.add(\n this.userService.updateUserPreferences(userPreferenceScope.programDash, body).subscribe({\n next: this.onUpdatePreferencesSuccess.bind(this),\n error: this.onUpdatePreferencesError.bind(this),\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Directive, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn } from '@angular/forms';\nimport { Observable, of, Subject, Subscription } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport { NgbActiveOffcanvas } from '@ng-bootstrap/ng-bootstrap';\nimport { DsButtonVariants, DsInputStates, DsModalColorVariant, Icons } from '@levelaccess/design-system';\n\nimport { ErrorMessageService } from '../../../../services/error-message.service';\nimport { PageService } from '../../../../services/page.service';\nimport { $page, $pageImage, PAGE_CHAR_LIMITS } from '../../../../../../shared/constants/page';\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport { FormService } from '../../../../services/form.service';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { validationError } from '../../../../constants/form.constants';\nimport { LoadErrorHandler } from '../../../../services/load-error-handler';\nimport { BannerType } from '../../../../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\nimport { NotificationService } from '../../../../services/notification.service';\nimport {\n FileDragAndDropComponent,\n IFileDragAndDropContext,\n} from '../../../../components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component';\nimport { config } from '../../../../../environments/config.shared';\nimport {\n SupportedPageScreenshotExtensions,\n SupportedPageScreenshotMimeTypes,\n} from '../../../../../../shared/constants/mime-type';\nimport { DigitalPropertyService } from '../../../../services/digital-property.service';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { UserPropertyService } from '../../../../services/user-property.service';\nimport { FeatureFlagService } from '../../../../services/feature-flag/feature-flag.service';\n\nexport enum PageModalType {\n ADD = 'ADD',\n EDIT = 'EDIT',\n}\n\nexport enum ScreenshotOrigin {\n NEW = 'NEW',\n UPLOADED = 'UPLOADED',\n}\n\nexport enum FormField {\n URL = 'url',\n TITLE = 'title',\n DESCRIPTION = 'description',\n SCREENSHOT = 'screenshot',\n ALT_TEXT = 'alt_text',\n}\n\n@Directive()\nexport abstract class AbstractPageModalComponent implements OnDestroy {\n @ViewChild(FileDragAndDropComponent)\n public fileDragAndDropComponent: FileDragAndDropComponent;\n\n public backNavLabel: string | undefined;\n public requireURL: boolean;\n\n public readonly DsModalColorVariant: typeof DsModalColorVariant = DsModalColorVariant;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n public readonly BannerType: typeof BannerType = BannerType;\n public readonly FormField: typeof FormField = FormField;\n public readonly ScreenshotOrigin: typeof ScreenshotOrigin = ScreenshotOrigin;\n public readonly urlCharLimit: number = PAGE_CHAR_LIMITS[$page.url];\n public readonly titleCharLimit: number = PAGE_CHAR_LIMITS[$page.name];\n public readonly descriptionCharLimit: number = PAGE_CHAR_LIMITS[$page.description];\n public readonly altTextCharLimit: number = PAGE_CHAR_LIMITS[$pageImage.altText];\n\n protected subscription: Subscription = new Subscription();\n\n public form: UntypedFormGroup;\n public showUrlWarning: boolean = false;\n public urlError$: Observable;\n public titleError$: Observable;\n public descriptionError$: Observable;\n public altTextError$: Observable;\n public formValidationRequest$: Subject = new Subject();\n\n public screenshotOrigin: ScreenshotOrigin | null = null;\n public screenshotData: string | ArrayBuffer = null;\n public screenshotFile: File = null;\n\n public abstract readonly modalType: PageModalType;\n\n public abstract submit(): void;\n\n public bannerText$: Observable = of(undefined);\n\n protected constructor(\n public modal: NgbActiveOffcanvas,\n protected formBuilder: UntypedFormBuilder,\n protected formService: FormService,\n protected digitalPropertyService: DigitalPropertyService,\n protected element: ElementRef,\n protected pageService: PageService,\n protected errorMessageService: ErrorMessageService,\n protected loadErrorHandler: LoadErrorHandler,\n protected translateService: TranslateService,\n protected notificationService: NotificationService,\n protected userPropertyService: UserPropertyService,\n protected featureFlagService: FeatureFlagService,\n ) {}\n\n public get fileUploadContext(): IFileDragAndDropContext {\n return {\n field: FormField.SCREENSHOT,\n maxTotalFileQuantity: this.maxUploadQuantity,\n maxFileSize: this.maxFileUploadSize,\n maxTotalFileSize: this.maxUploadSize,\n acceptedFileExtensions: SupportedPageScreenshotExtensions,\n acceptedMimeTypes: SupportedPageScreenshotMimeTypes,\n };\n }\n\n public get maxUploadQuantity(): number {\n return config.pageScreenshot.maxUploadQuantity;\n }\n\n public get maxUploadSize(): number {\n return config.pageScreenshot.maxUploadSize;\n }\n\n public get maxFileUploadSize(): number {\n return config.pageScreenshot.maxFileUploadSize;\n }\n\n public onFileUpload(files: File[]): void {\n if (files.length === 0 || SharedCommonUtility.isNullish(files[0])) {\n return;\n }\n\n this.screenshotFile = files[0];\n\n const reader: FileReader = new FileReader();\n reader.onload = (): void => {\n this.screenshotData = reader.result;\n this.screenshotOrigin = ScreenshotOrigin.NEW;\n };\n reader.readAsDataURL(this.screenshotFile);\n\n const control: AbstractControl = this.form.get(FormField.ALT_TEXT);\n control.addValidators(this.altTextValidators());\n }\n\n public removeScreenshot(): void {\n this.screenshotFile = null;\n this.screenshotData = null;\n this.screenshotOrigin = null;\n\n this.form.get(FormField.SCREENSHOT).reset();\n this.form.get(FormField.ALT_TEXT).reset('');\n\n const control: AbstractControl = this.form.get(FormField.ALT_TEXT);\n control.removeValidators(this.altTextValidators());\n }\n\n protected altTextValidators(): ValidatorFn[] {\n return [CustomValidators.required, CustomValidators.validateIsEmpty, CustomValidators.maxLength(this.altTextCharLimit)];\n }\n\n protected buildTitleFormControl(defaultValue?: string): UntypedFormControl {\n const control: UntypedFormControl = this.formBuilder.control(defaultValue ?? '', [\n CustomValidators.validateIsEmpty,\n CustomValidators.maxLength(this.titleCharLimit),\n ]);\n\n this.buildTitleErrorObservable(control);\n\n return control;\n }\n\n private buildTitleErrorObservable(control: UntypedFormControl): void {\n this.titleError$ = control.statusChanges.pipe(\n map(() =>\n this.formService.getErrorMessageForField(control, FormField.TITLE, '', '', {\n [validationError.unique]: this.translateService.instant('upsert_page_duplicate_name_error'),\n }),\n ),\n );\n }\n\n protected buildUrlFormControl(defaultValue?: string): UntypedFormControl {\n const control: UntypedFormControl = this.formBuilder.control(defaultValue ?? '', [\n ...(this.requireURL ? [CustomValidators.validateIsEmpty] : []),\n CustomValidators.isValidUrl,\n CustomValidators.maxLength(this.urlCharLimit),\n ]);\n\n this.buildUrlErrorObservable(control);\n\n return control;\n }\n\n private buildUrlErrorObservable(control: UntypedFormControl): void {\n this.urlError$ = control.statusChanges.pipe(\n map(() =>\n this.formService.getErrorMessageForField(control, FormField.URL, '', '', {\n isDomainPartOfSubscription: this.translateService.instant('url_not_licensed_domain'),\n }),\n ),\n );\n }\n\n protected buildDescriptionFormControl(defaultValue?: string): UntypedFormControl {\n const control: UntypedFormControl = this.formBuilder.control(defaultValue ?? '', [\n CustomValidators.maxLength(this.descriptionCharLimit),\n ]);\n\n this.buildDescriptionErrorObservable(control);\n\n return control;\n }\n\n private buildDescriptionErrorObservable(control: UntypedFormControl): void {\n this.descriptionError$ = control.statusChanges.pipe(\n map(() => this.formService.getErrorMessageForField(control, FormField.DESCRIPTION)),\n );\n }\n\n protected buildScreenshotFormControl(defaultValue?: string): UntypedFormControl {\n return this.formBuilder.control(defaultValue);\n }\n\n protected buildAltTextFormControl(defaultValue?: string): UntypedFormControl {\n const control: UntypedFormControl = this.formBuilder.control(defaultValue ?? '', [\n CustomValidators.maxLength(this.altTextCharLimit),\n ]);\n\n this.buildAltTextErrorObservable(control);\n\n return control;\n }\n\n private buildAltTextErrorObservable(control: UntypedFormControl): void {\n this.altTextError$ = control.statusChanges.pipe(\n map(() => this.formService.getErrorMessageForField(control, FormField.ALT_TEXT, '', 'upsert_page_alt_text')),\n );\n }\n\n protected addDuplicateUrlWarningValidator(existingUrls: string[]): void {\n const existingUrlSet: Set = new Set(\n existingUrls.filter(SharedCommonUtility.notNullishOrEmpty).map((url: string) => url.toLowerCase()),\n );\n\n this.subscription.add(\n this.form\n .get(FormField.URL)\n .valueChanges.pipe(\n filter(SharedCommonUtility.notNullishOrEmpty),\n map((url: string) => existingUrlSet.has(url.toLowerCase().trim())),\n )\n .subscribe((show: boolean) => {\n this.showUrlWarning = show;\n }),\n );\n }\n\n protected addTitleUniquenessValidator(existingNames: string[]): void {\n const existingNameSet: Set = new Set(existingNames.map((url: string) => url.toLowerCase()));\n const control: AbstractControl = this.form.get(FormField.TITLE);\n control.addValidators(CustomValidators.uniqueValidator(existingNameSet, true, true));\n }\n\n public hideUrlWarning(): void {\n this.showUrlWarning = false;\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public cancel(): void {\n this.modal.dismiss();\n }\n\n public get pageTitle(): string {\n return this.modalType === PageModalType.ADD ? 'add_page' : 'edit_page';\n }\n\n public get urlFieldState(): DsInputStates {\n return this.modalType === PageModalType.ADD ? DsInputStates.active : DsInputStates.nonEditable;\n }\n\n public get submitButtonLabel(): string {\n return this.modalType === PageModalType.ADD ? 'add_page' : 'edit_page';\n }\n}\n","\n
\n
\n
\n
\n \n
\n 0\"\n >\n \n \n
\n
\n
\n
\n 0\"\n [state]=\"urlFieldState\"\n >\n \n \n
\n \n {{ 'upsert_page_duplicate_url_warning' | translate }}\n \n
\n
\n
\n
\n
\n 0\"\n >\n \n \n \n
\n
\n\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n {{ 'action_remove' | translate }}\n \n
\n
\n\n
\n
\n 0\"\n >\n \n \n
\n
\n
\n\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n \n\n","import { Component, ElementRef } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { NgbActiveOffcanvas } from '@ng-bootstrap/ng-bootstrap';\nimport { map } from 'rxjs/operators';\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ErrorMessageService } from '../../../../../services/error-message.service';\nimport { PageService } from '../../../../../services/page.service';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { FormService } from '../../../../../services/form.service';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { LoadErrorHandler } from '../../../../../services/load-error-handler';\nimport { NotificationService } from '../../../../../services/notification.service';\nimport { DigitalPropertyService } from '../../../../../services/digital-property.service';\nimport { AbstractPageModalComponent, FormField, PageModalType } from '../abstract-page-modal.component';\nimport { $page, $pageImage } from '../../../../../../../shared/constants/page';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { NotificationPosition } from '../../../../../models/notification.model';\nimport { IPage, IPagesResponse } from '../../../../../../../shared/interfaces/page.interface';\nimport { IDigitalPropertyDetails } from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { UserPropertyService } from '../../../../../services/user-property.service';\nimport { ICurrentSelectedProperty } from '../../../../../services/user.service';\nimport { FeatureFlagService } from '../../../../../services/feature-flag/feature-flag.service';\n\nexport interface IAddPageModalContext {\n workspaceId: string;\n digitalPropertyId: string;\n backNavLabel?: string;\n // defaults false\n requireURLField?: boolean;\n defaultURL?: string;\n}\n\n@Component({\n selector: 'app-add-page-modal',\n templateUrl: '../upsert-page-modal.component.html',\n})\nexport class AddPageModalComponent extends AbstractPageModalComponent {\n public readonly modalType: PageModalType = PageModalType.ADD;\n private context: IAddPageModalContext;\n\n constructor(\n modal: NgbActiveOffcanvas,\n formBuilder: UntypedFormBuilder,\n formService: FormService,\n digitalPropertyService: DigitalPropertyService,\n element: ElementRef,\n pageService: PageService,\n errorMessageService: ErrorMessageService,\n loadErrorHandler: LoadErrorHandler,\n translateService: TranslateService,\n notificationService: NotificationService,\n userPropertyService: UserPropertyService,\n featureFlagService: FeatureFlagService,\n ) {\n super(\n modal,\n formBuilder,\n formService,\n digitalPropertyService,\n element,\n pageService,\n errorMessageService,\n loadErrorHandler,\n translateService,\n notificationService,\n userPropertyService,\n featureFlagService,\n );\n }\n\n public init(context: IAddPageModalContext): void {\n this.context = context;\n this.backNavLabel = context.backNavLabel;\n this.requireURL = context.requireURLField;\n this.form = this.buildForm();\n this.addValidators();\n if (SharedCommonUtility.notNullishOrEmpty(context.defaultURL)) {\n this.form.get(FormField.URL).patchValue(context.defaultURL);\n this.bannerText$ = this.userPropertyService.currentSelectedProperty().pipe(\n map(({ digitalPropertyName }: ICurrentSelectedProperty): string => {\n return this.translateService.instant('add_pages_QOL_save_banner', digitalPropertyName);\n }),\n );\n }\n return undefined;\n }\n\n private buildForm(): UntypedFormGroup {\n return this.formBuilder.group({\n [FormField.TITLE]: this.buildTitleFormControl(),\n [FormField.URL]: this.buildUrlFormControl(),\n [FormField.DESCRIPTION]: this.buildDescriptionFormControl(),\n [FormField.SCREENSHOT]: this.buildScreenshotFormControl(),\n [FormField.ALT_TEXT]: this.buildAltTextFormControl(),\n });\n }\n\n private addValidators(): void {\n this.subscription.add(\n this.pageService\n .getPages(this.context.workspaceId, this.context.digitalPropertyId)\n .subscribe((response: IPagesResponse): void => {\n this.addDuplicateUrlWarningValidator(response.pages.map((page: IPage) => page[$page.url]));\n this.addTitleUniquenessValidator(response.pages.map((page: IPage) => page[$page.name]));\n }),\n );\n\n this.subscription.add(\n this.digitalPropertyService\n .getDigitalProperty(this.context.workspaceId, this.context.digitalPropertyId)\n .subscribe((response: IDigitalPropertyDetails): void => {\n this.addUrlAuthorizedDomainValidator(\n response.authorizedDomains.map((authorizedDomain: string) =>\n SharedCommonUtility.urlPatternToRegexp(authorizedDomain),\n ),\n );\n }),\n );\n }\n\n private addUrlAuthorizedDomainValidator(domainRestrictionsRegExp: RegExp[]): void {\n const control: AbstractControl = this.form.get(FormField.URL);\n control.addValidators(CustomValidators.domainRestrictionsValidator(domainRestrictionsRegExp));\n }\n\n public submit(): void {\n Object.values(this.form.controls).forEach((control: AbstractControl) => control.updateValueAndValidity());\n\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n\n this.subscription.add(\n this.pageService.createPage(this.context.workspaceId, this.context.digitalPropertyId, this.getFormData()).subscribe({\n next: (createdPage: IPage) => this.onPageCreated(createdPage),\n error: (err: HttpErrorResponse) => this.loadErrorHandler.handleError('add_page_failed', err, AddPageModalComponent.name),\n }),\n );\n }\n\n private getFormData(): FormData {\n const formData: FormData = new FormData();\n formData.set($page.url, this.form.get(FormField.URL).value.trim());\n formData.set($page.name, this.form.get(FormField.TITLE).value.trim());\n\n const description: string = this.form.get(FormField.DESCRIPTION).value?.trim();\n if (SharedCommonUtility.notNullishOrEmpty(description)) {\n formData.set($page.description, description);\n }\n\n if (SharedCommonUtility.notNullish(this.screenshotFile)) {\n formData.set($page.screenshot, this.screenshotFile, this.screenshotFile.name);\n }\n\n const altText: string = this.form.get(FormField.ALT_TEXT).value?.trim();\n if (SharedCommonUtility.notNullishOrEmpty(altText)) {\n formData.set($pageImage.altText, altText);\n }\n\n return formData;\n }\n\n private onPageCreated(createdPage: IPage): void {\n const message: string = this.translateService.instant('add_page_success');\n this.notificationService.success(message, NotificationPosition.Toast, false, AddPageModalComponent.name);\n this.modal.close(createdPage);\n }\n}\n","\n
\n
{{ 'form-field-marked-as-required' | translate }}
\n\n 0\"\n class=\"mb-3\"\n >\n \n \n\n 0\"\n class=\"mb-3\"\n >\n \n \n\n 0\"\n class=\"mb-3\"\n >\n \n \n \n\n \n\n \n \n \n \n\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { NgbActiveOffcanvas, NgbTypeaheadSelectItemEvent } from '@ng-bootstrap/ng-bootstrap';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidationErrors, Validators } from '@angular/forms';\nimport { DsButtonVariants, DsModalColorVariant, DsModalService } from '@levelaccess/design-system';\nimport { BehaviorSubject, Observable, of, Subscription } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, switchMap, withLatestFrom } from 'rxjs/operators';\n\nimport { IModal } from '../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../components/modals/modal-container.component';\nimport { IUser } from '../../../../../../shared/interfaces/user.interface';\nimport { WorkspaceService } from '../../../../services/workspace.service';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport { ProjectService } from '../../../../services/project.service';\nimport { IProjectCreateRequest } from '../../../../../../shared/interfaces/project.requests.interface';\nimport { $project, $createProjectPagePath, CHAR_LIMITS, ProjectStatus } from '../../../../../../shared/constants/project';\nimport { SharedDateUtility } from '../../../../../../shared/utils/date.utility';\nimport { $user } from '../../../../../../shared/constants/user';\nimport { IProject } from '../../../../../../shared/interfaces/project.interface';\nimport { DEBOUNCE_TIME } from '../../../../shared/constants';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { BannerComponent, BannerType } from '../../../../components/banner/banner.component';\nimport { ErrorMessageService } from '../../../../services/error-message.service';\n\nenum FormFields {\n name = 'name',\n key = 'key',\n owner = 'owner',\n}\n\n@Component({\n selector: 'app-create-project-slideout',\n templateUrl: './create-project-slideout.component.html',\n styleUrls: ['./create-project-sliedout.component.scss'],\n})\nexport class CreateProjectSlideoutComponent implements IModal, OnDestroy, OnInit {\n @ViewChild(ModalContainerComponent, { static: false })\n public container: ModalContainerComponent;\n\n @Input() public set workspaceId(value: string) {\n this.workspaceId$.next(value);\n }\n\n public get workspaceId(): string {\n return this.workspaceId$.value;\n }\n\n @Output() public onProjectCreated: EventEmitter;\n\n protected form: UntypedFormGroup;\n\n protected readonly FormFields: typeof FormFields = FormFields;\n protected readonly CHAR_LIMITS: typeof CHAR_LIMITS = CHAR_LIMITS;\n protected readonly $project: typeof $project = $project;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n protected readonly DsModalColorVariant: typeof DsModalColorVariant = DsModalColorVariant;\n protected readonly BannerType: typeof BannerType = BannerType;\n\n private readonly workspaceUsers$: BehaviorSubject;\n private workspaceId$: BehaviorSubject = new BehaviorSubject(null);\n protected searchFunction: (text$: Observable) => Observable;\n private subscriptions: Subscription;\n protected formFieldErrors: Record = {};\n protected selectedUser: IUser;\n protected errorMessage: string;\n\n @ViewChild('errorBanner')\n private errorBanner: BannerComponent;\n\n constructor(\n protected modal: NgbActiveOffcanvas,\n protected modalService: DsModalService,\n private formBuilder: UntypedFormBuilder,\n private workspaceService: WorkspaceService,\n private projectService: ProjectService,\n private translateService: TranslateService,\n private errorMessageService: ErrorMessageService,\n private element: ElementRef,\n private activatedRoute: ActivatedRoute,\n ) {\n this.subscriptions = new Subscription();\n this.workspaceUsers$ = new BehaviorSubject([]);\n this.onProjectCreated = new EventEmitter();\n this.searchFunction = this.search.bind(this);\n this.setupForm();\n this.setupObservables();\n }\n\n private setupObservables(): void {\n this.subscriptions = this.workspaceId$\n .pipe(\n filter((value: string) => SharedCommonUtility.notNullishOrEmpty(value)),\n switchMap((workspaceId: string) => this.workspaceService.getUsers(workspaceId, { includeStaffUsers: true })),\n )\n .subscribe(this.workspaceUsers$);\n }\n\n private setupForm(): void {\n this.form = this.formBuilder.group({\n [FormFields.name]: this.formBuilder.control('', [\n CustomValidators.required,\n Validators.maxLength(CHAR_LIMITS[$project.name]),\n ]),\n [FormFields.key]: this.formBuilder.control(\n '',\n [\n CustomValidators.required,\n Validators.maxLength(CHAR_LIMITS[$project.key]),\n Validators.minLength(CHAR_LIMITS.keyMin),\n CustomValidators.charactersOnly,\n ],\n [this.validateProjectKey.bind(this)],\n ),\n [FormFields.owner]: this.formBuilder.control('', [CustomValidators.required, this.validateSelectedOwner.bind(this)]),\n });\n }\n\n private search(text$: Observable): Observable {\n return text$.pipe(\n withLatestFrom(this.workspaceUsers$),\n map(([searchText, users]: [string, IUser[]]) =>\n users.filter((user: IUser) => user.displayName.toLowerCase().includes(searchText.toLowerCase())),\n ),\n );\n }\n\n private checkFormFields(): void {\n this.formFieldErrors = {};\n if (this.form.valid) {\n return;\n }\n\n if (this.form.get(FormFields.name).errors) {\n const errors: ValidationErrors = this.form.get(FormFields.name).errors;\n if (errors.required) {\n this.formFieldErrors[FormFields.name] = this.translateService.instant('enter_project_name');\n } else {\n this.formFieldErrors[FormFields.name] = this.translateService.instant('invalid_project_name');\n }\n }\n\n if (this.form.get(FormFields.key).errors) {\n const errors: ValidationErrors = this.form.get(FormFields.key).errors;\n if (errors.required) {\n this.formFieldErrors[FormFields.key] = this.translateService.instant('enter_project_key');\n } else if (errors.propertyKeyExists) {\n this.formFieldErrors[FormFields.key] = this.translateService.instant('existing_project_key');\n } else if (errors.minlength || errors.maxlength) {\n this.formFieldErrors[FormFields.key] = this.translateService.instant('invalid_project_key');\n } else {\n this.formFieldErrors[FormFields.key] = this.translateService.instant('invalid_project_key_english');\n }\n }\n\n if (this.form.get(FormFields.owner).errors) {\n this.formFieldErrors[FormFields.owner] = this.translateService.instant('select_project_owner');\n }\n }\n\n private validateProjectKey(input: UntypedFormControl): Observable {\n return of(input.value).pipe(\n delay(DEBOUNCE_TIME),\n distinctUntilChanged(),\n switchMap((projectKey: string) => this.projectService.projectKeyExists(this.workspaceId, projectKey)),\n map((projectKeyExists: boolean) => {\n if (projectKeyExists) {\n return { propertyKeyExists: true };\n }\n\n return null;\n }),\n );\n }\n\n private validateSelectedOwner(input: UntypedFormControl): ValidationErrors | null {\n if (typeof input.value !== 'object' || input.value._id !== this.selectedUser?._id) {\n return { mustBeSelected: true };\n }\n\n return null;\n }\n\n private getCreateProjectRequest(): IProjectCreateRequest {\n return {\n [$project.name]: this.form.get(FormFields.name).value,\n [$project.ownerId]: this.selectedUser[$user._id],\n [$project.key]: this.form.get(FormFields.key).value,\n [$project.startDate]: SharedDateUtility.getDateFromLocalInputDate(new Date().toISOString()),\n [$project.endDate]: null,\n [$project.status]: ProjectStatus.active,\n [$createProjectPagePath.pagePath]: `/${this.activatedRoute.snapshot.firstChild.routeConfig.path}`,\n };\n }\n\n public formatUser(user: IUser): string {\n return user.displayName;\n }\n\n public onSelectUser(event: NgbTypeaheadSelectItemEvent): void {\n this.selectedUser = event.item;\n }\n\n public onBlurOwner(): void {\n const owner: string | IUser = this.form.get(FormFields.owner).value;\n if (typeof owner === 'string') {\n const lowerOwner: string = owner.toLowerCase();\n const user: IUser = this.workspaceUsers$.value.find(\n (value: IUser): boolean => value[$user.displayName].toLowerCase() === lowerOwner,\n );\n if (user) {\n this.form.get(FormFields.owner).setValue(user);\n this.selectedUser = user;\n }\n }\n }\n\n private onCreateProjectSuccess(project: IProject): void {\n this.onProjectCreated.emit(project);\n this.modalService.previousModal();\n }\n\n private onCreateProjectError(error: any): void {\n this.errorMessage = this.errorMessageService.getGlobalErrorResponse(error);\n this.errorBanner.show();\n }\n\n public submit(): void {\n this.errorMessage = undefined;\n this.checkFormFields();\n if (!this.form.valid) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n\n this.subscriptions.add(\n this.projectService.createProject(this.workspaceId, this.getCreateProjectRequest()).subscribe({\n next: this.onCreateProjectSuccess.bind(this),\n error: this.onCreateProjectError.bind(this),\n }),\n );\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(this.form.statusChanges.subscribe(this.checkFormFields.bind(this)));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","\n \n {{ cardTitle | translate }}\n \n\n
\n

{{ 'task_details_label' | translate }}

\n
{{ 'required_fields_label' | translate }}
\n
\n
\n
\n
\n \n \n \n \n \n \n\n
\n
\n \n \n {{ issueIntegrationProjectLabel$ | async }}\n \n
\n\n \n
\n \n \n \n \n
\n \n
\n \n
\n {{ 'error_loading_jira_project_issue_types' | translate }}\n
\n
\n
\n
\n\n
\n \n
\n\n
\n \n \n {{ 'label_description' | translate }}\n \n \n \n
\n\n 0\">\n \n \n \n \n \n \n \n\n \n\n \n\n
\n \n
\n {{ 'azure_filesize_warning' | translate: azureFileSizeLimit }}\n
\n \n
\n \n
\n
\n \n\n
\n \n \n
\n
\n","import { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { catchError, distinctUntilKeyChanged, map, switchMap, take, tap } from 'rxjs/operators';\nimport { pick } from 'lodash';\n\nimport { IModal } from '../../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../../components/modals/modal-container.component';\nimport { $task, $taskFlaw, TaskPriority, TaskSource, TaskStatus } from '../../../../../../../shared/constants/task';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { NotificationPosition } from '../../../../../models/notification.model';\nimport { Api, ApiQueryOption } from '../../../../../../../shared/constants/api';\nimport { ErrorMessageService } from '../../../../../services/error-message.service';\nimport { NotificationService } from '../../../../../services/notification.service';\nimport { ProjectService } from '../../../../../services/project.service';\nimport { CommonUtility } from '../../../../../utility/common.utility';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { ITask } from '../../../../../../../shared/interfaces/task.interface';\nimport {\n MimeTypes,\n MimeTypeToFileExtension,\n SupportedDocumentExtensions,\n SupportedTaskAttachmentMimeType,\n} from '../../../../../../../shared/constants/mime-type';\nimport { ITableColumn, ITableConfig, ITableRow } from '../../../../../components/table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../../../../../components/table/ngb-table/utilities/ngb-table.utilities';\nimport { IUploadClient } from '../../../../../../../shared/interfaces/uploads.interface';\nimport { $uploads } from '../../../../../../../shared/constants/uploads';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { config } from '../../../../../../environments/config.shared';\nimport { IProject } from '../../../../../../../shared/interfaces/project.interface';\nimport {\n IIssueIntegrationConnection,\n IIssueTrackingIssueType,\n} from '../../../../../../../shared/interfaces/issue-integration-connection.interface';\nimport { IssueTrackingService } from '../../../../../services/issue-tracking.service';\nimport { IAutomatedScanIssue, IScanIssues } from '../../../../../../../shared/interfaces/scan-issues.interface';\nimport { $scanIssues } from '../../../../../../../shared/constants/scan-issues';\nimport { ReportService } from '../../../../../services/report.service';\nimport { AccessibilityAuditToolNames } from '../../../../../../../shared/constants/audit-tool';\nimport { alertType } from '../../../../../constants/alert.constants';\nimport { ITaskCreateRequest, ITaskEditRequest } from '../../../../../../../shared/interfaces/task.requests.interface';\nimport { $project } from '../../../../../../../shared/constants/project';\nimport { FileExtension } from '../../../../../../../shared/constants/file-extension';\nimport { $issueIntegrationType, AZURE_ATTACHMENT_MAX_FILESIZE } from '../../../../../../../shared/constants/issue-tracking';\nimport { $issueIntegrationConnection } from '../../../../../../../shared/constants/issue-tracking-connection';\nimport { UserAclService } from '../../../../../services/user-acl.service';\nimport { AclSecurityAdapter } from '../../../../../services/acl.service';\nimport { RequiredSecurities } from '../../../../../../../shared/constants/required-securities';\nimport {\n FileDragAndDropComponent,\n IFileDragAndDropContext,\n} from '../../../../../components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component';\n\nexport interface TaskPriorityOptions {\n priorityValue: string;\n name: string;\n}\n\nenum linkedFindingsTableFields {\n summary = 'summary',\n}\n\nconst attachmentAcceptedTypes: string[] = [\n MimeTypes.CSV,\n MimeTypes.XLSX,\n MimeTypes.JPEG,\n MimeTypes.PNG,\n MimeTypes.XLS,\n MimeTypeToFileExtension[MimeTypes.CSV],\n MimeTypeToFileExtension[MimeTypes.XLSX],\n MimeTypeToFileExtension[MimeTypes.JPEG],\n MimeTypeToFileExtension[MimeTypes.PNG],\n MimeTypeToFileExtension[MimeTypes.XLS],\n '.jpg',\n];\n\nconst MAX_NUM_OF_ATTACHMENTS = 10;\nconst BUFFER_FOR_SYSTEM = 255;\n\nconst ErrorFlawAttachTaskAlreadyLinkedError: string = 'ErrorFlawAttachTaskAlreadyLinked';\nconst ErrorCreateTaskWithDuplicatedFindingError: string = 'ErrorCreateTaskWithDuplicatedFinding';\n\n/**\n * @deprecated to be replaced with the slideout component\n */\n@Component({\n selector: 'app-upsert-task-modal',\n templateUrl: './upsert-task-modal.component.html',\n styleUrls: ['./upsert-task-modal.component.scss'],\n})\nexport class UpsertTaskModalComponent implements IModal, OnInit, OnDestroy {\n private save$: Subject;\n private subscriptions: Subscription;\n private _attachments: IUploadClient[];\n private selectedAttachments: File[];\n private linkedFindings: IAutomatedScanIssue[];\n private autoAttachedGeneratedCSV: File;\n private attachAutoGeneratedFileSubscription: Subscription;\n private static INPUT_NAME_MAX_LENGTH: number = 255;\n private static INPUT_FIELD_MAX_LENGTH: number = 10000 - BUFFER_FOR_SYSTEM;\n\n public availableProjects$: Observable;\n public selectedProject: BehaviorSubject;\n public form: UntypedFormGroup;\n public formValidationRequest: Subject;\n public formValidationRequest$: Observable;\n public disableUploadButtons$: BehaviorSubject;\n public issueIntegrationProjectLabel$: Observable;\n public selectIssueTypeLabel$: Observable;\n public $task: typeof $task;\n public taskPriorityOptions: TaskPriorityOptions[];\n public onUpsert: EventEmitter;\n public attachmentAcceptedTypes: string[];\n public maxUploadSize: number;\n public maxUploadQuantity: number;\n public linkedFindingsTableRows: ITableRow[];\n\n public linkedFindingsTableConfig: ITableConfig;\n public pushTaskToIssueTracking: boolean;\n public issueTrackingIssueTypes$: Observable;\n\n public loadingError$: Subject;\n public canUnlinkTask: boolean;\n public alertType: typeof alertType;\n\n public unlinkTaskErrorMessage: string;\n\n @Input()\n public projectId: string;\n @Input() public workspaceId: string;\n @Input() public digitalPropertyId: string;\n @Input() public scanId: string;\n\n @Input() public toolName: AccessibilityAuditToolNames;\n @Input() public isEdit: boolean;\n\n @Input() public taskSource: TaskSource;\n @Input() public taskId: string;\n @Input() public taskName: string;\n @Input() public description: string;\n @Input() public status: string;\n @Input() public priority: string;\n @Input() public notifyChanges: boolean;\n\n @Input() public set attachments(attachments: IUploadClient[]) {\n this._attachments = attachments || [];\n }\n\n public get attachments(): IUploadClient[] {\n return this._attachments;\n }\n\n @Input() public auditFindings: string[];\n @Input() public designReviewFindings: string[];\n @Input() public issues: IScanIssues;\n\n @Input() public selectedIssues: IAutomatedScanIssue[];\n\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n @ViewChild(FileDragAndDropComponent) public fileAttacher: FileDragAndDropComponent;\n\n constructor(\n private errorMessageService: ErrorMessageService,\n private notificationService: NotificationService,\n private projectService: ProjectService,\n private formBuilder: UntypedFormBuilder,\n private element: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService,\n private issueTrackingService: IssueTrackingService,\n private reportService: ReportService,\n private userAclService: UserAclService,\n ) {\n this.attachmentAcceptedTypes = attachmentAcceptedTypes;\n this.$task = $task;\n this.taskPriorityOptions = Object.keys(TaskPriority).map((priority: string) => {\n return { priorityValue: priority, name: `label_task_priority_${priority}` };\n });\n this.maxUploadSize = config.files.taskMaxUploadSize;\n this.maxUploadQuantity = MAX_NUM_OF_ATTACHMENTS;\n this.loadingError$ = new Subject();\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n this.disableUploadButtons$ = new BehaviorSubject(false);\n this.selectedProject = new BehaviorSubject(null);\n this.taskSource = TaskSource.automated;\n\n this.subscriptions = new Subscription();\n this.save$ = new Subject();\n this.onUpsert = new EventEmitter();\n this.selectedAttachments = [];\n this._attachments = [];\n this.status = TaskStatus.backlog;\n this.auditFindings = [];\n this.designReviewFindings = [];\n this.selectedIssues = [];\n this.linkedFindings = [];\n this.linkedFindingsTableConfig = this.getLinkedFindingsTableConfig();\n\n this.alertType = alertType;\n\n this.pushTaskToIssueTracking = false;\n\n this.form = this.setupForm();\n }\n\n private setupForm(): UntypedFormGroup {\n return this.formBuilder.group({\n [$task.name]: this.formBuilder.control('', [\n CustomValidators.required,\n Validators.maxLength(UpsertTaskModalComponent.INPUT_NAME_MAX_LENGTH),\n ]),\n [$task.description]: this.formBuilder.control('', [Validators.maxLength(UpsertTaskModalComponent.INPUT_FIELD_MAX_LENGTH)]),\n [$task.priority]: this.formBuilder.control(TaskPriority.medium),\n [$task.status]: this.formBuilder.control(this.translateService.instant('default_task_status')),\n [$task.attachments]: this.formBuilder.control('', { updateOn: 'submit' }),\n });\n }\n\n private shouldBlockUnlinkFinding(): boolean {\n return this.linkedFindings.length === 1;\n }\n\n private showUnlinkTaskErrorMessage(): void {\n this.canUnlinkTask = false;\n this.unlinkTaskErrorMessage = this.translateService.instant('unlink_task_must_have_at_least_one');\n }\n\n private getTaskLink(task: ITask): string {\n return `/${Api.projects}/${task.projectId}/${Api.tasks}/${task._id}`;\n }\n\n private getLinkedFindingsTableRows(): ITableRow[] {\n this.canUnlinkTask = true;\n\n const unlinkFinding = (entry: IAutomatedScanIssue): void => {\n if (this.shouldBlockUnlinkFinding()) {\n this.showUnlinkTaskErrorMessage();\n return;\n }\n this.linkedFindings = this.linkedFindings.filter((oldEntry: IAutomatedScanIssue) => {\n return oldEntry.rawFindingId !== entry.rawFindingId;\n });\n this.linkedFindingsTableRows = this.getLinkedFindingsTableRows();\n\n this.changeDetectorRef.detectChanges();\n };\n\n return this.linkedFindings.map((issueDetail: IAutomatedScanIssue): ITableRow => {\n return {\n data: {\n [linkedFindingsTableFields.summary]: NgbTableUtilities.issuesViewDetailsCell({\n selectedIssue: issueDetail,\n issues: this.issues,\n }),\n action: NgbTableUtilities.buttonCell({\n text: this.translateService.instant('unlink'),\n classes: ['btn-link', 'font-weight-500', 'pt-0'],\n attributes: { type: 'button' },\n listeners: {\n click: () => unlinkFinding(issueDetail),\n },\n }),\n },\n };\n });\n }\n\n private getLinkedFindingsTableConfig(): ITableConfig {\n const columns: Record = {\n [linkedFindingsTableFields.summary]: {\n translationKey: 'table_column_summary',\n },\n action: {\n translationKey: 'table_header_action',\n styles: {\n maxWidth: '25%',\n width: '25%',\n },\n },\n };\n return {\n columns: columns,\n caption: this.translateService.instant('linked_findings'),\n };\n }\n\n private handleError(err: any): void {\n if (CommonUtility.extractHTTPErrorName(err) === ErrorFlawAttachTaskAlreadyLinkedError) {\n this.notificationService.info({\n message: this.translateService.instant('label_toast_please_refresh_to_update_finding'),\n header: this.translateService.instant('label_toast_finding_already_linked'),\n autoHide: false,\n });\n return;\n }\n\n if (CommonUtility.extractHTTPErrorName(err) === ErrorCreateTaskWithDuplicatedFindingError) {\n this.notificationService.error(this.translateService.instant('task_duplicated_finding'), NotificationPosition.Toast, true);\n return;\n }\n\n this.notificationService.error(this.translateService.instant('task_save_error'), NotificationPosition.Toast, true);\n }\n\n private onSaveSuccess(task?: ITask): void {\n if (this.notifyChanges) {\n this.notificationService.success(\n this.isEdit\n ? this.translateService.instant('task_update_success')\n : this.translateService.instantHtml('task_has_been_created_successfully', [this.getTaskLink(task), task.taskProjectId]),\n NotificationPosition.Toast,\n true,\n undefined,\n false,\n true,\n );\n }\n this.onUpsert.emit(task);\n this.container.closeModal();\n }\n\n private attachFilesToRequest(request: ITaskCreateRequest | ITaskEditRequest): FormData {\n const formData: FormData = CommonUtility.createFormData(request);\n let counterFiles: number = 0;\n\n const addFileToFormData = (file: File): void => {\n formData.append($task.attachments + `_${counterFiles}`, file, file.name);\n counterFiles += 1;\n };\n\n this.selectedAttachments.forEach(addFileToFormData);\n return formData;\n }\n\n private updateAutoGeneratedCSV(taskProjectId?: string): Observable {\n const issueIds: string = this.linkedFindings.map((i: IAutomatedScanIssue): string => i.rawFindingId).join(',');\n const extraQueryParams: Record = {\n [ApiQueryOption.auditTool]: this.toolName,\n [ApiQueryOption.issueIds]: issueIds,\n };\n if (SharedCommonUtility.notNullish(taskProjectId)) {\n extraQueryParams[Api.taskProjectId] = taskProjectId;\n }\n return this.reportService.getReport(\n this.workspaceId,\n this.digitalPropertyId,\n this.scanId,\n FileExtension.csv,\n this.issues[$scanIssues.ruleId],\n extraQueryParams,\n );\n }\n\n private autoAttachGeneratedCSV(): void {\n this.attachAutoGeneratedFileSubscription?.unsubscribe();\n\n this.attachAutoGeneratedFileSubscription = this.updateAutoGeneratedCSV()\n .pipe(\n take(1),\n tap((file: File): void => {\n this.fileAttacher?.removeEntry(this.autoAttachedGeneratedCSV);\n this.autoAttachedGeneratedCSV = file;\n this.fileAttacher?.onFileChange([file]);\n this.changeDetectorRef.detectChanges();\n }),\n )\n .subscribe();\n\n this.subscriptions.add(this.attachAutoGeneratedFileSubscription);\n }\n\n private updateCsvWithTaskId(): Observable<[string, File]> {\n return this.projectService.getTaskProjectId(this.workspaceId, this.projectId).pipe(\n switchMap((taskProjectId: string) => {\n return combineLatest([of(taskProjectId), this.updateAutoGeneratedCSV(taskProjectId)]);\n }),\n );\n }\n\n private addAutomatedFindingsData(taskCreateRequest: ITaskCreateRequest, taskProjectId?: string): void {\n if (this.linkedFindings.length === 0) {\n return;\n }\n taskCreateRequest[$taskFlaw.scanId] = this.scanId;\n taskCreateRequest[$taskFlaw.digitalPropertyId] = this.digitalPropertyId;\n if (taskProjectId) {\n taskCreateRequest[$task.taskProjectId] = taskProjectId;\n }\n const flaws: string[] = [];\n const unmatchedFlaws: string[] = [];\n this.linkedFindings.forEach((issue: IAutomatedScanIssue): void => {\n if (issue.isRawFinding) {\n unmatchedFlaws.push(issue.rawFindingId);\n } else {\n flaws.push(issue._id);\n }\n });\n if (flaws.length > 0) {\n taskCreateRequest[$taskFlaw.flaws] = flaws;\n }\n if (unmatchedFlaws.length > 0) {\n taskCreateRequest[$taskFlaw.unmatchedFlaws] = unmatchedFlaws;\n }\n }\n\n public get cardTitle(): string {\n return this.isEdit ? 'label_edit_task' : 'label_create_task';\n }\n\n public get submitButton(): string {\n return this.isEdit ? 'save_task_button_label' : 'label_create_task';\n }\n\n public get isIssueTrackingProjectSelected(): boolean {\n const selectedProject: IProject = this.form.get($task.projectId)?.value;\n return SharedCommonUtility.notNullish(selectedProject?.[$project.issueIntegrationProject]);\n }\n\n public get userCanPushIssueIntegration$(): Observable {\n return this.userAclService.createCheckAccessForCurrentUser().pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useWorkspaceFromUser()\n .useFunctionalActions(RequiredSecurities.TI_Issue_Tracking_Basic_Create.functionalActions)\n .check(),\n ),\n map((hasAccess: boolean): boolean => hasAccess && this.isIssueTrackingProjectSelected),\n );\n }\n\n public get azureFileSizeLimit(): string {\n return SharedCommonUtility.formatBytes(AZURE_ATTACHMENT_MAX_FILESIZE, 0);\n }\n\n public get showAzureUploadWarning$(): Observable {\n return this.selectedProject.pipe(\n map((project: IProject) => {\n const integrationType: $issueIntegrationType =\n project?.[$project.issueIntegrationConnection]?.[$issueIntegrationConnection.integrationType];\n return this.pushTaskToIssueTracking && integrationType === $issueIntegrationType.azure;\n }),\n );\n }\n\n public onFileUpload(files: File[]): void {\n this.selectedAttachments = files;\n this.autoAttachedGeneratedCSV = this.selectedAttachments.find(\n (file: File): boolean => file === this.autoAttachedGeneratedCSV,\n );\n this.setAttachmentsValidator();\n }\n\n public onExistingAttachmentsChange(uploads: IUploadClient[]): void {\n this.attachments = uploads;\n this.setAttachmentsValidator();\n }\n\n public setAttachmentsValidator(): void {\n this.form\n .get($task.attachments)\n .setValidators([\n CustomValidators.validateAttachmentFileType(\n this.selectedAttachments,\n SupportedTaskAttachmentMimeType,\n SupportedDocumentExtensions,\n ),\n CustomValidators.validateAttachmentTotalSize(this.selectedAttachments, this.maxUploadSize),\n CustomValidators.validateAttachmentQuantity(this.selectedAttachments, MAX_NUM_OF_ATTACHMENTS, this.attachments.length),\n ]);\n this.form.get($task.attachments).updateValueAndValidity();\n this.disableUploadButtons$.next(this.selectedAttachments.length + this.attachments.length >= MAX_NUM_OF_ATTACHMENTS);\n }\n\n public get uploaderContext(): IFileDragAndDropContext {\n return {\n field: $task.attachments,\n label: this.translateService.instant('label_task_form_attachments'),\n tableTitle: this.translateService.instant('attachments'),\n acceptedFileExtensions: this.attachmentAcceptedTypes,\n maxFileSize: this.maxUploadSize,\n maxTotalFileQuantity: this.maxUploadQuantity,\n required: false,\n };\n }\n\n public submitForm(): void {\n this.formValidationRequest.next();\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n this.save$.next();\n }\n\n public onProjectChange(project: IProject): void {\n this.selectedProject.next(project);\n }\n\n public onPushTaskToIssueTrackingChange(pushTaskToIssueTracking: boolean): void {\n this.pushTaskToIssueTracking = pushTaskToIssueTracking;\n const project: IProject = this.form.get($task.projectId).value;\n const connectionType: $issueIntegrationType =\n project[$project.issueIntegrationConnection][$issueIntegrationConnection.integrationType];\n if (this.pushTaskToIssueTracking && connectionType !== $issueIntegrationType.asana) {\n this.issueTrackingIssueTypes$ = this.issueTrackingService\n .getIssueTrackingIssueTypes(\n project[$project.issueIntegrationConnectionId],\n project[$project.issueIntegrationProject][$project.issueIntegrationProjectId],\n )\n .pipe(\n catchError((_: any) => {\n this.loadingError$.next(true);\n return of(null);\n }),\n );\n } else {\n this.issueTrackingIssueTypes$ = null;\n }\n if (this.pushTaskToIssueTracking && connectionType !== $issueIntegrationType.asana) {\n this.form.addControl($task.issueIntegrationType, this.formBuilder.control(null, [CustomValidators.required]));\n } else {\n this.form.removeControl($task.issueIntegrationType);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private prepareFormDataForCreateTask(): Observable {\n const taskCreateRequest: ITaskCreateRequest = {\n [$task.pushTaskToIssueTracking]: this.pushTaskToIssueTracking ? 'true' : 'false',\n ...pick(this.form.value, $task.name, $task.description, $task.priority, $task.issueIntegrationType),\n [$task.attachments]: this.attachments.map((attachment: IUploadClient) => attachment[$uploads._id]),\n source: this.taskSource,\n };\n\n if (this.auditFindings.length > 0) {\n taskCreateRequest[$task.auditFindingIds] = this.auditFindings;\n }\n\n if (this.designReviewFindings.length > 0) {\n taskCreateRequest[$task.designReviewFindingIds] = this.designReviewFindings;\n }\n\n const updateCsv$: Observable<[string, File]> = this.autoAttachedGeneratedCSV\n ? this.updateCsvWithTaskId()\n : of([undefined, undefined]);\n\n return updateCsv$.pipe(\n map(([taskProjectId, updatedCsv]: [string, File]): FormData => {\n if (updatedCsv) {\n this.selectedAttachments = [\n updatedCsv,\n ...this.selectedAttachments.filter((f: File) => f !== this.autoAttachedGeneratedCSV),\n ];\n this.autoAttachedGeneratedCSV = updatedCsv;\n }\n this.addAutomatedFindingsData(taskCreateRequest, taskProjectId);\n delete taskCreateRequest[$task.status];\n return this.attachFilesToRequest(taskCreateRequest);\n }),\n );\n }\n\n // Modal is dynamically loaded. So lifecycle management has to be done manually.\n public modalInit(prepopulate: boolean): void {\n if (prepopulate) {\n const formSetValueIfExists = (fieldName: string, value: string | IUploadClient[]): void => {\n if (SharedCommonUtility.isNullish(value)) {\n return;\n }\n this.form.get(fieldName).setValue(value);\n };\n\n // Note: attachments are sent directly to a lower component to handle\n formSetValueIfExists($task.name, this.taskName);\n formSetValueIfExists($task.description, this.description);\n formSetValueIfExists($task.status, this.translateService.instant('label_task_status_' + this.status));\n formSetValueIfExists($task.priority, this.priority);\n this.linkedFindings = [...this.selectedIssues];\n this.linkedFindingsTableRows = this.getLinkedFindingsTableRows();\n\n const autogenerateCSV: boolean =\n !SharedCommonUtility.isNullish(this.digitalPropertyId) &&\n !SharedCommonUtility.isNullish(this.workspaceId) &&\n !SharedCommonUtility.isNullish(this.scanId) &&\n !SharedCommonUtility.isNullish(this.toolName);\n if (autogenerateCSV) {\n this.autoAttachGeneratedCSV();\n }\n }\n\n const needToSelectProjectFromWorkspace: boolean =\n SharedCommonUtility.isNullish(this.projectId) && !SharedCommonUtility.isNullish(this.workspaceId);\n\n if (needToSelectProjectFromWorkspace) {\n this.form.addControl($task.projectId, this.formBuilder.control(null, [CustomValidators.required]));\n this.subscriptions.add(\n this.form.get($task.projectId).valueChanges.subscribe(() => {\n this.pushTaskToIssueTracking = false; // NOTE: uncheck checkbox when switching projects\n }),\n );\n this.availableProjects$ = this.projectService.getProjects(this.workspaceId);\n }\n\n this.subscriptions.add(\n this.save$\n .pipe(\n switchMap((): Observable => {\n if (SharedCommonUtility.isNullish(this.projectId)) {\n this.projectId = this.form.get($task.projectId).value._id;\n }\n\n if (this.isEdit) {\n const taskEditRequest: ITaskEditRequest = {\n ...pick(this.form.value, $task.name, $task.description, $task.priority),\n [$task.attachments]: this.attachments.map((attachment: IUploadClient) => attachment[$uploads._id]),\n };\n delete taskEditRequest[$task.status];\n const formData: FormData = this.attachFilesToRequest(taskEditRequest);\n return this.projectService.editTask(this.workspaceId, this.projectId, this.taskId, formData);\n }\n return this.prepareFormDataForCreateTask().pipe(\n switchMap((formData: FormData) => this.projectService.createTask(this.workspaceId, this.projectId, formData)),\n );\n }),\n )\n .subscribe({\n next: (task: ITask) => this.onSaveSuccess(task),\n error: this.handleError.bind(this),\n }),\n );\n this.disableUploadButtons$.next(this.selectedAttachments.length + this.attachments.length >= MAX_NUM_OF_ATTACHMENTS);\n\n const issueIntegrationConnection$: Observable = this.selectedProject.pipe(\n distinctUntilKeyChanged($project._id),\n switchMap((project: IProject): Observable => {\n if (SharedCommonUtility.notNullish(project[$project.issueIntegrationConnectionId])) {\n return this.issueTrackingService.getIssueTrackingConnectionInfo(project[$project.issueIntegrationConnectionId]);\n }\n return of(null);\n }),\n );\n\n this.issueIntegrationProjectLabel$ = issueIntegrationConnection$.pipe(\n map((connection: IIssueIntegrationConnection): string => {\n const integrationType: $issueIntegrationType = connection\n ? connection[$issueIntegrationConnection.integrationType]\n : null;\n return integrationType ? this.translateService.instant(`push_to_${integrationType}`) : this.translateService.instant('');\n }),\n );\n\n this.selectIssueTypeLabel$ = issueIntegrationConnection$.pipe(\n map((connection: IIssueIntegrationConnection): string => {\n const integrationType: $issueIntegrationType = connection\n ? connection[$issueIntegrationConnection.integrationType]\n : null;\n return integrationType\n ? this.translateService.instant(`select_a_${integrationType.toLowerCase()}_issue_type`)\n : this.translateService.instant('');\n }),\n );\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.formValidationRequest$.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DsModalService, DsModalVariant } from '@levelaccess/design-system';\nimport { NgbOffcanvasRef } from '@ng-bootstrap/ng-bootstrap';\n\nimport { FormService } from '../../../../../services/form.service';\nimport { $task } from '../../../../../../../shared/constants/task';\nimport { IProject } from '../../../../../../../shared/interfaces/project.interface';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { $project } from '../../../../../../../shared/constants/project';\nimport { AclSecurityAdapter } from '../../../../../services/acl.service';\nimport { RequiredSecurities } from '../../../../../../../shared/constants/required-securities';\nimport { UserAclService } from '../../../../../services/user-acl.service';\nimport { CreateProjectSlideoutComponent } from '../../create-project-slideout/create-project-slideout.component';\n\n@Injectable()\nexport class UpsertTaskHelper {\n constructor(\n private formService: FormService,\n private userAclService: UserAclService,\n private modalService: DsModalService,\n ) {}\n\n public updateErrorMessages(form: FormGroup): Record {\n if (form.valid) {\n return {};\n }\n\n const formFieldErrors: Record = {};\n\n [$task.name, $task.projectId, $task.issueIntegrationType]\n .filter((key: $task): boolean => form.contains(key))\n .forEach((fieldName: $task): void => {\n const control: AbstractControl = form.get(fieldName);\n if (fieldName === $task.name && (control.dirty || control.touched)) {\n formFieldErrors[fieldName] = this.formService.getErrorMessageForField(control, fieldName, '', 'label_task_form_name');\n } else if (fieldName === $task.projectId && (control.dirty || control.touched)) {\n formFieldErrors[fieldName] = this.formService.getErrorMessageForField(control, fieldName, '', 'project');\n } else if (control && fieldName === $task.issueIntegrationType && (control.dirty || control.touched)) {\n formFieldErrors[fieldName] = this.formService.getErrorMessageForField(control, fieldName, '', 'push_task_as');\n }\n });\n\n return formFieldErrors;\n }\n\n public canPushToIssueTracking$(form: FormGroup): Observable {\n const selectedProject: IProject = form.get($task.projectId)?.value;\n const hasIntegrationProject: boolean = !SharedCommonUtility.isNullish(selectedProject?.[$project.issueIntegrationProject]);\n return this.userAclService.createCheckAccessForCurrentUser().pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useWorkspaceFromUser()\n .useFunctionalActions(RequiredSecurities.TI_Issue_Tracking_Basic_Create.functionalActions)\n .check(),\n ),\n map((hasAccess: boolean): boolean => hasAccess && hasIntegrationProject),\n );\n }\n\n public createNewProject(workspaceId: string): Observable {\n const modalRef: NgbOffcanvasRef = this.modalService.open(\n CreateProjectSlideoutComponent,\n DsModalVariant.slideOut,\n ) as NgbOffcanvasRef;\n\n const component: CreateProjectSlideoutComponent = modalRef.componentInstance;\n component.workspaceId = workspaceId;\n return component.onProjectCreated;\n }\n}\n","\n
\n \n \n
{{ 'form-field-marked-as-required' | translate }}
\n \n
\n
\n 0\"\n >\n \n \n \n \n \n\n
\n
\n \n
\n\n \n 0\"\n class=\"mb-4\"\n >\n \n \n \n {{ issueTrackingIssueType.name }}\n \n \n \n
\n \n
\n {{ 'error_loading_jira_project_issue_types' | translate }}\n
\n
\n
\n
\n
\n \n {{ 'create_project' | translate }}\n \n
\n \n \n
\n\n
\n 0\"\n [required]=\"true\"\n class=\"mb-4\"\n >\n \n \n
\n\n 0\"\n [required]=\"false\"\n class=\"mb-4\"\n [state]=\"DsInputStates.inactive\"\n >\n \n \n\n \n \n \n\n 0\">\n \n \n \n \n \n \n \n\n
\n \n
\n {{ 'azure_filesize_warning' | translate: azureFileSizeLimit }}\n
\n \n
\n
\n \n
\n \n \n
\n \n
\n
\n \n \n \n \n
\n","import { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { catchError, distinctUntilKeyChanged, map, switchMap, take, tap } from 'rxjs/operators';\nimport { pick } from 'lodash';\nimport { DsButtonVariants, DsInputStates, DsModalService } from '@levelaccess/design-system';\nimport { NgbActiveOffcanvas } from '@ng-bootstrap/ng-bootstrap';\n\nimport { IModal } from '../../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../../components/modals/modal-container.component';\nimport { $task, $taskFlaw, TaskPriority, TaskSource, TaskStatus } from '../../../../../../../shared/constants/task';\nimport { CustomValidators } from '../../../../../services/helpers/form-custom-validators';\nimport { NotificationPosition } from '../../../../../models/notification.model';\nimport { Api, ApiQueryOption } from '../../../../../../../shared/constants/api';\nimport { ErrorMessageService } from '../../../../../services/error-message.service';\nimport { NotificationService } from '../../../../../services/notification.service';\nimport { ProjectService } from '../../../../../services/project.service';\nimport { CommonUtility } from '../../../../../utility/common.utility';\nimport { TranslateService } from '../../../../../translate/translate.service';\nimport { ITask } from '../../../../../../../shared/interfaces/task.interface';\nimport {\n MimeTypes,\n MimeTypeToFileExtension,\n SupportedDocumentExtensions,\n SupportedTaskAttachmentMimeType,\n} from '../../../../../../../shared/constants/mime-type';\nimport { ITableColumn, ITableConfig, ITableRow } from '../../../../../components/table/ngb-table/utilities/ngb-table.interface';\nimport { NgbTableUtilities } from '../../../../../components/table/ngb-table/utilities/ngb-table.utilities';\nimport { IUploadClient } from '../../../../../../../shared/interfaces/uploads.interface';\nimport { $uploads } from '../../../../../../../shared/constants/uploads';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { config } from '../../../../../../environments/config.shared';\nimport { IProject } from '../../../../../../../shared/interfaces/project.interface';\nimport {\n IIssueIntegrationConnection,\n IIssueTrackingIssueType,\n} from '../../../../../../../shared/interfaces/issue-integration-connection.interface';\nimport { IssueTrackingService } from '../../../../../services/issue-tracking.service';\nimport { IAutomatedScanIssue, IScanIssues } from '../../../../../../../shared/interfaces/scan-issues.interface';\nimport { $scanIssues } from '../../../../../../../shared/constants/scan-issues';\nimport { ReportService } from '../../../../../services/report.service';\nimport { AccessibilityAuditToolNames } from '../../../../../../../shared/constants/audit-tool';\nimport { alertType } from '../../../../../constants/alert.constants';\nimport { ITaskCreateRequest, ITaskEditRequest } from '../../../../../../../shared/interfaces/task.requests.interface';\nimport { $project } from '../../../../../../../shared/constants/project';\nimport { FileExtension } from '../../../../../../../shared/constants/file-extension';\nimport { $issueIntegrationType, AZURE_ATTACHMENT_MAX_FILESIZE } from '../../../../../../../shared/constants/issue-tracking';\nimport { $issueIntegrationConnection } from '../../../../../../../shared/constants/issue-tracking-connection';\nimport {\n FileDragAndDropComponent,\n IFileDragAndDropContext,\n} from '../../../../../components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component';\nimport { BannerComponent } from '../../../../../components/banner/banner.component';\nimport { UpsertTaskHelper } from './upsert-task-helper';\nimport { ProjectUtility } from '../../../../../utility/project.utility';\n\nexport interface TaskPriorityOptions {\n priorityValue: string;\n name: string;\n}\n\nenum linkedFindingsTableFields {\n summary = 'summary',\n}\n\nconst attachmentAcceptedTypes: string[] = [\n MimeTypes.CSV,\n MimeTypes.XLSX,\n MimeTypes.JPEG,\n MimeTypes.PNG,\n MimeTypes.XLS,\n MimeTypeToFileExtension[MimeTypes.CSV],\n MimeTypeToFileExtension[MimeTypes.XLSX],\n MimeTypeToFileExtension[MimeTypes.JPEG],\n MimeTypeToFileExtension[MimeTypes.PNG],\n MimeTypeToFileExtension[MimeTypes.XLS],\n '.jpg',\n];\n\nconst MAX_NUM_OF_ATTACHMENTS = 10;\nconst BUFFER_FOR_SYSTEM = 255;\n\nconst ErrorFlawAttachTaskAlreadyLinkedError: string = 'ErrorFlawAttachTaskAlreadyLinked';\nconst ErrorCreateTaskWithDuplicatedFindingError: string = 'ErrorCreateTaskWithDuplicatedFinding';\n\n@Component({\n selector: 'app-upsert-task-slideout',\n templateUrl: './upsert-task-slideout.component.html',\n styleUrls: ['./upsert-task-slideout.component.scss'],\n providers: [UpsertTaskHelper],\n})\nexport class UpsertTaskSlideoutComponent implements IModal, OnInit, OnDestroy {\n private save$: Subject;\n private subscriptions: Subscription;\n private _attachments: IUploadClient[];\n private selectedAttachments: File[];\n private linkedFindings: IAutomatedScanIssue[];\n private autoAttachedGeneratedCSV: File;\n private attachAutoGeneratedFileSubscription: Subscription;\n private static INPUT_NAME_MAX_LENGTH: number = 255;\n private static INPUT_FIELD_MAX_LENGTH: number = 10000 - BUFFER_FOR_SYSTEM;\n\n public availableProjects$: BehaviorSubject;\n public selectedProject: BehaviorSubject;\n public form: UntypedFormGroup;\n public formValidationRequest: Subject;\n public formValidationRequest$: Observable;\n public disableUploadButtons$: BehaviorSubject;\n public issueIntegrationProjectLabel$: Observable;\n public selectIssueTypeLabel$: Observable;\n public $task: typeof $task;\n public DsInputStates: typeof DsInputStates;\n public taskPriorityOptions: TaskPriorityOptions[];\n public onUpsert: EventEmitter;\n public attachmentAcceptedTypes: string[];\n public maxUploadSize: number;\n public maxUploadQuantity: number;\n public linkedFindingsTableRows: ITableRow[];\n\n public linkedFindingsTableConfig: ITableConfig;\n public pushTaskToIssueTracking: boolean;\n public issueTrackingIssueTypes$: Observable;\n\n public loadingError$: Subject;\n public canUnlinkTask: boolean;\n public alertType: typeof alertType;\n public readonly DsButtonVariants: typeof DsButtonVariants;\n\n public unlinkTaskErrorMessage: string;\n\n public activeTabId: number;\n public formFieldErrors: Partial>;\n public needToSelectProjectFromWorkspace: boolean;\n\n @Input()\n public projectId: string;\n @Input() public workspaceId: string;\n @Input() public digitalPropertyId: string;\n @Input() public scanId: string;\n\n @Input() public toolName: AccessibilityAuditToolNames;\n @Input() public isEdit: boolean;\n\n @Input() public taskSource: TaskSource;\n @Input() public taskId: string;\n @Input() public taskName: string;\n @Input() public description: string;\n @Input() public status: string;\n @Input() public priority: string;\n @Input() public notifyChanges: boolean;\n\n @Input() public set attachments(attachments: IUploadClient[]) {\n this._attachments = attachments || [];\n }\n\n public get attachments(): IUploadClient[] {\n return this._attachments;\n }\n\n @Input() public auditFindings: string[];\n @Input() public designReviewFindings: string[];\n @Input() public issues: IScanIssues;\n\n @Input() public selectedIssues: IAutomatedScanIssue[];\n\n @ViewChild(ModalContainerComponent, { static: false })\n public container: ModalContainerComponent;\n @ViewChild(FileDragAndDropComponent) public fileAttacher: FileDragAndDropComponent;\n\n @ViewChild('createProjectSuccessBanner')\n private createProjectBanner: BannerComponent;\n protected readonly projectCreatedSuccessMessage$: Subject;\n\n constructor(\n private errorMessageService: ErrorMessageService,\n private notificationService: NotificationService,\n private projectService: ProjectService,\n private formBuilder: UntypedFormBuilder,\n private element: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService,\n private issueTrackingService: IssueTrackingService,\n private reportService: ReportService,\n\n public modal: NgbActiveOffcanvas,\n public modalService: DsModalService,\n private upsertTaskHelper: UpsertTaskHelper,\n ) {\n this.attachmentAcceptedTypes = attachmentAcceptedTypes;\n this.$task = $task;\n this.DsInputStates = DsInputStates;\n this.taskPriorityOptions = Object.keys(TaskPriority).map((priority: string) => {\n return { priorityValue: priority, name: `label_task_priority_${priority}` };\n });\n this.maxUploadSize = config.files.taskMaxUploadSize;\n this.maxUploadQuantity = MAX_NUM_OF_ATTACHMENTS;\n this.loadingError$ = new Subject();\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n this.disableUploadButtons$ = new BehaviorSubject(false);\n this.availableProjects$ = new BehaviorSubject([]);\n this.selectedProject = new BehaviorSubject(null);\n this.taskSource = TaskSource.automated;\n\n this.subscriptions = new Subscription();\n this.save$ = new Subject();\n this.onUpsert = new EventEmitter();\n this.selectedAttachments = [];\n this._attachments = [];\n this.status = TaskStatus.backlog;\n this.auditFindings = [];\n this.designReviewFindings = [];\n this.selectedIssues = [];\n this.linkedFindings = [];\n this.linkedFindingsTableConfig = this.getLinkedFindingsTableConfig();\n\n this.alertType = alertType;\n this.DsButtonVariants = DsButtonVariants;\n\n this.pushTaskToIssueTracking = false;\n this.needToSelectProjectFromWorkspace = false;\n this.form = this.setupForm();\n this.activeTabId = 0;\n this.formFieldErrors = {};\n this.updateErrorMessages = this.updateErrorMessages.bind(this);\n this.projectCreatedSuccessMessage$ = new Subject();\n }\n\n private setupForm(): UntypedFormGroup {\n return this.formBuilder.group({\n [$task.name]: this.formBuilder.control('', [\n CustomValidators.required,\n Validators.maxLength(UpsertTaskSlideoutComponent.INPUT_NAME_MAX_LENGTH),\n ]),\n [$task.description]: this.formBuilder.control('', [\n Validators.maxLength(UpsertTaskSlideoutComponent.INPUT_FIELD_MAX_LENGTH),\n ]),\n [$task.priority]: this.formBuilder.control(TaskPriority.medium),\n [$task.status]: this.formBuilder.control(this.translateService.instant('default_task_status')),\n [$task.attachments]: this.formBuilder.control('', { updateOn: 'submit' }),\n });\n }\n\n private shouldBlockUnlinkFinding(): boolean {\n return this.linkedFindings.length === 1;\n }\n\n private showUnlinkTaskErrorMessage(): void {\n this.canUnlinkTask = false;\n this.unlinkTaskErrorMessage = this.translateService.instant('unlink_task_must_have_at_least_one');\n }\n\n private getTaskLink(task: ITask): string {\n return `/${Api.projects}/${task.projectId}/${Api.tasks}/${task._id}`;\n }\n\n private getLinkedFindingsTableRows(): ITableRow[] {\n this.canUnlinkTask = true;\n\n const unlinkFinding = (entry: IAutomatedScanIssue): void => {\n if (this.shouldBlockUnlinkFinding()) {\n this.showUnlinkTaskErrorMessage();\n return;\n }\n this.linkedFindings = this.linkedFindings.filter((oldEntry: IAutomatedScanIssue) => {\n return oldEntry.rawFindingId !== entry.rawFindingId;\n });\n this.linkedFindingsTableRows = this.getLinkedFindingsTableRows();\n\n this.changeDetectorRef.detectChanges();\n };\n\n return this.linkedFindings.map((issueDetail: IAutomatedScanIssue): ITableRow => {\n return {\n data: {\n [linkedFindingsTableFields.summary]: NgbTableUtilities.issuesViewDetailsCell({\n selectedIssue: issueDetail,\n issues: this.issues,\n }),\n action: NgbTableUtilities.buttonCell({\n text: this.translateService.instant('unlink'),\n classes: ['btn-link', 'font-weight-500', 'pt-0'],\n attributes: { type: 'button' },\n listeners: {\n click: () => unlinkFinding(issueDetail),\n },\n }),\n },\n };\n });\n }\n\n private getLinkedFindingsTableConfig(): ITableConfig {\n const columns: Record = {\n [linkedFindingsTableFields.summary]: {\n translationKey: 'table_column_summary',\n },\n action: {\n translationKey: 'table_header_action',\n styles: {\n maxWidth: '25%',\n width: '25%',\n },\n },\n };\n return {\n columns: columns,\n caption: this.translateService.instant('linked_findings'),\n };\n }\n\n private handleError(err: any): void {\n if (CommonUtility.extractHTTPErrorName(err) === ErrorFlawAttachTaskAlreadyLinkedError) {\n this.notificationService.info({\n message: this.translateService.instant('label_toast_please_refresh_to_update_finding'),\n header: this.translateService.instant('label_toast_finding_already_linked'),\n autoHide: false,\n });\n return;\n }\n\n if (CommonUtility.extractHTTPErrorName(err) === ErrorCreateTaskWithDuplicatedFindingError) {\n this.notificationService.error(this.translateService.instant('task_duplicated_finding'), NotificationPosition.Toast, true);\n return;\n }\n\n this.notificationService.error(this.translateService.instant('task_save_error'), NotificationPosition.Toast, true);\n }\n\n private onSaveSuccess(task?: ITask): void {\n if (this.notifyChanges) {\n this.notificationService.success(\n this.isEdit\n ? this.translateService.instant('task_update_success')\n : this.translateService.instantHtml('task_has_been_created_successfully', [this.getTaskLink(task), task.taskProjectId]),\n NotificationPosition.Toast,\n true,\n undefined,\n false,\n true,\n );\n }\n this.onUpsert.emit(task);\n this.modalService.closeAllModals();\n }\n\n private attachFilesToRequest(request: ITaskCreateRequest | ITaskEditRequest): FormData {\n const formData: FormData = CommonUtility.createFormData(request);\n let counterFiles: number = 0;\n\n const addFileToFormData = (file: File): void => {\n formData.append($task.attachments + `_${counterFiles}`, file, file.name);\n counterFiles += 1;\n };\n\n this.selectedAttachments.forEach(addFileToFormData);\n return formData;\n }\n\n private updateAutoGeneratedCSV(taskProjectId?: string): Observable {\n const issueIds: string = this.linkedFindings.map((i: IAutomatedScanIssue): string => i.rawFindingId).join(',');\n const extraQueryParams: Record = {\n [ApiQueryOption.auditTool]: this.toolName,\n [ApiQueryOption.issueIds]: issueIds,\n };\n if (SharedCommonUtility.notNullish(taskProjectId)) {\n extraQueryParams[Api.taskProjectId] = taskProjectId;\n }\n return this.reportService.getReport(\n this.workspaceId,\n this.digitalPropertyId,\n this.scanId,\n FileExtension.csv,\n this.issues[$scanIssues.ruleId],\n extraQueryParams,\n );\n }\n\n private autoAttachGeneratedCSV(): void {\n this.attachAutoGeneratedFileSubscription?.unsubscribe();\n\n this.attachAutoGeneratedFileSubscription = this.updateAutoGeneratedCSV()\n .pipe(\n take(1),\n tap((file: File): void => {\n this.fileAttacher?.removeEntry(this.autoAttachedGeneratedCSV);\n this.autoAttachedGeneratedCSV = file;\n this.fileAttacher?.onFileChange([file]);\n this.changeDetectorRef.detectChanges();\n }),\n )\n .subscribe();\n\n this.subscriptions.add(this.attachAutoGeneratedFileSubscription);\n }\n\n private updateCsvWithTaskId(): Observable<[string, File]> {\n return this.projectService.getTaskProjectId(this.workspaceId, this.projectId).pipe(\n switchMap((taskProjectId: string) => {\n return combineLatest([of(taskProjectId), this.updateAutoGeneratedCSV(taskProjectId)]);\n }),\n );\n }\n\n private addAutomatedFindingsData(taskCreateRequest: ITaskCreateRequest, taskProjectId?: string): void {\n if (this.linkedFindings.length === 0) {\n return;\n }\n taskCreateRequest[$taskFlaw.scanId] = this.scanId;\n taskCreateRequest[$taskFlaw.digitalPropertyId] = this.digitalPropertyId;\n if (taskProjectId) {\n taskCreateRequest[$task.taskProjectId] = taskProjectId;\n }\n const flaws: string[] = [];\n const unmatchedFlaws: string[] = [];\n this.linkedFindings.forEach((issue: IAutomatedScanIssue): void => {\n if (issue.isRawFinding) {\n unmatchedFlaws.push(issue.rawFindingId);\n } else {\n flaws.push(issue._id);\n }\n });\n if (flaws.length > 0) {\n taskCreateRequest[$taskFlaw.flaws] = flaws;\n }\n if (unmatchedFlaws.length > 0) {\n taskCreateRequest[$taskFlaw.unmatchedFlaws] = unmatchedFlaws;\n }\n }\n\n public get cardTitle(): string {\n return this.isEdit ? 'label_edit_task' : 'label_create_task';\n }\n\n public get submitButton(): string {\n return this.isEdit ? 'save_task_button_label' : 'label_create_task';\n }\n\n public get userCanPushIssueIntegration$(): Observable {\n return this.upsertTaskHelper.canPushToIssueTracking$(this.form);\n }\n\n public get azureFileSizeLimit(): string {\n return SharedCommonUtility.formatBytes(AZURE_ATTACHMENT_MAX_FILESIZE, 0);\n }\n\n public get showAzureUploadWarning$(): Observable {\n return this.selectedProject.pipe(\n map((project: IProject) => {\n const integrationType: $issueIntegrationType =\n project?.[$project.issueIntegrationConnection]?.[$issueIntegrationConnection.integrationType];\n return this.pushTaskToIssueTracking && integrationType === $issueIntegrationType.azure;\n }),\n );\n }\n\n public onFileUpload(files: File[]): void {\n this.selectedAttachments = files;\n this.autoAttachedGeneratedCSV = this.selectedAttachments.find(\n (file: File): boolean => file === this.autoAttachedGeneratedCSV,\n );\n this.setAttachmentsValidator();\n }\n\n public onExistingAttachmentsChange(uploads: IUploadClient[]): void {\n this.attachments = uploads;\n this.setAttachmentsValidator();\n }\n\n public setAttachmentsValidator(): void {\n this.form\n .get($task.attachments)\n .setValidators([\n CustomValidators.validateAttachmentFileType(\n this.selectedAttachments,\n SupportedTaskAttachmentMimeType,\n SupportedDocumentExtensions,\n ),\n CustomValidators.validateAttachmentTotalSize(this.selectedAttachments, this.maxUploadSize),\n CustomValidators.validateAttachmentQuantity(this.selectedAttachments, MAX_NUM_OF_ATTACHMENTS, this.attachments.length),\n ]);\n this.form.get($task.attachments).updateValueAndValidity();\n this.disableUploadButtons$.next(this.selectedAttachments.length + this.attachments.length >= MAX_NUM_OF_ATTACHMENTS);\n }\n\n public get uploaderContext(): IFileDragAndDropContext {\n return {\n field: $task.attachments,\n label: this.translateService.instant('label_task_form_attachments'),\n tableTitle: this.translateService.instant('attachments'),\n acceptedFileExtensions: this.attachmentAcceptedTypes,\n maxFileSize: this.maxUploadSize,\n maxTotalFileQuantity: this.maxUploadQuantity,\n required: false,\n };\n }\n\n public submitForm(): void {\n this.form.markAllAsTouched();\n this.updateErrorMessages();\n this.formValidationRequest.next();\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n this.save$.next();\n }\n\n public onProjectChange(project: IProject): void {\n this.selectedProject.next(project);\n }\n\n public onPushTaskToIssueTrackingChange(pushTaskToIssueTracking: boolean): void {\n this.pushTaskToIssueTracking = pushTaskToIssueTracking;\n const project: IProject = this.form.get($task.projectId).value;\n const connectionType: $issueIntegrationType =\n project[$project.issueIntegrationConnection][$issueIntegrationConnection.integrationType];\n if (this.pushTaskToIssueTracking && connectionType !== $issueIntegrationType.asana) {\n this.issueTrackingIssueTypes$ = this.issueTrackingService\n .getIssueTrackingIssueTypes(\n project[$project.issueIntegrationConnectionId],\n project[$project.issueIntegrationProject][$project.issueIntegrationProjectId],\n )\n .pipe(\n catchError((_: any) => {\n this.loadingError$.next(true);\n return of(null);\n }),\n );\n } else {\n this.issueTrackingIssueTypes$ = null;\n }\n if (this.pushTaskToIssueTracking && connectionType !== $issueIntegrationType.asana) {\n this.form.addControl($task.issueIntegrationType, this.formBuilder.control(null, [CustomValidators.required]));\n } else {\n this.form.removeControl($task.issueIntegrationType);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private prepareFormDataForCreateTask(): Observable {\n const taskCreateRequest: ITaskCreateRequest = {\n [$task.pushTaskToIssueTracking]: this.pushTaskToIssueTracking ? 'true' : 'false',\n ...pick(this.form.value, $task.name, $task.description, $task.priority, $task.issueIntegrationType),\n [$task.attachments]: this.attachments.map((attachment: IUploadClient) => attachment[$uploads._id]),\n source: this.taskSource,\n };\n\n if (this.auditFindings.length > 0) {\n taskCreateRequest[$task.auditFindingIds] = this.auditFindings;\n }\n\n if (this.designReviewFindings.length > 0) {\n taskCreateRequest[$task.designReviewFindingIds] = this.designReviewFindings;\n }\n\n const updateCsv$: Observable<[string, File]> = this.autoAttachedGeneratedCSV\n ? this.updateCsvWithTaskId()\n : of([undefined, undefined]);\n\n return updateCsv$.pipe(\n map(([taskProjectId, updatedCsv]: [string, File]): FormData => {\n if (updatedCsv) {\n this.selectedAttachments = [\n updatedCsv,\n ...this.selectedAttachments.filter((f: File) => f !== this.autoAttachedGeneratedCSV),\n ];\n this.autoAttachedGeneratedCSV = updatedCsv;\n }\n this.addAutomatedFindingsData(taskCreateRequest, taskProjectId);\n delete taskCreateRequest[$task.status];\n return this.attachFilesToRequest(taskCreateRequest);\n }),\n );\n }\n\n protected projectPlaceholder(availableProjects: IProject[]): string {\n const key = availableProjects.length > 0 ? 'select_a_project' : 'no_projects_created';\n return this.translateService.instant(key);\n }\n\n protected projectInputError(availableProjects: IProject[]): string {\n if (availableProjects.length > 0) {\n return this.formFieldErrors[$task.projectId];\n }\n return this.translateService.instant('create_project_to_continue');\n }\n\n // Modal is dynamically loaded. So lifecycle management has to be done manually.\n public modalInit(prepopulate: boolean): void {\n if (prepopulate) {\n const formSetValueIfExists = (fieldName: string, value: string | IUploadClient[]): void => {\n if (SharedCommonUtility.isNullish(value)) {\n return;\n }\n this.form.get(fieldName).setValue(value);\n };\n\n // Note: attachments are sent directly to a lower component to handle\n formSetValueIfExists($task.name, this.taskName);\n formSetValueIfExists($task.description, this.description);\n formSetValueIfExists($task.status, this.translateService.instant('label_task_status_' + this.status));\n formSetValueIfExists($task.priority, this.priority);\n this.linkedFindings = [...this.selectedIssues];\n this.linkedFindingsTableRows = this.getLinkedFindingsTableRows();\n\n const autogenerateCSV: boolean =\n !SharedCommonUtility.isNullish(this.digitalPropertyId) &&\n !SharedCommonUtility.isNullish(this.workspaceId) &&\n !SharedCommonUtility.isNullish(this.scanId) &&\n !SharedCommonUtility.isNullish(this.toolName);\n if (autogenerateCSV) {\n this.autoAttachGeneratedCSV();\n }\n }\n\n this.needToSelectProjectFromWorkspace =\n SharedCommonUtility.isNullish(this.projectId) && !SharedCommonUtility.isNullish(this.workspaceId);\n\n if (this.needToSelectProjectFromWorkspace) {\n this.form.addControl($task.projectId, this.formBuilder.control(null, [CustomValidators.required]));\n this.subscriptions.add(\n this.form.get($task.projectId).valueChanges.subscribe(() => {\n this.pushTaskToIssueTracking = false; // NOTE: uncheck checkbox when switching projects\n }),\n );\n this.subscriptions.add(\n this.projectService.getProjects(this.workspaceId).subscribe({\n next: (value: IProject[]): void => {\n const activeProjects = ProjectUtility.getActiveProjects(value);\n this.availableProjects$.next(activeProjects);\n },\n }),\n );\n }\n\n this.subscriptions.add(\n this.save$\n .pipe(\n switchMap((): Observable => {\n if (SharedCommonUtility.isNullish(this.projectId)) {\n this.projectId = this.form.get($task.projectId).value._id;\n }\n\n if (this.isEdit) {\n const taskEditRequest: ITaskEditRequest = {\n ...pick(this.form.value, $task.name, $task.description, $task.priority),\n [$task.attachments]: this.attachments.map((attachment: IUploadClient) => attachment[$uploads._id]),\n };\n delete taskEditRequest[$task.status];\n const formData: FormData = this.attachFilesToRequest(taskEditRequest);\n return this.projectService.editTask(this.workspaceId, this.projectId, this.taskId, formData);\n }\n return this.prepareFormDataForCreateTask().pipe(\n switchMap((formData: FormData) => this.projectService.createTask(this.workspaceId, this.projectId, formData)),\n );\n }),\n )\n .subscribe({\n next: (task: ITask) => this.onSaveSuccess(task),\n error: this.handleError.bind(this),\n }),\n );\n this.disableUploadButtons$.next(this.selectedAttachments.length + this.attachments.length >= MAX_NUM_OF_ATTACHMENTS);\n\n const issueIntegrationConnection$: Observable = this.selectedProject.pipe(\n distinctUntilKeyChanged($project._id),\n switchMap((project: IProject): Observable => {\n if (SharedCommonUtility.notNullish(project[$project.issueIntegrationConnectionId])) {\n return this.issueTrackingService.getIssueTrackingConnectionInfo(project[$project.issueIntegrationConnectionId]);\n }\n return of(null);\n }),\n );\n\n this.issueIntegrationProjectLabel$ = issueIntegrationConnection$.pipe(\n map((connection: IIssueIntegrationConnection): string => {\n const integrationType: $issueIntegrationType = connection\n ? connection[$issueIntegrationConnection.integrationType]\n : null;\n return integrationType ? this.translateService.instant(`push_to_${integrationType}`) : this.translateService.instant('');\n }),\n );\n\n this.selectIssueTypeLabel$ = issueIntegrationConnection$.pipe(\n map((connection: IIssueIntegrationConnection): string => {\n const integrationType: $issueIntegrationType = connection\n ? connection[$issueIntegrationConnection.integrationType]\n : null;\n return integrationType\n ? this.translateService.instant(`select_a_${integrationType.toLowerCase()}_issue_type`)\n : this.translateService.instant('');\n }),\n );\n }\n\n public updateErrorMessages(): void {\n this.formFieldErrors = this.upsertTaskHelper.updateErrorMessages(this.form);\n }\n\n private newProjectCreated(project: IProject): void {\n this.availableProjects$.next([project, ...this.availableProjects$.value]);\n this.form.get($task.projectId).setValue(project);\n\n this.projectCreatedSuccessMessage$.next(this.translateService.instant('project_created'));\n this.createProjectBanner.show();\n }\n\n public createNewProject(): void {\n this.subscriptions.add(this.upsertTaskHelper.createNewProject(this.workspaceId).subscribe(this.newProjectCreated.bind(this)));\n }\n\n public ngOnInit(): void {\n this.subscriptions.add(\n this.formValidationRequest$.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n }),\n );\n\n this.subscriptions.add(this.form.valueChanges.subscribe(this.updateErrorMessages));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { SharedCommonUtility } from './common.utility';\n\nexport interface ColorRGB {\n red: number;\n green: number;\n blue: number;\n} // red,green,blue: 0-255\nexport interface ColorHSV {\n hue: number;\n saturation: number;\n value: number;\n} // hue: 0-360, saturation,value: 0-1\n\nexport interface IColorResult {\n color: ColorRGB;\n contrast: number;\n distance: number;\n}\n\nconst RGB_RANGE: number = 256;\nconst RGB_MAX_VALUE: number = 255;\nconst HUE_MAX_VALUE: number = 360;\nconst HUE_SEXTANT_VALUE: number = 360 / 6;\nconst SRGB_FACTOR: number = 0.03928;\nconst LUMINANCE_INF: number = 12.92;\nconst LUMINANCE_SUP_CONST: number = 0.055;\nconst LUMINANCE_SUP_CONST2: number = 1.055;\nconst LUMINANCE_EXP: number = 2.4;\nconst CONTRAST_FACTOR: number = 0.05;\nconst RED_LUMINOSITY_FACTOR: number = 0.2126;\nconst GREEN_LUMINOSITY_FACTOR: number = 0.7152;\nconst BLUE_LUMINOSITY_FACTOR: number = 0.0722;\nconst CONTRAST_ROUND_VALUE: number = 100000; // 5 digits rounding\nconst DISTANCE_ROUND_VALUE: number = 100; // 2 digits rounding\nconst FINDER_STEP: number = 1;\nconst MAX_POSSIBLE_VALUE: number = 255;\nconst DEFAULT_MAX_MOVE: number = 60;\nconst CONTRAST_THRESHOLD: number = 0.001;\nconst DEFAULT_MAX_MOVE_HUE: number = 5;\nconst COMPOSANT_INF: number = SRGB_FACTOR / LUMINANCE_INF;\nconst LUMINANCE_INVERSE_EXP: number = 1 / LUMINANCE_EXP;\n\n// Note:\n// This color finder is iterating over RGB components for finding a set of colors that\n// will match the minimum required contrast.\n// The returned colors must be as close as possible to the original color.\n// In future we can provide an alternate algorithm that can iterate over value or saturation\n// in the HSV space for finding the matching colors. We may find different results and performance.\nexport class ColorFinderRGB {\n private validColors: IColorResult[] = [];\n private colorToKeep: ColorRGB;\n private initialColorHSV: ColorHSV;\n private initialColor: ColorRGB;\n private initialContrast: number;\n private minContrast: number;\n private maxContrast: number;\n private minRed: number;\n private maxRed: number;\n private minGreen: number;\n private maxGreen: number;\n private minBlue: number;\n private maxBlue: number;\n private luminosityToReach: number;\n private mustIncreaseLuminosity: boolean;\n private maxMove: number = DEFAULT_MAX_MOVE;\n private maxMoveHue: number = DEFAULT_MAX_MOVE_HUE;\n public testedColors: number = 0;\n\n constructor(_colorToKeep: ColorRGB, _colorToChange: ColorRGB, _minContrast: number) {\n this.colorToKeep = _colorToKeep;\n this.initialColorHSV = ColorsUtility.rgbToHSV(_colorToChange);\n this.initialColor = _colorToChange;\n this.minContrast = _minContrast;\n this.maxContrast = _minContrast + CONTRAST_THRESHOLD;\n this.initialContrast = ColorsUtility.rgbContrast(_colorToKeep, _colorToChange);\n\n if (this.initialContrast < _minContrast) {\n const gap: number = _minContrast - this.initialContrast;\n if (gap < 1) {\n this.maxMove = 60;\n } else if (gap < 2) {\n this.maxMove = 80;\n } else {\n this.maxMove = 110;\n }\n }\n\n const initialLuminosity = ColorsUtility.rgbLuminosity(_colorToChange);\n const colorToKeepLuminosity = ColorsUtility.rgbLuminosity(_colorToKeep);\n this.mustIncreaseLuminosity = initialLuminosity > colorToKeepLuminosity;\n this.luminosityToReach = this.mustIncreaseLuminosity\n ? _minContrast * (colorToKeepLuminosity + CONTRAST_FACTOR) - CONTRAST_FACTOR\n : (colorToKeepLuminosity + CONTRAST_FACTOR) / _minContrast - CONTRAST_FACTOR;\n\n this.minRed = _colorToChange.red < this.maxMove ? 0 : _colorToChange.red - this.maxMove;\n this.maxRed = _colorToChange.red + this.maxMove > MAX_POSSIBLE_VALUE ? MAX_POSSIBLE_VALUE : _colorToChange.red + this.maxMove;\n this.minGreen = _colorToChange.green < this.maxMove ? 0 : _colorToChange.green - this.maxMove;\n this.maxGreen =\n _colorToChange.green + this.maxMove > MAX_POSSIBLE_VALUE ? MAX_POSSIBLE_VALUE : _colorToChange.green + this.maxMove;\n this.minBlue = _colorToChange.blue < this.maxMove ? 0 : _colorToChange.blue - this.maxMove;\n this.maxBlue =\n _colorToChange.blue + this.maxMove > MAX_POSSIBLE_VALUE ? MAX_POSSIBLE_VALUE : _colorToChange.blue + this.maxMove;\n\n this.testedColors = 0;\n }\n\n private addNewColorIfValid(newColor: ColorRGB): void {\n this.testedColors += 1;\n const contrast = ColorsUtility.rgbContrast(newColor, this.colorToKeep);\n\n if (contrast > this.minContrast && contrast < this.maxContrast) {\n const newColorHSV: ColorHSV = ColorsUtility.rgbToHSV(newColor);\n const hueMove = Math.abs(newColorHSV.hue - this.initialColorHSV.hue);\n\n if (hueMove < this.maxMoveHue || hueMove > HUE_MAX_VALUE - this.maxMoveHue) {\n this.validColors.push({\n color: Object.assign({}, newColor),\n contrast: contrast,\n distance: ColorsUtility.rgbCompuPhaseDistance(newColor, this.initialColor),\n });\n }\n }\n }\n\n private iterateRed(colorToChange: ColorRGB): void {\n const newColor: ColorRGB = Object.assign({}, colorToChange);\n\n for (let red = this.minRed; red <= this.maxRed; red += FINDER_STEP) {\n newColor.red = red;\n const redContrib: number = ColorsUtility.getComposantValue(newColor.red) * RED_LUMINOSITY_FACTOR;\n\n for (let green = this.minGreen; green <= this.maxGreen; green += FINDER_STEP) {\n newColor.green = green;\n const greenContrib: number = ColorsUtility.getComposantValue(newColor.green) * GREEN_LUMINOSITY_FACTOR;\n\n const blueContrib = this.luminosityToReach - redContrib - greenContrib;\n if (blueContrib < 0 || blueContrib > BLUE_LUMINOSITY_FACTOR) {\n continue;\n }\n\n let blueValue = this.invertComposant(blueContrib / BLUE_LUMINOSITY_FACTOR);\n blueValue = this.mustIncreaseLuminosity ? Math.ceil(blueValue) : Math.floor(blueValue);\n\n if (blueValue >= this.minBlue && blueValue <= this.maxBlue) {\n newColor.blue = blueValue;\n this.addNewColorIfValid(newColor);\n }\n }\n }\n }\n\n private invertComposant(composant: number): number {\n let srgb: number = 0;\n\n if (composant < COMPOSANT_INF) {\n srgb = composant * LUMINANCE_INF;\n } else {\n srgb = Math.pow(composant, LUMINANCE_INVERSE_EXP) * LUMINANCE_SUP_CONST2 - LUMINANCE_SUP_CONST;\n }\n\n return srgb * MAX_POSSIBLE_VALUE;\n }\n\n public findColors(): IColorResult[] {\n this.validColors = [];\n\n if (this.initialContrast >= this.minContrast) {\n this.validColors.push({ color: this.initialColor, contrast: this.initialContrast, distance: 0 });\n return this.validColors;\n }\n\n this.iterateRed(this.initialColor);\n\n const sortByDistance = (result1: IColorResult, result2: IColorResult): number => {\n return result1.distance - result2.distance;\n };\n\n this.validColors = [...this.validColors].sort(sortByDistance);\n\n return this.validColors;\n }\n}\n\nexport class ColorsUtility {\n public static getComposantValue(composant: number): number {\n const srgb = composant / RGB_MAX_VALUE;\n\n if (srgb <= SRGB_FACTOR) {\n return srgb / LUMINANCE_INF;\n }\n return Math.pow((srgb + LUMINANCE_SUP_CONST) / LUMINANCE_SUP_CONST2, LUMINANCE_EXP);\n }\n\n public static rgbToHSV(rgb: ColorRGB): ColorHSV {\n let min: number = rgb.red < rgb.green ? rgb.red : rgb.green;\n min = min < rgb.blue ? min : rgb.blue;\n let max: number = rgb.red > rgb.green ? rgb.red : rgb.green;\n max = max > rgb.blue ? max : rgb.blue;\n\n const delta: number = max - min;\n\n const hsv: ColorHSV = { hue: 0, saturation: 0, value: max / RGB_MAX_VALUE };\n\n if (delta < 0.001 || max < 0.001) {\n return hsv;\n }\n\n hsv.saturation = delta / max;\n\n if (rgb.red === max) {\n hsv.hue = (rgb.green - rgb.blue) / delta;\n } else if (rgb.green === max) {\n hsv.hue = 2 + (rgb.blue - rgb.red) / delta;\n } else {\n hsv.hue = 4 + (rgb.red - rgb.green) / delta;\n }\n\n hsv.hue = HUE_SEXTANT_VALUE * hsv.hue;\n if (hsv.hue < 0) {\n hsv.hue += HUE_MAX_VALUE;\n }\n\n return hsv;\n }\n\n public static rgbLuminosity(rgb: ColorRGB): number {\n return (\n ColorsUtility.getComposantValue(rgb.red) * RED_LUMINOSITY_FACTOR +\n ColorsUtility.getComposantValue(rgb.green) * GREEN_LUMINOSITY_FACTOR +\n ColorsUtility.getComposantValue(rgb.blue) * BLUE_LUMINOSITY_FACTOR\n );\n }\n\n public static rgbContrast(rgb1: ColorRGB, rgb2: ColorRGB): number {\n const luminosity1: number = ColorsUtility.rgbLuminosity(rgb1);\n const luminosity2: number = ColorsUtility.rgbLuminosity(rgb2);\n\n let contrast: number = 0;\n\n if (luminosity1 > luminosity2) {\n contrast = (luminosity1 + CONTRAST_FACTOR) / (luminosity2 + CONTRAST_FACTOR);\n } else {\n contrast = (luminosity2 + CONTRAST_FACTOR) / (luminosity1 + CONTRAST_FACTOR);\n }\n\n return Math.round(contrast * CONTRAST_ROUND_VALUE) / CONTRAST_ROUND_VALUE;\n }\n\n // Color distance as described in CompuPhase paper, gives a better result (from the eye point of view)\n // than a standard 3D euclidian distance\n // https://www.compuphase.com/cmetric.htm\n public static rgbCompuPhaseDistance(rgb1: ColorRGB, rgb2: ColorRGB): number {\n const meanRed = (rgb1.red + rgb2.red) / 2;\n\n const square =\n (2 + meanRed / RGB_RANGE) * Math.pow(rgb1.red - rgb2.red, 2) +\n 4 * Math.pow(rgb1.green - rgb2.green, 2) +\n (2 + (RGB_MAX_VALUE - meanRed) / RGB_RANGE) * Math.pow(rgb1.blue - rgb2.blue, 2);\n\n return Math.round((Math.sqrt(square) / 3) * DISTANCE_ROUND_VALUE) / DISTANCE_ROUND_VALUE;\n }\n\n // Standard 3D Euclidian distance\n public static rgbEuclidianDistance(rgb1: ColorRGB, rgb2: ColorRGB): number {\n return (\n Math.round(\n Math.sqrt(Math.pow(rgb1.red - rgb2.red, 2) + Math.pow(rgb1.green - rgb2.green, 2) + Math.pow(rgb1.blue - rgb2.blue, 2)) *\n DISTANCE_ROUND_VALUE,\n ) / DISTANCE_ROUND_VALUE\n );\n }\n\n public static rgbFindCloseColors(\n rgbToKeep: ColorRGB,\n rgbToChange: ColorRGB,\n contrastToMeet: number,\n countLimit: number,\n ): IColorResult[] {\n const colorFinder: ColorFinderRGB = new ColorFinderRGB(rgbToKeep, rgbToChange, contrastToMeet);\n\n return colorFinder.findColors().slice(0, countLimit);\n }\n\n public static RGBtoHEX(rgb: ColorRGB): string {\n const toHEX = (x: number): string => {\n const hex = x.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n const rgbToHex = (red: number, green: number, blue: number): string => '#' + [red, green, blue].map(toHEX).join('');\n\n return rgbToHex(rgb.red, rgb.green, rgb.blue);\n }\n\n public static HEXtoRGB(hex: string): ColorRGB | null {\n const result: RegExpMatchArray = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n return {\n red: parseInt(result[1], 16),\n green: parseInt(result[2], 16),\n blue: parseInt(result[3], 16),\n };\n }\n return null;\n }\n\n public static RGBStringToColorRGB(rgb: string): ColorRGB | null {\n const values: string[] = rgb?.replace('rgb(', '').replace(')', '').split(',');\n\n if (SharedCommonUtility.isNullishOrEmpty(values)) {\n return null;\n }\n return {\n red: parseInt(values[0], 10),\n green: parseInt(values[1], 10),\n blue: parseInt(values[2], 10),\n };\n }\n}\n","\n \n {{ 'colour_contrast_finder' | translate }}\n \n\n
\n

{{ 'color_contrast_description_label' | translate }}

\n\n
\n
\n

{{ 'current_values' | translate }}

\n
\n \n
\n

{{ 'foreground' | translate }}

\n

{{ contrastColor }}

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

{{ 'background' | translate }}

\n

{{ contrastBackground }}

\n
\n
\n
\n
\n

{{ 'sample' | translate }}

\n
\n
\n

This is a header and bold text

\n
\n
\n
\n

\n {{ 'ratio' | translate }}: {{ this.ratio }}:1\n

\n
\n
\n\n
\n

\n This is a paragraph with some bold text to test out what it will look like. This is a\n paragraph with some bold text to test out what it would look like.\n

\n
\n
\n
\n

\n {{ 'ratio' | translate }}: {{ this.ratio }}:1\n

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

{{ 'would_you_like_other_colour_suggestions' | translate }}?

\n
\n
\n

{{ 'change_colour_contrast_options_label' | translate }}

\n
\n
\n\n
\n
\n
\n {{ 'cannot_find_color_contrast_suggestions_both_colors_are_the_same' | translate }}\n
\n
\n
\n\n
\n
\n
\n {{ 'cannot_find_color_contrast_suggestions_one_color_is_transparent' | translate }}\n
\n
\n
\n\n
\n
\n
\n

{{ 'contrast_ratio' | translate }}

\n \n \n
\n
\n

{{ 'colour_to_edit' | translate }}

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

\n {{ 'new_contrast_options' | translate }}\n 0\">({{ results.length }})\n

\n
\n\n
\n 0; else noResults\" class=\"table-headed table-borders\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{\n 'color_contrast_rule_suggestions' | translate\n }}\n
{{ 'foreground' | translate }}{{ 'background' | translate }}{{ 'ratio' | translate }}
\n \n

\n {{ resultsGeneratedFor === componentEnum.foreground ? RGBtoHEX(result.color) : contrastColor }}\n

\n
\n \n

\n {{ resultsGeneratedFor === componentEnum.background ? RGBtoHEX(result.color) : contrastBackground }}\n

\n
{{ result.contrast }}\n

\n This is a header and bold text.\n

\n

\n This is a paragraph and bold text.\n

\n
\n
\n\n \n

{{ 'no_results_available' | translate }}

\n
\n
\n
\n
\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\n\nimport { IModalDialogInputData } from '../../interfaces/modal-dialog.interface';\nimport { ColorFinderRGB, ColorRGB, ColorsUtility, IColorResult } from '../../../../shared/utils/colors.utility';\nimport { IASLintRuleData } from '../../../../shared/interfaces/aslint.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { IModal } from '../modals/modal.interface';\nimport { ModalContainerComponent } from '../modals/modal-container.component';\nimport { IAutomatedScanIssue } from '../../../../shared/interfaces/scan-issues.interface';\nimport { $scanIssues } from '../../../../shared/constants/scan-issues';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { $flaw } from '../../../../shared/constants/flaw';\nimport { $auditFinding } from '../../../../shared/constants/audit-finding';\n\nconst ratioOptions: number[] = [3, 4.5, 7];\nenum componentEnum {\n background = 'background',\n component = 'component',\n foreground = 'foreground',\n ratio = 'ratio',\n colourToEdit = 'colourToEdit',\n changeTextType = 'changeTextType',\n}\n\n@Component({\n selector: 'app-color-contrast-rule-suggestions',\n templateUrl: './color-contrast-rule-suggestions.component.html',\n styleUrls: ['./color-contrast-rule-suggestions.component.scss'],\n})\nexport class ColorContrastRuleSuggestionsComponent implements OnInit, IModal {\n @Input() public modalInputData: IModalDialogInputData;\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n public componentEnum: { [key in keyof typeof componentEnum]: any };\n public ratioOptions: number[];\n public results: IColorResult[];\n public resultsGeneratedFor: componentEnum | null;\n public ratio: string;\n public contrastBackground: string;\n public contrastColor: string;\n public colorContrastForm: UntypedFormGroup;\n public formData: any;\n public searchedAtLeastOnce: boolean;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private modalService: ModalService,\n ) {\n this.ratio = '';\n this.contrastBackground = '';\n this.contrastColor = '';\n this.ratioOptions = ratioOptions;\n this.formData = {};\n this.results = [];\n this.componentEnum = componentEnum;\n this.searchedAtLeastOnce = false;\n this.resultsGeneratedFor = null;\n\n this.createForm();\n }\n\n private createForm(): void {\n const formConfig = {\n [componentEnum.changeTextType]: new UntypedFormControl(componentEnum.foreground),\n [componentEnum.ratio]: new UntypedFormControl(this.ratioOptions[1]),\n };\n this.colorContrastForm = this.formBuilder.group(formConfig);\n }\n\n private setContrastRatio(): void {\n try {\n const ratio: string | null = /ratio:(.*):1/gim.exec(this.modalInputData.data[$flaw.data][$auditFinding.actualResult])[1];\n\n if (ratio === null) {\n this.ratio = '0';\n } else {\n this.ratio = ratio;\n }\n } catch (e) {\n console.error('[ColorContrastRuleSuggestionsComponent.setContrastRatio]', e);\n }\n }\n\n public findClosestColorsThatPassesContrastRatio(): void {\n this.searchedAtLeastOnce = true;\n let colorFinder: ColorFinderRGB;\n\n if (this.contrastBackground === 'transparent' || this.contrastColor === 'transparent') {\n return;\n }\n\n const background: ColorRGB = this.HEXtoRGB(this.contrastBackground);\n const color: ColorRGB = this.HEXtoRGB(this.contrastColor);\n\n this.formData = this.colorContrastForm.value;\n\n if (this.formData[componentEnum.changeTextType] === componentEnum.background) {\n this.resultsGeneratedFor = componentEnum.background;\n colorFinder = new ColorFinderRGB(\n { red: color.red, green: color.green, blue: color.blue },\n { red: background.red, green: background.green, blue: background.blue },\n this.colorContrastForm.value.ratio,\n );\n } else {\n this.resultsGeneratedFor = componentEnum.foreground;\n colorFinder = new ColorFinderRGB(\n { red: background.red, green: background.green, blue: background.blue },\n { red: color.red, green: color.green, blue: color.blue },\n this.colorContrastForm.value.ratio,\n );\n }\n\n this.results = colorFinder.findColors();\n }\n\n public RGBtoHEX(rgb: ColorRGB): string {\n return ColorsUtility.RGBtoHEX(rgb);\n }\n\n public HEXtoRGB(hex: string): ColorRGB | null {\n return ColorsUtility.HEXtoRGB(hex);\n }\n\n public closeModal(): void {\n this.modalService.closeModal();\n }\n\n public tableSampleColumnStyles(result: IColorResult): { [key: string]: any } | null {\n if (this.resultsGeneratedFor === componentEnum.foreground) {\n return { 'background-color': this.contrastBackground, color: this.RGBtoHEX(result.color) };\n }\n\n if (this.resultsGeneratedFor === componentEnum.background) {\n return { 'background-color': this.RGBtoHEX(result.color), color: this.contrastColor };\n }\n\n return null;\n }\n\n public tableSampleColumnTextStyles(result: IColorResult): { [key: string]: any } | null {\n if (this.resultsGeneratedFor === componentEnum.foreground) {\n return { color: this.RGBtoHEX(result.color) };\n }\n\n if (this.resultsGeneratedFor === componentEnum.background) {\n return { color: this.contrastColor };\n }\n\n return null;\n }\n\n public ngOnInit(): void {\n if (SharedCommonUtility.isNullish(this.modalInputData.data[$flaw.data][$auditFinding.auditData])) {\n // Note: this is a fake colors as in the previous ASLint colors weren't passed\n this.contrastBackground = 'transparent';\n this.contrastColor = 'transparent';\n\n return;\n }\n\n this.setContrastRatio();\n\n const ruleReportData: IASLintRuleData = this.modalInputData.data[$flaw.data][$scanIssues.auditData];\n\n this.contrastBackground = ruleReportData.contrastBackground;\n this.contrastColor = ruleReportData.contrastColor;\n\n if (typeof ruleReportData.contrastRatio !== 'undefined') {\n this.ratio = ruleReportData.contrastRatio;\n }\n }\n}\n","
\n
\n \n \n \n
\n \n \n \n \n
\n
\n \n\n \n
\n\n
\n \n
\n @if (isMobileType$ | async) {\n {{ issue.title }} - {{ issue.url }}\n } @else {\n {{ issue.title }} - {{ issue.url }}\n }\n
\n
\n\n @if ((isMobileType$ | async) === false) {\n
\n \n
\n {{ getFlawComponentName() }}\n
\n
\n }\n\n \n \n {{ 'finding_in_shadow_dom' | translate }}\n \n \n \n {{ 'finding_in_iframe' | translate }}\n \n
0\">\n
\n {{ locationLabel$ | async | translate }}:\n \n
\n
\n
\n
\n
\n {{ elementLabel$ | async | 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
\n \n \n \n \n
\n
\n \n
\n {{ 'finding_first_seen_label' | translate }} {{ issue[$flaw.firstFound].date | prettifyDate }}\n
\n
\n {{ 'finding_last_seen_label' | translate }} {{ issue[$flaw.lastFound].date | prettifyDate }}\n
\n
\n {{ 'finding_previous_status_label' | translate }} \"{{ 'label_' + getFlawPreviousStatus() | translate }}\"\n
\n
\n {{ 'finding_times_seen_label' | translate }} {{ issue.flawOccurrence }}\n
\n
\n
\n
\n \n
\n\n","import { Component, ComponentRef, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Icons, IconStyles } from '@levelaccess/design-system';\nimport { map } from 'rxjs/operators';\n\nimport {\n IAutomatedScanIssue,\n IScanIssueAuditData,\n IScanIssues,\n} from '../../../../../../../../shared/interfaces/scan-issues.interface';\nimport { $scanIssues } from '../../../../../../../../shared/constants/scan-issues';\nimport {\n ACCESS_ENGINE_SHADOW_DOM_SEPARATOR_MATCHER,\n AccessibilityAuditToolNames,\n IFRAME_DOM_SEPARATOR_MATCHER,\n} from '../../../../../../../../shared/constants/audit-tool';\nimport { RuleAuditHistoryType } from '../../../../../../../../shared/constants/rule-audit-history';\nimport { ColorContrastRuleSuggestionsComponent } from '../../../../../../components/color-contrast-rule-suggestions/color-contrast-rule-suggestions.component';\nimport { ModalService } from '../../../../../../services/modal.service';\nimport { $flaw } from '../../../../../../../../shared/constants/flaw';\nimport { FlawService } from '../../../../../../services/flaw.service';\nimport { SharedCommonUtility } from '../../../../../../../../shared/utils/common.utility';\nimport { UrlFactory } from '../../../../../../components/share-issue-report-url/share-issue-report-url.component';\nimport { ScanReportService } from '../../../../../../services/scan-report.service';\nimport { $auditFinding } from '../../../../../../../../shared/constants/audit-finding';\nimport { TranslateService } from '../../../../../../translate/translate.service';\nimport { CommonUtility } from '../../../../../../utility/common.utility';\nimport { AlertType } from '../../../../../../components/common-alert-box/common-alert-box.component';\nimport { UserDigitalPropertyService } from '../../../../../../services/user-digital-property.service';\nimport { AngularUtility } from '../../../../../../utility/angular.utility';\n\n@Component({\n selector: 'app-issues-view-details',\n templateUrl: './issues-view-details.component.html',\n styleUrls: ['./issues-view-details.component.scss'],\n})\nexport class IssuesViewDetailsComponent {\n @Input()\n public issue: IAutomatedScanIssue;\n @Input()\n public ruleDetails: IScanIssues;\n @Input()\n public scanId: string;\n @Input()\n public toolName: AccessibilityAuditToolNames;\n\n public issueType: RuleAuditHistoryType = RuleAuditHistoryType.issue;\n public $scanIssues: typeof $scanIssues;\n public $flaw: typeof $flaw;\n public url: UrlFactory;\n public readonly AccessibilityAuditToolNames: typeof AccessibilityAuditToolNames;\n\n public selectorId: string;\n public nodesHTMLId: string;\n\n public readonly AlertType: typeof AlertType = AlertType;\n public readonly Icons: typeof Icons = Icons;\n public readonly IconStyles: typeof IconStyles = IconStyles;\n\n constructor(\n private modalService: ModalService,\n private flawService: FlawService,\n private scanReportService: ScanReportService,\n private translateService: TranslateService,\n private userDigitalPropertyService: UserDigitalPropertyService,\n ) {\n this.$scanIssues = $scanIssues;\n this.$flaw = $flaw;\n this.url = async (): Promise => {\n return this.scanReportService.getIssueShortLink(\n this.scanId,\n this.toolName,\n this.ruleDetails[$scanIssues.ruleId],\n this.issue.rawFindingId,\n );\n };\n this.AccessibilityAuditToolNames = AccessibilityAuditToolNames;\n this.selectorId = CommonUtility.createUniqueDOMId('selectorId');\n this.nodesHTMLId = CommonUtility.createUniqueDOMId('nodesHTMLId');\n }\n\n public openColorContrastModal(): void {\n const modalComponentRef: ComponentRef = this.modalService.open(\n ColorContrastRuleSuggestionsComponent,\n );\n\n modalComponentRef.instance.modalInputData = {\n data: this.issue,\n };\n }\n\n public isColorContrastRule(issue: IAutomatedScanIssue): boolean {\n const data: IScanIssueAuditData = issue[$flaw.data][$auditFinding.auditData];\n\n const hasColorContrastData = (issueData: IScanIssueAuditData): boolean => {\n return 'contrastBackground' in issueData && 'contrastColor' in issueData;\n };\n\n return SharedCommonUtility.isNullish(data) === false && hasColorContrastData(data);\n }\n\n public getFlawPreviousStatus(): string {\n return this.flawService.getPreviousStatus(this.issue);\n }\n\n public getFlawComponentName(): string {\n if (SharedCommonUtility.notNullish(this.issue?.data?.componentData?.componentName)) {\n return this.issue.data.componentData.componentName;\n }\n\n const noComponentBody: string = this.translateService.instant('not_associated_with_a_component');\n return `<${noComponentBody}>`;\n }\n\n public get isElementFromShadowDom(): boolean {\n return ACCESS_ENGINE_SHADOW_DOM_SEPARATOR_MATCHER.test(this.issue.data[$auditFinding.elementReference]);\n }\n\n public get isElementFromIframe(): boolean {\n return IFRAME_DOM_SEPARATOR_MATCHER.test(this.issue.data[$auditFinding.elementReference]);\n }\n\n public get isMobileType$(): Observable {\n return this.userDigitalPropertyService.isMobileDigitalProperty$.pipe(AngularUtility.shareRef());\n }\n\n public get locationLabel$(): Observable {\n return this.isMobileType$.pipe(\n map((isMobile: boolean): string => {\n return isMobile ? 'location' : 'label_xpath_or_css';\n }),\n );\n }\n\n public get elementLabel$(): Observable {\n return this.isMobileType$.pipe(\n map((isMobile: boolean): string => {\n return isMobile ? 'xml_element' : 'audit_rule_property_nodesHTML';\n }),\n );\n }\n}\n","
\n

{{ 'all_fields_are_required' | 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

{{ 'your_password_needs_to_meet_following_requirements' | translate }}

\n\n \n\n \n
    \n
  • \n \n \n {{ error.translation }}\n
  • \n
\n
\n
\n \n \n
\n
\n
\n\n \n\n
\n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { UserService } from '../../../services/user.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { A11yService } from '../../../services/a11y.service';\nimport { FormService } from '../../../services/form.service';\nimport { NotificationService } from '../../../services/notification.service';\nimport { $user } from '../../../../../shared/constants/user';\nimport { IUserPasswordSettings, IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { AbstractChangePasswordComponent } from '../abstract/change-password-abstract.component';\nimport { PASSWORD_ERRORS } from '../password-errors.constants';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: '../abstract/change-password-abstract.component.html',\n styleUrls: ['../abstract/change-password-abstract.component.scss'],\n})\nexport class ChangePasswordComponent extends AbstractChangePasswordComponent implements OnInit {\n public currentPasswordRequired: boolean = true;\n public independentForm: boolean = true;\n public syncErrorsToCheck: PASSWORD_ERRORS[] = [\n PASSWORD_ERRORS.minlength,\n PASSWORD_ERRORS.noLowercase,\n PASSWORD_ERRORS.noUppercase,\n PASSWORD_ERRORS.noNumberOrSpecial,\n ];\n public asyncErrorsToCheck: PASSWORD_ERRORS[] = [PASSWORD_ERRORS.beenUsed];\n public submitButtonLabel: string = 'change_password';\n\n constructor(\n protected userService: UserService,\n protected formBuilder: UntypedFormBuilder,\n protected translateService: TranslateService,\n protected a11yService: A11yService,\n protected formService: FormService,\n protected notificationService: NotificationService,\n ) {\n super(userService, formBuilder, translateService, a11yService, formService, notificationService);\n this.createForm();\n this.formChangePassword.disable();\n }\n\n private getFormData(): IUserPasswordSettings {\n return {\n [$user.currentPassword]: this.formChangePassword.get($user.currentPassword).value,\n [$user.newPassword]: this.formChangePassword.get($user.newPassword).value,\n };\n }\n\n protected submit(): void {\n const passwordSettings: IUserPasswordSettings = this.getFormData();\n\n this.subscriptions.add(\n this.userService.changePassword(passwordSettings).subscribe({\n next: this.onSaveUserSettingsSuccess.bind(this),\n error: this.onSaveUserSettingsError.bind(this),\n }),\n );\n }\n\n private onGetUserSettingsSuccess(user: IUserServerResponse): void {\n this.currentPasswordRequired = true;\n this.formChangePassword.enable();\n }\n\n private onGetUserSettingsError(response: HttpErrorResponse): void {\n this.currentPasswordRequired = false;\n console.error(response);\n }\n\n public ngOnInit(): void {\n const userDataSubscription: Subscription = this.userService.userDataChanged$.subscribe({\n next: this.onGetUserSettingsSuccess.bind(this),\n error: this.onGetUserSettingsError.bind(this),\n });\n\n this.subscriptions.add(userDataSubscription);\n\n super.ngOnInit();\n }\n}\n","

{{ 'deactivate_account' | translate }}

\n\n\n

{{ 'account_deactivated_successfully' | translate }}

\n

{{ 'account_deactivated_unblock_request' | translate: [appConfig.company.emailSupport, appConfig.APP.NAME] }}

\n

{{ 'redirect_counter' | translate }}: {{ redirectCounter }}

\n\n\n

\n {{ 'account_deactivated_unsuccessfully' | translate }}\n

\n

\n {{\n 'start_the_process_of_deactivating_your_account' | translate: appConfig.APP.NAME\n }}\n {{ 'your_profile_will_no_longer_be_accessible_to_anyone' | translate }}\n

\n\n\n
\n

{{ 'tell_us_why_youre_closing_your_account' | translate }}

\n\n
    \n
  • \n {{ 'i_have_a_duplicate_account' | translate }}\n
  • \n
  • \n {{ 'im_getting_too_many_emails' | translate }}\n
  • \n
  • \n \n
  • \n
  • \n {{ 'i_have_a_privacy_concern' | translate }}\n
  • \n
  • \n \n
  • \n
\n\n
\n \n \n
\n\n

{{ 'what_else_you_should_know' | translate }}

\n\n
    \n
  1. {{ 'deactivate_account_restore_info' | translate }}
  2. \n
  3. \n
\n\n
\n
\n \n
\n
\n
\n\n","import { Component, OnDestroy } from '@angular/core';\nimport { Router, Scroll } from '@angular/router';\nimport { UntypedFormGroup, UntypedFormBuilder, UntypedFormControl } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { IUserDeactivateAccount } from '../../interfaces/user.interface';\nimport { TranslateService } from '../../translate/translate.service';\nimport { A11yService } from '../../services/a11y.service';\nimport { UserService } from '../../services/user.service';\nimport { config } from '../../../environments/config.shared';\nimport { CommonUtility } from '../../utility/common.utility';\nimport { ErrorHandlerService } from '../../services/error-handler.service';\nimport { alertType } from '../../constants/alert.constants';\nimport { Api } from '../../../../shared/constants/api';\nimport { WindowService } from '../../services/window.service';\n\nconst DEFAULT_REDIRECT_AFTER_SUCCESS = 30; // seconds\n\n@Component({\n selector: 'app-deactivate-account',\n templateUrl: './deactivate-account.component.html',\n styleUrls: ['./deactivate-account.component.scss'],\n})\nexport class DeactivateAccountComponent implements OnDestroy {\n private routerChangesSubscription: Subscription;\n\n public isDeactivatingAccountCollapsed: boolean;\n public isAccountDeactivatedSuccessfully: boolean | null;\n public form: UntypedFormGroup;\n public appConfig: any;\n public alertType: typeof alertType;\n public deactivatingErrorMessage: string | null;\n public redirectCounter: number;\n public Api: typeof Api;\n\n constructor(\n private router: Router,\n private userService: UserService,\n private formBuilder: UntypedFormBuilder,\n private translateService: TranslateService,\n private a11yService: A11yService,\n private errorHandlerService: ErrorHandlerService,\n private windowService: WindowService,\n ) {\n this.appConfig = config;\n this.routerChangesSubscription = this.router.events.subscribe(this.handleUrlFragment.bind(this));\n this.isDeactivatingAccountCollapsed = true;\n this.isAccountDeactivatedSuccessfully = null;\n this.alertType = alertType;\n this.deactivatingErrorMessage = null;\n this.redirectCounter = DEFAULT_REDIRECT_AFTER_SUCCESS;\n this.Api = Api;\n\n this.createForm();\n }\n\n private createForm(): void {\n const formConfig = {\n duplicateAccount: new UntypedFormControl(null),\n tooManyEmails: new UntypedFormControl(null),\n notGettingValueFromMembership: new UntypedFormControl(null),\n privacyConcern: new UntypedFormControl(null),\n otherReason: new UntypedFormControl(null),\n userFeedback: new UntypedFormControl(null),\n };\n\n this.form = this.formBuilder.group(formConfig);\n }\n\n private handleUrlFragment(event: Event): void {\n if (event instanceof Scroll && (event as Scroll).anchor === 'deactivatingAccount') {\n this.isDeactivatingAccountCollapsed = false;\n this.routerChangesSubscription.unsubscribe();\n }\n }\n\n private getFormData(form: UntypedFormGroup): any {\n const data: IUserDeactivateAccount = {\n duplicateAccount: form.get('duplicateAccount').value,\n tooManyEmails: form.get('tooManyEmails').value,\n notGettingValueFromMembership: form.get('notGettingValueFromMembership').value,\n privacyConcern: form.get('privacyConcern').value,\n otherReason: form.get('otherReason').value,\n userFeedback: form.get('userFeedback').value,\n };\n\n return data;\n }\n\n private onDeactivateAccountSuccess(): void {\n const scrollHomePageIntoView = (): void => {\n CommonUtility.scrollPageToTop();\n };\n\n const countRedirect = (): void => {\n this.redirectCounter -= 1;\n\n if (this.redirectCounter !== 0) {\n return;\n }\n\n window.clearInterval(redirectIntervalId);\n\n this.router\n .navigate(['/'])\n .then(scrollHomePageIntoView)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n };\n\n this.isAccountDeactivatedSuccessfully = true;\n this.userService.cleanAfterDeactivateAccount();\n\n CommonUtility.setFocusToElement('successDeactivatingAccount');\n const redirectIntervalId: number = window.setInterval(countRedirect, 1000);\n }\n\n private onDeactivateAccountError(response: HttpErrorResponse): void {\n this.isAccountDeactivatedSuccessfully = false;\n this.form.enable();\n CommonUtility.setFocusToElement('errorDeactivatingAccount');\n\n console.error('onDeactivateAccountError', response);\n }\n\n public toggleDeactivatingAccountSection(): void {\n this.isDeactivatingAccountCollapsed = !this.isDeactivatingAccountCollapsed;\n\n if (this.isDeactivatingAccountCollapsed) {\n this.router\n .navigate([], { preserveFragment: false })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n return;\n }\n\n this.router\n .navigate([], { fragment: 'deactivatingAccount' })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n public onSubmitDeactivateAccount(event: Event): void {\n if (CommonUtility.isFormActionElement(event) === false) {\n return;\n }\n\n const isDeactivationConfirmed = this.windowService.confirm(this.translateService.instant('deactivate_account_confirmation'));\n\n if (isDeactivationConfirmed === false) {\n return;\n }\n\n this.form.disable();\n\n this.a11yService.setMessage(this.translateService.instant('deactivating_your_account'));\n\n const angularFormData: IUserDeactivateAccount = this.getFormData(this.form);\n\n this.routerChangesSubscription.add(\n this.userService\n .deactivateAccount(angularFormData)\n .subscribe(this.onDeactivateAccountSuccess.bind(this), this.onDeactivateAccountError.bind(this)),\n );\n }\n\n public ngOnDestroy(): void {\n this.routerChangesSubscription.unsubscribe();\n }\n}\n","
\n
\n
\n
\n

{{ pageTitle }}

\n
\n
\n

{{ 'change_password' | translate }}

\n \n \n
\n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { RoutingService } from '../../../../../services/routing.service';\nimport { AppConfigService } from '../../../../../services/app-config.service';\n\n@Component({\n selector: 'app-account-settings',\n templateUrl: './account-settings.component.html',\n})\nexport class AccountSettingsComponent implements OnInit {\n @Input() displayHeader: boolean = true;\n public pageTitle: string;\n\n constructor(\n private routingService: RoutingService,\n private appConfigService: AppConfigService,\n ) {\n this.pageTitle = '';\n }\n\n public get isNotUsingExternalIdp(): boolean {\n return !this.appConfigService.isUsingExternalIdp();\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AccountSettingsComponent } from './account-settings.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: AccountSettingsComponent,\n data: {\n title: ['sidebar_user_settings'],\n },\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountSettingsRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AccountSettingsRoutingModule } from './account-settings.routing';\nimport { SharedModule } from '../../../../../shared/shared.module';\nimport { AccountSettingsComponent } from './account-settings.component';\nimport { ChangePasswordComponent } from '../../../../../components/change-password/from-settings/change-password.component';\nimport { ChangePasswordFromEmailComponent } from '../../../../../components/change-password/from-email/change-password-from-email.component';\nimport { DeactivateAccountComponent } from '../../../../../components/deactivate-account/deactivate-account.component';\nimport { ChangePasswordFromSignupComponent } from '../../../../../components/change-password/from-signup/change-password-from-signup.component';\n\n@NgModule({\n imports: [CommonModule, SharedModule, AccountSettingsRoutingModule],\n declarations: [\n AccountSettingsComponent,\n ChangePasswordComponent,\n ChangePasswordFromEmailComponent,\n ChangePasswordFromSignupComponent,\n DeactivateAccountComponent,\n ],\n exports: [AccountSettingsComponent, ChangePasswordFromEmailComponent, ChangePasswordFromSignupComponent],\n})\nexport class AccountSettingsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayReverse',\n})\nexport class ArrayReversePipe implements PipeTransform {\n public transform(value: any[], condition: boolean = true): any[] {\n if (Array.isArray(value)) {\n return condition ? value.slice().reverse() : value;\n }\n return [];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Pipe({\n name: 'arraytostring',\n})\nexport class ArrayToStringPipe implements PipeTransform {\n public transform(value: any[]): string {\n if (SharedCommonUtility.isNullishOrEmpty(value)) {\n return '';\n }\n return value.join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ntype unit = 'bytes' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB';\ntype unitPrecisionMap = {\n [u in unit]: number;\n};\n\nconst defaultPrecisionMap: unitPrecisionMap = {\n bytes: 0,\n KB: 0,\n MB: 1,\n GB: 1,\n TB: 2,\n PB: 2,\n};\n\n@Pipe({ name: 'bytesToReadableUnits' })\nexport class BytesToReadableUnitsPipe implements PipeTransform {\n private readonly units: unit[] = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n transform(bytesInput: number = 0, precision: number | unitPrecisionMap = defaultPrecisionMap): string {\n let bytes: number = bytesInput;\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\n return '?';\n }\n\n let unitIndex = 0;\n\n while (bytes >= 1024) {\n bytes /= 1024;\n unitIndex++;\n }\n\n const unit: unit = this.units[unitIndex];\n\n if (typeof precision === 'number') {\n return `${bytes.toFixed(Number(precision))} ${unit}`;\n }\n return `${bytes.toFixed(precision[unit])} ${unit}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Pipe({\n name: 'compactNumber',\n})\nexport class CompactNumberPipe implements PipeTransform {\n transform(value: number): string {\n return SharedCommonUtility.formatCompactNumber(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtility } from '../utility/date.utility';\n\n@Pipe({\n name: 'dateTime',\n})\nexport class DateTimePipe implements PipeTransform {\n public transform(value: string | Date, ...args: unknown[]): string {\n return DateUtility.getFormattedISODate(value instanceof Date ? value.toISOString() : value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ellipsis',\n})\nexport class EllipsisPipe implements PipeTransform {\n public transform(value: string, args?: number): string {\n if (!value) {\n return '';\n }\n const limit: number = args > 0 ? args : 10;\n const trail: string = '...';\n\n return value.length > limit ? value.substring(0, limit).trim() + trail : value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { FormService } from '../services/form.service';\n\n@Pipe({\n name: 'fieldInvalid',\n pure: false,\n})\nexport class FieldInvalidPipe implements PipeTransform {\n public constructor(private formService: FormService) {}\n\n public transform(value: UntypedFormGroup, field: string): boolean {\n return this.formService.isFieldValid(field, value) === false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n public transform(items: T[], searchText: string, fieldName: string): T[] {\n if (typeof items === 'undefined' || items === null) {\n return [];\n }\n\n if (typeof searchText === 'undefined' || searchText === null || searchText.length === 0) {\n return items;\n }\n\n const toSearch: string = searchText.toLowerCase();\n\n const filter = (item: any): boolean | undefined => {\n if (item === null || typeof item === 'undefined') {\n return undefined;\n }\n const deepValue: any = fieldName.split('.').reduce((prev: any, current: string) => prev[current], item);\n if (typeof deepValue !== 'undefined' && deepValue !== null) {\n return deepValue.toString().toLowerCase().includes(toSearch);\n }\n return false;\n };\n return items.filter(filter);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Pipe({\n name: 'isNullish',\n})\nexport class IsNullishPipe implements PipeTransform {\n public transform(value: any): boolean {\n return SharedCommonUtility.isNullish(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keys',\n})\nexport class KeysPipe implements PipeTransform {\n public transform(value: any, ...exclude: string[]): string[] {\n if (value === null || typeof value === 'undefined' || typeof value !== 'object') {\n return [];\n }\n return Object.keys(value).filter((val: string): boolean => exclude.includes(val) === false);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '../translate/translate.service';\n\n@Pipe({ name: 'languageName' })\nexport class LanguageNamePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(langCode: string): string {\n try {\n const language: string = this.translateService.currentLang;\n\n // @ts-ignore\n const languageNames: Intl.DisplayNames = new Intl.DisplayNames([language], {\n type: 'language',\n });\n\n return languageNames.of(langCode) !== 'null' ? languageNames.of(langCode) : '';\n } catch (error) {\n return langCode;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Options } from 'linkifyjs/lib/linkify';\nimport linkifyHtml from 'linkifyjs/lib/linkify-html';\n\nconst defaultOptions: Partial = {\n target: '_system',\n};\n\n@Pipe({\n name: 'linkifyHtml',\n})\nexport class LinkifyHtmlPipe implements PipeTransform {\n transform(value: string, options?: Partial): string {\n return value ? linkifyHtml(value, Object.assign({}, defaultOptions, options)) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Options } from 'linkifyjs/lib/linkify';\nimport linkifyStr from 'linkifyjs/lib/linkify-string';\n\nconst defaultOptions: Partial = {\n target: '_system',\n};\n\n@Pipe({\n name: 'linkify',\n})\nexport class LinkifyPipe implements PipeTransform {\n public transform(value: string, options?: Partial): string {\n return value ? linkifyStr(value, Object.assign({}, defaultOptions, options)) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtility } from '../utility/date.utility';\n\n@Pipe({\n name: 'prettifyDate',\n})\nexport class PrettifyDatePipe implements PipeTransform {\n public transform(value: string | Date): string {\n return DateUtility.prettifyDate(value instanceof Date ? value : new Date(value));\n }\n}\n","import { DomSanitizer, SafeValue } from '@angular/platform-browser';\nimport { PipeTransform, Pipe, SecurityContext } from '@angular/core';\nimport DOMPurify from 'isomorphic-dompurify';\n\n@Pipe({ name: 'safeContent' })\nexport class SanitizerPipe implements PipeTransform {\n constructor(private readonly domSanitizer: DomSanitizer) {}\n\n private bypassSecurityTrust(context: SecurityContext, purifiedValue: string): SafeValue | null {\n switch (context) {\n case SecurityContext.HTML:\n return this.domSanitizer.bypassSecurityTrustHtml(purifiedValue);\n case SecurityContext.STYLE:\n return this.domSanitizer.bypassSecurityTrustStyle(purifiedValue);\n case SecurityContext.SCRIPT:\n return this.domSanitizer.bypassSecurityTrustScript(purifiedValue);\n case SecurityContext.URL:\n return this.domSanitizer.bypassSecurityTrustUrl(purifiedValue);\n case SecurityContext.RESOURCE_URL:\n return this.domSanitizer.bypassSecurityTrustResourceUrl(purifiedValue);\n default:\n return null;\n }\n }\n\n public transform(value: string | Node, context: SecurityContext = SecurityContext.HTML): SafeValue | null {\n return this.bypassSecurityTrust(context, DOMPurify.sanitize(value));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'translateCut',\n})\nexport class TranslateCutPipe implements PipeTransform {\n transform(value: string, index: number): string {\n const cutIndex = Number(index);\n return value.split('|')[cutIndex] || '';\n }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlSegment } from '@angular/router';\nimport { IBreadcrumbsResolver } from '../../components/breadcrumbs/breadcrumbs.shared';\nimport { IPostProcessBreadcrumb } from './breadcrumbs.config';\n\nexport abstract class AbstractBreadcrumbsResolver implements IBreadcrumbsResolver {\n public abstract resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): IPostProcessBreadcrumb;\n\n public getFullPath(route: ActivatedRouteSnapshot): string {\n const relativePath = (segments: UrlSegment[]): string =>\n segments.reduce((path: string, urlSegment: UrlSegment): string => `${path}/${urlSegment.path}`, '');\n\n const fullPath = (routes: ActivatedRouteSnapshot[]): string =>\n routes.reduce((url: string, snapshot: ActivatedRouteSnapshot): string => url + relativePath(snapshot.url), '');\n\n return fullPath(route.pathFromRoot);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nimport { IBreadcrumb } from '../../components/breadcrumbs/breadcrumbs.shared';\n\nexport type IPostProcessBreadcrumb = Promise | Observable | IBreadcrumb[];\n\nexport type IPostProcessFunc = (crumbs: IBreadcrumb[]) => IPostProcessBreadcrumb;\n\n@Injectable()\nexport class BreadcrumbsConfig {\n public postProcess: IPostProcessFunc;\n}\n","import { ActivatedRouteSnapshot, Data, Params, RouterStateSnapshot } from '@angular/router';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { RoutingService } from '../../services/routing.service';\nimport { BreadcrumbParamsHandling } from '../../components/breadcrumbs/breadcrumbs.shared';\nimport { IPostProcessBreadcrumb } from './breadcrumbs.config';\nimport { AbstractBreadcrumbsResolver } from './abstract-breadcrumbs.resolver';\n\n@Injectable({ providedIn: 'root' })\nexport class DefaultBreadcrumbsResolver extends AbstractBreadcrumbsResolver {\n public constructor(private routingService: RoutingService) {\n super();\n }\n\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): IPostProcessBreadcrumb {\n const data: Data = route.data;\n const path: string = this.getFullPath(route);\n\n const isLinkToPageAvailable: boolean = data.breadcrumbs && data.breadcrumbs.isLinkToPageAvailable;\n const paramsHandling: BreadcrumbParamsHandling =\n typeof data.breadcrumbs?.queryParamsHandling === 'string' ? data.breadcrumbs.queryParamsHandling : 'merge';\n\n const queryParams: Params = paramsHandling === 'none' ? {} : route.queryParams;\n\n return this.routingService.resolvePageTitle(data.title).pipe(\n map((pageTitle: string) => [\n {\n text: null,\n path: path,\n textTranslated: pageTitle,\n isLinkToPageAvailable: isLinkToPageAvailable,\n queryParams: queryParams,\n queryParamsHandling: paramsHandling,\n },\n ]),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\n\nimport { A11Y_MESSAGE_TIMEOUT_IN_MILLIS } from '../shared/constants';\n\n@Injectable()\nexport class A11yService {\n constructor(private liveAnnouncer: LiveAnnouncer) {}\n\n public setMessage(message: string): void {\n this.liveAnnouncer.announce(message, 'polite', A11Y_MESSAGE_TIMEOUT_IN_MILLIS);\n }\n\n public setAlertMessage(message: string): void {\n this.liveAnnouncer.announce(message, 'assertive', A11Y_MESSAGE_TIMEOUT_IN_MILLIS);\n }\n}\n","import { AclPermissions } from '../constants/acl';\nimport { FunctionalActions } from '../interfaces/security-role.interface';\n\nexport interface IAclSecurityAdapterCheckOptions {\n readonly requireFunctionalActions?: boolean;\n readonly throwIfFunctionalActionsUndefined?: boolean;\n}\n\nexport abstract class AclSecurityAdapterBase {\n protected options: IAclSecurityAdapterCheckOptions;\n protected newSecurityOnly?: boolean;\n protected skipNewSecurity?: boolean;\n protected permissions?: AclPermissions[];\n\n protected checkEntityLevel?: boolean;\n protected workspaceId?: string;\n protected digitalPropertyId?: string;\n protected functionalActions?: FunctionalActions;\n\n protected constructor() {\n this.options = {};\n }\n\n public useOptions(options: IAclSecurityAdapterCheckOptions): this {\n this.options = options;\n return this;\n }\n\n public useForNewSecurityOnly(): this {\n this.newSecurityOnly = true;\n return this;\n }\n\n public skipNewSecurityCheck(): this {\n this.skipNewSecurity = true;\n return this;\n }\n\n public useEntityLevel(): this {\n this.checkEntityLevel = true;\n return this;\n }\n\n public useAdmin(): this {\n this.checkEntityLevel = true;\n this.workspaceId = undefined;\n this.digitalPropertyId = undefined;\n return this;\n }\n\n public useWorkspaceId(workspaceId: string): this {\n this.checkEntityLevel = true;\n this.workspaceId = workspaceId;\n return this;\n }\n\n public useDigitalPropertyId(digitalPropertyId: string): this {\n this.checkEntityLevel = true;\n this.digitalPropertyId = digitalPropertyId;\n return this;\n }\n\n public useFunctionalActions(functionalActions: FunctionalActions): this {\n this.functionalActions = functionalActions;\n return this;\n }\n\n abstract check(): boolean | Promise;\n}\n","import { Injectable } from '@angular/core';\n\nimport { IUserServerResponse } from '../../../shared/interfaces/user.interface';\nimport { $user } from '../../../shared/constants/user';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { ISecuritySet } from '../../../shared/interfaces/security-set.interface';\nimport { FunctionalActions } from '../../../shared/interfaces/security-role.interface';\nimport { SecurityUtility } from '../../../shared/utils/security.utility';\nimport { ISecurityEntity } from '../../../shared/interfaces/security-group.interface';\nimport { IDigitalPropertyListItem } from '../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { AclSecurityAdapterBase } from '../../../shared/services/acl-security-adapter';\nimport { FeatureFlagService } from './feature-flag/feature-flag.service';\nimport { FeatureFlagCollection } from '../../../shared/interfaces/feature-flag.interface';\nimport { SecurityEntityLevel } from '../../../shared/constants/security-group';\nimport { IRequiredSecurity } from '../../../shared/interfaces/security.interface';\n\nexport class AclSecurityAdapter extends AclSecurityAdapterBase {\n constructor(\n private readonly user: IUserServerResponse,\n private aclService: AclService,\n ) {\n super();\n }\n\n public useRequiredSecurity(requiredSecurity: IRequiredSecurity, isAdmin: boolean): this {\n const allowAdminAccess: boolean =\n requiredSecurity.entityLevel !== SecurityEntityLevel.admin && requiredSecurity.allowAdminAccess;\n\n if (isAdmin && allowAdminAccess) {\n return this.useAdmin();\n } else if (SharedCommonUtility.notNullish(requiredSecurity.entityLevel)) {\n switch (requiredSecurity.entityLevel) {\n case SecurityEntityLevel.admin:\n case SecurityEntityLevel.tenant:\n return this.useEntityLevel();\n case SecurityEntityLevel.digitalProperty:\n return this.useWorkspaceFromUser().useDigitalPropertyFromUser();\n default:\n return this.useWorkspaceFromUser();\n }\n }\n\n return this;\n }\n\n private getDigitalPropertyFromUser(): IDigitalPropertyListItem {\n const lastUsedDigitalPropertyId: string = this.user[$user.lastUsedDigitalProperty];\n if (SharedCommonUtility.isNullishOrEmpty(lastUsedDigitalPropertyId)) {\n return undefined;\n }\n\n const findFn = (property: IDigitalPropertyListItem): boolean => property[$digitalProperty._id] === lastUsedDigitalPropertyId;\n return this.user[$user.digitalProperties].find(findFn);\n }\n\n private runNewSecurityCheck(): boolean {\n if (SharedCommonUtility.isNullish(this.functionalActions) && this.options.throwIfFunctionalActionsUndefined) {\n throw new Error('[AclSecurityAdapter.check] Functional actions are not defined');\n }\n\n if (SharedCommonUtility.isNullish(this.functionalActions) && this.options.requireFunctionalActions) {\n return false;\n }\n\n return this.aclService.canUserAccessResourceWithNewSecurity(\n this.user,\n this.functionalActions,\n this.checkEntityLevel,\n this.workspaceId,\n this.digitalPropertyId,\n );\n }\n\n public useWorkspaceFromUser(): this {\n const digitalProperty: IDigitalPropertyListItem = this.getDigitalPropertyFromUser();\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return this;\n }\n\n this.checkEntityLevel = true;\n this.workspaceId = digitalProperty[$digitalProperty.workspace]._id;\n return this;\n }\n\n public useTenantFromUser(): this {\n this.checkEntityLevel = true;\n return this;\n }\n\n public useDigitalPropertyFromUser(): this {\n const digitalProperty: IDigitalPropertyListItem = this.getDigitalPropertyFromUser();\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return this;\n }\n\n this.checkEntityLevel = true;\n this.digitalPropertyId = digitalProperty[$digitalProperty._id];\n return this;\n }\n\n public check(): boolean {\n return this.runNewSecurityCheck();\n }\n\n public reset(): void {\n this.checkEntityLevel = undefined;\n this.workspaceId = undefined;\n this.digitalPropertyId = undefined;\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AclService {\n constructor(private featureFlagService: FeatureFlagService) {}\n\n public canUserAccessResourceWithNewSecurity(\n user: IUserServerResponse,\n requiredFunctionalActions?: FunctionalActions,\n checkEntityLevel?: boolean,\n workspaceId?: string,\n digitalPropertyId?: string,\n ): boolean {\n const userSecuritySet: ISecuritySet = user?.[$user.securitySet];\n if (SharedCommonUtility.isNullish(userSecuritySet)) {\n return false;\n }\n\n const securityEntity: ISecurityEntity = checkEntityLevel\n ? SecurityUtility.createSecurityEntity(user[$user.currentTenantId], workspaceId, digitalPropertyId)\n : undefined;\n\n const hasAccess: boolean = SecurityUtility.hasAccess(userSecuritySet, requiredFunctionalActions, securityEntity);\n if (!hasAccess && this.featureFlagService.variation(FeatureFlagCollection.permissionLogging, false, true)) {\n console.trace();\n console.error('[Permission logging] required functional actions', requiredFunctionalActions);\n console.error('user security', userSecuritySet);\n console.error('security entity', securityEntity);\n }\n return hasAccess;\n }\n\n public createAccessCheck(user: IUserServerResponse): AclSecurityAdapter {\n return new AclSecurityAdapter(user, this);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuthClientConfig } from '@auth0/auth0-angular';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\n\nimport { RestBuilder } from './helpers/rest.builder';\nimport { IAppConfig, IIdpConfig } from '../../../shared/interfaces/app-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppConfigService {\n private appConfig: IAppConfig;\n private restBuilder: RestBuilder;\n\n constructor(\n private httpHandler: HttpBackend,\n private externalAuthConfig: AuthClientConfig,\n ) {\n this.appConfig = null;\n this.restBuilder = new RestBuilder();\n }\n\n public async fetchConfig(): Promise {\n if (this.appConfig === null) {\n const url: string = this.restBuilder.create().config().getApiUrl();\n // build new http client here so angular interceptor will not be triggered\n // this is to avoid trigger external auth interceptor before external idp client is configured\n // https://github.com/auth0/auth0-angular/issues/70#issuecomment-715225756\n const httpClient: HttpClient = new HttpClient(this.httpHandler);\n this.appConfig = await httpClient.get(url).toPromise();\n const idpConfig: IIdpConfig = this.appConfig?.idpConfig;\n if (idpConfig?.external) {\n this.externalAuthConfig.set({\n domain: idpConfig.domain,\n clientId: idpConfig.clientId,\n authorizationParams: {\n audience: idpConfig.audience,\n redirect_uri: location.origin,\n },\n useRefreshTokens: true,\n httpInterceptor: {\n allowedList: [\n {\n uri: '/api/*',\n allowAnonymous: true,\n },\n ],\n },\n });\n }\n }\n return this.appConfig;\n }\n\n public isUsingExternalIdp(): boolean {\n return this.appConfig?.idpConfig?.external === true;\n }\n\n public useCookiesForAuth(): boolean {\n return this.appConfig?.authConfig?.useCookiesForAuth === true;\n }\n\n public getZendeskUrl(): string {\n return this.appConfig?.externalAppConfig?.zendeskUrl || '';\n }\n\n public getZendeskEmailConsultationFormId(): string {\n return this.appConfig?.externalAppConfig?.zendeskEmailConsultationFormId || '';\n }\n\n public getZendeskManualEvaluationServiceRequestFormId(): string {\n return this.appConfig?.externalAppConfig?.zendeskManualEvaluationServiceRequestFormId || '';\n }\n\n public getZendeskProductSupportFormId(): string {\n return this.appConfig?.externalAppConfig?.zendeskProductSupportFormId || '';\n }\n\n public getWalkMeScriptUrl(): string {\n return this.appConfig?.externalAppConfig?.walkMeScriptUrl || '';\n }\n\n public getGoogleTagManagerId(): string {\n return this.appConfig?.externalAppConfig?.gtmId || '';\n }\n\n public getAmplitudeKey(): string {\n return this.appConfig?.externalAppConfig?.amplitudeKey || '';\n }\n\n public getDownloadToolsUrl(): string {\n return this.appConfig?.externalAppConfig?.downloadToolsUrl || '';\n }\n\n public getDownloadToolsIndexPath(): string {\n return this.appConfig?.externalAppConfig?.downloadToolsIndexPath || '';\n }\n\n public getDownloadToolsDcaPathWindows(): string {\n return this.appConfig?.externalAppConfig?.downloadToolsDcaPathWindows || '';\n }\n\n public getDownloadToolsDcaPathMac(): string {\n return this.appConfig?.externalAppConfig?.downloadToolsDcaPathMac || '';\n }\n\n public isTenantEnabled(): boolean {\n return this.appConfig?.tenantConfig?.isTenantEnabled || false;\n }\n\n public getTenantBaseUrl(): string {\n return this.appConfig?.tenantConfig?.baseUrl;\n }\n\n public getMaximumDownloadablePagesPerScan(): number {\n return this.appConfig?.scanConfig?.maximumDownloadablePagesPerScan;\n }\n\n public getDefaultPdfPagesTestLimit(): number {\n return this.appConfig?.pdfPagesTestConfig?.defaultPdfPagesTestLimit;\n }\n\n public getDefaultMonitoringPagesPerDPLimit(): number {\n return this.appConfig?.monitoringConfig?.defaultMonitoringPagesPerDPLimit;\n }\n\n public getDefaultAcademySeatLimit(): number {\n return this.appConfig?.academyConfig?.defaultSeatLimit;\n }\n\n public getMinAcademySeatLimit(): number {\n return this.appConfig?.academyConfig?.minSeatLimit;\n }\n\n public getMaxAcademySeatLimit(): number {\n return this.appConfig?.academyConfig?.maxSeatLimit;\n }\n\n public getAbsolutePdfPagesTestLimit(): number {\n return this.appConfig?.pdfPagesTestConfig?.absolutePdfPagesTestLimit;\n }\n\n public getAbsoluteMonitoringPagesPerDPLimit(): number {\n return this.appConfig?.monitoringConfig?.absoluteMonitoringPagesPerDPLimit;\n }\n\n public getAbsoluteMonitoringPagesPerDPLimitWithFF(): number {\n return this.appConfig?.monitoringConfig?.absoluteMonitoringPagesPerDPLimitWithFF;\n }\n\n public isNewSecurityEnabled(): boolean {\n return this.appConfig?.isNewSecurityEnabled;\n }\n\n public getMaxNumberOfUserApiKeys(): number {\n return this.appConfig?.apiConfig?.maxNumberOfUserApiKeys;\n }\n\n public getMaxActionsOrScanPoints(): number {\n return this.appConfig?.automatedUserFlowConfig?.maxActionsOrScanPoints;\n }\n\n public getAcademyDefaultContentTag(): string {\n return this.appConfig?.academyConfig?.defaultContentTag;\n }\n\n public getAcademyDisabled(): boolean {\n return this.appConfig?.academyConfig?.disabled;\n }\n\n public getHarnessSDKClientKey(): string {\n return this.appConfig?.externalAppConfig?.harnessClientSDKKey;\n }\n\n public getPendoApiKey(): string {\n return this.appConfig?.externalAppConfig?.pendoKey;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport { RestService, AuditRulesParams } from './rest.service';\nimport { UserPropertyService } from './user-property.service';\nimport { IAuditRule, IAuditRuleLibrary, IAuditRuleServerResponse } from '../../../shared/interfaces/audit-rule.interface';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { $sortingOrder } from '../../../shared/constants/sort';\nimport { IAuditDbRule } from '../../../shared/interfaces/audit-rule.db.interface';\nimport { IAuditRuleCreateRequest, IAuditRuleEditRequest } from '../../../shared/interfaces/audit-rule.request.interface';\nimport { IToggleRuleRequest } from '../../../shared/interfaces/ignore.interface';\nimport { IAuditStandard } from '../../../shared/interfaces/audit-standard.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuditRuleService {\n constructor(\n private restService: RestService,\n private userService: UserPropertyService,\n ) {}\n\n public findCurrentDigitalPropertyAuditRules(\n limit: number = 50,\n skip: number = 0,\n filters: { [key: string]: string[] } = {},\n excludeHistory: boolean = false,\n sortBy: string = null,\n sortOrder: $sortingOrder = null,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.findDigitalPropertyAuditRules(\n workspaceId,\n digitalPropertyId,\n limit,\n skip,\n filters,\n excludeHistory,\n sortBy,\n sortOrder,\n ),\n ),\n );\n }\n\n public findAuditRules(options?: AuditRulesParams): Observable {\n return this.restService.findAuditRules(options);\n }\n\n public toggleAuditRule(ruleId: string, enable: boolean, reason: string, isBulkOperation?: boolean): Observable {\n const request: IToggleRuleRequest = {\n ruleId,\n enable,\n reason,\n isBulkOperation,\n };\n\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.toggleRule(workspaceId, digitalPropertyId, request),\n ),\n );\n }\n\n public getLibraries(): Observable {\n return this.restService.getAuditRuleLibraries().pipe(\n map((libraries: IAuditRuleLibrary[]) => {\n return [...libraries].sort((a: IAuditRuleLibrary, b: IAuditRuleLibrary) => a.name.localeCompare(b.name));\n }),\n );\n }\n\n public findRuleByID(ruleId: string): Observable {\n return this.restService.findRuleByID(ruleId);\n }\n\n public createAuditRule(ruleCreationRequest: IAuditRuleCreateRequest): Observable {\n return this.restService.createAuditRule(ruleCreationRequest);\n }\n\n public editRuleByRuleId(ruleEditionRequest: IAuditRuleEditRequest, ruleId: string): Observable {\n return this.restService.editRuleById(ruleEditionRequest, ruleId);\n }\n\n public getRuleIds(): Observable {\n return this.restService.ruleIds();\n }\n\n public deleteRule(ruleId: string): Observable {\n return this.restService.deleteRule(ruleId);\n }\n\n public getStandardsForLibrary(libraryCode: string): Observable {\n return this.restService.getStandardsForLibrary(libraryCode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { HttpResponse } from '@angular/common/http';\n\nimport { config } from '../../environments/config.shared';\nimport { BrowserLocalStorageService } from './browser-local-storage.service';\nimport { BrowserSessionStorageService } from './browser-session-storage.service';\nimport { RestService } from './rest.service';\nimport { IUserResponse } from '../../../shared/interfaces/user.interface';\nimport { IUserAuthenticationError } from '../../../shared/interfaces/error.interface';\n\n@Injectable()\nexport class AuthService {\n private accessToken$: BehaviorSubject;\n\n constructor(\n private browserLocalStorageService: BrowserLocalStorageService,\n private browserSessionStorageService: BrowserSessionStorageService,\n private restService: RestService,\n ) {\n this.accessToken$ = new BehaviorSubject(null);\n }\n\n private getToken(tokenData: string | string[]): string | null {\n let token: string;\n let tokenParts: any[] | string[];\n\n if (typeof tokenData === 'string') {\n tokenParts = tokenData.split(' ');\n } else if (Array.isArray(tokenData)) {\n tokenParts = tokenData;\n }\n\n if (tokenParts === undefined) {\n return token;\n }\n\n if (tokenParts[0] === 'Bearer' && tokenParts[1] && tokenParts[1].length > 0) {\n token = tokenParts[1];\n } else {\n token = tokenParts[0];\n }\n\n return token;\n }\n\n public clearLocalData(): void {\n this.browserLocalStorageService.clear();\n this.browserSessionStorageService.clear();\n this.accessToken$.next(null);\n }\n\n public getNewAccessToken(): Observable> {\n const refreshToken: string | undefined = this.getRefreshTokenFromStorage();\n\n return this.restService.getNewAccessToken(refreshToken);\n }\n\n public getAccessTokenFromStorage(): string | undefined {\n return this.browserLocalStorageService.getItem(config.token.access.id);\n }\n\n public getAccessTokenObservable(): Observable {\n return this.accessToken$;\n }\n\n public saveAccessTokenToStorage(tokenData: string): void {\n const token = this.getToken(tokenData);\n this.browserLocalStorageService.setItem(config.token.access.id, token);\n this.accessToken$.next(token);\n }\n\n public getRefreshTokenFromStorage(): string | undefined {\n return this.browserLocalStorageService.getItem(config.token.refresh.id);\n }\n\n public saveRefreshTokenInStorage(tokenData: string): void {\n const token = this.getToken(tokenData);\n this.browserLocalStorageService.setItem(config.token.refresh.id, token);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, NavigationExtras, ActivatedRoute, UrlTree } from '@angular/router';\nimport { AuthGuard as ExternalAuthGuard, AuthService as ExternalAuthService } from '@auth0/auth0-angular';\nimport { Observable, of, combineLatest } from 'rxjs';\nimport { mergeMap, switchMap, catchError } from 'rxjs/operators';\n\nimport { UserService } from '../../user.service';\nimport { redirectUrl } from '../../../shared/constants';\nimport { ErrorHandlerService } from '../../error-handler.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { AppConfigService } from '../../app-config.service';\nimport { AuthService } from '../../auth.service';\n\n@Injectable()\nexport class AuthGuard {\n constructor(\n private userService: UserService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private errorHandlerService: ErrorHandlerService,\n private config: AppConfigService,\n private externalAuthGuard: ExternalAuthGuard,\n private externalAuthService: ExternalAuthService,\n private authService: AuthService,\n ) {}\n\n private internalCanActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n if (this.userService.isAuthenticated()) {\n return of(true);\n }\n\n if (next.url[0]?.path === Api.login) {\n return of(true);\n }\n\n const routeParams: NavigationExtras = {\n relativeTo: this.activatedRoute,\n queryParams: {\n [redirectUrl.returnTo]: state.url,\n },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n };\n\n this.userService.processUnauthorization();\n\n this.router\n .navigate([`/${Api.login}`], routeParams)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n return of(false);\n }\n\n private getCachedOrUpdatedAccessTokenSilently(): Observable {\n return this.externalAuthService.getAccessTokenSilently({ cacheMode: 'on' }).pipe(\n switchMap((accessToken: string): Observable<[string, boolean]> => {\n if (accessToken) {\n // trigger a test request to validate whether the IDP token interceptor will attach a valid access token\n return combineLatest([of(accessToken), this.userService.validateExternalAccessToken()]);\n }\n return of([null, false]);\n }),\n switchMap(([accessToken, isValid]: [string, boolean]): Observable => {\n if (accessToken && !isValid) {\n // if the cached token is not valid, try to salvage the current IDP session by requesting a fresh access token\n // and proceed without validating the new token, redirecting to the access restricted page in the worst case\n return this.externalAuthService.getAccessTokenSilently({ cacheMode: 'off' });\n }\n return of(accessToken);\n }),\n catchError((error: HttpErrorResponse): Observable => {\n console.error('[validateExternalAccessToken] error', error);\n this.router.navigate([`/${Api.forbidden}`]);\n return of(null);\n }),\n );\n }\n\n private externalCanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.externalAuthGuard.canActivate(route, state).pipe(\n mergeMap((canActivate: boolean): Observable => {\n if (canActivate) {\n return this.getCachedOrUpdatedAccessTokenSilently();\n }\n return of(null);\n }),\n mergeMap((accessToken: string): Observable => {\n if (accessToken) {\n // UserService#getAuthStatus need to read access token from local storage\n this.userService.setMfaRequired(false);\n this.authService.saveAccessTokenToStorage(accessToken);\n return of(true);\n }\n this.userService.processUnauthorization();\n return of(false);\n }),\n );\n }\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable | Promise | boolean | UrlTree {\n if (this.config.isUsingExternalIdp()) {\n return this.externalCanActivate(route, state);\n }\n\n return this.internalCanActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { Api } from '../../../../../shared/constants/api';\nimport { AppConfigService } from '../../app-config.service';\nimport { UserService } from '../../user.service';\n\n@Injectable()\nexport class AuthorizeOnlyStaffUsersSsoTenantGuard {\n constructor(\n private userService: UserService,\n private router: Router,\n private appConfigService: AppConfigService,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const forbiddenPage: UrlTree = this.router.parseUrl(Api.forbidden);\n\n if (!this.appConfigService.isUsingExternalIdp()) {\n return of(true);\n }\n\n return this.userService.hasTenantStaffAccess().pipe(\n map((hasStaffAccess: boolean): boolean | UrlTree => {\n return hasStaffAccess || forbiddenPage;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { Api } from '../../../../../shared/constants/api';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { TenantService } from '../../tenant.service';\nimport { WorkspaceService } from '../../workspace.service';\nimport { IWorkspace } from '../../../../../shared/interfaces/workspace.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { ITenantDigitalPropertyLimitState } from '../../../../../shared/interfaces/tenant.interface';\nimport { UserService } from '../../user.service';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { $workspace } from '../../../../../shared/constants/workspace';\nimport { $user } from '../../../../../shared/constants/user';\nimport { NotificationService } from '../../notification.service';\nimport { NotificationPosition } from '../../../models/notification.model';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { ErrorHandlerService } from '../../error-handler.service';\n\n@Injectable()\nexport class DigitalPropertyLimitGuard {\n constructor(\n private userService: UserService,\n private tenantService: TenantService,\n private workspaceService: WorkspaceService,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private errorHandlerService: ErrorHandlerService,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const tenantId: string = this.getCurrentTenantId();\n if (SharedCommonUtility.notNullishOrEmpty(tenantId)) {\n return this.checkTenantDigitalPropertyUsage(tenantId);\n }\n\n if (LinkedPropertyUtility.hasLinkedPropertyData(next.queryParams) === false) {\n return of(false);\n }\n\n const propertyData: ILinkedPropertyData = LinkedPropertyUtility.fromLinkedPropertyQueryParam(next.queryParams);\n\n return this.checkTenantDigitalPropertyUsageForAdminPortal(propertyData[Api.workspaceId]);\n }\n\n private getCurrentTenantId(): string | null {\n const user: IUserServerResponse = this.userService.retrieveAuthenticatedUserProfile();\n\n return user[$user.currentTenantId];\n }\n\n private checkTenantDigitalPropertyUsage(tenantId: string): Observable {\n return this.tenantService.getDigitalPropertyLimitState(tenantId).pipe(\n map((limitState: ITenantDigitalPropertyLimitState) => {\n if (SharedCommonUtility.isNullish(limitState) || limitState.digitalPropertyCount < limitState.digitalPropertyLimit) {\n return true;\n }\n\n this.displayErrorToast(limitState);\n return false;\n }),\n catchError((error: any) => {\n this.errorHandlerService.handleError(error);\n return of(false);\n }),\n );\n }\n\n private displayErrorToast(limitState: ITenantDigitalPropertyLimitState): void {\n const message: string = this.translateService.instant('digital_property_limit_reached', [\n limitState.tenantName,\n limitState.packageName,\n String(limitState.digitalPropertyLimit),\n ]);\n\n this.notificationService.error(message, NotificationPosition.Toast, true);\n }\n\n private checkTenantDigitalPropertyUsageForAdminPortal(workspaceId: string): Observable {\n return this.workspaceService.getWorkspace(workspaceId).pipe(\n switchMap((workspace: IWorkspace) => {\n if (SharedCommonUtility.isNullish(workspace[$workspace.tenantId])) {\n return of(true);\n }\n\n return this.checkTenantDigitalPropertyUsage(workspace[$workspace.tenantId]);\n }),\n catchError((error: any) => {\n this.errorHandlerService.handleError(error);\n return of(false);\n }),\n );\n }\n}\n","import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\nimport { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { StatusCodes } from 'http-status-codes';\n\nimport { UserService } from '../../user.service';\nimport { IHttpErrorResponse } from '../../../interfaces/error.interface';\nimport { Api } from '../../../../../shared/constants/api';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { SharedDateUtility } from '../../../../../shared/utils/date.utility';\nimport { LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\n\ninterface IDigitalPropertyAccessStatus {\n hasAccess: boolean;\n lastUpdate: Date;\n}\n\nconst ACCESS_CACHE_EXPIRY_SECONDS: number = 30;\n\n@Injectable({ providedIn: 'root' })\nexport class DigitalPropertyGuard {\n private readonly hasDigitalPropertyAccessCache: Record;\n\n constructor(\n private userService: UserService,\n private router: Router,\n ) {\n this.hasDigitalPropertyAccessCache = {};\n }\n\n private async handleScanError(e: IHttpErrorResponse, state: RouterStateSnapshot): Promise {\n if (e instanceof HttpErrorResponse && e.status === StatusCodes.FORBIDDEN) {\n return this.router.navigate(['/', Api.forbidden], { queryParams: { url: state.url }, state: e.error });\n }\n return false;\n }\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n if (LinkedPropertyUtility.hasLinkedPropertyData(route.queryParams) === false) {\n return of(true);\n }\n\n const { workspaceId, digitalPropertyId } = LinkedPropertyUtility.fromLinkedPropertyQueryParam(route.queryParams);\n\n const cachedResult: IDigitalPropertyAccessStatus = this.hasDigitalPropertyAccessCache[digitalPropertyId];\n if (SharedCommonUtility.getTypeOf(cachedResult) === 'object') {\n const cacheExpiryDate: Date = SharedDateUtility.addSeconds(cachedResult.lastUpdate, ACCESS_CACHE_EXPIRY_SECONDS);\n if (new Date().getTime() < cacheExpiryDate.getTime()) {\n return of(this.hasDigitalPropertyAccessCache[digitalPropertyId].hasAccess);\n }\n }\n\n return this.userService.checkAccessToProperty(digitalPropertyId, workspaceId).pipe(\n tap(() => {\n this.hasDigitalPropertyAccessCache[digitalPropertyId] = {\n hasAccess: true,\n lastUpdate: new Date(),\n };\n }),\n catchError((e: IHttpErrorResponse): Observable => {\n this.hasDigitalPropertyAccessCache[digitalPropertyId] = {\n hasAccess: false,\n lastUpdate: new Date(),\n };\n return from(this.handleScanError(e, state)).pipe(map(() => false));\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AclSecurityAdapter } from '../../acl.service';\nimport { IRequiredSecurity } from '../../../../../shared/interfaces/security.interface';\nimport { environment } from '../../../../environments/environment';\nimport { Api } from '../../../../../shared/constants/api';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { SecurityEntityLevel } from '../../../../../shared/constants/security-group';\nimport { LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { AppConfigService } from '../../app-config.service';\nimport { UserAclService } from '../../user-acl.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SecurityGuard {\n constructor(\n private userAclService: UserAclService,\n private router: Router,\n private appConfigServices: AppConfigService,\n ) {}\n\n private attemptSettingDigitalPropertyFromLinkedProperty(adapter: AclSecurityAdapter, route: ActivatedRouteSnapshot): void {\n if (LinkedPropertyUtility.hasLinkedPropertyData(route.queryParams) === false) {\n adapter.useWorkspaceFromUser().useDigitalPropertyFromUser();\n return;\n }\n\n const { workspaceId, digitalPropertyId } = LinkedPropertyUtility.fromLinkedPropertyQueryParam(route.queryParams);\n adapter.useWorkspaceId(workspaceId).useDigitalPropertyId(digitalPropertyId);\n }\n\n private attemptSettingWorkspaceFromLinkedProperty(adapter: AclSecurityAdapter, route: ActivatedRouteSnapshot): void {\n if (LinkedPropertyUtility.hasLinkedPropertyData(route.queryParams) === false) {\n adapter.useWorkspaceFromUser();\n return;\n }\n\n const { workspaceId } = LinkedPropertyUtility.fromLinkedPropertyQueryParam(route.queryParams);\n adapter.useWorkspaceId(workspaceId);\n }\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const requiredSecurity: IRequiredSecurity = route.routeConfig?.data?.requiredSecurity;\n const isAdmin: boolean = !this.appConfigServices.isTenantEnabled();\n\n return this.userAclService.createCheckAccessForCurrentUser().pipe(\n map((adapter: AclSecurityAdapter): AclSecurityAdapter => {\n return adapter\n .useOptions({\n requireFunctionalActions: true,\n throwIfFunctionalActionsUndefined: !environment.production,\n })\n .useFunctionalActions(requiredSecurity?.functionalActions);\n }),\n map((adapter: AclSecurityAdapter): boolean => {\n if (SharedCommonUtility.isNullishOrEmpty(requiredSecurity?.entityLevel)) {\n return adapter.check();\n }\n\n const allowAdminAccess: boolean =\n requiredSecurity?.entityLevel !== SecurityEntityLevel.admin && requiredSecurity?.allowAdminAccess;\n\n if (isAdmin && allowAdminAccess) {\n adapter.useAdmin();\n } else {\n switch (requiredSecurity?.entityLevel) {\n case SecurityEntityLevel.admin:\n case SecurityEntityLevel.tenant:\n adapter.useEntityLevel();\n break;\n case SecurityEntityLevel.digitalProperty:\n this.attemptSettingDigitalPropertyFromLinkedProperty(adapter, route);\n break;\n default:\n this.attemptSettingWorkspaceFromLinkedProperty(adapter, route);\n break;\n }\n }\n\n return adapter.check();\n }),\n map((canActivate: boolean): boolean | UrlTree => canActivate || this.router.parseUrl(`/${Api.forbidden}`)),\n );\n }\n}\n","import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nimport { AppConfigService } from '../../app-config.service';\nimport { Api } from '../../../../../shared/constants/api';\n\n@Injectable()\nexport class SsoTenantGuard {\n constructor(\n private router: Router,\n private appConfigService: AppConfigService,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const hasAccess: boolean = this.appConfigService.isUsingExternalIdp();\n if (!hasAccess) {\n return of(this.router.createUrlTree([`/${Api.forbidden}`], { queryParams: { url: state.url, title: next.data.title } }));\n }\n return of(hasAccess);\n }\n\n public canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.canActivate(next, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { Api } from '../../../../../shared/constants/api';\nimport { ErrorHandlerService } from '../../error-handler.service';\nimport { AppConfigService } from '../../app-config.service';\n\n@Injectable()\nexport class TenantlessGuard {\n constructor(\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n private appConfigService: AppConfigService,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const hasAccess: boolean = !this.appConfigService.isTenantEnabled();\n if (!hasAccess) {\n // TODO: From EAP-4845, this shouldn't go to a forbidden page. It should go to a missing tenant page.\n this.router\n .navigate([`/${Api.forbidden}`], { queryParams: { url: state.url, title: next.data.title } })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n return of(hasAccess);\n }\n\n public canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.canActivate(next, state);\n }\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, Router, UrlTree } from '@angular/router';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { inject } from '@angular/core';\nimport { catchError, filter, map } from 'rxjs/operators';\nimport { DigitalPropertyService } from '../../digital-property.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { IDigitalPropertyListItem, IDigitalPropertyType } from '../../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty, $digitalPropertyType } from '../../../../../shared/constants/digital-properties';\nimport { UserService } from '../../user.service';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { $user } from '../../../../../shared/constants/user';\n\nexport const WebDigitalPropertyGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable => {\n const digitalPropertyService: DigitalPropertyService = inject(DigitalPropertyService);\n const userService: UserService = inject(UserService);\n const router: Router = inject(Router);\n const forbiddenPage: UrlTree = router.parseUrl(Api.forbidden);\n\n // property data should be defined by LinkedPropertyDataService during NavigationStart event\n const propertyData: ILinkedPropertyData = LinkedPropertyUtility.fromLinkedPropertyQueryParam(route.queryParams);\n\n return combineLatest([\n digitalPropertyService.getDigitalPropertyTypes(),\n userService.userDataChanged$.pipe(filter(SharedCommonUtility.notNullish)),\n ]).pipe(\n map(([digitalPropertyTypes, user]: [IDigitalPropertyType[], IUserServerResponse]) => {\n const digitalProperty: IDigitalPropertyListItem = user[$user.digitalProperties].find(\n (property: IDigitalPropertyType) => property[$digitalProperty._id] === propertyData[Api.digitalPropertyId],\n );\n\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return forbiddenPage;\n }\n\n const digitalPropertyType: IDigitalPropertyType = digitalPropertyTypes.find(\n (type: IDigitalPropertyType) => type[$digitalPropertyType._id] === digitalProperty[$digitalProperty.typeId],\n );\n\n return digitalPropertyService.isWebsiteType(digitalPropertyType) || forbiddenPage;\n }),\n catchError(() => of(forbiddenPage)),\n );\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport {\n IAutomatedFlowShortItem,\n IAutomatedUserFlow,\n IAutomatedUserFlowCreateRequest,\n IAutomatedUserFlowResponse,\n IAutomatedUserFlowUpdateRequest,\n} from '../../../../shared/interfaces/automated-user-flow.interface';\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { AutomatedFlowType } from '../../../../shared/constants/automated-user-flow';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutomatedUserFlowApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // POST /workspaces/:workspaceId/digital-properties/:digitalPropertyId/automated-user-flows\n public createAutomatedUserFlow(\n workspaceId: string,\n dpId: string,\n userFlow: IAutomatedUserFlowCreateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(dpId)\n .automatedUserFlows()\n .getApiUrl();\n\n return this.httpClient.post(url, userFlow);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/automated-user-flow\n public getAll(\n workspaceId: string,\n digitalPropertyId: string,\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .automatedUserFlows()\n .getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params[ApiQueryOption.limit] = String(limit);\n }\n\n if (typeof skip === 'number') {\n params[ApiQueryOption.skip] = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if (typeof direction === 'string') {\n params[ApiQueryOption.direction] = direction;\n }\n\n if (term?.length > 0) {\n params[ApiQueryOption.term] = window.encodeURIComponent(term.trim());\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n public getByType(\n workspaceId: string,\n digitalPropertyId: string,\n flowType: AutomatedFlowType,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .automatedUserFlows()\n .types(flowType)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/automated-user-flows/:id\n public getAutomatedUserFlow(userFlowId: string, workspaceId: string, dpId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(dpId)\n .automatedUserFlows(userFlowId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /workspaces/:workspaceId/digital-properties/:digitalPropertyId/automated-user-flows/:id\n public updateAutomatedUserFlow(\n userFlowId: string,\n wsId: string,\n dpId: string,\n userFlowUpdate: IAutomatedUserFlowUpdateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(wsId)\n .digitalProperties(dpId)\n .automatedUserFlows(userFlowId)\n .getApiUrl();\n\n return this.httpClient.put(url, userFlowUpdate);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/automated-user-flows/names/:userFlowTemplateName\n public findByName(workspaceId: string, dpId: string, userFlowTemplateName: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(dpId)\n .automatedUserFlows()\n .names(userFlowTemplateName)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/user-flow-recordings/:id\n public getUserFlowRecording(recordingId: string, workspaceId: string, dpId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(dpId)\n .automatedUserFlowRecordings(recordingId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/digital-properties/:digitalPropertyId/user-flow-recordings/:id\n public deleteUserFlowRecording(recordingId: string, workspaceId: string, dpId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(dpId)\n .automatedUserFlowRecordings(recordingId)\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { curry } from 'lodash';\nimport { mergeMap } from 'rxjs/operators';\n\nimport {\n IAutomatedFlowShortItem,\n IAutomatedUserFlow,\n IAutomatedUserFlowCreateRequest,\n IAutomatedUserFlowResponse,\n IAutomatedUserFlowUpdateRequest,\n IUserFlowAction,\n} from '../../../shared/interfaces/automated-user-flow.interface';\nimport { AutomatedUserFlowApi } from './rest/automated-user-flow.api';\nimport { $automatedUserFlow, AutomatedFlowType } from '../../../shared/constants/automated-user-flow';\nimport { CustomAsyncValidators } from './helpers/form-custom-async-validators';\nimport { UserPropertyService } from './user-property.service';\nimport { ICurrentSelectedProperty } from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutomatedUserFlowService {\n public constructor(\n private automatedUserFlowApi: AutomatedUserFlowApi,\n private userPropertyService: UserPropertyService,\n ) {}\n\n public createAutomatedUserFlow(\n wsId: string,\n dpId: string,\n userFlowName: string,\n userFlowType: AutomatedFlowType,\n userFlowActions: IUserFlowAction[],\n ): Observable {\n const userFlowCreateRequest: IAutomatedUserFlowCreateRequest = {\n [$automatedUserFlow.name]: userFlowName,\n [$automatedUserFlow.flowType]: userFlowType,\n [$automatedUserFlow.actions]: userFlowActions,\n };\n\n return this.automatedUserFlowApi.createAutomatedUserFlow(wsId, dpId, userFlowCreateRequest);\n }\n\n public getAll(\n workspaceId: string,\n digitalPropertyId: string,\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n return this.automatedUserFlowApi.getAll(workspaceId, digitalPropertyId, skip, limit, term, sortBy, direction);\n }\n\n public getByType(flowType: AutomatedFlowType): Observable {\n return this.userPropertyService.currentSelectedProperty().pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) => {\n return this.automatedUserFlowApi.getByType(workspaceId, digitalPropertyId, flowType);\n }),\n );\n }\n\n public getAutomatedUserFlow(userFlowId: string, wsId: string, dpId: string): Observable {\n return this.automatedUserFlowApi.getAutomatedUserFlow(userFlowId, wsId, dpId);\n }\n\n public updateAutomatedUserFlow(\n userFlowId: string,\n wsId: string,\n dpId: string,\n userFlowUpdate: IAutomatedUserFlowUpdateRequest,\n ): Observable {\n return this.automatedUserFlowApi.updateAutomatedUserFlow(userFlowId, wsId, dpId, userFlowUpdate);\n }\n\n public getUserFlowRecording(userFlowId: string, wsId: string, dpId: string): Observable {\n return this.automatedUserFlowApi.getUserFlowRecording(userFlowId, wsId, dpId);\n }\n\n public deleteUserFlowRecording(userFlowId: string, wsId: string, dpId: string): Observable {\n return this.automatedUserFlowApi.deleteUserFlowRecording(userFlowId, wsId, dpId);\n }\n\n public findByName(workspaceId: string, dpId: string, name: string): Observable {\n return this.automatedUserFlowApi.findByName(workspaceId, dpId, name);\n }\n\n public validateNameUniqueness(\n workspaceId: string,\n dpId: string,\n nameToSkip: () => string = (): string => '',\n ): (control: AbstractControl) => Observable {\n return CustomAsyncValidators.validateNameUniqueness(nameToSkip, curry(this.findByName)(workspaceId, dpId).bind(this));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { WindowRef } from './window.ref';\nimport { config } from '../../environments/config.shared';\nimport { CookieService } from './cookie.service';\n\n@Injectable()\nexport class BrowserLocalStorageService {\n private storage: Storage;\n private isStorageAvailable: boolean = false;\n private tempData: Record = {};\n private storageKey: string;\n\n constructor(\n private windowRef: WindowRef,\n private cookieService: CookieService,\n ) {\n this.isStorageAvailable = this.isAvailable();\n this.storageKey = config.APP.NAME;\n }\n\n private getData(): Record {\n let stringData: string;\n\n if (this.isStorageAvailable === false && this.cookieService.isEnabled() === false) {\n return this.tempData;\n }\n\n if (this.isStorageAvailable) {\n stringData = this.storage.getItem(this.storageKey);\n } else {\n stringData = this.cookieService.get(this.storageKey);\n }\n\n let data = {};\n\n try {\n data = JSON.parse(stringData);\n } catch (e) {\n /* continue regardless of error */\n }\n\n return data === null ? {} : data;\n }\n\n private setData(data: Record): void {\n if (this.isStorageAvailable === false && this.cookieService.isEnabled() === false) {\n this.tempData = data;\n return;\n }\n\n const stringData = JSON.stringify(data);\n\n if (this.isStorageAvailable) {\n this.storage.setItem(this.storageKey, stringData);\n } else {\n this.cookieService.set(this.storageKey, stringData, null, null, '/');\n }\n }\n\n private isAvailable(): boolean {\n const testItem = '__storageTest__';\n this.storage = this.windowRef.windowObject.localStorage;\n\n try {\n this.storage.setItem(testItem, testItem);\n this.storage.removeItem(testItem);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public getItem(key: string): any {\n const data = this.getData();\n let value: string | unknown | null = null;\n\n if (typeof data[key] === 'undefined') {\n return value;\n }\n\n value = data[key];\n return value;\n }\n\n public setItem(key: string, value: any): void {\n const data = this.getData();\n data[key] = value;\n\n this.setData(data);\n }\n\n public removeItem(key: string): void {\n if (this.isStorageAvailable === false && this.cookieService.isEnabled() === true) {\n this.cookieService.remove(key);\n return;\n }\n\n const data = this.getData();\n\n if (data[key]) {\n delete data[key];\n this.setData(data);\n }\n }\n\n public clear(): void {\n if (this.isStorageAvailable === false && this.cookieService.isEnabled() === true) {\n this.cookieService.deleteAll();\n return;\n }\n\n this.setData({});\n this.tempData = {};\n this.storage.removeItem(this.storageKey);\n }\n\n public get length(): number {\n const data = this.getData();\n return Object.keys(data).length;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { WindowRef } from './window.ref';\n\nexport enum SESSION_STORAGE {\n __storageTest__ = '__storageTest__',\n GUIDED_USER_FLOW = 'GUIDED_USER_FLOW',\n AUTOMATED_USER_FLOW = 'AUTOMATED_USER_FLOW',\n}\n\n@Injectable()\nexport class BrowserSessionStorageService {\n private storage: Storage;\n private isStorageAvailable: boolean = false;\n private tempData: unknown = {};\n\n constructor(private windowRef: WindowRef) {\n this.isStorageAvailable = this.isAvailable();\n }\n\n private isAvailable(): boolean {\n const testItem: SESSION_STORAGE = SESSION_STORAGE.__storageTest__;\n this.storage = this.windowRef.windowObject.sessionStorage;\n\n try {\n this.storage.setItem(testItem, testItem);\n this.storage.removeItem(testItem);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public getItem(key: SESSION_STORAGE): T | null {\n if (this.isStorageAvailable) {\n return JSON.parse(this.storage.getItem(key));\n }\n\n let value: string | null = null;\n\n if (typeof this.tempData[key] === 'string') {\n value = this.tempData[key];\n }\n\n return JSON.parse(value);\n }\n\n public setItem(key: SESSION_STORAGE, value: any): void {\n if (this.isStorageAvailable) {\n this.storage.setItem(key, JSON.stringify(value));\n return;\n }\n\n this.tempData[key] = JSON.stringify(value);\n }\n\n public removeItem(key: string): void {\n if (this.isStorageAvailable) {\n this.storage.removeItem(key);\n return;\n }\n\n if (typeof this.tempData[key] === 'string') {\n delete this.tempData[key];\n }\n }\n\n public clear(): void {\n if (this.isStorageAvailable) {\n this.storage.clear();\n return;\n }\n\n this.tempData = {};\n }\n\n public get length(): number {\n if (this.isStorageAvailable) {\n return this.storage.length;\n }\n\n return Object.keys(this.tempData).length;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\ninterface Channel {\n subject: Subject;\n}\n\ninterface Channels {\n [key: string]: string;\n}\n\nexport enum BusMessageChannels {\n isSidebarVisible = 'isSidebarVisible',\n notificationsReady = 'notificationsReady',\n workspaceUpdated = 'workspaceUpdated',\n workspaceCreated = 'workspaceCreated',\n digitalPropertyChange = 'digitalPropertyChange',\n automatedScanPageScanCompleted = 'automatedScanPageScanCompleted',\n userSwitchedToDigitalProperty = 'userSwitchedToDigitalProperty',\n userSwitchedToWorkspace = 'userSwitchedToWorkspace',\n workspaceTrainingVideosCount = 'workspaceTrainingVideosCount',\n workspaceDeleted = 'workspaceDeleted',\n scanStopped = 'scanStopped',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BusMessageService {\n private listeners: Record;\n private channels: Channels = {};\n\n constructor() {\n this.listeners = {};\n }\n\n private buildChannelsName(): void {\n for (const channel in BusMessageChannels) {\n this.channels[channel] = channel;\n }\n }\n\n public initChannel(channelName: string): void {\n const channel: Channel = {\n subject: new BehaviorSubject(null),\n };\n\n if (typeof this.listeners[channelName] === 'object') {\n throw new Error('[MessageBusService.initChannel] channel \"' + channelName + '\" already exists.');\n }\n\n this.listeners[channelName] = channel;\n }\n\n public removeChannel(channel: string): void {\n delete this.listeners[channel];\n }\n\n public async initChannels(): Promise {\n const createChannels = (resolve: Function): void => {\n this.buildChannelsName();\n\n Object.keys(this.channels).forEach(this.initChannel.bind(this));\n\n resolve();\n };\n\n return new Promise(createChannels);\n }\n\n public from(...channels: string[]): Observable {\n for (const channel of channels) {\n if (typeof this.listeners[channel] === 'undefined') {\n throw new Error('[MessageBusService] from, channel \"' + channel + '\" does not exists.');\n }\n }\n\n if (channels.length === 1) {\n return this.listeners[channels[0]].subject.asObservable();\n }\n\n return combineLatest(channels.map((channel: string): Observable => this.listeners[channel].subject.asObservable())).pipe(\n debounceTime(100),\n );\n }\n\n public to(channel: string): Subject {\n if (typeof this.listeners[channel] === 'undefined') {\n throw new Error('[MessageBusService.to] channel \"' + channel + '\" does not exists.');\n }\n return this.listeners[channel].subject;\n }\n\n public getValue(channel: string): any {\n return this.listeners[channel].subject.getValue();\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\n\nimport { A11yService } from '../a11y.service';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Injectable()\nexport class BusyIndicatorService {\n private toggleIndicator: Subject;\n\n public indicatorToggled$: Observable;\n\n constructor(\n private a11yService: A11yService,\n private translateService: TranslateService,\n ) {\n this.toggleIndicator = new Subject();\n this.indicatorToggled$ = this.toggleIndicator.asObservable();\n }\n\n public a11MessageOnIndicatorChange(): Observable {\n return this.indicatorToggled$.pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap((busy: boolean): void => {\n if (busy && this.translateService.isTranslationAvailableForKey('application_is_busy')) {\n this.a11yService.setMessage(this.translateService.instant('application_is_busy'));\n }\n if (busy === false && this.translateService.isTranslationAvailableForKey('application_is_ready_to_use')) {\n this.a11yService.setMessage(this.translateService.instant('application_is_ready_to_use'));\n }\n }),\n );\n }\n\n private onOpenIndicator(): void {\n this.toggleIndicator.next(true);\n }\n\n private onCloseIndicator(): void {\n this.toggleIndicator.next(false);\n }\n\n public openIndicator(): void {\n this.onOpenIndicator();\n }\n\n public closeIndicator(): void {\n this.onCloseIndicator();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NotificationService } from './notification.service';\nimport { TranslateService } from '../translate/translate.service';\nimport { NotificationPosition } from '../models/notification.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClipboardUtilityService {\n constructor(\n private notificationService: NotificationService,\n private translateService: TranslateService,\n ) {}\n\n public copyTextToClipboard(textToCopy: string): void {\n navigator.clipboard.writeText(textToCopy).then(\n () => {\n this.notificationService.success(this.translateService.instant('copied_to_clipboard'), NotificationPosition.Toast);\n },\n () => {\n this.notificationService.error(this.translateService.instant('copy_to_clipboard_failed'), NotificationPosition.Toast);\n },\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport ClipboardJS from 'clipboard';\n\nimport { NotificationService } from '../services/notification.service';\nimport { NotificationPosition } from '../models/notification.model';\nimport { TranslateService } from '../translate/translate.service';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClipboardService {\n private textValueCopyButtonSelector: string = '.copy-to-clipboard';\n public clipboard: Map;\n\n constructor(\n private notificationService: NotificationService,\n private translateService: TranslateService,\n ) {\n this.clipboard = new Map();\n }\n\n private onCopySuccess(): void {\n this.notificationService.success(this.translateService.instant('copied_to_clipboard'), NotificationPosition.Toast);\n }\n\n public init(options: ClipboardJS.Options = {}, inputId: string = null): string {\n let clipboardIdentifier: string = inputId;\n if (SharedCommonUtility.isNullish(clipboardIdentifier)) {\n clipboardIdentifier = this.textValueCopyButtonSelector;\n }\n\n let newClipboard: ClipboardJS;\n if (SharedCommonUtility.notNullish(inputId)) {\n const btn: HTMLElement = document.querySelector('#copy-to-clipboard-' + inputId);\n newClipboard = new ClipboardJS(btn, options);\n } else {\n newClipboard = new ClipboardJS(this.textValueCopyButtonSelector, options);\n }\n\n if (!this.clipboard.has(clipboardIdentifier)) {\n newClipboard.on('success', this.onCopySuccess.bind(this));\n this.clipboard.set(clipboardIdentifier, newClipboard);\n }\n return clipboardIdentifier;\n }\n\n public destroyClipboardService(clipboardId?: string): void {\n if (this.clipboard.size === 0) {\n return;\n }\n\n if (SharedCommonUtility.notNullish(clipboardId)) {\n this.clipboard.get(clipboardId).destroy();\n this.clipboard.delete(clipboardId);\n return;\n }\n\n this.clipboard.forEach((clipboard: ClipboardJS, id: string): void => {\n clipboard.destroy();\n this.clipboard.delete(id);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\nimport { IComment } from '../../../shared/interfaces/comment.interface';\nimport { IManualEvaluationAuditListItem } from '../../../shared/interfaces/manual-audit.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommentService {\n constructor(private workspacesRestAPI: WorkspacesRestAPI) {}\n\n public postManualAuditIssueComment(\n formData: FormData,\n workspaceId: string,\n digitalPropertyId: string,\n evaluationScanId: string,\n manualIssueId: string,\n ): Observable {\n return this.workspacesRestAPI.postManualAuditIssueComment(\n formData,\n workspaceId,\n digitalPropertyId,\n evaluationScanId,\n manualIssueId,\n );\n }\n\n public getManualAuditIssueComments(\n evaluationId: string,\n issueId: string,\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n return this.workspacesRestAPI.getManualAuditIssueComments(evaluationId, issueId, workspaceId, digitalPropertyId);\n }\n\n public deleteManualAuditIssueComment(\n workspaceId: string,\n digitalPropertyId: string,\n evaluationScanId: string,\n issueId: string,\n commentId: string,\n ): Observable {\n return this.workspacesRestAPI.deleteManualAuditIssueComment(\n workspaceId,\n digitalPropertyId,\n evaluationScanId,\n issueId,\n commentId,\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { WindowRef } from './window.ref';\n\n@Injectable()\nexport class CookieService {\n private isCookieEnabled: boolean;\n\n constructor(private windowRef: WindowRef) {\n this.isCookieEnabled = this.isEnabled();\n }\n\n public set(name: string, value: string, expires?: any, domain?: string, path?: string): void {\n let cookieData: string =\n this.windowRef.windowObject.encodeURIComponent(name) + '=' + this.windowRef.windowObject.encodeURIComponent(value);\n let dateExpires: Date = new Date();\n\n if (expires && typeof expires === 'number') {\n dateExpires = new Date(new Date().getTime() + expires * 1000 * 60 * 60 * 24);\n } else {\n dateExpires = new Date();\n dateExpires.setFullYear(dateExpires.getFullYear() + 10);\n }\n\n cookieData += '; expires=' + dateExpires.toUTCString();\n\n if (typeof path === 'string') {\n cookieData += '; path=' + path;\n } else {\n cookieData += '; path=/;';\n }\n\n if (typeof domain === 'string') {\n cookieData += '; domain=' + domain + ';';\n }\n\n this.windowRef.windowObject.document.cookie = cookieData;\n }\n\n public get(name: string): string | null {\n const cookieName = this.windowRef.windowObject.encodeURIComponent(name);\n const nameLength = cookieName.length + 1;\n\n const trimValue = (str: string): string => {\n return str.trim();\n };\n\n const myCookie = (cookie: string): boolean => {\n return cookie.substring(0, nameLength) === `${cookieName}=`;\n };\n\n const getCookie = (cookie: string): string => {\n return this.windowRef.windowObject.decodeURIComponent(cookie.substring(nameLength));\n };\n\n const value = this.windowRef.windowObject.document.cookie.split(';').map(trimValue).filter(myCookie).map(getCookie);\n\n return value[0] || null;\n }\n\n public remove(name: string): void {\n this.set(name, '', -1);\n }\n\n public isEnabled(): boolean {\n if (typeof this.isCookieEnabled === 'boolean') {\n return this.isCookieEnabled;\n }\n\n const TEST_VALUE = '1';\n\n this.set('_cookietest', TEST_VALUE);\n this.isCookieEnabled = this.get('_cookietest') === TEST_VALUE;\n this.remove('_cookietest');\n // TODO - change line to `return this.isCookieEnabled;`\n return undefined;\n }\n\n public deleteAll(): void {\n const cookies = this.windowRef.windowObject.document.cookie.split(';');\n\n for (const cookie of cookies) {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n this.windowRef.windowObject.document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { delay, map, switchMap } from 'rxjs/operators';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { IAuditRuleLibrary, IAuditRuleServerResponse } from '../../../shared/interfaces/audit-rule.interface';\nimport {\n ICustomAuditRuleWithStandards,\n IEditCustomAuditRules,\n IGetCustomAuditRulesQuery,\n} from '../../../shared/interfaces/custom-audit-rule.interface';\nimport {\n ICreateCustomAuditRules,\n ICustomAuditDbRule,\n IExistsCustomAuditRulesQuery,\n} from '../../../shared/interfaces/custom-audit-rule.interface';\nimport { RestService } from './rest.service';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { DEBOUNCE_TIME } from '../shared/constants';\nimport { validationError } from '../constants/form.constants';\nimport { IExistsResponse } from '../../../shared/interfaces/common.interface';\nimport { ICustomAuditRuleWithLibraryName } from '../components/audit-rule/audit-rule-view/audit-rule-view.component';\nimport { TranslateService } from '../translate/translate.service';\nimport { RuleLibraryOrigin } from '../../../shared/constants/rule-library';\nimport { $auditRule } from '../../../shared/constants/audit-rule';\nimport { RULE_LIBRARY_CODE_TO_EVALUATION_MEDIUM } from '../../../shared/constants/manual-evaluation';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomAuditRuleService {\n constructor(\n private restService: RestService,\n private translateService: TranslateService,\n ) {}\n\n public getRuleCategories(): Observable {\n return this.restService.getCustomAuditRuleCategories();\n }\n\n public findCustomAuditRules(options?: IGetCustomAuditRulesQuery): Observable {\n return this.restService.findCustomAuditRules(options);\n }\n\n public findCustomAuditRuleByRuleId(ruleId: string): Observable {\n return forkJoin([this.restService.findCustomAuditRuleByRuleId(ruleId), this.getCustomAuditRulesLibrary()]).pipe(\n map(\n ([customAuditRule, allLibraries]: [\n ICustomAuditRuleWithStandards,\n IAuditRuleLibrary[],\n ]): ICustomAuditRuleWithLibraryName => {\n const library: IAuditRuleLibrary = allLibraries.find(\n (lib: IAuditRuleLibrary): boolean => lib._id === customAuditRule.ruleLibrary,\n );\n const isAccessipediaRule: boolean =\n Number.isInteger(Number(ruleId)) || [RuleLibraryOrigin.la, RuleLibraryOrigin.legacyLa].includes(library?.origin);\n\n return {\n ...customAuditRule,\n libraryName: this.translateService.instant('my_rule_library'),\n testingMedium: this.translateService.instant(RULE_LIBRARY_CODE_TO_EVALUATION_MEDIUM[library.code]),\n isAccessipediaRule,\n };\n },\n ),\n );\n }\n\n public getCustomAuditRulesLibrary(): Observable {\n return this.restService.getCustomAuditRulesLibrary();\n }\n\n public createCustomAuditRule(createData: ICreateCustomAuditRules): Observable {\n return this.restService.createCustomAuditRule(createData);\n }\n\n public editCustomAuditRuleByRuleId(ruleEditRequest: IEditCustomAuditRules, ruleId: string): Observable {\n return this.restService.editCustomAuditRuleByRuleId(ruleEditRequest, ruleId);\n }\n\n public exists(query: IExistsCustomAuditRulesQuery): Observable {\n return this.restService.existsCustomAuditRule(query);\n }\n\n public validateRuleIdUniqueness(): (c: AbstractControl) => Observable {\n return (control: AbstractControl): Observable => {\n if (SharedCommonUtility.isNullishOrEmpty(control.value?.trim())) {\n return of(null);\n }\n\n return of(control.value).pipe(\n delay(DEBOUNCE_TIME),\n switchMap((ruleId: string) =>\n this.exists({ [$auditRule.ruleId]: ruleId }).pipe(\n map((response: IExistsResponse) =>\n response.exists ? { [validationError.masterLibraryRuleIdDuplicate]: true } : null,\n ),\n ),\n ),\n );\n };\n }\n\n public deleteRule(ruleId: string): Observable {\n return this.restService.deleteCustomAuditRule(ruleId);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription, throwError } from 'rxjs';\nimport { catchError, filter, take, map } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { RestService } from './rest.service';\nimport { $digitalPropertyType, MOBILE_DIGITAL_PROPERTY_TYPE_NAMES } from '../../../shared/constants/digital-properties';\nimport {\n IDigitalPropertyMonitoring,\n ICreateDigitalPropertyRequest,\n IDigitalPropertiesMonitoringResponse,\n IDigitalPropertiesPopulatedResponse,\n IDigitalProperty,\n IDigitalPropertyDetails,\n IDigitalPropertyLatestScanResults,\n IDigitalPropertyMonitoringResponse,\n IDigitalPropertyOverview,\n IDigitalPropertyType,\n IQuickMonitoringSetupRequest,\n IValidateBulkUpload,\n} from '../../../shared/interfaces/digital-property.interface';\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\nimport { AdminRestAPI } from './rest/admin.api';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { ErrorMessageService } from './error-message.service';\nimport { TranslateService } from '../translate/translate.service';\nimport { A11yService } from './a11y.service';\nimport { IDigitalPropertyMetrics } from '../../../shared/interfaces/digital-property-metrics.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DigitalPropertyService implements OnDestroy {\n private subscription: Subscription = new Subscription();\n private digitalPropertyTypes$: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(\n private restService: RestService,\n private workspaceRestAPI: WorkspacesRestAPI,\n private adminRestAPI: AdminRestAPI,\n private errorMessageService: ErrorMessageService,\n private translateService: TranslateService,\n private a11yService: A11yService,\n ) {}\n\n private handleError(message: string, response: HttpErrorResponse): void {\n const errorMessage: string = this.errorMessageService.getGlobalErrorResponse(response);\n const appMessage: string = this.translateService.instant(message);\n\n this.a11yService.setMessage(appMessage + ': ' + errorMessage);\n\n console.error('[EditDigitalPropertyComponent.handleError: ' + appMessage + ']', response, errorMessage);\n }\n\n private onGetDigitalPropertyError(response: HttpErrorResponse): Observable {\n this.handleError('get_digital_property_error', response);\n return throwError(response);\n }\n\n public getAllDigitalProperties(limit: number, skip: number): Observable {\n return this.adminRestAPI.getAllDigitalProperties(limit, skip);\n }\n\n public getWorkspaceDigitalProperties(\n workspaceId: string,\n limit: number = 0,\n skip: number = 0,\n populateRemediationProgress: boolean = true,\n populateMonitoring: boolean = true,\n ): Observable {\n return this.workspaceRestAPI.getWorkspaceDigitalProperties(\n workspaceId,\n limit,\n skip,\n populateRemediationProgress,\n populateMonitoring,\n );\n }\n\n public getAllDigitalPropertiesByWorkspaceId(workspaceId: string): Observable {\n return this.workspaceRestAPI.getAllDigitalPropertiesByWorkspaceId(workspaceId);\n }\n\n public getDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n return this.workspaceRestAPI\n .getDigitalProperty(workspaceId, digitalPropertyId)\n .pipe(catchError(this.onGetDigitalPropertyError.bind(this)));\n }\n\n public getDigitalPropertyMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n return this.workspaceRestAPI\n .getDigitalPropertyMonitoring(workspaceId, digitalPropertyId)\n .pipe(catchError(this.onGetDigitalPropertyError.bind(this)));\n }\n\n public getMetrics(workspaceId: string, digitalPropertyId: string): Observable {\n return this.workspaceRestAPI.getMetricsForDigitalProperty(workspaceId, digitalPropertyId);\n }\n\n public getDigitalPropertyTypes(): Observable {\n if (SharedCommonUtility.isNullish(this.digitalPropertyTypes$.value)) {\n this.loadDigitalPropertyTypes();\n }\n\n return this.digitalPropertyTypes$.pipe(filter(SharedCommonUtility.notNullish), take(1));\n }\n\n public getDigitalPropertyTypesMap(): Observable> {\n const getIdNamePair = (dpType: IDigitalPropertyType): [string, IDigitalPropertyType] => {\n return [dpType[$digitalPropertyType._id], dpType];\n };\n\n const createMapFromArray = (digitalPropertyTypes: IDigitalPropertyType[]): Map => {\n return new Map(digitalPropertyTypes.map(getIdNamePair));\n };\n\n return this.getDigitalPropertyTypes().pipe(map(createMapFromArray));\n }\n\n private loadDigitalPropertyTypes(): void {\n this.subscription.add(\n this.restService.getDigitalPropertyTypes().subscribe((types: IDigitalPropertyType[]) => {\n this.digitalPropertyTypes$.next(types);\n }),\n );\n }\n\n public createDigitalProperty(workspaceId: string, formData: ICreateDigitalPropertyRequest): Observable {\n return this.workspaceRestAPI.createWorkspaceDigitalProperty(workspaceId, formData);\n }\n\n public validateDigitalPropertyBulkUpload(workspaceId: string, fileForm: FormData): Observable {\n return this.workspaceRestAPI.validateDigitalPropertyBulkUpload(workspaceId, fileForm);\n }\n\n public downloadDigitalPropertyTemplate(workspaceId: string): Observable {\n return this.workspaceRestAPI.downloadDigitalPropertyTemplate(workspaceId);\n }\n\n public createBulkDigitalProperty(workspaceId: string, fileForm: FormData): Observable {\n return this.workspaceRestAPI.createBulkDigitalProperty(workspaceId, fileForm);\n }\n\n public setQuickMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n quickSetup: IQuickMonitoringSetupRequest,\n ): Observable {\n return this.workspaceRestAPI.setDigitalPropertyQuickMonitoring(workspaceId, digitalPropertyId, quickSetup);\n }\n\n public updateMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n monitoring: IDigitalPropertyMonitoring,\n ): Observable {\n return this.workspaceRestAPI.updateDigitalPropertyMonitoring(workspaceId, digitalPropertyId, monitoring);\n }\n\n public removeMonitoring(workspaceId: string, digitalPropertyId: string): Observable {\n return this.workspaceRestAPI.removeDigitalPropertyMonitoring(workspaceId, digitalPropertyId);\n }\n\n public getDigitalPropertyLatestAndPreviousMonitoringScanResults(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n return this.workspaceRestAPI\n .getDigitalPropertyLatestAndPreviousMonitoringScanResults(workspaceId, digitalPropertyId)\n .pipe(catchError(this.onGetDigitalPropertyError.bind(this)));\n }\n\n public updateDigitalProperty(formData: IDigitalProperty, id: string): Observable {\n return this.workspaceRestAPI.updateDigitalProperty(formData, id);\n }\n\n public removeDigitalProperty(id: string, workspaceId: string): Observable {\n return this.workspaceRestAPI.removeDigitalProperty(id, workspaceId);\n }\n\n public getDomainRestrictions(restrictions: string[]): RegExp[] {\n if (Array.isArray(restrictions)) {\n return restrictions.map(SharedCommonUtility.urlPatternToRegexp);\n }\n\n return [];\n }\n\n public isWebsiteType(propertyType: IDigitalPropertyType): boolean {\n return propertyType[$digitalPropertyType.canRestrictDomain] === true;\n }\n\n public isMobileType(propertyType: IDigitalPropertyType): boolean {\n return MOBILE_DIGITAL_PROPERTY_TYPE_NAMES.includes(propertyType[$digitalPropertyType.name]);\n }\n\n public archive(workspaceId: string, digitalProperty: string): Observable {\n return this.workspaceRestAPI.archiveProperty(workspaceId, digitalProperty);\n }\n\n public restore(workspaceId: string, digitalProperty: string): Observable {\n return this.workspaceRestAPI.restoreProperty(workspaceId, digitalProperty);\n }\n\n public existingKeyValues(workspaceId: string, key: keyof IDigitalProperty, propertyId?: string): Observable {\n return this.workspaceRestAPI.existingKeyValues(workspaceId, key, propertyId);\n }\n\n public getDigitalPropertyOverview(workspaceId: string, dpId: string): Observable {\n return this.workspaceRestAPI.getDigitalPropertyOverview(workspaceId, dpId);\n }\n\n public createUserWayOrganizationSite(workspaceId: string, dpId: string): Observable {\n return this.workspaceRestAPI.createUserWayOrganizationSite(workspaceId, dpId);\n }\n\n public deleteUserWayOrganizationSite(workspaceId: string, dpId: string): Observable {\n return this.workspaceRestAPI.deleteUserWayOrganizationSite(workspaceId, dpId);\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Router } from '@angular/router';\nimport { ErrorHandler, Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { StatusCodes } from 'http-status-codes';\nimport { throwError, Observable, EMPTY } from 'rxjs';\n\nimport { Api } from '../../../shared/constants/api';\nimport { NotificationService } from './notification.service';\nimport { NotificationPosition } from '../models/notification.model';\nimport { TranslateService } from '../translate/translate.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorHandlerService extends ErrorHandler {\n constructor(\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private router: Router,\n ) {\n super();\n }\n\n public handleError(error: Error | HttpErrorResponse): void {\n if (error instanceof HttpErrorResponse) {\n if (!navigator.onLine) {\n this.notificationService.error(\n this.translateService.instant('temporary_connection_error', [\n `\\n${this.translateService.instant('you_are_offline_now')}`,\n ]),\n NotificationPosition.Toast,\n );\n return;\n }\n if (error.status === StatusCodes.FORBIDDEN) {\n this.router.navigate(['/', Api.forbidden]).then();\n return;\n }\n } else {\n // Handle Client Error (Angular Error, ReferenceError...)\n this.notificationService.error(\n this.translateService.instant('temporary_application_error', [`\\n${error.message}`]),\n NotificationPosition.Toast,\n );\n console.error(error); // Note that in production build console.error() will send a /tracking/console beacon\n }\n return;\n }\n\n public handleRoutingError(error: any): void {\n if (/ChunkLoadError:/i.test(error)) {\n /**\n * Chunk load errors can be common during the deployment of new versions of the app\n * because the chunk files associated with the previous version are no longer available on the server.\n *\n * This error can only happen in a very short window of time, which is after the deployment finishes, and before\n * users receive the \"traditional blocking prompt\" informing that they must reload the page to get the new version.\n */\n this.notificationService.error(\n this.translateService.instant('temporary_application_loading_error'),\n NotificationPosition.Toast,\n );\n return;\n }\n\n // Log unexpected routing errors that may need investigation.\n console.error('[ErrorHandlerService.handleRoutingError]', `[url:${this.router.url}]`, error);\n\n // Note: unhandled routing errors did not show any toast in the past, so we're preserving that behaviour for now.\n // TODO EAP-21877: gather logs and handle new errors if needed, and consider showing error toasts for other unhandled errors.\n }\n\n public handleNotFound(): (error: Error | HttpErrorResponse) => Observable {\n return (error: HttpErrorResponse): Observable => {\n if (error.status === StatusCodes.NOT_FOUND) {\n this.router.navigate(['/', `${Api.not_found}`], { replaceUrl: true }).then();\n return EMPTY;\n }\n return throwError(error as Error);\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { BehaviorSubject } from 'rxjs';\nimport { has } from 'lodash';\n\nimport { CommonUtility } from '../utility/common.utility';\nimport { DEFAULT_SCROLL_HEIGHT, DEFAULT_VALIDATION_BOUNCE_TIME, RESPONSE_ERROR_MESSAGES } from '../shared/constants';\nimport { IErrorPageScreenshot } from '../../../shared/interfaces/error.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\nconst SCROLL_TO_ERROR_FACTOR: number = 1.7;\nconst ERROR_MESSAGE_SELECTOR: string = '.form-control-validation-error.error-active,div.ds-input-error-message';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorMessageService {\n private errorResponseMessages: Array;\n\n public errorResponseMessages$: BehaviorSubject;\n\n constructor() {\n this.errorResponseMessages$ = new BehaviorSubject([]);\n this.errorResponseMessages = [];\n }\n\n public addErrorResponseMessage(error: string): void {\n this.errorResponseMessages.push(error);\n this.errorResponseMessages$.next(this.errorResponseMessages);\n }\n\n public setFocusOnFirstError(component: Element, bounceTime: number = DEFAULT_VALIDATION_BOUNCE_TIME): void {\n const setFocus = (): void => {\n const header: HTMLElement = document.getElementById('app-header');\n let scrollHeight: number = DEFAULT_SCROLL_HEIGHT;\n\n if (SharedCommonUtility.notNullish(header)) {\n scrollHeight = header.getBoundingClientRect().height;\n }\n\n const element: HTMLElement = component.querySelector(ERROR_MESSAGE_SELECTOR);\n const scrollTop: number = -(scrollHeight * SCROLL_TO_ERROR_FACTOR);\n\n if (element === null) {\n console.warn(\n '[ErrorMessageService.setFocusOnFirstError] Trying to set a focus on element that does not exists',\n component,\n );\n return;\n }\n\n const fieldId: string = element.classList.contains('ds-input-error-message')\n ? element.id\n : element.parentElement?.parentElement?.getAttribute('id');\n\n const fieldElement: HTMLElement =\n (fieldId && component.querySelector(`[aria-describedby~=\"${fieldId}\"],[aria-labelledby~=\"${fieldId}\"]`)) || null;\n\n CommonUtility.scrollElementIntoView(element);\n if (SharedCommonUtility.isNullish(fieldElement)) {\n document.addEventListener('scrollend', () => window.scrollBy({ top: scrollTop }), { once: true });\n }\n\n if (fieldElement) {\n fieldElement.focus();\n } else {\n element.focus();\n }\n };\n\n window.setTimeout(setFocus, bounceTime);\n }\n\n public getTranslateKey(errorName: string): string | null {\n let key: string | null = null;\n\n if (typeof RESPONSE_ERROR_MESSAGES[errorName] === 'string') {\n key = RESPONSE_ERROR_MESSAGES[errorName];\n }\n\n return key;\n }\n\n public getAppErrorResponse(response: HttpErrorResponse): string | null {\n let key: string | null = null;\n\n if (has(response, 'error.app.name')) {\n key = this.getTranslateKey(response.error.app.name);\n }\n\n return key;\n }\n\n public getGlobalErrorResponse(response: HttpErrorResponse): string {\n let error: any = '';\n\n if (has(response, 'error.app.description')) {\n error = response.error.app.description;\n } else if (has(response, 'message')) {\n error = response.message;\n }\n\n if (has(response, 'error.error.code')) {\n error += '\\n\\nCode: ' + response.error.error.code;\n }\n\n if (has(response, 'error.error.errmsg')) {\n error += '\\n\\nErrmsg: ' + response.error.error.errmsg;\n }\n\n if (has(response, 'error.error.description')) {\n error += '\\n\\nDescription: ' + response.error.error.description;\n }\n\n if (has(response, 'error.error.message')) {\n error += '\\n\\nMessage: ' + response.error.error.message;\n }\n\n return error;\n }\n\n public getPageScreenshotData(response: HttpErrorResponse): IErrorPageScreenshot {\n return response.error.app.details;\n }\n\n public isErrorScreenshotAvailable(response: HttpErrorResponse): boolean {\n return has(response, 'error.app.details');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ExternalLinkService {\n constructor(private appConfigService: AppConfigService) {}\n\n public getZendeskTicketUrl(ticketNumber: number): string {\n return `${this.getBaseZendeskUrl()}/agent/tickets/${ticketNumber}`;\n }\n\n public getZendeskSubmitTicketUrl(): string {\n return `${this.getBaseZendeskUrl()}/hc/en-us/requests/new`;\n }\n\n public getHelpCenterUrl(): string {\n return `${this.getBaseZendeskUrl()}/hc/en-us`;\n }\n\n public getEmailConsultationFormUrl(): string {\n return `${this.getZendeskSubmitTicketUrl()}?ticket_form_id=${this.appConfigService.getZendeskEmailConsultationFormId()}`;\n }\n\n public getManualEvaluationServiceRequestFormUrl(): string {\n return `${this.getZendeskSubmitTicketUrl()}?ticket_form_id=${this.appConfigService.getZendeskManualEvaluationServiceRequestFormId()}`;\n }\n\n public getProductSupportFormUrl(): string {\n return `${this.getZendeskSubmitTicketUrl()}?ticket_form_id=${this.appConfigService.getZendeskProductSupportFormId()}`;\n }\n\n public getProductRoadmapUrl(): string {\n return 'https://portal.productboard.com/esstp6cmyupxmfjysyeye5rm/tabs/2-under-consideration';\n }\n\n public getValidationTestingServiceRequestFormUrl(): string {\n return `${this.getManualEvaluationServiceRequestFormUrl()}&test_type=progression`;\n }\n\n private getBaseZendeskUrl(): string {\n const zendeskUrl: string = this.appConfigService.getZendeskUrl();\n return zendeskUrl.endsWith('/') ? zendeskUrl.slice(0, -1) : zendeskUrl;\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, UrlTree, RouterStateSnapshot } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\n\nimport { FeatureFlagService } from './feature-flag.service';\nimport { ActivatedRouteData } from '../../shared/constants';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\ninterface IRedirectionConfig {\n featureFlag: FeatureFlagCollection;\n route: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureFlagRedirectionGuard {\n /**\n * This class is used to apply redirections to new routes based on feature flags.\n * If the provided feature flag serves true the router will redirect to the provided route.\n *\n * @param featureFlagService\n * @param router\n */\n constructor(\n private featureFlagService: FeatureFlagService,\n private router: Router,\n ) {}\n\n public canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot): Observable | boolean {\n const redirectionConfig: IRedirectionConfig = route.data[ActivatedRouteData.redirectTo];\n\n if (!SharedCommonUtility.elementsNotNullish([redirectionConfig?.featureFlag, redirectionConfig?.route])) {\n console.warn('[FeatureFlagRedirectionGuard.canActivate] A feature flag and a redirect url must be provided.');\n return true;\n }\n\n return this.featureFlagService.variation$(redirectionConfig.featureFlag, false).pipe(\n map((value: VariationValue): UrlTree | boolean => {\n if (value) {\n const activatedRoute: string = route.url.toString();\n const completeUrl: string = routerState.url;\n const newRedirectUrl: string =\n redirectionConfig.route + completeUrl.substring(completeUrl.indexOf(activatedRoute) + activatedRoute.length);\n\n return this.router.parseUrl(newRedirectUrl);\n }\n\n return true;\n }),\n );\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, UrlTree } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\n\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { Api } from '../../../../shared/constants/api';\nimport { FeatureFlagService } from './feature-flag.service';\nimport { ActivatedRouteData } from '../../shared/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureFlagGuard {\n /**\n * This class is used to evaluate a flag against a specific route.\n *\n * @param featureFlagService\n * @param router\n * @param errorHandlerService\n */\n constructor(\n private featureFlagService: FeatureFlagService,\n private router: Router,\n ) {}\n\n public canActivate(route: ActivatedRouteSnapshot): Observable | UrlTree {\n const featureFlag: string = route.data[ActivatedRouteData.featureFlag];\n const forbiddenPage: UrlTree = this.router.parseUrl(Api.forbidden);\n\n if (SharedCommonUtility.isNullish(featureFlag)) {\n console.warn('[FeatureFlagGuard.canActivate] A feature flag id must be provided.');\n return forbiddenPage;\n }\n\n return this.featureFlagService.variation$(featureFlag).pipe(\n map((value: VariationValue): UrlTree | boolean => {\n if (value) {\n return true;\n }\n\n return forbiddenPage;\n }),\n );\n }\n}\n","export enum $applicationRole {\n _id = '_id',\n createdAt = 'createdAt',\n description = 'description',\n name = 'name',\n permissions = 'permissions',\n roleOrigin = 'roleOrigin',\n updatedAt = 'updatedAt',\n}\n","export enum $workspaceRole {\n _id = '_id',\n createdAt = 'createdAt',\n description = 'description',\n name = 'name',\n permissions = 'permissions',\n roleOrigin = 'roleOrigin',\n updatedAt = 'updatedAt',\n workspace = 'workspace',\n workspacesUserId = 'workspacesUserId',\n}\n\nexport enum workspaceRoleOrigin {\n custom = 'custom',\n predefined = 'predefined',\n deprecated = 'deprecated',\n}\n","import { FeatureFlagCollection } from '../interfaces/feature-flag.interface';\n\nexport const E2eFeatureFlagMock: Partial> = Object.freeze({\n [FeatureFlagCollection.userFlows]: true,\n [FeatureFlagCollection.userFlowsGuided]: false,\n [FeatureFlagCollection.tenantRiskScore]: true,\n [FeatureFlagCollection.wsRiskScore]: true,\n [FeatureFlagCollection.dpRiskScore]: true,\n [FeatureFlagCollection.govDashWebsiteAppsNewSection]: true,\n [FeatureFlagCollection.riskChartFrequency]: true,\n [FeatureFlagCollection.scimFunctionality]: true,\n [FeatureFlagCollection.scansListRedesign]: true,\n [FeatureFlagCollection.scansRevampInPopup]: true,\n [FeatureFlagCollection.requestManualEvaluation]: true,\n [FeatureFlagCollection.filteringUsers]: true,\n [FeatureFlagCollection.removedStepper]: true,\n [FeatureFlagCollection.evaluationStatus]: true,\n [FeatureFlagCollection.pushManualRequestAudit]: true,\n [FeatureFlagCollection.scanBanner]: true,\n [FeatureFlagCollection.manualEvaluationConformanceTab]: true,\n [FeatureFlagCollection.updateTaskSlideout]: true,\n [FeatureFlagCollection.navSupportPortalUx]: true,\n [FeatureFlagCollection.customRulesAndSeverity]: true,\n [FeatureFlagCollection.customSeverities]: true,\n [FeatureFlagCollection.bulkWsAndDpsCreationWithCustomMonitoringSettings]: true,\n [FeatureFlagCollection.labeForEveryone]: true,\n [FeatureFlagCollection.userway_integration]: true,\n [FeatureFlagCollection.organizationPortfolio]: true,\n [FeatureFlagCollection.prescanFlow]: true,\n [FeatureFlagCollection.userFlowsQ42023Revamp]: true,\n [FeatureFlagCollection.mobileAppScans]: true,\n [FeatureFlagCollection.beManEvaluations]: true,\n [FeatureFlagCollection.monitoringHistoricalReport]: true,\n [FeatureFlagCollection.evaluationsSummarization]: true,\n [FeatureFlagCollection.recordingAutomatedFlows]: true,\n [FeatureFlagCollection.automatedFlowPasswordCSSField]: true,\n [FeatureFlagCollection.requestValidationTesting]: true,\n [FeatureFlagCollection.mobileTestingEmulator]: true,\n [FeatureFlagCollection.nonWcagStandardsPlatform]: true,\n [FeatureFlagCollection.commonFindings]: false,\n [FeatureFlagCollection.viewIssueTrackingConnectionStatus]: false,\n [FeatureFlagCollection.digitalAssetFindings]: false,\n [FeatureFlagCollection.artificialIntelligenceOptin]: false,\n});\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of, Subscription } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport {\n Event,\n initialize,\n Options,\n Result as HarnessFeatureFlagClient,\n Target as HarnessClientTarget,\n VariationValue,\n} from '@harnessio/ff-javascript-client-sdk';\nimport { map as lodashMap } from 'lodash';\n\nimport { $user } from '../../../../shared/constants/user';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { SharedTextUtility } from '../../../../shared/utils/text.utility';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { UserContextAttributes } from '../../../../shared/interfaces/feature-flag.interface';\nimport { AppConfigService } from '../app-config.service';\nimport { UserService } from '../user.service';\nimport { $applicationRole } from '../../../../shared/constants/application-role.constants';\nimport { $workspaceRole } from '../../../../shared/constants/workspace-role.constants';\nimport { $securityGroup } from '../../../../shared/constants/security-group';\nimport { TenantService } from '../tenant.service';\nimport { ITenantInfoWithPackageInfo } from '../../../../shared/interfaces/tenant.interface';\nimport { $tenant } from '../../../../shared/constants/tenant';\nimport { environment } from '../../../environments/environment';\nimport { EnvironmentType, GlobalFeatureFlagDefaults } from '../../shared/constants';\nimport { E2eFeatureFlagMock } from '../../../../shared/constants/e2e-feature-flag.mock';\nimport { AngularUtility } from '../../utility/angular.utility';\n\ntype FeatureFlagClientTarget = HarnessClientTarget & UserContextAttributes;\nconst LEVEL_ACCESS_PLATFORM_CLIENT = 'level-access-platform-client';\nconst OPTION_CONFIG: Options = {\n // Setting to true to display information logs (ie event streams, flags) in the console\n debug: false,\n streamEnabled: true,\n};\nconst MAX_RETRIES: number = 3;\n\ninterface IHarnessInitOptions {\n init: boolean;\n anonymous: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureFlagService implements OnDestroy {\n private subscriptions: Subscription = new Subscription();\n private _clientInitialized$: BehaviorSubject = new BehaviorSubject(void 0);\n private readonly authorizedClientInitialized$: Observable;\n private readonly clientInitialized$: Observable;\n private client: HarnessFeatureFlagClient;\n private _flagsChange$: BehaviorSubject = new BehaviorSubject(void 0);\n private _attempts: number;\n\n constructor(\n private appConfigService: AppConfigService,\n private userService: UserService,\n private tenantService: TenantService,\n ) {\n const userIsEqual = (userA: IUserServerResponse, userB: IUserServerResponse): boolean =>\n userA?.[$user._id] === userB?.[$user._id];\n\n this.subscriptions.add(\n this.userService.userDataChanged$\n .pipe(\n distinctUntilChanged(userIsEqual),\n switchMap(\n (user: IUserServerResponse): Observable<(IUserServerResponse | ITenantInfoWithPackageInfo)[]> =>\n (SharedCommonUtility.notNullishOrEmpty(user) && user[$user.currentTenantId]\n ? this.tenantService.getTenantFromTenantedScope(user[$user.currentTenantId])\n : of(null)\n ).pipe(\n map((tenant: ITenantInfoWithPackageInfo | null) => [user, tenant]),\n catchError(() => of([user, null])),\n ),\n ),\n )\n .subscribe(this.identify.bind(this)),\n );\n\n this.authorizedClientInitialized$ = this._clientInitialized$.pipe(\n filter((initOptions: IHarnessInitOptions) => {\n return SharedCommonUtility.notNullish(initOptions?.anonymous);\n }),\n filter((initOptions: IHarnessInitOptions) => !initOptions.anonymous),\n map((initOptions: IHarnessInitOptions): boolean => initOptions.init),\n AngularUtility.shareRef(),\n );\n\n this.clientInitialized$ = this._clientInitialized$.pipe(\n map((initOptions: IHarnessInitOptions): boolean => initOptions?.init ?? false),\n AngularUtility.shareRef(),\n );\n }\n\n /**\n * This method is responsible for identifying and initializing the client target context information.\n * Once identified, the client can listen for the different events triggered by the SDK.\n * If client is null, the method will attempt to reinitialize it accordingly.\n *\n * @param array user {IUserServerResponse} data to be mapped as the target attributes during client initialization.\n * tenant {ITenantInfoWithPackageInfo} tenant data to be mapped as the target attributes during client initialization.\n * Targets identifier must be unique and required.\n * @private\n */\n private identify([user, tenant]: [IUserServerResponse, ITenantInfoWithPackageInfo]): void {\n const target: FeatureFlagClientTarget = SharedCommonUtility.notNullish(user)\n ? {\n identifier: `userId-${user[$user._id]}`,\n name: SharedCommonUtility.notNullish(user[$user.displayName])\n ? SharedTextUtility.convertToHarnessAcceptableFormat(user[$user.displayName])\n : '',\n anonymous: false,\n attributes: {\n service: LEVEL_ACCESS_PLATFORM_CLIENT,\n userId: user[$user._id],\n applicationRoles: lodashMap(user[$user.applicationRoles] ?? [], $applicationRole.name).join(','),\n workspaceRoles: lodashMap(user[$user.workspaceRoles] ?? [], $workspaceRole.name).join(','),\n email: user[$user.email],\n groups: lodashMap(user[$user.groups] ?? [], $securityGroup.name).join(','),\n tenantName: tenant?.[$tenant.name],\n tenantId: tenant?.[$tenant._id],\n packageId: tenant?.packageId,\n packageName: tenant?.packageName,\n },\n }\n : {\n identifier: 'anonymous',\n name: 'anonymous',\n anonymous: true,\n attributes: {\n service: LEVEL_ACCESS_PLATFORM_CLIENT,\n },\n };\n\n this._attempts = 0;\n this.initialize(target);\n }\n\n private initialize(target: FeatureFlagClientTarget): void {\n // for e2es, if you're logged in to the platform, you're also logged into to harness\n // otherwise, you're an anonymous user on harness\n if (environment.environmentType === EnvironmentType.QA) {\n this.client = {\n off: (): void => {},\n close: (): void => {},\n } as HarnessFeatureFlagClient;\n\n this._clientInitialized$.next({\n init: true,\n anonymous: target?.anonymous ?? true,\n });\n this._flagsChange$.next();\n this._attempts = 0;\n return;\n }\n this.client = initialize(this.appConfigService.getHarnessSDKClientKey(), target, OPTION_CONFIG);\n\n // Event happens when connection to server is established\n // flags contains all evaluations against SDK key\n this.client.on(Event.READY, () => {\n this._clientInitialized$.next({\n init: true,\n anonymous: target?.anonymous ?? true,\n });\n this._flagsChange$.next();\n this._attempts = 0;\n\n // Event happens when a changed event is pushed.\n // flag contains information about the updated feature flag\n // Listen to CHANGED events when READY happens since the event happens when initializing FF values as well.\n this.client.on(Event.CHANGED, () => {\n this._flagsChange$.next();\n });\n });\n\n this.client.on(Event.ERROR_AUTH, (err: unknown) => {\n if (this._attempts >= MAX_RETRIES) {\n this._clientInitialized$.next({\n init: false,\n anonymous: target?.anonymous ?? true,\n });\n console.warn(\n `[FeatureFlagService.initialize] Unable to initialize after ${this._attempts} attempts. Switching to default flag values.`,\n );\n return;\n }\n\n const errorMessage: string = (err as ErrorEvent)?.error?.message ?? (err as TypeError)?.message;\n setTimeout(() => {\n this._attempts++;\n console.warn(`[FeatureFlagService.initialize] Client initialize error '${errorMessage}' retry ${this._attempts}`, err);\n this.initialize(target);\n }, 1000);\n });\n }\n\n /**\n * An observable method that evaluates and returns the flag's variation value.\n *\n * @param flag - String representing the flag value\n * @param defaultValue - Boolean representing default value for the flag variation.\n * @param allowUnauthorized - Boolean allow unauthorized checks\n * Note: During a network connection error, the default value will be respected.\n * @returns an Observable variation value of boolean type\n */\n public variation$(flag: string, defaultValue?: boolean, allowUnauthorized: boolean = false): Observable {\n // Mock the Feature Flag response when the client is running under the e2e environment\n if (environment.environmentType === EnvironmentType.QA) {\n const returnDefault: boolean = defaultValue ?? false;\n return of(SharedCommonUtility.notNullish(E2eFeatureFlagMock[flag]) ? E2eFeatureFlagMock[flag] : returnDefault);\n }\n\n if (SharedCommonUtility.isNullish(this.client)) {\n console.warn(\n `[FeatureFlagService.variation$] Client is not initialized. Returning flag: ${flag} with a default value of ${defaultValue}`,\n );\n }\n\n // eslint-disable-next-line no-param-reassign\n defaultValue = GlobalFeatureFlagDefaults[flag] ?? defaultValue;\n\n return combineLatest([\n allowUnauthorized ? this.clientInitialized$ : this.authorizedClientInitialized$,\n this._flagsChange$,\n ]).pipe(\n shareReplay(),\n map(([clientInitialized, _]: [boolean, void]): boolean => {\n return clientInitialized;\n }),\n filter(SharedCommonUtility.notNullish),\n map((clientInitialized: boolean) => {\n if (!clientInitialized) {\n return defaultValue;\n }\n return this.client.variation(flag, defaultValue);\n }),\n );\n }\n\n /**\n * Evaluates and returns the flag's variation value.\n *\n * @param flag - String representing the flag value\n * @param defaultValue - Boolean representing default value for the flag variation.\n * @param allowUnauthorized - Boolean allow unauthorized checks\n * Note: During a network connection error, the default value will be respected.\n * @returns variation value of boolean type\n */\n public variation(flag: string, defaultValue?: boolean, allowUnauthorized: boolean = false): boolean {\n // Mock the Feature Flag response when the client is running under the e2e environment\n if (environment.environmentType === EnvironmentType.QA) {\n const returnDefault: boolean = defaultValue ?? false;\n return SharedCommonUtility.notNullish(E2eFeatureFlagMock[flag]) ? E2eFeatureFlagMock[flag] : returnDefault;\n }\n\n // eslint-disable-next-line no-param-reassign\n defaultValue = GlobalFeatureFlagDefaults[flag] ?? defaultValue;\n\n const clientIsNotInitialized: boolean = !this._clientInitialized$.value?.init;\n const clientIsNotAuthorized: boolean = this._clientInitialized$.value?.anonymous;\n const authorizationRequired: boolean = !allowUnauthorized;\n\n if (clientIsNotInitialized || (authorizationRequired && clientIsNotAuthorized)) {\n return defaultValue;\n }\n\n return this.client.variation(flag, defaultValue) as boolean;\n }\n\n /**\n * This method is used to listen to any flag events in the stream.\n */\n public get flagsChange$(): Observable {\n return this._flagsChange$.asObservable();\n }\n\n public get isAuthorizedClientInitialized$(): Observable {\n return this.authorizedClientInitialized$;\n }\n\n public get isClientInitialized$(): Observable {\n return this.clientInitialized$;\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.client?.off(); // remove event listeners\n this.client?.close(); // close application\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { RestService } from './rest.service';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { UserPropertyService } from './user-property.service';\nimport { IFlaw, IFlawStatusChange, IFlawStatusUserHistory } from '../../../shared/interfaces/flaw.interface';\nimport { $flaw, changedByType, flawStatus } from '../../../shared/constants/flaw';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FlawService {\n constructor(\n private restService: RestService,\n private userService: UserPropertyService,\n ) {}\n\n public setViewed(flawId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.markFlawAsViewed(workspaceId, digitalPropertyId, flawId),\n ),\n );\n }\n\n public getHistory(flawId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.getFlawHistory(workspaceId, digitalPropertyId, flawId),\n ),\n );\n }\n\n public hasHistory(flaw: IFlaw): boolean {\n return (\n flaw[$flaw.statusHistory].some(\n (changeEvent: IFlawStatusChange): boolean => changeEvent.changedByType === changedByType.user,\n ) || false\n );\n }\n\n public getPreviousStatus(flaw: IFlaw): flawStatus {\n const newFlawStatusHistoryLength: number = 1;\n const isNewFlaw: boolean = flaw[$flaw.statusHistory].length <= newFlawStatusHistoryLength;\n\n if (isNewFlaw) {\n return flawStatus.open;\n }\n const secondLastStatusIndex: number = flaw[$flaw.statusHistory].length - 2;\n return flaw[$flaw.statusHistory][secondLastStatusIndex].newStatus;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroup, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { isEqual } from 'lodash';\n\nimport { TranslateService } from '../translate/translate.service';\nimport { IFormErrorMessage, CustomAbstractControl, ErrorContainer } from '../interfaces/form.interface';\nimport { validationError } from '../constants/form.constants';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { CommonUtility } from '../utility/common.utility';\nimport { minPasswordLength } from '../../../shared/constants/user';\nimport { MAX_EMAILS_LIMIT_ERROR_KEY } from '../constants/user.constants';\nimport { SCAN_URLS_SIZE_LIMIT_ERROR_KEY } from '../constants/scan.constants';\nimport { $workspace, CHAR_LIMITS } from '../../../shared/constants/workspace';\nimport { CustomValidators } from './helpers/form-custom-validators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n constructor(\n private translateService: TranslateService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n public isFieldValid(field: string, form: UntypedFormGroup): boolean {\n const formField: AbstractControl = form.get(field);\n\n if (formField === null) {\n console.warn(`[FormService.isFieldValid] form field \"${field}\" does not exists`, form);\n return true;\n }\n\n if (formField.errors === null || formField.disabled) {\n return true;\n }\n\n const errors = Object.keys(formField.errors);\n\n if (errors.length > 0) {\n return false;\n }\n\n if (formField.touched === false && formField.pristine === true) {\n return true;\n }\n\n if (formField.dirty === false && formField.errors.length === 0) {\n return true;\n }\n\n return formField.valid;\n }\n\n public getErrorMessageForField(\n field: CustomAbstractControl | ErrorContainer,\n fieldName: string,\n customMessage: string = '',\n label: string = '',\n overrideErrors: { [key: string]: string } = {},\n ): string {\n function isCustomAbstractControl(ctrl: CustomAbstractControl | ErrorContainer): ctrl is CustomAbstractControl {\n return ctrl.hasOwnProperty('nativeElement');\n }\n\n const errors: Array = [];\n let message: string = '';\n let hasMappedCustomMessage: boolean = false;\n const addressedErrors: Set = new Set();\n const addError = (error: string, msg: string): void => {\n addressedErrors.add(error);\n if (SharedCommonUtility.isNullish(overrideErrors[error])) {\n errors.push(msg);\n } else {\n errors.push(overrideErrors[error]);\n }\n };\n\n if (isCustomAbstractControl(field) && CommonUtility.isHtmlElement(field.nativeElement) && field.nativeElement.disabled) {\n field.clearAsyncValidators();\n field.setErrors(null);\n return message;\n }\n\n if (field.errors === null) {\n return message;\n }\n\n if (field.hasError('minlength')) {\n addError(\n 'minlength',\n `requires minimum ${field.errors.minlength.requiredLength} chars (you have typed ${field.errors.minlength.actualLength})`,\n );\n }\n\n if (field.hasError('hasWhiteSpaces')) {\n addError('hasWhiteSpaces', this.translateService.instant('form-validation-whitespaces-pattern'));\n }\n\n if (field.hasError('isEmpty')) {\n if (\n isCustomAbstractControl(field) &&\n CommonUtility.isHtmlElement(field.nativeElement) &&\n field.nativeElement.type === 'file'\n ) {\n // Note: dataset.selectedFilesLength is here becuase we have a custom \"Select or drag and drop files\" action button\n if (\n typeof field.nativeElement.dataset.selectedFilesLength === 'string' &&\n Number(field.nativeElement.dataset.selectedFilesLength) === 0\n ) {\n addError('isEmpty', this.translateService.instant('form-validation-is-empty-file-list-pattern'));\n } else if (\n typeof field.nativeElement.dataset.selectedFilesLength !== 'string' &&\n field.nativeElement.files.length === 0\n ) {\n addError('isEmpty', this.translateService.instant('form-validation-is-empty-file-list-pattern'));\n }\n } else {\n addError('isEmpty', this.translateService.instant('form-validation-is-empty-pattern'));\n }\n }\n\n if (field.hasError('charactersOnly')) {\n addError('charactersOnly', this.translateService.instant('form-characters-only'));\n }\n\n if (field.hasError('excludeCharacters')) {\n addError('excludeCharacters', this.translateService.instant('exclude-characters', field.errors.excludeCharacters));\n }\n\n if (field.hasError('alphaNumericCharactersOnly')) {\n addError('charactersOnly', this.translateService.instant('form-alphanumeric-characters-only'));\n }\n\n if (field.hasError('nonEmojiCharactersOnly')) {\n addError('charactersOnly', this.translateService.instant('form-non-emoji-characters-only'));\n }\n\n if (field.hasError('designRuleIdPattern')) {\n addError('charactersOnly', this.translateService.instant('form-validation-design-rule-id-pattern'));\n }\n\n if (field.hasError('invalidPassword')) {\n addError('invalidPassword', this.translateService.instant('form-validation-password-pattern', minPasswordLength));\n }\n\n if (field.hasError('noTagSelected')) {\n addError('noTagSelected', this.translateService.instant('form-validation-scan-tag'));\n hasMappedCustomMessage = true;\n }\n\n if (field.hasError('mustBeSelected')) {\n if (!SharedCommonUtility.isNullish(overrideErrors['mustBeSelected'])) {\n addError('mustBeSelected', overrideErrors['mustBeSelected']);\n hasMappedCustomMessage =\n SharedCommonUtility.notNullishOrEmpty(overrideErrors['mustBeSelected']) &&\n overrideErrors['mustBeSelected'] !== this.translateService.instant('must_be_selected');\n }\n }\n\n if (field.hasError('noConformanceLevelSelected')) {\n addError('noConformanceLevelSelected', this.translateService.instant('select_conformance_option_validation'));\n hasMappedCustomMessage = true;\n }\n\n if (field.hasError(validationError.required)) {\n if (!SharedCommonUtility.isNullish(overrideErrors[validationError.required])) {\n addError(validationError.required, overrideErrors[validationError.required]);\n hasMappedCustomMessage =\n SharedCommonUtility.isNullishOrEmpty(label) ||\n // TODO remove the two conditions below in EAP-26344\n overrideErrors[validationError.required] === this.translateService.instant('enter_viewport_width') ||\n overrideErrors[validationError.required] === this.translateService.instant('enter_viewport_height');\n } else {\n const nativeElement: HTMLInputElement | null = document.querySelector(`[name='${fieldName}']`);\n\n if (field.value === null || field.value === undefined || field.value.length === 0) {\n if (nativeElement) {\n if (nativeElement.nodeName.toLowerCase() === 'input' && nativeElement.type === 'datetime-local') {\n addError(validationError.required, this.translateService.instant('form-validation-datetime-local-invalid-format'));\n } else if (nativeElement.nodeName.toLowerCase() === 'select') {\n addError(validationError.required, this.translateService.instant('form-validation-field-is-not-selected'));\n } else if (nativeElement.nodeName.toLowerCase() === 'input' && nativeElement.type === 'email') {\n addError(validationError.required, this.translateService.instant('form-validation-email-pattern'));\n }\n }\n }\n\n addError(\n validationError.required,\n this.translateService.instant(\n errors.length === 0 ? 'form-validation-is-required' : 'form-validation-and-is-required-pattern',\n ),\n );\n }\n }\n\n if (field.hasError('invalidEmail')) {\n if (typeof overrideErrors['invalidEmail'] === 'undefined') {\n addError('invalidEmail', this.translateService.instant('form-validation-email-pattern'));\n } else if (errors.length === 0) {\n hasMappedCustomMessage = true;\n addError('invalidEmail', this.translateService.instant(overrideErrors['invalidEmail']));\n }\n }\n\n if (field.hasError('invalidCreateNoteDate')) {\n addError('invalidCreateNoteDate', this.translateService.instant('form-validation-datetime-local-invalid-format'));\n }\n\n if (field.hasError('noSelection')) {\n addError('noSelection', this.translateService.instant('form-validation-one-element-must-be-selected'));\n }\n\n if (field.hasError(validationError.minDate)) {\n addError(validationError.minDate, this.translateService.instant('form-validation-min-date'));\n }\n\n if (field.hasError(validationError.maxDate)) {\n addError(validationError.maxDate, this.translateService.instant('form-validation-max-date'));\n }\n\n if (field.hasError('isDomainPartOfSubscription')) {\n addError('isDomainPartOfSubscription', this.translateService.instant('form-validation-url-subscription'));\n hasMappedCustomMessage =\n SharedCommonUtility.notNullishOrEmpty(overrideErrors['isDomainPartOfSubscription']) &&\n SharedCommonUtility.isNullishOrEmpty(label);\n }\n\n if (field.hasError('isDomainUnavailable')) {\n addError('isDomainUnavailable', this.translateService.instant('form-validation-domain-unavailable'));\n }\n\n if (field.hasError('isDomainValid')) {\n addError('isDomainValid', this.translateService.instant('form-validation-domain-valid', field.errors.isDomainValid));\n hasMappedCustomMessage =\n SharedCommonUtility.notNullishOrEmpty(overrideErrors['isDomainValid']) && SharedCommonUtility.isNullishOrEmpty(label);\n }\n\n if (field.hasError('min')) {\n addError('min', this.translateService.instant('form-validation-min', field.errors.min.min));\n hasMappedCustomMessage = SharedCommonUtility.notNullishOrEmpty(overrideErrors['min']);\n }\n\n if (field.hasError('max')) {\n addError('max', this.translateService.instant('form-validation-max', field.errors.max.max));\n hasMappedCustomMessage = SharedCommonUtility.notNullishOrEmpty(overrideErrors['max']);\n }\n\n if (field.hasError(SCAN_URLS_SIZE_LIMIT_ERROR_KEY)) {\n addError(\n SCAN_URLS_SIZE_LIMIT_ERROR_KEY,\n this.translateService.instant('form-validation-exceed-max-number-of-urls', field.errors[SCAN_URLS_SIZE_LIMIT_ERROR_KEY]),\n );\n }\n\n if (field.hasError(MAX_EMAILS_LIMIT_ERROR_KEY)) {\n addError(\n MAX_EMAILS_LIMIT_ERROR_KEY,\n this.translateService.instant('form-validation-exceed-max-number-of-emails', field.errors[MAX_EMAILS_LIMIT_ERROR_KEY]),\n );\n }\n\n if (field.hasError('maxLines')) {\n addError('maxLines', this.translateService.instant('form-validation-exceed-max-number-of-lines', field.errors.maxLines));\n }\n\n if (\n field.hasError(validationError.invalidJSON) &&\n SharedCommonUtility.notNullish(overrideErrors[validationError.invalidJSON])\n ) {\n hasMappedCustomMessage = true;\n addError(validationError.invalidJSON, overrideErrors[validationError.invalidJSON]);\n }\n\n if (field.hasError(validationError.invalidFileType)) {\n addError(\n validationError.invalidFileType,\n this.translateService.instant('form-validation-invalid-file-type', field.errors[validationError.invalidFileType]),\n );\n }\n\n if (field.hasError(validationError.invalidFileTypes)) {\n addError(\n validationError.invalidFileTypes,\n this.translateService.instant('form-validation-invalid-file-types', field.errors[validationError.invalidFileTypes]),\n );\n }\n\n if (field.hasError(validationError.attachmentQuantityExceedsLimit)) {\n addError(\n validationError.attachmentQuantityExceedsLimit,\n this.translateService.instant(\n 'form-validation-attachment-quantity-exceeds-limit',\n field.errors[validationError.attachmentQuantityExceedsLimit],\n ),\n );\n }\n\n if (field.hasError(validationError.attachmentSizeExceedsLimit)) {\n addError(\n validationError.attachmentSizeExceedsLimit,\n this.translateService.instant(\n 'form-validation-attachment-size-exceeds-limit',\n SharedCommonUtility.formatBytes(field.errors[validationError.attachmentSizeExceedsLimit]),\n ),\n );\n }\n\n if (field.hasError(validationError.digitalPropertyKey)) {\n addError(validationError.digitalPropertyKey, this.translateService.instant('form-validation-invalid-digital-property-key'));\n }\n\n if (field.hasError(validationError.digitalPropertyFieldWorkspaceDuplicate)) {\n const propKey: $digitalProperty = field.getError(validationError.digitalPropertyFieldWorkspaceDuplicate);\n addError(\n validationError.digitalPropertyFieldWorkspaceDuplicate,\n this.translateService.instant(`form-validation-duplicated-digital-property-${propKey}`),\n );\n }\n\n if (field.hasError(validationError.masterLibraryRuleIdDuplicate)) {\n addError(\n validationError.masterLibraryRuleIdDuplicate,\n this.translateService.instant(`form-validation-duplicated-audit-rule-id`),\n );\n }\n\n if (field.hasError(validationError.notMatchDomain)) {\n addError(validationError.notMatchDomain, this.translateService.instant(`form-validation-domain-not-match`));\n }\n\n if (field.hasError(validationError.urlInvalid)) {\n addError(validationError.urlInvalid, this.translateService.instant(`form-validation-url-pattern`));\n }\n\n if (field.hasError(validationError.in)) {\n addError(validationError.in, this.translateService.instant(`form-validation-field-not-in-error`));\n }\n\n if (field.hasError(validationError.unique)) {\n addError(validationError.unique, this.translateService.instant('form-validation-unique-validator'));\n }\n\n if (field.hasError(validationError.invalidSubdomain)) {\n addError(validationError.invalidSubdomain, this.translateService.instant('form-validation-subdomain'));\n }\n\n if (field.hasError(validationError.maxlength)) {\n /**\n * The UI/UX team is trying a new format for some form field error messages. They started this with the form\n * field for the workspace \"name\" in the upsert workspace form.\n */\n if (\n overrideErrors?.[validationError.maxlength] ===\n this.translateService.instant('upsert_workspace_name_max_length_error_label', CHAR_LIMITS[$workspace.name])\n ) {\n hasMappedCustomMessage = true;\n }\n\n addError(\n validationError.maxlength,\n this.translateService.instant('form-validation-maxlength', field.errors[validationError.maxlength].requiredLength),\n );\n }\n\n if (field.hasError('cssSelectorInvalid')) {\n addError('cssSelectorInvalid', this.translateService.instant('invalid_css_selector_format'));\n }\n\n if (field.hasError(validationError.datesValidator)) {\n addError(validationError.datesValidator, this.translateService.instant('start_before_end_validation'));\n }\n\n if (field.hasError(validationError.invalidInteger)) {\n addError(validationError.invalidInteger, this.translateService.instant('form_validation_integer_value'));\n }\n\n if (field.hasError(validationError.invalidZeroInt)) {\n addError(validationError.invalidZeroInt, this.translateService.instant('form_validation_integer_value_non_zero'));\n }\n\n Object.keys(field.errors)\n .filter((error: string) => {\n return !addressedErrors.has(error);\n })\n .filter((error: string) => {\n return overrideErrors.hasOwnProperty(error);\n })\n .forEach((error: string) => {\n errors.push(overrideErrors[error]);\n });\n\n if (field.hasError('invalidArchiveConfirmationMessage')) {\n errors.length = 0;\n errors.push(this.translateService.instant('form-validation-must-not-be-empty-and-is-required'));\n }\n\n if (errors.length > 0) {\n let labelFieldName: string;\n\n if (label.length > 0) {\n labelFieldName = this.translateService.instant(label);\n } else {\n labelFieldName = fieldName\n .split(/(?=[A-Z])/)\n .join(' ')\n .toLowerCase();\n }\n\n message = hasMappedCustomMessage === false ? `${this.translateService.instant('the_form_field', labelFieldName)} ` : '';\n const endSymbol: string = errors[errors.length - 1].endsWith('.') ? '' : '.';\n message += hasMappedCustomMessage === false ? errors.join(', ') + endSymbol : errors[0];\n }\n\n if (customMessage && customMessage.length > 0) {\n message += ' ' + this.translateService.instant(customMessage) + '.';\n }\n\n return message;\n }\n\n public getErrorMessages(form: UntypedFormGroup, formName?: string): IFormErrorMessage[] {\n const errors: Array = [];\n\n if (form.valid === true) {\n return errors;\n }\n\n const processFormControl = (formControlName: string): void => {\n const formControl: CustomAbstractControl = form.controls[formControlName] as CustomAbstractControl;\n const message: string = this.getErrorMessageForField(formControl, formControlName, '', '');\n\n if (message.length === 0) {\n return;\n }\n\n const errorData: IFormErrorMessage = {\n controlName: formControlName,\n message: message,\n };\n\n errors.push(errorData);\n };\n\n if (form.errors) {\n const message: string = this.getErrorMessageForField(form, formName);\n if (message.length !== 0) {\n const errorData: IFormErrorMessage = {\n controlName: formName,\n message: message,\n };\n\n errors.push(errorData);\n }\n } else {\n Object.keys(form.controls).forEach(processFormControl);\n }\n\n return errors;\n }\n\n public getInvalidControls(form: UntypedFormGroup): AbstractControl[] {\n const invalidControls: AbstractControl[] = [];\n\n const processFormControl = (formControlName: string): void => {\n if (form.controls[formControlName].invalid === true) {\n invalidControls.push(form.controls[formControlName]);\n }\n };\n\n Object.keys(form.controls).forEach(processFormControl);\n\n return invalidControls;\n }\n\n public syncFormValuesToQueryParams(form: UntypedFormGroup, fields: string[]): Subscription {\n this.updateFormValuesFromQueryParams(form, fields);\n\n return form.valueChanges\n .pipe(\n map((values: Record) => this.buildQueryParams(values, fields)),\n distinctUntilChanged(isEqual),\n )\n .subscribe(this.updateUrlQueryParams.bind(this));\n }\n\n private updateFormValuesFromQueryParams(form: UntypedFormGroup, fields: string[]): void {\n const queryParams: Params = this.activatedRoute.snapshot.queryParams;\n\n fields.forEach((field: string) => {\n if (form.contains(field) && SharedCommonUtility.notNullish(queryParams[field])) {\n form.get(field).setValue(queryParams[field]);\n }\n });\n }\n\n private buildQueryParams(values: Record, fields: string[]): Params {\n const params: Record = {};\n\n fields.forEach((field: string) => {\n params[field] = values[field];\n });\n\n return params;\n }\n\n private updateUrlQueryParams(queryParams: Params): void {\n const currentFocusId: string = document.activeElement.getAttribute('id');\n this.router\n .navigate([], {\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true,\n })\n .then(() => {\n // hacky solution to refocus the originally focused element after self-redirect\n // honestly, this looks like the best solution\n setTimeout(() => (document.querySelector(`#${currentFocusId}`) as HTMLElement)?.focus(), 1);\n });\n }\n\n public buildFormControlErrorMessage$(\n control: AbstractControl,\n labelKey: string,\n overrideErrors: Record = {},\n ): Observable {\n return control.statusChanges.pipe(map(() => this.getErrorMessageForField(control, '', '', labelKey, overrideErrors)));\n }\n\n public isFieldRequired(form: FormGroup, context: { field: string; required?: boolean }): boolean {\n const requiredFromContext: boolean = typeof context.required === 'boolean' ? context.required : true;\n const requiredFromValidators: boolean = form.get(context.field)?.hasValidator(CustomValidators.required) ?? false;\n return requiredFromContext || requiredFromValidators;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { IComponentCanDeactivate } from '../../interfaces/component-can-deactivate.interface';\nimport { ErrorHandlerService } from '../../services/error-handler.service';\n\n@Injectable()\nexport class PendingChangesGuard {\n constructor(private errorHandlerService: ErrorHandlerService) {}\n\n private handleError(error: HttpErrorResponse): Observable {\n console.error('[PendingChangesGuard] handleError', error);\n\n this.errorHandlerService.handleError(error);\n\n return of(false);\n }\n\n public canDeactivate(\n component: IComponentCanDeactivate,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState: RouterStateSnapshot,\n ): boolean | Observable {\n const deactivateResult = component.canDeactivate(currentRoute, currentState, nextState);\n\n if (deactivateResult instanceof Observable) {\n // Note: handle error manually to avoid error to be thrown by Router (wrapped into \"Unhandled promise rejection\")\n return deactivateResult.pipe(catchError>(this.handleError.bind(this)));\n }\n\n return deactivateResult;\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, delay, map, switchMap, zipAll } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\nimport { DEBOUNCE_TIME } from '../../shared/constants';\nimport { MimeTypes, MimeTypeToFileExtension } from '../../../../shared/constants/mime-type';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { FileUtility } from '../../utility/file.utility';\nimport { validationError } from '../../constants/form.constants';\n\nexport class CustomAsyncValidators {\n public static validateNameUniqueness(\n nameToSkip: () => string = (): string => '',\n getter: (name: string) => Observable,\n ): (control: AbstractControl) => Observable {\n return (control: AbstractControl): Observable => {\n if (\n SharedCommonUtility.isNullishOrEmpty(control.value?.trim()) ||\n control.value.trim().toLowerCase() === nameToSkip().trim().toLowerCase()\n ) {\n return of(null);\n }\n\n return of(control.value).pipe(\n delay(DEBOUNCE_TIME),\n switchMap((name: string) => getter(name.trim())),\n map(() => ({ unique: true })),\n catchError((error: HttpErrorResponse) => (error.status === HttpStatusCode.NotFound ? of(null) : throwError(error))),\n );\n };\n }\n\n /**\n * Checks if every JSON file has an valid format. Only JSON files are validated and other files are ignored.\n */\n public static validateJsonFile(control: AbstractControl): Observable {\n if (SharedCommonUtility.isNullish(control.value) || CustomAsyncValidators.isFileArray(control.value) === false) {\n return of(null);\n }\n\n const jsonFiles: File[] = control.value.filter(\n (file: File) => SharedCommonUtility.getFileExtension(file.name) === MimeTypeToFileExtension[MimeTypes.JSON],\n );\n\n if (jsonFiles.length === 0) {\n return of(null);\n }\n\n return of(jsonFiles).pipe(\n switchMap((files: File[]) => files.map((file: File) => FileUtility.readFileAsText(file))),\n zipAll(),\n map((textList: string[]) =>\n textList.every((text: string) => SharedCommonUtility.isValidJSON(text)) ? null : { [validationError.invalidJSON]: true },\n ),\n );\n }\n\n private static isFileArray(array: any): array is File[] {\n return Array.isArray(array) && array.every((value: any) => value instanceof File);\n }\n}\n","import { CommonUtility } from './common.utility';\n\nexport class DomUtility {\n public static getIFrameDocument(frame: Element): Document | null {\n if (CommonUtility.isHostObjectProperty(frame, 'contentDocument')) {\n try {\n if ((frame as HTMLIFrameElement).contentDocument) {\n return (frame as HTMLIFrameElement).contentDocument;\n }\n } catch (e) {\n console.error(e);\n return null;\n }\n }\n\n if (CommonUtility.isHostObjectProperty(frame, 'contentWindow')) {\n try {\n if ((frame as HTMLIFrameElement).contentWindow.document) {\n return (frame as HTMLIFrameElement).contentWindow.document;\n }\n } catch (e) {\n console.debug(e);\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * checks if 'cssSelector' would pass as a valid css selector. also accepts nullish strings as valid.\n *\n * @param cssSelector the string to test\n * @returns true if the 'cssSelector' is either a valid css selector string, or nullish. false otherwise.\n */\n public static isCssSelectorValid(cssSelector: string): boolean {\n try {\n document.querySelector(cssSelector);\n } catch (e: any) {\n return false;\n }\n\n return true;\n }\n}\n","import {\n AbstractControl,\n FormControl,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { SharedTextUtility } from '../../../../shared/utils/text.utility';\nimport { $digitalPropertyKeyRegExp } from '../../../../shared/constants/digital-properties';\nimport { validationError } from '../../constants/form.constants';\nimport { IDigitalProperty } from '../../../../shared/interfaces/digital-property.interface';\nimport { MimeTypes, MimeTypeToFileExtension, SupportedImageMimeType } from '../../../../shared/constants/mime-type';\nimport { minPasswordLength } from '../../../../shared/constants/user';\nimport { IUploadClient } from '../../../../shared/interfaces/uploads.interface';\nimport { subdomainPattern } from '../../../../shared/constants/tenant';\nimport { isUpload } from '../../components/common-drag-and-drop-files/common-drag-and-drop-files.component';\nimport { DESIGN_RULE_DISALLOWED_CHARS, DESIGN_RULE_ID_PATTERN } from '../../../../shared/constants/design-rule';\nimport { DomUtility } from '../../utility/dom.utility';\n\n// Note: https://www.thepolyglotdeveloper.com/2015/05/use-regex-to-test-password-strength-in-javascript/\n\nexport const validators: any = {\n MIN_PASSWORD_LENGTH: minPasswordLength,\n hasWhiteSpacesPattern: new RegExp('\\\\s'),\n imageFileExtensions: SupportedImageMimeType.map((mimeType: MimeTypes) => MimeTypeToFileExtension[mimeType]),\n subdomainPattern,\n};\n\nexport class CustomValidators extends Validators {\n private static validateCustomFunction(\n domainControl: AbstractControl,\n validationFunction: (input: string) => boolean,\n ): ValidationErrors | null {\n const domain: string = domainControl.value;\n\n const isInvalid = (_url: string): boolean => {\n return validationFunction(_url) === false;\n };\n\n const invalidDomains: string[] = SharedTextUtility.getLinesFromText(domain).filter(isInvalid);\n\n if (invalidDomains.length === 0) {\n return null;\n }\n\n return { isDomainValid: invalidDomains.map((s: string): string => `\"${s}\"`).join(', ') };\n }\n\n private static checkDuplicate(\n existingValues: string[] | null,\n control: UntypedFormControl,\n caseSensitive: boolean = false,\n ): boolean {\n if (typeof control.value !== 'string') {\n return false;\n }\n\n const value: string = caseSensitive ? control.value.trim() : control.value.trim().toLowerCase();\n\n if (value.length === 0) {\n return false;\n }\n\n const valuesSet: Set =\n existingValues === null\n ? null\n : new Set(\n (caseSensitive && existingValues) ||\n (Array.isArray(existingValues) && existingValues.map((i: string): string => i.toLowerCase())) ||\n existingValues,\n );\n return valuesSet === null || valuesSet.has(value);\n }\n\n public static validateHasUppercase(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const isValid = new RegExp(`[A-Z]`).test(control.value);\n return isValid ? null : { noUppercase: true };\n }\n\n return null;\n }\n\n public static validateHasLowercase(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const isValid = new RegExp(`[a-z]`).test(control.value);\n return isValid ? null : { noLowercase: true };\n }\n\n return null;\n }\n\n public static validateHasNumberOrSpecial(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const isValid = new RegExp(`\\\\d|\\\\W`).test(control.value);\n return isValid ? null : { noNumberOrSpecial: true };\n }\n\n return null;\n }\n\n public static validateWhiteSpaces(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const hasWhiteSpaces = validators.hasWhiteSpacesPattern.test(control.value);\n return hasWhiteSpaces ? { hasWhiteSpaces: true } : null;\n }\n\n return null;\n }\n\n public static validateIsEmpty(control: UntypedFormControl): ValidationErrors | null {\n let isEmpty: boolean = true;\n\n if (CommonUtility.isHtmlElement((control as any).nativeElement) && (control as any).nativeElement.type === 'file') {\n isEmpty = ((control as any).nativeElement as HTMLInputElement).files.length === 0;\n } else if (typeof control.value === 'string') {\n isEmpty = control.value.trim().length === 0;\n } else if (Array.isArray(control.value)) {\n isEmpty = control.value.length === 0;\n } else if (typeof control.value === 'number') {\n isEmpty = Number.isNaN(control.value);\n } else if (typeof control.value !== 'undefined' && control.value !== null) {\n isEmpty = false;\n }\n\n return isEmpty ? { isEmpty: true } : null;\n }\n\n public static archiveConfirmationMessage(\n confirmationMessage: string,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n if (control.value !== confirmationMessage) {\n return {\n invalidArchiveConfirmationMessage: true,\n };\n }\n\n return null;\n }\n\n return customValidator;\n }\n\n public static validateIsFileType(\n fileType: string,\n readableFileType: string,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n if (Array.isArray(control.value) && control.value.every((f: unknown): boolean => f instanceof File)) {\n return control.value.every((f: File): boolean => f.type === fileType) ? null : { invalidFileType: readableFileType };\n }\n return { invalidFileType: readableFileType };\n }\n return customValidator;\n }\n\n public static validateAllEmailsInText(control: UntypedFormControl): ValidationErrors | null {\n const lines: string[] = SharedTextUtility.getLinesFromText(control.value);\n\n if (lines.length > 0) {\n return lines.every(SharedCommonUtility.isValidEmail) ? null : { invalidEmail: true };\n }\n\n return null;\n }\n\n public static validateEmailsInTextSplitBy(separator: string): ValidatorFn {\n return (control: FormControl): ValidationErrors | null => {\n if (SharedCommonUtility.notNullishOrEmpty(control.value)) {\n const substrings: string[] = control.value.split(separator);\n\n if (substrings.length > 0) {\n return substrings.every(SharedCommonUtility.isValidEmail) ? null : { invalidEmail: true };\n }\n }\n return null;\n };\n }\n\n public static validateEmail(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const isEmailValid: boolean = SharedCommonUtility.isValidEmail(control.value);\n return isEmailValid ? null : { invalidEmail: true };\n }\n\n return null;\n }\n\n public static validateAtLeastOneSelected(control: UntypedFormArray): ValidationErrors | null {\n if (Array.isArray(control.value) === false || control.value.length === 0) {\n return { noSelection: true };\n }\n\n const oneSelected: boolean = control.value.some((selected: boolean) => selected);\n return oneSelected ? null : { noSelection: true };\n }\n\n // Helper function for uniqueValidator to normalize the value based on\n // optional case/space insensitive params\n private static uniquenessNormalizer(value: string, caseInsensitive: boolean, extraWhitespaceInsensitive: boolean): string {\n let normalizedValue: string = value;\n if (caseInsensitive) {\n normalizedValue = normalizedValue.toLowerCase();\n }\n\n if (extraWhitespaceInsensitive) {\n normalizedValue = normalizedValue.trim().replace(/\\s\\s+/g, ' ');\n }\n\n return normalizedValue;\n }\n\n public static uniqueValidator(\n checkSet: Set,\n caseInsensitive: boolean = false,\n // Reduces extra whitespace to just 1 space\n // eg- “home page” is equal to “home page”\n extraWhitespaceInsensitive: boolean = false,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n const normalizedCheckSet: Set = new Set(\n [...checkSet].map((item: string): string => this.uniquenessNormalizer(item, caseInsensitive, extraWhitespaceInsensitive)),\n );\n\n return (control: UntypedFormControl): ValidationErrors | null => {\n const normalizedValue: string = this.uniquenessNormalizer(\n String(control.value),\n caseInsensitive,\n extraWhitespaceInsensitive,\n );\n\n if (control.value && normalizedCheckSet.has(normalizedValue)) {\n return { unique: true };\n }\n return null;\n };\n }\n\n public static in(set: Set, caseInsensitive: boolean = false): (control: AbstractControl) => ValidationErrors | null {\n let normalizedSet: Set = set;\n if (caseInsensitive) {\n const lowerCaseItems: string[] = [...set].map((item: string): string => item.toLowerCase());\n normalizedSet = new Set(lowerCaseItems);\n }\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n let normalizedValue = control.value;\n if (typeof normalizedValue === 'string' && caseInsensitive === true) {\n normalizedValue = normalizedValue.toLowerCase();\n }\n if (normalizedSet.has(normalizedValue) === false) {\n return { [validationError.in]: true };\n }\n return null;\n };\n }\n\n public static isValidDate(control: AbstractControl): ValidationErrors {\n if (control.value !== null && typeof control.value !== 'undefined' && control.value !== '') {\n const controlValue: Date = typeof control.value === 'string' ? new Date(control.value) : control.value;\n if (SharedCommonUtility.isDateValid(controlValue)) {\n return null;\n }\n return { invalidDate: true };\n }\n return null;\n }\n\n public static charactersOnly(control: AbstractControl): ValidationErrors | null {\n if (control.value && /^[a-zA-Z]+$/.test(control.value) === false) {\n return { [validationError.charactersOnly]: true };\n }\n return null;\n }\n\n public static alphaNumericCharactersOnly(control: AbstractControl): ValidationErrors | null {\n if (control.value && /^[a-zA-Z0-9]+$/.test(control.value) === false) {\n return { [validationError.alphaNumericCharactersOnly]: true };\n }\n return null;\n }\n\n public static nonEmojiCharactersOnly(control: AbstractControl): ValidationErrors | null {\n if (control.value && DESIGN_RULE_DISALLOWED_CHARS.test(control.value) === true) {\n return { [validationError.nonEmojiCharactersOnly]: true };\n }\n return null;\n }\n\n /**\n * This function takes in a string and will validate if any of those characters in the abstract control contains\n * characters in the exclude string\n *\n * @param exclude string of characters to check against\n */\n public static excludeCharacters(exclude: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const excludedCharacterString: string = SharedTextUtility.escapeRegExpString(decodeURIComponent(exclude));\n const regex: RegExp = new RegExp(`[${excludedCharacterString}]`);\n\n if (control.value && regex.test(control.value) === true) {\n return { excludeCharacters: Array.from(exclude).join(' ') };\n }\n return null;\n };\n }\n\n public static designRuleIdPattern(control: AbstractControl): ValidationErrors | null {\n if (control.value && DESIGN_RULE_ID_PATTERN.test(control.value) === false) {\n return { [validationError.designRuleIdPattern]: true };\n }\n return null;\n }\n\n public static minDate(value: Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const controlValue: Date = typeof control.value === 'string' ? new Date(control.value) : control.value;\n if (SharedCommonUtility.isDateValid(value) && SharedCommonUtility.isDateValid(controlValue)) {\n if (controlValue.getTime() - value.getTime() < 0) {\n return { minDate: true };\n }\n return null;\n }\n return null;\n };\n }\n\n public static maxDate(value: Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const controlValue: Date = typeof control.value === 'string' ? new Date(control.value) : control.value;\n if (SharedCommonUtility.isDateValid(value) && SharedCommonUtility.isDateValid(controlValue)) {\n if (controlValue.getTime() - value.getTime() > 0) {\n return { maxDate: true };\n }\n return null;\n }\n return null;\n };\n }\n\n public static compareDateControls(control: AbstractControl, compareWith: AbstractControl): number | null {\n if (SharedCommonUtility.isNullish(control.value) || SharedCommonUtility.isNullish(compareWith.value)) {\n return null;\n }\n const controlDate: Date = new Date(control.value);\n const controlDateValid: boolean = SharedCommonUtility.isDateValid(controlDate);\n const compareDate: Date = new Date(compareWith.value);\n const compareDateValid: boolean = SharedCommonUtility.isDateValid(compareDate);\n if (control.value && controlDateValid && compareDateValid) {\n return controlDate.getTime() - compareDate.getTime();\n }\n return null;\n }\n\n public static datesValidator(startFromControl: string, endToControl: string): ValidatorFn {\n return (group: UntypedFormGroup): ValidationErrors | null => {\n const result: number = this.compareDateControls(group.get(startFromControl), group.get(endToControl));\n if (result === null) {\n return null;\n }\n if (result > 0) {\n group.controls[startFromControl].setErrors({ [validationError.datesValidator]: true });\n return { [validationError.datesValidator]: true };\n }\n if (group.controls[startFromControl].errors?.[validationError.datesValidator]) {\n delete group.controls[startFromControl].errors[validationError.datesValidator];\n group.controls[startFromControl].updateValueAndValidity({ onlySelf: true });\n }\n\n return null;\n };\n }\n\n public static domainValidator(domainControl: AbstractControl): ValidationErrors | null {\n return CustomValidators.validateCustomFunction(domainControl, (value: string) => {\n const trimAndLower = (_domain: string): string => {\n return SharedCommonUtility.removeProtocolFromUrl(_domain.trim().toLowerCase());\n };\n\n return SharedTextUtility.isValidDomain(trimAndLower(value));\n });\n }\n\n public static domainWithoutProtocolValidator(domainControl: AbstractControl): ValidationErrors | null {\n return SharedTextUtility.isValidDomain(domainControl.value?.trim().toLocaleLowerCase())\n ? null\n : { domainWithoutProtocolValidator: true };\n }\n\n public static urlValidator(urlControl: AbstractControl): ValidationErrors | null {\n return CustomValidators.validateCustomFunction(urlControl, (value: string) => {\n try {\n const normalizedUrl: string = SharedCommonUtility.getNormalizedUrlString(value);\n return CommonUtility.isValidUrl(normalizedUrl);\n } catch (_) {\n return false;\n }\n });\n }\n\n public static isValidUrl(urlControl: AbstractControl): ValidationErrors | null {\n return CustomValidators.validateCustomFunction(urlControl, (value: string) => CommonUtility.isValidUrl(value));\n }\n\n public static isValidJiraFieldUrl(urlControl: AbstractControl): ValidationErrors | null {\n return CustomValidators.validateCustomFunction(urlControl, (value: string) => CommonUtility.isValidJiraFieldUrl(value));\n }\n\n public static domainRestrictionsValidator(\n domainsRegexp: RegExp[] | (() => RegExp[]),\n errorCode: string = 'isDomainPartOfSubscription',\n ): (control: UntypedFormControl) => ValidationErrors | null {\n return (control: UntypedFormControl): ValidationErrors | null => {\n const urls: string[] = SharedTextUtility.getLinesFromText(control.value);\n\n const domains: RegExp[] = typeof domainsRegexp === 'function' ? domainsRegexp() : domainsRegexp;\n if (urls.some((url: string): boolean => SharedCommonUtility.isUrlAuthorized(url, domains) === false)) {\n return { [errorCode]: true };\n }\n\n return null;\n };\n }\n\n public static digitalPropertyKeyValidator(control: UntypedFormControl): ValidationErrors | null {\n if (typeof control.value !== 'string') {\n return null;\n }\n\n const value: string = control.value.trim();\n if (value.length === 0) {\n return null;\n }\n\n return $digitalPropertyKeyRegExp.test(value) ? null : { [validationError.digitalPropertyKey]: true };\n }\n\n public static sitemapValidator(\n domainsRegexp: () => RegExp[],\n errorCode: string = 'isDomainPartOfSubscription',\n ): (control: UntypedFormControl) => ValidationErrors | null {\n return (control: UntypedFormControl): ValidationErrors | null => {\n return CustomValidators.domainRestrictionsValidator(domainsRegexp, errorCode)(control);\n };\n }\n\n /**\n *\n * @param values null is considered as \"invalid\" state\n * @param key key to be passed to the error message\n */\n public static digitalPropertyFieldWorkspaceDuplicateValidator(\n values: string[] | null,\n key: keyof IDigitalProperty,\n caseSensitive: boolean = false,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n return (control: UntypedFormControl): ValidationErrors => {\n if (this.checkDuplicate(values, control, caseSensitive)) {\n return { [validationError.digitalPropertyFieldWorkspaceDuplicate]: key };\n }\n\n return null;\n };\n }\n\n public static ruleIdDuplicatedValidator(\n existingValues: string[] | null,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n return (control: UntypedFormControl): ValidationErrors => {\n if (this.checkDuplicate(existingValues, control, true)) {\n return { [validationError.masterLibraryRuleIdDuplicate]: true };\n }\n\n return null;\n };\n }\n\n public static limitMaxNumberOfLines(_limit: number | (() => number), errorKey: string = 'maxLines'): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const limit: number = typeof _limit === 'function' ? _limit() : _limit;\n const lines: string[] = control.value.split('\\n').filter((lineContent: string) => lineContent.length > 0);\n if (lines.length > limit) {\n return { [errorKey]: limit };\n }\n return null;\n };\n }\n\n public static userWayWebsiteDuplicatedValidator(\n existingValues: Set | null,\n ): (control: UntypedFormControl) => ValidationErrors | null {\n return (control: UntypedFormControl): ValidationErrors => {\n const value: string = control.value?.url;\n\n if (SharedCommonUtility.isNullishOrEmpty(value)) {\n return null;\n }\n\n if (existingValues?.has(SharedCommonUtility.getDomainPattern(value)[0])) {\n return { [validationError.userWayWebsiteDuplicate]: true };\n }\n\n return null;\n };\n }\n\n public static validateScanTagSelected(control: UntypedFormControl): ValidationErrors | null {\n const isNotEqual: boolean = SharedCommonUtility.notNullish(control.value);\n\n return isNotEqual ? null : { noTagSelected: true };\n }\n\n public static validateConformanceLevelSelected(control: UntypedFormControl): ValidationErrors | null {\n const isNotEqual: boolean = SharedCommonUtility.notNullish(control.value);\n\n return isNotEqual ? null : { noConformanceLevelSelected: true };\n }\n\n public static validateWorkspaceSelected(control: UntypedFormControl): ValidationErrors | null {\n const isNotEqual: boolean = control.value !== null;\n\n return isNotEqual ? null : { noWorkspaceSelected: true };\n }\n\n public static validateSingleFileIsImage(control: UntypedFormControl): ValidationErrors | null {\n const fileExt: string = control.value?.split('.').pop();\n if (fileExt && validators.imageFileExtensions.includes(`.${fileExt}`) === false) {\n return { invalidFileTypes: validators.imageFileExtensions.join(', ') };\n }\n return null;\n }\n\n public static validateJSON(control: UntypedFormControl): ValidationErrors | null {\n return SharedCommonUtility.isValidJSON(control.value) ? null : { [validationError.invalidJSON]: true };\n }\n\n public static validateAttachmentFileType(\n selectedAttachments: File[],\n supportedMimeTypes: string[],\n supportedExtensions: string[],\n ): ValidatorFn {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n const files: File[] = SharedCommonUtility.notNullish(selectedAttachments) ? selectedAttachments : control.value ?? [];\n\n for (const file of files) {\n if (supportedMimeTypes.includes(file.type) === false) {\n const fileExt: string = file.name.split('.').pop();\n // Checking only File.type is not reliable. Firstly, it's just derived from the file extension.\n // Secondly, it still could be empty for well-known file extensions on some machines\n // https://developer.mozilla.org/en-US/docs/Web/API/File/type\n if (supportedExtensions.includes(`.${fileExt}`) === true) {\n continue;\n }\n const supportedFileExtensions: string[] = supportedMimeTypes.map(\n (mimeType: string) => MimeTypeToFileExtension[mimeType],\n );\n return { invalidFileTypes: supportedFileExtensions.join(', ') };\n }\n }\n return null;\n }\n return customValidator;\n }\n\n public static validateAttachmentTotalSize(selectedAttachments: (File | IUploadClient)[], maxTotalSize: number): ValidatorFn {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n const files: File[] = SharedCommonUtility.notNullish(selectedAttachments) ? selectedAttachments : control.value ?? [];\n\n let size: number = 0;\n\n const addFileSize = (attachment: File | IUploadClient): void => {\n if (isUpload(attachment)) {\n size += (attachment as IUploadClient).fileSize;\n } else {\n size += (attachment as File).size;\n }\n };\n\n files.forEach(addFileSize);\n\n if (size > maxTotalSize) {\n return { attachmentSizeExceedsLimit: maxTotalSize };\n }\n return null;\n }\n return customValidator;\n }\n\n public static validateAttachmentQuantity(\n selectedAttachments: (File | IUploadClient)[],\n maxQuantity: number,\n occupiedQuantity?: number,\n ): ValidatorFn {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n if (selectedAttachments.length > maxQuantity - (occupiedQuantity || 0)) {\n return { attachmentQuantityExceedsLimit: maxQuantity };\n }\n return null;\n }\n return customValidator;\n }\n\n public static validateAttachmentRequired(selectedAttachments: (File | IUploadClient)[]): ValidatorFn {\n function customValidator(control: UntypedFormControl): ValidationErrors | null {\n if (selectedAttachments.length === 0) {\n return {\n required: true,\n };\n }\n\n return null;\n }\n return customValidator;\n }\n\n public static validateStringIsNonZeroInteger(control: UntypedFormControl): ValidationErrors | null {\n if (!SharedCommonUtility.isInteger(control.value)) {\n return { [validationError.invalidInteger]: true };\n }\n if (parseInt(control.value, 10) === 0) {\n return { [validationError.invalidZeroInt]: true };\n }\n return null;\n }\n\n public static validateSubdomain(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.length > 0) {\n const isValid = validators.subdomainPattern.test(control.value);\n return isValid ? null : { invalidSubdomain: true };\n }\n\n return null;\n }\n\n public static isNumeric(): ValidatorFn {\n return CustomValidators.pattern('^[0-9]*$');\n }\n\n public static validateInteger(control: UntypedFormControl): ValidationErrors | null {\n return SharedCommonUtility.isInteger(control.value) ? null : { [validationError.invalidInteger]: true };\n }\n\n public static validateCssSelector(control: UntypedFormControl): ValidationErrors | null {\n if (control.value !== '' && !DomUtility.isCssSelectorValid(control.value)) {\n return { cssSelectorInvalid: true };\n }\n\n return null;\n }\n}\n","import { HttpParams } from '@angular/common/http';\n\nimport { environment } from '../../../environments/environment';\nimport { ApiVersion } from '../../shared/constants';\nimport { Api, ApiQueryOption } from '../../../../shared/constants/api';\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { $severity } from '../../../../shared/constants/accessibility';\n\nexport class RestBuilder {\n private url: string = '';\n private version: string = ApiVersion.current;\n\n public create(): this {\n this.url = '';\n return this;\n }\n\n public paginationParams(skip: number, limit: number): HttpParams {\n const query: { [key: string]: string } = {};\n\n if (typeof limit === 'number') {\n query[ApiQueryOption.limit] = String(limit);\n }\n\n if (typeof skip === 'number') {\n query[ApiQueryOption.skip] = String(skip);\n }\n\n return new HttpParams({ fromObject: query });\n }\n\n public query(params: HttpParams): this {\n this.url += `${this.url.includes('?') ? '&' : '?'}${params.toString()}`;\n return this;\n }\n\n public _noPrefix(id: string): this {\n this.url += `/${id}`;\n return this;\n }\n\n public available(id?: string): this {\n this.url += `/${Api.available}`;\n\n if (id) {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public login(): this {\n this.url += `/${Api.login}`;\n return this;\n }\n\n public logout(): this {\n this.url += `/${Api.logout}`;\n return this;\n }\n\n public status(): this {\n this.url += `/${Api.status}`;\n return this;\n }\n\n public successCriteria(): this {\n this.url += `/${Api.successCriteria}`;\n return this;\n }\n\n public possibleTargetStatuses(): this {\n this.url += `/${Api.possible_target_statuses}`;\n return this;\n }\n\n public auth(): this {\n this.url += `/${Api.auth}`;\n return this;\n }\n\n public refreshAccessToken(): this {\n this.url += `/${Api.refreshAccessToken}`;\n return this;\n }\n\n public projects(id?: string): this {\n this.url += `/${Api.projects}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public workspaces(id?: string): this {\n this.url += `/${Api.workspaces}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public migrate(): this {\n this.url += `/${Api.migrate}`;\n return this;\n }\n\n public resync(): this {\n this.url += `/${Api.resync}`;\n return this;\n }\n\n public key(key: string): this {\n this.url += `/${Api.keys}/${key}`;\n return this;\n }\n\n public tasks(id?: string): this {\n this.url += `/${Api.tasks}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public myTasks(): this {\n this.url += `/${Api.myTasks}`;\n return this;\n }\n\n public config(): this {\n this.url += `/${Api.config}`;\n return this;\n }\n\n public issueTracking(): this {\n this.url += `/${Api.issue_tracking}`;\n return this;\n }\n\n public issueTrackingConnectionConfig(): this {\n this.url += `/${Api.issue_integration_connection_config}`;\n return this;\n }\n\n public issueTrackingConnection(instanceId?: string): this {\n this.url += `/${Api.issue_integration_connection}`;\n if (typeof instanceId === 'string') {\n this.url += `/${instanceId}`;\n }\n return this;\n }\n\n public issueTrackingProjects(key?: string): this {\n this.url += `/${Api.issue_integration_projects}`;\n if (typeof key === 'string') {\n this.url += `/${key}`;\n }\n return this;\n }\n\n public consumerKey(): this {\n this.url += `/${Api.consumer_key}`;\n return this;\n }\n\n public issueTypes(instanceId?: string): this {\n this.url += `/${Api.issueTypes}`;\n if (typeof instanceId === 'string') {\n this.url += `/${instanceId}`;\n }\n return this;\n }\n\n public configurableFields(): this {\n this.url += `/${Api.configurableFields}`;\n return this;\n }\n\n public requiredFields(): this {\n this.url += `/${Api.requiredFields}`;\n return this;\n }\n\n public issueTrackingStatusMapping(): this {\n this.url += `/${Api.issue_integration_status_mapping}`;\n return this;\n }\n\n public issueTrackingIssueStatuses(): this {\n this.url += `/${Api.issueIntegrationStatuses}`;\n return this;\n }\n\n public jira(): this {\n this.url += `/${Api.issueIntegration}`;\n return this;\n }\n\n public regenerateAuthUrl(): this {\n this.url += `/${Api.regenerate_auth_url}`;\n return this;\n }\n\n public verifyJiraToken(): this {\n this.url += `/${Api.verifyToken}`;\n return this;\n }\n\n public uiTools(): this {\n this.url += `/${Api.ui_tools}`;\n return this;\n }\n\n public integrations(): this {\n this.url += `/${Api.integrations}`;\n return this;\n }\n\n public generateApiKey(): this {\n this.url += `/${Api.generate_api_key}`;\n return this;\n }\n\n public generateEncryptionKey(): this {\n this.url += `/${Api.generate_encryption_key}`;\n return this;\n }\n\n public deleteApiKey(name: string): this {\n this.url += `/${name}`;\n return this;\n }\n\n public generateBrowserExtensionKey(): this {\n this.url += `/${Api.generate_browser_extension_key}`;\n return this;\n }\n\n public getPreviousTokensInfo(): this {\n this.url += `/${Api.previous_tokens_info}`;\n return this;\n }\n\n public preferences(scope: string, workspaceId?: string): this {\n this.url += `/${Api.preferences}`;\n this.url += `/${scope}`;\n\n if (typeof workspaceId === 'string' && workspaceId.length) {\n this.url += `/${workspaceId}`;\n }\n\n return this;\n }\n\n public roles(id?: string): this {\n this.url += `/${Api.roles}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id + `/${Api.roles}`;\n }\n\n return this;\n }\n\n public role(): this {\n this.url += `/${Api.role}`;\n return this;\n }\n\n public admin(): this {\n this.url += `/${Api.admin}`;\n return this;\n }\n\n public session(): this {\n this.url += `/${Api.session}`;\n return this;\n }\n\n public sessions(sessionId?: string): this {\n this.url += `/${Api.sessions}`;\n if (SharedCommonUtility.notNullish(sessionId)) {\n this.url += `/${sessionId}`;\n }\n return this;\n }\n\n public mobileAppSessions(mobileAppSessionId?: string): this {\n this.url += `/${Api.mobile_app_sessions}`;\n if (SharedCommonUtility.notNullish(mobileAppSessionId)) {\n this.url += `/${mobileAppSessionId}`;\n }\n return this;\n }\n\n public testGuides(): this {\n this.url += `/${Api.testGuides}`;\n return this;\n }\n\n public packages(packageId?: string): this {\n this.url += `/${Api.packages}`;\n\n if (SharedCommonUtility.notNullish(packageId)) {\n this.url += `/${packageId}`;\n }\n\n return this;\n }\n\n public packageAddons(): this {\n this.url += `/${Api.packageAddons}`;\n return this;\n }\n\n public user(id?: string): this {\n this.url += `/${Api.user}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public workspaceUser(id?: string): this {\n this.url += `/${Api.workspaceUser}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public dashboard(): this {\n this.url += `/${Api.dashboard}`;\n return this;\n }\n\n public latestScans(): this {\n this.url += `/${Api.latest_scans}`;\n return this;\n }\n\n public latestScan(): this {\n this.url += `/${Api.latest_scan}`;\n return this;\n }\n\n public authenticated(): this {\n this.url += `/${Api.authenticated}`;\n return this;\n }\n\n public deactivate(): this {\n this.url += `/${Api.deactivate}`;\n return this;\n }\n\n public activate(): this {\n this.url += `/${Api.activate}`;\n return this;\n }\n\n public verifyEmail(): this {\n this.url += `/${Api.verifyEmail}`;\n return this;\n }\n\n public verifyResetPasswordToken(): this {\n this.url += `/${Api.verifyResetPasswordToken}`;\n return this;\n }\n\n public translations(locale?: string): this {\n if (typeof locale === 'string') {\n this.url += `/${Api.translations}/${locale}`;\n } else {\n this.url += `/${Api.translations}`;\n }\n return this;\n }\n\n public translationsData(locale: string): this {\n this.url += `/${Api.translations}/${Api.data}/${locale}`;\n return this;\n }\n\n public locales(locale?: string): this {\n this.url += `/${Api.locales}${locale ? '/' + locale : ''}`;\n return this;\n }\n\n public supportedLocales(): this {\n this.url += `/${Api.supported_locales}`;\n return this;\n }\n\n public resetPassword(): this {\n this.url += `/${Api.resetPassword}`;\n return this;\n }\n\n public resendActivationLink(): this {\n this.url += `/${Api.resendActivationLink}`;\n return this;\n }\n\n public resendVisitorActivationLink(): this {\n this.url += `/${Api.resendVisitorActivationLink}`;\n return this;\n }\n\n public createNewPassword(): this {\n this.url += `/${Api.createNewPassword}`;\n return this;\n }\n\n public allIds(): this {\n this.url += `/${Api.all_ids}`;\n return this;\n }\n\n public all(): this {\n this.url += `/${Api.all}`;\n return this;\n }\n\n public list(): this {\n this.url += `/${Api.list}`;\n return this;\n }\n\n public countries(): this {\n this.url += `/${Api.countries}`;\n return this;\n }\n\n /**\n * consider using scans instead of scan to follow Best Practices\n */\n public scan(id?: string): this {\n this.url += `/${Api.scan}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public scans(id?: string): this {\n this.url += `/${Api.scans}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public quickScan(): this {\n this.url += `/${Api.quick_scan}`;\n\n return this;\n }\n\n public mobileScans(): this {\n this.url += `/${Api.mobile_scans}`;\n return this;\n }\n\n public operatingSystems(): this {\n this.url += `/${Api.operating_systems}`;\n return this;\n }\n\n public exists(): this {\n this.url += `/${Api.exists}`;\n\n return this;\n }\n\n public documents(id?: string): this {\n this.url += `/${Api.documents}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public scannableDocuments(id?: string): this {\n this.url += `/${Api.scannableDocuments}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public scannableDocumentsRule(id?: string): this {\n this.url += `/${Api.scannableDocumentRules}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n return this;\n }\n\n public startDocumentScan(): this {\n this.url += `/${Api.startDocumentScan}`;\n return this;\n }\n\n public supplementalScan(): this {\n this.url += `/${Api.supplementalScan}`;\n return this;\n }\n\n public requestRemediation(): this {\n this.url += `/${Api.requestRemediation}`;\n return this;\n }\n\n public setRemediation(): this {\n this.url += `/${Api.setRemediation}`;\n return this;\n }\n\n public downloadReport(): this {\n this.url += `/${Api.downloadReport}`;\n return this;\n }\n\n public removeRemediation(id?: string): this {\n this.url += `/${Api.removeRemediation}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n return this;\n }\n\n public revokeRemediationRequest(): this {\n this.url += `/${Api.revokeRemediationRequest}`;\n return this;\n }\n\n public downloadTestReport(): this {\n this.url += `/${Api.downloadTestReport}`;\n return this;\n }\n\n public upload(): this {\n this.url += `/${Api.upload}`;\n return this;\n }\n\n public file(id?: string): this {\n this.url += `/${Api.file}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public options(id?: string): this {\n this.url += `/${Api.options}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public default(): this {\n this.url += `/${Api.default}`;\n\n return this;\n }\n\n public rerun(): this {\n this.url += `/${Api.rerun}`;\n\n return this;\n }\n\n public active(): this {\n this.url += `/${Api.active}`;\n\n return this;\n }\n\n public reports(): this {\n this.url += `/${Api.reports}`;\n return this;\n }\n\n public details(): this {\n this.url += `/${Api.details}`;\n return this;\n }\n\n public monitoringAnalytics(): this {\n this.url += `/${Api.monitoring_analytics}`;\n return this;\n }\n\n public rule(id?: string): this {\n this.url += `/${Api.rule}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public rules(): this {\n this.url += `/${Api.rules}`;\n return this;\n }\n\n public cancel(): this {\n this.url += `/${Api.cancel}`;\n return this;\n }\n\n public resume(): this {\n this.url += `/${Api.resume}`;\n return this;\n }\n\n public serverApiPerformance(): this {\n this.url += `/${Api.server_api_performance}`;\n return this;\n }\n\n public download(resourceId?: string): this {\n this.url += `/${Api.download}`;\n\n if (SharedCommonUtility.notNullish(resourceId)) {\n this.url += `/${resourceId}`;\n }\n return this;\n }\n\n public resources(resourceId: string, downloadToken: string): this {\n this.url += `/${Api.resources}/${downloadToken}/${resourceId}`;\n return this;\n }\n\n public secureResources(resourceId: string): this {\n this.url += `/${Api.secure_resources}/${resourceId}`;\n return this;\n }\n\n public sendEmail(): this {\n this.url += `/${Api.send_email}`;\n return this;\n }\n\n public avatar(userId: string): this {\n this.url += `/${Api.avatar}/${encodeURIComponent(userId)}`;\n return this;\n }\n\n public avatarId(id?: string): this {\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public report(id?: string): this {\n this.url += `/${Api.report}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public logs(): this {\n this.url += `/${Api.logs}`;\n return this;\n }\n\n public activityLogs(): this {\n this.url += `/${Api.activityLogs}`;\n return this;\n }\n\n public users(userId?: string): this {\n this.url += `/${Api.users}`;\n\n if (SharedCommonUtility.notNullish(userId)) {\n this.url += `/${userId}`;\n }\n\n return this;\n }\n\n public getApiUrl(): string {\n return environment.restApiUrl + '/' + this.version + this.url;\n }\n\n public support(): this {\n this.url += `/${Api.support}`;\n return this;\n }\n\n public sendSupportEmail(): this {\n this.url += `/${Api.send_email}`;\n return this;\n }\n\n public markAuditErrorAsFalsePositive(): this {\n this.url += `/${Api.dismiss}`;\n return this;\n }\n\n public toggleRule(): this {\n this.url += `/${Api.toggle_rule}`;\n return this;\n }\n\n public digitalProperty(id?: string): this {\n this.url += `/${Api.digital_property}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public validate(): this {\n this.url += `/${Api.validate}`;\n return this;\n }\n\n public createInPath(): this {\n this.url += `/${Api.create}`;\n return this;\n }\n\n public manualResults(id?: string): this {\n this.url += `/${Api.manual_results}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n return this;\n }\n\n public attachments(id?: string): this {\n this.url += `/${Api.attachments}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n return this;\n }\n\n public manualAuditTopWcag(): this {\n this.url += `/${Api.manual_audit_top_criteria}`;\n\n return this;\n }\n\n public manualAuditIssuesBySeverity(): this {\n this.url += `/${Api.manual_audit_issues_by_severity}`;\n\n return this;\n }\n\n public manualEvaluations(id?: string): this {\n this.url += `/${Api.manual_evaluations}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n return this;\n }\n\n public categories(): this {\n this.url += `/${Api.categories}`;\n return this;\n }\n\n public digitalProperties(id?: string): this {\n this.url += `/${Api.digital_properties}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public digitalPropertyType(id?: string): this {\n this.url += `/${Api.digital_property_type}`;\n\n if (typeof id === 'string') {\n this.url += '/' + id;\n }\n\n return this;\n }\n\n public digitalPropertyMetrics(): this {\n this.url += `/${Api.digitalPropertyMetrics}`;\n return this;\n }\n\n public tracking(): this {\n this.url += `/${Api.tracking}`;\n return this;\n }\n\n public console(): this {\n this.url += `/${Api.console}`;\n return this;\n }\n\n public errors(): this {\n this.url += `/${Api.errors}`;\n return this;\n }\n\n public auditRules(digitalPropertyId?: string): this {\n this.url += `/${Api.audit_rules}`;\n\n if (typeof digitalPropertyId === 'string') {\n this.url += '/' + digitalPropertyId;\n }\n\n return this;\n }\n\n public customAuditRules(tenantId?: string): this {\n this.url += `/${Api.custom_audit_rules}`;\n\n if (typeof tenantId === 'string') {\n this.url += `/${tenantId}`;\n }\n\n return this;\n }\n\n public libraries(): this {\n this.url += `/${Api.libraries}`;\n return this;\n }\n\n public ruleIds(): this {\n this.url += `/${Api.rule_ids}`;\n return this;\n }\n\n public jobIndustries(): this {\n this.url += `/${Api.jobIndustries}`;\n return this;\n }\n\n public jobTitles(): this {\n this.url += `/${Api.jobTitles}`;\n return this;\n }\n\n public export(): this {\n this.url += `/${Api.export}`;\n return this;\n }\n\n public id(id: string): this {\n this.url += `/${id}`;\n return this;\n }\n\n public scansCount(): this {\n this.url += `/${Api.scans_count}`;\n return this;\n }\n\n public nextScheduledScan(): this {\n this.url += `/${Api.next_scheduled_scan}`;\n return this;\n }\n\n public training(): this {\n this.url += `/${Api.training}`;\n return this;\n }\n\n public videos(id?: string): this {\n this.url += `/${Api.videos}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public pathParam(path: string): this {\n this.url += `/${path}`;\n\n return this;\n }\n\n public move(): this {\n this.url += `/${Api.move}`;\n\n return this;\n }\n\n public manualAudit(id?: string): this {\n this.url += `/${Api.manual_audit}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public manualRequest(requestId?: string): this {\n this.url += `/${Api.manual_requests}`;\n\n if (typeof requestId === 'string') {\n this.url += `/${requestId}`;\n }\n\n return this;\n }\n\n public manualUploadFile(): this {\n this.url += `/${Api.manual_upload_file}`;\n\n return this;\n }\n\n public manualAuditIssue(id?: string): this {\n this.url += `/${Api.manualAuditIssue}`;\n\n if (typeof id === 'string') {\n this.url += `${id}`;\n }\n\n return this;\n }\n\n public comments(id?: string): this {\n this.url += `/${Api.comments}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n return this;\n }\n\n public monitoring(): this {\n this.url += `/${Api.monitoring}`;\n\n return this;\n }\n\n public quickMonitoring(): this {\n this.url += `/${Api.quick_monitoring}`;\n\n return this;\n }\n\n public scanTags(id?: string): this {\n this.url += `/${Api.scan_tags}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public archive(): this {\n this.url += `/${Api.archive}`;\n\n return this;\n }\n\n public restore(): this {\n this.url += `/${Api.restore}`;\n\n return this;\n }\n\n public resendInvite(): this {\n this.url += `/${Api.resend_invite}`;\n return this;\n }\n\n public scanSummary(): this {\n this.url += `/${Api.scanSummary}`;\n return this;\n }\n\n public previous(): this {\n this.url += `/${Api.previous}`;\n return this;\n }\n\n public tool(): this {\n this.url += `/${Api.tool}`;\n return this;\n }\n\n public toolName(toolName: AccessibilityAuditToolNames): this {\n this.url += `/${toolName}`;\n return this;\n }\n\n public ruleHistory(): this {\n this.url += `/${Api.ruleHistory}`;\n return this;\n }\n\n public ruleHistorySearch(): this {\n this.url += `/${Api.ruleHistorySearch}`;\n return this;\n }\n\n public scanPointSummary(): this {\n this.url += `/${Api.scan_point_summary}`;\n return this;\n }\n\n public pageSummary(): this {\n this.url += `/${Api.page_summary}`;\n return this;\n }\n\n public hasHistory(): this {\n this.url += `/${Api.hasHistoryUpdates}`;\n return this;\n }\n\n public total(): this {\n this.url += `/${Api.total}`;\n return this;\n }\n\n public issues(id?: string): this {\n this.url += `/${Api.issues}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public dismiss(): this {\n this.url += `/${Api.dismiss}`;\n return this;\n }\n\n public shortLink(): this {\n this.url += `/${Api.short_link}`;\n\n return this;\n }\n\n public shortLinks(id?: string): this {\n this.url += `/${Api.shortLinks}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n return this;\n }\n\n public isDuplicated(): this {\n this.url += `/${Api.isDuplicated}`;\n return this;\n }\n\n public existingKeyValues(): this {\n this.url += `/${Api.existingKeyValues}`;\n return this;\n }\n\n public flaws(): this {\n this.url += `/${Api.flaws}`;\n return this;\n }\n\n public markAsViewed(): this {\n this.url += `/${Api.markAsViewed}`;\n return this;\n }\n\n public userChangeHistory(): this {\n this.url += `/${Api.userChangeHistory}`;\n return this;\n }\n\n public bulk(): this {\n this.url += `/${Api.bulk}`;\n return this;\n }\n\n public pages(id?: string): this {\n this.url += `/${Api.pages}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public standards(): this {\n this.url += `/${Api.standards}`;\n\n return this;\n }\n\n public monitoringPages(id?: string): this {\n this.url += `/${Api.monitoring_pages}`;\n\n if (typeof id === 'string') {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public configureFields(): this {\n this.url += `/${Api.configureFields}`;\n return this;\n }\n\n public archivable(): this {\n this.url += `/${Api.archivable}`;\n return this;\n }\n\n public deletable(): this {\n this.url += `/${Api.deletable}`;\n return this;\n }\n\n public count(): this {\n this.url += `/${Api.count}`;\n return this;\n }\n\n public assign(): this {\n this.url += `/${Api.assign}`;\n return this;\n }\n\n public assignable(): this {\n this.url += `/${Api.assignable}`;\n return this;\n }\n\n public withdrawAssignee(): this {\n this.url += `/${Api.withdraw_assignee}`;\n return this;\n }\n\n public tenant(tenantId?: string): this {\n this.url += `/${Api.tenants}`;\n if (typeof tenantId === 'string') {\n this.url += `/${tenantId}`;\n }\n return this;\n }\n\n public current(): this {\n this.url += `/${Api.current}`;\n return this;\n }\n\n public scanningAgent(): this {\n this.url += `/${Api.scanningAgent}`;\n return this;\n }\n\n public academy(): this {\n this.url += `/${Api.academy}`;\n return this;\n }\n\n public ssoConfig(): this {\n this.url += `/${Api.ssoConfig}`;\n return this;\n }\n\n public ssoLink(): this {\n this.url += `/${Api.ssoLink}`;\n return this;\n }\n\n public summary(): this {\n this.url += `/${Api.summary}`;\n return this;\n }\n\n public reauthorizeConnection(): this {\n this.url += `/${Api.reauthorize_connection}`;\n return this;\n }\n\n public important(): this {\n this.url += `/${Api.important}`;\n return this;\n }\n\n public changePassword(): this {\n this.url += `/${Api.changePassword}`;\n return this;\n }\n\n public verifyPreviousPassword(): this {\n this.url += `/${Api.verifyPreviousPassword}`;\n return this;\n }\n\n public verifyPreviousPasswordVisitor(): this {\n this.url += `/${Api.verifyPreviousPasswordVisitor}`;\n return this;\n }\n\n public userFlowTemplates(templateId?: string): this {\n this.url += `/${Api.user_flow_templates}`;\n if (typeof templateId === 'string') {\n this.url += `/${templateId}`;\n }\n return this;\n }\n\n public automatedUserFlows(userFlowId?: string): this {\n this.url += `/${Api.automated_user_flows}`;\n if (typeof userFlowId === 'string') {\n this.url += `/${userFlowId}`;\n }\n return this;\n }\n\n public automatedUserFlowRecordings(recordingId?: string): this {\n this.url += `/${Api.user_flow_recordings}`;\n if (typeof recordingId === 'string') {\n this.url += `/${recordingId}`;\n }\n return this;\n }\n\n public names(name?: string): this {\n this.url += `/${Api.names}`;\n if (typeof name === 'string') {\n this.url += `/${name}`;\n }\n return this;\n }\n\n public screenshot(): this {\n this.url += `/${Api.screenshot}`;\n\n return this;\n }\n\n public screenshots(): this {\n this.url += `/${Api.screenshots}`;\n\n return this;\n }\n\n public matchComponents(matchComponentId?: string): this {\n this.url += `/${Api.matchComponent}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(matchComponentId)) {\n this.url += `/${matchComponentId}`;\n }\n\n return this;\n }\n\n public mfa(): this {\n this.url += `/${Api.mfa}`;\n\n return this;\n }\n\n public labels(): this {\n this.url += `/${Api.labels}`;\n\n return this;\n }\n\n public failedTasks(): this {\n this.url += `/${Api.failedTasks}`;\n return this;\n }\n\n public designReviewRules(ruleId?: string): this {\n this.url += `/${Api.designReviewRules}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(ruleId)) {\n this.url += `/${ruleId}`;\n }\n\n return this;\n }\n\n public createDesignRule(): this {\n this.url += `/${Api.createDesignRule}`;\n\n return this;\n }\n\n public designReviewPages(designReviewPageId?: string): this {\n this.url += `/${Api.designReviewPages}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(designReviewPageId)) {\n this.url += `/${designReviewPageId}`;\n }\n\n return this;\n }\n\n public designReviewFindings(designReviewFindingId?: string): this {\n this.url += `/${Api.designReviewFindings}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(designReviewFindingId)) {\n this.url += `/${designReviewFindingId}`;\n }\n\n return this;\n }\n\n public designReviewHighlights(designReviewHighlightId?: string): this {\n this.url += `/${Api.designReviewHighlights}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(designReviewHighlightId)) {\n this.url += `/${designReviewHighlightId}`;\n }\n\n return this;\n }\n\n public designReviewProjects(designReviewProjectId?: string): this {\n this.url += `/${Api.designReviewProjects}`;\n\n if (!SharedCommonUtility.isNullishOrEmpty(designReviewProjectId)) {\n this.url += `/${designReviewProjectId}`;\n }\n\n return this;\n }\n\n public add(): this {\n this.url += `/${Api.add}`;\n return this;\n }\n\n public pdfPagesTestState(): this {\n this.url += `/${Api.pdfPagesTestState}`;\n return this;\n }\n\n public security(): this {\n this.url += `/${Api.security}`;\n return this;\n }\n\n public newSecurity(): this {\n this.url += `/${Api.newSecurity}`;\n return this;\n }\n\n public notifications(): this {\n this.url += `/${Api.notifications}`;\n return this;\n }\n public groups(groupId?: string): this {\n this.url += `/${Api.groups}`;\n\n if (SharedCommonUtility.notNullishOrEmpty(groupId)) {\n this.url += `/${groupId}`;\n }\n\n return this;\n }\n\n public staffGroups(groupId?: string): this {\n this.url += `/${Api.staffGroups}`;\n\n if (SharedCommonUtility.notNullishOrEmpty(groupId)) {\n this.url += `/${groupId}`;\n }\n\n return this;\n }\n\n public tenantsMembership(): this {\n this.url += `/${Api.tenantsMembership}`;\n\n return this;\n }\n\n public userManagement(): this {\n this.url += `/${Api.userManagement}`;\n\n return this;\n }\n\n public accessibilityPolicies(): this {\n this.url += `/${Api.accessibilityPolicies}`;\n return this;\n }\n\n public overviewData(): this {\n this.url += `/${Api.overviewData}`;\n return this;\n }\n\n public copy(): this {\n this.url += `/${Api.copy}`;\n return this;\n }\n\n public dataSnapshots(): this {\n this.url += `/${Api.data_snapshots}`;\n return this;\n }\n\n public contentTags(): this {\n this.url += `/${Api.contentTags}`;\n return this;\n }\n\n public availableContentTags(): this {\n this.url += `/${Api.availableContentTags}`;\n return this;\n }\n\n public availableSignupFields(): this {\n this.url += `/${Api.availableSignupFields}`;\n return this;\n }\n\n public activity(): this {\n this.url += `/${Api.activity}`;\n return this;\n }\n\n public salesforce(): this {\n this.url += `/${Api.salesforce}`;\n return this;\n }\n\n public accounts(): this {\n this.url += `/${Api.accounts}`;\n return this;\n }\n\n public metrics(): this {\n this.url += `/${Api.metrics}`;\n return this;\n }\n\n public metadata(): this {\n this.url += `/${Api.metadata}`;\n return this;\n }\n\n public digitalPropertyLimitState(): this {\n this.url += `/${Api.digital_property_limit_state}`;\n return this;\n }\n\n public digitalPropertyAutomatedFlowLimit(): this {\n this.url += `/${Api.digital_property_automated_flow_limit}`;\n return this;\n }\n\n public digitalPropertyUserWaySiteLimitState(): this {\n this.url += `/${Api.userway_site_limit_state}`;\n return this;\n }\n\n public webhooks(webhookId?: string): this {\n this.url += `/${Api.webhooks}`;\n if (SharedCommonUtility.notNullishOrEmpty(webhookId)) {\n this.url += `/${webhookId}`;\n }\n\n return this;\n }\n\n public entities(): this {\n this.url += `/${Api.entities}`;\n return this;\n }\n\n public ampApiKey(tenantId?: string): this {\n this.url += `/${Api.amp_api_key}`;\n if (SharedCommonUtility.notNullishOrEmpty(tenantId)) {\n this.url += `/${tenantId}`;\n }\n return this;\n }\n\n public validateTasks(): this {\n this.url += `/${Api.validateTasks}`;\n return this;\n }\n\n public taskProjectId(): this {\n this.url += `/${Api.taskProjectId}`;\n return this;\n }\n\n public environments(): this {\n this.url += `/${Api.environments}`;\n return this;\n }\n\n public continuum(): this {\n this.url += `/${Api.continuum}`;\n return this;\n }\n\n public changeEmails(): this {\n this.url += `/${Api.changeEmails}`;\n return this;\n }\n\n public updateEmails(): this {\n this.url += `/${Api.updateEmails}`;\n return this;\n }\n\n public ai(): this {\n this.url += `/${Api.ai}`;\n return this;\n }\n\n public chat(id?: string): this {\n this.url += `/${Api.chat}`;\n if (id) {\n this.url += `/${id}`;\n }\n\n return this;\n }\n\n public rating(): this {\n this.url += `/${Api.rating}`;\n\n return this;\n }\n\n public my(): this {\n this.url += `/${Api.my}`;\n\n return this;\n }\n\n public snapshots(): this {\n this.url += `/${Api.snapshots}`;\n return this;\n }\n\n public cloudsmithToken(): this {\n this.url += `/${Api.cloudsmithToken}`;\n return this;\n }\n\n public email(): this {\n this.url += `/${Api.email}`;\n return this;\n }\n\n public dataSummary(summaryCode?: string): this {\n this.url += `/${Api.summary}`;\n if (typeof summaryCode === 'string') {\n this.url += `/${summaryCode}`;\n }\n return this;\n }\n\n public userRoles(): this {\n this.url += `/${Api.user_roles}`;\n return this;\n }\n\n public signup(): this {\n this.url += `/${Api.signup}`;\n return this;\n }\n\n public library(): this {\n this.url += `/${Api.library}`;\n return this;\n }\n\n public scimApiKey(): this {\n this.url += `/${Api.scim_api_key}`;\n return this;\n }\n\n public scimConfig(): this {\n this.url += `/${Api.scim_config}`;\n return this;\n }\n\n public unassignedMembers(): this {\n this.url += `/${Api.unassigned_members}`;\n return this;\n }\n\n public assignUsers(): this {\n this.url += `/${Api.assign_users}`;\n return this;\n }\n\n public push(): this {\n this.url += `/${Api.push}`;\n return this;\n }\n\n public recentWorkspaces(): this {\n this.url += `/${Api.recentWorkspaces}`;\n return this;\n }\n\n public conformanceScoreReport(): this {\n this.url += `/${Api.conformanceScoreReport}`;\n return this;\n }\n\n public userway(): this {\n this.url += `/${Api.userway}`;\n return this;\n }\n\n public healthcheck(): this {\n this.url += `/${Api.healthCheck}`;\n return this;\n }\n\n public ping(): this {\n this.url += `/${Api.ping}`;\n return this;\n }\n\n public userWaySSOLink(): this {\n this.url += `/${Api.userway_sso_link}`;\n return this;\n }\n\n public types(type?: string): this {\n this.url += `/${Api.types}`;\n if (type) {\n this.url += `/${type}`;\n }\n return this;\n }\n\n public auditedDocuments(): this {\n this.url += `/${Api.auditedDocuments}`;\n return this;\n }\n\n public urls(url: string): this {\n this.url += `/${Api.urls}`;\n if (SharedCommonUtility.notNullishOrEmpty(url)) {\n this.url += `/${SharedCommonUtility.encodeURIParam(url)}`;\n }\n return this;\n }\n\n public customSeverities(severityKey?: $severity): this {\n this.url += `/${Api.custom_severities}`;\n\n if (SharedCommonUtility.notNullishOrEmpty(severityKey)) {\n this.url += `/${severityKey}`;\n }\n\n return this;\n }\n\n public deleteAndReassign(): this {\n this.url += `/${Api.deleteAndReassign}`;\n return this;\n }\n\n public swapRanks(): this {\n this.url += `/${Api.swapRanks}`;\n return this;\n }\n\n public mobileApps(id?: string): this {\n this.url += `/${Api.mobile_apps}`;\n if (SharedCommonUtility.notNullishOrEmpty(id)) {\n this.url += `/${id}`;\n }\n return this;\n }\n\n public command(): this {\n this.url += `/${Api.command}`;\n return this;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { openDB } from 'idb';\nimport { IDBPDatabase } from 'idb/build/entry';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { from, Observable } from 'rxjs';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { LoadErrorHandler } from './load-error-handler';\nimport { TranslateService } from '../translate/translate.service';\nimport { IMobileScanWithScreenData } from '../../../shared/interfaces/mobile-app.interface';\n\nexport enum IndexedDBCollectionName {\n __storageTest__ = '__storageTest__',\n MOBILE_EMULATOR_SCANS = 'MOBILE_EMULATOR_SCANS',\n}\n\ninterface CollectionTypeMapping {\n [IndexedDBCollectionName.__storageTest__]: any;\n [IndexedDBCollectionName.MOBILE_EMULATOR_SCANS]: IMobileScanWithScreenData[];\n}\n\n@Injectable()\nexport class IndexedDBService {\n private db: IDBPDatabase;\n\n constructor(\n private loadErrorHandler: LoadErrorHandler,\n private translateService: TranslateService,\n ) {\n this.initDb();\n }\n\n private initDb(): void {\n openDB('LEVELACCESS', 1, {\n upgrade: (db: IDBPDatabase): void => {\n Object.values(IndexedDBCollectionName).forEach((collectionName: IndexedDBCollectionName): void => {\n db.createObjectStore(collectionName);\n });\n },\n })\n .then((db: IDBPDatabase): void => {\n this.db = db;\n })\n .catch((): void => {\n console.error(`${IndexedDBService.name} did not initialize properly`);\n });\n }\n\n private throwUninitializedError(): never {\n this.loadErrorHandler.handleError('indexed_db_uninitialized_error', null, IndexedDBService.name);\n throw new Error(this.translateService.instant('indexed_db_uninitialized_error'));\n }\n\n private throwIndexedDBAccessError(err: Error): Observable {\n console.error(`${IndexedDBService.name} db access error ${err}`);\n this.loadErrorHandler.handleError('indexed_db_access_error', null, IndexedDBService.name);\n throw new Error(this.translateService.instant('indexed_db_access_error'));\n }\n\n private get isInitialized(): boolean {\n return !SharedCommonUtility.isNullish(this.db);\n }\n\n public getCollection(\n collection: IndexedDBCollectionName,\n ): Observable | never {\n if (!this.isInitialized) {\n return this.throwUninitializedError();\n }\n\n return from(this.db.getAll(collection)).pipe(catchError(this.throwIndexedDBAccessError.bind(this)));\n }\n\n public setItem(\n collection: IndexedDBCollectionName,\n key: string,\n value: CollectionTypeMapping[T],\n ): Observable | never {\n if (!this.isInitialized) {\n this.throwUninitializedError();\n }\n\n return from(this.db.put(collection, value, key)).pipe(\n map((): void => {}),\n catchError(this.throwIndexedDBAccessError.bind(this)),\n );\n }\n\n public clear(collection: IndexedDBCollectionName): Observable | never {\n if (!this.isInitialized) {\n this.throwUninitializedError();\n }\n\n return from(this.db.clear(collection)).pipe(catchError(this.throwIndexedDBAccessError.bind(this)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport {\n IJiraIntegrationConsumerKeyResponse,\n IJiraIntegrationResponse,\n} from '../../../../shared/interfaces/issue-tracking.interface';\nimport {\n IIssueIntegrationConnection,\n IIssueTrackingIssueStatus,\n IIssueTrackingIssueType,\n IJiraUser,\n IPopulatedIssueIntegrationConnection,\n IRequiredField,\n IStatusMapping,\n} from '../../../../shared/interfaces/issue-integration-connection.interface';\nimport { $issueIntegrationConnection } from '../../../../shared/constants/issue-tracking-connection';\nimport {\n IConfigureIssueTrackingFields,\n ICreateIssueTrackingIssueRequest,\n IIssueTrackingConnectionCreateRequest,\n IIssueTrackingConnectionReauthorizeRequest,\n IIssueTrackingConnectionRegenerateAuthUrlRequest,\n IIssueTrackingConnectionUpdateWorkspacesRequest,\n IJiraVerifyTokenRequest,\n ILinkIssueTrackingIssueRequest,\n IssueTrackingFieldsConfig,\n IUpdateStatusMappingsRequest,\n} from '../../../../shared/interfaces/issue-tracking.requests.interface';\nimport { IIssueTrackingConnectionRegenerateAuthUrlResponse } from '../../../../shared/interfaces/issue-tracking.responses.interface';\nimport { IIssueTrackingProject } from '../../../../shared/interfaces/project.interface';\nimport { Api, ApiQueryOption } from '../../../../shared/constants/api';\nimport { $taskTransitionType } from '../../../../shared/constants/issue-tracking';\nimport { IIssueIntegrationStatusMapping } from '../../../../shared/interfaces/issue-integration-status-mapping.interface';\nimport { IFailedTask } from '../../../../shared/interfaces/task.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IssueTrackingRestAPI {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /issue-tracking/issue-integration-connection-config\n public getTenantIssueTrackingConnectionConfig(): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnectionConfig().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/consumer-key\n public getTenantIssueTrackingConnectionConsumerKey(connectionId: string): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection(connectionId).consumerKey().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /issue-tracking/issue-integration-connection\n public createIssueTrackingConnection(\n issueTrackingConnectionCreateRequest: IIssueTrackingConnectionCreateRequest,\n ): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection().getApiUrl();\n\n return this.httpClient.post(url, issueTrackingConnectionCreateRequest);\n }\n\n // POST /issue-tracking/issue-integration-connection/:connectionId/regenerate-auth-url\n public regenerateIssueTrackingAuthorizeUrl(\n connectionId: string,\n issueTrackingConnectionRegenerateAuthUrlRequest: IIssueTrackingConnectionRegenerateAuthUrlRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(connectionId)\n .regenerateAuthUrl()\n .getApiUrl();\n\n return this.httpClient.post(\n url,\n issueTrackingConnectionRegenerateAuthUrlRequest,\n );\n }\n\n // POST /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId/verify-token\n public verifyTenantJiraToken(issueTrackingConnectionId: string, request: IJiraVerifyTokenRequest): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .verifyJiraToken()\n .getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // GET /issue-tracking/issue-integration-connection\n public getUserIssueTrackingConnections(): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection\n public getIssueTrackingConnectionsForWorkspace(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection().getApiUrl();\n\n const params: HttpParams = new HttpParams().set(ApiQueryOption.workspaceId, workspaceId);\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId/issue-integration-projects\n public getIssueTrackingProjects(issueTrackingConnectionId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .issueTrackingProjects()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/issueTypes\n public getIssueTrackingIssueTypes(connectionId: string, issueTrackingProjectId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(connectionId)\n .issueTrackingProjects(issueTrackingProjectId)\n .issueTypes()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/issueTypes/:issueTypeId/required-fields\n public getRequiredFields(\n connectionId: string,\n issueTrackingProjectId: string,\n issueTrackingIssueTypeId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(connectionId)\n .issueTrackingProjects(issueTrackingProjectId)\n .issueTypes(issueTrackingIssueTypeId)\n .requiredFields()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/issueTypes/:issueTypeId/configurable-fields\n public getConfigurableFields(\n connectionId: string,\n issueTrackingProjectId: string,\n issueTrackingIssueTypeId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(connectionId)\n .issueTrackingProjects(issueTrackingProjectId)\n .issueTypes(issueTrackingIssueTypeId)\n .configurableFields()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/user/assignable\n public getJiraUsersByProject(connectionId: string, issueIntegrationProjectKey: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(connectionId)\n .issueTrackingProjects(issueIntegrationProjectKey)\n .user()\n .assignable()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/issue-tracking/issue-integration-status-mapping\n public updateEapProjectStatusMapping(\n workspaceId: string,\n projectId: string,\n statusMappingFromIssueTracking: IStatusMapping[],\n statusMappingToIssueTracking: IStatusMapping[] = [],\n configurationType: $taskTransitionType,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .issueTracking()\n .issueTrackingStatusMapping()\n .getApiUrl();\n\n const request: IUpdateStatusMappingsRequest = {\n [$issueIntegrationConnection.statusMapping]: statusMappingFromIssueTracking,\n [$issueIntegrationConnection.statusMappingToIssueTracking]: statusMappingToIssueTracking,\n [$issueIntegrationConnection.taskTransitionRulesConfigurationType]: configurationType,\n };\n\n return this.httpClient.post(url, request);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/issue-integration-statuses\n public getIssueTrackingIssueStatusesByProject(\n issueIntegrationProjectId: string,\n issueTrackingConnectionId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .issueTrackingProjects(issueIntegrationProjectId)\n .issueTrackingIssueStatuses()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /issue-tracking/issue-integration-connection/:connectionId/issue-integration-projects/:projectId/issueTypes/:issueTypeId/issue-integration-statuses\n public getIssueTrackingIssueStatusesByIssueType(\n issueTrackingConnectionId: string,\n projectId: string,\n issueTypeId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .issueTrackingProjects(projectId)\n .issueTypes(issueTypeId)\n .issueTrackingIssueStatuses()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /issue-tracking/issue-integration-connection/:connectionId/issueIntegration/issues?projectId=:projectId\n public createJiraIssue(\n connectionId: string,\n projectId: string,\n createJiraIssueRequest: ICreateIssueTrackingIssueRequest[],\n ): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection(connectionId).issues().getApiUrl();\n\n const params: HttpParams = new HttpParams().set(Api.projectId, projectId);\n\n return this.httpClient.post(url, createJiraIssueRequest, { params: params });\n }\n\n // PUT /issue-tracking/issue-integration-connection/:connectionId/issueIntegration/issues?projectId=:projectId\n public linkIssue(\n connectionId: string,\n projectId: string,\n linkIssueRequest: ILinkIssueTrackingIssueRequest[],\n ): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection(connectionId).issues().getApiUrl();\n const params: HttpParams = new HttpParams().set(Api.projectId, projectId);\n return this.httpClient.put(url, linkIssueRequest, { params: params });\n }\n\n // GET /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId\n public getIssueTrackingConnectionInfo(issueTrackingConnectionId: string): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection(issueTrackingConnectionId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // DELETE /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId\n public removeTenantIssueTrackingConnection(issueTrackingConnectionId: string): Observable {\n const url: string = this.restBuilder.create().issueTracking().issueTrackingConnection(issueTrackingConnectionId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId/resync\n public resyncIssueTrackingConnection(issueTrackingConnectionId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .resync()\n .getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId/issueTracking/issueTypes/:issueTrackingIssueTypeId/configFields\n public getConfiguredFieldsForProject(\n workspaceId: string,\n projectId: string,\n issueTrackingIssueTypeId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .issueTracking()\n .issueTypes(issueTrackingIssueTypeId)\n .configureFields()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /issue-tracking/issue-integration-connection/:connectionId/workspaces\n public updateIssueTrackingConnectionWorkspaces(\n issueTrackingConnectionId: string,\n issueTrackingConnectionUpdateWorkspacesRequest: IIssueTrackingConnectionUpdateWorkspacesRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .workspaces()\n .getApiUrl();\n\n return this.httpClient.put(url, issueTrackingConnectionUpdateWorkspacesRequest);\n }\n\n // PUT /workspaces/:workspaceId/projects/:projectId/issueTracking/configureFields\n public configureFieldsForProject(\n workspaceId: string,\n projectId: string,\n newFields: IConfigureIssueTrackingFields,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .issueTracking()\n .configureFields()\n .getApiUrl();\n\n return this.httpClient.put(url, newFields);\n }\n\n // PUT /issue-tracking/issue-integration-connection/:issueIntegrationConnectionId/reauthorize-connection\n public reauthorizeIssueTrackingConnection(\n issueTrackingConnectionId: string,\n issueTrackingConnectionReauthorizeRequest: IIssueTrackingConnectionReauthorizeRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .reauthorizeConnection()\n .getApiUrl();\n\n return this.httpClient.put(url, issueTrackingConnectionReauthorizeRequest);\n }\n\n public getLabels(issueTrackingConnectionId: string, query: string, fieldName: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .labels()\n .getApiUrl();\n\n return this.httpClient.get(url, {\n params: {\n [ApiQueryOption.query]: query,\n [ApiQueryOption.fieldName]: fieldName,\n },\n });\n }\n\n public getFailedTasks(issueTrackingConnectionId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .issueTracking()\n .issueTrackingConnection(issueTrackingConnectionId)\n .failedTasks()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n IIssueIntegrationConnection,\n IIssueTrackingIssueStatus,\n IIssueTrackingIssueType,\n IJiraUser,\n IPopulatedIssueIntegrationConnection,\n IRequiredField,\n IStatusMapping,\n} from '../../../shared/interfaces/issue-integration-connection.interface';\nimport {\n IJiraIntegrationConsumerKeyResponse,\n IJiraIntegrationResponse,\n} from '../../../shared/interfaces/issue-tracking.interface';\nimport { IssueTrackingRestAPI } from './rest/issue-tracking.api';\nimport {\n IConfigureIssueTrackingFields,\n ICreateIssueTrackingIssueRequest,\n IIssueTrackingConnectionCreateRequest,\n IIssueTrackingConnectionReauthorizeRequest,\n IIssueTrackingConnectionRegenerateAuthUrlRequest,\n IIssueTrackingConnectionUpdateWorkspacesRequest,\n ILinkIssueTrackingIssueRequest,\n IssueTrackingFieldsConfig,\n} from '../../../shared/interfaces/issue-tracking.requests.interface';\nimport { IIssueTrackingConnectionRegenerateAuthUrlResponse } from '../../../shared/interfaces/issue-tracking.responses.interface';\nimport { IIssueTrackingProject } from '../../../shared/interfaces/project.interface';\nimport { $issueIntegrationType, $taskTransitionType } from '../../../shared/constants/issue-tracking';\nimport { IIssueIntegrationStatusMapping } from '../../../shared/interfaces/issue-integration-status-mapping.interface';\nimport { IFailedTask } from '../../../shared/interfaces/task.interface';\nimport { $issueIntegrationConnection } from '../../../shared/constants/issue-tracking-connection';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IssueTrackingService {\n constructor(private issueTrackingRestAPI: IssueTrackingRestAPI) {}\n\n public getTenantIssueTrackingConnectionConfig(): Observable {\n return this.issueTrackingRestAPI.getTenantIssueTrackingConnectionConfig();\n }\n\n public getTenantIssueTrackingConnectionConsumerKey(connectionId: string): Observable {\n return this.issueTrackingRestAPI.getTenantIssueTrackingConnectionConsumerKey(connectionId);\n }\n\n public createIssueTrackingConnection(\n issueTrackingConnectionCreateRequest: IIssueTrackingConnectionCreateRequest,\n ): Observable {\n return this.issueTrackingRestAPI.createIssueTrackingConnection(issueTrackingConnectionCreateRequest);\n }\n\n public updateIssueTrackingConnectionWorkspaces(\n issueTrackingConnectionId: string,\n issueTrackingConnectionUpdateWorkspacesRequest: IIssueTrackingConnectionUpdateWorkspacesRequest,\n ): Observable {\n return this.issueTrackingRestAPI.updateIssueTrackingConnectionWorkspaces(\n issueTrackingConnectionId,\n issueTrackingConnectionUpdateWorkspacesRequest,\n );\n }\n\n public regenerateIssueTrackingAuthorizeUrl(\n connectionId: string,\n issueTrackingConnectionRegenerateAuthUrlRequest: IIssueTrackingConnectionRegenerateAuthUrlRequest,\n ): Observable {\n return this.issueTrackingRestAPI.regenerateIssueTrackingAuthorizeUrl(\n connectionId,\n issueTrackingConnectionRegenerateAuthUrlRequest,\n );\n }\n\n public getUserIssueTrackingConnections(): Observable {\n return this.issueTrackingRestAPI.getUserIssueTrackingConnections();\n }\n\n public getIssueTrackingConnectionsForWorkspace(workspaceId: string): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingConnectionsForWorkspace(workspaceId);\n }\n\n public getIssueTrackingProjects(issueTrackingConnectionId: string): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingProjects(issueTrackingConnectionId);\n }\n\n public getIssueTrackingIssueTypes(connectionId: string, issueTrackingProjectId: string): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingIssueTypes(connectionId, issueTrackingProjectId);\n }\n\n public getConfigurableFields(\n connectionId: string,\n issueTrackingProjectId: string,\n issueTrackingIssueTypeId: string,\n allFields: boolean,\n ): Observable {\n if (allFields) {\n return this.issueTrackingRestAPI.getConfigurableFields(connectionId, issueTrackingProjectId, issueTrackingIssueTypeId);\n }\n return this.issueTrackingRestAPI.getRequiredFields(connectionId, issueTrackingProjectId, issueTrackingIssueTypeId);\n }\n\n public getConfiguredFieldsForProject(\n workspaceId: string,\n projectId: string,\n issueTrackingIssueTypeId: string,\n ): Observable {\n return this.issueTrackingRestAPI.getConfiguredFieldsForProject(workspaceId, projectId, issueTrackingIssueTypeId);\n }\n\n public getJiraUsersByProject(connectionId: string, issueIntegrationProjectKey: string): Observable {\n return this.issueTrackingRestAPI.getJiraUsersByProject(connectionId, issueIntegrationProjectKey);\n }\n\n public updateEapProjectStatusMapping(\n workspaceId: string,\n projectId: string,\n statusMappingFromIssueTracking: IStatusMapping[],\n statusMappingToIssueTracking: IStatusMapping[] = [],\n configurationType: $taskTransitionType,\n ): Observable {\n return this.issueTrackingRestAPI.updateEapProjectStatusMapping(\n workspaceId,\n projectId,\n statusMappingFromIssueTracking,\n statusMappingToIssueTracking,\n configurationType,\n );\n }\n\n public getIssueTrackingIssueStatusesByProject(\n issueIntegrationProjectId: string,\n connectionId: string,\n ): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingIssueStatusesByProject(issueIntegrationProjectId, connectionId);\n }\n\n public getIssueTrackingIssueStatusesByIssueType(\n connectionId: string,\n projectId: string,\n issueTypeId: string,\n ): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingIssueStatusesByIssueType(connectionId, projectId, issueTypeId);\n }\n\n public createIssue(\n connectionId: string,\n projectId: string,\n createJiraIssueRequest: ICreateIssueTrackingIssueRequest[],\n ): Observable {\n return this.issueTrackingRestAPI.createJiraIssue(connectionId, projectId, createJiraIssueRequest);\n }\n\n public linkIssue(\n connectionId: string,\n projectId: string,\n linkIssueRequest: ILinkIssueTrackingIssueRequest[],\n ): Observable {\n return this.issueTrackingRestAPI.linkIssue(connectionId, projectId, linkIssueRequest);\n }\n\n public getIssueTrackingConnectionInfo(issueTrackingConnectionId: string): Observable {\n return this.issueTrackingRestAPI.getIssueTrackingConnectionInfo(issueTrackingConnectionId);\n }\n\n public verifyTenantJiraToken(issueTrackingConnectionId: string, verificationCode: string): Observable {\n return this.issueTrackingRestAPI.verifyTenantJiraToken(issueTrackingConnectionId, { verificationCode });\n }\n\n public removeIssueTrackingConnection(issueTrackingConnectionId: string): Observable {\n return this.issueTrackingRestAPI.removeTenantIssueTrackingConnection(issueTrackingConnectionId);\n }\n\n public resyncIssueTrackingConnection(issueTrackingConnectionId: string): Observable {\n return this.issueTrackingRestAPI.resyncIssueTrackingConnection(issueTrackingConnectionId);\n }\n\n public configureFieldsForProject(\n workspaceId: string,\n projectId: string,\n newFields: IConfigureIssueTrackingFields,\n ): Observable {\n return this.issueTrackingRestAPI.configureFieldsForProject(workspaceId, projectId, newFields);\n }\n\n public reauthorizeIssueTrackingConnection(\n issueTrackingConnectionId: string,\n issueTrackingConnectionReauthorizeRequest: IIssueTrackingConnectionReauthorizeRequest,\n ): Observable {\n return this.issueTrackingRestAPI.reauthorizeIssueTrackingConnection(\n issueTrackingConnectionId,\n issueTrackingConnectionReauthorizeRequest,\n );\n }\n\n public getLabels(issueTrackingConnectionId: string, query: string, fieldName: string): Observable {\n return this.issueTrackingRestAPI.getLabels(issueTrackingConnectionId, query, fieldName);\n }\n\n public getFailedTasks(issueTrackingConnectionId: string): Observable {\n return this.issueTrackingRestAPI.getFailedTasks(issueTrackingConnectionId);\n }\n\n public isJiraCloudInstance(instance: string): boolean {\n try {\n const url: URL = new URL(instance);\n const atlassianRegExp: RegExp = /\\.atlassian\\.net$/i;\n return atlassianRegExp.test(url.hostname);\n } catch (error) {\n return false;\n }\n }\n\n public shouldReauthorizeConnection(connection: IIssueIntegrationConnection): boolean {\n return (\n connection?.[$issueIntegrationConnection.integrationType] === $issueIntegrationType.jira &&\n (!connection[$issueIntegrationConnection.oAuth2] || !connection[$issueIntegrationConnection.webhooksSupported]) &&\n this.isJiraCloudInstance(connection[$issueIntegrationConnection.instance])\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { EMPTY, Observable } from 'rxjs';\n\nimport { ErrorMessageService } from './error-message.service';\nimport { A11yService } from './a11y.service';\nimport { NotificationService } from './notification.service';\nimport { TranslateService } from '../translate/translate.service';\nimport { NotificationPosition } from '../models/notification.model';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadErrorHandler {\n constructor(\n private errorMessageService: ErrorMessageService,\n private a11yService: A11yService,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n ) {}\n\n private logAndDisplayError(\n errorMessage: string,\n appMessage: string,\n response: HttpErrorResponse,\n componentName: string,\n logMessageInResponse: boolean = false,\n ): void {\n const fullMessage: string = `${appMessage}: ${errorMessage}`;\n this.a11yService.setMessage(fullMessage);\n this.notificationService.error(logMessageInResponse ? fullMessage : appMessage, NotificationPosition.Toast, true);\n\n console.error(`[${componentName}.handleError: ` + appMessage + ']', response, errorMessage);\n }\n\n private getErrorMessage(response: HttpErrorResponse): string {\n return SharedCommonUtility.isNullish(response) ? '' : this.errorMessageService.getGlobalErrorResponse(response);\n }\n\n public handleError(\n message: string,\n response: HttpErrorResponse,\n componentName: string,\n logMessageInResponse: boolean = false,\n ): void {\n const errorMessage: string = this.getErrorMessage(response);\n const appMessage: string = this.translateService.instant(message || errorMessage);\n this.logAndDisplayError(errorMessage, appMessage, response, componentName, logMessageInResponse);\n }\n\n public handleErrorBindable(message: string, componentName: string, response: HttpErrorResponse): void {\n this.handleError(message, response, componentName);\n }\n\n public handleErrorObservable(message: string, componentName: string, response: HttpErrorResponse): Observable {\n this.handleError(message, response, componentName);\n return EMPTY;\n }\n\n public handleErrorWithCustomAppMessage(\n message: string,\n appMessage: string,\n response: HttpErrorResponse,\n componentName: string,\n ): void {\n const errorMessage: string = this.getErrorMessage(response);\n this.logAndDisplayError(errorMessage, appMessage, response, componentName);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n private skip: number = 0;\n private loaderMap: Map = new Map();\n\n public loader: BehaviorSubject = new BehaviorSubject(false);\n\n constructor() {}\n\n public skipNext(skip: number = 1): void {\n this.skip = skip;\n }\n\n public setKeyLoading(loading: boolean, key: string): void {\n if (loading && this.skip > 0) {\n this.skip = this.skip - 1;\n return;\n }\n\n if (SharedCommonUtility.isNullishOrEmpty(key?.trim())) {\n console.error('[LoaderService] key not provided to LoaderService.setKeyLoading');\n return;\n }\n\n if (loading === true) {\n this.loaderMap.set(key, loading);\n this.loader.next(true);\n } else if (loading === false || this.loaderMap.has(key)) {\n this.loaderMap.delete(key);\n }\n\n if (this.loaderMap.size === 0) {\n this.loader.next(false);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { mergeMap, switchMap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { map } from 'lodash';\n\nimport { ICurrentSelectedProperty } from './user.service';\nimport { IAuditFinding } from '../../../shared/interfaces/audit-finding.interface';\nimport {\n IDashboardManualEvaluationsBySeverity,\n TopWcagKeyNumPair,\n} from '../../../shared/interfaces/dashboard-scan-result.interface';\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\nimport {\n IGetManualEvaluationsResponse,\n IManualAuditIssueServerResponse,\n IManualEvaluationQuery,\n IPopulatedManualAuditIssueServerResponse,\n IManualEvaluation,\n} from '../../../shared/interfaces/manual-audit.interface';\nimport { IUploadClient } from '../../../shared/interfaces/uploads.interface';\nimport { UserPropertyService } from './user-property.service';\nimport { $formatColumns } from '../../../shared/constants/manual-audit-issues';\nimport {\n ICreateTaskDescription,\n JiraMarkdownUtils,\n} from '../components/markdown-editor/markdown-formatter/markdown-jira.utility';\nimport { $auditFinding, AuditFindingDisabilityAffected } from '../../../shared/constants/audit-finding';\nimport { $auditRule } from '../../../shared/constants/audit-rule';\nimport { $auditedDocument } from '../../../shared/constants/audited-document';\nimport { ISuccessCriteria } from '../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { TranslateService } from '../translate/translate.service';\nimport {\n IManualAuditFindingServerResponse,\n IManualAuditQuery,\n IManualFindingBulkStatusChangeRequest,\n IPopulatedManualFinding,\n IPopulatedManualFindingClient,\n} from '../../../shared/interfaces/manual-audit-finding.interface';\nimport { $auditStandardSuccessCriteria } from '../../../shared/constants/audit-standard-success-criteria';\nimport { IGetShortLinkResponse } from '../../../shared/interfaces/short-link.interface';\nimport { IScan } from '../../../shared/interfaces/scan.interface';\nimport { IRuleAuditHistoryManualLineItem } from '../../../shared/interfaces/rule-audit-history.interface';\nimport { IManualAuditHistoryRequest } from '../interfaces/manual-evaluation.interface';\nimport { IManualEvaluationDataSnapshot } from '../../../shared/interfaces/manual-evaluation-data-snapshot.interface';\nimport { SuccessCriteriaService } from './success-criteria.service';\nimport { AiSummaryKey } from '../../../shared/constants/ai-data-summary';\nimport { IDataSummaryClient, ISimpleDataSummary } from '../../../shared/interfaces/ai-data-summary.interface';\nimport { IConformanceScoreReport, IConformanceScoreReportQuery } from '../../../shared/interfaces/conformance-score.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ManualAuditIssueService {\n constructor(\n private workspaceRestApi: WorkspacesRestAPI,\n private userService: UserPropertyService,\n private translateService: TranslateService,\n private successCriteriaService: SuccessCriteriaService,\n ) {}\n\n public getRuleAuditHistory(\n manualAuditHistoryRequest: IManualAuditHistoryRequest,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n switchMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualEvaluationIssueRuleAuditHistory(\n workspaceId,\n digitalPropertyId,\n manualAuditHistoryRequest,\n ),\n ),\n );\n }\n\n public hasHistory(manualAuditHistoryRequest: IManualAuditHistoryRequest): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n switchMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualEvaluationIssueHasHistory(workspaceId, digitalPropertyId, manualAuditHistoryRequest),\n ),\n );\n }\n\n public getRuleCategories(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n return this.workspaceRestApi.getManualRuleCategories(workspaceId, digitalPropertyId, scanId);\n }\n\n public getEvaluationIssues(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n params: IManualAuditQuery,\n ): Observable {\n return this.workspaceRestApi.getManualEvaluationIssues(workspaceId, digitalPropertyId, scanId, params);\n }\n\n public updateEvaluationTitleById(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n title: string,\n ): Observable {\n return this.workspaceRestApi.updateManualEvaluationTitleById(workspaceId, digitalPropertyId, scanId, title);\n }\n\n public getEvaluationTopWcag(scanId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualEvaluationTopWcag(workspaceId, digitalPropertyId, scanId),\n ),\n );\n }\n\n public getEvaluationIssuesBySeverity(scanId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualEvaluationIssuesBySeverity(workspaceId, digitalPropertyId, scanId),\n ),\n );\n }\n\n public downloadCSVReport(\n scanId: string,\n selectedFields: string[],\n formatColumns: $formatColumns,\n params: IManualAuditQuery,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.downloadManualEvaluationIssues(\n workspaceId,\n digitalPropertyId,\n scanId,\n selectedFields,\n formatColumns,\n params,\n ),\n ),\n );\n }\n\n public getIssue(scanId: string, manualAuditIssueId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualEvaluationIssue(workspaceId, digitalPropertyId, scanId, manualAuditIssueId),\n ),\n );\n }\n\n public deleteIssue(scanId: string, manualAuditIssueId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n switchMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.workspaceRestApi.deleteManualEvaluationIssue(workspaceId, digitalPropertyId, scanId, manualAuditIssueId),\n ),\n );\n }\n\n public updateQAIssueStatus(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n return this.workspaceRestApi.updateQAIssueStatus(body, workspaceId, scanId, digitalPropertyId, manualAuditIssueId);\n }\n\n /**\n * Bulk update the status of a set of findings.\n * Does not support changing to the following statuses: [dismissed, toReview]\n * and from the following statuses: [dismissed].\n *\n * @param workspaceId\n * @param digitalPropertyId\n * @param scanId\n * @param request\n */\n public bulkUpdateFindingStatuses(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n request: IManualFindingBulkStatusChangeRequest,\n ): Observable {\n return this.workspaceRestApi.bulkUpdateFindingStatuses(workspaceId, digitalPropertyId, scanId, request);\n }\n\n public dismissQAIssue(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n return this.workspaceRestApi.dismissQAIssue(body, workspaceId, scanId, digitalPropertyId, manualAuditIssueId);\n }\n\n public dismissQAIssues(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n ): Observable {\n return this.workspaceRestApi.dismissQAIssues(body, workspaceId, scanId, digitalPropertyId);\n }\n\n public restoreQAIssue(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n return this.workspaceRestApi.restoreQAIssue(body, workspaceId, scanId, digitalPropertyId, manualAuditIssueId);\n }\n\n public updateQAIssue(\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n issue: FormData,\n ): Observable {\n return this.workspaceRestApi.updateQAIssue(workspaceId, scanId, digitalPropertyId, manualAuditIssueId, issue);\n }\n\n public uploadAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachment: FormData,\n ): Observable {\n return this.workspaceRestApi.uploadManualEvaluationIssueAttachment(\n workspaceId,\n digitalPropertyId,\n scanId,\n manualAuditIssueId,\n attachment,\n );\n }\n\n public updateAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachmentId: string,\n update: FormData,\n ): Observable {\n return this.workspaceRestApi.updateManualEvaluationIssueAttachment(\n workspaceId,\n digitalPropertyId,\n scanId,\n manualAuditIssueId,\n attachmentId,\n update,\n );\n }\n\n public deleteAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachmentId: string,\n ): Observable<{ _id: string }> {\n return this.workspaceRestApi.deleteManualEvaluationIssueAttachment(\n workspaceId,\n digitalPropertyId,\n scanId,\n manualAuditIssueId,\n attachmentId,\n );\n }\n\n public canInlineScreenshot(screenshotUrl: string): boolean {\n const acceptedImageExtensions: string[] = ['.png', '.jpg', 'jpeg'];\n\n const isImage = (fileName: string): boolean => {\n const lastDot = fileName.lastIndexOf('.');\n if (lastDot <= 0) {\n return false;\n }\n\n return acceptedImageExtensions.includes(fileName.substring(lastDot));\n };\n\n if (typeof screenshotUrl !== 'string' || screenshotUrl.length === 0 || screenshotUrl.includes('\\n')) {\n return false;\n }\n\n try {\n const url: URL = new URL(screenshotUrl);\n if (/\\.essentialaccessibility\\.com$/i.test(url.hostname) === false) {\n return false;\n }\n\n return isImage(url.pathname);\n } catch (error) {\n return false;\n }\n }\n\n public getManualEvaluation(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n return this.workspaceRestApi.getManualEvaluation(workspaceId, digitalPropertyId, scanId);\n }\n\n public getManualEvaluations(\n workspaceId: string,\n digitalPropertyId: string,\n query: IManualEvaluationQuery,\n ): Observable {\n return this.workspaceRestApi.getManualEvaluations(workspaceId, digitalPropertyId, query);\n }\n\n /**\n * @deprecated Will be removed on EAP-28995\n */\n public generateTaskDescription(\n baseUrl: string,\n finding: IPopulatedManualFinding | IPopulatedManualFindingClient,\n linkToFinding: string,\n ): string {\n const encodeScreenshotUrl: (url: string) => string = (url: string) => {\n try {\n // First, decode the URL to handle already encoded URLs\n const decodedUrl = decodeURI(url);\n\n // Then, re-encode it properly to handle any unencoded characters\n return encodeURI(decodedUrl);\n } catch (e) {\n // If decoding fails (e.g., due to bad encoding), encode it as-is\n return encodeURI(url);\n }\n };\n\n const successCriterias: ISuccessCriteria[] = this.successCriteriaService.getSuccessCriteriaListFromStandards(\n map(finding[$auditFinding.ruleId][$auditRule.successCriterias], $auditStandardSuccessCriteria.identifier),\n );\n\n const scanIssueToDescriptionConfig: ICreateTaskDescription[] = [\n { header: 'link_to_finding', content: baseUrl + linkToFinding },\n {\n header: 'issue_field_severity',\n content: this.translateService.instant(\n `scan_issue_severity_${finding[$auditRule.severity] ?? finding[$auditFinding.ruleId][$auditRule.severity]}`,\n ),\n },\n { header: 'issue_field_url', content: finding[$auditFinding.documentId][$auditedDocument.reference] },\n { header: 'label_actual_result', content: finding[$auditFinding.actualResult] },\n { header: 'label_STR', content: finding[$auditFinding.stepsToReproduce] },\n {\n header: 'label_issue_frequency',\n content: this.translateService.instant(`issue_field_frequency_${finding[$auditFinding.issueFrequency]}`),\n },\n { header: 'issue_field_screen', content: finding[$auditFinding.screen] },\n { header: 'issue_field_screenshot', content: finding[$auditFinding.screenshot]?.map(encodeScreenshotUrl)?.join('\\n') },\n {\n header: 'issue_field_successCriteria',\n content: successCriterias.map((sc: ISuccessCriteria) => sc.num).join(', '),\n },\n {\n header: 'issue_field_conformanceLevel',\n content: successCriterias.map((sc: ISuccessCriteria) => sc.level).join(', '),\n },\n {\n header: 'label_effort',\n content: this.translateService.instant(`scan_issue_severity_${finding[$auditFinding.functionalImpact]}`),\n },\n {\n header: 'label_instances',\n content: finding[$auditFinding.instances]\n ? finding[$auditFinding.instances]\n : this.translateService.instant('label_none_provided'),\n },\n {\n header: 'issue_field_disabilityAffected',\n content: (finding[$auditFinding.disabilityAffected] ?? [])\n .map((value: AuditFindingDisabilityAffected) => this.translateService.instant(`issue_field_disability_${value}`))\n .join(', '),\n },\n { header: 'recommendation_comment', content: finding[$auditFinding.recommendation] },\n ];\n\n return scanIssueToDescriptionConfig\n .map((description: ICreateTaskDescription): string =>\n JiraMarkdownUtils.jiraDescriptionBlock(this.translateService, description),\n )\n .join('');\n }\n\n public async getShortLink(scanId: string, manualAuditIssueId: string): Promise {\n const resp: { shortLink: string } = await this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.workspaceRestApi.getManualAuditIssueShortLink(workspaceId, digitalPropertyId, scanId, manualAuditIssueId),\n ),\n )\n .toPromise();\n\n return resp.shortLink;\n }\n\n public getManualEvaluationDataSnapshots(scanId: string, limit: number): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.workspaceRestApi.getManualEvaluationDataSnapshots(workspaceId, digitalPropertyId, scanId, limit),\n ),\n );\n }\n\n public getManualEvaluationAuditSummary(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n regenerate: boolean = false,\n ): Observable {\n return this.workspaceRestApi.getManualEvaluationAuditSummary(\n workspaceId,\n digitalPropertyId,\n manualAuditId,\n summaryCode,\n regenerate,\n );\n }\n\n public getManualEvaluationAuditSummaryById(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n summaryId: string,\n ): Observable {\n return this.workspaceRestApi.getManualEvaluationAuditSummaryById(\n workspaceId,\n digitalPropertyId,\n manualAuditId,\n summaryCode,\n summaryId,\n );\n }\n\n public getManualEvaluationAuditSummaryList(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n ): Observable {\n return this.workspaceRestApi.getManualEvaluationAuditSummaryList(workspaceId, digitalPropertyId, manualAuditId, summaryCode);\n }\n\n public rateManualEvaluationAiSummary(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryId: string,\n rating: number,\n ): Observable {\n return this.workspaceRestApi.rateManualEvaluationAiSummary(workspaceId, digitalPropertyId, manualAuditId, summaryId, rating);\n }\n\n public getOrCreateConformanceScoreReport(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n query: IConformanceScoreReportQuery,\n ): Observable {\n return this.workspaceRestApi.getOrCreateEvaluationConformanceScoreReport(\n workspaceId,\n digitalPropertyId,\n manualAuditId,\n query,\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { ITestGuideSimpleServerResponse } from '../../../../shared/interfaces/test-guide.interface';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { RestBuilder } from '../helpers/rest.builder';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TestGuidesApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /test-guides/names\n public getTestGuideNames(dpId?: string, filterLegacyEA: boolean = false): Observable {\n const url: string = this.restBuilder.create().testGuides().names().getApiUrl();\n\n const query: {\n [ApiQueryOption.digitalPropertyId]?: string;\n [ApiQueryOption.filterLegacyEA]?: boolean;\n } = {};\n if (SharedCommonUtility.notNullish(dpId)) {\n query[ApiQueryOption.digitalPropertyId] = dpId;\n }\n if (SharedCommonUtility.notNullish(filterLegacyEA)) {\n query[ApiQueryOption.filterLegacyEA] = filterLegacyEA;\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { IHttpQueryOptions } from '../../../shared/interfaces/http.query.interface';\nimport { AdminRestAPI } from './rest/admin.api';\nimport {\n IManualAudit,\n IManualEvalCreateRequest,\n IManualAuditServerResponse,\n IPopulatedManualAudit,\n IManualAuditUpdateRequest,\n} from '../../../shared/interfaces/manual-audit.interface';\nimport { RestBuilder } from './helpers/rest.builder';\nimport { RestService } from './rest.service';\nimport { ITestGuideSimpleServerResponse } from '../../../shared/interfaces/test-guide.interface';\nimport { IManualScanEdit } from '../../../shared/interfaces/scan.interface';\nimport { TestGuidesApi } from './rest/test-guides.api';\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ManualAuditService {\n private restBuilder: RestBuilder;\n\n constructor(\n private adminRestAPI: AdminRestAPI,\n private restService: RestService,\n private testGuidesApi: TestGuidesApi,\n private workspacesApi: WorkspacesRestAPI,\n ) {\n this.restBuilder = new RestBuilder();\n }\n\n public createManualAuditWithFile(workspaceId: string, digitalPropertyId: string, formData: FormData): Observable {\n return this.adminRestAPI.createManualAuditWithFile(workspaceId, digitalPropertyId, formData);\n }\n\n public createEmptyEvaluation(\n workspaceId: string,\n digitalPropertyId: string,\n request: IManualEvalCreateRequest,\n options: { useAdminApi: boolean } = { useAdminApi: true },\n ): Observable {\n if (options.useAdminApi) {\n return this.adminRestAPI.createManualAudit(workspaceId, digitalPropertyId, request);\n }\n return this.workspacesApi.createEmptyEvaluation(workspaceId, digitalPropertyId, request);\n }\n\n public getEvaluation(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n options: { useAdminApi: boolean } = { useAdminApi: true },\n ): Observable {\n return options.useAdminApi\n ? this.adminRestAPI.getManualAuditWithPages(workspaceId, digitalPropertyId, manualEvaluationId)\n : this.workspacesApi.getEvaluationMetadata(workspaceId, digitalPropertyId, manualEvaluationId);\n }\n\n public patchEvaluation(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n request: IManualEvalCreateRequest,\n options: { useAdminApi: boolean } = { useAdminApi: true },\n ): Observable {\n return options.useAdminApi\n ? this.adminRestAPI.patchManualAudit(workspaceId, digitalPropertyId, manualEvaluationId, request)\n : this.workspacesApi.patchEvaluationMetadata(workspaceId, digitalPropertyId, manualEvaluationId, request);\n }\n\n public archiveEvaluation(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n options: { useAdminApi: boolean } = { useAdminApi: true },\n ): Observable {\n return options.useAdminApi\n ? this.adminRestAPI.archiveManualAudit(workspaceId, digitalPropertyId, manualEvaluationId)\n : this.workspacesApi.archiveEvaluationMetadata(workspaceId, digitalPropertyId, manualEvaluationId);\n }\n\n public getAllManualAudits(queryOptions: IHttpQueryOptions): Observable {\n return this.adminRestAPI.getAllManualAudits(queryOptions);\n }\n\n public getManualAuditDownload(resourceId: string): string {\n return this.restBuilder.create().secureResources(resourceId).getApiUrl();\n }\n\n public manualAuditDownloadFile(resourceId: string): Observable {\n const url: string = this.getManualAuditDownload(resourceId);\n return this.restService.download(url);\n }\n\n public manualUploadFile(\n workspaceId: string,\n digitalPropertyId: string,\n existingManualAuditId: string,\n formData: FormData,\n ): Observable {\n return this.adminRestAPI.manualUploadFile(workspaceId, digitalPropertyId, existingManualAuditId, formData);\n }\n\n public getManualAuditsForDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n return this.adminRestAPI.getAllManualAuditsForDigitalProperty(workspaceId, digitalPropertyId);\n }\n\n public updateManualAudit(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n updateRequest: IManualAuditUpdateRequest,\n ): Observable {\n return this.adminRestAPI.updateManualAudit(workspaceId, digitalPropertyId, scanId, updateRequest);\n }\n\n public getTestGuideNames(dpId?: string, filterLegacyEA: boolean = false): Observable {\n return this.testGuidesApi.getTestGuideNames(dpId, filterLegacyEA);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { asyncScheduler, Observable, Subject } from 'rxjs';\nimport { observeOn } from 'rxjs/operators';\n\ninterface Channel {\n subject: Subject;\n}\n\ninterface Channels {\n [key: string]: string;\n}\n\nexport enum MessageBusChannels {\n tooltipShow = 'tooltipShow',\n tooltipHide = 'tooltipHide',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageBusService {\n private channels: { [channelName: string]: Channel };\n private channelsNames: Channels;\n\n constructor() {\n this.initChannels();\n }\n\n private buildChannelsName(): void {\n for (const channel in MessageBusChannels) {\n this.channelsNames[channel] = channel;\n }\n }\n\n private initChannel(channelName: string): void {\n const channel: Channel = {\n subject: new Subject(),\n };\n\n if (typeof this.channels[channelName] === 'object') {\n throw new Error('[MessageBusService.to] channel \"' + channel + '\" does not exists.');\n }\n\n this.channels[channelName] = channel;\n }\n\n private initChannels(): void {\n this.channels = {};\n this.channelsNames = {};\n\n this.buildChannelsName();\n Object.keys(this.channelsNames).forEach(this.initChannel.bind(this));\n }\n\n public removeChannel(channel: string): void {\n delete this.channels[channel];\n }\n\n public from(channel: string): Observable {\n if (typeof this.channels[channel] === 'undefined') {\n throw new Error('[MessageBusService] from, channel \"' + channel + '\" does not exists.');\n }\n\n // Keep async scheduler to preserve order of events for observers\n return this.channels[channel].subject.asObservable().pipe(observeOn(asyncScheduler));\n }\n\n public to(channel: string, data: any): void {\n if (typeof this.channels[channel] === 'undefined') {\n throw new Error('[MessageBusService.to] channel \"' + channel + '\" does not exists.');\n }\n\n this.channels[channel].subject.next(data);\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n Injectable,\n OnDestroy,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IModal } from '../components/modals/modal.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { CommonUtility } from '../utility/common.utility';\n\nconst APP_CONTAINER_ELEMENT_ID: string = 'app-container';\nconst MODAL_CONTAINER_ID: string = 'modalContainer';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService implements OnDestroy {\n private subscription: Subscription;\n private rootViewContainerRef: ViewContainerRef;\n private modalContainerRef: ComponentRef;\n private previouslyActiveElement: Element;\n private appContainer: Element;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n this.subscription = new Subscription();\n }\n\n /**\n * The modal must be closed before doing anything that requires moving focus outside the modal container.\n * Focus-trap actively prevents focus from moving out the area it has set up. Deactive will return the\n * tabbing order and allow focus elsewhere.\n *\n * @private\n */\n private clearAfterModalClosed(): void {\n CommonUtility.deactivateFocusTrap();\n\n (this.previouslyActiveElement as HTMLElement).focus();\n\n this.modalContainerRef = undefined;\n this.previouslyActiveElement = undefined;\n\n if (SharedCommonUtility.notNullish(this.appContainer)) {\n this.appContainer.removeAttribute('aria-hidden');\n }\n }\n\n private createComponent(componentType: Type): ComponentRef {\n const factory: ComponentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return factory.create(this.rootViewContainerRef.parentInjector);\n }\n\n private openModal(focusElement?: HTMLElement): void {\n if (SharedCommonUtility.notNullish(focusElement)) {\n this.previouslyActiveElement = focusElement;\n } else {\n this.previouslyActiveElement = window.document.activeElement;\n }\n\n if (document.activeElement) {\n (document.activeElement as HTMLElement).blur();\n }\n\n // timeout is needed for those rare cases when modal opening triggers underlying content rerendering\n setTimeout(() => {\n this.appContainer = document.getElementById(APP_CONTAINER_ELEMENT_ID);\n this.appContainer.setAttribute('aria-hidden', 'true');\n\n const modal: HTMLElement = document.getElementById(MODAL_CONTAINER_ID);\n CommonUtility.activateFocusTrap(modal, { initialFocus: false, allowOutsideClick: true });\n }, 50);\n\n this.subscription.add(this.modalContainerRef.instance.container.onClose$.subscribe(this.closeModal.bind(this)));\n this.modalContainerRef.onDestroy(this.clearAfterModalClosed.bind(this));\n\n this.rootViewContainerRef.insert(this.modalContainerRef.hostView);\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public closeModal(): void {\n if (typeof this.modalContainerRef !== 'undefined') {\n this.modalContainerRef.destroy();\n }\n }\n\n public setRootViewContainerRef(viewContainerRef: ViewContainerRef): void {\n this.rootViewContainerRef = viewContainerRef;\n }\n\n public open(component: Type, focusElement?: HTMLElement): ComponentRef {\n this.modalContainerRef = this.createComponent(component);\n\n this.openModal(focusElement);\n\n return this.modalContainerRef as ComponentRef;\n }\n\n public isModalOpen(): boolean {\n return SharedCommonUtility.notNullish(this.modalContainerRef);\n }\n}\n","import { DsModalColorVariant, Icons } from '@levelaccess/design-system';\n\nimport { IRequiredSecurity } from '../../../../shared/interfaces/security.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { RequiredSecurities } from '../../../../shared/constants/required-securities';\nimport { Api } from '../../../../shared/constants/api';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\nimport { SecurityUtility } from '../../../../shared/utils/security.utility';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { PackageNames } from '../../../../shared/constants/packaging';\nimport { ExternalLinkService } from '../external-link.service';\nimport { AppConfigService } from '../app-config.service';\n\nexport enum NavigationItem {\n organization_dashboard = 'organization_dashboard',\n organization_portfolio = 'organization_portfolio',\n\n program_dashboard = 'program_dashboard',\n\n organization_settings = 'organization_settings',\n organization_settings_users = 'organization_settings_users',\n organization_settings_all_users = 'organization_settings_all_users',\n organization_settings_unassigned_users = 'organization_settings_unassigned_users',\n organization_settings_user_groups = 'organization_settings_user_groups',\n organization_settings_staff_groups = 'organization_settings_staff_groups',\n organization_settings_rule_libraries = 'organization_settings_rule_libraries',\n organization_settings_severities = 'organization_settings_severities',\n organization_settings_ai = 'organization_settings_ai',\n\n evaluations = 'evaluations',\n manual_evaluations = 'manual_evaluations',\n design_evaluations = 'design_evaluations',\n\n tools_and_integrations = 'tools_and_integrations',\n issue_tracking = 'issue_tracking',\n tools_and_extensions = 'tools_and_extensions',\n sdks = 'sdks',\n api = 'api',\n webhooks = 'webhooks',\n scim = 'scim',\n userway = 'userway',\n\n administration = 'administration',\n administration_tenants = 'administration_tenants',\n administration_organizations = 'administration_organizations',\n administration_my_organizations = 'administration_my_organizations',\n administration_all_organizations = 'administration_all_organizations',\n administration_users = 'administration_users',\n administration_global_users = 'administration_global_users',\n administration_internal_users = 'administration_internal_users',\n administration_admin_groups = 'administration_admin_groups',\n\n internal_use_only = 'internal_use_only',\n master_library = 'master_library',\n active_scans = 'active_scans',\n translations = 'translations',\n\n workspace = 'workspace',\n workspace_dashboard = 'workspace_dashboard',\n websites_and_apps = 'websites_and_apps',\n websites_and_apps_portfolio = 'websites_and_apps_portfolio',\n websites_and_apps_overview = 'websites_and_apps_overview',\n websites_and_apps_findings = 'websites_and_apps_findings',\n websites_and_apps_monitoring = 'websites_and_apps_monitoring',\n websites_and_apps_scans = 'websites_and_apps_scans',\n websites_and_apps_mobile_scans = 'websites_and_apps_mobile_scans',\n websites_and_apps_mobile_scans_page_scans = 'websites_and_apps_mobile_scans_page_scans',\n websites_and_apps_mobile_testing_emulator = 'websites_and_apps_mobile_testing_emulator',\n websites_and_apps_mobile_testing_emulator_page = 'websites_and_apps_mobile_testing_emulator_page',\n websites_and_apps_mobile_testing_emulator_app = 'websites_and_apps_mobile_testing_emulator_app',\n websites_and_apps_mobile_testing_emulator_scans = 'websites_and_apps_mobile_testing_emulator_scans',\n websites_and_apps_scans_page_scans = 'websites_and_apps_scans_page_scans',\n websites_and_apps_scans_components = 'websites_and_apps_scans_components',\n websites_and_apps_scans_user_flows = 'websites_and_apps_scans_user_flows',\n websites_and_apps_scan_rules = 'websites_and_apps_scan_rules',\n websites_and_apps_scan_tags = 'websites_and_apps_scan_tags',\n websites_and_apps_pages = 'websites_and_apps_pages',\n websites_and_apps_manual_evaluations = 'websites_and_apps_manual_evaluations',\n websites_and_apps_manual_evaluations_table = 'websites_and_apps_manual_evaluations_table',\n websites_and_apps_manual_evaluations_requests = 'websites_and_apps_manual_evaluations_requests',\n websites_and_apps_settings = 'websites_and_apps_settings',\n websites_and_apps_environments = 'websites_and_apps_environments',\n workspace_design_evaluations = 'workspace_design_evaluations',\n pdf = 'pdf',\n files = 'files',\n\n profile = 'profile',\n logout = 'logout',\n\n projects_and_tasks = 'projects_and_tasks',\n projects = 'projects',\n my_tasks = 'my_tasks',\n\n help = 'help',\n old_help = 'old_help',\n help_submit_ticket = 'help_submit_ticket',\n help_search_knowledge = 'help_search_knowledge',\n help_product_support = 'help_product_support',\n help_help_center = 'help_help_center',\n help_roadmap = 'help_roadmap',\n\n service_request = 'service_request',\n service_request_email_consultation = 'service_request_email_consultation',\n service_request_manual_evaluation = 'service_request_manual_evaluation',\n service_request_validation_testing = 'service_request_validation_testing',\n service_request_view_all_services = 'service_request_view_all_services',\n\n notifications = 'notifications',\n academy = 'academy',\n workspace_switcher = 'workspace_switcher',\n website_app_selector = 'website_app_selector',\n\n common_findings = 'common_findings',\n}\n\nexport interface INavMenuItem {\n id: NavigationItem;\n label: string;\n isAvailable?: boolean;\n isAvailableFn?: (data: { user: IUserServerResponse; packageName: PackageNames }) => boolean;\n displayedOutsideOfNavbar?: boolean;\n isActive?: boolean;\n navTitle?: string;\n isHidden?: boolean;\n overrideRouterLink?: string;\n routerLink?: string;\n externalLink?: string;\n externalLinkFn?: (externalLinkService: ExternalLinkService) => string;\n requiredSecurity?: IRequiredSecurity;\n children?: INavMenuItem[];\n parent?: INavMenuItem;\n iconName?: Icons;\n featureFlag?: string;\n tenantlessOnly?: boolean;\n tenantOnly?: boolean;\n mobileOnly?: boolean;\n mobileModalColorVariant?: DsModalColorVariant;\n restrictByWorkspace?: boolean;\n filters?: INavMenuItemFilter[];\n}\n\nexport interface INavItemFilterArgs {\n isWebDp?: boolean;\n isMobileDp?: boolean;\n appConfigService?: AppConfigService;\n}\n\nexport interface IWorkspacePermission {\n activeMenuItem: INavMenuItem;\n workspacesMenuItem: INavMenuItem;\n workspaceId: string;\n digitalPropertyId: string;\n hasAccess?: boolean;\n}\n\nexport type INavMenuItemFilter = (args: INavItemFilterArgs) => boolean;\n\nexport function webDpFilter(args: INavItemFilterArgs): boolean {\n return args.isWebDp;\n}\n\nexport function mobileDpFilter(args: INavItemFilterArgs): boolean {\n return args.isMobileDp;\n}\n\nexport function isSSOFilter(args: INavItemFilterArgs): boolean {\n return args.appConfigService.isUsingExternalIdp();\n}\n\nexport const NavigationRoutingTree: INavMenuItem[] = SharedCommonUtility.freezeDeep([\n {\n id: NavigationItem.evaluations,\n label: 'evaluations_dropdown_menu_item_label',\n iconName: Icons.UniversalAccess,\n children: [\n {\n id: NavigationItem.manual_evaluations,\n label: 'manual_evaluations_navigation_item_label',\n requiredSecurity: RequiredSecurities.MT_Manual_Audits_Read,\n routerLink: `/${Api.admin}/${Api.manual_audit}`,\n },\n {\n id: NavigationItem.design_evaluations,\n label: 'label_design_review_title',\n requiredSecurity: RequiredSecurities.DE_Administration_Read,\n routerLink: `/${Api.designReviews}`,\n },\n ],\n navTitle: 'accessibility_evaluations',\n },\n {\n id: NavigationItem.organization_settings,\n label: 'organization_settings_dropdown_menu_item_label',\n navTitle: 'organization_settings_dropdown_menu_item_label',\n iconName: Icons.Gear,\n children: [\n {\n id: NavigationItem.organization_settings_users,\n label: 'users',\n requiredSecurity: RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n tenantOnly: true,\n children: [\n {\n id: NavigationItem.organization_settings_all_users,\n label: 'users',\n routerLink: `/${Api.admin}/${Api.userManagement}/${Api.users}`,\n requiredSecurity: RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n tenantOnly: true,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.organization_settings_unassigned_users,\n label: 'unassigned_users',\n routerLink: `/${Api.admin}/${Api.userManagement}/${Api.unassigned_users}`,\n requiredSecurity: RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n tenantOnly: true,\n displayedOutsideOfNavbar: true,\n featureFlag: FeatureFlagCollection.scimFunctionality,\n },\n ],\n },\n {\n id: NavigationItem.organization_settings_user_groups,\n label: 'user_groups',\n requiredSecurity: RequiredSecurities.User_Groups_Read,\n routerLink: `/${Api.admin}/${Api.userGroups}`,\n tenantOnly: true,\n },\n {\n id: NavigationItem.organization_settings_staff_groups,\n label: 'staff_groups',\n requiredSecurity: RequiredSecurities.Staff_Groups_Read,\n routerLink: `/${Api.admin}/${Api.staffGroups}`,\n tenantOnly: true,\n },\n {\n id: NavigationItem.organization_settings_rule_libraries,\n label: 'rule_libraries',\n requiredSecurity: RequiredSecurities.Tenant_Rule_Library_Read,\n routerLink: `/${Api.custom_audit_rules}`,\n tenantOnly: true,\n featureFlag: FeatureFlagCollection.customRulesAndSeverity,\n },\n {\n id: NavigationItem.organization_settings_severities,\n label: 'severities',\n requiredSecurity: RequiredSecurities.CustomSeverities_Read,\n routerLink: `/${Api.custom_severities}`,\n tenantOnly: true,\n featureFlag: FeatureFlagCollection.customSeverities,\n },\n {\n id: NavigationItem.organization_settings_ai,\n label: 'ai',\n requiredSecurity: RequiredSecurities.AI_Features_Read,\n featureFlag: FeatureFlagCollection.artificialIntelligenceOptin,\n routerLink: `/${Api.ai}`,\n tenantOnly: true,\n },\n ],\n },\n {\n id: NavigationItem.tools_and_integrations,\n label: 'tools_and_integrations_navigation_item_label',\n iconName: Icons.Wrench,\n children: [\n {\n id: NavigationItem.userway,\n label: 'userway',\n routerLink: `/${Api.integrations}/${Api.userway}`,\n requiredSecurity: RequiredSecurities.UserWay_Integration_Read,\n },\n {\n id: NavigationItem.issue_tracking,\n label: 'issue_tracking_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.issue_tracking}`,\n requiredSecurity: RequiredSecurities.TI_Issue_Tracking_Basic_Read,\n },\n {\n id: NavigationItem.tools_and_extensions,\n label: 'tools_and_extensions_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.test_automation}`,\n requiredSecurity: RequiredSecurities.TI_Tools_Extensions_Read,\n },\n {\n id: NavigationItem.sdks,\n label: 'sdks_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.testAutomationSdks}`,\n requiredSecurity: RequiredSecurities.SDK_Read,\n featureFlag: FeatureFlagCollection.continuumIntegration,\n },\n {\n id: NavigationItem.api,\n label: 'api_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.api}`,\n requiredSecurity: RequiredSecurities.API_Keys_Read,\n },\n {\n id: NavigationItem.webhooks,\n label: 'webhooks_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.webhooks}`,\n requiredSecurity: RequiredSecurities.Webhook_Read,\n },\n {\n id: NavigationItem.scim,\n label: 'scim_navigation_item_label',\n routerLink: `/${Api.integrations}/${Api.scim}`,\n requiredSecurity: RequiredSecurities.TI_SCIM_Config_Create,\n featureFlag: FeatureFlagCollection.scimFunctionality,\n filters: [isSSOFilter],\n },\n ],\n navTitle: 'tools_and_integrations',\n },\n {\n id: NavigationItem.administration,\n iconName: Icons.FolderGear,\n label: 'administration',\n children: [\n {\n id: NavigationItem.administration_organizations,\n label: 'tenants',\n requiredSecurity: RequiredSecurities.Tenants_Read,\n tenantlessOnly: true,\n children: [\n {\n id: NavigationItem.administration_my_organizations,\n label: 'my_organizations',\n routerLink: `/${Api.admin}/${Api.organizations}/${Api.my}`,\n requiredSecurity: RequiredSecurities.Tenants_Read,\n tenantlessOnly: true,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.administration_all_organizations,\n label: 'all_organizations',\n routerLink: `/${Api.admin}/${Api.organizations}/${Api.all}`,\n requiredSecurity: RequiredSecurities.Tenants_Read,\n tenantlessOnly: true,\n displayedOutsideOfNavbar: true,\n },\n ],\n },\n {\n id: NavigationItem.administration_users,\n label: 'users',\n requiredSecurity: SecurityUtility.mergeRequiredSecurities([\n RequiredSecurities.Global_Users_Read,\n RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n ]),\n children: [\n {\n id: NavigationItem.administration_global_users,\n label: 'global_users',\n routerLink: `/${Api.admin}/${Api.globalUsers}`,\n requiredSecurity: RequiredSecurities.Global_Users_Read,\n tenantlessOnly: true,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.administration_internal_users,\n label: 'internal_users',\n routerLink: `/${Api.admin}/${Api.userManagement}/${Api.internal_users}`,\n requiredSecurity: RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n tenantlessOnly: true,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.administration_admin_groups,\n label: 'admin_groups',\n routerLink: `/${Api.admin}/${Api.userGroups}`,\n requiredSecurity: RequiredSecurities.UM_User_Administration_Read_No_Entity_Level,\n tenantlessOnly: true,\n displayedOutsideOfNavbar: true,\n },\n ],\n },\n ],\n navTitle: 'administration',\n },\n {\n id: NavigationItem.internal_use_only,\n iconName: Icons.Gavel,\n label: 'system_maintenance_dropdown_menu_item_label',\n children: [\n {\n id: NavigationItem.master_library,\n label: 'master_library',\n routerLink: `/${Api.admin}/${Api.master_library}`,\n requiredSecurity: RequiredSecurities.Master_Library_Read,\n tenantlessOnly: true,\n },\n {\n id: NavigationItem.active_scans,\n label: 'active_scans_navigation_item_label',\n routerLink: `/${Api.admin}/${Api.active_scans}`,\n requiredSecurity: RequiredSecurities.Admin_Active_Scans_Read,\n tenantlessOnly: true,\n },\n {\n id: NavigationItem.translations,\n label: 'administrator_translations',\n routerLink: `/${Api.admin}/${Api.translations}`,\n requiredSecurity: RequiredSecurities.Translations_Read,\n tenantlessOnly: true,\n },\n ],\n navTitle: 'system_maintenance_dropdown_menu_item_label',\n },\n {\n id: NavigationItem.organization_dashboard,\n label: 'organization',\n iconName: Icons.Building,\n children: [\n {\n id: NavigationItem.organization_portfolio,\n label: 'organization_portfolio',\n requiredSecurity: RequiredSecurities.Organization_Portfolio_Read,\n featureFlag: FeatureFlagCollection.organizationPortfolio,\n routerLink: `/${Api.organization}/${Api.portfolio}`,\n },\n {\n id: NavigationItem.program_dashboard,\n label: 'program_dashboard',\n requiredSecurity: RequiredSecurities.GR_Organization_Dashboard_Read,\n routerLink: `/${Api.organization}`,\n },\n {\n id: NavigationItem.common_findings,\n label: 'common_findings',\n requiredSecurity: RequiredSecurities.Common_Findings_Read,\n featureFlag: FeatureFlagCollection.commonFindings,\n routerLink: `/${Api.organization}/${Api.commonFindings}`,\n },\n ],\n },\n {\n id: NavigationItem.workspace,\n label: 'sidebar_menu_workspaces', // The workspace dropdown menu items are generated dynamically based on user workspaces\n iconName: Icons.Briefcase,\n mobileModalColorVariant: DsModalColorVariant.LightBlue,\n overrideRouterLink: `/${Api.portfolio}`,\n children: [\n {\n id: NavigationItem.workspace_dashboard,\n label: 'workspace_dashboard_translation_key',\n requiredSecurity: RequiredSecurities.GR_Governance_Read,\n restrictByWorkspace: true,\n routerLink: `/${Api.overview}`,\n },\n {\n id: NavigationItem.websites_and_apps,\n label: 'websites_and_apps_translation_key',\n iconName: Icons.Browser,\n children: [\n {\n id: NavigationItem.websites_and_apps_portfolio,\n label: 'heading_menu_portfolio', // Never displayed, this is just here to comply with translations to remove warning logs\n routerLink: `/${Api.portfolio}`,\n isHidden: true,\n tenantOnly: true,\n },\n {\n id: NavigationItem.websites_and_apps_overview,\n label: 'overview',\n requiredSecurity: RequiredSecurities.GR_Dashboard_Read,\n routerLink: `/${Api.dashboard}`,\n },\n {\n id: NavigationItem.websites_and_apps_findings,\n label: 'website_and_apps_findings_navigation_item_label',\n // TODO: add required security in EAP-32152\n featureFlag: FeatureFlagCollection.digitalAssetFindings,\n routerLink: `/${Api.findings}`,\n },\n {\n id: NavigationItem.websites_and_apps_monitoring,\n label: 'label_monitoring',\n requiredSecurity: RequiredSecurities.GR_Monitoring_Read,\n routerLink: `/${Api.monitoring}`,\n filters: [webDpFilter],\n },\n {\n id: NavigationItem.websites_and_apps_scans,\n label: 'website_and_apps_scans_navigation_item_label',\n isAvailableFn: ({ packageName }: { packageName: PackageNames }): boolean => packageName !== PackageNames.Audit,\n filters: [webDpFilter],\n children: [\n {\n id: NavigationItem.websites_and_apps_scans_page_scans,\n label: 'scans',\n requiredSecurity: RequiredSecurities.AT_Scans_Read,\n routerLink: `/${Api.websitesAndApps}/${Api.scans}/${Api.page_scans}`,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.websites_and_apps_scans_user_flows,\n label: 'user_flows',\n requiredSecurity: RequiredSecurities.Automated_Flows_Read,\n featureFlag: FeatureFlagCollection.userFlows,\n routerLink: `/${Api.websitesAndApps}/${Api.scans}/${Api.user_flows}`,\n filters: [webDpFilter],\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.websites_and_apps_scans_components,\n label: 'match_components',\n requiredSecurity: RequiredSecurities.Component_Matching_Read,\n routerLink: `/${Api.websitesAndApps}/${Api.scans}/${Api.components}`,\n filters: [webDpFilter],\n displayedOutsideOfNavbar: true,\n },\n ],\n },\n {\n id: NavigationItem.websites_and_apps_mobile_scans,\n label: 'website_and_apps_scans_navigation_item_label',\n isAvailableFn: ({ packageName }: { packageName: PackageNames }): boolean => packageName !== PackageNames.Audit,\n filters: [mobileDpFilter],\n children: [\n {\n id: NavigationItem.websites_and_apps_mobile_scans_page_scans,\n label: 'mobile_app_scans',\n requiredSecurity: RequiredSecurities.AT_Mobile_Scans_Read,\n routerLink: `/${Api.websitesAndApps}/${Api.mobile_scans}`,\n displayedOutsideOfNavbar: true,\n },\n ],\n featureFlag: FeatureFlagCollection.mobileAppScans,\n },\n {\n id: NavigationItem.websites_and_apps_mobile_testing_emulator,\n label: 'websites_and_apps_mobile_testing_navigation_item_label',\n filters: [mobileDpFilter],\n children: [\n {\n id: NavigationItem.websites_and_apps_mobile_testing_emulator_app,\n label: 'mobile_testing_emulator_app',\n requiredSecurity: RequiredSecurities.AT_Mobile_Apps_Read,\n routerLink: `/${Api.websitesAndApps}/${Api.mobile_testing_emulator}/${Api.mobile_apps}`,\n },\n {\n id: NavigationItem.websites_and_apps_mobile_testing_emulator_scans,\n label: 'mobile_testing_emulator_scan_results',\n requiredSecurity: RequiredSecurities.AT_Mobile_Emulator_Scans_Read,\n routerLink: `/${Api.websitesAndApps}/${Api.mobile_testing_emulator}/${Api.scans}`,\n },\n ],\n featureFlag: FeatureFlagCollection.mobileTestingEmulator,\n },\n {\n id: NavigationItem.websites_and_apps_manual_evaluations,\n label: 'evaluations_dropdown_menu_item_label',\n requiredSecurity: RequiredSecurities.MT_Manual_Evaluation_Read,\n children: [\n {\n id: NavigationItem.websites_and_apps_manual_evaluations_table,\n label: 'evaluations_dropdown_menu_item_label',\n routerLink: `/${Api.manual_evaluations}`,\n },\n {\n id: NavigationItem.websites_and_apps_manual_evaluations_requests,\n label: 'evaluations_requests',\n routerLink: `/${Api.manual_evaluations}/${Api.requests}`,\n },\n ],\n },\n {\n id: NavigationItem.workspace_design_evaluations,\n label: 'workspace_design_evaluations_navigation_item_label',\n routerLink: `/${Api.designEvaluations}`,\n requiredSecurity: RequiredSecurities.DE_Results_Read,\n },\n {\n id: NavigationItem.websites_and_apps_settings,\n label: 'scan_settings_tooltip_label',\n children: [\n {\n id: NavigationItem.websites_and_apps_environments,\n label: 'environments_label',\n requiredSecurity: RequiredSecurities.Environment_Read,\n featureFlag: FeatureFlagCollection.continuumIntegration,\n routerLink: `/${Api.settings}/${Api.environments}`,\n iconName: Icons.ChartColumn,\n },\n {\n id: NavigationItem.websites_and_apps_scan_rules,\n label: 'scan_rules_label',\n requiredSecurity: RequiredSecurities.Evaluation_Rules_Read,\n routerLink: `/${Api.settings}/${Api.evaluation_rules}`,\n filters: [webDpFilter],\n },\n {\n id: NavigationItem.websites_and_apps_scan_tags,\n label: 'scan_tags_label',\n requiredSecurity: RequiredSecurities.Scan_Tags_Read,\n routerLink: `/${Api.settings}/${Api.scan_tags}`,\n filters: [webDpFilter],\n },\n {\n id: NavigationItem.websites_and_apps_pages,\n label: 'pages',\n requiredSecurity: RequiredSecurities.Pages_Read,\n routerLink: `/${Api.pages}`,\n isAvailableFn: ({ packageName }: { packageName: PackageNames }): boolean => packageName !== PackageNames.Audit,\n },\n ],\n },\n ],\n },\n {\n id: NavigationItem.pdf,\n label: 'pdf_navigation_item_label',\n routerLink: `/${Api.scannableDocuments}`,\n requiredSecurity: RequiredSecurities.PDF_Testing_Read,\n },\n {\n id: NavigationItem.projects_and_tasks,\n label: 'projects_and_tasks',\n children: [\n {\n id: NavigationItem.projects,\n label: 'projects',\n requiredSecurity: RequiredSecurities.PM_Projects_Read,\n routerLink: `/${Api.projects}`,\n displayedOutsideOfNavbar: true,\n },\n {\n id: NavigationItem.my_tasks,\n label: 'my_tasks_label',\n requiredSecurity: RequiredSecurities.PM_Tasks_Read,\n routerLink: `/${Api.myTasks}`,\n displayedOutsideOfNavbar: true,\n },\n ],\n },\n {\n id: NavigationItem.files,\n label: 'files',\n routerLink: `/${Api.documents}`,\n requiredSecurity: RequiredSecurities.Documents_Read,\n },\n ],\n },\n {\n id: NavigationItem.profile,\n label: 'profile_details',\n routerLink: `/${Api.settings}/${Api.profile}`,\n iconName: Icons.User,\n navTitle: 'profile_details',\n },\n {\n id: NavigationItem.logout,\n label: 'logout',\n routerLink: `/${Api.logout}`,\n iconName: Icons.ArrowRightFromBracket,\n },\n {\n id: NavigationItem.notifications,\n label: 'notifications',\n routerLink: `/${Api.notifications}`,\n navTitle: 'notifications',\n iconName: Icons.Bell,\n requiredSecurity: RequiredSecurities.Notifications_Read,\n },\n {\n id: NavigationItem.academy,\n label: 'academy',\n routerLink: `/${Api.academy}`,\n iconName: Icons.GraduationCap,\n requiredSecurity: RequiredSecurities.Academy_Read,\n },\n {\n id: NavigationItem.old_help,\n label: 'label_help',\n iconName: Icons.CircleQuestion,\n children: [\n {\n id: NavigationItem.help_submit_ticket,\n label: 'label_help_submit_ticket',\n iconName: Icons.MessagesQuestion,\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getZendeskSubmitTicketUrl(),\n },\n {\n id: NavigationItem.help_search_knowledge,\n label: 'label_help_search_knowledge',\n iconName: Icons.Book,\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getHelpCenterUrl(),\n },\n ],\n },\n {\n id: NavigationItem.service_request,\n label: 'request_a_service',\n iconName: Icons.MessageArrowUpRight,\n children: [\n // TODO: EAP-30837 Re-add the item once the requirements are returned by the product team.\n // {\n // id: NavigationItem.service_request_email_consultation,\n // label: 'email_consultation',\n // iconName: Icons.UniversalAccess,\n // externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getEmailConsultationFormUrl(),\n // },\n {\n id: NavigationItem.service_request_manual_evaluation,\n label: 'manual_evaluation',\n iconName: Icons.FileMagnifyingGlass,\n externalLinkFn: (externalLinkService: ExternalLinkService) =>\n externalLinkService.getManualEvaluationServiceRequestFormUrl(),\n },\n {\n id: NavigationItem.service_request_validation_testing,\n label: 'validation_testing',\n iconName: Icons.MessageCheck,\n externalLinkFn: (externalLinkService: ExternalLinkService) =>\n externalLinkService.getValidationTestingServiceRequestFormUrl(),\n },\n {\n id: NavigationItem.service_request_view_all_services,\n label: 'view_all_services',\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getZendeskSubmitTicketUrl(),\n },\n ],\n },\n {\n id: NavigationItem.help,\n label: 'label_help',\n iconName: Icons.CircleQuestion,\n children: [\n {\n id: NavigationItem.help_product_support,\n label: 'product_support',\n iconName: Icons.MessagesQuestion,\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getProductSupportFormUrl(),\n },\n {\n id: NavigationItem.help_help_center,\n label: 'help_center',\n iconName: Icons.Book,\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getHelpCenterUrl(),\n },\n {\n id: NavigationItem.help_roadmap,\n label: 'roadmap',\n iconName: Icons.Map,\n externalLinkFn: (externalLinkService: ExternalLinkService) => externalLinkService.getProductRoadmapUrl(),\n },\n ],\n },\n]);\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Event, NavigationEnd, Params, Route, Router } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, withLatestFrom } from 'rxjs/operators';\nimport { cloneDeep, find as _find, isEqual } from 'lodash';\nimport { DsBreakpoints } from '@levelaccess/design-system';\n\nimport { NavigationItem, NavigationRoutingTree, INavMenuItem, INavMenuItemFilter, INavItemFilterArgs } from './nav-structure';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { UserAclService } from '../user-acl.service';\nimport { FeatureFlagService } from '../feature-flag/feature-flag.service';\nimport { AclSecurityAdapter } from '../acl.service';\nimport { AngularUtility } from '../../utility/angular.utility';\nimport { Api } from '../../../../shared/constants/api';\nimport { AppConfigService } from '../app-config.service';\nimport { WindowService } from '../window.service';\nimport { TenantPackageService } from '../tenant-package.service';\nimport { UserService } from '../user.service';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { $user } from '../../../../shared/constants/user';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../shared/utils/linked-property.utility';\nimport { UserDigitalPropertyService } from '../user-digital-property.service';\nimport { SecurityEntityLevel } from '../../../../shared/constants/security-group';\nimport { IRequiredSecurity } from '../../../../shared/interfaces/security.interface';\n\ntype InternalMenusObservable = [\n user: IUserServerResponse,\n params: Params,\n isWebDp: boolean,\n isMobileDp: boolean,\n adapter: AclSecurityAdapter,\n isMobileView: boolean,\n featureFlagsChanged: void,\n];\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavService {\n private lastActivatedRoute$: Observable;\n private topLevelMenuItems$: Observable;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private userAclService: UserAclService,\n private featureFlagService: FeatureFlagService,\n private appConfigService: AppConfigService,\n private windowService: WindowService,\n private userService: UserService,\n private tenantPackageService: TenantPackageService,\n private userDigitalPropertyService: UserDigitalPropertyService,\n ) {\n this.createInternalMenusObservable();\n this.subscribeToRouteChanges();\n }\n\n private createInternalMenusObservable(): void {\n this.topLevelMenuItems$ = combineLatest([\n this.userService.userDataChanged$,\n this.activatedRoute.queryParams,\n this.userDigitalPropertyService.isWebDigitalProperty$,\n this.userDigitalPropertyService.isMobileDigitalProperty$,\n this.userAclService.createCheckAccessForCurrentUser(),\n this.windowService.observeBreakpoint(DsBreakpoints.Medium),\n this.featureFlagService.flagsChange$,\n ]).pipe(\n map(([user, params, isWebDp, isMobileDp, adapter, isMobileView, _]: InternalMenusObservable): INavMenuItem[] => {\n const setAvailableStateAndParent = (item: INavMenuItem, parent?: INavMenuItem): INavMenuItem => {\n const mappedItem: INavMenuItem = {\n ...item,\n isAvailable: true,\n children: [],\n parent: SharedCommonUtility.notNullishOrEmpty(parent) ? parent : undefined,\n };\n\n if (mappedItem.tenantlessOnly) {\n mappedItem.isAvailable = !this.appConfigService.isTenantEnabled();\n }\n\n if (mappedItem.isAvailable && mappedItem.tenantOnly) {\n mappedItem.isAvailable = this.appConfigService.isTenantEnabled();\n }\n\n if (mappedItem.isAvailable && SharedCommonUtility.notNullishOrEmpty(mappedItem.featureFlag)) {\n const negated: boolean = mappedItem.featureFlag[0] === '!';\n const featureFlag: string = negated ? mappedItem.featureFlag.slice(1) : mappedItem.featureFlag;\n const value: boolean = this.featureFlagService.variation(featureFlag, true);\n\n mappedItem.isAvailable = negated ? !value : value;\n }\n\n if (mappedItem.isAvailable && SharedCommonUtility.notNullish(item.requiredSecurity)) {\n const isAdmin: boolean = !this.appConfigService.isTenantEnabled();\n\n mappedItem.isAvailable = adapter\n .useFunctionalActions(mappedItem.requiredSecurity.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(mappedItem.requiredSecurity, isAdmin)\n .check();\n adapter.reset();\n }\n\n if (mappedItem.isAvailable && !isMobileView && mappedItem.mobileOnly) {\n mappedItem.isAvailable = false;\n }\n\n if (mappedItem.isAvailable && SharedCommonUtility.notNullish(item.isAvailableFn)) {\n mappedItem.isAvailable = item.isAvailableFn({ user, packageName: this.tenantPackageService.tenantPackage });\n }\n\n if (mappedItem.isAvailable && item.restrictByWorkspace) {\n const linkedPropertyData: ILinkedPropertyData = LinkedPropertyUtility.fromLinkedPropertyQueryParam(params);\n mappedItem.isAvailable = user?.[$user.workspacesIds]?.includes(linkedPropertyData[Api.workspaceId]);\n }\n\n if (mappedItem.isAvailable && SharedCommonUtility.notNullishOrEmpty(mappedItem.filters)) {\n const filterArgs: INavItemFilterArgs = {\n isWebDp,\n isMobileDp,\n appConfigService: this.appConfigService,\n };\n mappedItem.isAvailable = mappedItem.filters.every((navMenuItemFilter: INavMenuItemFilter) => {\n return navMenuItemFilter(filterArgs);\n });\n }\n\n if (mappedItem.isAvailable && SharedCommonUtility.notNullishOrEmpty(item.children)) {\n mappedItem.children = item.children.map(\n (child: INavMenuItem): INavMenuItem => setAvailableStateAndParent(child, mappedItem),\n );\n const firstAvailableChild: INavMenuItem = mappedItem.children.find(\n (child: INavMenuItem): boolean =>\n child.isAvailable && (Boolean(child.routerLink) || Boolean(child.externalLink) || Boolean(child.externalLinkFn)),\n );\n const hasOverrideLink: boolean =\n Boolean(mappedItem.overrideRouterLink) ??\n mappedItem.children.some(\n (child: INavMenuItem): boolean => child.isAvailable && child.routerLink === mappedItem.overrideRouterLink,\n );\n\n if (SharedCommonUtility.notNullish(firstAvailableChild)) {\n mappedItem.isAvailable = true;\n\n // if the nav item has children, points its routerLink to the routerLink of its first available child by default\n mappedItem.routerLink = hasOverrideLink ? mappedItem.overrideRouterLink : firstAvailableChild.routerLink;\n } else {\n mappedItem.isAvailable = SharedCommonUtility.notNullish(mappedItem.routerLink);\n }\n }\n\n return mappedItem;\n };\n return this.navigationRoutingTree.map((item: INavMenuItem): INavMenuItem => setAvailableStateAndParent(item));\n }),\n AngularUtility.shareRef(),\n );\n }\n\n private subscribeToRouteChanges(): void {\n const onlyWhenNavigationEnds = (event: Event): event is NavigationEnd => {\n return event instanceof NavigationEnd;\n };\n\n const getRoute = (value: [ActivatedRoute, INavMenuItem[]], _: number): ActivatedRoute => {\n let _route: ActivatedRoute = value[0];\n const topLevelMenuItems: INavMenuItem[] = value[1];\n\n const getRouteMenuItem = (menuItems: INavMenuItem[], route: string): INavMenuItem => {\n return menuItems.reduce((found: INavMenuItem, item: INavMenuItem): INavMenuItem => {\n if (found) {\n return found;\n }\n if (item.children && item.children.length > 0) {\n return getRouteMenuItem(item.children, route);\n }\n return item.routerLink === route ? item : null;\n }, null);\n };\n\n while (_route.firstChild) {\n const path: string = this.getFullPathFromActivatedRoute(_route);\n if (SharedCommonUtility.isNullish(path) || SharedCommonUtility.isNullishOrEmpty(_route.pathFromRoot)) {\n _route = _route.firstChild;\n continue;\n }\n\n const routeMenuItem: INavMenuItem = getRouteMenuItem(topLevelMenuItems, path);\n if (SharedCommonUtility.notNullish(routeMenuItem) && !routeMenuItem.isAvailable) {\n const firstAvailableRoute: INavMenuItem = routeMenuItem.parent.children.find(\n (child: INavMenuItem): boolean => child.isAvailable,\n );\n if (SharedCommonUtility.notNullish(firstAvailableRoute)) {\n this.router.navigate([firstAvailableRoute.routerLink]).then();\n }\n }\n _route = _route.firstChild;\n }\n return _route;\n };\n\n this.lastActivatedRoute$ = this.router.events.pipe(\n filter(onlyWhenNavigationEnds),\n map((): ActivatedRoute => this.activatedRoute),\n withLatestFrom(this.topLevelMenuItems$),\n map(getRoute),\n startWith(this.activatedRoute),\n AngularUtility.shareRef(),\n );\n }\n\n private getFullPathFromActivatedRoute(route: ActivatedRoute): string {\n return (\n '/' +\n route?.pathFromRoot\n ?.filter((v: ActivatedRoute): Route => v.routeConfig)\n .map((v: ActivatedRoute): string => v.routeConfig.path)\n .join('/')\n );\n }\n\n private getAvailableSubmenusForItem(triggerItem: NavigationItem, selectedItem: INavMenuItem): INavMenuItem[] {\n const findSubmenuItem = (item: INavMenuItem): INavMenuItem => {\n if (SharedCommonUtility.isNullish(item)) {\n return undefined;\n }\n if (item.id === triggerItem) {\n return item;\n }\n\n const activeChildren: INavMenuItem[] = item.children?.filter((child: INavMenuItem): boolean => child.isActive) ?? [];\n for (const child of activeChildren) {\n const foundItem: INavMenuItem = findSubmenuItem(child);\n if (SharedCommonUtility.notNullishOrEmpty(foundItem)) {\n return foundItem;\n }\n }\n return undefined;\n };\n\n const menuBarItem: INavMenuItem = findSubmenuItem(selectedItem);\n\n return menuBarItem?.children?.filter((child: INavMenuItem): boolean => child.isAvailable) ?? [];\n }\n\n public getAvailableSubmenuItems$(triggerItem: NavigationItem): Observable {\n return this.activeTopLevelMenuItem$().pipe(\n map((selectedItem: INavMenuItem) => this.getAvailableSubmenusForItem(triggerItem, selectedItem)),\n );\n }\n\n public get navigationRoutingTree(): INavMenuItem[] {\n return NavigationRoutingTree;\n }\n\n /**\n * Returns the active top level menu item.\n * Is considered active if itself or any of its descendants matches the active route.\n *\n */\n public activeTopLevelMenuItem$(): Observable {\n return combineLatest([this.lastActivatedRoute$, this.topLevelMenuItems$]).pipe(\n map(([_, topLevelMenuItems]: [ActivatedRoute, INavMenuItem[]]): INavMenuItem => {\n const url: string = this.router.routerState.snapshot.url;\n const topLevelMenuItemsMarked: INavMenuItem[] = cloneDeep(topLevelMenuItems);\n const checkIfMenuItemIsActiveAndMarkIt = (menuItems: INavMenuItem[]): void => {\n let bestMatch: {\n item: INavMenuItem;\n segmentCount: number;\n } | null = null;\n\n const processMenuItem = (menuItem: INavMenuItem): void => {\n const urlWithoutParams: string = url.split('?')[0];\n const urlSegments: string[] = urlWithoutParams.split('/').filter(Boolean);\n const menuItemSegments: string[] = menuItem.routerLink?.split('/').filter(Boolean) || [];\n\n if (SharedCommonUtility.notNullishOrEmpty(menuItem.children)) {\n checkIfMenuItemIsActiveAndMarkIt(menuItem.children);\n const hasActiveChild = menuItem.children.some((child: INavMenuItem) => child.isActive);\n menuItem.isActive = hasActiveChild;\n return;\n }\n\n const isExactMatch =\n menuItem.routerLink && urlSegments.length === menuItemSegments.length && urlWithoutParams === menuItem.routerLink;\n\n const isPartialMatch =\n menuItem.routerLink &&\n urlSegments.length >= menuItemSegments.length &&\n menuItemSegments.every((segment: string, index: number) => urlSegments[index] === segment);\n\n if (menuItem.isAvailable && (isExactMatch || isPartialMatch)) {\n if (!bestMatch || menuItemSegments.length > bestMatch.segmentCount) {\n bestMatch = {\n item: menuItem,\n segmentCount: menuItemSegments.length,\n };\n }\n }\n };\n\n menuItems.forEach((menuItem: INavMenuItem): void => {\n menuItem.isActive = false;\n processMenuItem(menuItem);\n });\n\n if (bestMatch) {\n bestMatch.item.isActive = true;\n }\n };\n\n checkIfMenuItemIsActiveAndMarkIt(topLevelMenuItemsMarked);\n\n return topLevelMenuItemsMarked.find((topLevelMenuItem: INavMenuItem) => topLevelMenuItem.isActive);\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public activeSecondLevelMenuItem$(): Observable {\n const toggleAvailableStateForPortfolio = (secondLevelNavMenuItems: INavMenuItem[]): void => {\n if (SharedCommonUtility.isNullishOrEmpty(secondLevelNavMenuItems)) {\n return;\n }\n\n const isPortfolioView: boolean = this.router.routerState.snapshot.url.startsWith(`/${Api.portfolio}`);\n const websitesAndAppNavigationItem: INavMenuItem = secondLevelNavMenuItems.find(\n (secondLevelNavMenuItem: INavMenuItem): boolean => secondLevelNavMenuItem.id === NavigationItem.websites_and_apps,\n );\n\n if (SharedCommonUtility.notNullish(websitesAndAppNavigationItem)) {\n const websitesAndAppsChildren: INavMenuItem[] = websitesAndAppNavigationItem.children ?? [];\n\n websitesAndAppsChildren.map((websitesAndAppsChild: INavMenuItem): void => {\n const isPortfolio: boolean = isPortfolioView && websitesAndAppsChild.id === NavigationItem.websites_and_apps_portfolio;\n const isNotPortfolio: boolean =\n !isPortfolioView && websitesAndAppsChild.id !== NavigationItem.websites_and_apps_portfolio;\n websitesAndAppsChild.isAvailable = websitesAndAppsChild.isAvailable && (isPortfolio || isNotPortfolio);\n });\n }\n };\n\n return this.activeTopLevelMenuItem$().pipe(\n map((activeTopLevelMenuItem: INavMenuItem) => {\n const secondLevelNavMenuItems: INavMenuItem[] = activeTopLevelMenuItem?.children ?? [];\n toggleAvailableStateForPortfolio(secondLevelNavMenuItems);\n return secondLevelNavMenuItems.find((secondLevelMenuItem: INavMenuItem) => secondLevelMenuItem.isActive);\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public activeThirdLevelMenuItem$(): Observable {\n return this.activeSecondLevelMenuItem$().pipe(\n map((activeSecondLevelMenuItem: INavMenuItem): INavMenuItem => {\n const thirdLevelNavMenuItems: INavMenuItem[] = activeSecondLevelMenuItem?.children ?? [];\n let activeThirdLevelMenuItem: INavMenuItem = thirdLevelNavMenuItems.find(\n (thirdLevelNavMenuItem: INavMenuItem): boolean => thirdLevelNavMenuItem.isActive,\n );\n if (SharedCommonUtility.notNullishOrEmpty(activeThirdLevelMenuItem?.children)) {\n activeThirdLevelMenuItem =\n activeThirdLevelMenuItem.children.find((thirdLevelChild: INavMenuItem): boolean => thirdLevelChild.isActive) ??\n activeThirdLevelMenuItem;\n }\n return activeThirdLevelMenuItem;\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public activeMenuItemForWorkspaceSwitcher$(): Observable {\n type IWorkspaceSwitcherProps = [INavMenuItem[], INavMenuItem, INavMenuItem, INavMenuItem];\n return combineLatest([\n this.getTopLevelMenuItems$([NavigationItem.workspace]),\n this.activeTopLevelMenuItem$(),\n this.activeSecondLevelMenuItem$(),\n this.activeThirdLevelMenuItem$(),\n ]).pipe(\n distinctUntilChanged(isEqual),\n map(\n ([\n workspacesMenuItem,\n activeTopLevelMenuItem,\n activeSecondLevelMenuItem,\n activeThirdLevelMenuItem,\n ]: IWorkspaceSwitcherProps): INavMenuItem => {\n if (activeTopLevelMenuItem?.id !== NavigationItem.workspace) {\n return workspacesMenuItem?.[0];\n } else if (\n !SharedCommonUtility.isStringEmpty(activeThirdLevelMenuItem?.routerLink) &&\n activeThirdLevelMenuItem?.isAvailable\n ) {\n return activeThirdLevelMenuItem;\n } else if (\n !SharedCommonUtility.isStringEmpty(activeSecondLevelMenuItem?.routerLink) &&\n activeSecondLevelMenuItem?.isAvailable\n ) {\n return activeSecondLevelMenuItem;\n } else if (\n !SharedCommonUtility.isStringEmpty(activeTopLevelMenuItem?.routerLink) &&\n activeTopLevelMenuItem?.isAvailable\n ) {\n return activeTopLevelMenuItem;\n }\n\n return workspacesMenuItem?.[0];\n },\n ),\n AngularUtility.shareRef(),\n );\n }\n\n public hasAccessToMenuItemInWorkspace$(\n menuItem: INavMenuItem,\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n return this.userAclService.createCheckAccessForCurrentUser().pipe(\n map((adapter: AclSecurityAdapter): boolean => {\n if (SharedCommonUtility.isNullish(menuItem?.requiredSecurity)) {\n return true;\n }\n\n const requiredSecurity: IRequiredSecurity = menuItem.requiredSecurity;\n const isAdmin: boolean = !this.appConfigService.isTenantEnabled();\n\n if (requiredSecurity.entityLevel === SecurityEntityLevel.workspace) {\n return adapter\n .useRequiredSecurity(requiredSecurity, isAdmin)\n .useFunctionalActions(requiredSecurity.functionalActions)\n .useWorkspaceId(workspaceId)\n .check();\n } else if (requiredSecurity.entityLevel === SecurityEntityLevel.digitalProperty) {\n return adapter\n .useRequiredSecurity(requiredSecurity, isAdmin)\n .useFunctionalActions(requiredSecurity.functionalActions)\n .useWorkspaceId(workspaceId)\n .useDigitalPropertyId(digitalPropertyId)\n .check();\n }\n\n return true;\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public getTopLevelMenuItems$(ids: NavigationItem[] = []): Observable {\n const filterMenuItemsByIds = (menuItem: INavMenuItem): boolean =>\n SharedCommonUtility.isNullishOrEmpty(ids) || ids.includes(menuItem.id);\n\n return this.topLevelMenuItems$.pipe(\n map((topLevelMenuItems: INavMenuItem[]): INavMenuItem[] => topLevelMenuItems.filter(filterMenuItemsByIds)),\n );\n }\n\n /**\n * Determines if the active subtree in the navigation tree has any of the items in the given navItemsIdsToCheck\n * list.\n *\n * @param navItemsIdsToCheck Ids of the navigation items to check in the active subtree of the navigation tree.\n */\n public getNavItemInTheActiveSubtree$(navItemsIdsToCheck: NavigationItem[]): Observable {\n const navItemsIdsToCheckSet: Set = new Set(navItemsIdsToCheck);\n\n const findIfNavItemIsInTheActiveSubtree = (activeNavItem: INavMenuItem): INavMenuItem | null => {\n if (navItemsIdsToCheckSet.has(activeNavItem.id)) {\n return activeNavItem;\n }\n\n const activeChild: INavMenuItem = _find(activeNavItem.children ?? [], 'isActive');\n if (SharedCommonUtility.notNullish(activeChild)) {\n return findIfNavItemIsInTheActiveSubtree(activeChild);\n }\n\n return null;\n };\n\n return this.activeTopLevelMenuItem$().pipe(\n map(\n (activeTopLevelMenuItem?: INavMenuItem): INavMenuItem =>\n SharedCommonUtility.notNullish(activeTopLevelMenuItem)\n ? findIfNavItemIsInTheActiveSubtree(activeTopLevelMenuItem)\n : null,\n ),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NotificationPosition, NotificationType } from '../models/notification.model';\nimport { CommonUtility } from '../utility/common.utility';\nimport { INotification, INotificationActionConfig } from '../interfaces/notification.interface';\n\n@Injectable()\nexport class NotificationService {\n private notification: Subject;\n\n constructor() {\n this.notification = new Subject();\n }\n\n private createMessage(notificationParam: INotification): void | Notification {\n const notification: INotification = {\n id: CommonUtility.createUniqueDOMId(),\n keepAfterRouteChange: false,\n keepOnlyOne: true,\n message: null,\n position: NotificationPosition.Toast,\n type: NotificationType.Info,\n header: undefined,\n ...notificationParam,\n };\n\n this.notification.next(notification);\n }\n\n public getNotification(): Observable {\n return this.notification.asObservable();\n }\n\n public success(\n message: string | SafeHtml,\n position: NotificationPosition,\n keepAfterRouteChange?: boolean,\n id?: string,\n keepOnlyOne?: boolean,\n keepHtml?: boolean,\n ): void {\n this.createMessage({\n position,\n message,\n type: NotificationType.Success,\n keepAfterRouteChange,\n id,\n keepOnlyOne,\n keepHtml,\n });\n }\n\n public actionableSuccess(message: SafeHtml, actionConfig: INotificationActionConfig): void {\n this.createMessage({\n message,\n type: NotificationType.Success,\n shouldTrapFocus: true,\n actionConfig,\n });\n }\n\n public error(\n message: string | SafeHtml,\n position: NotificationPosition,\n keepAfterRouteChange?: boolean,\n id?: string,\n keepOnlyOne?: boolean,\n keepHtml?: boolean,\n ): void {\n this.createMessage({\n position,\n message,\n type: NotificationType.Error,\n keepAfterRouteChange,\n id,\n keepOnlyOne,\n keepHtml,\n });\n }\n\n public info(notification: INotification): void {\n this.createMessage({ ...notification, type: NotificationType.Info });\n }\n\n public warn(\n message: string | SafeHtml,\n position: NotificationPosition,\n keepAfterRouteChange?: boolean,\n id?: string,\n keepOnlyOne?: boolean,\n keepHtml?: boolean,\n ): void {\n this.createMessage({\n message,\n type: NotificationType.Warning,\n keepAfterRouteChange,\n id,\n keepOnlyOne,\n keepHtml,\n });\n }\n\n public inlineMessage(message: string, id?: string): void {\n this.createMessage({\n position: NotificationPosition.Inline,\n message,\n type: NotificationType.Info,\n keepAfterRouteChange: true,\n id,\n });\n }\n\n public clear(): void {\n this.notification.next(null);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { ApiHeaderOption, ApiQueryOption } from '../../../../shared/constants/api';\nimport { IExistsResponse } from '../../../../shared/interfaces/common.interface';\nimport { IPage, IPagesResponse } from '../../../../shared/interfaces/page.interface';\nimport { $page } from '../../../../shared/constants/page';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PageApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pages\n public getPages(\n workspaceId: string,\n digitalPropertyId: string,\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n mustContainUrl: boolean = false,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages()\n .getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params[ApiQueryOption.limit] = String(limit);\n }\n\n if (typeof skip === 'number') {\n params[ApiQueryOption.skip] = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if (typeof direction === 'string') {\n params[ApiQueryOption.direction] = direction;\n }\n\n if (term?.length > 0) {\n params[ApiQueryOption.term] = window.encodeURIComponent(term.trim());\n }\n\n params.mustContainUrl = String(mustContainUrl);\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pagess/:scanPointId\n public getPage(workspaceId: string, digitalPropertyId: string, scanPointId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages(scanPointId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pages\n public createPage(workspaceId: string, digitalPropertyId: string, formData: FormData): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages()\n .getApiUrl();\n\n return this.httpClient.post(url, formData);\n }\n\n // PUT /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pages/:scanPointId\n public updatePage(\n workspaceId: string,\n digitalPropertyId: string,\n scanPointId: string,\n updateData: FormData,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages(scanPointId)\n .getApiUrl();\n\n return this.httpClient.put(url, updateData);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pages/exists?name=:scanPointName\n public pageExists(\n workspaceId: string,\n digitalPropertyId: string,\n pageName: string,\n options: { skipLoader: boolean } = { skipLoader: false },\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages()\n .exists()\n .getApiUrl();\n\n return this.httpClient.get(url, {\n params: new HttpParams({ fromObject: { [$page.name]: pageName } }),\n headers: {\n [ApiHeaderOption.skipLoader]: String(options.skipLoader),\n },\n });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/pages?name=:scanPointName\n public pageExistsByURL(workspaceId: string, digitalPropertyId: string, pageURL: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .pages()\n .exists()\n .getApiUrl();\n\n return this.httpClient.get(url, {\n params: new HttpParams({ fromObject: { [$page.url]: pageURL } }),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, AsyncValidatorFn, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { debounceTime, map, switchMap, take } from 'rxjs/operators';\n\nimport { PageApi } from './rest/page.api';\nimport { DEBOUNCE_TIME } from '../shared/constants';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { IExistsResponse } from '../../../shared/interfaces/common.interface';\nimport { IPage, IPagesResponse } from '../../../shared/interfaces/page.interface';\nimport { $page, $pageImage, DEFAULT_PAGE_SCREENSHOT_ALT_TEXT } from '../../../shared/constants/page';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PageService {\n private validateUniqueNameSubject$: BehaviorSubject = new BehaviorSubject(null);\n\n public constructor(private pageApi: PageApi) {}\n\n public getPages(\n workspaceId: string,\n digitalPropertyId: string,\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n mustContainUrl: boolean = false,\n ): Observable {\n const pagesResponse: Observable = this.pageApi.getPages(\n workspaceId,\n digitalPropertyId,\n skip,\n limit,\n term,\n sortBy,\n direction,\n mustContainUrl,\n );\n\n return pagesResponse.pipe(\n map((response: IPagesResponse): IPagesResponse => {\n return { ...response, pages: response.pages?.map(this.fillDefaultAltText.bind(this)) };\n }),\n );\n }\n\n public getPage(workspaceId: string, digitalPropertyId: string, pageId: string): Observable {\n const pageResponse: Observable = this.pageApi.getPage(workspaceId, digitalPropertyId, pageId);\n return pageResponse.pipe(map(this.fillDefaultAltText));\n }\n\n public createPage(workspaceId: string, digitalPropertyId: string, formData: FormData): Observable {\n return this.pageApi.createPage(workspaceId, digitalPropertyId, formData);\n }\n\n public updatePage(workspaceId: string, digitalPropertyId: string, pageId: string, updateData: FormData): Observable {\n return this.pageApi.updatePage(workspaceId, digitalPropertyId, pageId, updateData);\n }\n\n public pageExists(\n workspaceId: string,\n digitalPropertyId: string,\n pageName: string,\n options: { skipLoader: boolean } = { skipLoader: false },\n ): Observable {\n return this.pageApi.pageExists(workspaceId, digitalPropertyId, pageName, options);\n }\n\n public pageExistsByURL(workspaceId: string, digitalPropertyId: string, pageURL: string): Observable {\n return this.pageApi.pageExistsByURL(workspaceId, digitalPropertyId, pageURL);\n }\n\n public validateNameUniqueness(\n workspaceId: string,\n dpId: string,\n exceptionThunk: () => string = (): string => '',\n ): AsyncValidatorFn {\n return (control: AbstractControl): Observable => {\n if (SharedCommonUtility.isNullishOrEmpty(control.value)) {\n return of(null);\n }\n\n if (control.value?.trim() === exceptionThunk()) {\n return of(null);\n }\n\n const result: Observable = this.validateUniqueNameSubject$.pipe(\n debounceTime(DEBOUNCE_TIME),\n take(1),\n switchMap(this.pageExists.bind(this, workspaceId, dpId, control.value?.trim(), { skipLoader: true })),\n map((response: IExistsResponse): ValidationErrors | null => {\n return response.exists === true ? { unique: true } : null;\n }),\n );\n\n this.validateUniqueNameSubject$.next(null);\n return result;\n };\n }\n\n private fillDefaultAltText(page: IPage): IPage {\n if (SharedCommonUtility.isNullish(page[$page.screenshot])) {\n return page;\n }\n\n return {\n ...page,\n screenshot: {\n ...page[$page.screenshot],\n [$pageImage.altText]: page[$page.screenshot][$pageImage.altText] || DEFAULT_PAGE_SCREENSHOT_ALT_TEXT,\n },\n };\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ApiHeaderOption } from '../../../../shared/constants/api';\nimport {\n IDeleteProjectValidationResult,\n IProject,\n IProjectWithOwner,\n IProjectKeyExistsResponse,\n} from '../../../../shared/interfaces/project.interface';\nimport {\n IProjectCreateRequest,\n IProjectUpdateRequest,\n IProjectConnectIssueTrackingRequest,\n} from '../../../../shared/interfaces/project.requests.interface';\nimport {\n IGetUserTasks,\n ITask,\n ITaskComment,\n ITaskUserComment,\n ITaskWithLinkedFindingsAndAttachments,\n ITaskWithProject,\n ITasksSummaryByDp,\n} from '../../../../shared/interfaces/task.interface';\nimport {\n IDownloadProjectTasksFilterRequest,\n IGetProjectTasks,\n ITaskCreateFromSuccessCriteriaRequest,\n ITaskCreateRequest,\n ITaskFilterRequest,\n ITaskUserCommentCreateRequest,\n} from '../../../../shared/interfaces/task.requests.interface';\nimport { ResourceUtility } from '../../utility/resource.utility';\nimport { RestBuilder } from '../helpers/rest.builder';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectsRestAPI {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // POST /workspaces/:workspaceId/projects\n public createProject(workspaceId: string, project: IProjectCreateRequest): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects().getApiUrl();\n return this.httpClient.post(url, project);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/tasks\n public createTask(workspaceId: string, projectId: string, task: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks().getApiUrl();\n\n return this.httpClient.post(url, task);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/tasks/bulk\n public createTasks(workspaceId: string, projectId: string, tasks: ITaskCreateRequest[]): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks().bulk().getApiUrl();\n\n return this.httpClient.post(url, tasks);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/tasks/successCriterias/bulk\n public createTasksForSuccessCriterias(\n workspaceId: string,\n projectId: string,\n request: ITaskCreateFromSuccessCriteriaRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .tasks()\n .successCriteria()\n .bulk()\n .getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // PUT /workspaces/:workspaceId/projects/:projectId/tasks/:taskId\n public editTask(workspaceId: string, projectId: string, taskId: string, task: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks(taskId).getApiUrl();\n return this.httpClient.put(url, task);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId\n public updateProject(\n workspaceId: string,\n projectId: string,\n project: IProjectUpdateRequest | IProjectConnectIssueTrackingRequest, // TODO EAP-32189: revisit service setup in the backend to validate this use case\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).getApiUrl();\n return this.httpClient.post(url, project);\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId/tasks\n public getProjectTasks(\n workspaceId: string,\n projectId: string,\n filters: ITaskFilterRequest,\n skipLoader?: boolean,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks().getApiUrl();\n\n let params: HttpParams = new HttpParams();\n for (const [field, value] of Object.entries(filters)) {\n params = params.set(field, value);\n }\n\n return this.httpClient.get(url, {\n params: params,\n headers: {\n [ApiHeaderOption.skipLoader]: skipLoader === true ? 'true' : 'false',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/projects/tasks\n public getAllProjectTasks(workspaceId: string, filters: ITaskFilterRequest): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects().tasks().getApiUrl();\n\n let params: HttpParams = new HttpParams();\n for (const [field, value] of Object.entries(filters)) {\n params = params.set(field, value);\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspaces/:workspaceId/projects/validate-tasks/digital-properties/summary\n public getTasksSummaryByDp(workspaceId: string, filters: ITaskFilterRequest): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects()\n .validateTasks()\n .digitalProperties()\n .summary()\n .getApiUrl();\n\n let params: HttpParams = new HttpParams();\n for (const [field, value] of Object.entries(filters)) {\n params = params.set(field, value);\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspaces/:workspaceId/projects\n public getProjects(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId/tasks/:taskId\n public getProjectTask(\n workspaceId: string,\n projectId: string,\n taskId: string,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks(taskId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/projects/:projectId/tasks/:taskId\n public deleteProjectTask(workspaceId: string, projectId: string, taskId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks(taskId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // DELETE /workspaces/:workspaceId/projects/:projectId/tasks\n public deleteProjectTasks(workspaceId: string, projectId: string, taskIds: string[]): Observable {\n const httpOptions = {\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\n body: { taskIds: taskIds },\n };\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks().getApiUrl();\n\n return this.httpClient.delete(url, httpOptions);\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId/tasks/:taskId/comments\n public getTaskComments(workspaceId: string, projectId: string, taskId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .tasks(taskId)\n .comments()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/tasks/:taskId/comments\n public createTaskComment(\n workspaceId: string,\n projectId: string,\n taskId: string,\n comment: ITaskUserCommentCreateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .tasks(taskId)\n .comments()\n .getApiUrl();\n\n return this.httpClient.post(url, comment);\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId\n public getProject(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/projects/keys/:keyId\n public projectKeyExists(workspaceId: string, projectKey: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects().key(projectKey).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/projects/:projectId\n public deleteProject(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // PUT /workspaces/:workspaceId/projects/:projectId/archive\n public archiveProject(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).archive().getApiUrl();\n\n return this.httpClient.put(url, {});\n }\n\n // PUT /workspaces/:workspaceId/projects/:projectId/restore\n public restoreProject(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).restore().getApiUrl();\n\n return this.httpClient.put(url, {});\n }\n\n // GET /workspaces/:workspaceId/project/:projectId/archivable\n public isProjectArchivable(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).archivable().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/project/:projectId/deletable\n public validateProjectDeletion(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).deletable().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/projects/:projectId/tasks/download\n public downloadProjectTasks(\n workspaceId: string,\n projectId: string,\n filters: IDownloadProjectTasksFilterRequest = {},\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).tasks().download().getApiUrl();\n return this.httpClient\n .post(url, filters, { observe: 'response', responseType: 'arraybuffer' })\n .pipe(map(ResourceUtility.downloadResponse));\n }\n\n // GET /workspaces/:workspaceId/my-tasks\n public getMyTasks(workspaceId: string, filters: ITaskFilterRequest): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).myTasks().getApiUrl();\n\n let params: HttpParams = new HttpParams();\n for (const [field, value] of Object.entries(filters)) {\n params = params.set(field, value);\n }\n\n return this.httpClient.get(url, { params: params });\n }\n\n // GET /workspaces/:workspaceId/projects/:projectId/issue-integration-statuses\n public getUsedIssueTrackingStatuses(workspaceId: string, projectId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .projects(projectId)\n .issueTrackingIssueStatuses()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/projects/validate-tasks\n public validateTasks(workspaceId: string, formData: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects().validateTasks().getApiUrl();\n return this.httpClient.post(url, formData);\n }\n\n public getTaskProjectId(workspaceId: string, projectId: string): Observable<{ taskProjectId: string }> {\n const url: string = this.restBuilder.create().workspaces(workspaceId).projects(projectId).taskProjectId().getApiUrl();\n return this.httpClient.post<{ taskProjectId: string }>(url, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { $project } from '../../../shared/constants/project';\n\nimport {\n IDeleteProjectValidationResult,\n IProject,\n IProjectWithOwner,\n IProjectKeyExistsResponse,\n} from '../../../shared/interfaces/project.interface';\nimport {\n IProjectCreateRequest,\n IProjectUpdateRequest,\n IProjectConnectIssueTrackingRequest,\n} from '../../../shared/interfaces/project.requests.interface';\nimport {\n IGetUserTasks,\n ITask,\n ITaskComment,\n ITasksSummaryByDp,\n ITaskUserComment,\n ITaskWithLinkedFindingsAndAttachments,\n ITaskWithProject,\n ITaskWithTargetStatesAndFindings,\n TaskSearchFields,\n} from '../../../shared/interfaces/task.interface';\nimport {\n IDownloadProjectTasksFilterRequest,\n IGetProjectTasks,\n ITaskCreateFromSuccessCriteriaRequest,\n ITaskCreateRequest,\n ITaskFilterRequest,\n ITaskUserCommentCreateRequest,\n} from '../../../shared/interfaces/task.requests.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { ITaskCounts } from '../interfaces/task.interface';\nimport { ProjectsRestAPI } from './rest/projects.api';\nimport { TaskUtility } from '../utility/task.utility';\nimport { $taskWithProject, TaskSource, TaskStatus } from '../../../shared/constants/task';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectService {\n constructor(private projectsApi: ProjectsRestAPI) {}\n\n public createProject(workspaceId: string, project: IProjectCreateRequest): Observable {\n return this.projectsApi.createProject(workspaceId, {\n ...project,\n [$project.startDate]: project.startDate,\n [$project.endDate]: project.endDate,\n });\n }\n\n public createTask(workspaceId: string, projectId: string, task: FormData): Observable {\n return this.projectsApi.createTask(workspaceId, projectId, task);\n }\n\n public createTasks(workspaceId: string, projectId: string, tasks: ITaskCreateRequest[]): Observable {\n return this.projectsApi.createTasks(workspaceId, projectId, tasks);\n }\n\n public createTasksForSuccessCriterias(\n workspaceId: string,\n projectId: string,\n request: ITaskCreateFromSuccessCriteriaRequest,\n ): Observable {\n return this.projectsApi.createTasksForSuccessCriterias(workspaceId, projectId, request);\n }\n\n public editTask(workspaceId: string, projectId: string, taskId: string, task: FormData): Observable {\n return this.projectsApi.editTask(workspaceId, projectId, taskId, task);\n }\n\n public updateProject(workspaceId: string, projectId: string, project: IProjectUpdateRequest): Observable {\n return this.projectsApi.updateProject(workspaceId, projectId, {\n ...project,\n [$project.startDate]: new Date(project.startDate),\n [$project.endDate]: SharedCommonUtility.isNullish(project.endDate) ? undefined : new Date(project.endDate),\n });\n }\n\n public updateProjectIssueTracking(\n workspaceId: string,\n projectId: string,\n issueTrackingRequest: IProjectConnectIssueTrackingRequest,\n ): Observable {\n return this.projectsApi.updateProject(workspaceId, projectId, issueTrackingRequest);\n }\n\n public restoreProject(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.restoreProject(workspaceId, projectId);\n }\n\n public archiveProject(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.archiveProject(workspaceId, projectId);\n }\n\n public deleteProject(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.deleteProject(workspaceId, projectId);\n }\n\n public getTasks(\n workspaceId: string,\n projectId: string,\n filters: ITaskFilterRequest,\n skipLoader: boolean = false,\n ): Observable {\n return this.projectsApi.getProjectTasks(workspaceId, projectId, filters, skipLoader);\n }\n\n public getValidateTasks(workspaceId: string, filter: ITaskFilterRequest): Observable {\n return this.projectsApi.getAllProjectTasks(workspaceId, {\n ...filter,\n [TaskSearchFields.progress]: TaskStatus.requiresReview,\n source: TaskSource.manual,\n });\n }\n\n public getValidateProjectTasks(\n workspaceId: string,\n projectId: string,\n filter: ITaskFilterRequest,\n ): Observable {\n return this.projectsApi\n .getProjectTasks(workspaceId, projectId, {\n ...filter,\n [TaskSearchFields.progress]: TaskStatus.requiresReview,\n source: TaskSource.manual,\n })\n .pipe(map((response: IGetProjectTasks) => response.tasks.map(toTaskWithProject(response))));\n\n function toTaskWithProject(response: IGetProjectTasks): (task: ITaskWithTargetStatesAndFindings) => ITaskWithProject {\n return (task: ITaskWithTargetStatesAndFindings): ITaskWithProject => ({\n ...task,\n [$taskWithProject.project]: response.project,\n });\n }\n }\n\n public hasValidateProjectTasks(workspaceId: string, projectId: string): Observable {\n return this.projectsApi\n .getProjectTasks(workspaceId, projectId, {\n [TaskSearchFields.progress]: TaskStatus.requiresReview,\n source: TaskSource.manual,\n })\n .pipe(map((response: IGetProjectTasks): boolean => response.tasks.length > 0));\n }\n\n public getTasksSummaryByDp(workspaceId: string, filter: ITaskFilterRequest): Observable {\n return this.projectsApi.getTasksSummaryByDp(workspaceId, filter);\n }\n\n public getTaskCounts(workspaceId: string, projectId: string): Observable {\n return this.getTasks(workspaceId, projectId, {}).pipe(\n map((response: IGetProjectTasks): ITaskCounts => {\n return TaskUtility.reduceTargetStatesAndFindingsToTaskCounts(response.tasks);\n }),\n );\n }\n\n public getIntegratedTaskCounts(workspaceId: string, projectId: string): Observable {\n return this.getTasks(workspaceId, projectId, { [TaskSearchFields.taskIssueIntegrated]: true }).pipe(\n map((response: IGetProjectTasks): ITaskCounts => {\n return TaskUtility.reduceTargetStatesAndFindingsToTaskCounts(response.tasks);\n }),\n );\n }\n\n public getTask(workspaceId: string, projectId: string, taskId: string): Observable {\n return this.projectsApi.getProjectTask(workspaceId, projectId, taskId);\n }\n\n public deleteTask(workspaceId: string, projectId: string, taskId: string): Observable {\n return this.projectsApi.deleteProjectTask(workspaceId, projectId, taskId);\n }\n\n public deleteTasks(workspaceId: string, projectId: string, taskIds: string[]): Observable {\n return this.projectsApi.deleteProjectTasks(workspaceId, projectId, taskIds);\n }\n\n public getTaskComments(workspaceId: string, projectId: string, taskId: string): Observable {\n return this.projectsApi.getTaskComments(workspaceId, projectId, taskId);\n }\n\n public createTaskComment(\n workspaceId: string,\n projectId: string,\n taskId: string,\n comment: ITaskUserCommentCreateRequest,\n ): Observable {\n return this.projectsApi.createTaskComment(workspaceId, projectId, taskId, comment);\n }\n\n public getProjects(workspaceId: string): Observable {\n return this.projectsApi.getProjects(workspaceId);\n }\n\n public getProject(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.getProject(workspaceId, projectId);\n }\n\n public projectKeyExists(workspaceId: string, projectKey: string): Observable {\n return this.projectsApi\n .projectKeyExists(workspaceId, projectKey)\n .pipe(map((response: IProjectKeyExistsResponse) => response.projectKeyExists));\n }\n\n public isProjectArchivable(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.isProjectArchivable(workspaceId, projectId);\n }\n\n public validateProjectDeletion(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.validateProjectDeletion(workspaceId, projectId);\n }\n\n public downloadTasksCSVReport(\n workspaceId: string,\n projectId: string,\n filters?: IDownloadProjectTasksFilterRequest,\n ): Observable {\n return this.projectsApi.downloadProjectTasks(workspaceId, projectId, filters);\n }\n\n public getMyTasks(workspaceId: string, filters: ITaskFilterRequest): Observable {\n return this.projectsApi.getMyTasks(workspaceId, filters);\n }\n\n public getUsedIssueTrackingStatuses(workspaceId: string, projectId: string): Observable {\n return this.projectsApi.getUsedIssueTrackingStatuses(workspaceId, projectId);\n }\n\n public validateTasks(workspaceId: string, formData: FormData): Observable {\n return this.projectsApi.validateTasks(workspaceId, formData);\n }\n\n public getTaskProjectId(workspaceId: string, projectId: string): Observable {\n return this.projectsApi\n .getTaskProjectId(workspaceId, projectId)\n .pipe(map((value: { taskProjectId: string }): string => value.taskProjectId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport { RestService } from './rest.service';\nimport { ResourceUtility } from '../utility/resource.utility';\nimport { ResourceData } from '../interfaces/resource-data';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { UserPropertyService } from './user-property.service';\nimport { FileExtension } from '../../../shared/constants/file-extension';\nimport { AccessibilityAuditToolNames } from '../../../shared/constants/audit-tool';\nimport { IScanReportResponse } from '../../../shared/interfaces/async-report.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReportService {\n constructor(\n private restService: RestService,\n private userService: UserPropertyService,\n ) {}\n\n public downloadReportNew(\n scanId: string,\n fileExtension: FileExtension,\n scanUrl: string = '',\n ruleId: string,\n extraQueryParams: Record = {},\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.downloadReport(workspaceId, digitalPropertyId, scanId, fileExtension, scanUrl, ruleId, extraQueryParams),\n ),\n );\n }\n\n public getFullScanReport(\n scanId: string,\n fileExtension: FileExtension,\n scanUrl: string = '',\n auditTool: AccessibilityAuditToolNames,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.downloadFullScanReport(workspaceId, digitalPropertyId, scanId, fileExtension, scanUrl, auditTool),\n ),\n );\n }\n\n public generateFullScanReport(\n scanId: string,\n fileExtension: FileExtension,\n scanUrl: string = '',\n auditTool: AccessibilityAuditToolNames,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.generateFullScanReport(workspaceId, digitalPropertyId, scanId, fileExtension, scanUrl, auditTool),\n ),\n );\n }\n\n public downloadReport(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n fileExtension: FileExtension,\n scanUrl: string = '',\n ruleId: string,\n extraQueryParams: Record = {},\n ): Observable {\n return this.restService\n .downloadScanReportByRule(workspaceId, digitalPropertyId, scanId, fileExtension, scanUrl, ruleId, extraQueryParams)\n .pipe(map(ResourceUtility.downloadResponse));\n }\n\n public getReport(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n fileExtension: FileExtension,\n ruleId: string | null = null,\n extraQueryParams: Record = {},\n ): Observable {\n return this.restService\n .downloadScanReportByRule(workspaceId, digitalPropertyId, scanId, fileExtension, '', ruleId, extraQueryParams)\n .pipe(\n map(ResourceUtility.fromResponse),\n map((resourceData: ResourceData): File => {\n const blob: Blob = new Blob([resourceData.data], { type: resourceData.mimeType });\n const eapFriendlyMimeType: string = resourceData.mimeType.split(';')[0];\n return new File([blob], resourceData.filename, { type: eapFriendlyMimeType });\n }),\n );\n }\n\n public sendReportToEmails(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n auditTool: AccessibilityAuditToolNames | null,\n emails: string[],\n ): Observable {\n return this.restService.sendReportToEmails(workspaceId, digitalPropertyId, scanId, auditTool, emails);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpClient, HttpEvent, HttpEventType, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, last, map, tap, filter } from 'rxjs/operators';\nimport { omitBy, isNil } from 'lodash';\n\nimport { ITranslationClientConfig, ITranslationsClient } from '../../../shared/interfaces/translations.interface';\nimport { ISupportRequest } from '../../../shared/interfaces/support-request.interface';\nimport { ResourceUtility } from '../utility/resource.utility';\nimport { RestBuilder } from './helpers/rest.builder';\nimport { ITrackingConsoleRequest } from '../../../shared/interfaces/tracking.interface';\nimport { IAuditRule, IAuditRuleLibrary, IAuditRuleServerResponse } from '../../../shared/interfaces/audit-rule.interface';\nimport { IJobIndustriesServerResponse } from '../../../shared/interfaces/job-industry.interface';\nimport { IJobTitlesServerResponse } from '../../../shared/interfaces/job-title.interface';\nimport { IDigitalPropertyType } from '../../../shared/interfaces/digital-property.interface';\nimport {\n IActiveScan,\n IGetScansQuery,\n IGetScansServerResponse,\n IQuickScanOptions,\n IScan,\n ISendEmailsRequest,\n ISupplementalScanOption,\n IMobileScanOperatingSystem,\n} from '../../../shared/interfaces/scan.interface';\nimport { IDashboardLatestScansServerResponse } from '../../../shared/interfaces/dashboard-scan-result.interface';\nimport { IDismissRestoreRequest, IToggleRuleRequest } from '../../../shared/interfaces/ignore.interface';\nimport { IScanOptions } from '../../../shared/interfaces/scan-options.interface';\nimport { Api, ApiHeaderOption, ApiQueryOption } from '../../../shared/constants/api';\nimport { IScanCreateRequest } from '../../../shared/interfaces/scan-create-request.interface';\nimport {\n IAnalyticsByRuleResult,\n IAnalyticsResultItem,\n IPageAffectedByRuleAnalytics,\n} from '../../../shared/interfaces/analytics.interface';\nimport { RuleAuditHistoryType } from '../../../shared/constants/rule-audit-history';\nimport {\n IHasHistoryUpdateResponse,\n IRuleAuditHistoryGetQuery,\n IRuleAuditHistoryLineItem,\n} from '../../../shared/interfaces/rule-audit-history.interface';\nimport { AccessibilityAuditToolNames, AuditToolNames } from '../../../shared/constants/audit-tool';\nimport { $scanSearch } from '../../../shared/constants/scan';\nimport {\n IDpSummaryRequestQuery,\n IFlawIdPageSummaryServerResponse,\n IPageSummary,\n IPageSummaryServerResponse,\n ISummaryRequestQuery,\n IUserFlowScanPointSummary,\n IUserFlowScanPointSummaryServerResponse,\n} from '../../../shared/interfaces/scan-summaries.interface';\nimport { IDocumentDetails, IDocumentServerResponse } from '../../../shared/interfaces/document.interface';\nimport { IGetIssuesRequestQuery, IScanIssues } from '../../../shared/interfaces/scan-issues.interface';\nimport { IFlawPageReport, IFlawStatusUserHistory } from '../../../shared/interfaces/flaw.interface';\nimport { IGetShortLinkResponse, IShortLink } from '../../../shared/interfaces/short-link.interface';\nimport { IGetPagesRequestQuery } from '../../../shared/interfaces/monitoring-page.interface';\nimport { $sortingOrder } from '../../../shared/constants/sort';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { IAuditDbRule } from '../../../shared/interfaces/audit-rule.db.interface';\nimport { IAuditRuleCreateRequest, IAuditRuleEditRequest } from '../../../shared/interfaces/audit-rule.request.interface';\nimport { IAppConfig } from '../../../shared/interfaces/app-config.interface';\nimport { IUserCountryResponse, IUserResponse } from '../../../shared/interfaces/user.interface';\nimport { IUpdateImportantPagesRequest } from '../../../shared/interfaces/monitoring-page.interface';\nimport { IScreenshotAuditResult } from '../../../shared/interfaces/audit-raw-result.interface';\nimport {\n IDiscoveredScannableDocumentResponse,\n IScannableDocumentUploadResponse,\n} from '../../../shared/interfaces/scannable-document.interface';\nimport { IMonitoringPage } from '../../../shared/interfaces/monitoring-page.interface';\n\nimport { EmptyObject } from '../../../shared/interfaces/empty-object.interface';\nimport { IAsyncReportResponse, IScanReportResponse } from '../../../shared/interfaces/async-report.interface';\nimport {\n ICustomAuditRuleWithStandards,\n ICreateCustomAuditRules,\n ICustomAuditDbRule,\n IExistsCustomAuditRulesQuery,\n IGetCustomAuditRulesQuery,\n IEditCustomAuditRules,\n} from '../../../shared/interfaces/custom-audit-rule.interface';\nimport { SharedObjectUtility } from '../../../shared/utils/object.utility';\nimport { IUserRole } from '../../../shared/interfaces/user-role.interface';\nimport { IExistsResponse } from '../../../shared/interfaces/common.interface';\nimport { IAuditedDocument } from '../../../shared/interfaces/audited-document.interface';\nimport { IUploadClient } from '../../../shared/interfaces/uploads.interface';\nimport { IAuditStandard } from '../../../shared/interfaces/audit-standard.interface';\nimport { IMobileScanRuleInfo } from '../interfaces/mobile-scan.interface';\n\nconst CONSOLE_DEBOUNCE_TIMEOUT: number = 1000;\n\nclass BeaconDebouncer {\n private subscription: Subscription;\n private dataSubject$: Subject;\n\n constructor(timeout: number, url: string) {\n this.subscription = new Subscription();\n this.dataSubject$ = new Subject();\n\n const debouncedError$: Observable = this.dataSubject$.pipe(debounceTime(timeout));\n\n this.subscription.add(\n debouncedError$.subscribe({\n next: (consoleData: ITrackingConsoleRequest): void => {\n if (navigator.onLine) {\n try {\n window.navigator.sendBeacon(url, JSON.stringify(consoleData));\n } catch (error: any) {\n // catch all\n }\n }\n },\n }),\n );\n }\n\n public destroy(): void {\n this.subscription.unsubscribe();\n }\n\n public sendDebounced(data: ITrackingConsoleRequest): void {\n this.dataSubject$.next(data);\n }\n}\n\nexport interface AuditRulesParams {\n limit?: number;\n skip?: number;\n filters?: { [key: string]: string[] };\n sortBy?: string;\n sortOrder?: $sortingOrder;\n}\n\n@Injectable()\nexport class RestService implements OnDestroy {\n private restBuilder: RestBuilder;\n private consoleDebouncer: BeaconDebouncer;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n this.consoleDebouncer = new BeaconDebouncer(\n CONSOLE_DEBOUNCE_TIMEOUT,\n this.restBuilder.create().tracking().console().getApiUrl(),\n );\n }\n\n private static getStreamProgressPercents(event: HttpEvent): number | null {\n return event.type === HttpEventType.UploadProgress ? Math.round((100 * event.loaded) / event.total) : null;\n }\n\n public ngOnDestroy(): void {\n this.consoleDebouncer.destroy();\n }\n\n public downloadRaw(\n url: string,\n params: Record> = {},\n ): Observable> {\n const httpParams: HttpParams = new HttpParams({ fromObject: params });\n\n return this.httpClient.get(url, {\n observe: 'response',\n params: httpParams,\n responseType: 'arraybuffer',\n });\n }\n\n public download(\n url: string,\n params: Record> = {},\n ): Observable {\n return this.downloadRaw(url, params).pipe(map(ResourceUtility.downloadResponse));\n }\n\n public getNewAccessToken(refreshToken?: string): Observable> {\n const url: string = this.restBuilder.create().auth().refreshAccessToken().getApiUrl();\n const headers: Record = SharedCommonUtility.notNullish(refreshToken)\n ? { ['x-refresh-token']: refreshToken, [ApiHeaderOption.skipLoader]: 'true' }\n : { [ApiHeaderOption.skipLoader]: 'true' };\n\n return this.httpClient.get(url, {\n headers: new HttpHeaders(headers),\n observe: 'response',\n });\n }\n\n // GET /config\n public getAppConfig(): Observable {\n const url: string = this.restBuilder.create().config().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /translations/:locale\n public getTranslations(locale: string): Observable {\n const url: string = this.restBuilder.create().translations(locale).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /translations/data/:locale\n public translationsData(locale: string): Observable {\n const url: string = this.restBuilder.create().translationsData(locale).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /translations/all?locale=en-us\n public downloadTranslations(...locales: string[]): Observable {\n const locale: string[] = locales.filter((lang: string): boolean => typeof lang === 'string' && lang.trim().length > 0);\n const httpParams: HttpParams = new HttpParams({ fromObject: { locale } });\n\n const url: string = this.restBuilder.create().translations().all().query(httpParams).getApiUrl();\n\n return this.download(url, { locale });\n }\n\n // POST /translations\n public uploadTranslations(file: File): Observable {\n const formData = new FormData();\n formData.append('file', file, file.name);\n const url: string = this.restBuilder.create().translations().getApiUrl();\n return this.httpClient.post(url, formData);\n }\n\n // PUT /translations/:locale\n public saveAllTranslations(locale: string, data: ITranslationsClient): Observable {\n const url: string = this.restBuilder.create().translations(locale).getApiUrl();\n\n return this.httpClient.put(url, data);\n }\n\n // GET /translations/list\n public getListAvailableTranslations(): Observable {\n const url: string = this.restBuilder.create().translations().list().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /translations/list\n public getCountriesListForClient(): Observable {\n const url: string = this.restBuilder.create().translations().countries().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // DELETE /translations\n public removeTranslation(key: string): Observable {\n const url: string = this.restBuilder.create().translations().getApiUrl();\n\n return this.httpClient.delete(url, { params: { keys: key } });\n }\n\n public getSupportedLocales(): Observable {\n const url: string = this.restBuilder.create().translations().supportedLocales().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n public createLocale(config: ITranslationClientConfig): Observable {\n const url: string = this.restBuilder.create().translations().locales().getApiUrl();\n\n return this.httpClient.post(url, config);\n }\n\n public updateLocale(locale: string, config: Partial): Observable {\n const url: string = this.restBuilder.create().translations().locales(locale).getApiUrl();\n\n return this.httpClient.put(url, config);\n }\n\n public removeLocale(locale: string): Observable {\n const url: string = this.restBuilder.create().translations().locales(locale).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /scan/options\n public saveScanOptions(data: IScanOptions): Observable {\n const url: string = this.restBuilder.create().scan().options().getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n // GET /scan/options/all\n public getScanOptionsList(): Observable {\n const url: string = this.restBuilder.create().scan().options().all().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /scan/options\n public updateScanOptions(formData: IScanOptions): Observable {\n const url: string = this.restBuilder\n .create()\n .scan()\n .options(formData.selectedScanOptionsId as string)\n .getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // PUT /scan/options/default\n public setDefaultScanOptions(scanOptionsId: string): Observable {\n const url: string = this.restBuilder.create().scan().options().default().getApiUrl();\n\n const data: { scanOptionsId: string } = {\n scanOptionsId: scanOptionsId,\n };\n\n return this.httpClient.put(url, data);\n }\n\n // Delete /scan/options/:id\n public removeScanOptions(id: string): Observable {\n const url: string = this.restBuilder.create().scan().options(id).getApiUrl();\n\n return this.httpClient.delete(url, {});\n }\n\n // GET /workspaces/:workspaceId/scan?\n public getScans(\n workspaceId: string,\n digitalPropertyId: string,\n params: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: omitBy(params, isNil) as any,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /admin/scan/active\n public getActiveScans(skip: number, limit: number): Observable {\n const url: string = this.restBuilder.create().admin().scan().active().getApiUrl();\n\n const params: any = {\n skip: skip,\n limit: limit,\n };\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, {\n params: httpParams,\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/scan/active\n public getDigitalPropertyActiveScans(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().active().getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/scan/:id\n public getScan(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan(scanId).getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/scan/:id/audited-documents/urls/:url\n public getAuditedDocument(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n urlReference: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .auditedDocuments()\n .urls(urlReference)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/scan/:id/documents\n public getScanDiscoveredDocuments(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .documents()\n .getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n public getScanIssues(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n tool: AccessibilityAuditToolNames,\n rule: string,\n scanUrl?: string,\n componentId?: string,\n scanPointId?: string,\n ): Observable {\n const url = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan()\n .issues()\n .pathParam(scanId)\n .pathParam(tool)\n .pathParam(rule)\n .getApiUrl();\n\n const params: IGetIssuesRequestQuery = {};\n\n if (typeof scanUrl === 'string') {\n params[ApiQueryOption.url] = encodeURIComponent(scanUrl);\n }\n\n if (SharedCommonUtility.notNullish(componentId)) {\n params[ApiQueryOption.componentId] = encodeURIComponent(componentId);\n }\n\n if (SharedCommonUtility.notNullish(scanPointId)) {\n params[ApiQueryOption.scanPointId] = encodeURIComponent(scanPointId);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params as unknown as { [param: string]: string | readonly string[] },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n public getScanIssueShortLink(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n tool: AccessibilityAuditToolNames,\n rule: string,\n issueId: string,\n ): Observable {\n const url = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan()\n .issues()\n .pathParam(scanId)\n .pathParam(tool)\n .pathParam(rule)\n .shortLink()\n .id(issueId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/scan/:scanId/screenshots/:documentId\n public getScreenshotAuditDetails(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n documentId: string,\n ): Observable {\n const url = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .screenshots()\n .id(documentId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/scan/:scanId/audited-documents/:documentId/screenshot\n public getAuditedDocumentScreenshot(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n documentId: string,\n ): Observable {\n const url = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .auditedDocuments()\n .id(documentId)\n .screenshot()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-analytics/tool/:toolName?scanId=&scanHistoryLimit=\n public getScanAnalytics(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n toolName: AccessibilityAuditToolNames,\n scanHistoryLimit: number,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).monitoringAnalytics().getApiUrl();\n\n const params: any = {\n scanHistoryLimit,\n };\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-analytics/report?format=\n public getMonitoringHistoryReport(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringAnalytics()\n .report()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId/monitoring-analytics/report\n public generateMonitoringHistoryReport(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringAnalytics()\n .report()\n .getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-analytics/rules\n public getScanAnalyticsByRule(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringAnalytics()\n .rules()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-analytics/rule/:ruleId\n public getPageAnalyticsAffectedByRule(\n workspaceId: string,\n digitalPropertyId: string,\n ruleName: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringAnalytics()\n .rule(ruleName)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/scan\n public createScan(workspaceId: string, digitalPropertyId: string, formData: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().getApiUrl();\n\n return this.httpClient.post(url, formData);\n }\n\n // POST /workspaces/:workspaceId/scan/quick-scan\n public createAutomatedScan(workspaceId: string, digitalPropertyId: string, options: IQuickScanOptions): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().quickScan().getApiUrl();\n\n return this.httpClient.post(url, options);\n }\n\n // PUT /scan/:id\n public updateScan(workspaceId: string, digitalPropertyId: string, formData: IScanCreateRequest, id: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan(id).getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId/scan/:id/supplementalScan\n public getOrCreateSupplementalScan(\n workspaceId: string,\n digitalPropertyId: string,\n id: string,\n link: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(id)\n .supplementalScan()\n .getApiUrl();\n\n const body: ISupplementalScanOption = {\n url: link,\n };\n\n return this.httpClient.post(url, body);\n }\n\n // DELETE /workspaces/:workspaceId/scan/:id\n // Note: about DELETE and \"body\" https://stackoverflow.com/questions/299628/is-an-entity-body-allowed-for-an-http-delete-request\n public removeScan(workspaceId: string, digitalPropertyId: string, id: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan(id).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /workspaces/:workspaceId/scan/:id/rerun\n public rerunScan(workspaceId: string, digitalPropertyId: string, id: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan(id).rerun().getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/scan/:scanId/rule/:ruleId/report/download?scanId=&format=&siteUrl=&auditTool=\n public downloadScanReportByRule(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n reportFormat: string,\n scanUrl: string = '',\n ruleId: string,\n extraQueryOptions: Record = {},\n ): Observable> {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .rule(ruleId)\n .report()\n .download()\n .getApiUrl();\n\n const params: any = {\n format: reportFormat,\n scanUrl: scanUrl,\n ...extraQueryOptions,\n };\n\n return this.downloadRaw(url, params);\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/scan/:scanId/report/download?format=&siteUrl=&auditTool=\n public downloadFullScanReport(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n reportFormat: string,\n scanUrl: string = '',\n auditTool: AccessibilityAuditToolNames,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .report()\n .download()\n .getApiUrl();\n\n const params: any = {\n format: reportFormat,\n scanUrl: scanUrl,\n auditTool: auditTool,\n };\n\n return this.httpClient.get(url, { params });\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId/scan/:scanId/report/download?format=&siteUrl=&auditTool=\n public generateFullScanReport(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n reportFormat: string,\n scanUrl: string = '',\n auditTool: AccessibilityAuditToolNames,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .report()\n .download()\n .getApiUrl();\n\n const params: any = {\n format: reportFormat,\n scanUrl: scanUrl,\n auditTool: auditTool,\n };\n return this.httpClient.post(url, {}, { params });\n }\n\n // POST /workspaces/:workspaceId/scan/:id/reports/send-email\n public sendReportToEmails(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n auditTool: AccessibilityAuditToolNames | null,\n emails: string[],\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan(scanId)\n .reports()\n .sendEmail()\n .getApiUrl();\n\n const body: ISendEmailsRequest = {\n auditTool: auditTool,\n emails: emails,\n };\n\n return this.httpClient.post(url, body);\n }\n\n // POST /documents\n public createDocument(workspaceId: string, formData: FormData, onProgress: (progress: number) => void): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents().getApiUrl();\n\n const req = new HttpRequest('POST', url, formData, {\n reportProgress: true,\n });\n\n const processProgressEvent = (progress: number | null): void => {\n if (typeof progress === 'number') {\n onProgress(progress);\n }\n };\n\n return this.httpClient.request(req).pipe(\n map((event: HttpEvent): number | null => RestService.getStreamProgressPercents(event)),\n tap(processProgressEvent),\n last(),\n map((): void => {}),\n );\n }\n\n // GET /workspaces/:workspaceId/documents/:digitalPropertyId\n public getDocuments(\n workspaceId: string,\n digitalPropertyId: string,\n limit: number,\n skip: number,\n sortBy: string = null,\n sortOrder: $sortingOrder = null,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents().list().id(digitalPropertyId).getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (!SharedCommonUtility.isNullish(sortBy)) {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if (!SharedCommonUtility.isNullish(sortOrder)) {\n params[ApiQueryOption.sortOrder] = sortOrder;\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/documents/:documentId\n public getDocument(workspaceId: string, documentId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents(documentId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /workspaceId/:workspaceId/documents/:documentId\n public updateDocument(\n workspaceId: string,\n formData: FormData,\n id: string,\n onProgress: (progress: number) => void,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents(id).getApiUrl();\n\n const req = new HttpRequest('PUT', url, formData, {\n reportProgress: true,\n });\n\n const processProgressEvent = (progress: number | null): void => {\n if (typeof progress === 'number') {\n onProgress(progress);\n }\n };\n\n return this.httpClient.request(req).pipe(\n map((event: HttpEvent): number | null => RestService.getStreamProgressPercents(event)),\n tap(processProgressEvent),\n last(),\n );\n }\n\n // DELETE /workspaces/:workspaceId/documents/:documentId\n public removeDocument(workspaceId: string, documentId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents(documentId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // DELETE /workspaces/:workspaceId/documents/:documentId/file/:fileId\n public removeDocumentAttachment(workspaceId: string, documentId: string, fileId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).documents(documentId).file(fileId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /workspaces/:workspaceId/scannableDocuments/upload\n public createScannableDocument(\n workspaceId: string,\n formData: FormData,\n onProgress: (progress: number) => void,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).scannableDocuments().upload().getApiUrl();\n\n const req = new HttpRequest('POST', url, formData, {\n reportProgress: true,\n });\n\n const processProgressEvent = (progress: number | null): void => {\n if (typeof progress === 'number') {\n onProgress(progress);\n }\n };\n\n return this.httpClient.request(req).pipe(\n tap((event: HttpEvent): void => {\n const progress: number | null = RestService.getStreamProgressPercents(event);\n if (SharedCommonUtility.notNullish(progress)) {\n processProgressEvent(progress);\n }\n }),\n filter((event: HttpEvent): boolean => event instanceof HttpResponse),\n map((res: HttpResponse) => res.body),\n );\n }\n\n // POST /send-email\n public sendSupportRequest(supportRequest: ISupportRequest): Observable {\n const url: string = this.restBuilder.create().support().sendSupportEmail().getApiUrl();\n\n return this.httpClient.post(url, supportRequest);\n }\n\n // POST /audit-rules/workspaces/:workspaceId/digital-properties/:digitalPropertyId/toggle-rule\n public toggleRule(workspaceId: string, digitalPropertyId: string, request: IToggleRuleRequest): Observable {\n const url: string = this.restBuilder\n .create()\n .auditRules()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .toggleRule()\n .getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId:/flaws/dismiss\n public dismissIssues(\n workspaceId: string,\n digitalPropertyId: string,\n ignoreRequest: IDismissRestoreRequest,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).flaws().dismiss().getApiUrl();\n\n return this.httpClient\n .post<{ updatedCount: number }>(url, ignoreRequest)\n .pipe(map(({ updatedCount }: { updatedCount: number }) => updatedCount));\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId/flaws/restore\n public restoreIssues(\n workspaceId: string,\n digitalPropertyId: string,\n restoreRequest: IDismissRestoreRequest,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).flaws().restore().getApiUrl();\n\n return this.httpClient\n .post<{ updatedCount: number }>(url, restoreRequest)\n .pipe(map(({ updatedCount }: { updatedCount: number }) => updatedCount));\n }\n\n // GET /digital-property-type\n public getDigitalPropertyTypes(): Observable {\n const url: string = this.restBuilder.create().digitalPropertyType().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /tracking/console\n public sendTrackingConsole(consoleData: ITrackingConsoleRequest): boolean {\n if (typeof window.navigator.sendBeacon === 'function') {\n this.consoleDebouncer.sendDebounced(consoleData);\n return true;\n }\n\n return false;\n }\n\n // GET /audit-rules/workspaces/:workspaceId/digital-properties/:digitalPropertyId\n public findDigitalPropertyAuditRules(\n workspaceId: string,\n digitalPropertyId: string,\n limit: number,\n skip: number,\n filters: { [key: string]: string[] } = {},\n excludeHistory: boolean = false,\n sortBy: string = null,\n sortOrder: $sortingOrder = null,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .auditRules()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (excludeHistory) {\n params.exclude_history = String(1);\n }\n\n if (!SharedCommonUtility.isNullish(sortBy)) {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if ([$sortingOrder.asc, $sortingOrder.desc].includes(sortOrder)) {\n params[ApiQueryOption.sortOrder] = sortOrder;\n }\n\n Object.keys(filters).forEach((key: string): void => {\n params[key] = filters[key].join(',');\n });\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /audit-rules\n public findAuditRules({\n limit,\n skip,\n filters,\n sortBy,\n sortOrder,\n }: AuditRulesParams = {}): Observable {\n const url: string = this.restBuilder.create().auditRules().getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (!SharedCommonUtility.isNullish(sortBy)) {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if ([$sortingOrder.asc, $sortingOrder.desc].includes(sortOrder)) {\n params[ApiQueryOption.sortOrder] = sortOrder;\n }\n\n if (SharedCommonUtility.notNullish(filters)) {\n Object.keys(filters).forEach((key: string): void => {\n params[key] = filters[key].join(',');\n });\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /audit-rules/libraries\n public getAuditRuleLibraries(): Observable {\n const url: string = this.restBuilder.create().auditRules().libraries().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /custom-audit-rules/standards\n public getStandardsForLibrary(libraryCode: string): Observable {\n const url: string = this.restBuilder.create().customAuditRules().standards().getApiUrl();\n return this.httpClient.get(url, {\n params: new HttpParams({\n fromObject: { [Api.library]: libraryCode },\n }),\n });\n }\n\n // GET /audit-rules/:ruleId/\n public findRuleByID(ruleId: string): Observable {\n const url: string = this.restBuilder.create().auditRules(ruleId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // POST /audit-rules/:ruleId/\n public editRuleById(editRequest: IAuditRuleEditRequest, ruleId: string): Observable {\n const url: string = this.restBuilder.create().auditRules(ruleId).getApiUrl();\n return this.httpClient.put(url, editRequest);\n }\n\n // POST /audit-rules\n public createAuditRule(creationRequest: IAuditRuleCreateRequest): Observable {\n const url: string = this.restBuilder.create().auditRules().getApiUrl();\n return this.httpClient.post(url, creationRequest);\n }\n\n // GET /audit-rules/rule-ids\n public ruleIds(): Observable {\n const url: string = this.restBuilder.create().auditRules().ruleIds().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // DELETE /audit-rules/:ruleId/\n public deleteRule(ruleId: string): Observable {\n const url: string = this.restBuilder.create().auditRules(ruleId).getApiUrl();\n return this.httpClient.delete(url);\n }\n\n // GET /custom-audit-rules\n public findCustomAuditRules({\n filters,\n limit,\n skip,\n sortBy,\n sortOrder,\n }: IGetCustomAuditRulesQuery): Observable {\n const url: string = this.restBuilder.create().customAuditRules().getApiUrl();\n\n const params: Record = {};\n\n if (SharedObjectUtility.isNumber(limit)) {\n params.limit = limit;\n }\n\n if (SharedObjectUtility.isNumber(skip)) {\n params.skip = skip;\n }\n\n if (!SharedCommonUtility.isNullish(sortBy)) {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if ([$sortingOrder.asc, $sortingOrder.desc].includes(sortOrder)) {\n params[ApiQueryOption.sortOrder] = sortOrder;\n }\n\n if (SharedCommonUtility.notNullish(filters)) {\n Object.keys(filters).forEach((key: string): void => {\n params[key] = filters[key].join(',');\n });\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /custom-audit-rules/:ruleId\n public findCustomAuditRuleByRuleId(ruleId: string): Observable {\n const url: string = this.restBuilder.create().customAuditRules(ruleId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // PUT /custom-audit-rules/:ruleId\n public editCustomAuditRuleByRuleId(editRequest: IEditCustomAuditRules, ruleId: string): Observable {\n const url: string = this.restBuilder.create().customAuditRules(ruleId).getApiUrl();\n return this.httpClient.put(url, editRequest);\n }\n\n // DELETE /custom-audit-rules/:ruleId/\n public deleteCustomAuditRule(ruleId: string): Observable {\n const url: string = this.restBuilder.create().customAuditRules(ruleId).getApiUrl();\n return this.httpClient.delete(url);\n }\n\n // GET /custom-audit-rules/categories\n public getCustomAuditRuleCategories(): Observable {\n const url: string = this.restBuilder.create().customAuditRules().categories().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /custom-audit-rules/library\n public getCustomAuditRulesLibrary(): Observable {\n const url: string = this.restBuilder.create().customAuditRules().library().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /custom-audit-rules/exists\n public existsCustomAuditRule(query: IExistsCustomAuditRulesQuery): Observable {\n const url: string = this.restBuilder.create().customAuditRules().exists().getApiUrl();\n const params: Record = {};\n\n Object.entries(query).forEach(([key, value]: [string, any]): void => {\n params[key] = encodeURIComponent(value);\n });\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // POST /custom-audit-rules\n public createCustomAuditRule(createData: ICreateCustomAuditRules): Observable {\n const url: string = this.restBuilder.create().customAuditRules().getApiUrl();\n\n return this.httpClient.post(url, createData);\n }\n\n // GET /job-industries\n public getJobIndustries(limit: number, skip: number): Observable {\n const url: string = this.restBuilder.create().jobIndustries().getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /job-titles\n public getJobTitles(limit: number, skip: number): Observable {\n const url: string = this.restBuilder.create().jobTitles().getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n public getScansCount(workspaceId: string, digitalPropertyId: string, excludeMonitoring: boolean): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .dashboard()\n .scansCount()\n .getApiUrl();\n\n const params: any = {};\n\n if (excludeMonitoring) {\n params.exclude_monitoring = String(1);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient\n .get<{ total: number }>(url, { params: httpParams })\n .pipe(map((total: { total: number }): number => total.total));\n }\n\n public getNextScheduledScan(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan()\n .nextScheduledScan()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n public moveScans(\n workspaceId: string,\n digitalPropertyId: string,\n newDigitalPropertyId: string,\n scans: string[],\n ): Observable {\n const apiUrl: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().move().getApiUrl();\n return this.httpClient.post(apiUrl, {\n digitalPropertyId: newDigitalPropertyId,\n scans: scans,\n });\n }\n\n // POST /workspaces/:workspaceId/:digitalPropertyId/scan/scan-tags\n public updateScanTags(workspaceId: string, digitalPropertyId: string, scanTagId: string, scanIds: string[]): Observable {\n const apiUrl: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan().scanTags().getApiUrl();\n return this.httpClient.post(apiUrl, {\n scanTagId: scanTagId,\n scanIds: scanIds,\n });\n }\n\n // GET /shortLinks/:shortLink\n public getShortLink(id: string): Observable {\n const url: string = this.restBuilder.create().shortLinks(id).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/rule-history/:toolName/:rule\n public getRuleAuditHistory(\n workspaceId: string,\n digitalPropertyId: string,\n toolName: AuditToolNames,\n type: RuleAuditHistoryType,\n rule: string,\n data: IRuleAuditHistoryGetQuery,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .ruleHistory()\n .pathParam(toolName)\n .pathParam(type)\n .pathParam(rule)\n .getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n public hasHistory(\n workspaceId: string,\n digitalPropertyId: string,\n toolName: AccessibilityAuditToolNames,\n type: RuleAuditHistoryType,\n dataId: string,\n from: Date,\n ruleId?: string,\n scanUrl?: string,\n ): Observable {\n let params: HttpParams = new HttpParams({ fromObject: { from: encodeURIComponent(from.toISOString()) } });\n\n if (typeof scanUrl === 'string') {\n params = params.set('url', encodeURIComponent(scanUrl));\n }\n if (typeof ruleId === 'string') {\n params = params.set('rule', encodeURIComponent(ruleId));\n }\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .ruleHistory()\n .pathParam(toolName)\n .pathParam(type)\n .pathParam(dataId)\n .hasHistory()\n .query(params)\n .getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n public getDashboardLatestScans(\n workspaceId: string,\n digitalPropertyId: string,\n tool: AccessibilityAuditToolNames,\n query: IGetScansQuery,\n skip: number,\n limit: number,\n ): Observable {\n query[$scanSearch.tool] = tool;\n query[$scanSearch.skip] = String(skip);\n query[$scanSearch.limit] = String(limit);\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .dashboard()\n .latestScans()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({ fromObject: query } as any);\n\n return this.httpClient.get(url, {\n params: httpParams,\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan/:scanId/page-summary/:documentId?toolName=:toolName\n public getPageSummaryForTool(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n documentId: string,\n toolName: AccessibilityAuditToolNames,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scan(scanId)\n .pageSummary()\n .id(documentId)\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({ fromObject: { [ApiQueryOption.toolName]: toolName } });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan/:scanId/documents/:documentId/scan-point-summary/:userFlowScanPointId?toolName=:toolName\n public getUserFlowScanPointSummaryForTool(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n documentId: string,\n scanPointId: string,\n toolName: AccessibilityAuditToolNames,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scan(scanId)\n .documents(documentId)\n .scanPointSummary()\n .id(scanPointId)\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({ fromObject: { [ApiQueryOption.toolName]: toolName } });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan/:scanId/page-summary?toolName=:toolName\n public getPageSummariesForTool(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n params: ISummaryRequestQuery,\n ): Observable {\n const httpParams: HttpParams = new HttpParams({ fromObject: params as unknown as Record });\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scan(scanId)\n .pageSummary()\n .getApiUrl();\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan/:scanId/page-summary/previous?toolName=:toolName\n public getPreviousPageSummariesForTool(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n params: ISummaryRequestQuery,\n ): Observable {\n const httpParams: HttpParams = new HttpParams({ fromObject: params as unknown as Record });\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scan(scanId)\n .pageSummary()\n .previous()\n .getApiUrl();\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan/:scanId/scan-point-summary\n public getPageSummariesForUserFlowScanPoints(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n params: ISummaryRequestQuery,\n ): Observable {\n const httpParams: HttpParams = new HttpParams({ fromObject: params as unknown as Record });\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scan(scanId)\n .scanPointSummary()\n .getApiUrl();\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // PUT /workspaces/:workspaceId/:digitalPropertyId:/flaws/:flawId/markAsViewed\n public markFlawAsViewed(workspaceId: string, digitalPropertyId: string, flawId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .flaws()\n .pathParam(flawId)\n .markAsViewed()\n .getApiUrl();\n\n return this.httpClient.put(url, {});\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId:/flaws/:flawId/userChangeHistory\n public getFlawHistory(workspaceId: string, digitalPropertyId: string, flawId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .flaws()\n .pathParam(flawId)\n .userChangeHistory()\n .getApiUrl();\n\n return this.httpClient.get(url, {});\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-pages\n public getDigitalPropertyMonitoringPages(\n workspaceId: string,\n digitalPropertyId: string,\n filters: IGetPagesRequestQuery = {},\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).monitoringPages().getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: filters as unknown as { [param: string]: string | readonly string[] },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/:componentId/monitoring-pages/page_summary?componentId=\n public getDigitalPropertyMonitoringPagesForComponent(\n workspaceId: string,\n digitalPropertyId: string,\n params: IDpSummaryRequestQuery,\n ): Observable {\n const url = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringPages()\n .pageSummary()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params as unknown as Record,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId:/monitoring-pages/available\n public getAvailableDigitalPropertyMonitoringPages(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringPages()\n .available()\n .getApiUrl();\n\n const params: IGetPagesRequestQuery = {};\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params as unknown as { [param: string]: string | readonly string[] },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/:digitalPropertyId/monitoring-pages/:flawPageId\n public getMonitoringFlawPage(\n workspaceId: string,\n digitalPropertyId: string,\n flawPageId: string,\n trendDataLength: number,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringPages(flawPageId)\n .getApiUrl();\n\n const params: IGetPagesRequestQuery = {};\n\n if (trendDataLength > 0) {\n params[ApiQueryOption.trendDataLength] = encodeURIComponent(trendDataLength);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params as unknown as { [param: string]: string | readonly string[] },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // PUT /workspaces/:workspaceId/:digitalPropertyId:/monitoring-pages/important\n public setImportantDigitalPropertyMonitoringPages(\n workspaceId: string,\n digitalPropertyId: string,\n flawPageIds: string[],\n important: boolean,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .monitoringPages()\n .important()\n .getApiUrl();\n\n const body: IUpdateImportantPagesRequest = {\n pagesIds: flawPageIds,\n markAsImportant: important,\n };\n\n return this.httpClient.put(url, body);\n }\n\n // GET /secure-resources/:resourceId\n public getResourceMoreSecureUrl(resourceId: string): string {\n return this.restBuilder.create().secureResources(resourceId).getApiUrl();\n }\n\n // GET /user-roles\n public getUserRoles(): Observable {\n const url: string = this.restBuilder.create().userRoles().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/scan/mobile-scans/rules\n public getMobileScansRules(workspaceId: string, digitalPropertyId: string): Observable {\n const scanBaseUrl: RestBuilder = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan();\n const url: string = scanBaseUrl.mobileScans().rules().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/digital-properties/:digitalPropertyId/mobile-apps/scans/:scanId\n public removeMobileEmulatorScan(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .mobileApps()\n .scans(scanId)\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // DELETE /workspaces/:workspaceId/digital-properties/:digitalPropertyId/scan/mobile-scans/scans/:scanId\n public removeMobileSDKScan(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan()\n .mobileScans()\n .scans(scanId)\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/mobile-apps/scans\n public getMobileEmulatorScans(\n workspaceId: string,\n digitalPropertyId: string,\n params: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .mobileApps()\n .scans()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: omitBy(params, isNil) as any,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/scan/mobile-scans/scans\n public getMobileSDKScans(\n workspaceId: string,\n digitalPropertyId: string,\n params: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .id(digitalPropertyId)\n .scan()\n .mobileScans()\n .scans()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: omitBy(params, isNil) as any,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/mobile-apps/scans/operating-systems\n public getMobileEmulatorScansOperatingSystems(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperties(digitalPropertyId)\n .mobileApps()\n .scans()\n .operatingSystems()\n .getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/scan/mobile-scans/operating-systems\n public getMobileSDKScansOperatingSystems(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const scanBaseUrl: RestBuilder = this.restBuilder.create().workspaces(workspaceId).id(digitalPropertyId).scan();\n const url: string = scanBaseUrl.mobileScans().operatingSystems().getApiUrl();\n return this.httpClient.get(url);\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { IHttpQueryOptions } from '../../../../shared/interfaces/http.query.interface';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\nimport {\n IManualAudit,\n IManualEvalCreateRequest,\n IManualAuditServerResponse,\n IPopulatedManualAudit,\n IManualAuditUpdateRequest,\n} from '../../../../shared/interfaces/manual-audit.interface';\nimport {\n IDigitalPropertiesPopulatedResponse,\n IValidateBulkUpload,\n} from '../../../../shared/interfaces/digital-property.interface';\nimport { IGetAvailableWorkspacesQuery } from '../../../../shared/interfaces/admin.interface';\nimport { IGetWorkspacesResponse, ICreateBulkWorkspacesResponse } from '../../../../shared/interfaces/workspace.interface';\nimport { IWorkspaceRolesResponse } from '../../../../shared/interfaces/acl.interface';\nimport { $migrateRequest } from '../../../../shared/constants/workspace';\nimport { IMigrateWorkspaceToTenantRequest } from '../../../../shared/interfaces/workspace.request.interface';\nimport { IManualScanEdit } from '../../../../shared/interfaces/scan.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminRestAPI {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /admin/roles\n public getApplicationRoles(): Observable {\n const url: string = this.restBuilder.create().admin().roles().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /admin/workspaces/bulk/validate\n public validateWorkspaceBulkUpload(uploadForm: FormData): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().bulk().validate().getApiUrl();\n\n return this.httpClient.post(url, uploadForm);\n }\n\n // POST /admin/workspaces/bulk/create\n public workspaceBulkUpload(uploadForm: FormData): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().bulk().createInPath().getApiUrl();\n\n return this.httpClient.post(url, uploadForm);\n }\n\n // GET /admin/workspaces\n public getAllWorkspaces(queryParams: IHttpQueryOptions): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().getApiUrl();\n\n const query: any = {\n [ApiQueryOption.limit]: String(queryParams[ApiQueryOption.limit]),\n [ApiQueryOption.skip]: String(queryParams[ApiQueryOption.skip]),\n };\n\n if (typeof queryParams[ApiQueryOption.term] === 'string') {\n query[ApiQueryOption.term] = window.encodeURIComponent(String(queryParams[ApiQueryOption.term])).trim();\n }\n\n if (typeof queryParams[ApiQueryOption.tenantlessOnly] === 'boolean') {\n query[ApiQueryOption.tenantlessOnly] = String(queryParams[ApiQueryOption.tenantlessOnly]);\n }\n\n if (typeof queryParams[ApiQueryOption.sortByName] === 'string') {\n query[ApiQueryOption.sortByName] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortByName])).trim();\n }\n\n if (typeof queryParams[ApiQueryOption.status] === 'string' && queryParams[ApiQueryOption.status] !== $sortingOrder.all) {\n query[ApiQueryOption.status] = window.encodeURIComponent(String(queryParams[ApiQueryOption.status])).trim();\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // PUT /admin/workspaces/migrate\n public migrateWorkspaceToTenant(workspacesIds: string[], tenantId: string): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().migrate().getApiUrl();\n\n const data: IMigrateWorkspaceToTenantRequest = {\n [$migrateRequest.workspacesIds]: workspacesIds,\n [$migrateRequest.tenantId]: tenantId,\n };\n\n return this.httpClient.put(url, data);\n }\n\n // GET /admin/digital-properties\n public getAllDigitalProperties(limit: number, skip: number): Observable {\n const url: string = this.restBuilder.create().admin().digitalProperties().getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // POST /admin/workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-audit\n public createManualAuditWithFile(workspaceId: string, digitalPropertyId: string, body: FormData): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit()\n .getApiUrl();\n\n return this.httpClient.post(url, body);\n }\n\n // POST /admin/workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-audit\n public createManualAudit(\n workspaceId: string,\n digitalPropertyId: string,\n request: IManualEvalCreateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit()\n .getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // PATCH /admin/workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-audit/:manualEvaluationId\n public patchManualAudit(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n request: IManualEvalCreateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit(manualEvaluationId)\n .getApiUrl();\n\n return this.httpClient.patch(url, request);\n }\n\n // POST /admin/workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-audit/:id/manual-upload-file\n public manualUploadFile(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n queryParams: FormData,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit(manualAuditId)\n .manualUploadFile()\n .getApiUrl();\n\n return this.httpClient.post(url, queryParams);\n }\n\n // GET /admin/manual-audit\n public getAllManualAudits(queryParams: IHttpQueryOptions): Observable {\n const url: string = this.restBuilder.create().admin().manualAudit().getApiUrl();\n\n const query: Record = {\n [ApiQueryOption.limit]: String(queryParams[ApiQueryOption.limit]),\n [ApiQueryOption.skip]: String(queryParams[ApiQueryOption.skip]),\n };\n if (typeof queryParams[ApiQueryOption.term] === 'string') {\n query[ApiQueryOption.term] = window.encodeURIComponent(String(queryParams[ApiQueryOption.term])).trim();\n }\n if (typeof queryParams[ApiQueryOption.sortByName] === 'string') {\n query[ApiQueryOption.sortByName] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortByName])).trim();\n }\n if (typeof queryParams[ApiQueryOption.sortByDigitalProperty] === 'string') {\n query[ApiQueryOption.sortByDigitalProperty] = window\n .encodeURIComponent(String(queryParams[ApiQueryOption.sortByDigitalProperty]))\n .trim();\n }\n if (typeof queryParams[ApiQueryOption.status] === 'string') {\n query[ApiQueryOption.status] = window.encodeURIComponent(String(queryParams[ApiQueryOption.status])).trim();\n }\n if (typeof queryParams[ApiQueryOption.sortCreatedBy] === 'string') {\n query[ApiQueryOption.sortCreatedBy] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortCreatedBy])).trim();\n }\n if (typeof queryParams[ApiQueryOption.sortCreatedAt] === 'string') {\n query[ApiQueryOption.sortCreatedAt] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortCreatedAt])).trim();\n }\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /admin/workspaces/:workspaceId/digital-property/:id/manual-audit\n public getAllManualAuditsForDigitalProperty(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit()\n .getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /admin/workspaces/:workspaceId/digital-property/:id/manual-audit/:scanId\n public getManualAuditWithPages(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit(manualAuditId)\n .getApiUrl();\n return this.httpClient.get(url);\n }\n\n // POST /admin/workspaces/:workspaceId/digital-property/:id/manual-audit/:scanId/archive\n public archiveManualAudit(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit(scanId)\n .archive()\n .getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n\n // GET /admin/workspaces/available/:userId\n public getUserAvailableWorkspaces(\n userId: string,\n queryOptions: IGetAvailableWorkspacesQuery,\n ): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().available(userId).getApiUrl();\n\n const query: any = {\n [ApiQueryOption.limit]: queryOptions[ApiQueryOption.limit],\n [ApiQueryOption.skip]: queryOptions[ApiQueryOption.skip],\n };\n\n if (typeof queryOptions[ApiQueryOption.term] === 'string') {\n query[ApiQueryOption.term] = window.encodeURIComponent(queryOptions[ApiQueryOption.term]).trim();\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // PUT /admin/workspaces/:workspaceId/digital-property/:id/manual-audit/:scanId\n public updateManualAudit(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n updateRequest: IManualAuditUpdateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .admin()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualAudit(scanId)\n .getApiUrl();\n\n return this.httpClient.put(url, updateRequest);\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { IGlobalResponse, IUserDeactivateAccount, IUserProfileFormData } from '../../interfaces/user.interface';\nimport { IHttpQueryOptions } from '../../../../shared/interfaces/http.query.interface';\nimport {\n IGetUsersResponseData,\n IMfaLoginRequest,\n IMfaRegistrationQrResponse,\n IMfaStatusResponse,\n IMfaTokenVerificationRequest,\n IUser,\n IUserPasswordSettings,\n IUserServerResponse,\n IUserPublicResponse,\n IBulkEmailUpdateResponse,\n IUserEmailResponse,\n} from '../../../../shared/interfaces/user.interface';\nimport {\n IGetNewActivityLogsCountResponse,\n IGetWorkspaceActivityLogsResponseData,\n ISetWorkspaceActivityLogsAsViewedRequest,\n} from '../../../../shared/interfaces/workspace-activity-log.interface';\nimport { ApiHeaderOption, ApiQueryOption } from '../../../../shared/constants/api';\nimport { $user } from '../../../../shared/constants/user';\nimport { IDigitalPropertiesListResponse, IWorkspaceIDItem } from '../../../../shared/interfaces/digital-property.interface';\nimport { IUserSignupResponse, IUserSignUpRequest } from '../../../../shared/interfaces/user-authentication.interface';\nimport { EmptyObject } from '../../../../shared/interfaces/empty-object.interface';\nimport { IUserPreferencesServerResponse } from '../../../../shared/interfaces/user-preference.interface';\nimport { $userPreferenceFilter, userPreferenceScope } from '../../../../shared/constants/user-preferences';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { RestService } from '../rest.service';\nimport { IImageSrcResponse } from '../../../../shared/interfaces/common.interface';\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport { IRecentUserWorkspace } from '../../../../shared/interfaces/recent-resources.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserRestAPI {\n private restBuilder: RestBuilder;\n\n constructor(\n private httpClient: HttpClient,\n private restService: RestService,\n ) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /user/:id\n public getUserById(userId: string): Observable {\n const url: string = this.restBuilder.create().user(userId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /user/authenticated\n public getAuthenticatedUser(): Observable {\n const url: string = this.restBuilder.create().user().authenticated().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /admin/user/:id\n public updateSelectedUserProfile(formData: IUserProfileFormData, id: string): Observable {\n const url: string = this.restBuilder.create().admin().user(id).getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // PUT /workspaces/:workspaceId/user/:userId\n public updateSelectedUserProfileAsWorkspaceAdmin(formData: FormData, workspaceId: string, userId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).user(userId).getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // PUT /user/:id\n public saveUser(formData: FormData): Observable {\n const url: string = this.restBuilder.create().user().getApiUrl();\n\n const headers: HttpHeaders = new HttpHeaders();\n\n headers.set('Content-Type', null);\n headers.set('Accept', 'multipart/form-data');\n\n return this.httpClient.put(url, formData, { headers: headers });\n }\n\n // GET /user/mfa\n public getMfaRegistrationQr(): Observable {\n const url: string = this.restBuilder.create().user().mfa().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /user/mfa\n public verifyAndEnableMfa(request: IMfaTokenVerificationRequest): Observable {\n const url: string = this.restBuilder.create().user().mfa().getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // DELETE /user/mfa\n public disableMfa(): Observable {\n const url: string = this.restBuilder.create().user().mfa().getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // DELETE /user/:userId/mfa\n public disableMfaForUser(userId: string): Observable {\n const url: string = this.restBuilder.create().user(userId).mfa().getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /user/mfa/status\n public getMfaStatus(): Observable {\n const url: string = this.restBuilder.create().user().mfa().status().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /user/:userId/mfa/status\n public getMfaStatusForUser(userId: string): Observable {\n const url: string = this.restBuilder.create().user(userId).mfa().status().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /user/login/mfa\n public mfaLogin(request: IMfaLoginRequest): Observable> {\n const url: string = this.restBuilder.create().user().login().mfa().getApiUrl();\n const options: { observe: 'response' } = {\n observe: 'response',\n };\n\n return this.httpClient.post<{ userId: string }>(url, request, options);\n }\n\n // PUT /user/deactivate\n public deactivateAccount(formData: any): Observable {\n const url: string = this.restBuilder.create().user().deactivate().getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // POST /user/verifyEmail\n public verifyEmail(token: string): Observable {\n const url: string = this.restBuilder.create().user().verifyEmail().getApiUrl();\n\n const data: { token: string } = {\n token: token,\n };\n\n return this.httpClient.post(url, data);\n }\n\n // POST /user/verifyResetPasswordToken\n public verifyResetPasswordToken(token: string): Observable<{ user: { id: string } }> {\n const url: string = this.restBuilder.create().user().verifyResetPasswordToken().getApiUrl();\n\n const data: { token: string } = {\n token: token,\n };\n\n return this.httpClient.post<{ user: { id: string } }>(url, data);\n }\n\n // POST /auth/status\n public authStatus(): Observable> {\n const url: string = this.restBuilder.create().auth().status().getApiUrl();\n\n const headers: HttpHeaders = new HttpHeaders();\n\n headers.set('Cache-Control', 'no-cache');\n\n return this.httpClient.get(url, {\n headers: headers,\n observe: 'response',\n });\n }\n\n // POST /user/login\n public login(data: any): Observable> {\n const url: string = this.restBuilder.create().user().login().getApiUrl();\n\n return this.httpClient.post<{ userId: string; mfaRequired: boolean }>(url, data, { observe: 'response' });\n }\n\n // POST /user/logout\n public logout(): Observable {\n const url: string = this.restBuilder.create().user().logout().getApiUrl();\n\n return this.httpClient.post(url, null);\n }\n\n // POST /user/sign-up\n public signup(data: IUserSignUpRequest): Observable {\n const url: string = this.restBuilder.create().user().signup().getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n // POST /user/resetPassword\n public resetPassword(email: string): Observable {\n const url: string = this.restBuilder.create().user().resetPassword().getApiUrl();\n\n const data: { email: string } = {\n email: email,\n };\n\n return this.httpClient.post>(url, data);\n }\n\n // POST /user/resend-activation-link\n public resendActivationLink(email: string): Observable {\n const url: string = this.restBuilder.create().user().resendActivationLink().getApiUrl();\n\n const data: { email: string } = {\n email: email,\n };\n\n return this.httpClient.post>(url, data);\n }\n\n // POST /user/resend-visitor-activation-link\n public resendVisitorActivationLink(email: string): Observable {\n const url: string = this.restBuilder.create().user().resendVisitorActivationLink().getApiUrl();\n\n const data: { email: string } = {\n email: email,\n };\n\n return this.httpClient.post(url, data);\n }\n\n // PUT /user/createNewPassword\n public createNewPassword(password: string, verificationToken: string): Observable {\n const url: string = this.restBuilder.create().user().createNewPassword().getApiUrl();\n\n const data: { password: string; token: string } = {\n password: password,\n token: verificationToken,\n };\n\n return this.httpClient.put>(url, data);\n }\n\n // PUT /user/workspaces\n public switchUserToWorkspace(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().user().workspaces().getApiUrl();\n\n const data: Partial = {\n [$user.lastUsedWorkspace]: workspaceId,\n };\n\n return this.httpClient.put(url, data);\n }\n\n // PUT /user/digital_properties\n public switchUserToDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder.create().user().digitalProperties().getApiUrl();\n\n const data: Partial = {\n [$user.lastUsedDigitalProperty]: digitalPropertyId,\n [$user.lastUsedWorkspace]: workspaceId,\n };\n\n return this.httpClient.put(url, data);\n }\n\n // GET /user/preferences\n public getUserPreferences(scope: string, workspaceId?: string, projectId?: string): Observable {\n const url: string = this.restBuilder.create().user().preferences(scope, workspaceId).getApiUrl();\n\n let params: HttpParams = new HttpParams();\n if (SharedCommonUtility.notNullish(projectId)) {\n params = params.set($userPreferenceFilter.projectId, projectId);\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /user/:userId/preferences\n public getUserPreferencesForUser(\n scope: string,\n userId: string,\n workspaceId?: string,\n projectId?: string,\n ): Observable {\n const url: string = this.restBuilder.create().user(userId).preferences(scope, workspaceId).getApiUrl();\n\n let params: HttpParams = new HttpParams();\n if (SharedCommonUtility.notNullish(projectId)) {\n params = params.set($userPreferenceFilter.projectId, projectId);\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // PUT /user/preferences/:workspaceId?\n public updateUserPreferences(\n preferences: { [key: string]: any },\n scope: userPreferenceScope,\n workspaceId?: string,\n ): Observable {\n const url: string = this.restBuilder.create().user().preferences(scope, workspaceId).getApiUrl();\n\n return this.httpClient.put(url, preferences);\n }\n\n // PUT /user/:userId/preferences/:workspaceId?\n public updateUserPreferencesForUser(\n preferences: { [key: string]: any },\n scope: userPreferenceScope,\n userId: string,\n workspaceId?: string,\n ): Observable {\n const url: string = this.restBuilder.create().user(userId).preferences(scope, workspaceId).getApiUrl();\n\n return this.httpClient.put(url, preferences);\n }\n\n // GET /user/workspaces/activityLogs\n public getUserWorkspacesActivityLogs(\n queryParams: IHttpQueryOptions,\n skipLoader?: boolean,\n ): Observable {\n const url: string = this.restBuilder.create().user().workspaces().activityLogs().getApiUrl();\n\n let params: HttpParams = new HttpParams();\n for (const [field, value] of Object.entries(queryParams)) {\n params = params.set(field, value);\n }\n\n return this.httpClient.get(url, {\n params,\n headers: {\n [ApiHeaderOption.skipLoader]: skipLoader === true ? 'true' : 'false',\n },\n });\n }\n\n // GET /user/workspaces/activityLogs/count\n public getUserNewNotificationsCount(): Observable {\n const url: string = this.restBuilder.create().user().workspaces().activityLogs().count().getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /user/digital-properties\n public getAvailableDigitalProperties(typeIds?: string[]): Observable {\n const url: string = this.restBuilder.create().user().digitalProperties().getApiUrl();\n let params: HttpParams = new HttpParams();\n\n if (SharedCommonUtility.notNullishOrEmpty(typeIds)) {\n params = params.set(ApiQueryOption.typeIds, typeIds.join(','));\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // PUT /user/workspaces/activityLogs\n public setUserWorkspacesActivityLogsAsViewed(\n setActivityLogsAsViewedRequest: ISetWorkspaceActivityLogsAsViewedRequest,\n ): Observable {\n const url: string = this.restBuilder.create().user().workspaces().activityLogs().getApiUrl();\n\n return this.httpClient.put(url, setActivityLogsAsViewedRequest);\n }\n\n // GET /users\n public getUsers(queryParams: IHttpQueryOptions): Observable {\n const url: string = this.restBuilder.create().users().getApiUrl();\n\n const query: Record = {};\n\n if (queryParams && typeof queryParams[ApiQueryOption.limit] === 'number') {\n query[ApiQueryOption.limit] = String(queryParams[ApiQueryOption.limit]);\n }\n\n if (typeof queryParams[ApiQueryOption.skip] === 'number') {\n query[ApiQueryOption.skip] = String(queryParams[ApiQueryOption.skip]);\n }\n\n if (queryParams && typeof queryParams[ApiQueryOption.term] === 'string') {\n query[ApiQueryOption.term] = window.encodeURIComponent(String(queryParams[ApiQueryOption.term])).trim();\n }\n\n if (queryParams && typeof queryParams[ApiQueryOption.includeMe] === 'boolean') {\n query[ApiQueryOption.includeMe] = window.encodeURIComponent(String(queryParams[ApiQueryOption.includeMe])).trim();\n }\n\n if (queryParams && typeof queryParams[ApiQueryOption.sortBy] === 'string') {\n query[ApiQueryOption.sortBy] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortBy])).trim();\n }\n\n if (queryParams && typeof queryParams[ApiQueryOption.sortOrder] === 'string') {\n query[ApiQueryOption.sortOrder] = window.encodeURIComponent(String(queryParams[ApiQueryOption.sortOrder])).trim();\n }\n\n if (queryParams && typeof queryParams[ApiQueryOption.status] !== 'undefined') {\n query[ApiQueryOption.status] = queryParams[ApiQueryOption.status];\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /users/change-emails/download\n public changeEmailsDownloadTemplate(): Observable {\n const url: string = this.restBuilder.create().users().changeEmails().download().getApiUrl();\n return this.restService.download(url);\n }\n\n // POST /users/update-emails\n public updateEmails(fileForm: FormData): Observable {\n const url: string = this.restBuilder.create().users().updateEmails().getApiUrl();\n return this.httpClient.post(url, fileForm);\n }\n\n public getAvailableDigitalPropertyIds(): Observable {\n const url: string = this.restBuilder.create().user().workspaces().allIds().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n public checkAccessToProperty(digitalPropertyId: string, workspaceId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .user()\n .digitalProperty()\n .query(new HttpParams({ fromObject: { workspace: workspaceId, digitalProperty: digitalPropertyId } }))\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /user/changePassword\n public changePassword(passwordSettings: IUserPasswordSettings): Observable {\n const url: string = this.restBuilder.create().user().changePassword().getApiUrl();\n return this.httpClient.put(url, passwordSettings);\n }\n\n // POST /user/verifyPreviousPassword\n public verifyPreviousPassword(password: string): Observable {\n const url: string = this.restBuilder.create().user().verifyPreviousPassword().getApiUrl();\n return this.httpClient.post(url, { password });\n }\n\n // POST /user/verifyPreviousPasswordVisitor\n public verifyPreviousPasswordVisitor(password: string, emailToken: string, skipLoader: boolean = false): Observable {\n const url: string = this.restBuilder.create().user().verifyPreviousPasswordVisitor().getApiUrl();\n\n let headers: HttpHeaders = null;\n if (skipLoader) {\n headers = new HttpHeaders({\n [ApiHeaderOption.skipLoader]: 'true',\n });\n }\n\n return this.httpClient.post(\n url,\n { password, emailToken },\n {\n headers,\n },\n );\n }\n\n public getAvatarUrl(userId: string): Observable {\n const url: string = this.restBuilder.create().user().avatar(userId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /user/email\n public getEmailByToken(token: string): Observable {\n const url: string = this.restBuilder.create().user().email().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: { [ApiQueryOption.confirmEmailToken]: token },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /user/recent-workspaces\n public getRecentWorkspaces(toolName: AccessibilityAuditToolNames): Observable {\n const url: string = this.restBuilder.create().user().recentWorkspaces().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: { [ApiQueryOption.toolName]: toolName },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { expand, reduce } from 'rxjs/operators';\nimport { pickBy } from 'lodash';\n\nimport { Api, ApiHeaderOption, ApiQueryOption } from '../../../../shared/constants/api';\nimport { $sortingOrder } from '../../../../shared/constants/sort';\nimport { IAuditFinding } from '../../../../shared/interfaces/audit-finding.interface';\nimport { IComment } from '../../../../shared/interfaces/comment.interface';\nimport {\n IDashboardManualEvaluationsBySeverity,\n TopWcagKeyNumPair,\n} from '../../../../shared/interfaces/dashboard-scan-result.interface';\nimport {\n ICreateDigitalPropertyRequest,\n IDigitalPropertiesMonitoringResponse,\n IDigitalProperty,\n IDigitalPropertyDetails,\n IDigitalPropertyLatestScanResults,\n IDigitalPropertyMonitoring,\n IDigitalPropertyMonitoringResponse,\n IDigitalPropertyOverview,\n IQuickMonitoringSetupRequest,\n IValidateBulkUpload,\n} from '../../../../shared/interfaces/digital-property.interface';\nimport { IHttpQueryOptions } from '../../../../shared/interfaces/http.query.interface';\nimport {\n IGetManualEvaluationsResponse,\n IManualAudit,\n IManualAuditIssueServerResponse,\n IManualEvalCreateRequest,\n IManualEvaluation,\n IManualEvaluationAuditListItem,\n IPopulatedManualAudit,\n IPopulatedManualAuditIssueServerResponse,\n} from '../../../../shared/interfaces/manual-audit.interface';\nimport { IScanTag, IScanTagRequest, IScanTagServerResponse } from '../../../../shared/interfaces/scan-tag.interface';\nimport { IManualScanEdit, IScan } from '../../../../shared/interfaces/scan.interface';\nimport { IGetShortLinkResponse } from '../../../../shared/interfaces/short-link.interface';\nimport { ITrainingVideo, ITrainingVideosServerResponse } from '../../../../shared/interfaces/training-video.interface';\nimport { IUploadClient } from '../../../../shared/interfaces/uploads.interface';\nimport { IWorkspaceRoleClient } from '../../../../shared/interfaces/workspace-role.interface';\nimport { IGetWorkspaceUsersFilterRequest } from '../../../../shared/interfaces/workspace-user.interface';\nimport {\n ICreateWorkspaceClientRequest,\n ICreateWorkspacePlusDpRequest,\n IGetWorkspacesResponse,\n IValidateWorkspaceNameResponse,\n IWorkspace,\n IWorkspaceClient,\n IWorkspaceSummary,\n} from '../../../../shared/interfaces/workspace.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { IRuleAuditHistoryManualLineItem } from '../../../../shared/interfaces/rule-audit-history.interface';\nimport {\n IManualAuditFindingServerResponse,\n IManualAuditQuery,\n IManualFindingBulkStatusChangeRequest,\n} from '../../../../shared/interfaces/manual-audit-finding.interface';\nimport { RestService } from '../rest.service';\nimport { $auditIssueFields } from '../../../../shared/constants/manual-audit-issues';\nimport { IManualAuditHistoryRequest } from '../../interfaces/manual-evaluation.interface';\nimport { IGetWorkspaceDashboardResponse } from '../../../../shared/interfaces/ws-dashboard.interface';\nimport { $digitalProperty } from '../../../../shared/constants/digital-properties';\nimport { EmptyObject } from '../../../../shared/interfaces/empty-object.interface';\nimport { IManualEvaluationDataSnapshot } from '../../../../shared/interfaces/manual-evaluation-data-snapshot.interface';\nimport { IUser } from '../../../../shared/interfaces/user.interface';\nimport { IAsyncReportResponse, IDashboardReportResponse } from '../../../../shared/interfaces/async-report.interface';\nimport {\n IDigitalPropertyMetrics,\n IGetDigitalPropertyMetricsListQuery,\n IGetDigitalPropertyMetricsSnapshotsQuery,\n IPaginatedDigitalPropertyMetricsList,\n} from '../../../../shared/interfaces/digital-property-metrics.interface';\nimport { IWorkspaceMetrics } from '../../../../shared/interfaces/workspace-metrics.interface';\nimport { AiSummaryKey } from '../../../../shared/constants/ai-data-summary';\nimport { IDataSummaryClient, ISimpleDataSummary } from '../../../../shared/interfaces/ai-data-summary.interface';\nimport { IConformanceScoreReport, IConformanceScoreReportQuery } from '../../../../shared/interfaces/conformance-score.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspacesRestAPI {\n private restBuilder: RestBuilder;\n\n constructor(\n private httpClient: HttpClient,\n private restService: RestService,\n ) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /workspaces/:workspaceId\n public getWorkspace(id: string): Observable {\n const url: string = this.restBuilder.create().workspaces(id).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /admin/workspaces/bulk/download\n public downloadCreateBulkWorkspacesTemplate(): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().bulk().download().getApiUrl();\n\n return this.restService.download(url);\n }\n\n // GET /workspaces/:workspaceId/dashboard?toolName=\n public getDashboard(workspaceId: string, toolName: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).dashboard().getApiUrl();\n\n const params = new HttpParams({ fromObject: { [ApiQueryOption.toolName]: toolName } });\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspaces/:workspaceId/dashboard/metrics?toolName=\n public getWorkspaceMetrics(workspaceId: string, toolName: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).dashboard().metrics().getApiUrl();\n\n const params = new HttpParams({ fromObject: { [ApiQueryOption.toolName]: toolName } });\n\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspace/:workspaceId/digital-property/report/download\n public downloadPortfolioReport(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().report().download().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspace/:workspaceId/digital-property/report/download\n public generatePortfolioReport(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().report().download().getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n\n // GET /workspace/names\n public validateNameUniqueness(name: string, tenantId: string): Observable {\n const url: string = this.restBuilder.create().workspaces().names().getApiUrl();\n const params: HttpParams = new HttpParams({\n fromObject: {\n [ApiQueryOption.name]: name,\n [ApiQueryOption.tenantId]: tenantId,\n },\n });\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspaces\n public getAllUserWorkspaces(queryOptions: IHttpQueryOptions): Observable {\n const url: string = this.restBuilder.create().workspaces().getApiUrl();\n\n const query: { [key: string]: string } = {\n [ApiQueryOption.filterByUserId]: queryOptions[ApiQueryOption.filterByUserId],\n [ApiQueryOption.limit]: String(queryOptions[ApiQueryOption.limit]),\n [ApiQueryOption.skip]: String(queryOptions[ApiQueryOption.skip]),\n };\n\n if (typeof queryOptions[ApiQueryOption.term] === 'string') {\n query[ApiQueryOption.term] = window.encodeURIComponent(String(queryOptions[ApiQueryOption.term])).trim();\n }\n\n if (typeof queryOptions[ApiQueryOption.sortByName] === 'string') {\n query[ApiQueryOption.sortByName] = window.encodeURIComponent(String(queryOptions[ApiQueryOption.sortByName])).trim();\n }\n\n if (typeof queryOptions[ApiQueryOption.status] === 'string' && queryOptions[ApiQueryOption.status] !== $sortingOrder.all) {\n query[ApiQueryOption.status] = window.encodeURIComponent(String(queryOptions[ApiQueryOption.status])).trim();\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: pickBy(query, SharedCommonUtility.notNullish),\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // POST /admin/workspaces\n public createWorkspacePlusDp(data: ICreateWorkspacePlusDpRequest): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n // POST /admin/workspaces\n public createWorkspace(data: ICreateWorkspaceClientRequest): Observable {\n const url: string = this.restBuilder.create().admin().workspaces().getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n // PUT /workspaces/:workspaceId\n public updateWorkspace(workspaceId: string, formData: any): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // PUT /admin/workspaces/:workspaceId\n public updateWorkspaceAsAdmin(workspaceId: string, formData: any): Observable {\n const url: string = this.restBuilder.create().admin().workspaces(workspaceId).getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // DELETE /admin/workspaces/:workspaceId\n public removeWorkspace(id: string): Observable {\n const url: string = this.restBuilder.create().admin().workspaces(id).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /workspaces/export\n public exportWorkspaces(queryParams: IHttpQueryOptions): Observable {\n const url: string = this.restBuilder.create().workspaces().export().getApiUrl();\n\n return this.restService.download(url);\n }\n\n // GET /workspaces/[workspace id]/users\n public getUsers(workspaceId: string, filters?: IGetWorkspaceUsersFilterRequest): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).users().getApiUrl();\n\n const { status, includeStaffUsers } = filters || {};\n\n let params: HttpParams = new HttpParams();\n if (SharedCommonUtility.notNullishOrEmpty(status)) {\n params = params.set(ApiQueryOption.status, Array.isArray(status) ? status.join(',') : status);\n }\n\n if (SharedCommonUtility.notNullish(includeStaffUsers)) {\n params = params.set(ApiQueryOption.includeStaffUsers, includeStaffUsers);\n }\n return this.httpClient.get(url, { params });\n }\n\n // GET /workspaces/[workspace id]/user/[user id]/roles\n public getUserWorkspaceRoles(\n workspaceId: string,\n userId: string,\n isAdminRequest: boolean = false,\n ): Observable {\n const urlBuilder: RestBuilder = isAdminRequest ? this.restBuilder.create().admin() : this.restBuilder.create();\n const url: string = urlBuilder.workspaces(workspaceId).user(userId).roles().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /admin/workspaces/:workspaceId/training-videos\n public workspaceAddTrainingVideo(workspaceId: string, data: ITrainingVideo): Observable {\n const url: string = this.restBuilder.create().admin().workspaces(workspaceId).training().videos().getApiUrl();\n\n return this.httpClient.post(url, data);\n }\n\n // PUT /admin/workspaces/:workspaceId/training-videos/:videoId\n public workspaceUpdateTrainingVideo(workspaceId: string, videoId: string, data: ITrainingVideo): Observable {\n const url: string = this.restBuilder.create().admin().workspaces(workspaceId).training().videos(videoId).getApiUrl();\n\n return this.httpClient.put(url, data);\n }\n\n // DELETE /admin/workspaces/:workspaceId/training-videos/:videoId\n public workspaceDeleteTrainingVideo(workspaceId: string, videoId: string): Observable {\n const url: string = this.restBuilder.create().admin().workspaces(workspaceId).training().videos(videoId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // Workspace Digital Properties Admin\n // GET /admin/workspaces/:workspaceId/digital-properties\n public getAllDigitalPropertiesByWorkspaceId(workspaceId: string): Observable {\n const digitalProperyBuilder: RestBuilder = this.restBuilder.create().admin().workspaces(workspaceId).digitalProperties();\n\n return this.httpClient.get(digitalProperyBuilder.getApiUrl());\n }\n\n // GET /workspaces/:workspaceId/training-videos/:videoId\n public workspaceGetTrainingVideo(workspaceId: string, videoId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).training().videos(videoId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/training-videos\n public workspaceGetTrainingVideos(\n workspaceId: string,\n queryParams: IHttpQueryOptions,\n limit: number,\n skip: number = 0,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).training().videos().getApiUrl();\n\n const query: { [key: string]: string } = {};\n\n if (typeof limit === 'number') {\n query[ApiQueryOption.limit] = String(limit);\n }\n\n if (typeof skip === 'number') {\n query[ApiQueryOption.skip] = String(skip);\n }\n\n if (typeof queryParams[ApiQueryOption.sortCreatedAt] === 'string') {\n query[ApiQueryOption.sortCreatedAt] = String(queryParams[ApiQueryOption.sortCreatedAt]);\n }\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: query,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:id\n public getDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty(digitalPropertyId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:id/metrics\n public getMetricsForDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .metrics()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property-metrics\n public getDigitalPropertyMetricsList(\n workspaceId: string,\n params: IGetDigitalPropertyMetricsListQuery,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalPropertyMetrics().getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: { ...params },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property-metrics/snapshots\n public getDigitalPropertyMetricsSnapshots(\n workspaceId: string,\n params: IGetDigitalPropertyMetricsSnapshotsQuery,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalPropertyMetrics().snapshots().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: { ...params },\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations\n public getAllManualEvaluations(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:scanId/manual-results\n public getManualEvaluationIssues(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n params: IManualAuditQuery,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults()\n .getApiUrl();\n\n if (typeof params[$auditIssueFields.issueId] === 'string') {\n params[$auditIssueFields.issueId] = window.encodeURIComponent(params[$auditIssueFields.issueId]);\n }\n\n if (typeof params[$auditIssueFields.summary] === 'string') {\n params[$auditIssueFields.summary] = window.encodeURIComponent(params[$auditIssueFields.summary]);\n }\n\n if (typeof params[$auditIssueFields.screen] === 'string') {\n params[$auditIssueFields.screen] = window.encodeURIComponent(params[$auditIssueFields.screen]);\n }\n\n const fetch = (lastId?: string): Observable =>\n this.httpClient.get(url, {\n params: new HttpParams({ fromObject: lastId ? { ...params, lastId: lastId } : { ...params } }),\n });\n\n return fetch().pipe(\n expand((v: IManualAuditFindingServerResponse) => (v.lastId ? fetch(v.lastId) : EMPTY)),\n reduce(\n (prev: IManualAuditFindingServerResponse, data: IManualAuditFindingServerResponse): IManualAuditFindingServerResponse => {\n return { ...data, findings: [...(prev?.findings || []), ...data.findings] };\n },\n ),\n );\n }\n\n public getManualRuleCategories(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .categories()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:scanId\n public updateManualEvaluationTitleById(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n title: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .getApiUrl();\n\n const body = {\n _id: scanId,\n title: title,\n };\n\n return this.httpClient.put(url, body);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:scanId/manual-audit-top-wcag\n public getManualEvaluationTopWcag(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualAuditTopWcag()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:scanId/manual-audit-issues-by-severity\n public getManualEvaluationIssuesBySeverity(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualAuditIssuesBySeverity()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-results/:manualAuditIssueId\n public getManualEvaluationIssue(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId\n public deleteManualEvaluationIssue(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/rule-history\n public getManualEvaluationIssueRuleAuditHistory(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditHistoryRequest: IManualAuditHistoryRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditHistoryRequest.scanId)\n .manualResults(manualAuditHistoryRequest.issueId)\n .ruleHistorySearch()\n .getApiUrl();\n\n return this.httpClient.post(url, { filter: manualAuditHistoryRequest.filter });\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/has-history-updates\n public getManualEvaluationIssueHasHistory(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditHistoryRequest: IManualAuditHistoryRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditHistoryRequest.scanId)\n .manualResults(manualAuditHistoryRequest.issueId)\n .hasHistory()\n .getApiUrl();\n\n return this.httpClient.post(url, { filter: manualAuditHistoryRequest.filter });\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/download\n public downloadManualEvaluationIssues(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n selectedFields: string[],\n formatColumns: string,\n params: IManualAuditQuery,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults()\n .download()\n .getApiUrl();\n\n return this.restService.download(url, {\n fields: selectedFields.join(','),\n formatColumns: formatColumns,\n ...(params as Record),\n });\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/status\n public updateQAIssueStatus(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .status()\n .getApiUrl();\n return this.httpClient.put(url, body);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:scanId/status\n public bulkUpdateFindingStatuses(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n request: IManualFindingBulkStatusChangeRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .status()\n .getApiUrl();\n return this.httpClient.put(url, request);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/dismiss\n public dismissQAIssue(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .dismiss()\n .getApiUrl();\n return this.httpClient.put(url, body);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/dismiss\n public dismissQAIssues(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .dismiss()\n .getApiUrl();\n return this.httpClient.put(url, body);\n }\n\n public restoreQAIssue(\n body: FormData,\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .restore()\n .getApiUrl();\n return this.httpClient.put(url, body);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId\n public updateQAIssue(\n workspaceId: string,\n scanId: string,\n digitalPropertyId: string,\n manualAuditIssueId: string,\n issue: FormData,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .getApiUrl();\n return this.httpClient.put(url, issue);\n }\n\n // POST /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/attachments\n public uploadManualEvaluationIssueAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachment: FormData,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .attachments()\n .getApiUrl();\n\n return this.httpClient.post(url, attachment);\n }\n\n // PUT /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/attachments/:attachmentId\n public updateManualEvaluationIssueAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachmentId: string,\n update: FormData,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .attachments(attachmentId)\n .getApiUrl();\n\n return this.httpClient.put(url, update);\n }\n\n // DELETE /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manual-evaluations-id/manual-audit-issues/:manualAuditIssueId/attachments/:attachmentId\n public deleteManualEvaluationIssueAttachment(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n manualAuditIssueId: string,\n attachmentId: string,\n ): Observable<{ _id: string }> {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .manualResults(manualAuditIssueId)\n .attachments(attachmentId)\n .getApiUrl();\n\n return this.httpClient.delete<{ _id: string }>(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property\n public getWorkspaceDigitalProperties(\n workspaceId: string,\n limit: number,\n skip: number,\n populateRemediationProgress: boolean = true,\n populateMonitoring: boolean = true,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().getApiUrl();\n\n const params: { [param: string]: string | readonly string[] } = {};\n\n if (typeof limit === 'number') {\n params.limit = String(limit);\n }\n\n if (typeof skip === 'number') {\n params.skip = String(skip);\n }\n\n params[Api.populateRemediationProgress] = String(populateRemediationProgress);\n params[Api.populateMonitoring] = String(populateMonitoring);\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // POST /workspaces/:workspacesId/digital-property\n public createWorkspaceDigitalProperty(\n workspaceId: string,\n formData: ICreateDigitalPropertyRequest,\n ): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().getApiUrl();\n\n return this.httpClient.post(url, formData);\n }\n\n // POST /workspaces/:workspacesId/digital-property/validate\n public validateDigitalPropertyBulkUpload(workspaceId: string, fileForm: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().validate().getApiUrl();\n\n return this.httpClient.post(url, fileForm);\n }\n\n // GET /workspaces/:workspacesId/digital-property/bulk\n public downloadDigitalPropertyTemplate(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().bulk().download().getApiUrl();\n\n return this.restService.download(url);\n }\n\n // POST /workspaces/:workspacesId/digital-property/bulk\n public createBulkDigitalProperty(workspaceId: string, fileForm: FormData): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().bulk().getApiUrl();\n\n return this.httpClient.post(url, fileForm);\n }\n\n // PUT /workspaces/:workspaceId/digital-property/:id\n public updateDigitalProperty(formData: IDigitalProperty, id: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(formData[$digitalProperty.workspaceId])\n .digitalProperty(id)\n .getApiUrl();\n\n return this.httpClient.put(url, formData);\n }\n\n // DELETE /workspaces/:workspaceId/digital-property/:id\n public removeDigitalProperty(id: string, workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty(id).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /workspaces/:workspaceId/digital-property/:digitalPropertyId/manualEvaluations/:evaluationScanId/manualAuditIssue/:manualAuditIssueId/comments\n public postManualAuditIssueComment(\n formData: FormData,\n workspaceId: string,\n digitalPropertyId: string,\n evaluationScanId: string,\n manualIssueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(evaluationScanId)\n .manualResults(manualIssueId)\n .comments()\n .getApiUrl();\n return this.httpClient.post(url, formData);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-evaluations/:scanId\n public getManualEvaluation(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/manual-evaluations\n public getManualEvaluations(\n workspaceId: string,\n digitalPropertyId: string,\n params: { searchTerm: string },\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: params,\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/manualEvaluations/:evaluationId/manualAuditIssue/:manualAuditIssueId/comments\n public getManualAuditIssueComments(\n evaluationId: string,\n issueId: string,\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(evaluationId)\n .manualResults(issueId)\n .comments()\n .getApiUrl();\n return this.httpClient.get(url);\n }\n\n // DELETE /workspaces/:workspaceId/digital-property/:digitalPropertyId/manualEvaluations/:evaluationId/manualAuditIssue/:manualAuditIssueId/comments/:commentId\n public deleteManualAuditIssueComment(\n workspaceId: string,\n digitalPropertyId: string,\n evaluationScanId: string,\n issueId: string,\n commentId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(evaluationScanId)\n .manualResults(issueId)\n .comments(commentId)\n .getApiUrl();\n\n return this.httpClient.put(url, null);\n }\n\n public getDigitalPropertyMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .monitoring()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/monitoring/latest-scan\n public getDigitalPropertyLatestAndPreviousMonitoringScanResults(\n workspaceId: string,\n digitalPropertyId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .monitoring()\n .latestScan()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n public setDigitalPropertyQuickMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n monitoring: IQuickMonitoringSetupRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .quickMonitoring()\n .getApiUrl();\n\n return this.httpClient.put(url, monitoring);\n }\n\n // PUT /workspaces/:workspaceId/digital-property/:digitalPropertyId/monitoring\n public updateDigitalPropertyMonitoring(\n workspaceId: string,\n digitalPropertyId: string,\n monitoring: IDigitalPropertyMonitoring,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .monitoring()\n .getApiUrl();\n\n return this.httpClient.put(url, monitoring);\n }\n\n public removeDigitalPropertyMonitoring(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .monitoring()\n .getApiUrl();\n\n return this.httpClient.put(url, null);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan-tags\n public getScanTagsFromDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scanTags()\n .getApiUrl();\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan-tags\n public createScanTag(workspaceId: string, digitalPropertyId: string, scanTag: IScanTagRequest): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scanTags()\n .getApiUrl();\n\n return this.httpClient.post(url, scanTag);\n }\n\n public deleteScanTag(workspaceId: string, digitalPropertyId: string, scanTagId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scanTags(scanTagId)\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan-tags/:scanTagId\n public getScanTag(workspaceId: string, digitalPropertyId: string, scanTagId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scanTags(scanTagId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PUT /workspaces/:workspaceId/digital-property/:digitalPropertyId/scan-tags/:scanTagId\n public updateScanTag(\n workspaceId: string,\n digitalPropertyId: string,\n scanTagId: string,\n scanTag: IScanTagRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .scanTags(scanTagId)\n .getApiUrl();\n\n return this.httpClient.put(url, scanTag);\n }\n\n // PUT /workspaces/:workspaceId/digital-property/:digitalPropertyId/archive\n public archiveProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .archive()\n .getApiUrl();\n\n return this.httpClient.put(url, {});\n }\n\n public restoreProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .restore()\n .getApiUrl();\n\n return this.httpClient.put(url, {});\n }\n\n // GET /workspaces/active\n public getActiveWorkspaces(): Observable {\n const url: string = this.restBuilder.create().workspaces().active().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/active/new-security\n public getActiveWorkspacesV2(): Observable {\n const url: string = this.restBuilder.create().workspaces().active().newSecurity().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/active/notifications\n public getMyActiveWorkspacesWithNotifications(): Observable {\n const url: string = this.restBuilder.create().workspaces().active().notifications().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /workspaces/:workspaceId/digital-property/is-duplicated\n public existingKeyValues(workspaceId: string, key: keyof IDigitalProperty, propertyId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty().existingKeyValues().getApiUrl();\n\n const params: HttpParams = new HttpParams({\n fromObject: { [key]: '', ...(propertyId ? { _id: propertyId } : {}) },\n });\n return this.httpClient.get(url, {\n params: params,\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n public getManualAuditIssueShortLink(\n wsId: string,\n dpId: string,\n scanId: string,\n issueId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(wsId)\n .digitalProperty(dpId)\n .manualEvaluations(scanId)\n .manualResults()\n .shortLink()\n .pathParam(issueId)\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/summary\n public getSummary(workspaceId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).summary().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/dashboard/report?toolName=\n public getWorkspaceReport(workspaceId: string, toolName: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).dashboard().report().getApiUrl();\n\n return this.httpClient.get(url, { params: { [ApiQueryOption.toolName]: toolName } });\n }\n\n // POST /workspaces/:workspaceId/dashboard/report?toolName=\n public generateWorkspaceReport(workspaceId: string, toolName: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).dashboard().report().getApiUrl();\n return this.httpClient.post(url, {}, { params: { [ApiQueryOption.toolName]: toolName } });\n }\n\n public getDigitalPropertyOverview(workspaceId: string, dpId: string): Observable {\n const url: string = this.restBuilder.create().workspaces(workspaceId).digitalProperty(dpId).overviewData().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/data-snapshots\n public getManualEvaluationDataSnapshots(\n workspaceId: string,\n digitalPropertyId: string,\n scanId: string,\n limit: number,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(scanId)\n .dataSnapshots()\n .getApiUrl();\n\n const httpParams: HttpParams = new HttpParams({\n fromObject: {\n limit,\n },\n });\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/ai/summary/:summaryCode\n public getManualEvaluationAuditSummary(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n regenerate: boolean = false,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditId)\n .ai()\n .dataSummary(summaryCode)\n .getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n params: { [ApiQueryOption.regenerate]: regenerate },\n });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/ai/summary/:summaryCode/id/:summaryId\n public getManualEvaluationAuditSummaryById(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n summaryId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditId)\n .ai()\n .dataSummary(summaryCode)\n .pathParam(Api.id)\n .id(summaryId)\n .getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // GET /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/ai/summary/:summaryCode/list\n public getManualEvaluationAuditSummaryList(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryCode: AiSummaryKey,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditId)\n .ai()\n .dataSummary(summaryCode)\n .list()\n .getApiUrl();\n\n return this.httpClient.get(url, {\n headers: {\n [ApiHeaderOption.skipLoader]: 'true',\n },\n });\n }\n\n // PUT /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/ai/summary/rating\n public rateManualEvaluationAiSummary(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n summaryId: string,\n rating: number,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditId)\n .ai()\n .dataSummary()\n .rating()\n .getApiUrl();\n\n return this.httpClient.put(url, { summaryId, rating });\n }\n\n // PUT /workspaces/:workspaceId/digital-properties/:digitalPropertyId/userway\n public createUserWayOrganizationSite(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .userway()\n .getApiUrl();\n\n return this.httpClient.put(url, null);\n }\n\n // DELETE /workspaces/:workspaceId/digital-properties/:digitalPropertyId/userway\n public deleteUserWayOrganizationSite(workspaceId: string, digitalPropertyId: string): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .userway()\n .getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // POST /workspaces/:workspaceId/digital-properties/:digitalPropertyId/manual-evaluations/:scanId/conformance-score-report\n public getOrCreateEvaluationConformanceScoreReport(\n workspaceId: string,\n digitalPropertyId: string,\n manualAuditId: string,\n query: IConformanceScoreReportQuery,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualAuditId)\n .conformanceScoreReport()\n .getApiUrl();\n\n const params = new HttpParams({ fromObject: { ...query } });\n\n return this.httpClient.post(url, {}, { params });\n }\n\n // POST /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations\n public createEmptyEvaluation(\n workspaceId: string,\n digitalPropertyId: string,\n request: IManualEvalCreateRequest,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations()\n .getApiUrl();\n\n return this.httpClient.post(url, request);\n }\n\n // GET /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manualEvaluationId/metadata\n public getEvaluationMetadata(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualEvaluationId)\n .metadata()\n .getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // PATCH /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manualEvaluationId/metadata\n public patchEvaluationMetadata(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n request: Partial,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualEvaluationId)\n .metadata()\n .getApiUrl();\n\n return this.httpClient.patch(url, request);\n }\n\n // POST /workspaces/:workspaceId/digitalProperty/:digitalPropertyId/manual-evaluations/:manualEvaluationId/archive/metadata\n public archiveEvaluationMetadata(\n workspaceId: string,\n digitalPropertyId: string,\n manualEvaluationId: string,\n ): Observable {\n const url: string = this.restBuilder\n .create()\n .workspaces(workspaceId)\n .digitalProperty(digitalPropertyId)\n .manualEvaluations(manualEvaluationId)\n .archive()\n .metadata()\n .getApiUrl();\n\n return this.httpClient.post(url, {});\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Router, NavigationEnd, ActivatedRoute, RoutesRecognized, Data, Event } from '@angular/router';\nimport { Subscription, Observable, of, ReplaySubject, Subject, ObservableInput } from 'rxjs';\nimport { filter, map, mergeMap, pairwise, skip, takeUntil } from 'rxjs/operators';\n\nimport { TranslateService } from '../translate/translate.service';\nimport { A11yService } from './a11y.service';\nimport { BusMessageChannels, BusMessageService } from './bus-message.service';\nimport { Api } from '../../../shared/constants/api';\nimport { TranslateArgs } from '../resolvers/feature-flag-translation.resolver';\n\n@Injectable({ providedIn: 'root' })\nexport class RoutingService implements OnDestroy {\n private subscriptions: Subscription;\n private routeChanged$: Subject;\n private pageTitleSnapshot: string;\n private pageDescriptionSnapshot: string;\n\n public readonly pageTitle$: ReplaySubject;\n public previousRoutePath: string;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private translateService: TranslateService,\n private a11yService: A11yService,\n private busMessageService: BusMessageService,\n ) {\n const changeRouterSubscription: Subscription = this.subscribeToRouterChange();\n const subscribeToTrackRouterPathSubscription: Subscription = this.subscribeToTrackRouterPath();\n\n this.subscriptions = new Subscription();\n this.subscriptions.add(changeRouterSubscription);\n this.subscriptions.add(subscribeToTrackRouterPathSubscription);\n\n this.routeChanged$ = new Subject();\n this.pageTitle$ = new ReplaySubject(1);\n }\n\n private notifyScreenReader(pageTitle: string): void {\n const message = this.translateService.instant('new_page_loaded', pageTitle);\n this.a11yService.setMessage(message);\n }\n\n private onRoutingChange = (routeData: Data): void => {\n this.routeChanged$.next();\n\n this.subscriptions.add(\n this.resolvePageTitle(routeData.title)\n .pipe(takeUntil(this.routeChanged$))\n .subscribe((pageTitle: string) => {\n this.pageTitleSnapshot = pageTitle;\n this.pageTitle$.next(pageTitle);\n this.notifyScreenReader(pageTitle);\n }),\n );\n\n this.subscriptions.add(\n this.resolvePageDescription(routeData.description)\n .pipe(takeUntil(this.routeChanged$))\n .subscribe((pageDescription: string) => {\n this.pageDescriptionSnapshot = pageDescription;\n }),\n );\n };\n\n private subscribeToRouterChange(): Subscription {\n const filterRoutes = (event: Event): event is NavigationEnd => {\n return event instanceof NavigationEnd;\n };\n\n const getActivatedRoute: any = (): ActivatedRoute => {\n return this.activatedRoute;\n };\n\n const findFirstChild: any = (route: ActivatedRoute): any => {\n let _route: ActivatedRoute = route;\n\n while (_route.firstChild) {\n _route = _route.firstChild;\n }\n\n return _route;\n };\n\n const getOnlyPrimary = (route: ActivatedRoute): boolean => {\n return route.outlet === 'primary';\n };\n\n const getRouteData = (route: ActivatedRoute): ObservableInput => {\n return route.data;\n };\n\n const subscription: Subscription = this.router.events\n .pipe(filter(filterRoutes), map(getActivatedRoute), map(findFirstChild), filter(getOnlyPrimary), mergeMap(getRouteData))\n .subscribe(this.onRoutingChange.bind(this));\n\n return subscription;\n }\n\n private subscribeToTrackRouterPath(): Subscription {\n return this.router.events\n .pipe(\n filter((e: Event): e is RoutesRecognized => {\n return e instanceof RoutesRecognized;\n }),\n pairwise(),\n )\n .subscribe((event: [RoutesRecognized, RoutesRecognized]) => {\n this.previousRoutePath = (event[0] as RoutesRecognized).urlAfterRedirects;\n });\n }\n\n public resolvePageTitle(args: TranslateArgs): Observable {\n return of(this.translateService.instant.apply(this.translateService, args));\n }\n\n public resolvePageDescription(args: TranslateArgs): Observable {\n return of(this.translateService.instant.apply(this.translateService, args));\n }\n\n public getPageTitle(): string {\n return this.pageTitleSnapshot ?? '';\n }\n\n public getPageDescription(): string {\n return this.pageDescriptionSnapshot ?? '';\n }\n\n public navigateOnPropertyChange(route: string[] = ['/', Api.dashboard]): Subscription {\n return this.busMessageService\n .from(BusMessageChannels.userSwitchedToDigitalProperty)\n .pipe(\n skip(1),\n mergeMap(async () => this.router.navigate(route)),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { IUser, IUserSmallItem } from '../../../shared/interfaces/user.interface';\nimport { $user, accountStatus } from '../../../shared/constants/user';\nimport { TranslateService } from '../translate/translate.service';\nimport { IRuleAuditHistoryGetQuery, IRuleAuditHistoryLineItem } from '../../../shared/interfaces/rule-audit-history.interface';\nimport { RuleAuditHistoryType } from '../../../shared/constants/rule-audit-history';\nimport { UserPropertyService } from './user-property.service';\nimport { RestService } from './rest.service';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { AuditToolNames } from '../../../shared/constants/audit-tool';\n\n@Injectable({ providedIn: 'root' })\nexport class RuleAuditHistoryService {\n constructor(\n private translateService: TranslateService,\n private restService: RestService,\n private userPropertyService: UserPropertyService,\n ) {}\n\n /**\n * For Toronto, this produces a message like 'December 17, 2020 at 2:16 p.m. EST by Mr John Doe'\n */\n public getStatusLine(date: Date | string, user: IUser | IUserSmallItem): string {\n const dateStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat([], {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n const timeStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat([], {\n hour: '2-digit',\n minute: '2-digit',\n timeZoneName: 'short',\n });\n\n const dateTimeOfComment: Date = new Date(date);\n\n const displayName: string = this.translateService.instant('manual_audit_issue_comments_user_timestamp', [\n dateStyle.format(dateTimeOfComment),\n timeStyle.format(dateTimeOfComment),\n user[$user.displayName],\n ]);\n\n if (user[$user.accountStatus] === accountStatus.active) {\n return displayName;\n }\n\n return `${displayName} (${this.translateService.instant('status_inactive')})`;\n }\n\n public getHistory(\n toolName: AuditToolNames,\n rule: string,\n type: RuleAuditHistoryType,\n data: IRuleAuditHistoryGetQuery,\n ): Observable {\n return this.userPropertyService.currentSelectedProperty().pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable => {\n return this.restService.getRuleAuditHistory(workspaceId, digitalPropertyId, toolName, type, rule, data);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport {\n IGetScansQuery,\n IGetScansServerResponse,\n IMobileScanOperatingSystem,\n IScan,\n} from '../../../shared/interfaces/scan.interface';\nimport { UserPropertyService } from './user-property.service';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { RestService } from './rest.service';\nimport { IMobileScanRuleInfo } from '../interfaces/mobile-scan.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanMobileService {\n constructor(\n private restService: RestService,\n private userPropertyService: UserPropertyService,\n ) {}\n\n public getSDKOperatingSystems(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable =>\n this.restService.getMobileSDKScansOperatingSystems(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public getEmulatorOperatingSystems(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable =>\n this.restService.getMobileEmulatorScansOperatingSystems(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public getMobileScansRules(workspaceId: string, digitalPropertyId: string): Observable {\n return this.restService.getMobileScansRules(workspaceId, digitalPropertyId);\n }\n\n public getMobileEmulatorScans(\n searchParams: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.restService.getMobileEmulatorScans(workspaceId, digitalPropertyId, searchParams, limit, skip, sortBy),\n ),\n );\n }\n\n public getMobileSDKScans(\n searchParams: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.restService.getMobileSDKScans(workspaceId, digitalPropertyId, searchParams, limit, skip, sortBy),\n ),\n );\n }\n\n public removeMobileEmulatorScan(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n return this.restService.removeMobileEmulatorScan(workspaceId, digitalPropertyId, scanId);\n }\n\n public removeMobileSDKScan(workspaceId: string, digitalPropertyId: string, scanId: string): Observable {\n return this.restService.removeMobileSDKScan(workspaceId, digitalPropertyId, scanId);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { RestService } from './rest.service';\nimport { IScanOptions } from '../../../shared/interfaces/scan-options.interface';\nimport { scanAuthenticationType } from '../../../shared/constants/scanning';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { scanCreateRequest } from '../../../shared/constants/scan-create-request';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanOptionsService implements OnDestroy {\n private subscription: Subscription;\n public currentScanOptions: IScanOptions;\n public scanOptionsChange: Subject = new Subject();\n\n constructor(private restService: RestService) {\n this.subscription = new Subscription();\n\n this.subscription.add(\n this.scanOptionsChange.subscribe((scanOptions: IScanOptions) => {\n this.currentScanOptions = this.mapScanCreateRequest(scanOptions);\n }),\n );\n }\n\n private mapScanCreateRequest(options: IScanOptions): IScanOptions {\n const incomingData: IScanOptions = {\n [scanCreateRequest.url]: options[scanCreateRequest.url],\n [scanCreateRequest.tag]: options[scanCreateRequest.tag],\n [scanCreateRequest.scanningType]: options[scanCreateRequest.scanningType],\n [scanCreateRequest.scanRecurrenceType]: options[scanCreateRequest.scanRecurrenceType],\n [scanCreateRequest.scanRecurrenceEvery]: options[scanCreateRequest.scanRecurrenceEvery],\n [scanCreateRequest.scanRecurrenceSelectedDay]: options[scanCreateRequest.scanRecurrenceSelectedDay],\n [scanCreateRequest.repeatEvery]: options[scanCreateRequest.repeatEvery],\n [scanCreateRequest.scanAuthenticationType]: options[scanCreateRequest.scanAuthenticationType],\n [scanCreateRequest.scanAuthenticationUserName]: options[scanCreateRequest.scanAuthenticationUserName],\n [scanCreateRequest.scanAuthenticationPassword]: options[scanCreateRequest.scanAuthenticationPassword],\n [scanCreateRequest.scanMonthlyOnDay]: options[scanCreateRequest.scanMonthlyOnDay],\n [scanCreateRequest.limitCrawlingPagesTo]: options[scanCreateRequest.limitCrawlingPagesTo]\n ? options[scanCreateRequest.limitCrawlingPagesTo]\n : 0,\n [scanCreateRequest.crawlDeepLevel]: options[scanCreateRequest.crawlDeepLevel]\n ? options[scanCreateRequest.crawlDeepLevel]\n : 0,\n [scanCreateRequest.includeUrls]: options[scanCreateRequest.includeUrls] ? options[scanCreateRequest.includeUrls] : [],\n [scanCreateRequest.excludeUrls]: options[scanCreateRequest.excludeUrls] ? options[scanCreateRequest.excludeUrls] : [],\n [scanCreateRequest.sendEmail]: options[scanCreateRequest.sendEmail],\n [scanCreateRequest.startScanAtDate]: options[scanCreateRequest.startScanAtDate]\n ? options[scanCreateRequest.startScanAtDate]\n : new Date().toISOString(),\n [scanCreateRequest.stopScanAtDate]: options[scanCreateRequest.stopScanAtDate]\n ? options[scanCreateRequest.stopScanAtDate]\n : new Date().toISOString(),\n [scanCreateRequest.languageForScanning]: options[scanCreateRequest.languageForScanning]\n ? options[scanCreateRequest.languageForScanning]\n : 'en',\n [scanCreateRequest.saveScanOptionsName]: null,\n [scanCreateRequest.selectedScanOptionsId]: null,\n [scanCreateRequest.skipHashes]: options[scanCreateRequest.skipHashes] ? options[scanCreateRequest.skipHashes] : false,\n [scanCreateRequest.skipQueryParams]: options[scanCreateRequest.skipQueryParams]\n ? options[scanCreateRequest.skipQueryParams]\n : false,\n [scanCreateRequest.unlimitedCrawlingPagesTo]: options[scanCreateRequest.skipQueryParams]\n ? options[scanCreateRequest.skipQueryParams]\n : false,\n [scanCreateRequest.unlimitedCrawlDeepLevel]: options[scanCreateRequest.skipQueryParams]\n ? options[scanCreateRequest.skipQueryParams]\n : false,\n [scanCreateRequest.userAgent]: null,\n [scanCreateRequest.viewport]: options[scanCreateRequest.viewport],\n [scanCreateRequest.accessibility]: options[scanCreateRequest.accessibility],\n [scanCreateRequest.essentialBestPractice]: options[scanCreateRequest.essentialBestPractice],\n [scanCreateRequest.colorBlindEmulation]: options[scanCreateRequest.colorBlindEmulation],\n [scanCreateRequest.conformanceLevel]: options[scanCreateRequest.conformanceLevel],\n [scanCreateRequest.headers]: options[scanCreateRequest.headers],\n [scanCreateRequest.handlePopupsSelector]: options[scanCreateRequest.handlePopupsSelector],\n };\n\n if (incomingData[scanCreateRequest.scanAuthenticationType] === scanAuthenticationType.secure_web_authentication) {\n incomingData[scanCreateRequest.secureWebAuthentication] = SharedCommonUtility.pick(\n options,\n scanCreateRequest.swaUserName,\n scanCreateRequest.swaUserNameFieldId,\n scanCreateRequest.swaPassword,\n scanCreateRequest.swaPasswordFieldId,\n scanCreateRequest.swaSubmitFieldId,\n scanCreateRequest.swaSubmitUsernameFieldId,\n scanCreateRequest.swaSubmitSuccessId,\n scanCreateRequest.swaLoginPageURL,\n );\n }\n\n return incomingData;\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public saveScanOptions(formData: IScanOptions): Observable {\n return this.restService.saveScanOptions(formData);\n }\n\n public updateScanOptions(formData: IScanOptions): Observable {\n return this.restService.updateScanOptions(formData);\n }\n\n public getScanOptionsList(): Observable {\n return this.restService.getScanOptionsList();\n }\n\n public setUserDefaultScanOptions(scanOptionsId: string): Observable {\n return this.restService.setDefaultScanOptions(scanOptionsId);\n }\n\n public removeScanOptions(scanId: string): Observable {\n return this.restService.removeScanOptions(scanId);\n }\n\n public setCurrentScanOptions(scanOptions: IScanOptions): void {\n this.scanOptionsChange.next(scanOptions);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { RestService } from './rest.service';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { UserPropertyService } from './user-property.service';\nimport { AccessibilityAuditToolNames } from '../../../shared/constants/audit-tool';\nimport { RuleAuditHistoryType } from '../../../shared/constants/rule-audit-history';\nimport { IHasHistoryUpdateResponse } from '../../../shared/interfaces/rule-audit-history.interface';\nimport { IDismissRestoreRequest } from '../../../shared/interfaces/ignore.interface';\nimport { IAudit } from '../../../shared/interfaces/audit.interface';\nimport { IAuditRule } from '../../../shared/interfaces/audit-rule.interface';\nimport { IAutomatedScanIssue, IScanIssues } from '../../../shared/interfaces/scan-issues.interface';\nimport { $flaw, changedByType, flawStatus, linkableIssueStatus } from '../../../shared/constants/flaw';\nimport { IFlawStatusChange } from '../../../shared/interfaces/flaw.interface';\nimport { IGetShortLinkResponse } from '../../../shared/interfaces/short-link.interface';\nimport { IScreenshotAuditResult } from '../../../shared/interfaces/audit-raw-result.interface';\nimport { IUploadClient } from '../../../shared/interfaces/uploads.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanReportService {\n constructor(\n private restService: RestService,\n private userService: UserPropertyService,\n ) {}\n\n public getIssues(\n scanId: string,\n accessibilityTool: AccessibilityAuditToolNames,\n rule: string,\n scanUrl?: string,\n componentId?: string,\n scanPointId?: string,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.getScanIssues(\n workspaceId,\n digitalPropertyId,\n scanId,\n accessibilityTool,\n rule,\n scanUrl,\n componentId,\n scanPointId,\n ),\n ),\n );\n }\n\n public async getIssueShortLink(\n scanId: string,\n accessibilityTool: AccessibilityAuditToolNames,\n rule: string,\n issueId: string,\n ): Promise {\n const resp: IGetShortLinkResponse = await this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.restService.getScanIssueShortLink(workspaceId, digitalPropertyId, scanId, accessibilityTool, rule, issueId),\n ),\n )\n .toPromise();\n\n return resp.shortLink;\n }\n\n public getScreenshotAuditDetails(scanId: string, documentId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.getScreenshotAuditDetails(workspaceId, digitalPropertyId, scanId, documentId),\n ),\n );\n }\n\n public getAuditedDocumentScreenshot(scanId: string, documentId: string): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.getAuditedDocumentScreenshot(workspaceId, digitalPropertyId, scanId, documentId),\n ),\n );\n }\n\n public dismissIssues(ignoreRequest: IDismissRestoreRequest): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.dismissIssues(workspaceId, digitalPropertyId, ignoreRequest),\n ),\n );\n }\n\n public hasIssuesChanges(\n tool: AccessibilityAuditToolNames,\n scanId: string,\n from: Date,\n ruleId: string,\n scanUrl: string,\n ): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.hasHistory(\n workspaceId,\n digitalPropertyId,\n tool,\n RuleAuditHistoryType.issue,\n scanId,\n from,\n ruleId,\n scanUrl,\n ),\n ),\n );\n }\n\n public restoreIssues(restoreRequest: IDismissRestoreRequest): Observable {\n return this.userService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.restoreIssues(workspaceId, digitalPropertyId, restoreRequest),\n ),\n );\n }\n\n public getTotalRulesCount(audits: IAudit[]): number {\n let evaluatedRulesCount: number = 0;\n\n for (const audit of audits) {\n if (audit.useForTotalScore === false) {\n continue;\n }\n\n evaluatedRulesCount += this.getSelectedScanRulesCount(audit);\n }\n\n return evaluatedRulesCount;\n }\n\n public getSelectedScanRulesCount(audit: IAudit): number {\n if (audit.isSelectedForScanning === false) {\n return 0;\n }\n return Object.values(audit.rules)\n .filter((rule: IAuditRule): boolean => rule.isSelectedForScanning)\n .reduce((sum: number): number => sum + 1, 0);\n }\n\n public isDismissed(issue: IAutomatedScanIssue): boolean {\n return issue.status === flawStatus.dismissed;\n }\n\n public hasHistory(issue: IAutomatedScanIssue): boolean {\n return (\n issue[$flaw.statusHistory]?.some(\n (changeEvent: IFlawStatusChange): boolean => changeEvent.changedByType === changedByType.user,\n ) || false\n );\n }\n\n public isIssueLinked(issue: IAutomatedScanIssue): boolean {\n return Boolean(issue?.[$flaw.taskId]);\n }\n\n public canBeLinkedToTask(issue: IAutomatedScanIssue): boolean {\n return linkableIssueStatus.includes(issue.status) && this.isIssueLinked(issue) === false;\n }\n\n public isIssueClosed(issue: IAutomatedScanIssue): boolean {\n return issue[$flaw.status] === flawStatus.closed;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\nimport { IScanTag, IScanTagRequest, IScanTagServerResponse } from '../../../shared/interfaces/scan-tag.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanTagService {\n constructor(private workspaceRestApi: WorkspacesRestAPI) {}\n\n public getScanTagsFromDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n return this.workspaceRestApi.getScanTagsFromDigitalProperty(workspaceId, digitalPropertyId);\n }\n\n public createScanTag(workspaceId: string, digitalPropertyId: string, scanTag: IScanTagRequest): Observable {\n return this.workspaceRestApi.createScanTag(workspaceId, digitalPropertyId, scanTag);\n }\n\n public deleteScanTag(workspaceId: string, digitalPropertyId: string, scanTagId: string): Observable {\n return this.workspaceRestApi.deleteScanTag(workspaceId, digitalPropertyId, scanTagId);\n }\n\n public getScanTag(workspaceId: string, digitalPropertyId: string, scanTagId: string): Observable {\n return this.workspaceRestApi.getScanTag(workspaceId, digitalPropertyId, scanTagId);\n }\n\n public updateScanTag(\n workspaceId: string,\n digitalPropertyId: string,\n scanTagId: string,\n scanTag: IScanTagRequest,\n ): Observable {\n return this.workspaceRestApi.updateScanTag(workspaceId, digitalPropertyId, scanTagId, scanTag);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { mergeMap, tap } from 'rxjs/operators';\n\nimport { RestService } from './rest.service';\nimport { TranslateService } from '../translate/translate.service';\nimport { DateUtility } from '../utility/date.utility';\nimport {\n IActiveScan,\n IGetScansQuery,\n IGetScansServerResponse,\n IQuickScanOptions,\n IScan,\n} from '../../../shared/interfaces/scan.interface';\nimport { IAudits } from '../../../shared/interfaces/audits.interface';\nimport { $scanOptions } from '../../../shared/constants/scan-options';\nimport { ICurrentSelectedProperty } from './user.service';\nimport { standardNameAndLevel } from '../../../shared/constants/scanning';\nimport { AuditTypes } from '../../../shared/constants/audit-types';\nimport { IAudit } from '../../../shared/interfaces/audit.interface';\nimport { IScanCreateRequest } from '../../../shared/interfaces/scan-create-request.interface';\nimport {\n IAnalyticsByRuleResult,\n IAnalyticsResultItem,\n IPageAffectedByRuleAnalytics,\n} from '../../../shared/interfaces/analytics.interface';\nimport { UserPropertyService } from './user-property.service';\nimport { AuditStandards } from '../../../shared/constants/audit-standard';\nimport { AccessibilityAuditToolNames } from '../../../shared/constants/audit-tool';\nimport { SharedDateUtility } from '../../../shared/utils/date.utility';\nimport { IDiscoveredScannableDocumentResponse } from '../../../shared/interfaces/scannable-document.interface';\nimport { IAuditedDocument } from '../../../shared/interfaces/audited-document.interface';\nimport { IAsyncReportResponse } from '../../../shared/interfaces/async-report.interface';\n\nexport enum ScanCreationType {\n advanced,\n quick,\n}\n\ninterface ScanCreationInputsMap {\n [ScanCreationType.advanced]: FormData;\n [ScanCreationType.quick]: IQuickScanOptions;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanService {\n private scanCreatedSubject: Subject;\n public onScanCreated$: Observable;\n\n constructor(\n private restService: RestService,\n private translateService: TranslateService,\n private userPropertyService: UserPropertyService,\n ) {\n this.scanCreatedSubject = new Subject();\n this.onScanCreated$ = this.scanCreatedSubject.asObservable();\n }\n\n private createAdvancedScan(workspaceId: string, digitalPropertyId: string, formData: FormData): Observable {\n return this.restService.createScan(workspaceId, digitalPropertyId, formData);\n }\n\n private createQuickScan(workspaceId: string, digitalPropertyId: string, options: IQuickScanOptions): Observable {\n return this.restService.createAutomatedScan(workspaceId, digitalPropertyId, options);\n }\n\n public getScans(\n searchParams: IGetScansQuery,\n limit: number,\n skip: number,\n sortBy: string = null,\n ): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty): Observable =>\n this.restService.getScans(workspaceId, digitalPropertyId, searchParams, limit, skip, sortBy),\n ),\n );\n }\n\n public getScan(scanId: string): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable =>\n this.restService.getScan(workspaceId, digitalPropertyId, scanId),\n ),\n );\n }\n\n public getAuditedDocument(scanId: string, url: string): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable =>\n this.restService.getAuditedDocument(workspaceId, digitalPropertyId, scanId, url),\n ),\n );\n }\n\n public getScanAnalytics(\n scanHistoryLimit: number,\n scanId?: string,\n toolName?: AccessibilityAuditToolNames,\n ): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.getScanAnalytics(workspaceId, digitalPropertyId, scanId, toolName, scanHistoryLimit),\n ),\n );\n }\n\n public getMonitoringHistoryReport(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.getMonitoringHistoryReport(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public generateMonitoringHistoryReport(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.generateMonitoringHistoryReport(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public getScanAnalyticsByRule(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.getScanAnalyticsByRule(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public getPageAnalyticsAffectedByRule(ruleId: string): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.getPageAnalyticsAffectedByRule(workspaceId, digitalPropertyId, ruleId),\n ),\n );\n }\n\n public createScan(scanType: T, form: ScanCreationInputsMap[T]): Observable {\n const createScan = ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable => {\n if (scanType === ScanCreationType.quick) {\n return this.createQuickScan(workspaceId, digitalPropertyId, form as IQuickScanOptions);\n }\n return this.createAdvancedScan(workspaceId, digitalPropertyId, form as FormData);\n };\n\n const emitScanCreated = (scan: IScan): void => this.scanCreatedSubject.next(scan);\n\n return this.userPropertyService.currentSelectedProperty().pipe(mergeMap(createScan), tap(emitScanCreated));\n }\n\n public updateScan(workspaceId: string, digitalPropertyId: string, formData: IScanCreateRequest, id: string): Observable {\n return this.restService.updateScan(workspaceId, digitalPropertyId, formData, id);\n }\n\n public getOrCreateSupplementalScan(id: string, url: string): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ digitalPropertyId, workspaceId }: ICurrentSelectedProperty) =>\n this.restService.getOrCreateSupplementalScan(workspaceId, digitalPropertyId, id, url),\n ),\n );\n }\n\n public removeScan(workspaceId: string, digitalPropertyId: string, id: string): Observable {\n return this.restService.removeScan(workspaceId, digitalPropertyId, id);\n }\n\n public rerunScan(workspaceId: string, digitalPropertyId: string, id: string): Observable {\n return this.restService.rerunScan(workspaceId, digitalPropertyId, id);\n }\n\n public getActiveScans(skip: number, limit: number): Observable {\n return this.restService.getActiveScans(skip, limit);\n }\n\n public getDigitalPropertyActiveScans(workspaceId: string, digitalPropertyId: string): Observable {\n return this.restService.getDigitalPropertyActiveScans(workspaceId, digitalPropertyId);\n }\n\n public totalScanningTime(processingStartedAt: string, processingEndedAt: string): string {\n const start: number = new Date(processingStartedAt).getTime();\n const end: number = new Date(processingEndedAt).getTime();\n\n return DateUtility.getFormattedTime(end - start);\n }\n\n public totalScanningTimeAriaLabel(processingStartedAt: string, processingEndedAt: string): string {\n const value: string = this.totalScanningTime(processingStartedAt, processingEndedAt);\n\n const translate = (key: string): string => `$1 ${this.translateService.instant(key)}`;\n return value\n .replace('<', this.translateService.instant('less_than'))\n .replace(/(\\s+)ms/, translate('millisecond'))\n .replace(/(\\d+)m/, translate('minutes'))\n .replace(/(\\d+)s/, translate('seconds'))\n .replace(/(\\d+)h/, translate('hours'));\n }\n\n public getSelectedAudits(audits: IAudits): string[] {\n const getOnlySelectedAudits = (filtered: string[], auditId: AuditTypes): string[] => {\n const audit: IAudit = audits[auditId];\n\n if (audit.hidden) {\n return filtered;\n }\n\n if (audit.isSelectedForScanning) {\n filtered.push(audit[$scanOptions.name]);\n }\n\n return filtered;\n };\n\n return Object.keys(audits).reduce(getOnlySelectedAudits, []);\n }\n\n public getNextScheduledScan(): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.getNextScheduledScan(workspaceId, digitalPropertyId),\n ),\n );\n }\n\n public getTranslatedConformanceLevel(includesStandard: any, includesEssential: boolean): string {\n if (includesStandard === standardNameAndLevel.essential_v10_A && includesEssential === true) {\n return AuditStandards.essential;\n }\n\n return this.translateService.instant(includesStandard);\n }\n\n public getTranslatedFormattedDateTimeValue(prefixLabel: string, dateTime: string): string | undefined {\n if (dateTime === null) {\n return undefined;\n }\n\n let dateValue: string;\n const date: Date = new Date(dateTime);\n const formatted: string = date.toLocaleString([], { hour: '2-digit', minute: '2-digit', timeZoneName: 'short' });\n\n if (SharedDateUtility.isToday(date)) {\n dateValue = `${this.translateService.instant('scan_progress_today')} ${this.translateService.instant('at')} ${formatted}`;\n } else if (SharedDateUtility.isYesterday(date)) {\n dateValue = `${this.translateService.instant('scan_progress_yesterday')} ${this.translateService.instant(\n 'at',\n )} ${formatted}`;\n } else {\n dateValue = `${this.translateService.instant('at')} ${DateUtility.getFormattedISODate(date.toISOString(), true, [], true)}`;\n }\n\n return `${this.translateService.instant(prefixLabel, dateValue)}`;\n }\n\n public moveScans(toDigitalPropertyId: string, scanIds: string[]): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty) =>\n this.restService.moveScans(workspaceId, digitalPropertyId, toDigitalPropertyId, scanIds),\n ),\n );\n }\n\n public getSelectedWorkspaceScansCount(excludeMonitoring: boolean = false): Observable {\n return this.userPropertyService.currentSelectedProperty().pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable => {\n return this.restService.getScansCount(workspaceId, digitalPropertyId, excludeMonitoring);\n }),\n );\n }\n\n public updateScanTags(scanTagId: string, scanIds: string[]): Observable {\n return this.userPropertyService.currentSelectedProperty().pipe(\n mergeMap(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable => {\n return this.restService.updateScanTags(workspaceId, digitalPropertyId, scanTagId, scanIds);\n }),\n );\n }\n\n public getScanDiscoveredDocuments(scanId: string): Observable {\n return this.userPropertyService\n .currentSelectedProperty()\n .pipe(\n mergeMap(\n ({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): Observable =>\n this.restService.getScanDiscoveredDocuments(workspaceId, digitalPropertyId, scanId),\n ),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport {\n IUpsertSecurityGroup,\n ISecurityGroup,\n ISecurityGroupsResponse,\n ISecurityGroupWithUserIds,\n ISecurityGroupWithUsers,\n} from '../../../../shared/interfaces/security-group.interface';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { SecurityEntityLevel, SecurityGroupOrigin } from '../../../../shared/constants/security-group';\nimport { ISecurityGroupsQuery } from '../../../../shared/interfaces/security.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecurityGroupsApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /admin/security/groups\n public findSecurityGroups(\n limit: number,\n skip: number,\n origin?: SecurityGroupOrigin,\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[],\n ): Observable> {\n const originParam = {\n [ApiQueryOption.origin]: origin,\n };\n const entityLevelParam = {\n [ApiQueryOption.entityLevel]: entityLevel,\n };\n const queryParams: HttpParams = new HttpParams({\n fromObject: {\n ...(origin ? originParam : {}),\n ...(entityLevel ? entityLevelParam : {}),\n },\n });\n\n const url: string = this.restBuilder.create().admin().security().groups().query(queryParams).getApiUrl();\n\n return this.httpClient.get>(url, {\n params: this.restBuilder.paginationParams(skip, limit),\n });\n }\n\n // GET /admin/security/:tenantId/groups\n public findSecurityGroupsByTenantId(\n tenantId: string,\n limit: number,\n skip: number,\n origin?: SecurityGroupOrigin,\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[],\n ): Observable> {\n const originParam = {\n [ApiQueryOption.origin]: origin,\n };\n const entityLevelParam = {\n [ApiQueryOption.entityLevel]: entityLevel,\n };\n const queryParams: HttpParams = new HttpParams({\n fromObject: {\n ...(origin ? originParam : {}),\n ...(entityLevel ? entityLevelParam : {}),\n },\n });\n\n const url: string = this.restBuilder.create().admin().security().tenant(tenantId).groups().query(queryParams).getApiUrl();\n\n return this.httpClient.get>(url, {\n params: this.restBuilder.paginationParams(skip, limit),\n });\n }\n\n // GET /admin/security/staff-groups\n public findStaffGroupsByTenantId(limit: number, skip: number): Observable> {\n const url: string = this.restBuilder.create().admin().security().staffGroups().getApiUrl();\n\n return this.httpClient.get>(url, {\n params: this.restBuilder.paginationParams(skip, limit),\n });\n }\n\n // POST /admin/security/groups\n public createSecurityGroup(group: IUpsertSecurityGroup): Observable {\n const url: string = this.restBuilder.create().admin().security().groups().getApiUrl();\n return this.httpClient.post(url, group);\n }\n\n // POST /admin/security/staff-groups\n public createStaffGroup(group: IUpsertSecurityGroup): Observable {\n const url: string = this.restBuilder.create().admin().security().staffGroups().getApiUrl();\n return this.httpClient.post(url, group);\n }\n\n // GET /admin/security/groups/:groupId\n public getSecurityGroup(groupId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().groups(groupId).getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // GET /admin/security/staff-groups/:groupId\n public getStaffGroup(groupId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().staffGroups(groupId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // PUT /admin/security/groups/:groupId\n public updateSecurityGroup(groupId: string, update: IUpsertSecurityGroup): Observable {\n const url: string = this.restBuilder.create().admin().security().groups(groupId).getApiUrl();\n return this.httpClient.put(url, update);\n }\n\n // PUT /admin/security/staff-groups/:groupId\n public updateStaffGroup(groupId: string, update: IUpsertSecurityGroup): Observable {\n const url: string = this.restBuilder.create().admin().security().staffGroups(groupId).getApiUrl();\n return this.httpClient.put(url, update);\n }\n\n // DELETE /admin/security/groups/:groupId\n public deleteSecurityGroup(groupId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().groups(groupId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // DELETE /admin/security/staff-groups/:groupId\n public deleteStaffGroup(groupId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().staffGroups(groupId).getApiUrl();\n\n return this.httpClient.delete(url);\n }\n\n // GET /admin/security/groups/user-management/all\n public findSecurityGroupsForUserManagement(options?: {\n limit?: number;\n skip?: number;\n includeStaffGroups?: boolean;\n origin?: SecurityGroupOrigin;\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[];\n skipOrganizationAdmin?: boolean;\n }): Observable> {\n const originParam = {\n [ApiQueryOption.origin]: options?.origin,\n };\n const entityLevelParam = {\n [ApiQueryOption.entityLevel]: options?.entityLevel,\n };\n const skipOrganizationAdmin = {\n [ApiQueryOption.skipOrganizationAdmin]: options?.skipOrganizationAdmin,\n };\n const queryParams: HttpParams = new HttpParams({\n fromObject: {\n [ApiQueryOption.includeStaffGroups]: options?.includeStaffGroups ?? false,\n ...(options?.origin ? originParam : {}),\n ...(options?.entityLevel ? entityLevelParam : {}),\n ...(options?.skipOrganizationAdmin ? skipOrganizationAdmin : {}),\n },\n });\n\n const url: string = this.restBuilder\n .create()\n .admin()\n .security()\n .groups()\n .userManagement()\n .all()\n .query(queryParams)\n .getApiUrl();\n\n return this.httpClient.get>(url, {\n params: this.restBuilder.paginationParams(options?.skip, options?.limit),\n });\n }\n\n // GET /admin/security/groups/users/:userId\n public findAllSecurityGroupsByUserIdAndTenantId(\n userId: string,\n options: {\n includeStaffGroups?: boolean;\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[];\n },\n ): Observable {\n const entityLevelParam: ISecurityGroupsQuery = {\n [ApiQueryOption.entityLevel]: options.entityLevel,\n };\n const includeStaffGroups: Record = {\n [ApiQueryOption.includeStaffGroups]: options.includeStaffGroups,\n };\n const queryParams: HttpParams = new HttpParams({\n fromObject: {\n ...(options.includeStaffGroups ? includeStaffGroups : {}),\n ...(options.entityLevel ? entityLevelParam : {}),\n },\n });\n const url: string = this.restBuilder.create().admin().security().groups().users(userId).query(queryParams).getApiUrl();\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { compact, Dictionary, keyBy, map as _map } from 'lodash';\n\nimport { SecurityGroupsApi } from './rest/security-groups.api';\nimport { UserRestAPI } from './rest/user.api';\nimport {\n IDigitalPropertiesListResponse,\n IDigitalPropertyListItem,\n IDigitalPropertyWorkspace,\n} from '../../../shared/interfaces/digital-property.interface';\nimport {\n ISecurityEntity,\n ISecurityGroup,\n ISecurityGroupsResponse,\n ISecurityGroupWithEntityNames,\n ISecurityGroupWithUserIds,\n ISecurityGroupWithUsers,\n IUpsertSecurityGroup,\n} from '../../../shared/interfaces/security-group.interface';\nimport {\n $securityEntity,\n $securityGroup,\n SecurityEntityLevel,\n SecurityGroupOrigin,\n} from '../../../shared/constants/security-group';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { $workspace } from '../../../shared/constants/workspace';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\nexport interface SecurityGroupsParams {\n limit?: number;\n skip?: number;\n includeStaffGroups?: boolean;\n origin?: SecurityGroupOrigin;\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[];\n skipOrganizationAdmin?: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecurityGroupService {\n public constructor(\n private securityGroupsApi: SecurityGroupsApi,\n private userApi: UserRestAPI,\n ) {}\n\n private populateGroupWithEntityNames(\n group: ISecurityGroup,\n dpDictionary: Dictionary,\n wsDictionary: Dictionary,\n ): ISecurityGroupWithEntityNames {\n // aux function that looks up all entity names at a given level (workspace-level or dp-level)\n const getEntityNames = (\n level: SecurityEntityLevel,\n dictionary: Dictionary,\n ): string[] => {\n const result: (string | null)[] = group[$securityGroup.entities].map((entity: ISecurityEntity) => {\n const entityId: string =\n level === SecurityEntityLevel.digitalProperty\n ? entity[$securityEntity.digitalPropertyId]\n : entity[$securityEntity.workspaceId];\n\n if (SharedCommonUtility.isNullish(entityId)) {\n return null;\n }\n\n const item: IDigitalPropertyListItem | IDigitalPropertyWorkspace = dictionary[entityId];\n\n // if entityId references an archived digital property then it will not match\n // one of the available digital properties in the dictionary array and item will be null\n if (SharedCommonUtility.isNullish(item)) {\n return null;\n }\n\n return item[$digitalProperty.name];\n });\n\n return compact(result); // remove nulls from the list\n };\n\n return {\n ...group,\n digitalPropertyNames: getEntityNames(SecurityEntityLevel.digitalProperty, dpDictionary),\n workspaceNames: getEntityNames(SecurityEntityLevel.workspace, wsDictionary),\n };\n }\n\n public findSecurityGroups(\n limit: number,\n skip: number,\n origin?: SecurityGroupOrigin,\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[],\n ): Observable> {\n return this.securityGroupsApi.findSecurityGroups(limit, skip, origin, entityLevel);\n }\n\n public findSecurityGroupsByTenantId(\n tenantId: string,\n limit: number,\n skip: number,\n origin?: SecurityGroupOrigin,\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[],\n ): Observable> {\n return this.securityGroupsApi.findSecurityGroupsByTenantId(tenantId, limit, skip, origin, entityLevel);\n }\n\n public groupsWithEntityNames({\n limit,\n skip,\n includeStaffGroups,\n origin,\n entityLevel,\n skipOrganizationAdmin,\n }: SecurityGroupsParams): Observable> {\n const availableDigitalProperties$: Observable = this.userApi.getAvailableDigitalProperties();\n const securityGroups$: Observable> =\n this.securityGroupsApi.findSecurityGroupsForUserManagement({\n limit,\n skip,\n includeStaffGroups,\n origin,\n entityLevel,\n skipOrganizationAdmin,\n });\n\n return combineLatest([securityGroups$, availableDigitalProperties$]).pipe(\n map(\n ([groupsResponse, activePropertiesForWorkspace]: [\n ISecurityGroupsResponse,\n IDigitalPropertiesListResponse,\n ]) => {\n const dpDictionary: Dictionary = keyBy(\n activePropertiesForWorkspace.items,\n $digitalProperty._id,\n );\n const workspaces: IDigitalPropertyWorkspace[] = _map(activePropertiesForWorkspace.items, $digitalProperty.workspace);\n const wsDictionary: Dictionary = keyBy(workspaces, $workspace._id);\n\n const groupsWithEntityNames = groupsResponse.groups.map((group: ISecurityGroup) =>\n this.populateGroupWithEntityNames(group, dpDictionary, wsDictionary),\n );\n return {\n groups: groupsWithEntityNames,\n _total: groupsResponse._total,\n };\n },\n ),\n );\n }\n\n public findAllSecurityGroupsByUserIdAndTenantId(\n userId: string,\n options: {\n includeStaffGroups?: boolean;\n entityLevel?: SecurityEntityLevel | SecurityEntityLevel[];\n },\n ): Observable {\n return this.securityGroupsApi.findAllSecurityGroupsByUserIdAndTenantId(userId, options);\n }\n\n public findStaffGroupsByTenantId(limit: number, skip: number): Observable> {\n return this.securityGroupsApi.findStaffGroupsByTenantId(limit, skip);\n }\n\n public createSecurityGroup(group: IUpsertSecurityGroup): Observable {\n return this.securityGroupsApi.createSecurityGroup(group);\n }\n\n public createStaffGroup(group: IUpsertSecurityGroup): Observable {\n return this.securityGroupsApi.createStaffGroup(group);\n }\n\n public updateSecurityGroup(groupId: string, update: IUpsertSecurityGroup): Observable {\n return this.securityGroupsApi.updateSecurityGroup(groupId, update);\n }\n\n public updateStaffGroup(groupId: string, update: IUpsertSecurityGroup): Observable {\n return this.securityGroupsApi.updateStaffGroup(groupId, update);\n }\n\n public getSecurityGroup(groupId: string): Observable {\n return this.securityGroupsApi.getSecurityGroup(groupId);\n }\n\n public getStaffGroup(groupId: string): Observable {\n return this.securityGroupsApi.getStaffGroup(groupId);\n }\n\n public deleteSecurityGroup({ groupId, isStaff = false }: { groupId: string; isStaff: boolean }): Observable {\n return isStaff ? this.securityGroupsApi.deleteStaffGroup(groupId) : this.securityGroupsApi.deleteSecurityGroup(groupId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport {\n ICreateUsersRequest,\n ISecurityUserWithGroupsResponse,\n ISecurityGroupsWithSecurityGroupUserLastUpdatedInTenant,\n IAssignUsersRequest,\n} from '../../../../shared/interfaces/security-group.interface';\nimport {\n IAssignUsersResponse,\n IGetOrCreateUserResponse,\n IUsersServerResponse,\n} from '../../../../shared/interfaces/user.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { ApiQueryOption } from '../../../../shared/constants/api';\nimport { IBulkAddToStaffGroupsResponse } from '../../../../shared/interfaces/security.interface';\nimport { $securityEntity } from '../../../../shared/constants/security-group';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecurityUsersApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /admin/security/users\n public findUsersWithSecurityGroupsByTenantId(\n limit: number,\n skip: number,\n searchTerm?: string,\n workspaceId?: string,\n digitalPropertyId?: string,\n ): Observable {\n const url: string = this.restBuilder.create().admin().security().users().getApiUrl();\n\n let params: HttpParams = this.restBuilder.paginationParams(skip, limit);\n\n if (SharedCommonUtility.notNullishOrEmpty(searchTerm)) {\n params = params.set(ApiQueryOption.term, searchTerm);\n }\n\n if (SharedCommonUtility.notNullishOrEmpty(workspaceId)) {\n params = params.set($securityEntity.workspaceId, workspaceId);\n }\n\n if (SharedCommonUtility.notNullishOrEmpty(digitalPropertyId)) {\n params = params.set($securityEntity.digitalPropertyId, digitalPropertyId);\n }\n\n return this.httpClient.get(url, {\n params,\n });\n }\n\n // GET /admin/security/users/unassigned-members\n public getUnassignedUsers(limit: number, skip: number, searchTerm?: string): Observable {\n const url: string = this.restBuilder.create().admin().security().users().unassignedMembers().getApiUrl();\n\n let params: HttpParams = this.restBuilder.paginationParams(skip, limit);\n\n if (SharedCommonUtility.notNullishOrEmpty(searchTerm)) {\n params = params.set(ApiQueryOption.term, searchTerm);\n }\n\n return this.httpClient.get(url, { params });\n }\n\n // PUT /admin/security/users/assign-users\n public assignSecurityUsers(request: IAssignUsersRequest): Observable {\n const url: string = this.restBuilder.create().admin().security().users().assignUsers().getApiUrl();\n return this.httpClient.put(url, request);\n }\n\n // POST /admin/security/users\n public createSecurityUsers(request: ICreateUsersRequest): Observable {\n const url: string = this.restBuilder.create().admin().security().users().getApiUrl();\n return this.httpClient.post(url, request);\n }\n\n // DELETE /admin/security/users/:userId\n public removeUser(userId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).getApiUrl();\n return this.httpClient.delete(url);\n }\n\n // GET /admin/security/users/:userId/tenants-membership\n public getSecurityUserTenantsMembership(userId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).tenantsMembership().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // POST /admin/security/users/:userId/groups\n public addUserToSecurityGroups(userId: string, groupIds: string[]): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).groups().getApiUrl();\n return this.httpClient.post(url, { groupIds });\n }\n\n // POST /admin/security/users/:userId/staffGroups\n public bulkAddToStaffSecurityGroups(\n userId: string,\n staffSecurityName: string,\n tenantIds: string[],\n ): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).staffGroups().getApiUrl();\n return this.httpClient.post(url, { staffSecurityName, tenantIds });\n }\n\n // PUT /admin/security/users/:userId\n public updateUserProfile(userProfile: FormData, userId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).getApiUrl();\n return this.httpClient.put(url, userProfile);\n }\n\n // PUT /admin/security/users/:userId/groups\n public updateUserSecurityGroups(userId: string, groupIds: { groupIds: string[] }): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).groups().getApiUrl();\n return this.httpClient.put(url, groupIds);\n }\n\n // DELETE /admin/security/users/:userId/groups\n public removeUserFromSecurityGroups(userId: string, groupIds: string[]): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).groups().getApiUrl();\n return this.httpClient.delete(url, { body: { groupIds } });\n }\n\n // POST /admin/security/users/:userId/resend-invite\n public resendInvite(userId: string): Observable {\n const url: string = this.restBuilder.create().admin().security().users(userId).resendInvite().getApiUrl();\n return this.httpClient.post(url, null);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SecurityUsersApi } from './rest/security-users.api';\nimport {\n ICreateUsersRequest,\n ISecurityUserWithGroupsResponse,\n ISecurityGroupsWithSecurityGroupUserLastUpdatedInTenant,\n IAssignUsersRequest,\n} from '../../../shared/interfaces/security-group.interface';\nimport { IAssignUsersResponse, IGetOrCreateUserResponse, IUsersServerResponse } from '../../../shared/interfaces/user.interface';\nimport { IBulkAddToStaffGroupsResponse } from '../../../shared/interfaces/security.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecurityUserService {\n public constructor(private securityUsersApi: SecurityUsersApi) {}\n\n public findUsersWithSecurityGroupsByTenantId(\n limit: number,\n skip: number,\n searchTerm?: string,\n workspaceId?: string,\n digitalPropertyId?: string,\n ): Observable {\n return this.securityUsersApi.findUsersWithSecurityGroupsByTenantId(limit, skip, searchTerm, workspaceId, digitalPropertyId);\n }\n\n public getUnassignedUsers(limit: number, skip: number, searchTerm?: string): Observable {\n return this.securityUsersApi.getUnassignedUsers(limit, skip, searchTerm);\n }\n\n public assignSecurityUsers(request: IAssignUsersRequest): Observable {\n return this.securityUsersApi.assignSecurityUsers(request);\n }\n\n public createSecurityUsers(request: ICreateUsersRequest): Observable {\n return this.securityUsersApi.createSecurityUsers(request);\n }\n\n public removeUser(userId: string): Observable {\n return this.securityUsersApi.removeUser(userId);\n }\n\n public getSecurityUserTenantsMembership(userId: string): Observable {\n return this.securityUsersApi.getSecurityUserTenantsMembership(userId);\n }\n\n public addUserToSecurityGroups(userId: string, groupIds: string[]): Observable {\n return this.securityUsersApi.addUserToSecurityGroups(userId, groupIds);\n }\n\n public updateUserProfile(userId: string, userProfile: FormData): Observable {\n return this.securityUsersApi.updateUserProfile(userProfile, userId);\n }\n\n public updateUserSecurityGroups(userId: string, groupIds: { groupIds: string[] }): Observable {\n return this.securityUsersApi.updateUserSecurityGroups(userId, groupIds);\n }\n\n public removeUserFromSecurityGroups(userId: string, groupIds: string[]): Observable {\n return this.securityUsersApi.removeUserFromSecurityGroups(userId, groupIds);\n }\n\n public resendInvite(userId: string): Observable {\n return this.securityUsersApi.resendInvite(userId);\n }\n\n public bulkAddToStaffSecurityGroups(\n userId: string,\n staffSecurityName: string,\n tenantIds: string[],\n ): Observable {\n return this.securityUsersApi.bulkAddToStaffSecurityGroups(userId, staffSecurityName, tenantIds);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { shortLinkType } from '../../../../shared/constants/short-link';\n\n@Injectable({ providedIn: 'root' })\nexport class ShortLinkRestApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // PUT /short-links/short-link\n public generateShortLink(linkType: shortLinkType, context: any, tenantId: string): Observable<{ url: string }> {\n const url: string = this.restBuilder.create().shortLinks().shortLink().getApiUrl();\n return this.httpClient.put<{ url: string }>(url, { linkType, context, tenantId });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { Api } from '../../../shared/constants/api';\nimport { $shortLink, shortLinkType } from '../../../shared/constants/short-link';\nimport { $tenant } from '../../../shared/constants/tenant';\nimport {\n IAuditFindingShortLinkContext,\n IFindingUrlShortLinkContext,\n IShareFindingUrlShortLinkContext,\n IShortLink,\n IUploadShortLinkContext,\n} from '../../../shared/interfaces/short-link.interface';\nimport { ITenant } from '../../../shared/interfaces/tenant.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { config } from '../../environments/config.shared';\nimport { $viewIssuesParams } from '../constants/view-issues-params';\nimport { AppConfigService } from './app-config.service';\nimport { RestBuilder } from './helpers/rest.builder';\nimport { ShortLinkRestApi } from './rest/short-link.api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShortLinkService {\n private restBuilder: RestBuilder;\n\n constructor(\n private appConfigService: AppConfigService,\n private shortLinkRestApi: ShortLinkRestApi,\n ) {\n this.restBuilder = new RestBuilder();\n }\n\n private getAttachmentShortLink(shortLink: IShortLink): string {\n const attachmentContext: IUploadShortLinkContext = shortLink[$shortLink.context];\n return this.restBuilder.create().secureResources(attachmentContext.uploadId).getApiUrl();\n }\n\n private static getMobileDpScanReportUrl(urlContext: IFindingUrlShortLinkContext): string {\n const mobileScanResultsUrl: string = `${Api.websitesAndApps}/${Api.mobile_scans}/${Api.scan_results}/${urlContext.scanId}`;\n const mobileScanFindingsUrl: string = `${Api.mobile_app_report}/${Api.rules}/${urlContext.ruleId}`;\n return `/${mobileScanResultsUrl}/${mobileScanFindingsUrl}?${urlContext.urlQuery}`;\n }\n\n private static getUrlFindingShortLink(shortLink: IShortLink): string {\n const urlContext: IFindingUrlShortLinkContext = shortLink[$shortLink.context];\n\n if (urlContext.isMobileDp) {\n return this.getMobileDpScanReportUrl(urlContext);\n }\n\n const redirectUrl: string =\n `/${Api.scans}/${Api.scan_results}/${urlContext.scanId}/${Api.aggregated_report}` +\n `/${urlContext.tool}/${urlContext.ruleId}?${urlContext.urlQuery}`;\n if (urlContext.issueId) {\n return `${redirectUrl}&${$viewIssuesParams.issueId}=${urlContext.issueId}`;\n }\n return redirectUrl;\n }\n\n private static getAuditFindingShortLink(shortLink: IShortLink): string {\n const context: IAuditFindingShortLinkContext = shortLink[$shortLink.context];\n return `/${Api.manual_evaluations}/${context.scanId}/${Api.results}/${context.elementReference}/${Api.view}?${context.urlQuery}`;\n }\n\n private static getShareFindingShortLink(shortLink: IShortLink): string {\n const context: IShareFindingUrlShortLinkContext = shortLink[$shortLink.context];\n return `/${Api.designEvaluations}/${context.projectId}/${Api.pages}/${context.pageId}/${Api.findings}/${context.findingKey}?${context.urlQuery}`;\n }\n\n public getRedirectPath(shortLink: IShortLink): string {\n switch (shortLink[$shortLink.linkType]) {\n case shortLinkType.findingUrl:\n return ShortLinkService.getUrlFindingShortLink(shortLink);\n\n case shortLinkType.auditFinding:\n return ShortLinkService.getAuditFindingShortLink(shortLink);\n\n case shortLinkType.shareFinding:\n return ShortLinkService.getShareFindingShortLink(shortLink);\n\n case shortLinkType.auditFindingAttachment:\n return this.getAttachmentShortLink(shortLink);\n\n default:\n return null;\n }\n }\n\n public generateShortLink(linkType: shortLinkType, context: T, tenantId: string = null): Observable<{ url: string }> {\n return this.shortLinkRestApi.generateShortLink(linkType, context, tenantId);\n }\n\n /**\n * Returns the tenant URL if tenant is not nullish. If used on a tenant instance it will return a tenant URL\n * regardless if tenant is nullish.\n *\n * @param tenant\n */\n public getBaseUrl(tenant?: ITenant): string {\n if (SharedCommonUtility.isNullish(tenant)) {\n return config.appUrl;\n }\n\n const protocol: string = new URL(SharedCommonUtility.getNormalizedUrlString(config.appUrl)).protocol;\n return `${protocol}//${tenant[$tenant.domain]}.${this.appConfigService.getTenantBaseUrl()}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n private isApplicationReady: BehaviorSubject;\n private areTranslationsReady: BehaviorSubject;\n\n public $isApplicationReady: Observable;\n public $areTranslationsReady: Observable;\n\n constructor() {\n this.isApplicationReady = new BehaviorSubject(false);\n this.$isApplicationReady = this.isApplicationReady.asObservable();\n\n this.areTranslationsReady = new BehaviorSubject(false);\n this.$areTranslationsReady = this.areTranslationsReady.asObservable();\n }\n\n public setApplicationReadyStatus(status: boolean): void {\n this.isApplicationReady.next(status);\n }\n\n public setAreTranslationsReady(status: boolean): void {\n this.areTranslationsReady.next(status);\n }\n\n public getAreTranslationsReady(): boolean {\n return this.areTranslationsReady.getValue();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuditStandards } from '../../../shared/constants/audit-standard';\nimport { ISuccessCriteria } from '../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { TranslateService } from '../translate/translate.service';\nimport { SuccessCriteriaService } from './success-criteria.service';\nimport { $successCriteria } from '../../../shared/audits/definitions/success-criteria/constants';\nimport { IParsedStandard } from '../../../shared/interfaces/standard-parsing.interface';\n\nexport enum Separator {\n newLine = 'newLine',\n comma = 'comma',\n}\n\nexport enum Divider {\n hyphen = 'hyphen',\n}\n\nexport enum CriteriaPreset {\n // Displays WCAG and Not applicable success criterias by \"num\" format. (i.e. 1.1.1)\n criteriaIdentifier = 'criteriaIdentifier',\n // Displays WCAG and Not applicable success criterias by \"level\" format. (i.e. A)\n criteriaLevel = 'criteriaLevel',\n // Displays WCAG and Not applicable success criterias by \"handle\" format. (i.e. Non-text Content)\n criteriaHandle = 'criteriaHandle',\n // Displays WCAG and Not applicable success criterias by \"num Level level\" format. (i.e. 1.1.1 Level AA)\n criteriaIdentifierWithLevel = 'criteriaIdentifierWithLevel',\n // Displays WCAG and Not applicable success criterias by \"num handle\" format. (i.e. 1.1.1 - Non-text Content)\n criteriaIdentifierWithHandle = 'criteriaIdentifierWithHandle',\n // Displays WCAG and Not applicable success criterias as \"num - handle - level\" format. (i.e. 1.1.1 - Non-text Content - Level A)\n criteriaFull = 'criteriaFull',\n // Displays WCAG and Not applicable success criterias by \"version\" format. (i.e. 1.1.1)\n criteriaVersions = 'criteriaVersions',\n // Displays WCAG and Not applicable success criterias as \"num - handle - standard version level\". (i.e. 1.1.1 - Non-text Content - WCAG 2.1 Level A)\n criteriaWithStandardFull = 'criteriaWithStandardFull',\n}\n\ninterface IDisplaySuccessCriteria {\n standards?: AuditStandards[];\n identifiers: string[];\n preset: CriteriaPreset;\n separator?: Separator;\n divider?: Divider;\n includeStandard?: IParsedStandard;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SuccessCriteriaFormatterService {\n private readonly DEFAULT_STANDARDS: AuditStandards[] = [\n AuditStandards.wcag,\n AuditStandards.section508,\n AuditStandards.en301549,\n AuditStandards.wcagCr,\n ];\n\n constructor(\n private translateService: TranslateService,\n private successCriteriaService: SuccessCriteriaService,\n ) {}\n\n /**\n * Formats success criterias by identifiers.\n * @param identifiers represents an array of identifiers i.e. ['1.1.1', 'Not applicable'].\n * @param formatter transforms the success criteria data to a desired format.\n * @param standards represents the standards associated with the identifier i.i. ['wcag'].\n * @private\n */\n private formatSuccessCriteria(\n identifiers: string[],\n formatter: (criteria: ISuccessCriteria) => string,\n standards?: AuditStandards[],\n ): string[] {\n const successCriterias: ISuccessCriteria[] = this.successCriteriaService.getSuccessCriteriaListFromStandards(\n identifiers.filter(Boolean),\n SharedCommonUtility.notNullishOrEmpty(standards) ? standards : this.DEFAULT_STANDARDS,\n );\n return successCriterias.map(formatter);\n }\n\n private handleDivider(divider: Divider): string {\n let _divider: string = ' ';\n\n if (divider === Divider.hyphen) {\n _divider = ' - ';\n }\n\n return _divider;\n }\n\n private handleSeparator(separator: Separator): string {\n let _separator: string = '';\n\n if (separator === Separator.newLine) {\n _separator = '\\n';\n } else if (separator === Separator.comma) {\n _separator = ', ';\n }\n\n return _separator;\n }\n\n /**\n * Displays success criterias based on the configured presets and separator.\n * @param standards represents the standard associated with the success criteria.\n * @param identifiers represents success criteria identifier values.\n * @param preset {CriteriaPreset} represents success criteria preset or format.\n * @param separator {Separator} represents separator for success criteria values.\n * @param divider {Divider} represents divider between success criteria properties.\n */\n public toDisplayCriterias({\n standards,\n identifiers,\n preset,\n separator,\n divider,\n includeStandard,\n }: IDisplaySuccessCriteria): string {\n let criterias: string[] = [];\n const _divider: string = this.handleDivider(divider);\n\n if (preset === CriteriaPreset.criteriaIdentifier) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (criteria: ISuccessCriteria): string => `${criteria[$successCriteria.num]}`,\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaLevel) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (criteria: ISuccessCriteria): string => `${criteria[$successCriteria.level]}`,\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaHandle) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (criteria: ISuccessCriteria): string => `${criteria[$successCriteria.handle]}`,\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaIdentifierWithHandle) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (criteria: ISuccessCriteria): string =>\n `${criteria[$successCriteria.num]}${_divider}${criteria[$successCriteria.handle]}`,\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaIdentifierWithLevel) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (criteria: ISuccessCriteria): string => {\n const level: string = SharedCommonUtility.notNullishOrEmpty(criteria[$successCriteria.level])\n ? ` - ${this.translateService.instant('level')} ${criteria.level}`\n : '';\n return `${criteria[$successCriteria.num]}${level}`;\n },\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaFull) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (successCriteria: ISuccessCriteria): string => {\n const level: string = SharedCommonUtility.notNullishOrEmpty(successCriteria[$successCriteria.level])\n ? ` - ${this.translateService.instant('level')} ${successCriteria.level}`\n : '';\n\n return `${successCriteria[$successCriteria.num]}${_divider}${successCriteria[$successCriteria.handle]}${level}`;\n },\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaWithStandardFull) {\n criterias = this.formatSuccessCriteria(\n identifiers,\n (successCriteria: ISuccessCriteria): string => {\n const standard: string =\n SharedCommonUtility.notNullishOrEmpty(includeStandard) &&\n SharedCommonUtility.notNullishOrEmpty(successCriteria[$successCriteria.level])\n ? ` - ${includeStandard?.standard} ${includeStandard?.version} ${successCriteria?.level}`\n : '';\n return `${successCriteria[$successCriteria.num]}${_divider}${successCriteria[$successCriteria.handle]}${standard}`;\n },\n standards,\n );\n }\n\n if (preset === CriteriaPreset.criteriaVersions) {\n criterias = this.formatSuccessCriteria(identifiers, (wcag: ISuccessCriteria): string => `${wcag.versions}`, standards)\n .join('\\n')\n .split(',');\n }\n\n return criterias.filter(Boolean).join(this.handleSeparator(separator));\n }\n\n public getAccessibilityStandards(ruleCriterias: Map): string[] {\n const formattedStandards: string[] = [];\n\n for (const standard of ruleCriterias.keys()) {\n const crit: ISuccessCriteria[] = ruleCriterias.get(standard);\n const levelByVersions: Record = crit.reduce(\n (acc: Record, current: ISuccessCriteria): Record => {\n current.versions.forEach((version: string): void => {\n if (current[$successCriteria.level]) {\n acc[version] = [...new Set([...(acc[version] ?? []), current[$successCriteria.level]])];\n }\n });\n return acc;\n },\n {},\n );\n const versions: string[] = Object.keys(levelByVersions);\n if (versions.length > 0) {\n versions.forEach((version: string) => {\n formattedStandards.push(`${standard} ${version} ${levelByVersions[version].join(', ')}`);\n });\n } else {\n formattedStandards.push(standard);\n }\n }\n return formattedStandards;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\n\nconst legacy: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: '',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '',\n [$successCriteria.title]: '',\n [$successCriteria.versions]: [''],\n [$successCriteria.url]: '',\n },\n];\n\nexport class Legacy implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n return legacy[0];\n }\n\n public getAll(): ISuccessCriteria[] {\n return legacy;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\n\n// https://github.com/w3c/wai-wcag-quickref/blob/gh-pages/_data/wcag22.json\n\nconst wcag: any = {\n principles: [\n {\n id: 'WCAG2:perceivable',\n num: '1',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Perceivable',\n title: 'Information and user interface components must be presentable to users in ways they can perceive.',\n guidelines: [\n {\n id: 'WCAG2:text-alternatives',\n alt_id: ['text-equiv'],\n num: '1.1',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Text Alternatives',\n title:\n 'Provide text alternatives for any non-text content so that it can be changed into other forms people need, such as large print, braille, speech, symbols or simpler language.',\n successcriteria: [\n {\n id: 'WCAG2:non-text-content',\n alt_id: ['text-equiv-all'],\n num: '1.1.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Non-text Content',\n title:\n 'All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below.',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Controls, Input',\n text: 'If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Success Criterion 4.1.2 for additional requirements for controls and content that accepts user input.)',\n },\n {\n handle: 'Time-Based Media',\n text: 'If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content. (Refer to Guideline 1.2 for additional requirements for media.)',\n },\n {\n handle: 'Test',\n text: 'If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content.',\n },\n {\n handle: 'Sensory',\n text: 'If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content.',\n },\n {\n handle: 'CAPTCHA',\n text: 'If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities.',\n },\n {\n handle: 'Decoration, Formatting, Invisible',\n text: 'If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'Situation A: If a short description can serve the same purpose and present the same information as the non-text content:',\n techniques: [\n {\n id: 'TECH:G94',\n title:\n 'Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content',\n using: [\n {\n group: {\n title: 'Short text alternative techniques for Situation A:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G196',\n title:\n 'Using a text alternative on one item within a group of images that describes all items in the group',\n },\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H35',\n title: 'Providing text alternatives on applet elements',\n },\n {\n id: 'TECH:H37',\n title: 'Using alt attributes on img elements',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n {\n id: 'TECH:H86',\n title: 'Providing text alternatives for ASCII art, emoticons, and leetspeak',\n },\n {\n id: 'TECH:PDF1',\n title: 'Applying text alternatives to images with the Alt entry in PDF documents',\n },\n ],\n },\n },\n ],\n },\n ],\n },\n {\n title:\n 'Situation B: If a short description can not serve the same purpose and present the same information as the non-text content (e.g., a chart or diagram):',\n techniques: [\n {\n id: 'TECH:G95',\n title: 'Providing short text alternatives that provide a brief description of the non-text content',\n using: [\n {\n group: {\n title: 'Short text alternative techniques for Situation B:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G196',\n title:\n 'Using a text alternative on one item within a group of images that describes all items in the group',\n },\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H35',\n title: 'Providing text alternatives on applet elements',\n },\n {\n id: 'TECH:H37',\n title: 'Using alt attributes on img elements',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n {\n id: 'TECH:H86',\n title: 'Providing text alternatives for ASCII art, emoticons, and leetspeak',\n },\n {\n id: 'TECH:PDF1',\n title: 'Applying text alternatives to images with the Alt entry in PDF documents',\n },\n ],\n },\n },\n {\n group: {\n title: 'Long text alternative techniques for Situation B:',\n techniques: [\n {\n id: 'TECH:ARIA15',\n title: 'Using aria-describedby to provide descriptions of images',\n },\n {\n id: 'TECH:G73',\n title:\n 'Providing a long description in another location with a link to it that is immediately adjacent to the non-text content',\n },\n {\n id: 'TECH:G74',\n title:\n 'Providing a long description in text near the non-text content, with a reference to the location of the long description in the short description',\n },\n {\n id: 'TECH:G92',\n title:\n 'Providing long description for non-text content that serves the same purpose and presents the same information',\n },\n {\n id: 'TECH:H45',\n title: 'Using longdesc',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n ],\n },\n },\n ],\n },\n ],\n },\n {\n title: 'Situation C: If non-text content is a control or accepts user input:',\n techniques: [\n {\n id: 'TECH:G82',\n title: 'Providing a text alternative that identifies the purpose of the non-text content',\n using: [\n {\n group: {\n title: 'Text alternative techniques for controls and input for Situation C:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA9',\n title: 'Using aria-labelledby to concatenate a label from several text nodes',\n },\n {\n id: 'TECH:H24',\n title: 'Providing text alternatives for the area elements of image maps',\n },\n {\n id: 'TECH:H30',\n title: 'Providing link text that describes the purpose of a link for anchor elements',\n },\n {\n id: 'TECH:H36',\n title: 'Using alt attributes on images used as submit buttons',\n },\n {\n id: 'TECH:H44',\n title: 'Using label elements to associate text labels with form controls',\n },\n {\n id: 'TECH:H65',\n title:\n 'Using the title attribute to identify form controls when the label element cannot be used',\n },\n ],\n },\n },\n ],\n },\n ],\n },\n {\n title:\n 'Situation D: If non-text content is time-based media (including live video-only and live audio-only); a test or exercise that would be invalid if presented in text; or primarily intended to create a specific sensory experience:',\n techniques: [\n {\n id: 'TECH:text',\n title: 'Providing a descriptive label',\n using: [\n {\n group: {\n title: 'Short text alternative techniques for Situation D:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G196',\n title:\n 'Using a text alternative on one item within a group of images that describes all items in the group',\n },\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H35',\n title: 'Providing text alternatives on applet elements',\n },\n {\n id: 'TECH:H37',\n title: 'Using alt attributes on img elements',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n {\n id: 'TECH:H86',\n title: 'Providing text alternatives for ASCII art, emoticons, and leetspeak',\n },\n {\n id: 'TECH:PDF1',\n title: 'Applying text alternatives to images with the Alt entry in PDF documents',\n },\n ],\n },\n },\n ],\n },\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G68',\n title:\n 'Providing a short text alternative that describes the purpose of live audio-only and live video-only content',\n using: [\n {\n group: {\n title: 'Short text alternative techniques for Situation D:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G196',\n title:\n 'Using a text alternative on one item within a group of images that describes all items in the group',\n },\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H35',\n title: 'Providing text alternatives on applet elements',\n },\n {\n id: 'TECH:H37',\n title: 'Using alt attributes on img elements',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n {\n id: 'TECH:H86',\n title: 'Providing text alternatives for ASCII art, emoticons, and leetspeak',\n },\n {\n id: 'TECH:PDF1',\n title: 'Applying text alternatives to images with the Alt entry in PDF documents',\n },\n ],\n },\n },\n ],\n },\n {\n id: 'TECH:G100',\n title:\n 'Providing a short text alternative which is the accepted name or a descriptive name of the non-text content',\n using: [\n {\n group: {\n title: 'Short text alternative techniques for Situation D:',\n techniques: [\n {\n id: 'TECH:ARIA6',\n title: 'Using aria-label to provide labels for objects',\n },\n {\n id: 'TECH:ARIA10',\n title: 'Using aria-labelledby to provide a text alternative for non-text content',\n },\n {\n id: 'TECH:G196',\n title:\n 'Using a text alternative on one item within a group of images that describes all items in the group',\n },\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H35',\n title: 'Providing text alternatives on applet elements',\n },\n {\n id: 'TECH:H37',\n title: 'Using alt attributes on img elements',\n },\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n {\n id: 'TECH:H86',\n title: 'Providing text alternatives for ASCII art, emoticons, and leetspeak',\n },\n {\n id: 'TECH:PDF1',\n title: 'Applying text alternatives to images with the Alt entry in PDF documents',\n },\n ],\n },\n },\n ],\n },\n ],\n },\n {\n title: 'Situation E: If non-text content is a CAPTCHA:',\n techniques: [\n {\n and: [\n {\n id: 'TECH:G143',\n title: 'Providing a text alternative that describes the purpose of the CAPTCHA',\n },\n {\n id: 'TECH:G144',\n title:\n 'Ensuring that the Web Page contains another CAPTCHA serving the same purpose using a different modality',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation F: If the non-text content should be ignored by assistive technology:',\n techniques: [\n {\n id: 'TECH:text',\n title:\n 'Implementing or marking the non-text content so that it will be ignored by assistive technology',\n using: [\n {\n group: {\n title: 'Techniques to indicate that text alternatives are not required for Situation F:',\n techniques: [\n {\n id: 'TECH:C9',\n title: 'Using CSS to include decorative images',\n },\n {\n id: 'TECH:H67',\n title:\n 'Using null alt text and no title attribute on img elements for images that AT should ignore',\n },\n {\n id: 'TECH:PDF4',\n title: 'Hiding decorative images with the Artifact tag in PDF documents',\n },\n ],\n },\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F3',\n title:\n 'Failure of Success Criterion 1.1.1 due to using CSS to include images that convey important information',\n },\n {\n id: 'TECH:F13',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.4.1 due to having a text alternative that does not include information that is conveyed by color differences in the image',\n },\n {\n id: 'TECH:F20',\n title:\n 'Failure of Success Criterion 1.1.1 and 4.1.2 due to not updating text alternatives when changes to non-text content occur',\n },\n {\n id: 'TECH:F30',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives (e.g., filenames or placeholder text)',\n },\n {\n id: 'TECH:F38',\n title:\n 'Failure of Success Criterion 1.1.1 due to not marking up decorative images in HTML in a way that allows assistive technology to ignore them',\n },\n {\n id: 'TECH:F39',\n title:\n 'Failure of Success Criterion 1.1.1 due to providing a text alternative that is not null (e.g., alt=\"spacer\" or alt=\"image\") for images that should be ignored by assistive technology',\n },\n {\n id: 'TECH:F65',\n title:\n 'Failure of Success Criterion 1.1.1 due to omitting the alt attribute or text alternative on img elements, area elements, and input elements of type \"image\"',\n },\n {\n id: 'TECH:F67',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.2.1 due to providing long descriptions for non-text content that does not serve the same purpose or does not present the same information',\n },\n {\n id: 'TECH:F71',\n title:\n 'Failure of Success Criterion 1.1.1 due to using text look-alikes to represent text without providing a text alternative',\n },\n {\n id: 'TECH:F72',\n title: 'Failure of Success Criterion 1.1.1 due to using ASCII art without providing a text alternative',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:time-based-media',\n alt_id: ['media-equiv'],\n num: '1.2',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Time-based Media',\n title: 'Provide alternatives for time-based media.',\n successcriteria: [\n {\n id: 'WCAG2:audio-only-and-video-only-prerecorded',\n alt_id: ['media-equiv-av-only-alt'],\n num: '1.2.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Audio-only and Video-only (Prerecorded)',\n title:\n 'For prerecorded audio-only and prerecorded video-only media, the following are true, except when the audio or video is a media alternative for text and is clearly labeled as such:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Prerecorded Audio-only',\n text: 'An alternative for time-based media is provided that presents equivalent information for prerecorded audio-only content.',\n },\n {\n handle: 'Prerecorded Video-only',\n text: 'Either an alternative for time-based media or an audio track is provided that presents equivalent information for prerecorded video-only content.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If the content is prerecorded audio-only:',\n techniques: [\n {\n id: 'TECH:G158',\n title: 'Providing an alternative for time-based media for audio-only content',\n },\n ],\n },\n {\n title: 'Situation B: If the content is prerecorded video-only:',\n techniques: [\n {\n id: 'TECH:G159',\n title: 'Providing an alternative for time-based media for video-only content',\n },\n {\n id: 'TECH:G166',\n title: 'Providing audio that describes the important video content and describing it as such',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H96',\n title: 'Using the track element to provide audio descriptions',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F30',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives (e.g., filenames or placeholder text)',\n },\n {\n id: 'TECH:F67',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.2.1 due to providing long descriptions for non-text content that does not serve the same purpose or does not present the same information',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:captions-prerecorded',\n alt_id: ['media-equiv-captions'],\n num: '1.2.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Captions (Prerecorded)',\n title:\n 'Captions are provided for all prerecorded audio content in synchronized media, except when the media is a media alternative for text and is clearly labeled as such.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G93',\n title: 'Providing open (always visible) captions',\n },\n {\n id: 'TECH:G87',\n title: 'Providing closed captions',\n },\n {\n id: 'TECH:G87',\n title: 'Providing closed captions',\n using: [\n {\n id: 'TECH:SM11',\n title: 'Providing captions through synchronized text streams in SMIL 1.0',\n },\n {\n id: 'TECH:SM12',\n title: 'Providing captions through synchronized text streams in SMIL 2.0',\n },\n {\n id: 'TECH:H95',\n title: 'Using the track element to provide captions',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F8',\n title:\n 'Failure of Success Criterion 1.2.2 due to captions omitting some dialogue or important sound effects',\n },\n {\n id: 'TECH:F75',\n title:\n 'Failure of Success Criterion 1.2.2 by providing synchronized media without captions when the synchronized media presents more information than is presented on the page',\n },\n {\n id: 'TECH:F74',\n title:\n 'Failure of Success Criterion 1.2.2 and 1.2.8 due to not labeling a synchronized media alternative to text as an alternative',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:audio-description-or-media-alternative-prerecorded',\n alt_id: ['media-equiv-audio-desc'],\n num: '1.2.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Audio Description or Media Alternative (Prerecorded)',\n title:\n 'An alternative for time-based media or audio description of the prerecorded video content is provided for synchronized media, except when the media is a media alternative for text and is clearly labeled as such.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G69',\n title: 'Providing an alternative for time based media',\n using: [\n {\n id: 'TECH:G58',\n title:\n 'Placing a link to the alternative for time-based media immediately next to the non-text content',\n },\n ],\n },\n {\n id: 'TECH:future-audio-description-or-media-alternative-prerecorded-1',\n title: 'Linking to the alternative for time-based media using one of the following techniques',\n using: [\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n ],\n },\n {\n id: 'TECH:G78',\n title: 'Providing a second, user-selectable, audio track that includes audio descriptions',\n },\n {\n id: 'TECH:G173',\n title: 'Providing a version of a movie with audio descriptions',\n using: [\n {\n id: 'TECH:SM6',\n title: 'Providing audio description in SMIL 1.0',\n },\n {\n id: 'TECH:SM7',\n title: 'Providing audio description in SMIL 2.0',\n },\n {\n id: 'TECH:future-audio-description-or-media-alternative-prerecorded-1',\n title: 'Using any player that supports audio and video',\n },\n ],\n },\n {\n id: 'TECH:G8',\n title: 'Providing a movie with extended audio descriptions',\n using: [\n {\n id: 'TECH:SM1',\n title: 'Adding extended audio description in SMIL 1.0',\n },\n {\n id: 'TECH:SM2',\n title: 'Adding extended audio description in SMIL 2.0',\n },\n {\n id: 'TECH:future-audio-description-or-media-alternative-prerecorded-1',\n title: 'Using any player that supports audio and video',\n },\n ],\n },\n {\n id: 'TECH:G203',\n title: 'Using a static text alternative to describe a talking head video',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H96',\n title: 'Using the track element to provide audio descriptions',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:captions-live',\n alt_id: ['media-equiv-real-time-captions'],\n num: '1.2.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Captions (Live)',\n title: 'Captions are provided for all live audio content in synchronized media.',\n techniques: [\n {\n sufficient: [\n {\n and: [\n {\n id: 'TECH:G9',\n title: 'Creating captions for live synchronized media',\n },\n {\n id: 'TECH:G93',\n title: 'Providing open (always visible) captions',\n },\n ],\n },\n {\n and: [\n {\n id: 'TECH:G9',\n title: 'Creating captions for live synchronized media',\n },\n {\n id: 'TECH:G87',\n title: 'Providing closed captions',\n },\n ],\n },\n {\n and: [\n {\n id: 'TECH:G9',\n title: 'Creating captions for live synchronized media',\n using: [\n {\n id: 'TECH:SM11',\n title: 'Providing captions through synchronized text streams in SMIL 1.0',\n },\n {\n id: 'TECH:SM12',\n title: 'Providing captions through synchronized text streams in SMIL 2.0',\n },\n ],\n },\n {\n id: 'TECH:G87',\n title: 'Providing closed captions',\n using: [\n {\n id: 'TECH:SM11',\n title: 'Providing captions through synchronized text streams in SMIL 1.0',\n },\n {\n id: 'TECH:SM12',\n title: 'Providing captions through synchronized text streams in SMIL 2.0',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:audio-description-prerecorded',\n alt_id: ['media-equiv-audio-desc-only'],\n num: '1.2.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Audio Description (Prerecorded)',\n title: 'Audio description is provided for all prerecorded video content in synchronized media.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G78',\n title: 'Providing a second, user-selectable, audio track that includes audio descriptions',\n },\n {\n id: 'TECH:G173',\n title: 'Providing a version of a movie with audio descriptions',\n using: [\n {\n id: 'TECH:SM6',\n title: 'Providing audio description in SMIL 1.0',\n },\n {\n id: 'TECH:SM7',\n title: 'Providing audio description in SMIL 2.0',\n },\n {\n id: 'TECH:future-audio-description-prerecorded-1',\n title: 'Using any player that supports audio and video',\n },\n ],\n },\n {\n id: 'TECH:G8',\n title: 'Providing a movie with extended audio descriptions',\n using: [\n {\n id: 'TECH:SM1',\n title: 'Adding extended audio description in SMIL 1.0',\n },\n {\n id: 'TECH:SM2',\n title: 'Adding extended audio description in SMIL 2.0',\n },\n {\n id: 'TECH:future-audio-description-prerecorded-1',\n title: 'Using any player that supports audio and video',\n },\n ],\n },\n {\n id: 'TECH:G203',\n title: 'Using a static text alternative to describe a talking head video',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H96',\n title: 'Using the track element to provide audio descriptions',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:sign-language-prerecorded',\n alt_id: ['media-equiv-sign'],\n num: '1.2.6',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Sign Language (Prerecorded)',\n title: 'Sign language interpretation is provided for all prerecorded audio content in synchronized media.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G54',\n title: 'Including a sign language interpreter in the video stream',\n },\n {\n id: 'TECH:G81',\n title:\n 'Providing a synchronized video of the sign language interpreter that can be displayed in a different viewport or overlaid on the image by the player',\n using: [\n {\n id: 'TECH:SM13',\n title: 'Providing sign language interpretation through synchronized video streams in SMIL 1.0',\n },\n {\n id: 'TECH:SM14',\n title: 'Providing sign language interpretation through synchronized video streams in SMIL 2.0',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:extended-audio-description-prerecorded',\n alt_id: ['media-equiv-extended-ad'],\n num: '1.2.7',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Extended Audio Description (Prerecorded)',\n title:\n 'Where pauses in foreground audio are insufficient to allow audio descriptions to convey the sense of the video, extended audio description is provided for all prerecorded video content in synchronized media.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G8',\n title: 'Providing a movie with extended audio descriptions',\n using: [\n {\n id: 'TECH:SM1',\n title: 'Adding extended audio description in SMIL 1.0',\n },\n {\n id: 'TECH:SM2',\n title: 'Adding extended audio description in SMIL 2.0',\n },\n {\n id: 'TECH:future-extended-audio-description-prerecorded-1',\n title: 'Using any player that supports audio and video',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H96',\n title: 'Using the track element to provide audio descriptions',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:media-alternative-prerecorded',\n alt_id: ['media-equiv-text-doc'],\n num: '1.2.8',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Media Alternative (Prerecorded)',\n title:\n 'An alternative for time-based media is provided for all prerecorded synchronized media and for all prerecorded video-only media.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If the content is prerecorded synchronized media:',\n techniques: [\n {\n id: 'TECH:G69',\n title: 'Providing an alternative for time based media',\n using: [\n {\n id: 'TECH:G58',\n title:\n 'Placing a link to the alternative for time-based media immediately next to the non-text content',\n },\n ],\n },\n {\n id: 'TECH:future-media-alternative-prerecorded-1',\n title: 'Linking to the alternative for time-based media using one of the following techniques',\n using: [\n {\n id: 'TECH:H53',\n title: 'Using the body of the object element',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation B: If the content is prerecorded video-only:',\n techniques: [\n {\n id: 'TECH:G159',\n title: 'Providing an alternative for time-based media for video-only content',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H46',\n title: 'Using noembed with embed',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F74',\n title:\n 'Failure of Success Criterion 1.2.2 and 1.2.8 due to not labeling a synchronized media alternative to text as an alternative',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:audio-only-live',\n alt_id: ['media-equiv-live-audio-only'],\n num: '1.2.9',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Audio-only (Live)',\n title:\n 'An alternative for time-based media that presents equivalent information for live audio-only content is provided.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G151',\n title: 'Providing a link to a text transcript of a prepared statement or script if the script is followed',\n },\n {\n id: 'TECH:G150',\n title: 'Providing text based alternatives for live audio-only content',\n },\n {\n id: 'TECH:G157',\n title: 'Incorporating a live audio captioning service into a Web page',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:adaptable',\n alt_id: ['content-structure-separation'],\n num: '1.3',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Adaptable',\n title:\n 'Create content that can be presented in different ways (for example simpler layout) without losing information or structure.',\n successcriteria: [\n {\n id: 'WCAG2:info-and-relationships',\n alt_id: ['content-structure-separation-programmatic'],\n num: '1.3.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Info and Relationships',\n title:\n 'Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'Situation A: The technology provides semantic structure to make information and relationships conveyed through presentation programmatically determinable:',\n techniques: [\n {\n id: 'TECH:ARIA11',\n title: 'Using ARIA landmarks to identify regions of a page',\n },\n {\n id: 'TECH:ARIA12',\n title: 'Using role=heading to identify headings',\n },\n {\n id: 'TECH:ARIA13',\n title: 'Using aria-labelledby to name regions and landmarks',\n },\n {\n id: 'TECH:ARIA16',\n title: 'Using aria-labelledby to provide a name for user interface controls',\n },\n {\n id: 'TECH:ARIA17',\n title: 'Using grouping roles to identify related form controls',\n },\n {\n id: 'TECH:ARIA20',\n title: 'Using the region role to identify a region of the page',\n },\n {\n and: [\n {\n id: 'TECH:G115',\n title: 'Using semantic elements to mark up structure',\n },\n {\n id: 'TECH:H49',\n title: 'Using semantic markup to mark emphasized or special text',\n },\n ],\n },\n {\n id: 'TECH:G117',\n title: 'Using text to convey information that is conveyed by variations in presentation of text',\n },\n {\n id: 'TECH:G140',\n title: 'Separating information and structure from presentation to enable different presentations',\n },\n {\n id: 'TECH:ARIA24',\n title: 'Semantically identifying a font icon with role=\"img\"',\n },\n {\n id: 'TECH:future-info-and-relationships-1',\n title:\n 'Making information and relationships conveyed through presentation programmatically determinable using the following techniques:',\n using: [\n {\n id: 'TECH:G138',\n title: 'Using semantic markup whenever color cues are used',\n },\n {\n id: 'TECH:H51',\n title: 'Using table markup to present tabular information',\n },\n {\n id: 'TECH:PDF6',\n title: 'Using table elements for table markup in PDF Documents',\n },\n {\n id: 'TECH:PDF20',\n title: \"Using Adobe Acrobat Pro's Table Editor to repair mistagged tables\",\n },\n {\n id: 'TECH:H39',\n title: 'Using caption elements to associate data table captions with data tables',\n },\n {\n id: 'TECH:H73',\n title: 'Using the summary attribute of the table element to give an overview of data tables',\n },\n {\n id: 'TECH:H63',\n title: 'Using the scope attribute to associate header cells and data cells in data tables',\n },\n {\n id: 'TECH:H43',\n title:\n 'Using id and headers attributes to associate data cells with header cells in data tables',\n },\n {\n id: 'TECH:H44',\n title: 'Using label elements to associate text labels with form controls',\n },\n {\n id: 'TECH:H65',\n title:\n 'Using the title attribute to identify form controls when the label element cannot be used',\n },\n {\n id: 'TECH:PDF10',\n title: 'Providing labels for interactive form controls in PDF documents',\n },\n {\n id: 'TECH:PDF12',\n title: 'Providing name, role, value information for form fields in PDF documents',\n },\n {\n id: 'TECH:H71',\n title: 'Providing a description for groups of form controls using fieldset and legend elements',\n },\n {\n id: 'TECH:H85',\n title: 'Using OPTGROUP to group OPTION elements inside a SELECT',\n },\n {\n id: 'TECH:H48',\n title: 'Using ol, ul and dl for lists or groups of links',\n },\n {\n id: 'TECH:H42',\n title: 'Using h1-h6 to identify headings',\n },\n {\n id: 'TECH:PDF9',\n title: 'Providing headings by marking content with heading tags in PDF documents',\n },\n {\n id: 'TECH:SCR21',\n title: 'Using functions of the Document Object Model (DOM) to add content to a page',\n },\n {\n id: 'TECH:PDF11',\n title:\n 'Providing links and link text using the Link annotation and the /Link structure element in PDF documents',\n },\n {\n id: 'TECH:PDF17',\n title: 'Specifying consistent page numbering for PDF documents',\n },\n {\n id: 'TECH:PDF21',\n title: 'Using List tags for lists in PDF documents',\n },\n {\n id: 'TECH:H97',\n title: 'Grouping related links using the nav element',\n },\n ],\n },\n ],\n },\n {\n title:\n 'Situation B: The technology in use does NOT provide the semantic structure to make the information and relationships conveyed through presentation programmatically determinable:',\n techniques: [\n {\n id: 'TECH:G117',\n title: 'Using text to convey information that is conveyed by variations in presentation of text',\n },\n {\n id: 'TECH:future-info-and-relationships-1',\n title:\n 'Making information and relationships conveyed through presentation programmatically determinable or available in text using the following techniques:',\n using: [\n {\n id: 'TECH:T1',\n title: 'Using standard text formatting conventions for paragraphs',\n },\n {\n id: 'TECH:T2',\n title: 'Using standard text formatting conventions for lists',\n },\n {\n id: 'TECH:T3',\n title: 'Using standard text formatting conventions for headings',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C22',\n title: 'Using CSS to control visual presentation of text',\n },\n {\n id: 'TECH:G162',\n title: 'Positioning labels to maximize predictability of relationships',\n },\n {\n id: 'TECH:ARIA1',\n title: 'Using the aria-describedby property to provide a descriptive label for user interface controls',\n },\n {\n id: 'TECH:ARIA2',\n title: 'Identifying a required field with the aria-required property',\n },\n {\n id: 'TECH:G141',\n title: 'Organizing a page using headings',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F2',\n title:\n 'Failure of Success Criterion 1.3.1 due to using changes in text presentation to convey information without using the appropriate markup or text',\n },\n {\n id: 'TECH:F33',\n title:\n 'Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to create multiple columns in plain text content',\n },\n {\n id: 'TECH:F34',\n title:\n 'Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to format tables in plain text content',\n },\n {\n id: 'TECH:F42',\n title: 'Failure of Success Criteria 1.3.1, 2.1.1, 2.1.3, or 4.1.2 when emulating links',\n },\n {\n id: 'TECH:F43',\n title:\n 'Failure of Success Criterion 1.3.1 due to using structural markup in a way that does not represent relationships in the content',\n },\n {\n id: 'TECH:F46',\n title: 'Failure of Success Criterion 1.3.1 due to using th elements, layout tables',\n },\n {\n id: 'TECH:F48',\n title: 'Failure of Success Criterion 1.3.1 due to using the pre element to markup tabular information',\n },\n {\n id: 'TECH:F87',\n title:\n \"Failure of Success Criterion 1.3.1 due to inserting non-decorative content by using ::before and ::after pseudo-elements and the 'content' property in CSS\",\n },\n {\n id: 'TECH:F90',\n title:\n 'Failure of Success Criterion 1.3.1 for incorrectly associating table headers and content via the headers and id attributes',\n },\n {\n id: 'TECH:F91',\n title: 'Failure of Success Criterion 1.3.1 for not correctly marking up table headers',\n },\n {\n id: 'TECH:F92',\n title:\n 'Failure of Success Criterion 1.3.1 due to the use of role presentation on content which conveys semantic information',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:meaningful-sequence',\n alt_id: ['content-structure-separation-sequence'],\n num: '1.3.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Meaningful Sequence',\n title:\n 'When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G57',\n title: 'Ordering the content in a meaningful sequence',\n },\n {\n id: 'TECH:G57',\n title: 'Ordering the content in a meaningful sequence',\n using: [\n {\n id: 'TECH:H34',\n title:\n 'Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text direction inline',\n },\n {\n id: 'TECH:H56',\n title: 'Using the dir attribute on an inline element to resolve problems with nested directional runs',\n },\n {\n id: 'TECH:C6',\n title: 'Positioning content based on structural markup',\n },\n {\n id: 'TECH:C8',\n title: 'Using CSS letter-spacing to control spacing within a word',\n },\n ],\n },\n {\n id: 'TECH:C27',\n title: 'Making the DOM order match the visual order',\n },\n {\n id: 'TECH:PDF3',\n title: 'Ensuring correct tab and reading order in PDF documents',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F34',\n title:\n 'Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to format tables in plain text content',\n },\n {\n id: 'TECH:F33',\n title:\n 'Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to create multiple columns in plain text content',\n },\n {\n id: 'TECH:F32',\n title:\n 'Failure of Success Criterion 1.3.2 due to using white space characters to control spacing within a word',\n },\n {\n id: 'TECH:F49',\n title:\n 'Failure of Success Criterion 1.3.2 due to using an HTML layout table that does not make sense when linearized',\n },\n {\n id: 'TECH:F1',\n title:\n 'Failure of Success Criterion 1.3.2 due to changing the meaning of content by positioning information with CSS',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:sensory-characteristics',\n alt_id: ['content-structure-separation-understanding'],\n num: '1.3.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Sensory Characteristics',\n title:\n 'Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, color, size, visual location, orientation, or sound.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'For requirements related to color, refer to Guideline 1.4.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G96',\n title:\n 'Providing textual identification of items that otherwise rely only on sensory information to be understood',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F14',\n title: 'Failure of Success Criterion 1.3.3 due to identifying content only by its shape or location',\n },\n {\n id: 'TECH:F26',\n title: 'Failure of Success Criterion 1.3.3 due to using a graphical symbol alone to convey information',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:orientation',\n alt_id: [],\n num: '1.3.4',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Orientation',\n title:\n 'Content does not restrict its view and operation to a single display orientation, such as portrait or landscape, unless a specific display orientation is essential.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G214',\n title: 'Using a control to allow access to content in different orientations which is otherwise restricted',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F97',\n title: 'Failure due to locking the orientation to landscape or portrait view',\n },\n {\n id: 'TECH:F100',\n title: 'Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:identify-input-purpose',\n alt_id: [],\n num: '1.3.5',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Identify Input Purpose',\n title:\n 'The purpose of each input field collecting information about the user can be programmatically determined when:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n text: 'The input field serves a purpose identified in the Input Purposes for User Interface Components section; and',\n },\n {\n text: 'The content is implemented using technologies with support for identifying the expected meaning for form input data.',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:identify-purpose',\n alt_id: [],\n num: '1.3.6',\n versions: ['2.1', '2.2'],\n level: 'AAA',\n handle: 'Identify Purpose',\n title:\n 'In content implemented using markup languages, the purpose of user interface components, icons, and regions can be programmatically determined.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-identify-purpose-1',\n title: 'Programmatically indicating the purpose of icons, regions and user interface components',\n },\n {\n id: 'TECH:ARIA11',\n title: 'Using ARIA landmarks to identify regions of a page',\n },\n {\n id: 'TECH:future-identify-purpose-1',\n title: 'Using microdata to markup user interface components (future link)',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:future-identify-purpose-1',\n title: 'Enabling user agents to find the version of the content that best fits their needs',\n },\n {\n id: 'TECH:future-identify-purpose-1',\n title: 'Using semantics to identify important features (e.g., coga-simplification=\"simplest\")',\n },\n {\n id: 'TECH:future-identify-purpose-1',\n title: 'Using aria-invalid and aria-required',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:distinguishable',\n alt_id: ['visual-audio-contrast'],\n num: '1.4',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Distinguishable',\n title: 'Make it easier for users to see and hear content including separating foreground from background.',\n successcriteria: [\n {\n id: 'WCAG2:use-of-color',\n alt_id: ['visual-audio-contrast-without-color'],\n num: '1.4.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Use of Color',\n title:\n 'Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'This success criterion addresses color perception specifically. Other forms of perception are covered in Guideline 1.3 including programmatic access to color and other visual presentation coding.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'Situation A: If the color of particular words, backgrounds, or other content is used to indicate information:',\n techniques: [\n {\n id: 'TECH:G14',\n title: 'Ensuring that information conveyed by color differences is also available in text',\n },\n {\n id: 'TECH:G205',\n title: 'Including a text cue for colored form control labels',\n },\n {\n id: 'TECH:G182',\n title:\n 'Ensuring that additional visual cues are available when text color differences are used to convey information',\n },\n {\n id: 'TECH:G183',\n title:\n 'Using a contrast ratio of 3:1 with surrounding text and providing additional visual cues on hover for links or controls where color alone is used to identify them',\n },\n ],\n },\n {\n title: 'Situation B: If color is used within an image to convey information:',\n techniques: [\n {\n id: 'TECH:G111',\n title: 'Using color and pattern',\n },\n {\n id: 'TECH:G14',\n title: 'Ensuring that information conveyed by color differences is also available in text',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C15',\n title: 'Using CSS to change the presentation of a user interface component when it receives focus',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F13',\n title:\n 'Failure of Success Criterion 1.1.1 and 1.4.1 due to having a text alternative that does not include information that is conveyed by color differences in the image',\n },\n {\n id: 'TECH:F73',\n title:\n 'Failure of Success Criterion 1.4.1 due to creating links that are not visually evident without color vision',\n },\n {\n id: 'TECH:F81',\n title:\n 'Failure of Success Criterion 1.4.1 due to identifying required or error fields using color differences only',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:audio-control',\n alt_id: ['visual-audio-contrast-dis-audio'],\n num: '1.4.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Audio Control',\n title:\n 'If any audio on a Web page plays automatically for more than 3 seconds, either a mechanism is available to pause or stop the audio, or a mechanism is available to control audio volume independently from the overall system volume level.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G60',\n title: 'Playing a sound that turns off automatically within three seconds',\n },\n {\n id: 'TECH:G170',\n title:\n 'Providing a control near the beginning of the Web page that turns off sounds that play automatically',\n },\n {\n id: 'TECH:G171',\n title: 'Playing sounds only on user request',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F23',\n title:\n 'Failure of 1.4.2 due to playing a sound longer than 3 seconds where there is no mechanism to turn it off',\n },\n {\n id: 'TECH:F93',\n title:\n 'Failure of Success Criterion 1.4.2 for absence of a way to pause or stop an HTML5 media element that autoplays',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:contrast-minimum',\n alt_id: ['visual-audio-contrast-contrast'],\n num: '1.4.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Contrast (Minimum)',\n title:\n 'The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Large Text',\n text: 'Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;',\n },\n {\n handle: 'Incidental',\n text: 'Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.',\n },\n {\n handle: 'Logotypes',\n text: 'Text that is part of a logo or brand name has no contrast requirement.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: text is less than 18 point if not bold and less than 14 point if bold',\n techniques: [\n {\n id: 'TECH:G18',\n title:\n 'Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G148',\n title:\n 'Not specifying background color, not specifying text color, and not using technology features that change those defaults',\n },\n {\n id: 'TECH:G174',\n title:\n 'Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast',\n },\n ],\n },\n {\n title: 'Situation B: text is at least 18 point if not bold and at least 14 point if bold',\n techniques: [\n {\n id: 'TECH:G145',\n title:\n 'Ensuring that a contrast ratio of at least 3:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G148',\n title:\n 'Not specifying background color, not specifying text color, and not using technology features that change those defaults',\n },\n {\n id: 'TECH:G174',\n title:\n 'Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G156',\n title:\n 'Using a technology that has commonly-available user agents that can change the foreground and background of blocks of text',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F24',\n title:\n 'Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa',\n },\n {\n id: 'TECH:F83',\n title:\n 'Failure of Success Criterion 1.4.3 and 1.4.6 due to using background images that do not provide sufficient contrast with foreground text (or images of text)',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:resize-text',\n alt_id: ['visual-audio-contrast-scale'],\n num: '1.4.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Resize Text',\n title:\n 'Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G142',\n title: 'Using a technology that has commonly-available user agents that support zoom',\n },\n {\n id: 'TECH:future-resize-text-1',\n title:\n 'Ensuring that text containers resize when the text resizes AND using measurements that are relative to other measurements in the content by using one or more of the following techniques:',\n using: [\n {\n id: 'TECH:C28',\n title: 'Specifying the size of text containers using em units',\n },\n {\n id: 'TECH:future-resize-text-1',\n title: 'Techniques for relative measurements',\n using: [\n {\n id: 'TECH:C12',\n title: 'Using percent for font sizes',\n },\n {\n id: 'TECH:C13',\n title: 'Using named font sizes',\n },\n {\n id: 'TECH:C14',\n title: 'Using em units for font sizes',\n },\n ],\n },\n {\n id: 'TECH:future-resize-text-1',\n title: 'Techniques for text container resizing',\n using: [\n {\n id: 'TECH:SCR34',\n title: 'Calculating size and position in a way that scales with text size',\n },\n {\n id: 'TECH:G146',\n title: 'Using liquid layout',\n },\n ],\n },\n ],\n },\n {\n id: 'TECH:G178',\n title:\n 'Providing controls on the Web page that allow users to incrementally change the size of all text on the page up to 200 percent',\n },\n {\n id: 'TECH:G179',\n title:\n 'Ensuring that there is no loss of content or functionality when the text resizes and text containers do not change their width',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C17',\n title: 'Scaling form elements which contain text',\n },\n {\n id: 'TECH:C20',\n title:\n 'Using relative measurements to set column widths so that lines can average 80 characters or less when the browser is resized',\n },\n {\n id: 'TECH:C22',\n title: 'Using CSS to control visual presentation of text',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F69',\n title:\n 'Failure of Success Criterion 1.4.4 when resizing visually rendered text up to 200 percent causes the text, image or controls to be clipped, truncated or obscured',\n },\n {\n id: 'TECH:F80',\n title:\n 'Failure of Success Criterion 1.4.4 when text-based form controls do not resize when visually rendered text is resized up to 200%',\n },\n {\n id: 'TECH:F94',\n title: 'Failure of Success Criterion 1.4.4 due to incorrect use of viewport units to resize text',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:images-of-text',\n alt_id: ['visual-audio-contrast-text-presentation'],\n num: '1.4.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Images of Text',\n title:\n 'If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Customizable',\n text: \"The image of text can be visually customized to the user's requirements;\",\n },\n {\n handle: 'Essential',\n text: 'A particular presentation of text is essential to the information being conveyed.',\n },\n ],\n },\n {\n type: 'note',\n handle: 'Note 1',\n text: 'Logotypes (text that is part of a logo or brand name) are considered essential.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C22',\n title: 'Using CSS to control visual presentation of text',\n },\n {\n id: 'TECH:C30',\n title: 'Using CSS to replace text with images of text and providing user interface controls to switch',\n },\n {\n id: 'TECH:G140',\n title: 'Separating information and structure from presentation to enable different presentations',\n },\n {\n id: 'TECH:PDF7',\n title: 'Performing OCR on a scanned PDF document to provide actual text',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C12',\n title: 'Using percent for font sizes',\n },\n {\n id: 'TECH:C13',\n title: 'Using named font sizes',\n },\n {\n id: 'TECH:C14',\n title: 'Using em units for font sizes',\n },\n {\n id: 'TECH:C8',\n title: 'Using CSS letter-spacing to control spacing within a word',\n },\n {\n id: 'TECH:C6',\n title: 'Positioning content based on structural markup',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:contrast-enhanced',\n alt_id: ['visual-audio-contrast7'],\n num: '1.4.6',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Contrast (Enhanced)',\n title:\n 'The visual presentation of text and images of text has a contrast ratio of at least 7:1, except for the following:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Large Text',\n text: 'Large-scale text and images of large-scale text have a contrast ratio of at least 4.5:1;',\n },\n {\n handle: 'Incidental',\n text: 'Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.',\n },\n {\n handle: 'Logotypes',\n text: 'Text that is part of a logo or brand name has no contrast requirement.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: text is less than 18 point if not bold and less than 14 point if bold',\n techniques: [\n {\n id: 'TECH:G17',\n title:\n 'Ensuring that a contrast ratio of at least 7:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G148',\n title:\n 'Not specifying background color, not specifying text color, and not using technology features that change those defaults',\n },\n {\n id: 'TECH:G174',\n title:\n 'Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast',\n },\n ],\n },\n {\n title: 'Situation B: text is as least 18 point if not bold and at least 14 point if bold',\n techniques: [\n {\n id: 'TECH:G18',\n title:\n 'Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G148',\n title:\n 'Not specifying background color, not specifying text color, and not using technology features that change those defaults',\n },\n {\n id: 'TECH:G174',\n title:\n 'Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G156',\n title:\n 'Using a technology that has commonly-available user agents that can change the foreground and background of blocks of text',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F24',\n title:\n 'Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa',\n },\n {\n id: 'TECH:F83',\n title:\n 'Failure of Success Criterion 1.4.3 and 1.4.6 due to using background images that do not provide sufficient contrast with foreground text (or images of text)',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:low-or-no-background-audio',\n alt_id: ['visual-audio-contrast-noaudio'],\n num: '1.4.7',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Low or No Background Audio',\n title:\n 'For prerecorded audio-only content that (1) contains primarily speech in the foreground, (2) is not an audio CAPTCHA or audio logo, and (3) is not vocalization intended to be primarily musical expression such as singing or rapping, at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'No Background',\n text: 'The audio does not contain background sounds.',\n },\n {\n handle: 'Turn Off',\n text: 'The background sounds can be turned off.',\n },\n {\n handle: '20 dB',\n text: 'The background sounds are at least 20 decibels lower than the foreground speech content, with the exception of occasional sounds that last for only one or two seconds. Per the definition of \"decibel,\" background sound that meets this requirement will be approximately four times quieter than the foreground speech content.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G56',\n title:\n 'Mixing audio files so that non-speech sounds are at least 20 decibels lower than the speech audio content',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:visual-presentation',\n alt_id: ['visual-audio-contrast-visual-presentation'],\n num: '1.4.8',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Visual Presentation',\n title: 'For the visual presentation of blocks of text, a mechanism is available to achieve the following:',\n details: [\n {\n type: 'olist',\n items: [\n {\n handle: '',\n text: 'Foreground and background colors can be selected by the user.',\n },\n {\n handle: '',\n text: 'Width is no more than 80 characters or glyphs (40 if CJK).',\n },\n {\n handle: '',\n text: 'Text is not justified (aligned to both the left and the right margins).',\n },\n {\n handle: '',\n text: 'Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.',\n },\n {\n handle: '',\n text: 'Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'First Requirement: Techniques to ensure foreground and background colors can be selected by the user',\n techniques: [\n {\n id: 'TECH:C23',\n title:\n 'Specifying text and background colors of secondary content such as banners, features and navigation in CSS while not specifying text and background colors of the main content',\n append: 'OR',\n },\n {\n id: 'TECH:C25',\n title:\n 'Specifying borders and layout in CSS to delineate areas of a Web page while not specifying text and text-background colors',\n append: 'OR',\n },\n {\n id: 'TECH:G156',\n title:\n 'Using a technology that has commonly-available user agents that can change the foreground and background of blocks of text',\n append: 'OR',\n },\n {\n id: 'TECH:G148',\n title:\n 'Not specifying background color, not specifying text color, and not using technology features that change those defaults',\n append: 'OR',\n },\n {\n id: 'TECH:G175',\n title: 'Providing a multi color selection tool on the page for foreground and background colors',\n append: 'OR',\n },\n ],\n },\n {\n title:\n 'Second Requirement: Techniques to ensure width is no more than 80 characters or glyphs (40 if CJK)',\n techniques: [\n {\n id: 'TECH:G204',\n title: \"Not interfering with the user agent's reflow of text as the viewing window is narrowed\",\n append: 'OR',\n },\n {\n id: 'TECH:C20',\n title:\n 'Using relative measurements to set column widths so that lines can average 80 characters or less when the browser is resized',\n },\n ],\n },\n {\n title:\n 'Third Requirement: Techniques to ensure text is not justified (aligned to both the left and the right margins)',\n techniques: [\n {\n id: 'TECH:C19',\n title: 'Specifying alignment either to the left OR right in CSS',\n append: 'OR',\n },\n {\n id: 'TECH:G172',\n title: 'Providing a mechanism to remove full justification of text',\n append: 'OR',\n },\n {\n id: 'TECH:G169',\n title: 'Aligning text on only one side',\n },\n ],\n },\n {\n title:\n 'Fourth Requirement: Techniques to ensure line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing',\n techniques: [\n {\n id: 'TECH:G188',\n title: 'Providing a button on the page to increase line spaces and paragraph spaces',\n append: 'OR',\n },\n {\n id: 'TECH:C21',\n title: 'Specifying line spacing in CSS',\n },\n ],\n },\n {\n title:\n 'Fifth Requirement: Techniques to ensure text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window',\n techniques: [\n {\n id: 'TECH:text',\n title: \"Not interfering with the user agent's reflow of text as the viewing window is narrowed\",\n append: 'OR',\n },\n {\n id: 'TECH:G146',\n title: 'Using liquid layout',\n append: 'AND using measurements that are relative to other measurements in the content by',\n using: [\n {\n id: 'TECH:C12',\n title: 'Using percent for font sizes',\n append: 'OR',\n },\n {\n id: 'TECH:C13',\n title: 'Using named font sizes',\n append: 'OR',\n },\n {\n id: 'TECH:C14',\n title: 'Using em units for font sizes',\n append: 'OR',\n },\n {\n id: 'TECH:C24',\n title: 'Using percentage values in CSS for container sizes',\n append: 'OR',\n },\n {\n id: 'TECH:SCR34',\n title: 'Calculating size and position in a way that scales with text size',\n },\n ],\n },\n {\n id: 'TECH:G206',\n title:\n 'Providing options within the content to switch to a layout that does not require the user to scroll horizontally to read a line of text',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F24',\n title:\n 'Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa',\n },\n {\n id: 'TECH:F88',\n title:\n 'Failure of Success Criterion 1.4.8 due to using text that is justified (aligned to both the left and the right margins)',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:images-of-text-no-exception',\n alt_id: ['visual-audio-contrast-text-images'],\n num: '1.4.9',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Images of Text (No Exception)',\n title:\n 'Images of text are only used for pure decoration or where a particular presentation of text is essential to the information being conveyed.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'Logotypes (text that is part of a logo or brand name) are considered essential.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C22',\n title: 'Using CSS to control visual presentation of text',\n },\n {\n id: 'TECH:C30',\n title: 'Using CSS to replace text with images of text and providing user interface controls to switch',\n },\n {\n id: 'TECH:G140',\n title: 'Separating information and structure from presentation to enable different presentations',\n },\n {\n id: 'TECH:PDF7',\n title: 'Performing OCR on a scanned PDF document to provide actual text',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C12',\n title: 'Using percent for font sizes',\n },\n {\n id: 'TECH:C13',\n title: 'Using named font sizes',\n },\n {\n id: 'TECH:C14',\n title: 'Using em units for font sizes',\n },\n {\n id: 'TECH:C8',\n title: 'Using CSS letter-spacing to control spacing within a word',\n },\n {\n id: 'TECH:C6',\n title: 'Positioning content based on structural markup',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:reflow',\n alt_id: [],\n num: '1.4.10',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Reflow',\n title:\n 'Content can be presented without loss of information or functionality, and without requiring scrolling in two dimensions for:',\n details: [\n {\n type: 'ulist',\n items: [\n { text: 'Vertical scrolling content at a width equivalent to 320 CSS pixels;' },\n { text: 'Horizontal scrolling content at a height equivalent to 256 CSS pixels;' },\n ],\n },\n {\n type: 'p',\n text: 'Except for parts of the content which require two-dimensional layout for usage or meaning.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C32',\n title: 'Using media queries and grid CSS to reflow columns',\n },\n {\n id: 'TECH:C31',\n title: 'Using CSS Flexbox to reflow content',\n },\n {\n id: 'TECH:C33',\n title: 'Allowing for Reflow with Long URLs and Strings of Text',\n },\n {\n id: 'TECH:C38',\n title: 'Using CSS width, max-width and flexbox to fit labels and inputs',\n },\n {\n id: 'TECH:SCR34',\n title: 'Calculating size and position in a way that scales with text size',\n },\n {\n id: 'TECH:G206',\n title:\n 'Providing options within the content to switch to a layout that does not require the user to scroll horizontally to read a line of text',\n },\n {\n id: 'TECH:future-reflow-1',\n title: 'Using PDF/UA when creating PDFs (Potential future technique)',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C34',\n title: 'Using media queries to un-fixing sticky headers / footers',\n },\n {\n id: 'TECH:C37',\n title: 'Using CSS max-width and height to fit images',\n },\n {\n id: 'TECH:future-reflow-1',\n title: 'CSS, Reflowing simple data tables (Potential future technique)',\n },\n {\n id: 'TECH:future-reflow-1',\n title: 'CSS, Fitting data cells within the width of the viewport (Potential future technique)',\n },\n {\n id: 'TECH:future-reflow-1',\n title: 'Mechanism to allow mobile view at any time (Potential future technique)',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F102',\n title:\n 'Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:non-text-contrast',\n alt_id: [],\n num: '1.4.11',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Non-text Contrast',\n title: 'The visual presentation of the following have a contrast ratio of at least 3:1 against adjacent color(s):',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'User Interface Components',\n text: 'Visual information required to identify user interface components and states, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author;',\n },\n {\n handle: 'Graphical Objects',\n text: 'Parts of graphics required to understand the content, except when a particular presentation of graphics is essential to the information being conveyed.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation B: Color is required to understand graphical content',\n techniques: [\n {\n id: 'TECH:G207',\n title: 'Ensuring that a contrast ratio of 3:1 is provided for icons',\n },\n {\n id: 'TECH:G209',\n title: 'Provide sufficient contrast at the boundaries between adjoining colors',\n },\n ],\n },\n {\n title: 'Text in or over graphics',\n techniques: [\n {\n id: 'TECH:text',\n title: '@@ Include labels and values with the graphic (TBD)',\n },\n {\n id: 'TECH:G18',\n title:\n 'Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G145',\n title:\n 'Ensuring that a contrast ratio of at least 3:1 exists between text (and images of text) and background behind the text',\n },\n {\n id: 'TECH:G174',\n title:\n 'Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F78',\n title:\n 'Failure of Success Criterion 2.4.7 due to styling element outlines and borders in a way that removes or renders non-visible the visual focus indicator',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:text-spacing',\n alt_id: [],\n num: '1.4.12',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Text Spacing',\n title:\n 'In content implemented using markup languages that support the following text style properties, no loss of content or functionality occurs by setting all of the following and by changing no other style property:',\n details: [\n {\n type: 'ulist',\n items: [\n { text: 'Line height (line spacing) to at least 1.5 times the font size;' },\n { text: 'Spacing following paragraphs to at least 2 times the font size;' },\n { text: 'Letter spacing (tracking) to at least 0.12 times the font size;' },\n { text: 'Word spacing to at least 0.16 times the font size.' },\n ],\n },\n {\n type: 'p',\n text: 'Exception: Human languages and scripts that do not make use of one or more of these text style properties in written text can conform using only the properties that exist for that combination of language and script.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C36',\n title: 'Allowing for text spacing override',\n },\n {\n id: 'TECH:C35',\n title: 'Allowing for text spacing without wrapping',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C8',\n title: 'Using CSS letter-spacing to control spacing within a word',\n },\n {\n id: 'TECH:C21',\n title: 'Specifying line spacing in CSS',\n },\n {\n id: 'TECH:C28',\n title: 'Specifying the size of text containers using em units',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F104',\n title:\n 'Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:content-on-hover-or-focus',\n alt_id: [],\n num: '1.4.13',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Content on Hover or Focus',\n title:\n 'Where receiving and then removing pointer hover or keyboard focus triggers additional content to become visible and then hidden, the following are true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Dismissible',\n text: 'A mechanism is available to dismiss the additional content without moving pointer hover or keyboard focus, unless the additional content communicates an input error or does not obscure or replace other content;',\n },\n {\n handle: 'Hoverable',\n text: 'If pointer hover can trigger the additional content, then the pointer can be moved over the additional content without the additional content disappearing;',\n },\n {\n handle: 'Persistent',\n text: 'The additional content remains visible until the hover or focus trigger is removed, the user dismisses it, or its information is no longer valid.',\n },\n ],\n },\n {\n type: 'p',\n text: 'Exception: The visual presentation of the additional content is controlled by the user agent and is not modified by the author.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:SCR39',\n title: 'Making content on focus or hover hoverable, dismissible, and persistent',\n },\n {\n id: 'TECH:future-content-on-hover-or-focus-1',\n title: 'ARIA: Using role=\"tooltip\" (Potential future technique)',\n },\n {\n id: 'TECH:future-content-on-hover-or-focus-1',\n title: 'CSS: Using hover and focus pseudo classes (Potential future technique)',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F95',\n title: 'Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable',\n },\n {\n id: 'TECH:future-content-on-hover-or-focus-1',\n title:\n 'Failure to make content dismissable without moving pointer hover or keyboard focus (Potential future technique)',\n },\n {\n id: 'TECH:future-content-on-hover-or-focus-1',\n title:\n 'Failure to meet by content on hover or focus not remaining visible until dismissed or invalid (Potential future technique)',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n ],\n },\n {\n id: 'WCAG2:operable',\n num: '2',\n versions: ['2.0', '2.1'],\n handle: 'Operable',\n title: 'User interface components and navigation must be operable.',\n guidelines: [\n {\n id: 'WCAG2:keyboard-accessible',\n alt_id: ['keyboard-operation'],\n num: '2.1',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Keyboard Accessible',\n title: 'Make all functionality available from a keyboard.',\n successcriteria: [\n {\n id: 'WCAG2:keyboard',\n alt_id: ['keyboard-operation-keyboard-operable'],\n num: '2.1.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Keyboard',\n title:\n \"All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user's movement and not just the endpoints.\",\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'This exception relates to the underlying function, not the input technique. For example, if using handwriting to enter text, the input technique (handwriting) requires path-dependent input but the underlying function (text input) does not.',\n },\n {\n type: 'note',\n handle: 'Note 2',\n text: 'This does not forbid and should not discourage providing mouse input or other input methods in addition to keyboard operation.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G202',\n title: 'Ensuring keyboard control for all functionality',\n },\n {\n id: 'TECH:future-keyboard-1',\n title: 'Ensuring keyboard control by using one of the following techniques.',\n using: [\n {\n id: 'TECH:H91',\n title: 'Using HTML form controls and links',\n },\n {\n id: 'TECH:PDF3',\n title: 'Ensuring correct tab and reading order in PDF documents',\n },\n {\n id: 'TECH:PDF11',\n title:\n 'Providing links and link text using the Link annotation and the /Link structure element in PDF documents',\n },\n {\n id: 'TECH:PDF23',\n title: 'Providing interactive form controls in PDF documents',\n },\n ],\n },\n {\n id: 'TECH:G90',\n title: 'Providing keyboard-triggered event handlers',\n using: [\n {\n id: 'TECH:SCR20',\n title: 'Using both keyboard and other device-specific functions',\n },\n {\n id: 'TECH:SCR35',\n title: 'Making actions keyboard accessible by using the onclick event of anchors and buttons',\n },\n {\n id: 'TECH:SCR2',\n title: 'Using redundant keyboard and mouse event handlers',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:SCR29',\n title: 'Adding keyboard-accessible actions to static HTML elements',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F54',\n title:\n 'Failure of Success Criterion 2.1.1 due to using only pointing-device-specific event handlers (including gesture) for a function',\n },\n {\n id: 'TECH:F55',\n title:\n 'Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received',\n },\n {\n id: 'TECH:F42',\n title: 'Failure of Success Criteria 1.3.1, 2.1.1, 2.1.3, or 4.1.2 when emulating links',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:no-keyboard-trap',\n alt_id: ['keyboard-operation-trapping'],\n num: '2.1.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'No Keyboard Trap',\n title:\n 'If keyboard focus can be moved to a component of the page using a keyboard interface, then focus can be moved away from that component using only a keyboard interface, and, if it requires more than unmodified arrow or tab keys or other standard exit methods, the user is advised of the method for moving focus away.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: \"Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference.\",\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G21',\n title: 'Ensuring that users are not trapped in content',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F10',\n title:\n 'Failure of Success Criterion 2.1.2 and Conformance Requirement 5 due to combining multiple content formats in a way that traps users inside one format type',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:keyboard-no-exception',\n alt_id: ['keyboard-operation-all-funcs'],\n num: '2.1.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Keyboard (No Exception)',\n title:\n 'All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes.',\n techniques: [\n {\n sufficient: [],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:character-key-shortcuts',\n alt_id: [],\n num: '2.1.4',\n versions: ['2.1', '2.2'],\n level: 'A',\n handle: 'Character Key Shortcuts',\n title:\n 'If a keyboard shortcut is implemented in content using only letter (including upper- and lower-case letters), punctuation, number, or symbol characters, then at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Turn off',\n text: 'A mechanism is available to turn the shortcut off;',\n },\n {\n handle: 'Remap',\n text: 'A mechanism is available to remap the shortcut to include one or more non-printable keyboard keys (e.g., Ctrl, Alt);',\n },\n {\n handle: 'Active only on focus',\n text: 'The keyboard shortcut for a user interface component is only active when that component has focus.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G217',\n title: 'Providing a mechanism to allow users to remap or turn off character key shortcuts',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F99',\n title:\n 'Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:enough-time',\n alt_id: ['time-limits'],\n num: '2.2',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Enough Time',\n title: 'Provide users enough time to read and use content.',\n successcriteria: [\n {\n id: 'WCAG2:timing-adjustable',\n alt_id: ['time-limits-required-behaviors'],\n num: '2.2.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Timing Adjustable',\n title: 'For each time limit that is set by the content, at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Turn off',\n text: 'The user is allowed to turn off the time limit before encountering it; or',\n },\n {\n handle: 'Adjust',\n text: 'The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting; or',\n },\n {\n handle: 'Extend',\n text: 'The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, \"press the space bar\"), and the user is allowed to extend the time limit at least ten times; or',\n },\n {\n handle: 'Real-time Exception',\n text: 'The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or',\n },\n {\n handle: 'Essential Exception',\n text: 'The time limit is essential and extending it would invalidate the activity; or',\n },\n {\n handle: '20 Hour Exception',\n text: 'The time limit is longer than 20 hours.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If there are session time limits:',\n techniques: [\n {\n id: 'TECH:G133',\n title:\n 'Providing a checkbox on the first page of a multipart form that allows users to ask for longer session time limit or no session time limit',\n },\n {\n id: 'TECH:G198',\n title: 'Providing a way for the user to turn the time limit off',\n },\n ],\n },\n {\n title: 'Situation B: If a time limit is controlled by a script on the page:',\n techniques: [\n {\n id: 'TECH:G198',\n title: 'Providing a way for the user to turn the time limit off',\n },\n {\n id: 'TECH:G180',\n title: 'Providing the user with a means to set the time limit to 10 times the default time limit',\n },\n {\n and: [\n {\n id: 'TECH:SCR16',\n title: 'Providing a script that warns the user a time limit is about to expire',\n },\n {\n id: 'TECH:SCR1',\n title: 'Allowing the user to extend the default time limit',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation C: If there are time limits on reading:',\n techniques: [\n {\n id: 'TECH:G4',\n title: 'Allowing the content to be paused and restarted from where it was paused',\n },\n {\n id: 'TECH:G198',\n title: 'Providing a way for the user to turn the time limit off',\n },\n {\n id: 'TECH:SCR33',\n title: 'Using script to scroll content, and providing a mechanism to pause it',\n },\n {\n id: 'TECH:SCR36',\n title:\n 'Providing a mechanism to allow users to display moving, scrolling, or auto-updating text in a static window or area',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F40',\n title: 'Failure due to using meta redirect with a time limit',\n },\n {\n id: 'TECH:F41',\n title: 'Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page',\n },\n {\n id: 'TECH:F58',\n title:\n 'Failure of Success Criterion 2.2.1 due to using server-side techniques to automatically redirect pages after a time-out',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:pause-stop-hide',\n alt_id: ['time-limits-pause'],\n num: '2.2.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Pause, Stop, Hide',\n title: 'For moving, blinking, scrolling, or auto-updating information, all of the following are true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Moving, blinking, scrolling',\n text: 'For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential; and',\n },\n {\n handle: 'Auto-updating',\n text: 'For any auto-updating information that (1) starts automatically and (2) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential.',\n },\n ],\n },\n {\n type: 'note',\n handle: 'Note 1',\n text: 'For requirements related to flickering or flashing content, refer to Guideline 2.3.',\n },\n {\n type: 'note',\n handle: 'Note 2',\n text: \"Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference.\",\n },\n {\n type: 'note',\n handle: 'Note 3',\n text: 'Content that is updated periodically by software or that is streamed to the user agent is not required to preserve or present information that is generated or received between the initiation of the pause and resuming presentation, as this may not be technically possible, and in many situations could be misleading to do so.',\n },\n {\n type: 'note',\n handle: 'Note 4',\n text: 'An animation that occurs as part of a preload phase or similar situation can be considered essential if interaction cannot occur during that phase for all users and if not indicating progress could confuse users or cause them to think that content was frozen or broken.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G4',\n title: 'Allowing the content to be paused and restarted from where it was paused',\n },\n {\n id: 'TECH:SCR33',\n title: 'Using script to scroll content, and providing a mechanism to pause it',\n },\n {\n id: 'TECH:G11',\n title: 'Creating content that blinks for less than 5 seconds',\n },\n {\n id: 'TECH:G187',\n title: 'Using a technology to include blinking content that can be turned off via the user agent',\n },\n {\n id: 'TECH:G152',\n title: 'Setting animated gif images to stop blinking after n cycles (within 5 seconds)',\n },\n {\n id: 'TECH:SCR22',\n title: 'Using scripts to control blinking and stop it in five seconds or less',\n },\n {\n id: 'TECH:G186',\n title: 'Using a control in the Web page that stops moving, blinking, or auto-updating content',\n },\n {\n id: 'TECH:G191',\n title: 'Providing a link, button, or other mechanism that reloads the page without any blinking content',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F16',\n title:\n 'Failure of Success Criterion 2.2.2 due to including scrolling content where movement is not essential to the activity without also including a mechanism to pause and restart the content',\n },\n {\n id: 'TECH:F47',\n title: 'Failure of Success Criterion 2.2.2 due to using the blink element',\n },\n {\n id: 'TECH:F4',\n title:\n 'Failure of Success Criterion 2.2.2 due to using text-decoration:blink without a mechanism to stop it in less than five seconds',\n },\n {\n id: 'TECH:F50',\n title:\n 'Failure of Success Criterion 2.2.2 due to a script that causes a blink effect without a mechanism to stop the blinking at 5 seconds or less',\n },\n {\n id: 'TECH:F7',\n title: 'Failure of Success Criterion 2.2.2 due to an object or applet for more than five seconds',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:no-timing',\n alt_id: ['time-limits-no-exceptions'],\n num: '2.2.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'No Timing',\n title:\n 'Timing is not an essential part of the event or activity presented by the content, except for non-interactive synchronized media and real-time events.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G5',\n title: 'Allowing users to complete an activity without any time limit',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:interruptions',\n alt_id: ['time-limits-postponed'],\n num: '2.2.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Interruptions',\n title: 'Interruptions can be postponed or suppressed by the user, except interruptions involving an emergency.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G75',\n title: 'Providing a mechanism to postpone any updating of content',\n },\n {\n id: 'TECH:G76',\n title: 'Providing a mechanism to request an update of the content instead of updating automatically',\n },\n {\n id: 'TECH:SCR14',\n title: 'Using scripts to make nonessential alerts optional',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F40',\n title: 'Failure due to using meta redirect with a time limit',\n },\n {\n id: 'TECH:F41',\n title: 'Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:re-authenticating',\n alt_id: ['time-limits-server-timeout'],\n num: '2.2.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Re-authenticating',\n title:\n 'When an authenticated session expires, the user can continue the activity without loss of data after re-authenticating.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-re-authenticating-1',\n title: 'Providing options to continue without loss of data using one of the following techniques:',\n using: [\n {\n id: 'TECH:G105',\n title: 'Saving data so that it can be used after a user re-authenticates',\n },\n {\n id: 'TECH:G181',\n title: 'Encoding user data as hidden or encrypted data in a re-authorization page',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F12',\n title:\n 'Failure of Success Criterion 2.2.5 due to having a session time limit without a mechanism re-authentication',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:timeouts',\n alt_id: [],\n num: '2.2.6',\n versions: ['2.1', '2.2'],\n level: 'AAA',\n handle: 'Timeouts',\n title:\n 'Users are warned of the duration of any user inactivity that could cause data loss, unless the data is preserved for more than 20 hours when the user does not take any actions.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-timeouts-1',\n title: 'Setting a session timeout to occur following at least 20 hours of inactivity.',\n },\n {\n id: 'TECH:future-timeouts-1',\n title: 'Store user data for more than 20 hours.',\n },\n {\n id: 'TECH:future-timeouts-1',\n title: 'Provide a warning of the duration of user inactivity at the start of a process.',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:seizures-and-physical-reactions',\n alt_id: [],\n num: '2.3',\n versions: ['2.1', '2.2'],\n handle: 'Seizures and Physical Reactions',\n title: 'Do not design content in a way that is known to cause seizures or physical reactions.',\n successcriteria: [\n {\n id: 'WCAG2:three-flashes-or-below-threshold',\n alt_id: ['seizure-does-not-violate'],\n num: '2.3.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Three Flashes or Below Threshold',\n title:\n 'Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: \"Since any content that does not meet this success criterion can interfere with a user's ability to use the whole page, all content on the Web page (whether it is used to meet other success criteria or not) must meet this success criterion. See Conformance Requirement 5: Non-Interference.\",\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G19',\n title: 'Ensuring that no component of the content flashes more than three times in any 1-second period',\n },\n {\n id: 'TECH:G176',\n title: 'Keeping the flashing area small enough',\n },\n {\n id: 'TECH:G15',\n title:\n 'Using a tool to ensure that content does not violate the general flash threshold or red flash threshold',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:three-flashes',\n alt_id: ['seizure-three-times'],\n num: '2.3.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Three Flashes',\n title: 'Web pages do not contain anything that flashes more than three times in any one second period.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G19',\n title: 'Ensuring that no component of the content flashes more than three times in any 1-second period',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:animation-from-interactions',\n alt_id: [],\n num: '2.3.3',\n versions: ['2.1', '2.2'],\n level: 'AAA',\n handle: 'Animation from Interactions',\n title:\n 'Motion animation triggered by interaction can be disabled, unless the animation is essential to the functionality or the information being conveyed.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C39',\n title: 'Using the CSS reduce-motion query to prevent motion',\n },\n {\n id: 'TECH:future-animation-from-interactions-1',\n title: 'Gx: Allowing users to set a preference that prevents animation.',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:navigable',\n alt_id: ['navigation-mechanisms'],\n num: '2.4',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Navigable',\n title: 'Provide ways to help users navigate, find content, and determine where they are.',\n successcriteria: [\n {\n id: 'WCAG2:bypass-blocks',\n alt_id: ['navigation-mechanisms-skip'],\n num: '2.4.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Bypass Blocks',\n title: 'A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-bypass-blocks-1',\n title: 'Creating links to skip blocks of repeated material using one of the following techniques:',\n using: [\n {\n id: 'TECH:G1',\n title: 'Adding a link at the top of each page that goes directly to the main content area',\n },\n {\n id: 'TECH:G123',\n title: 'Adding a link at the beginning of a block of repeated content to go to the end of the block',\n },\n {\n id: 'TECH:G124',\n title: 'Adding links at the top of the page to each area of the content',\n },\n ],\n },\n {\n id: 'TECH:future-bypass-blocks-1',\n title:\n 'Grouping blocks of repeated material in a way that can be skipped, using one of the following techniques:',\n using: [\n {\n id: 'TECH:ARIA11',\n title: 'Using ARIA landmarks to identify regions of a page',\n },\n {\n id: 'TECH:H69',\n title: 'Providing heading elements at the beginning of each section of content',\n },\n {\n id: 'TECH:PDF9',\n title: 'Providing headings by marking content with heading tags in PDF documents',\n },\n {\n and: [\n {\n id: 'TECH:H70',\n title: 'Using frame elements to group blocks of repeated material',\n },\n {\n id: 'TECH:H64',\n title: 'Using the title attribute of the frame and iframe elements',\n },\n ],\n },\n {\n id: 'TECH:SCR28',\n title: 'Using an expandable and collapsible menu to bypass block of content',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:C6',\n title: 'Positioning content based on structural markup',\n },\n {\n id: 'TECH:H97',\n title: 'Grouping related links using the nav element',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:page-titled',\n alt_id: ['navigation-mechanisms-title'],\n num: '2.4.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Page Titled',\n title: 'Web pages have titles that describe topic or purpose.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G88',\n title: 'Providing descriptive titles for Web pages',\n using: [\n {\n id: 'TECH:H25',\n title: 'Providing a title using the title element',\n },\n {\n id: 'TECH:PDF18',\n title:\n 'Specifying the document title using the Title entry in the document information dictionary of a PDF document',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G127',\n title: \"Identifying a Web page's relationship to a larger collection of Web pages\",\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F25',\n title: 'Failure of Success Criterion 2.4.2 due to the title of a Web page not identifying the contents',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:focus-order',\n alt_id: ['navigation-mechanisms-focus-order'],\n num: '2.4.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Focus Order',\n title:\n 'If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G59',\n title:\n 'Placing the interactive elements in an order that follows sequences and relationships within the content',\n },\n {\n id: 'TECH:future-focus-order-1',\n title:\n 'Giving focus to elements in an order that follows sequences and relationships within the content using one of the following techniques:',\n using: [\n {\n id: 'TECH:C27',\n title: 'Making the DOM order match the visual order',\n },\n {\n id: 'TECH:PDF3',\n title: 'Ensuring correct tab and reading order in PDF documents',\n },\n ],\n },\n {\n id: 'TECH:future-focus-order-1',\n title: 'Changing a Web page dynamically using one of the following techniques:',\n using: [\n {\n id: 'TECH:SCR26',\n title:\n 'Inserting dynamic content into the Document Object Model immediately following its trigger element',\n },\n {\n id: 'TECH:SCR37',\n title: 'Creating Custom Dialogs in a Device Independent Way',\n },\n {\n id: 'TECH:SCR27',\n title: 'Reordering page sections using the Document Object Model',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F44',\n title:\n 'Failure of Success Criterion 2.4.3 due to using tabindex to create a tab order that does not preserve meaning and operability',\n },\n {\n id: 'TECH:F85',\n title:\n 'Failure of Success Criterion 2.4.3 due to using dialogs or menus that are not adjacent to their trigger control in the sequential navigation order',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:link-purpose-in-context',\n alt_id: ['navigation-mechanisms-refs'],\n num: '2.4.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Link Purpose (In Context)',\n title:\n 'The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G91',\n title: 'Providing link text that describes the purpose of a link',\n },\n {\n id: 'TECH:H30',\n title: 'Providing link text that describes the purpose of a link for anchor elements',\n },\n {\n id: 'TECH:H24',\n title: 'Providing text alternatives for the area elements of image maps',\n },\n {\n id: 'TECH:future-link-purpose-in-context-1',\n title: 'Allowing the user to choose short or long link text using one of the techniques below:',\n using: [\n {\n id: 'TECH:G189',\n title: 'Providing a control near the beginning of the Web page that changes the link text',\n },\n {\n id: 'TECH:SCR30',\n title: 'Using scripts to change the link text',\n },\n ],\n },\n {\n id: 'TECH:G53',\n title: 'Identifying the purpose of a link using link text combined with the text of the enclosing sentence',\n },\n {\n id: 'TECH:future-link-purpose-in-context-1',\n title:\n 'Providing a supplemental description of the purpose of a link using one of the following techniques:',\n using: [\n {\n id: 'TECH:H33',\n title: 'Supplementing link text with the title attribute',\n },\n {\n id: 'TECH:C7',\n title: 'Using CSS to hide a portion of the link text',\n },\n ],\n },\n {\n id: 'TECH:future-link-purpose-in-context-1',\n title:\n 'Identifying the purpose of a link using link text combined with programmatically determined link context using one of the following techniques:',\n using: [\n {\n id: 'TECH:ARIA7',\n title: 'Using aria-labelledby for link purpose',\n },\n {\n id: 'TECH:ARIA8',\n title: 'Using aria-label for link purpose',\n },\n {\n id: 'TECH:H77',\n title: 'Identifying the purpose of a link using link text combined with its enclosing list item',\n },\n {\n id: 'TECH:H78',\n title: 'Identifying the purpose of a link using link text combined with its enclosing paragraph',\n },\n {\n id: 'TECH:H79',\n title:\n 'Identifying the purpose of a link in a data table using the link text combined with its enclosing table cell and associated table header cells',\n },\n {\n id: 'TECH:H81',\n title:\n 'Identifying the purpose of a link in a nested list using link text combined with the parent list item under which the list is nested',\n },\n ],\n },\n {\n id: 'TECH:G91',\n title: 'Providing link text that describes the purpose of a link',\n using: [\n {\n id: 'TECH:PDF11',\n title:\n 'Providing links and link text using the Link annotation and the /Link structure element in PDF documents',\n },\n {\n id: 'TECH:PDF13',\n title: 'Providing replacement text using the /Alt entry for links in PDF documents',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H80',\n title: 'Identifying the purpose of a link using link text combined with the preceding heading element',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F63',\n title:\n 'Failure of Success Criterion 2.4.4 due to providing link context only in content that is not related to the link',\n },\n {\n id: 'TECH:F89',\n title:\n 'Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:multiple-ways',\n alt_id: ['navigation-mechanisms-mult-loc'],\n num: '2.4.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Multiple Ways',\n title:\n 'More than one way is available to locate a Web page within a set of Web pages except where the Web Page is the result of, or a step in, a process.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-multiple-ways-1',\n title: 'Using two or more of the following techniques:',\n using: [\n {\n id: 'TECH:G125',\n title: 'Providing links to navigate to related Web pages',\n },\n {\n id: 'TECH:G64',\n title: 'Providing a Table of Contents',\n },\n {\n id: 'TECH:G63',\n title: 'Providing a site map',\n },\n {\n id: 'TECH:G161',\n title: 'Providing a search function to help users find content',\n },\n {\n id: 'TECH:G126',\n title: 'Providing a list of links to all other Web pages',\n },\n {\n id: 'TECH:G185',\n title: 'Linking to all of the pages on the site from the home page',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H59',\n title: 'Using the link element and navigation tools',\n },\n {\n id: 'TECH:PDF2',\n title: 'Creating bookmarks in PDF documents',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:headings-and-labels',\n alt_id: ['navigation-mechanisms-descriptive'],\n num: '2.4.6',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Headings and Labels',\n title: 'Headings and labels describe topic or purpose.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G130',\n title: 'Providing descriptive headings',\n },\n {\n id: 'TECH:G131',\n title: 'Providing descriptive labels',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:focus-visible',\n alt_id: ['navigation-mechanisms-focus-visible'],\n num: '2.4.7',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Focus Visible',\n title:\n 'Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G149',\n title: 'Using user interface components that are highlighted by the user agent when they receive focus',\n },\n {\n id: 'TECH:C15',\n title: 'Using CSS to change the presentation of a user interface component when it receives focus',\n },\n {\n id: 'TECH:G165',\n title:\n 'Using the default focus indicator for the platform so that high visibility default focus indicators will carry over',\n },\n {\n id: 'TECH:G195',\n title: 'Using an author-supplied, visible focus indicator',\n },\n {\n id: 'TECH:C40',\n title: 'Creating a two-color focus indicator to ensure sufficient contrast with all components',\n },\n {\n id: 'TECH:SCR31',\n title: 'Using script to change the background color or border of the element with focus',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F55',\n title:\n 'Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received',\n },\n {\n id: 'TECH:F78',\n title:\n 'Failure of Success Criterion 2.4.7 due to styling element outlines and borders in a way that removes or renders non-visible the visual focus indicator',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:location',\n alt_id: ['navigation-mechanisms-location'],\n num: '2.4.8',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Location',\n title: \"Information about the user's location within a set of Web pages is available.\",\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G65',\n title: 'Providing a breadcrumb trail',\n },\n {\n id: 'TECH:G63',\n title: 'Providing a site map',\n },\n {\n id: 'TECH:G128',\n title: 'Indicating current location within navigation bars',\n },\n {\n id: 'TECH:G127',\n title: \"Identifying a Web page's relationship to a larger collection of Web pages\",\n using: [\n {\n id: 'TECH:H59',\n title: 'Using the link element and navigation tools',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:PDF14',\n title: 'Providing running headers and footers in PDF documents',\n },\n {\n id: 'TECH:PDF17',\n title: 'Specifying consistent page numbering for PDF documents',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:link-purpose-link-only',\n alt_id: ['navigation-mechanisms-link'],\n num: '2.4.9',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Link Purpose (Link Only)',\n title:\n 'A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:ARIA8',\n title: 'Using aria-label for link purpose',\n },\n {\n id: 'TECH:G91',\n title: 'Providing link text that describes the purpose of a link',\n },\n {\n id: 'TECH:H30',\n title: 'Providing link text that describes the purpose of a link for anchor elements',\n },\n {\n id: 'TECH:H24',\n title: 'Providing text alternatives for the area elements of image maps',\n },\n {\n id: 'TECH:future-link-purpose-link-only-1',\n title: 'Allowing the user to choose short or long link text using one of the techniques below:',\n using: [\n {\n id: 'TECH:G189',\n title: 'Providing a control near the beginning of the Web page that changes the link text',\n },\n {\n id: 'TECH:SCR30',\n title: 'Using scripts to change the link text',\n },\n ],\n },\n {\n id: 'TECH:future-link-purpose-link-only-1',\n title:\n 'Providing a supplemental description of the purpose of a link using one of the following techniques:',\n using: [\n {\n id: 'TECH:C7',\n title: 'Using CSS to hide a portion of the link text',\n },\n ],\n },\n {\n id: 'TECH:future-link-purpose-link-only-1',\n title: 'Semantically indicating links using one of the following techniques:',\n using: [\n {\n id: 'TECH:PDF11',\n title:\n 'Providing links and link text using the Link annotation and the /Link structure element in PDF documents',\n },\n {\n id: 'TECH:PDF13',\n title: 'Providing replacement text using the /Alt entry for links in PDF documents',\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H2',\n title: 'Combining adjacent image and text links for the same resource',\n },\n {\n id: 'TECH:H33',\n title: 'Supplementing link text with the title attribute',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F84',\n title:\n 'Failure of Success Criterion 2.4.9 due to using a non-specific link such as \"click here\" or \"more\" without a mechanism to change the link text to specific text.',\n },\n {\n id: 'TECH:F89',\n title:\n 'Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:section-headings',\n alt_id: ['navigation-mechanisms-headings'],\n num: '2.4.10',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Section Headings',\n title: 'Section headings are used to organize the content.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: '\"Heading\" is used in its general sense and includes titles and other ways to add a heading to different types of content.',\n },\n {\n type: 'note',\n handle: 'Note 2',\n text: 'This success criterion covers sections within writing, not user interface components. User Interface components are covered under Success Criterion 4.1.2.',\n },\n ],\n },\n {\n id: 'WCAG2:focus-not-obscured-minimum',\n alt_id: [],\n num: '2.4.11',\n versions: ['2.2'],\n level: 'AA',\n handle: 'Focus Not Obscured (Minimum)',\n title: 'When the keyboard focus indicator is visible, one or both of the following is true:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G195',\n title: 'Using an author-supplied, visible focus indicator',\n },\n {\n id: 'TECH:C40',\n title: 'Creating a two-color focus indicator to ensure sufficient contrast with all components',\n },\n {\n id: 'TECH:C41',\n title: 'Creating a strong focus indicator within the component',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:future-focus-appearance-1',\n title: 'Using a CSS border for inline text which can wrap (Potential future technique)',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:focus-not-obscured-enhanced',\n alt_id: [],\n num: '2.4.12',\n versions: ['2.2'],\n level: 'AAA',\n handle: 'Focus Not Obscured (Enhanced)',\n title:\n 'When a user interface component receives keyboard focus, the component is not entirely hidden due to author-created content.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-focus-not-obscured-minimum-1',\n title:\n 'CSS: Using scroll-padding to ensure a sticky header does not obscure the focused item (Potential future technique).',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:future-focus-not-obscured-minimum-1',\n title: '',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:focus-appearance',\n alt_id: [],\n num: '2.4.13',\n versions: ['2.2'],\n level: 'AAA',\n handle: 'Focus Appearance',\n title: 'When the keyboard focus indicator is visible, an area of the focus indicator meets all the following:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-focus-not-obscured-enhanced-1',\n title:\n 'CSS: Using scroll-padding to ensure a sticky header does not obscure the focused item (Potential future technique).',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:future-focus-not-obscured-enhanced-1',\n title: '',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:input-modalities',\n alt_id: [],\n num: '2.5',\n versions: ['2.1', '2.2'],\n handle: 'Input Modalities',\n title: 'Make it easier for users to operate functionality through various inputs beyond keyboard.',\n successcriteria: [\n {\n id: 'WCAG2:pointer-gestures',\n alt_id: [],\n num: '2.5.1',\n versions: ['2.1', '2.2'],\n level: 'A',\n handle: 'Pointer Gestures',\n title:\n 'All functionality that uses multipoint or path-based gestures for operation can be operated with a single pointer without a path-based gesture, unless a multipoint or path-based gesture is essential.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G215',\n title: 'Providing controls to achieve the same result as path based or multipoint gestures',\n },\n {\n id: 'TECH:G216',\n title: 'Providing single point activation for a control slider',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F105',\n title:\n 'Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:pointer-cancellation',\n alt_id: [],\n num: '2.5.2',\n versions: ['2.1', '2.2'],\n level: 'A',\n handle: 'Pointer Cancellation',\n title: 'For functionality that can be operated using a single pointer, at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'No Down-Event',\n text: 'The down-event of the pointer is not used to execute any part of the function;',\n },\n {\n handle: 'Abort or Undo',\n text: 'Completion of the function is on the up-event, and a mechanism is available to abort the function before completion or to undo the function after completion;',\n },\n {\n handle: 'Up Reversal',\n text: 'The up-event reverses any outcome of the preceding down-event;',\n },\n {\n handle: 'Essential',\n text: 'Completing the function on the down-event is essential.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G210',\n title: 'Ensuring that drag-and-drop actions can be cancelled',\n },\n {\n id: 'TECH:G212',\n title: 'Using native controls to ensure functionality is triggered on the up-event.',\n },\n {\n id: 'TECH:future-pointer-cancellation-1',\n title: 'Touch events are only triggered when touch is removed from a control (Potential future technique)',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F101',\n title: 'Failure of Success Criterion 2.5.2 due to activating a control on the down-event',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:label-in-name',\n alt_id: [],\n num: '2.5.3',\n versions: ['2.1', '2.2'],\n level: 'A',\n handle: 'Label in Name',\n title:\n 'For user interface components with labels that include text or images of text, the name contains the text that is presented visually.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G208',\n title: 'Including the text of the visible label as part of the accessible name',\n },\n {\n id: 'TECH:G211',\n title: 'Matching the accessible name to the visible label',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:future-label-in-name-1',\n title:\n 'If an icon has no accompanying text, consider using its hover text as its accessible name (Potential future technique)',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F96',\n title: 'Failure due to the accessible name not containing the visible label text',\n },\n {\n id: 'TECH:future-label-in-name-1',\n title:\n 'Accessible name contains the visible label text, but the words of the visible label are not in the same order as they are in the visible label text (Potential future technique)',\n },\n {\n id: 'TECH:future-label-in-name-1',\n title:\n 'Accessible name contains the visible label text, but one or more other words are interspersed in the label (Potential future technique)',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:motion-actuation',\n alt_id: [],\n num: '2.5.4',\n versions: ['2.1', '2.2'],\n level: 'A',\n handle: 'Motion Actuation',\n title:\n 'Functionality that can be operated by device motion or user motion can also be operated by user interface components and responding to the motion can be disabled to prevent accidental actuation, except when:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Supported Interface',\n text: 'The motion is used to operate functionality through an accessibility supported interface;',\n },\n {\n handle: 'Essential',\n text: 'The motion is essential for the function and doing so would invalidate the activity.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G213',\n title: 'Provide conventional controls and an application setting for motion activated input',\n },\n {\n id: 'TECH:future-motion-actuation-1',\n title: 'GXXX: Supporting system level features which allow the user to disable motion actuation',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F106',\n title: 'Failure due to inability to deactivate motion actuation',\n },\n {\n id: 'TECH:future-motion-actuation-1',\n title:\n 'FXXX: Failure of Success Criterion 2.5.4 due to disrupting or disabling system level features which allow the user to disable motion actuation',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:target-size-enhanced',\n alt_id: [],\n num: '2.5.5',\n versions: ['2.1', '2.2'],\n level: 'AAA',\n handle: 'Target Size (Enhanced)',\n title: 'The size of the target for pointer inputs is at least 44 by 44 CSS pixels except when:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Equivalent',\n text: 'The target is available through an equivalent link or control on the same page that is at least 44 by 44 CSS pixels;',\n },\n {\n handle: 'Inline',\n text: 'The target is in a sentence or block of text;',\n },\n {\n handle: 'User Agent Control',\n text: 'The size of the target is determined by the user agent and is not modified by the author;',\n },\n {\n handle: 'Essential',\n text: 'A particular presentation of the target is essential to the information being conveyed.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: '',\n techniques: [\n {\n id: 'TECH:future-target-size-enhanced-1',\n title: 'Ensuring that targets are at least 44 by 44 CSS pixels.',\n },\n {\n id: 'TECH:future-target-size-enhanced-1',\n title: 'Ensuring inline links provide sufficiently large activation target.',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:future-target-size-enhanced-1',\n title: 'none documented',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:future-target-size-enhanced-1',\n title: 'Failure of success criterion 2.5.5 due to target being less than 44 by 44 CSS pixels.',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:concurrent-input-mechanisms',\n alt_id: [],\n num: '2.5.6',\n versions: ['2.1', '2.2'],\n level: 'AAA',\n handle: 'Concurrent Input Mechanisms',\n title:\n 'Web content does not restrict use of input modalities available on a platform except where the restriction is essential, required to ensure the security of the content, or required to respect user settings.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:future-concurrent-input-mechanisms-1',\n title:\n 'Only using high-level, input-agnostic event handlers, such as focus, blur, click, in Javascript (Potential future technique).',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F98',\n title: 'Failure due to interactions being limited to touch-only on touchscreen devices',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:dragging-movements',\n alt_id: [],\n num: '2.5.7',\n versions: ['2.2'],\n level: 'AA',\n handle: 'Dragging Movements',\n title:\n 'All functionality that uses a dragging movement for operation can be achieved by a single pointer without dragging, unless dragging is essential or the functionality is determined by the user agent and not modified by the author.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G219',\n title:\n 'Ensuring that a single pointer alternative is available for dragging movements that operate on content',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F108',\n title:\n 'Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:target-size-minimum',\n alt_id: [],\n num: '2.5.8',\n versions: ['2.2'],\n level: 'AA',\n handle: 'Target Size (Minimum)',\n title: 'The size of the target for pointer inputs is at least 24 by 24 CSS pixels, except where:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:C42',\n title: 'Using min-height and min-width to ensure sufficient target spacing',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n ],\n },\n {\n id: 'WCAG2:understandable',\n num: '3',\n versions: ['2.0', '2.1'],\n handle: 'Understandable',\n title: 'Information and the operation of the user interface must be understandable.',\n guidelines: [\n {\n id: 'WCAG2:readable',\n alt_id: ['meaning'],\n num: '3.1',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Readable',\n title: 'Make text content readable and understandable.',\n successcriteria: [\n {\n id: 'WCAG2:language-of-page',\n alt_id: ['meaning-doc-lang-id'],\n num: '3.1.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Language of Page',\n title: 'The default human language of each Web page can be programmatically determined.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:H57',\n title: 'Using the language attribute on the HTML element',\n },\n {\n id: 'TECH:PDF16',\n title: 'Setting the default language using the /Lang entry in the document catalog of a PDF document',\n },\n {\n id: 'TECH:PDF19',\n title: 'Specifying the language for a passage or phrase with the Lang entry in PDF documents',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:SVR5',\n title: 'Specifying the default language in the HTTP header',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:language-of-parts',\n alt_id: ['meaning-other-lang-id'],\n num: '3.1.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Language of Parts',\n title:\n 'The human language of each passage or phrase in the content can be programmatically determined except for proper names, technical terms, words of indeterminate language, and words or phrases that have become part of the vernacular of the immediately surrounding text.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:H58',\n title: 'Using language attributes to identify changes in the human language',\n },\n {\n id: 'TECH:PDF19',\n title: 'Specifying the language for a passage or phrase with the Lang entry in PDF documents',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:unusual-words',\n alt_id: ['meaning-idioms'],\n num: '3.1.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Unusual Words',\n title:\n 'A mechanism is available for identifying specific definitions of words or phrases used in an unusual or restricted way, including idioms and jargon.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If the word or phrase has a unique meaning within the Web page:',\n techniques: [\n {\n id: 'TECH:G101',\n title: 'Providing the definition of a word or phrase used in an unusual or restricted way',\n using: [\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n using: [\n {\n id: 'TECH:H40',\n title: 'Using description lists',\n },\n {\n id: 'TECH:H60',\n title: 'Using the link element to link to a glossary',\n },\n ],\n },\n {\n id: 'TECH:G112',\n title: 'Using inline definitions',\n using: [\n {\n id: 'TECH:H54',\n title: 'Using the dfn element to identify the defining instance of a word',\n },\n ],\n },\n ],\n },\n {\n id: 'TECH:G101',\n title: 'Providing the definition of a word or phrase used in an unusual or restricted way',\n using: [\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n using: [\n {\n id: 'TECH:H40',\n title: 'Using description lists',\n },\n {\n id: 'TECH:H60',\n title: 'Using the link element to link to a glossary',\n },\n ],\n },\n {\n id: 'TECH:G62',\n title: 'Providing a glossary',\n },\n {\n id: 'TECH:G70',\n title: 'Providing a function to search an online dictionary',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation B: If the word or phrase means different things within the same Web page:',\n techniques: [\n {\n id: 'TECH:G101',\n title: 'Providing the definition of a word or phrase used in an unusual or restricted way',\n using: [\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n using: [\n {\n id: 'TECH:H40',\n title: 'Using description lists',\n },\n {\n id: 'TECH:H60',\n title: 'Using the link element to link to a glossary',\n },\n ],\n },\n {\n id: 'TECH:G112',\n title: 'Using inline definitions',\n using: [\n {\n id: 'TECH:H54',\n title: 'Using the dfn element to identify the defining instance of a word',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:abbreviations',\n alt_id: ['meaning-located'],\n num: '3.1.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Abbreviations',\n title: 'A mechanism for identifying the expanded form or meaning of abbreviations is available.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If the abbreviation has only one meaning within the Web page:',\n techniques: [\n {\n id: 'TECH:G102',\n title: 'Providing the expansion or explanation of an abbreviation',\n using: [\n {\n id: 'TECH:G97',\n title:\n 'Providing the first use of an abbreviation immediately before or after the expanded form',\n },\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n },\n {\n id: 'TECH:H28',\n title: 'Providing definitions for abbreviations by using the abbr element',\n },\n {\n id: 'TECH:PDF8',\n title: 'Providing definitions for abbreviations via an E entry for a structure element',\n },\n ],\n },\n {\n id: 'TECH:G102',\n title: 'Providing the expansion or explanation of an abbreviation',\n using: [\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n },\n {\n id: 'TECH:G62',\n title: 'Providing a glossary',\n },\n {\n id: 'TECH:H60',\n title: 'Using the link element to link to a glossary',\n },\n {\n id: 'TECH:G70',\n title: 'Providing a function to search an online dictionary',\n },\n {\n id: 'TECH:H28',\n title: 'Providing definitions for abbreviations by using the abbr element',\n },\n {\n id: 'TECH:PDF8',\n title: 'Providing definitions for abbreviations via an E entry for a structure element',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation B: If the abbreviation means different things within the same Web page:',\n techniques: [\n {\n id: 'TECH:G102',\n title: 'Providing the expansion or explanation of an abbreviation',\n using: [\n {\n id: 'TECH:G55',\n title: 'Linking to definitions',\n },\n {\n id: 'TECH:H28',\n title: 'Providing definitions for abbreviations by using the abbr element',\n },\n {\n id: 'TECH:PDF8',\n title: 'Providing definitions for abbreviations via an E entry for a structure element',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:reading-level',\n alt_id: ['meaning-supplements'],\n num: '3.1.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Reading Level',\n title:\n 'When text requires reading ability more advanced than the lower secondary education level after removal of proper names and titles, supplemental content, or a version that does not require reading ability more advanced than the lower secondary education level, is available.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G86',\n title:\n 'Providing a text summary that can be understood by people with lower secondary education level reading ability',\n },\n {\n id: 'TECH:G103',\n title: 'Providing visual illustrations, pictures, and symbols to help explain ideas, events, and processes',\n },\n {\n id: 'TECH:G79',\n title: 'Providing a spoken version of the text',\n },\n {\n id: 'TECH:G153',\n title: 'Making the text easier to read',\n },\n {\n id: 'TECH:G160',\n title:\n 'Providing sign language versions of information, ideas, and processes that must be understood in order to use the content',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:pronunciation',\n alt_id: ['meaning-pronunciation'],\n num: '3.1.6',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Pronunciation',\n title:\n 'A mechanism is available for identifying specific pronunciation of words where meaning of the words, in context, is ambiguous without knowing the pronunciation.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G120',\n title: 'Providing the pronunciation immediately following the word',\n },\n {\n id: 'TECH:G121',\n title: 'Linking to pronunciations',\n },\n {\n id: 'TECH:G62',\n title: 'Providing a glossary',\n },\n {\n id: 'TECH:G163',\n title: 'Using standard diacritical marks that can be turned off',\n },\n {\n id: 'TECH:H62',\n title: 'Using the ruby element',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:predictable',\n alt_id: ['consistent-behavior'],\n num: '3.2',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Predictable',\n title: 'Make Web pages appear and operate in predictable ways.',\n successcriteria: [\n {\n id: 'WCAG2:on-focus',\n alt_id: ['consistent-behavior-receive-focus'],\n num: '3.2.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'On Focus',\n title: 'When any user interface component receives focus, it does not initiate a change of context.',\n sufficientNotes: [\n 'A change of content is not always a change of context. This success criterion is automatically met if changes in content are not also changes of context.',\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G107',\n title: 'Using \"activate\" rather than \"focus\" as a trigger for changes of context',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G200',\n title: 'Opening new windows and tabs from a link only when necessary',\n },\n {\n id: 'TECH:G201',\n title: 'Giving users advanced warning when opening a new window',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F55',\n title:\n 'Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:on-input',\n alt_id: ['consistent-behavior-unpredictable-change'],\n num: '3.2.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'On Input',\n title:\n 'Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised of the behavior before using the component.',\n sufficientNotes: [\n 'A change of content is not always a change of context. This success criterion is automatically met if changes in content are not also changes of context.',\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G80',\n title: 'Providing a submit button to initiate a change of context',\n using: [\n {\n id: 'TECH:H32',\n title: 'Providing submit buttons',\n },\n {\n id: 'TECH:H84',\n title: 'Using a button with a select element to perform an action',\n },\n {\n id: 'TECH:PDF15',\n title: 'Providing submit buttons with the submit-form action in PDF forms',\n },\n ],\n },\n {\n id: 'TECH:G13',\n title:\n 'Describing what will happen before a change to a form control that causes a change of context to occur is made',\n },\n {\n id: 'TECH:SCR19',\n title: 'Using an onchange event on a select element without causing a change of context',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G201',\n title: 'Giving users advanced warning when opening a new window',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F36',\n title: 'Failure of Success Criterion 3.2.2 due to automatically submitting a form and given a value',\n },\n {\n id: 'TECH:F37',\n title:\n 'Failure of Success Criterion 3.2.2 due to launching a new window without prior warning when the selection of a radio button, check box or select list is changed',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:consistent-navigation',\n alt_id: ['consistent-behavior-consistent-locations'],\n num: '3.2.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Consistent Navigation',\n title:\n 'Navigational mechanisms that are repeated on multiple Web pages within a set of Web pages occur in the same relative order each time they are repeated, unless a change is initiated by the user.',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G61',\n title: 'Presenting repeated components in the same relative order each time they appear',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:PDF14',\n title: 'Providing running headers and footers in PDF documents',\n },\n {\n id: 'TECH:PDF17',\n title: 'Specifying consistent page numbering for PDF documents',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F66',\n title:\n 'Failure of Success Criterion 3.2.3 due to presenting navigation links in a different relative order on different pages',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:consistent-identification',\n alt_id: ['consistent-behavior-consistent-functionality'],\n num: '3.2.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Consistent Identification',\n title: 'Components that have the same functionality within a set of Web pages are identified consistently.',\n sufficientNotes: [\n 'Text alternatives that are \\u201cconsistent\\u201d are not always \\u201cidentical.\\u201d For instance, you may have an graphical arrow at the bottom of a Web page that links to the next Web page. The text alternative may say \\u201cGo to page 4.\\u201d Naturally, it would not be appropriate to repeat this exact text alternative on the next Web page. It would be more appropriate to say \\u201cGo to page 5\\u201d. Although these text alternatives would not be identical, they would be consistent, and therefore would satisfy this Success Criterion.',\n 'A single non-text-content-item may be used to serve different functions. In such cases, different text alternatives are necessary and should be used. Examples can be commonly found with the use of icons such as check marks, cross marks, and traffic signs. Their functions can be different depending on the context of the Web page. A check mark icon may function as \\u201capproved\\u201d, \\u201ccompleted\\u201d, or \\u201cincluded\\u201d, to name a few, depending on the situation. Using \\u201ccheck mark\\u201d as text alternative across all Web pages does not help users understand the function of the icon. Different text alternatives can be used when the same non-text content serves multiple functions.',\n ],\n techniques: [\n {\n sufficient: [\n {\n and: [\n {\n id: 'TECH:G197',\n title:\n 'Using labels, names, and text alternatives consistently for content that has the same functionality',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F31',\n title:\n 'Failure of Success Criterion 3.2.4 due to using two different labels for the same function on different Web pages within a set of Web pages',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:change-on-request',\n alt_id: ['consistent-behavior-no-extreme-changes-context'],\n num: '3.2.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Change on Request',\n title:\n 'Changes of context are initiated only by user request or a mechanism is available to turn off such changes.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If the Web page allows automatic updates:',\n techniques: [\n {\n id: 'TECH:G76',\n title:\n 'Providing a mechanism to request an update of the content instead of updating automatically',\n },\n ],\n },\n {\n title: 'Situation B: If automatic redirects are possible:',\n techniques: [\n {\n id: 'TECH:SVR1',\n title: 'Implementing automatic redirects on the server side instead of on the client side',\n },\n {\n id: 'TECH:G110',\n title: 'Using an instant client-side redirect',\n using: [\n {\n id: 'TECH:H76',\n title: 'Using meta refresh to create an instant client-side redirect',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation C: If the Web page uses pop-up windows:',\n techniques: [\n {\n id: 'TECH:future-change-on-request-1',\n title: 'Including pop-up windows using one of the following techniques:',\n using: [\n {\n id: 'TECH:H83',\n title:\n 'Using the target attribute to open a new window on user request and indicating this in link text',\n },\n {\n id: 'TECH:SCR24',\n title: 'Using progressive enhancement to open new windows on user request',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation D: If using an onchange event on a select element:',\n techniques: [\n {\n id: 'TECH:SCR19',\n title: 'Using an onchange event on a select element without causing a change of context',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G200',\n title: 'Opening new windows and tabs from a link only when necessary',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F60',\n title:\n 'Failure of Success Criterion 3.2.5 due to launching a new window when a user enters text into an input field',\n },\n {\n id: 'TECH:F61',\n title:\n 'Failure of Success Criterion 3.2.5 due to complete change of main content through an automatic update that the user cannot disable from within the content',\n },\n {\n id: 'TECH:F9',\n title:\n 'Failure of Success Criterion 3.2.5 due to changing the context when the user removes focus from a form element',\n },\n {\n id: 'TECH:F22',\n title: 'Failure of Success Criterion 3.2.5 due to opening windows that are not requested by the user',\n },\n {\n id: 'TECH:F52',\n title:\n 'Failure of Success Criterion 3.2.1 and 3.2.5 due to opening a new window as soon as a new page is loaded',\n },\n {\n id: 'TECH:F40',\n title: 'Failure due to using meta redirect with a time limit',\n },\n {\n id: 'TECH:F41',\n title: 'Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:consistent-help',\n alt_id: [],\n num: '3.2.6',\n versions: ['2.2'],\n level: 'A',\n handle: 'Consistent Help',\n title:\n 'If a web page contains any of the following help mechanisms, and those mechanisms are repeated on multiple web pages within a set of web pages, they occur in the same relative order to other page content, unless a change is initiated by the user:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G220',\n title: 'Provide a contact-us link in a consistent location',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:future-consistent-help-1',\n title: 'Inconsistent Help Location',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n {\n id: 'WCAG2:input-assistance',\n alt_id: ['minimize-error'],\n num: '3.3',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Input Assistance',\n title: 'Help users avoid and correct mistakes.',\n successcriteria: [\n {\n id: 'WCAG2:error-identification',\n alt_id: ['minimize-error-identified'],\n num: '3.3.1',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Error Identification',\n title:\n 'If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If a form contains fields for which information from the user is mandatory.',\n techniques: [\n {\n id: 'TECH:G83',\n title: 'Providing text descriptions to identify required fields that were not completed',\n },\n {\n id: 'TECH:ARIA21',\n title: 'Using Aria-Invalid to Indicate An Error Field',\n },\n {\n id: 'TECH:SCR18',\n title: 'Providing client-side validation and alert',\n },\n {\n id: 'TECH:PDF5',\n title: 'Indicating required form controls in PDF forms',\n },\n ],\n },\n {\n title:\n 'Situation B: If information provided by the user is required to be in a specific data format or of certain values.',\n techniques: [\n {\n id: 'TECH:ARIA18',\n title: 'Using aria-alertdialog to Identify Errors',\n },\n {\n id: 'TECH:ARIA19',\n title: 'Using ARIA role=alert or Live Regions to Identify Errors',\n },\n {\n id: 'TECH:ARIA21',\n title: 'Using Aria-Invalid to Indicate An Error Field',\n },\n {\n id: 'TECH:G84',\n title:\n 'Providing a text description when the user provides information that is not in the list of allowed values',\n },\n {\n id: 'TECH:G85',\n title: 'Providing a text description when user input falls outside the required format or values',\n },\n {\n id: 'TECH:SCR18',\n title: 'Providing client-side validation and alert',\n },\n {\n id: 'TECH:SCR32',\n title: 'Providing client-side validation and adding error text via the DOM',\n },\n {\n id: 'TECH:PDF22',\n title: 'Indicating when user input falls outside the required format or values in PDF forms',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G139',\n title: 'Creating a mechanism that allows users to jump to errors',\n },\n {\n id: 'TECH:G199',\n title: 'Providing success feedback when data is submitted successfully',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:labels-or-instructions',\n alt_id: ['minimize-error-cues'],\n num: '3.3.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Labels or Instructions',\n title: 'Labels or instructions are provided when content requires user input.',\n sufficientNotes: [\n 'The techniques at the end of the above list should be considered \\u201clast resort\\u201d and only used when the other techniques cannot be applied to the page. The earlier techniques are preferred because they increase accessibility to a wider user group.',\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G131',\n title: 'Providing descriptive labels',\n using: [\n {\n id: 'TECH:ARIA1',\n title: 'Using the aria-describedby property to provide a descriptive label for user interface controls',\n },\n {\n id: 'TECH:ARIA9',\n title: 'Using aria-labelledby to concatenate a label from several text nodes',\n },\n {\n id: 'TECH:ARIA17',\n title: 'Using grouping roles to identify related form controls',\n },\n {\n id: 'TECH:G89',\n title: 'Providing expected data format and example',\n },\n {\n id: 'TECH:G184',\n title:\n 'Providing text instructions at the beginning of a form or set of fields that describes the necessary input',\n },\n {\n id: 'TECH:G162',\n title: 'Positioning labels to maximize predictability of relationships',\n },\n {\n id: 'TECH:G83',\n title: 'Providing text descriptions to identify required fields that were not completed',\n },\n {\n id: 'TECH:H90',\n title: 'Indicating required form controls using label or legend',\n },\n {\n id: 'TECH:PDF5',\n title: 'Indicating required form controls in PDF forms',\n },\n ],\n },\n {\n id: 'TECH:H44',\n title: 'Using label elements to associate text labels with form controls',\n },\n {\n id: 'TECH:PDF10',\n title: 'Providing labels for interactive form controls in PDF documents',\n },\n {\n id: 'TECH:H71',\n title: 'Providing a description for groups of form controls using fieldset and legend elements',\n },\n {\n id: 'TECH:G167',\n title: 'Using an adjacent button to label the purpose of a field',\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G13',\n title:\n 'Describing what will happen before a change to a form control that causes a change of context to occur is made',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F82',\n title:\n 'Failure of Success Criterion 3.3.2 by visually formatting a set of phone number fields but not including a text label',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:error-suggestion',\n alt_id: ['minimize-error-suggestions'],\n num: '3.3.3',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Error Suggestion',\n title:\n 'If an input error is automatically detected and suggestions for correction are known, then the suggestions are provided to the user, unless it would jeopardize the security or purpose of the content.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If a mandatory field contains no information:',\n techniques: [\n {\n id: 'TECH:G83',\n title: 'Providing text descriptions to identify required fields that were not completed',\n },\n {\n id: 'TECH:ARIA2',\n title: 'Identifying a required field with the aria-required property',\n },\n {\n id: 'TECH:PDF5',\n title: 'Indicating required form controls in PDF forms',\n },\n ],\n },\n {\n title: 'Situation B: If information for a field is required to be in a specific data format:',\n techniques: [\n {\n id: 'TECH:ARIA18',\n title: 'Using aria-alertdialog to Identify Errors',\n },\n {\n id: 'TECH:G85',\n title: 'Providing a text description when user input falls outside the required format or values',\n },\n {\n id: 'TECH:G177',\n title: 'Providing suggested correction text',\n },\n {\n id: 'TECH:SCR18',\n title: 'Providing client-side validation and alert',\n },\n {\n id: 'TECH:SCR32',\n title: 'Providing client-side validation and adding error text via the DOM',\n },\n {\n id: 'TECH:PDF22',\n title: 'Indicating when user input falls outside the required format or values in PDF forms',\n },\n ],\n },\n {\n title:\n 'Situation C: Information provided by the user is required to be one of a limited set of values:',\n techniques: [\n {\n id: 'TECH:ARIA18',\n title: 'Using aria-alertdialog to Identify Errors',\n },\n {\n id: 'TECH:G84',\n title:\n 'Providing a text description when the user provides information that is not in the list of allowed values',\n },\n {\n id: 'TECH:G177',\n title: 'Providing suggested correction text',\n },\n {\n id: 'TECH:SCR18',\n title: 'Providing client-side validation and alert',\n },\n {\n id: 'TECH:SCR32',\n title: 'Providing client-side validation and adding error text via the DOM',\n },\n {\n id: 'TECH:PDF22',\n title: 'Indicating when user input falls outside the required format or values in PDF forms',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:G139',\n title: 'Creating a mechanism that allows users to jump to errors',\n },\n {\n id: 'TECH:G199',\n title: 'Providing success feedback when data is submitted successfully',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:error-prevention-legal-financial-data',\n alt_id: ['minimize-error-reversible'],\n num: '3.3.4',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AA',\n handle: 'Error Prevention (Legal, Financial, Data)',\n title:\n 'For Web pages that cause legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses, at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Reversible',\n text: 'Submissions are reversible.',\n },\n {\n handle: 'Checked',\n text: 'Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.',\n },\n {\n handle: 'Confirmed',\n text: 'A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'Situation A: If an application causes a legal transaction to occur, such as making a purchase or submitting an income tax return:',\n techniques: [\n {\n id: 'TECH:G164',\n title:\n 'Providing a stated time within which an online request (or transaction) may be amended or canceled by the user after making the request',\n },\n {\n id: 'TECH:G98',\n title: 'Providing the ability for the user to review and correct answers before submitting',\n },\n {\n id: 'TECH:G155',\n title: 'Providing a checkbox in addition to a submit button',\n },\n ],\n },\n {\n title: 'Situation B: If an action causes information to be deleted:',\n techniques: [\n {\n id: 'TECH:G99',\n title: 'Providing the ability to recover deleted information',\n },\n {\n id: 'TECH:G168',\n title: 'Requesting confirmation to continue with selected action',\n },\n {\n id: 'TECH:G155',\n title: 'Providing a checkbox in addition to a submit button',\n },\n ],\n },\n {\n title: 'Situation C: If the Web page includes a testing application:',\n techniques: [\n {\n id: 'TECH:G98',\n title: 'Providing the ability for the user to review and correct answers before submitting',\n },\n {\n id: 'TECH:G168',\n title: 'Requesting confirmation to continue with selected action',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:SCR18',\n title: 'Providing client-side validation and alert',\n },\n {\n id: 'TECH:G199',\n title: 'Providing success feedback when data is submitted successfully',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:help',\n alt_id: ['minimize-error-context-help'],\n num: '3.3.5',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Help',\n title: 'Context-sensitive help is available.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If a form requires text input:',\n techniques: [\n {\n id: 'TECH:G71',\n title: 'Providing a help link on every Web page',\n },\n {\n id: 'TECH:G193',\n title: 'Providing help by an assistant in the Web page',\n },\n {\n id: 'TECH:G194',\n title: 'Providing spell checking and suggestions for text input',\n },\n {\n id: 'TECH:G184',\n title:\n 'Providing text instructions at the beginning of a form or set of fields that describes the necessary input',\n },\n ],\n },\n {\n title: 'Situation B: If a form requires text input in an expected data format:',\n techniques: [\n {\n id: 'TECH:G89',\n title: 'Providing expected data format and example',\n },\n {\n id: 'TECH:G184',\n title:\n 'Providing text instructions at the beginning of a form or set of fields that describes the necessary input',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:H89',\n title: 'Using the title attribute to provide context-sensitive help',\n },\n ],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:error-prevention-all',\n alt_id: ['minimize-error-reversible-all'],\n num: '3.3.6',\n versions: ['2.0', '2.1', '2.2'],\n level: 'AAA',\n handle: 'Error Prevention (All)',\n title: 'For Web pages that require the user to submit information, at least one of the following is true:',\n details: [\n {\n type: 'ulist',\n items: [\n {\n handle: 'Reversible',\n text: 'Submissions are reversible.',\n },\n {\n handle: 'Checked',\n text: 'Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.',\n },\n {\n handle: 'Confirmed',\n text: 'A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.',\n },\n ],\n },\n ],\n techniques: [\n {\n sufficient: [],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:redundant-entry',\n alt_id: [],\n num: '3.3.7',\n versions: ['2.2'],\n level: 'A',\n handle: 'Redundant Entry',\n title:\n 'Information previously entered by or provided to the user that is required to be entered again in the same process is either:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G218',\n title: 'Email link authentication',\n },\n {\n id: 'TECH:future-accessible-authentication-1',\n title: 'Providing a properly marked up email and password inputs (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-1',\n title: 'Providing WebAuthn as an alternative to username/password (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-1',\n title: 'Providing a 3rd party login using oAuth (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-1',\n title: 'Using two techniques to provide 2 factor authentication (Potential future technique)',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:accessible-authentication-minimum',\n alt_id: [],\n num: '3.3.8',\n versions: ['2.2'],\n level: 'AA',\n handle: 'Accessible Authentication (Minimum)',\n title:\n 'A cognitive function test (such as remembering a password or solving a puzzle) is not required for any step in an authentication process unless that step provides at least one of the following:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G218',\n title: 'Email link authentication',\n },\n {\n id: 'TECH:future-accessible-authentication-no-exception-1',\n title: 'Providing a properly marked up email and password inputs (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-no-exception-1',\n title: 'Providing WebAuthn as an alternative to username/password (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-no-exception-1',\n title: 'Providing a 3rd party login using oAuth (Potential future technique)',\n },\n {\n id: 'TECH:future-accessible-authentication-no-exception-1',\n title: 'Using two techniques to provide 2 factor authentication (Potential future technique)',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n {\n id: 'WCAG2:accessible-authentication-enhanced',\n alt_id: [],\n num: '3.3.9',\n versions: ['2.2'],\n level: 'AAA',\n handle: 'Accessible Authentication (Enhanced)',\n title:\n 'A cognitive function test (such as remembering a password or solving a puzzle) is not required for any step in an authentication process unless that step provides at least one of the following:',\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G221',\n title: 'Provide data from a previous step in a process',\n },\n {\n id: 'TECH:future-redundant-entry-1',\n title: 'Not requesting the same information twice in multiple steps (Potential future technique)',\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [],\n },\n ],\n },\n ],\n techniques: [],\n },\n ],\n },\n {\n id: 'WCAG2:robust',\n num: '4',\n versions: ['2.0', '2.1'],\n handle: 'Robust',\n title:\n 'Content must be robust enough that it can be interpreted by a wide variety of user agents, including assistive technologies.',\n guidelines: [\n {\n id: 'WCAG2:compatible',\n alt_id: ['ensure-compat'],\n num: '4.1',\n versions: ['2.0', '2.1', '2.2'],\n handle: 'Compatible',\n title: 'Maximize compatibility with current and future user agents, including assistive technologies.',\n successcriteria: [\n {\n id: 'WCAG2:parsing',\n alt_id: ['ensure-compat-parses'],\n num: '4.1.1',\n versions: ['2.0', '2.1'],\n level: 'A',\n handle: 'Parsing',\n title:\n 'In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'Start and end tags that are missing a critical character in their formation, such as a closing angle bracket or a mismatched attribute value quotation mark are not complete.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n id: 'TECH:G134',\n title: 'Validating Web pages',\n },\n {\n id: 'TECH:G192',\n title: 'Fully conforming to specifications',\n },\n {\n id: 'TECH:H88',\n title: 'Using HTML according to spec',\n },\n {\n id: 'TECH:future-parsing-1',\n title: 'Ensuring that Web pages can be parsed by using one of the following techniques:',\n using: [\n {\n and: [\n {\n id: 'TECH:H74',\n title: 'Ensuring that opening and closing tags are used according to specification',\n },\n {\n id: 'TECH:H93',\n title: 'Ensuring that id attributes are unique on a Web page',\n },\n {\n id: 'TECH:H94',\n title: 'Ensuring that elements do not contain duplicate attributes',\n },\n ],\n },\n {\n id: 'TECH:H75',\n title: 'Ensuring that Web pages are well-formed',\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F70',\n title: 'Failure of Success Criterion 4.1.1 due to incorrect use of start and end tags or attribute markup',\n },\n {\n id: 'TECH:F77',\n title: 'Failure of Success Criterion 4.1.1 due to duplicate values of type ID',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:name-role-value',\n alt_id: ['ensure-compat-rsv'],\n num: '4.1.2',\n versions: ['2.0', '2.1', '2.2'],\n level: 'A',\n handle: 'Name, Role, Value',\n title:\n 'For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.',\n details: [\n {\n type: 'note',\n handle: 'Note 1',\n text: 'This success criterion is primarily for Web authors who develop or script their own user interface components. For example, standard HTML controls already meet this success criterion when used according to specification.',\n },\n ],\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title: 'Situation A: If using a standard user interface component in a markup language (e.g., HTML):',\n techniques: [\n {\n id: 'TECH:ARIA14',\n title: 'Using aria-label to provide an invisible label where a visible label cannot be used',\n },\n {\n id: 'TECH:ARIA16',\n title: 'Using aria-labelledby to provide a name for user interface controls',\n },\n {\n id: 'TECH:G108',\n title:\n 'Using markup features to expose the name and role, allow user-settable properties to be directly set, and provide notification of changes',\n using: [\n {\n id: 'TECH:H91',\n title: 'Using HTML form controls and links',\n },\n {\n id: 'TECH:H44',\n title: 'Using label elements to associate text labels with form controls',\n },\n {\n id: 'TECH:H64',\n title: 'Using the title attribute of the frame and iframe elements',\n },\n {\n id: 'TECH:H65',\n title:\n 'Using the title attribute to identify form controls when the label element cannot be used',\n },\n {\n id: 'TECH:H88',\n title: 'Using HTML according to spec',\n },\n ],\n },\n ],\n },\n {\n title:\n 'Situation B: If using script or code to re-purpose a standard user interface component in a markup language:',\n techniques: [\n {\n id: 'TECH:future-name-role-value-1',\n title:\n 'Exposing the names and roles, allowing user-settable properties to be directly set, and providing notification of changes using one of the following techniques:',\n using: [\n {\n id: 'TECH:ARIA16',\n title: 'Using aria-labelledby to provide a name for user interface controls',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation C: If using a standard user interface component in a programming technology:',\n techniques: [\n {\n id: 'TECH:G135',\n title:\n 'Using the accessibility API features of a technology to expose names and notification of changes',\n using: [\n {\n id: 'TECH:PDF10',\n title: 'Providing labels for interactive form controls in PDF documents',\n },\n {\n id: 'TECH:PDF12',\n title: 'Providing name, role, value information for form fields in PDF documents',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation D: If creating your own user interface component in a programming language:',\n techniques: [\n {\n id: 'TECH:G10',\n title:\n 'Creating components using a technology that supports the accessibility notification of changes',\n using: [\n {\n id: 'TECH:ARIA4',\n title: 'Using a WAI-ARIA role to expose the role of a user interface component',\n },\n {\n id: 'TECH:ARIA5',\n title:\n 'Using WAI-ARIA state and property attributes to expose the state of a user interface component',\n },\n {\n id: 'TECH:ARIA16',\n title: 'Using aria-labelledby to provide a name for user interface controls',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [],\n },\n {\n failure: [\n {\n id: 'TECH:F59',\n title:\n 'Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML without providing a role for the control',\n },\n {\n id: 'TECH:F15',\n title:\n 'Failure of Success Criterion 4.1.2 due to implementing custom controls that do not use an accessibility API for the technology, or do so incompletely',\n },\n {\n id: 'TECH:F20',\n title:\n 'Failure of Success Criterion 1.1.1 and 4.1.2 due to not updating text alternatives when changes to non-text content occur',\n },\n {\n id: 'TECH:F68',\n title:\n 'Failure of Success Criterion 4.1.2 due to a user interface control not having a programmatically determined name',\n },\n {\n id: 'TECH:F79',\n title:\n 'Failure of Success Criterion 4.1.2 due to the focus state of a user interface component not being programmatically determinable or no notification of change of focus state available',\n },\n {\n id: 'TECH:F86',\n title:\n 'Failure of Success Criterion 4.1.2 due to not providing names for each part of a multi-part form field, such as a US telephone number',\n },\n {\n id: 'TECH:F89',\n title:\n 'Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link',\n },\n ],\n },\n ],\n },\n {\n id: 'WCAG2:status-messages',\n alt_id: [],\n num: '4.1.3',\n versions: ['2.1', '2.2'],\n level: 'AA',\n handle: 'Status Messages',\n title:\n 'In content implemented using markup languages, status messages can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.',\n techniques: [\n {\n sufficient: [\n {\n situations: [\n {\n title:\n 'Situation A: If a status message advises on the success or results of an action, or the state of an application:',\n techniques: [\n {\n id: 'TECH:ARIA22',\n title: 'Using role=status to present status messages',\n using: [\n {\n id: 'TECH:G199',\n title: 'Providing success feedback when data is submitted successfully',\n },\n ],\n },\n ],\n },\n {\n title:\n 'Situation B: If a status message conveys a suggestion, or a warning on the existence of an error:',\n techniques: [\n {\n id: 'TECH:ARIA19',\n title: 'Using ARIA role=alert or Live Regions to Identify Errors',\n using: [\n {\n id: 'TECH:G83',\n title: 'Providing text descriptions to identify required fields that were not completed',\n },\n {\n id: 'TECH:G84',\n title:\n 'Providing a text description when the user provides information that is not in the list of allowed values',\n },\n {\n id: 'TECH:G85',\n title:\n 'Providing a text description when user input falls outside the required format or values',\n },\n {\n id: 'TECH:G177',\n title: 'Providing suggested correction text',\n },\n {\n id: 'TECH:G194',\n title: 'Providing spell checking and suggestions for text input',\n },\n ],\n },\n ],\n },\n {\n title: 'Situation C: If a status message conveys information on the progress of a process:',\n techniques: [\n {\n id: 'TECH:ARIA23',\n title: 'Using role=log to identify sequential information updates',\n },\n {\n id: 'TECH:future-status-messages-1',\n title: 'Using role=\"progressbar\" (future link)',\n },\n {\n and: [\n {\n id: 'TECH:ARIA22',\n title: 'Using role=status to present status messages',\n },\n {\n id: 'TECH:G193',\n title: 'Providing help by an assistant in the Web page',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n advisory: [\n {\n id: 'TECH:future-status-messages-1',\n title: 'Using aria-live regions with chat clients (future link)',\n },\n {\n id: 'TECH:future-status-messages-1',\n title: 'Using role=\"marquee\" (future link)',\n },\n {\n id: 'TECH:future-status-messages-1',\n title: 'Using role=\"timer\" (future link)',\n },\n {\n id: 'TECH:ARIA18',\n title: 'Using aria-alertdialog to Identify Errors',\n },\n {\n id: 'TECH:SCR14',\n title: 'Using scripts to make nonessential alerts optional',\n },\n ],\n },\n {\n failure: [\n {\n id: 'TECH:F103',\n title:\n 'Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties',\n },\n {\n id: 'TECH:future-status-messages-1',\n title:\n 'Using role=\"alert\" or aria-live=\"assertive\" on content which is not important and time-sensitive (future link)',\n },\n ],\n },\n ],\n },\n ],\n techniques: [],\n },\n ],\n },\n ],\n};\n\nexport class Wcag implements ISuccessCriteriaIndex {\n private adaptWCAGToISuccessCriteria(wcagSuccessCriteria: any): ISuccessCriteria {\n const wcagIdPrefixThatDoesNotExistInUrl: string = 'WCAG:2';\n const url: string = wcagSuccessCriteria.id?.search(wcagIdPrefixThatDoesNotExistInUrl)\n ? `https://www.w3.org/WAI/WCAG22/Understanding/${wcagSuccessCriteria.id.slice(wcagIdPrefixThatDoesNotExistInUrl.length)}`\n : '';\n return {\n [$successCriteria.handle]: wcagSuccessCriteria.handle,\n [$successCriteria.level]: wcagSuccessCriteria.level,\n [$successCriteria.num]: wcagSuccessCriteria.num,\n [$successCriteria.title]: wcagSuccessCriteria.title,\n [$successCriteria.versions]: wcagSuccessCriteria.versions,\n [$successCriteria.url]: url,\n };\n }\n\n public get(num: string): ISuccessCriteria | null {\n const findByNumId: any = (structure: any): ISuccessCriteria | null => {\n if (typeof structure === 'string') {\n return null;\n } else if (Array.isArray(structure)) {\n for (const child of structure) {\n const depthFirstSearch: ISuccessCriteria | null = findByNumId(child);\n if (depthFirstSearch !== null) {\n return depthFirstSearch;\n }\n }\n } else if (structure['num'] === num) {\n return this.adaptWCAGToISuccessCriteria(structure);\n } else if (num.startsWith(structure['num']) === false) {\n return null;\n } else if (typeof structure['guidelines'] !== 'undefined') {\n return findByNumId(structure['guidelines']);\n } else if (typeof structure['successcriteria'] !== 'undefined') {\n return findByNumId(structure['successcriteria']);\n }\n return null;\n };\n\n return findByNumId(wcag.principles);\n }\n\n public getAll(): ISuccessCriteria[] {\n const result: ISuccessCriteria[] = [];\n\n const addSuccessCriteria = (successCriteria: any): void => {\n result.push(this.adaptWCAGToISuccessCriteria(successCriteria));\n };\n\n const findInGuideline = (guideline: any): void => {\n guideline.successcriteria?.forEach(addSuccessCriteria);\n };\n\n const findInPrinciple = (principle: any): void => {\n principle.guidelines?.forEach(findInGuideline);\n };\n\n wcag.principles.forEach(findInPrinciple);\n\n return result;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { DequeVersion } from '../../../interfaces/audit-rule.interface';\nimport { SuccessCriteriaIdentifier } from '../../../constants/audit-standard-success-criteria';\n\nconst axe: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Best Practice',\n [$successCriteria.level]: '',\n [$successCriteria.num]: SuccessCriteriaIdentifier.DEQUEBP4,\n [$successCriteria.title]: 'axe-core Best Practice',\n [$successCriteria.versions]: [DequeVersion.v40],\n [$successCriteria.url]: '',\n },\n];\n\nexport class Axe implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const axeSuccessCriteria: ISuccessCriteria | undefined = axe.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria) => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof axeSuccessCriteria === 'undefined') {\n return null;\n }\n return axeSuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return axe;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { EssentialVersion } from '../../../interfaces/audit-rule.interface';\nimport { SuccessCriteriaIdentifier } from '../../../constants/audit-standard-success-criteria';\n\nconst aslint: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Best Practice',\n [$successCriteria.level]: '',\n [$successCriteria.num]: SuccessCriteriaIdentifier.EABP1,\n [$successCriteria.title]: 'Level Access Best Practice',\n [$successCriteria.versions]: [EssentialVersion.v10],\n [$successCriteria.url]: '',\n },\n];\n\nexport class Aslint implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const aslintSuccessCriteria: ISuccessCriteria | undefined = aslint.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria) => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof aslintSuccessCriteria === 'undefined') {\n return null;\n }\n return aslintSuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return aslint;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { WaveVersion } from '../../../interfaces/audit-rule.interface';\nimport { SuccessCriteriaIdentifier } from '../../../constants/audit-standard-success-criteria';\n\nconst wave: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Best Practice',\n [$successCriteria.level]: '',\n [$successCriteria.num]: SuccessCriteriaIdentifier.WAVEBP1,\n [$successCriteria.title]: 'WAVE Best Practice',\n [$successCriteria.versions]: [WaveVersion.v10],\n [$successCriteria.url]: '',\n },\n];\n\nexport class Wave implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const waveSuccessCriteria: ISuccessCriteria | undefined = wave.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria) => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof waveSuccessCriteria === 'undefined') {\n return null;\n }\n return waveSuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return wave;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { SuccessCriteriaIdentifier } from '../../../constants/audit-standard-success-criteria';\n\nconst notApplicable: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'NA',\n [$successCriteria.level]: '',\n [$successCriteria.num]: SuccessCriteriaIdentifier.NOT_APPLICABLE,\n [$successCriteria.title]: 'Not applicable',\n [$successCriteria.versions]: [],\n [$successCriteria.url]: '',\n },\n];\n\nexport class NotApplicable implements ISuccessCriteriaIndex {\n public get(): ISuccessCriteria {\n return notApplicable[0];\n }\n\n public getAll(): ISuccessCriteria[] {\n return notApplicable;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { WcagVersion, WcagLevel } from '../../../interfaces/audit-rule.interface';\n\nconst wcagCr: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Conformance Level',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: '5.2.1',\n [$successCriteria.title]: '5.2.1 Conformance Level',\n [$successCriteria.versions]: [WcagVersion.v22, WcagVersion.v21],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Full pages',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: '5.2.2',\n [$successCriteria.title]: '5.2.2 Full pages',\n [$successCriteria.versions]: [WcagVersion.v22, WcagVersion.v21],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Complete processes',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: '5.2.3',\n [$successCriteria.title]: '5.2.3 Complete processes',\n [$successCriteria.versions]: [WcagVersion.v22, WcagVersion.v21],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: '5.2.4',\n [$successCriteria.title]: '5.2.4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.versions]: [WcagVersion.v22, WcagVersion.v21],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-Interference',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: '5.2.5',\n [$successCriteria.title]: '5.2.5 Non-Interference',\n [$successCriteria.versions]: [WcagVersion.v22, WcagVersion.v21],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 1 Conformance Level',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: 'CR 1 Conformance Level',\n [$successCriteria.title]: 'Conformance Requirement 1 Conformance Level',\n [$successCriteria.versions]: [WcagVersion.v20],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 2 Full pages',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: 'CR 2 Full pages',\n [$successCriteria.title]: 'Conformance Requirement 2 Full pages',\n [$successCriteria.versions]: [WcagVersion.v20],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 3 Complete processes',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: 'CR 3 Complete processes',\n [$successCriteria.title]: 'Conformance Requirement 3 Complete processes',\n [$successCriteria.versions]: [WcagVersion.v20],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: 'CR 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.title]: 'Conformance Requirement 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.versions]: [WcagVersion.v20],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 5 Non-Interference',\n [$successCriteria.level]: WcagLevel.CR,\n [$successCriteria.num]: 'CR 5 Non-Interference',\n [$successCriteria.title]: 'Conformance Requirement 5 Non-Interference',\n [$successCriteria.versions]: [WcagVersion.v20],\n [$successCriteria.url]: '',\n },\n];\n\nexport class WcagCr implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const wcagSuccessCriteria: ISuccessCriteria | undefined = wcagCr.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria): boolean => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof wcagSuccessCriteria === 'undefined') {\n return null;\n }\n return wcagSuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return wcagCr;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { En301549Version } from '../../../interfaces/audit-rule.interface';\n\nconst en301549: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Usage without vision',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.1',\n [$successCriteria.title]: '4.2.1 Usage without vision',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage with limited vision',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.2',\n [$successCriteria.title]: '4.2.2 Usage with limited vision',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage without perception of colour',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.3',\n [$successCriteria.title]: '4.2.3 Usage without perception of colour',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage without hearing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.4',\n [$successCriteria.title]: '4.2.4 Usage without hearing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage with limited hearing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.5',\n [$successCriteria.title]: '4.2.5 Usage with limited hearing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage with no or limited vocal capability',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.6',\n [$successCriteria.title]: '4.2.6 Usage with no or limited vocal capability',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage with limited manipulation or strength',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.7',\n [$successCriteria.title]: '4.2.7 Usage with limited manipulation or strength',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: '4.2.8 Usage with limited reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.8',\n [$successCriteria.title]: '4.2.8 Usage with limited reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: '4.2.9 Minimize photosensitive seizure triggers',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.9',\n [$successCriteria.title]: '4.2.9 Minimize photosensitive seizure triggers',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Usage with limited cognition, language or learning',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.10',\n [$successCriteria.title]: '4.2.10 Usage with limited cognition, language or learning',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Privacy',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.2.11',\n [$successCriteria.title]: '4.2.11 Privacy',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1',\n [$successCriteria.title]: '5.1 Closed functionality',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.2',\n [$successCriteria.title]: '5.1.2 General',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.2.1',\n [$successCriteria.title]: '5.1.2.1 Closed functionality',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Assistive technology',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.2.2',\n [$successCriteria.title]: '5.1.2.2 Assistive technology',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-visual access',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3',\n [$successCriteria.title]: '5.1.3 Non-visual access',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio output of visual information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.1',\n [$successCriteria.title]: '5.1.3.1 Audio output of visual information',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Auditory output delivery including speech',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.2',\n [$successCriteria.title]: '5.1.3.2 Auditory output delivery including speech',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Auditory output correlation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.3',\n [$successCriteria.title]: '5.1.3.3 Auditory output correlation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech output user control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.4',\n [$successCriteria.title]: '5.1.3.4 Speech output user control',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech output automatic interruption',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.5',\n [$successCriteria.title]: '5.1.3.5 Speech output automatic interruption',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech output for non-text content',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.6',\n [$successCriteria.title]: '5.1.3.6 Speech output for non-text content',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech output for video information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.7',\n [$successCriteria.title]: '5.1.3.7 Speech output for video information',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Masked entry',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.8',\n [$successCriteria.title]: '5.1.3.8 Masked entry',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Private access to personal data',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.9',\n [$successCriteria.title]: '5.1.3.9 Private access to personal data',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-interfering audio output',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.10',\n [$successCriteria.title]: '5.1.3.10 Non-interfering audio output',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Private listening volume',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.11',\n [$successCriteria.title]: '5.1.3.11 Private listening volume',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speaker volume',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.12',\n [$successCriteria.title]: '5.1.3.12 Speaker volume',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Volume reset',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.13',\n [$successCriteria.title]: '5.1.3.13 Volume reset',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Spoken languages',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.14',\n [$successCriteria.title]: '5.1.3.14 Spoken languages',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-visual error identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.15',\n [$successCriteria.title]: '5.1.3.15 Non-visual error identification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Receipts, tickets, and transactional outputs',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.3.16',\n [$successCriteria.title]: '5.1.3.16 Receipts, tickets, and transactional outputs',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Functionality closed to text enlargement',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.4',\n [$successCriteria.title]: '5.1.4 Functionality closed to text enlargement',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visual output for auditory information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.5',\n [$successCriteria.title]: '5.1.5 Visual output for auditory information',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operation without keyboard interface',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.6',\n [$successCriteria.title]: '5.1.6 Operation without keyboard interface',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.6.1',\n [$successCriteria.title]: '5.1.6.1 Closed functionality',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Input focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.6.2',\n [$successCriteria.title]: '5.1.6.2 Input focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Access without speech',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.1.7',\n [$successCriteria.title]: '5.1.7 Access without speech',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Activation of accessibility features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.2',\n [$successCriteria.title]: '5.2 Activation of accessibility features',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Biometrics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.3',\n [$successCriteria.title]: '5.3 Biometrics',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of accessibility information during conversion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.4',\n [$successCriteria.title]: '5.4 Preservation of accessibility information during conversion',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operable parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.5',\n [$successCriteria.title]: '5.5 Operable parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Means of operation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.5.1',\n [$successCriteria.title]: '5.5.1 Means of operation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operable parts discernibility',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.5.2',\n [$successCriteria.title]: '5.5.2 Operable parts discernibility',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Locking or toggle controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.6',\n [$successCriteria.title]: '5.6 Locking or toggle controls',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Tactile or auditory status',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.6.1',\n [$successCriteria.title]: '5.6.1 Tactile or auditory status',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visual status',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.6.2',\n [$successCriteria.title]: '5.6.2 Visual status',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Key repeat',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.7',\n [$successCriteria.title]: '5.7 Key repeat',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Double-strike key acceptance',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.8',\n [$successCriteria.title]: '5.8 Double-strike key acceptance',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Simultaneous user actions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '5.9',\n [$successCriteria.title]: '5.9 Simultaneous user actions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio bandwidth for speech',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.1',\n [$successCriteria.title]: '6.1 Audio bandwidth for speech',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Real-time text (RTT) functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2',\n [$successCriteria.title]: '6.2 Real-time text (RTT) functionality',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'RTT communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.1.1',\n [$successCriteria.title]: '6.2.1.1 RTT communication',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Concurrent voice and text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.1.2',\n [$successCriteria.title]: '6.2.1.2 Concurrent voice and text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visually distinguishable display',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.2.1',\n [$successCriteria.title]: '6.2.2.1 Visually distinguishable display',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Programmatically determinable send and receive direction',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.2.2',\n [$successCriteria.title]: '6.2.2.2 Programmatically determinable send and receive direction',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speaker identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.2.3',\n [$successCriteria.title]: '6.2.2.3 Speaker identification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visual indicator of Audio with RTT',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.2.4',\n [$successCriteria.title]: '6.2.2.4 Visual indicator of Audio with RTT',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Interoperability',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.3',\n [$successCriteria.title]: '6.2.3 Interoperability',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'RTT responsiveness',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.2.4',\n [$successCriteria.title]: '6.2.4 RTT responsiveness',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caller ID',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.3',\n [$successCriteria.title]: '6.3 Caller ID',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Alternatives to voice-based services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.4',\n [$successCriteria.title]: '6.4 Alternatives to voice-based services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Video communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5',\n [$successCriteria.title]: '6.5 Video communication',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General (informative)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.1',\n [$successCriteria.title]: '6.5.1 General (informative)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resolution',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.2',\n [$successCriteria.title]: '6.5.2 Resolution',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Frame rate',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.3',\n [$successCriteria.title]: '6.5.3 Frame rate',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Synchronization between audio and video',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.4',\n [$successCriteria.title]: '6.5.4 Synchronization between audio and video',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visual indicator of audio with video',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.5',\n [$successCriteria.title]: '6.5.5 Visual indicator of audio with video',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speaker identification with video (sign language) communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.5.6',\n [$successCriteria.title]: '6.5.6 Speaker identification with video (sign language) communication',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Alternatives to video-based services (advisory only)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '6.6',\n [$successCriteria.title]: '6.6 Alternatives to video-based services (advisory only)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caption processing technology',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1',\n [$successCriteria.title]: '7.1 Caption processing technology',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captioning playback',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1.1',\n [$successCriteria.title]: '7.1.1 Captioning playback',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captioning synchronization',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1.2',\n [$successCriteria.title]: '7.1.2 Captioning synchronization',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of captioning',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1.3',\n [$successCriteria.title]: '7.1.3 Preservation of captioning',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions characteristics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1.4',\n [$successCriteria.title]: '7.1.4 Captions characteristics',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Spoken subtitles',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.1.5',\n [$successCriteria.title]: '7.1.5 Spoken subtitles',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description playback',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.2.1',\n [$successCriteria.title]: '7.2.1 Audio description playback',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description synchronization',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.2.2',\n [$successCriteria.title]: '7.2.2 Audio description synchronization',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of audio description',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.2.3',\n [$successCriteria.title]: '7.2.3 Preservation of audio description',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User controls for captions and audio description',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '7.3',\n [$successCriteria.title]: '7.3 User controls for captions and audio description',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Generic requirements',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.1.1',\n [$successCriteria.title]: '8.1.1 Generic requirements',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Standard connections',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.1.2',\n [$successCriteria.title]: '8.1.2 Standard connections',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Colour',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.1.3',\n [$successCriteria.title]: '8.1.3 Colour',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Hardware products with speech output',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.2',\n [$successCriteria.title]: '8.2 Hardware products with speech output',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech volume range',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.2.1.1',\n [$successCriteria.title]: '8.2.1.1 Speech volume range',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Incremental volume control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.2.1.2',\n [$successCriteria.title]: '8.2.1.2 Incremental volume control',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Fixed-line devices',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.2.2.1',\n [$successCriteria.title]: '8.2.2.1 Fixed-line devices',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Wireless communication devices',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.2.2.2',\n [$successCriteria.title]: '8.2.2.2 Wireless communication devices',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Stationary ICT',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3',\n [$successCriteria.title]: '8.3 Stationary ICT',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Forward or side reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.1',\n [$successCriteria.title]: '8.3.1 Forward or side reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed high forward reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.1',\n [$successCriteria.title]: '8.3.2.1 Unobstructed high forward reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed low forward reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.2',\n [$successCriteria.title]: '8.3.2.2 Unobstructed low forward reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Clear space',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.3.1',\n [$successCriteria.title]: '8.3.2.3.1 Clear space',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed (< 510 mm) forward reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.3.2',\n [$successCriteria.title]: '8.3.2.3.2 Obstructed (< 510 mm) forward reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed (< 635 mm) forward reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.3.3',\n [$successCriteria.title]: '8.3.2.3.3 Obstructed (< 635 mm) forward reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Knee and toe clearance width',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.4',\n [$successCriteria.title]: '8.3.2.4 Knee and toe clearance width',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Toe clearance',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.5',\n [$successCriteria.title]: '8.3.2.5 Toe clearance',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Knee clearance',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.2.6',\n [$successCriteria.title]: '8.3.2.6 Knee clearance',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed high side reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.3.1',\n [$successCriteria.title]: '8.3.3.1 Unobstructed high side reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed low side reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.3.2',\n [$successCriteria.title]: '8.3.3.2 Unobstructed low side reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed (≤ 255 mm) side reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.3.3.1',\n [$successCriteria.title]: '8.3.3.3.1 Obstructed (≤ 255 mm) side reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed (≤ 610 mm) side reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.3.3.2',\n [$successCriteria.title]: '8.3.3.3.2 Obstructed (≤ 610 mm) side reach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Change in level',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.4.1',\n [$successCriteria.title]: '8.3.4.1 Change in level',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Clear floor or ground space',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.4.2',\n [$successCriteria.title]: '8.3.4.2 Clear floor or ground space',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Approach - General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.4.3.1',\n [$successCriteria.title]: '8.3.4.3.1 Approach - General',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Forward approach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.4.3.2',\n [$successCriteria.title]: '8.3.4.3.2 Forward approach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parallel approach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.4.3.3',\n [$successCriteria.title]: '8.3.4.3.3 Parallel approach',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visibility',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.5',\n [$successCriteria.title]: '8.3.5 Visibility',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Installation instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.3.6',\n [$successCriteria.title]: '8.3.6 Installation instructions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Mechanically Operable parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.4',\n [$successCriteria.title]: '8.4 Mechanically Operable parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Numeric keys',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.4.1',\n [$successCriteria.title]: '8.4.1 Numeric keys',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Means of operation of mechanical parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.4.2.1',\n [$successCriteria.title]: '8.4.2.1 Means of operation of mechanical parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Force of operation of mechanical parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.4.2.2',\n [$successCriteria.title]: '8.4.2.2 Force of operation of mechanical parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keys, tickets and fare cards',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.4.3',\n [$successCriteria.title]: '8.4.3 Keys, tickets and fare cards',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Tactile indication of speech mode',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '8.5',\n [$successCriteria.title]: '8.5 Tactile indication of speech mode',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text content',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.1.1',\n [$successCriteria.title]: '9.1.1.1 Non-text content',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio-only and video- only (pre-recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.2.1',\n [$successCriteria.title]: '9.1.2.1 Audio-only and video- only (pre-recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (pre-recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.2.2',\n [$successCriteria.title]: '9.1.2.2 Captions (pre-recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description or media alternative (pre-recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.2.3',\n [$successCriteria.title]: '9.1.2.3 Audio description or media alternative (pre-recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (live)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.2.4',\n [$successCriteria.title]: '9.1.2.4 Captions (live)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description (pre-recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.2.5',\n [$successCriteria.title]: '9.1.2.5 Audio description (pre-recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Info and relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.3.1',\n [$successCriteria.title]: '9.1.3.1 Info and relationships',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Meaningful sequence',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.3.2',\n [$successCriteria.title]: '9.1.3.2 Meaningful sequence',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Sensory characteristics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.3.3',\n [$successCriteria.title]: '9.1.3.3 Sensory characteristics',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Orientation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.3.4',\n [$successCriteria.title]: '9.1.3.4 Orientation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Identify input purpose',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.3.5',\n [$successCriteria.title]: '9.1.3.5 Identify input purpose',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Use of colour',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.1',\n [$successCriteria.title]: '9.1.4.1 Use of colour',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.2',\n [$successCriteria.title]: '9.1.4.2 Audio control',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Contrast (minimum)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.3',\n [$successCriteria.title]: '9.1.4.3 Contrast (minimum)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resize text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.4',\n [$successCriteria.title]: '9.1.4.4 Resize text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Images of text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.5',\n [$successCriteria.title]: '9.1.4.5 Images of text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Reflow',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.10',\n [$successCriteria.title]: '9.1.4.10 Reflow',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text contrast',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.11',\n [$successCriteria.title]: '9.1.4.11 Non-text contrast',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text spacing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.12',\n [$successCriteria.title]: '9.1.4.12 Text spacing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Content on hover or focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.1.4.13',\n [$successCriteria.title]: '9.1.4.13 Content on hover or focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keyboard',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.1.1',\n [$successCriteria.title]: '9.2.1.1 Keyboard',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No keyboard trap',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.1.2',\n [$successCriteria.title]: '9.2.1.2 No keyboard trap',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Character key shortcuts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.1.4',\n [$successCriteria.title]: '9.2.1.4 Character key shortcuts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Timing adjustable',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.2.1',\n [$successCriteria.title]: '9.2.2.1 Timing adjustable',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pause, stop, hide',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.2.2',\n [$successCriteria.title]: '9.2.2.2 Pause, stop, hide',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Three flashes or below threshold',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.3.1',\n [$successCriteria.title]: '9.2.3.1 Three flashes or below threshold',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Bypass blocks',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.1',\n [$successCriteria.title]: '9.2.4.1 Bypass blocks',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Page titled',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.2',\n [$successCriteria.title]: '9.2.4.2 Page titled',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus Order',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.3',\n [$successCriteria.title]: '9.2.4.3 Focus Order',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Link purpose (in context)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.4',\n [$successCriteria.title]: '9.2.4.4 Link purpose (in context)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Multiple ways',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.5',\n [$successCriteria.title]: '9.2.4.5 Multiple ways',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Headings and labels',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.6',\n [$successCriteria.title]: '9.2.4.6 Headings and labels',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus visible',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.4.7',\n [$successCriteria.title]: '9.2.4.7 Focus visible',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer gestures',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.5.1',\n [$successCriteria.title]: '9.2.5.1 Pointer gestures',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer cancellation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.5.2',\n [$successCriteria.title]: '9.2.5.2 Pointer cancellation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label in name',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.5.3',\n [$successCriteria.title]: '9.2.5.3 Label in name',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Motion actuation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.2.5.4',\n [$successCriteria.title]: '9.2.5.4 Motion actuation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of page',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.1.1',\n [$successCriteria.title]: '9.3.1.1 Language of page',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.1.2',\n [$successCriteria.title]: '9.3.1.2 Language of parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.2.1',\n [$successCriteria.title]: '9.3.2.1 On focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On input',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.2.2',\n [$successCriteria.title]: '9.3.2.2 On input',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Consistent navigation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.2.3',\n [$successCriteria.title]: '9.3.2.3 Consistent navigation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Consistent identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.2.4',\n [$successCriteria.title]: '9.3.2.4 Consistent identification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.3.1',\n [$successCriteria.title]: '9.3.3.1 Error identification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Labels or instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.3.2',\n [$successCriteria.title]: '9.3.3.2 Labels or instructions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error suggestion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.3.3',\n [$successCriteria.title]: '9.3.3.3 Error suggestion',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error prevention (legal, financial, data)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.3.3.4',\n [$successCriteria.title]: '9.3.3.4 Error prevention (legal, financial, data)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parsing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.4.1.1',\n [$successCriteria.title]: '9.4.1.1 Parsing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Name, role, value',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.4.1.2',\n [$successCriteria.title]: '9.4.1.2 Name, role, value',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Status messages',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.4.1.3',\n [$successCriteria.title]: '9.4.1.3 Status messages',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'WCAG conformance requirements',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '9.6',\n [$successCriteria.title]: '9.6 WCAG conformance requirements',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text content',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.1.1',\n [$successCriteria.title]: '10.1.1.1 Non-text content',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: '10.1.2.1 Audio-only and video- only (pre-recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.2.1',\n [$successCriteria.title]: '10.1.2.1 Audio-only and video- only (pre-recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (pre- recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.2.2',\n [$successCriteria.title]: '10.1.2.2 Captions (pre- recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description or media alternative (pre- recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.2.3',\n [$successCriteria.title]: '10.1.2.3 Audio description or media alternative (pre- recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (live)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.2.4',\n [$successCriteria.title]: '10.1.2.4 Captions (live)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description (pre- recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.2.5',\n [$successCriteria.title]: '10.1.2.5 Audio description (pre- recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Info and relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.3.1',\n [$successCriteria.title]: '10.1.3.1 Info and relationships',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Meaningful sequence',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.3.2',\n [$successCriteria.title]: '10.1.3.2 Meaningful sequence',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Sensory characteristics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.3.3',\n [$successCriteria.title]: '10.1.3.3 Sensory characteristics',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Orientation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.3.4',\n [$successCriteria.title]: '10.1.3.4 Orientation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Identify input purpose',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.3.5',\n [$successCriteria.title]: '10.1.3.5 Identify input purpose',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Use of colour',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.1',\n [$successCriteria.title]: '10.1.4.1 Use of colour',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.2',\n [$successCriteria.title]: '10.1.4.2 Audio control',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Contrast (minimum)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.3',\n [$successCriteria.title]: '10.1.4.3 Contrast (minimum)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resize text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.4',\n [$successCriteria.title]: '10.1.4.4 Resize text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Images of text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.5',\n [$successCriteria.title]: '10.1.4.5 Images of text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Reflow',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.10',\n [$successCriteria.title]: '10.1.4.10 Reflow',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text contrast',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.11',\n [$successCriteria.title]: '10.1.4.11 Non-text contrast',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text spacing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.12',\n [$successCriteria.title]: '10.1.4.12 Text spacing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Content on hover or focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.1.4.13',\n [$successCriteria.title]: '10.1.4.13 Content on hover or focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keyboard',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.1.1',\n [$successCriteria.title]: '10.2.1.1 Keyboard',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No keyboard trap',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.1.2',\n [$successCriteria.title]: '10.2.1.2 No keyboard trap',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Character key shortcuts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.1.4',\n [$successCriteria.title]: '10.2.1.4 Character key shortcuts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Timing adjustable',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.2.1',\n [$successCriteria.title]: '10.2.2.1 Timing adjustable',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pause, stop, hide',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.2.2',\n [$successCriteria.title]: '10.2.2.2 Pause, stop, hide',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Three flashes or below threshold',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.3.1',\n [$successCriteria.title]: '10.2.3.1 Three flashes or below threshold',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Document titled',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.4.2',\n [$successCriteria.title]: '10.2.4.2 Document titled',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus Order',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.4.3',\n [$successCriteria.title]: '10.2.4.3 Focus Order',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Link purpose (in context)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.4.4',\n [$successCriteria.title]: '10.2.4.4 Link purpose (in context)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Headings and labels',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.4.6',\n [$successCriteria.title]: '10.2.4.6 Headings and labels',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus visible',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.4.7',\n [$successCriteria.title]: '10.2.4.7 Focus visible',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer gestures',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.5.1',\n [$successCriteria.title]: '10.2.5.1 Pointer gestures',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer cancellation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.5.2',\n [$successCriteria.title]: '10.2.5.2 Pointer cancellation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label in name',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.5.3',\n [$successCriteria.title]: '10.2.5.3 Label in name',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Motion actuation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.2.5.4',\n [$successCriteria.title]: '10.2.5.4 Motion actuation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of document',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.1.1',\n [$successCriteria.title]: '10.3.1.1 Language of document',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.1.2',\n [$successCriteria.title]: '10.3.1.2 Language of parts',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.2.1',\n [$successCriteria.title]: '10.3.2.1 On focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On input',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.2.2',\n [$successCriteria.title]: '10.3.2.2 On input',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.3.1',\n [$successCriteria.title]: '10.3.3.1 Error identification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Labels or instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.3.2',\n [$successCriteria.title]: '10.3.3.2 Labels or instructions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error suggestion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.3.3',\n [$successCriteria.title]: '10.3.3.3 Error suggestion',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error prevention (legal, financial, data)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.3.3.4',\n [$successCriteria.title]: '10.3.3.4 Error prevention (legal, financial, data)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parsing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.4.1.1',\n [$successCriteria.title]: '10.4.1.1 Parsing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Name, role, value',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.4.1.2',\n [$successCriteria.title]: '10.4.1.2 Name, role, value',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Status messages',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.4.1.3',\n [$successCriteria.title]: '10.4.1.3 Status messages',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caption positioning',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.5',\n [$successCriteria.title]: '10.5 Caption positioning',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description timing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '10.6',\n [$successCriteria.title]: '10.6 Audio description timing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text content (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.1.1.1',\n [$successCriteria.title]: '11.1.1.1.1 Non-text content (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text content (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.1.1.2',\n [$successCriteria.title]: '11.1.1.1.2 Non-text content (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio-only and video-only (pre-recorded - open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.1.1',\n [$successCriteria.title]: '11.1.2.1.1 Audio-only and video-only (pre-recorded - open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: '11.1.2.1.2 Audio-only and video-only (pre-recorded - closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.1.2',\n [$successCriteria.title]: '11.1.2.1.2 Audio-only and video-only (pre-recorded - closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (pre- recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.2',\n [$successCriteria.title]: '11.1.2.2 Captions (pre- recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description or media alternative (pre-recorded - open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.3.1',\n [$successCriteria.title]: '11.1.2.3.1 Audio description or media alternative (pre-recorded - open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description or media alternative (pre-recorded - closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.3.2',\n [$successCriteria.title]: '11.1.2.3.2 Audio description or media alternative (pre-recorded - closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (live)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.4',\n [$successCriteria.title]: '11.1.2.4 Captions (live)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio description (pre- recorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.2.5',\n [$successCriteria.title]: '11.1.2.5 Audio description (pre- recorded)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Info and relationships (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.1.1',\n [$successCriteria.title]: '11.1.3.1.1 Info and relationships (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Info and relationships (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.1.2',\n [$successCriteria.title]: '11.1.3.1.2 Info and relationships (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Meaningful sequence (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.2.1',\n [$successCriteria.title]: '11.1.3.2.1 Meaningful sequence (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Meaningful sequence (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.2.2',\n [$successCriteria.title]: '11.1.3.2.2 Meaningful sequence (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Sensory characteristics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.3',\n [$successCriteria.title]: '11.1.3.3 Sensory characteristics',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Orientation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.4',\n [$successCriteria.title]: '11.1.3.4 Orientation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Identify input purpose (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.5.1',\n [$successCriteria.title]: '11.1.3.5.1 Identify input purpose (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Identify input purpose (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.3.5.2',\n [$successCriteria.title]: '11.1.3.5.2 Identify input purpose (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Use of colour',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.1',\n [$successCriteria.title]: '11.1.4.1 Use of colour',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.2',\n [$successCriteria.title]: '11.1.4.2 Audio control',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Contrast (minimum)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.3',\n [$successCriteria.title]: '11.1.4.3 Contrast (minimum)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resize text (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.4.1',\n [$successCriteria.title]: '11.1.4.4.1 Resize text (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resize text (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.4.2',\n [$successCriteria.title]: '11.1.4.4.2 Resize text (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Images of text (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.5.1',\n [$successCriteria.title]: '11.1.4.5.1 Images of text (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Images of text (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.5.2',\n [$successCriteria.title]: '11.1.4.5.2 Images of text (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Reflow',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.10',\n [$successCriteria.title]: '11.1.4.10 Reflow',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text contrast',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.11',\n [$successCriteria.title]: '11.1.4.11 Non-text contrast',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text spacing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.12',\n [$successCriteria.title]: '11.1.4.12 Text spacing',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Content on hover or focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.1.4.13',\n [$successCriteria.title]: '11.1.4.13 Content on hover or focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keyboard (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.1.1.1',\n [$successCriteria.title]: '11.2.1.1.1 Keyboard (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keyboard (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.1.1.2',\n [$successCriteria.title]: '11.2.1.1.2 Keyboard (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No keyboard trap',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.1.2',\n [$successCriteria.title]: '11.2.1.2 No keyboard trap',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Character key shortcuts (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.1.4.1',\n [$successCriteria.title]: '11.2.1.4.1 Character key shortcuts (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Character key shortcuts (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.1.4.2',\n [$successCriteria.title]: '11.2.1.4.2 Character key shortcuts (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Timing adjustable',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.2.1',\n [$successCriteria.title]: '11.2.2.1 Timing adjustable',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pause, stop, hide',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.2.2',\n [$successCriteria.title]: '11.2.2.2 Pause, stop, hide',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Three flashes or below threshold',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.3.1',\n [$successCriteria.title]: '11.2.3.1 Three flashes or below threshold',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus order',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.4.3',\n [$successCriteria.title]: '11.2.4.3 Focus order',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Link purpose (in context)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.4.4',\n [$successCriteria.title]: '11.2.4.4 Link purpose (in context)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Headings and labels',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.4.6',\n [$successCriteria.title]: '11.2.4.6 Headings and labels',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus visible',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.4.7',\n [$successCriteria.title]: '11.2.4.7 Focus visible',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer gestures',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.5.1',\n [$successCriteria.title]: '11.2.5.1 Pointer gestures',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pointer cancellation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.5.2',\n [$successCriteria.title]: '11.2.5.2 Pointer cancellation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label in name (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.5.3.1',\n [$successCriteria.title]: '11.2.5.3.1 Label in name (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label in name (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.5.3.2',\n [$successCriteria.title]: '11.2.5.3.2 Label in name (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Motion actuation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.2.5.4',\n [$successCriteria.title]: '11.2.5.4 Motion actuation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of software (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.1.1.1',\n [$successCriteria.title]: '11.3.1.1.1 Language of software (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of software (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.1.1.2',\n [$successCriteria.title]: '11.3.1.1.2 Language of software (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.2.1',\n [$successCriteria.title]: '11.3.2.1 On focus',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On input',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.2.2',\n [$successCriteria.title]: '11.3.2.2 On input',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error identification (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.3.1.1',\n [$successCriteria.title]: '11.3.3.1.1 Error identification (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error Identification (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.3.1.2',\n [$successCriteria.title]: '11.3.3.1.2 Error Identification (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Labels or instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.3.2',\n [$successCriteria.title]: '11.3.3.2 Labels or instructions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error suggestion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.3.3',\n [$successCriteria.title]: '11.3.3.3 Error suggestion',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error prevention (legal, financial, data)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.3.3.4',\n [$successCriteria.title]: '11.3.3.4 Error prevention (legal, financial, data)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parsing (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.4.1.1.1',\n [$successCriteria.title]: '11.4.1.1.1 Parsing (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parsing (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.4.1.1.2',\n [$successCriteria.title]: '11.4.1.1.2 Parsing (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Name, role, value (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.4.1.2.1',\n [$successCriteria.title]: '11.4.1.2.1 Name, role, value (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Name, role, value (closed functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.4.1.2.2',\n [$successCriteria.title]: '11.4.1.2.2 Name, role, value (closed functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Status messages (open functionality)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.4.1.3.1',\n [$successCriteria.title]: '11.4.1.3.1 Status messages (open functionality)',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.1',\n [$successCriteria.title]: '11.5.1 Closed functionality',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Platform accessibility service support for software that provides a user interface',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.1',\n [$successCriteria.title]: '11.5.2.1 Platform accessibility service support for software that provides a user interface',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Platform accessibility service support for assistive technologies',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.2',\n [$successCriteria.title]: '11.5.2.2 Platform accessibility service support for assistive technologies',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Use of accessibility services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.3',\n [$successCriteria.title]: '11.5.2.3 Use of accessibility services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Assistive technology',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.4',\n [$successCriteria.title]: '11.5.2.4 Assistive technology',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Object information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.5',\n [$successCriteria.title]: '11.5.2.5 Object information',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Row, column, and headers',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.6',\n [$successCriteria.title]: '11.5.2.6 Row, column, and headers',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Values',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.7',\n [$successCriteria.title]: '11.5.2.7 Values',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.8',\n [$successCriteria.title]: '11.5.2.8 Label relationships',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parent-child relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.9',\n [$successCriteria.title]: '11.5.2.9 Parent-child relationships',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.10',\n [$successCriteria.title]: '11.5.2.10 Text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'List of available actions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.11',\n [$successCriteria.title]: '11.5.2.11 List of available actions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Execution of available actions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.12',\n [$successCriteria.title]: '11.5.2.12 Execution of available actions',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Tracking of focus and selection attributes',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.13',\n [$successCriteria.title]: '11.5.2.13 Tracking of focus and selection attributes',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modification of focus and selection attributes',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.14',\n [$successCriteria.title]: '11.5.2.14 Modification of focus and selection attributes',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Change notification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.15',\n [$successCriteria.title]: '11.5.2.15 Change notification',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modifications of states and properties',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.16',\n [$successCriteria.title]: '11.5.2.16 Modifications of states and properties',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modifications of values and text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.5.2.17',\n [$successCriteria.title]: '11.5.2.17 Modifications of values and text',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User control of accessibility features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.6.1',\n [$successCriteria.title]: '11.6.1 User control of accessibility features',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No disruption of accessibility features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.6.2',\n [$successCriteria.title]: '11.6.2 No disruption of accessibility features',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User preferences',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.7',\n [$successCriteria.title]: '11.7 User preferences',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Content technology',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.8.1',\n [$successCriteria.title]: '11.8.1 Content technology',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accessible content creation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.8.2',\n [$successCriteria.title]: '11.8.2 Accessible content creation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of accessibility information in transformations',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.8.3',\n [$successCriteria.title]: '11.8.3 Preservation of accessibility information in transformations',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Repair assistance',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.8.4',\n [$successCriteria.title]: '11.8.4 Repair assistance',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Templates',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '11.8.5',\n [$successCriteria.title]: '11.8.5 Templates',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Product documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.1',\n [$successCriteria.title]: '12.1 Product documentation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: '12.1.1 Accessibility and compatibility features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.1.1',\n [$successCriteria.title]: '12.1.1 Accessibility and compatibility features',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accessible documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.1.2',\n [$successCriteria.title]: '12.1.2 Accessible documentation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Support Services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.2',\n [$successCriteria.title]: '12.2 Support Services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Information on accessibility and compatibility features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.2.2',\n [$successCriteria.title]: '12.2.2 Information on accessibility and compatibility features',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Effective communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.2.3',\n [$successCriteria.title]: '12.2.3 Effective communication',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accessible documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '12.2.4',\n [$successCriteria.title]: '12.2.4 Accessible documentation',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Relay services requirements',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1',\n [$successCriteria.title]: '13.1 Relay services requirements',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text relay services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1.2',\n [$successCriteria.title]: '13.1.2 Text relay services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Sign relay services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1.3',\n [$successCriteria.title]: '13.1.3 Sign relay services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Lip-reading relay services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1.4',\n [$successCriteria.title]: '13.1.4 Lip-reading relay services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captioned telephony services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1.5',\n [$successCriteria.title]: '13.1.5 Captioned telephony services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech to speech relay services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.1.6',\n [$successCriteria.title]: '13.1.6 Speech to speech relay services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Access to relay services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.2',\n [$successCriteria.title]: '13.2 Access to relay services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Access to emergency services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '13.3',\n [$successCriteria.title]: '13.3 Access to emergency services',\n [$successCriteria.versions]: [En301549Version.v321],\n [$successCriteria.url]: '',\n },\n];\n\nexport class EN301549 implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const en301549SuccessCriteria: ISuccessCriteria | undefined = en301549.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria): boolean => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof en301549SuccessCriteria === 'undefined') {\n return null;\n }\n return en301549SuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return en301549;\n }\n}\n","import { ISuccessCriteria, ISuccessCriteriaIndex } from './success-criteria.interface';\nimport { $successCriteria } from './constants';\nimport { Section508Version } from '../../../interfaces/audit-rule.interface';\n\nconst section508: ISuccessCriteria[] = [\n {\n [$successCriteria.handle]: 'Without Vision',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.1',\n [$successCriteria.title]: '302.1 Without Vision',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'With Limited Vision',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.2',\n [$successCriteria.title]: '302.2 With Limited Vision',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Without Perception of Color',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.3',\n [$successCriteria.title]: '302.3 Without Perception of Color',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Without Hearing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.4',\n [$successCriteria.title]: '302.4 Without Hearing',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'With Limited Hearing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.5',\n [$successCriteria.title]: '302.5 With Limited Hearing',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Without Speech',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.6',\n [$successCriteria.title]: '302.6 Without Speech',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'With Limited Manipulation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.7',\n [$successCriteria.title]: '302.7 With Limited Manipulation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'With Limited Reach and Strength',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.8',\n [$successCriteria.title]: '302.8 With Limited Reach and Strength',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'With Limited Language, Cognitive, and Learning Abilities',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '302.9',\n [$successCriteria.title]: '302.9 With Limited Language, Cognitive, and Learning Abilities',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-text Content',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.1.1',\n [$successCriteria.title]: '1.1.1 Non-text Content',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio-only and Video-only (Prerecorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.2.1',\n [$successCriteria.title]: '1.2.1 Audio-only and Video-only (Prerecorded)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (Prerecorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.2.2',\n [$successCriteria.title]: '1.2.2 Captions (Prerecorded)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Description or Media Alternative (Prerecorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.2.3',\n [$successCriteria.title]: '1.2.3 Audio Description or Media Alternative (Prerecorded)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Info and Relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.3.1',\n [$successCriteria.title]: '1.3.1 Info and Relationships',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Meaningful Sequence',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.3.2',\n [$successCriteria.title]: '1.3.2 Meaningful Sequence',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Sensory Characteristics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.3.3',\n [$successCriteria.title]: '1.3.3 Sensory Characteristics',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Use of Color',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.4.1',\n [$successCriteria.title]: '1.4.1 Use of Color',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.4.2',\n [$successCriteria.title]: '1.4.2 Audio Control',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Keyboard',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.1.1',\n [$successCriteria.title]: '2.1.1 Keyboard',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No Keyboard Trap',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.1.2',\n [$successCriteria.title]: '2.1.2 No Keyboard Trap',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Timing Adjustable',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.2.1',\n [$successCriteria.title]: '2.2.1 Timing Adjustable',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pause, Stop, Hide',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.2.2',\n [$successCriteria.title]: '2.2.2 Pause, Stop, Hide',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Three Flashes or Below Threshold',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.3.1',\n [$successCriteria.title]: '2.3.1 Three Flashes or Below Threshold',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Bypass Blocks',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.1',\n [$successCriteria.title]: '2.4.1 Bypass Blocks',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Page Titled',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.2',\n [$successCriteria.title]: '2.4.2 Page Titled',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus Order',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.3',\n [$successCriteria.title]: '2.4.3 Focus Order',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Link Purpose (In Context)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.4',\n [$successCriteria.title]: '2.4.4 Link Purpose (In Context)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of Page',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.1.1',\n [$successCriteria.title]: '3.1.1 Language of Page',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On Focus',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.2.1',\n [$successCriteria.title]: '3.2.1 On Focus',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'On Input',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.2.2',\n [$successCriteria.title]: '3.2.2 On Input',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error Identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.3.1',\n [$successCriteria.title]: '3.3.1 Error Identification',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Labels or Instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.3.2',\n [$successCriteria.title]: '3.3.2 Labels or Instructions',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Parsing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.1.1',\n [$successCriteria.title]: '4.1.1 Parsing',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Name, Role, Value',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '4.1.2',\n [$successCriteria.title]: '4.1.2 Name, Role, Value',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Captions (Live)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.2.4',\n [$successCriteria.title]: '1.2.4 Captions (Live)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Description (Prerecorded)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.2.5',\n [$successCriteria.title]: '1.2.5 Audio Description (Prerecorded)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Contrast (Minimum)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.4.3',\n [$successCriteria.title]: '1.4.3 Contrast (Minimum)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Resize Text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.4.4',\n [$successCriteria.title]: '1.4.4 Resize Text',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Images of Text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '1.4.5',\n [$successCriteria.title]: '1.4.5 Images of Text',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Multiple Ways',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.5',\n [$successCriteria.title]: '2.4.5 Multiple Ways',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Headings and Labels',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.6',\n [$successCriteria.title]: '2.4.6 Headings and Labels',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus Visible',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '2.4.7',\n [$successCriteria.title]: '2.4.7 Focus Visible',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Language of Parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.1.2',\n [$successCriteria.title]: '3.1.2 Language of Parts',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Consistent Navigation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.2.3',\n [$successCriteria.title]: '3.2.3 Consistent Navigation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Consistent Identification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.2.4',\n [$successCriteria.title]: '3.2.4 Consistent Identification',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error Suggestion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.3.3',\n [$successCriteria.title]: '3.3.3 Error Suggestion',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Error Prevention (Legal, Financial, Data)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '3.3.4',\n [$successCriteria.title]: '3.3.4 Error Prevention (Legal, Financial, Data)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 1 Conformance Level',\n [$successCriteria.level]: '',\n [$successCriteria.num]: 'CR 1 Conformance Level',\n [$successCriteria.title]: 'Conformance Requirement 1 Conformance Level',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 2 Full pages',\n [$successCriteria.level]: '',\n [$successCriteria.num]: 'CR 2 Full pages',\n [$successCriteria.title]: 'Conformance Requirement 2 Full pages',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 3 Complete processes',\n [$successCriteria.level]: '',\n [$successCriteria.num]: 'CR 3 Complete processes',\n [$successCriteria.title]: 'Conformance Requirement 3 Complete processes',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.level]: '',\n [$successCriteria.num]: 'CR 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.title]: 'Conformance Requirement 4 Only Accessibility-Supported Ways of Using Technologies',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Conformance Requirement 5 Non-Interference',\n [$successCriteria.level]: '',\n [$successCriteria.num]: 'CR 5 Non-Interference',\n [$successCriteria.title]: 'Conformance Requirement 5 Non-Interference',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed Functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402',\n [$successCriteria.title]: '402 Closed Functionality',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.1',\n [$successCriteria.title]: '402.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech-Output Enabled',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2',\n [$successCriteria.title]: '402.2 Speech-Output Enabled',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Information Displayed On-Screen',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2.1',\n [$successCriteria.title]: '402.2.1 Information Displayed On-Screen',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Transactional Outputs',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2.2',\n [$successCriteria.title]: '402.2.2 Transactional Outputs',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Speech Delivery Type and Coordination',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2.3',\n [$successCriteria.title]: '402.2.3 Speech Delivery Type and Coordination',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User Control',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2.4',\n [$successCriteria.title]: '402.2.4 User Control',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Braille Instructions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.2.5',\n [$successCriteria.title]: '402.2.5 Braille Instructions',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Volume',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.3',\n [$successCriteria.title]: '402.3 Volume',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Private Listening',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.3.1',\n [$successCriteria.title]: '402.3.1 Private Listening',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Non-private Listening',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.3.2',\n [$successCriteria.title]: '402.3.2 Non-private Listening',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Characters on Display Screens',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.4',\n [$successCriteria.title]: '402.4 Characters on Display Screens',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Characters on Variable Message Signs',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '402.5',\n [$successCriteria.title]: '402.5 Characters on Variable Message Signs',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Biometrics',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '403',\n [$successCriteria.title]: '403 Biometrics',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '403.1',\n [$successCriteria.title]: '403.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of Information Provided for Accessibility',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '404',\n [$successCriteria.title]: '404 Preservation of Information Provided for Accessibility',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '404.1',\n [$successCriteria.title]: '404.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Privacy',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '405',\n [$successCriteria.title]: '405 Privacy',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '405.1',\n [$successCriteria.title]: '405.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Standard Connections',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '406',\n [$successCriteria.title]: '406 Standard Connections',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '406.1',\n [$successCriteria.title]: '406.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operable Parts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407',\n [$successCriteria.title]: '407 Operable Parts',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Contrast',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.2',\n [$successCriteria.title]: '407.2 Contrast',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Input Controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.3',\n [$successCriteria.title]: '407.3 Input Controls',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Tactilely Discernible',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.3.1',\n [$successCriteria.title]: '407.3.1 Tactilely Discernible',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Alphabetic Keys',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.3.2',\n [$successCriteria.title]: '407.3.2 Alphabetic Keys',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Numeric Keys',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.3.3',\n [$successCriteria.title]: '407.3.3 Numeric Keys',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Key Repeat',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.4',\n [$successCriteria.title]: '407.4 Key Repeat',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Timed Response',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.5',\n [$successCriteria.title]: '407.5 Timed Response',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.6',\n [$successCriteria.title]: '407.6 Operation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Tickets, Fare Cards, and Keycards',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.7',\n [$successCriteria.title]: '407.7 Tickets, Fare Cards, and Keycards',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Reach Height and Depth',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8',\n [$successCriteria.title]: '407.8 Reach Height and Depth',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Vertical Reference Plane',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.1',\n [$successCriteria.title]: '407.8.1 Vertical Reference Plane',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Vertical Plane for Side Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.1.1',\n [$successCriteria.title]: '407.8.1.1 Vertical Plane for Side Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Vertical Plane for Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.1.2',\n [$successCriteria.title]: '407.8.1.2 Vertical Plane for Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Side Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.2',\n [$successCriteria.title]: '407.8.2 Side Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed Side Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.2.1',\n [$successCriteria.title]: '407.8.2.1 Unobstructed Side Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed Side Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.2.2',\n [$successCriteria.title]: '407.8.2.2 Obstructed Side Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.3',\n [$successCriteria.title]: '407.8.3 Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Unobstructed Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.3.1',\n [$successCriteria.title]: '407.8.3.1 Unobstructed Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Obstructed Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.3.2',\n [$successCriteria.title]: '407.8.3.2 Obstructed Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Operable Part Height for ICT with Obstructed Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.3.2.1',\n [$successCriteria.title]: '407.8.3.2.1 Operable Part Height for ICT with Obstructed Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Knee and Toe Space under ICT with Obstructed Forward Reach',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '407.8.3.2.2',\n [$successCriteria.title]: '407.8.3.2.2 Knee and Toe Space under ICT with Obstructed Forward Reach',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Display Screens',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '408',\n [$successCriteria.title]: '408 Display Screens',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Visibility',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '408.2',\n [$successCriteria.title]: '408.2 Visibility',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Flashing',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '408.3',\n [$successCriteria.title]: '408.3 Flashing',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Status Indicators',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '409',\n [$successCriteria.title]: '409 Status Indicators',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '409.1',\n [$successCriteria.title]: '409.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Color Coding',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '410',\n [$successCriteria.title]: '410 Color Coding',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '410.1',\n [$successCriteria.title]: '410.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audible Signals',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '411',\n [$successCriteria.title]: '411 Audible Signals',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'General',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '411.1',\n [$successCriteria.title]: '411.1 General',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'ICT with Two-Way Voice Communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412',\n [$successCriteria.title]: '412 ICT with Two-Way Voice Communication',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Volume Gain',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.2',\n [$successCriteria.title]: '412.2 Volume Gain',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Volume Gain for Wireline Telephones',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.2.1',\n [$successCriteria.title]: '412.2.1 Volume Gain for Wireline Telephones',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Volume Gain for Non-Wireline ICT',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.2.2',\n [$successCriteria.title]: '412.2.2 Volume Gain for Non-Wireline ICT',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Interference Reduction and Magnetic Coupling',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.3',\n [$successCriteria.title]: '412.3 Interference Reduction and Magnetic Coupling',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Wireless Handsets',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.3.1',\n [$successCriteria.title]: '412.3.1 Wireless Handsets',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Wireline Handsets',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.3.2',\n [$successCriteria.title]: '412.3.2 Wireline Handsets',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Digital Encoding of Speech',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.4',\n [$successCriteria.title]: '412.4 Digital Encoding of Speech',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Real-Time Text Functionality',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.5',\n [$successCriteria.title]: '412.5 Real-Time Text Functionality',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caller ID',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.6',\n [$successCriteria.title]: '412.6 Caller ID',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Video Communication',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.7',\n [$successCriteria.title]: '412.7 Video Communication',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Legacy TTY Support',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.8',\n [$successCriteria.title]: '412.8 Legacy TTY Support',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'TTY Connectability',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.8.1',\n [$successCriteria.title]: '412.8.1 TTY Connectability',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Voice and Hearing Carry Over',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.8.2',\n [$successCriteria.title]: '412.8.2 Voice and Hearing Carry Over',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Signal Compatibility',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.8.3',\n [$successCriteria.title]: '412.8.3 Signal Compatibility',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Voice Mail and Other Messaging Systems',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '412.8.4',\n [$successCriteria.title]: '412.8.4 Voice Mail and Other Messaging Systems',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Closed Caption Processing Technologies',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '413',\n [$successCriteria.title]: '413 Closed Caption Processing Technologies',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Decoding and Display of Closed Captions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '413.1.1',\n [$successCriteria.title]: '413.1.1 Decoding and Display of Closed Captions',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Pass-Through of Closed Caption Data',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '413.1.2',\n [$successCriteria.title]: '413.1.2 Pass-Through of Closed Caption Data',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Description Processing Technologies',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '414',\n [$successCriteria.title]: '414 Audio Description Processing Technologies',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Digital Television Tuners',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '414.1.1',\n [$successCriteria.title]: '414.1.1 Digital Television Tuners',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Other ICT',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '414.1.2',\n [$successCriteria.title]: '414.1.2 Other ICT',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User Controls for Captions and Audio Descriptions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '415',\n [$successCriteria.title]: '415 User Controls for Captions and Audio Descriptions',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caption Controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '415.1.1',\n [$successCriteria.title]: '415.1.1 Caption Controls',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Description Controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '415.1.2',\n [$successCriteria.title]: '415.1.2 Audio Description Controls',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Scope – Incorporation of WCAG 2.0 AA',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '501.1',\n [$successCriteria.title]: '501.1 Scope – Incorporation of WCAG 2.0 AA',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Interoperability with Assistive Technology',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502',\n [$successCriteria.title]: '502 Interoperability with Assistive Technology',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User Control of Accessibility Features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.2.1',\n [$successCriteria.title]: '502.2.1 User Control of Accessibility Features',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'No Disruption of Accessibility Features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.2.2',\n [$successCriteria.title]: '502.2.2 No Disruption of Accessibility Features',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accessibility Services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3',\n [$successCriteria.title]: '502.3 Accessibility Services',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Object Information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.1',\n [$successCriteria.title]: '502.3.1 Object Information',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modification of Object Information',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.2',\n [$successCriteria.title]: '502.3.2 Modification of Object Information',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Row, Column, and Headers',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.3',\n [$successCriteria.title]: '502.3.3 Row, Column, and Headers',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Values',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.4',\n [$successCriteria.title]: '502.3.4 Values',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modification of Values',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.5',\n [$successCriteria.title]: '502.3.5 Modification of Values',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Label Relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.6',\n [$successCriteria.title]: '502.3.6 Label Relationships',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Hierarchical Relationships',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.7',\n [$successCriteria.title]: '502.3.7 Hierarchical Relationships',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.8',\n [$successCriteria.title]: '502.3.8 Text',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modification of Text',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.9',\n [$successCriteria.title]: '502.3.9 Modification of Text',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'List of Actions',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.10',\n [$successCriteria.title]: '502.3.10 List of Actions',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Actions on Objects',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.11',\n [$successCriteria.title]: '502.3.11 Actions on Objects',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Focus Cursor',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.12',\n [$successCriteria.title]: '502.3.12 Focus Cursor',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Modification of Focus Cursor',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.13',\n [$successCriteria.title]: '502.3.13 Modification of Focus Cursor',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Event Notification',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.3.14',\n [$successCriteria.title]: '502.3.14 Event Notification',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Platform Accessibility Features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '502.4',\n [$successCriteria.title]: '502.4 Platform Accessibility Features',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Applications',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503',\n [$successCriteria.title]: '503 Applications',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User Preferences',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503.2',\n [$successCriteria.title]: '503.2 User Preferences',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Alternative User Interfaces',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503.3',\n [$successCriteria.title]: '503.3 Alternative User Interfaces',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'User Controls for Captions and Audio Description',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503.4',\n [$successCriteria.title]: '503.4 User Controls for Captions and Audio Description',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Caption Controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503.4.1',\n [$successCriteria.title]: '503.4.1 Caption Controls',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Audio Description Controls',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '503.4.2',\n [$successCriteria.title]: '503.4.2 Audio Description Controls',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Authoring Tools',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504',\n [$successCriteria.title]: '504 Authoring Tools',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Content Creation or Editing (if not authoring tool, enter “not applicable”)',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504.2',\n [$successCriteria.title]: '504.2 Content Creation or Editing (if not authoring tool, enter “not applicable”)',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Preservation of Information Provided for Accessibility in Format Conversion',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504.2.1',\n [$successCriteria.title]: '504.2.1 Preservation of Information Provided for Accessibility in Format Conversion',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'PDF Export',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504.2.2',\n [$successCriteria.title]: '504.2.2 PDF Export',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Prompts',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504.3',\n [$successCriteria.title]: '504.3 Prompts',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Templates',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '504.4',\n [$successCriteria.title]: '504.4 Templates',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Scope',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '601.1',\n [$successCriteria.title]: '601.1 Scope',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Support Documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '602',\n [$successCriteria.title]: '602 Support Documentation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accessibility and Compatibility Features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '602.2',\n [$successCriteria.title]: '602.2 Accessibility and Compatibility Features',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Electronic Support Documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '602.3',\n [$successCriteria.title]: '602.3 Electronic Support Documentation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Alternate Formats for Non-Electronic Support Documentation',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '602.4',\n [$successCriteria.title]: '602.4 Alternate Formats for Non-Electronic Support Documentation',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Support Services',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '603',\n [$successCriteria.title]: '603 Support Services',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Information on Accessibility and Compatibility Features',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '603.2',\n [$successCriteria.title]: '603.2 Information on Accessibility and Compatibility Features',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n {\n [$successCriteria.handle]: 'Accommodation of Communication Needs',\n [$successCriteria.level]: '',\n [$successCriteria.num]: '603.3',\n [$successCriteria.title]: '603.3 Accommodation of Communication Needs',\n [$successCriteria.versions]: [Section508Version.v2018],\n [$successCriteria.url]: '',\n },\n];\n\nexport class Section508 implements ISuccessCriteriaIndex {\n public get(num: string): ISuccessCriteria {\n const section508SuccessCriteria: ISuccessCriteria | undefined = section508.find(\n (bestPracticeSuccessCriteria: ISuccessCriteria): boolean => bestPracticeSuccessCriteria.num === num,\n );\n if (typeof section508SuccessCriteria === 'undefined') {\n return null;\n }\n return section508SuccessCriteria;\n }\n\n public getAll(): ISuccessCriteria[] {\n return section508;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { uniqBy } from 'lodash';\n\nimport { AuditStandards } from '../../../shared/constants/audit-standard';\nimport {\n ISuccessCriteria,\n ISuccessCriteriaIndex,\n} from '../../../shared/audits/definitions/success-criteria/success-criteria.interface';\nimport { Legacy } from '../../../shared/audits/definitions/success-criteria/legacy';\nimport { Wcag } from '../../../shared/audits/definitions/success-criteria/wcag';\nimport { Axe } from '../../../shared/audits/definitions/success-criteria/axe';\nimport { Aslint } from '../../../shared/audits/definitions/success-criteria/aslint';\nimport { Wave } from '../../../shared/audits/definitions/success-criteria/wave';\nimport { NotApplicable } from '../../../shared/audits/definitions/success-criteria/notApplicable';\nimport { WcagCr } from '../../../shared/audits/definitions/success-criteria/wcag-cr';\nimport { EN301549 } from '../../../shared/audits/definitions/success-criteria/en-301-549';\nimport { Section508 } from '../../../shared/audits/definitions/success-criteria/section-508';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { $successCriteria } from '../../../shared/audits/definitions/success-criteria/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SuccessCriteriaService {\n private readonly legacySuccessCriteria: ISuccessCriteriaIndex;\n private standardToSuccessCriteriaIndex: Record;\n\n constructor() {\n this.legacySuccessCriteria = new Legacy();\n this.standardToSuccessCriteriaIndex = {\n [AuditStandards.wcag]: new Wcag(),\n [AuditStandards.wcagCr]: new WcagCr(),\n [AuditStandards.axe]: new Axe(),\n [AuditStandards.essential]: new Aslint(),\n [AuditStandards.wave]: new Wave(),\n [AuditStandards.en301549]: new EN301549(),\n [AuditStandards.section508]: new Section508(),\n [AuditStandards.css]: this.legacySuccessCriteria,\n [AuditStandards.html]: this.legacySuccessCriteria,\n [AuditStandards.notApplicable]: new NotApplicable(),\n };\n }\n\n public getSuccessCriteriaFromStandard(standardIdentifier: AuditStandards, identifier: string): ISuccessCriteria | null {\n return this.standardToSuccessCriteriaIndex[standardIdentifier].get(identifier);\n }\n\n public getSuccessCriteriaListFromStandards(\n identifiers: string[],\n standards: AuditStandards[] = [AuditStandards.wcag],\n ): ISuccessCriteria[] {\n return identifiers\n .map((identifier: string): ISuccessCriteria | null => this.getSuccessCriteriaFromStandards(identifier, standards))\n .filter(SharedCommonUtility.notNullish);\n }\n\n public getSuccessCriteriaFromStandards(identifier: string, standards: AuditStandards[]): ISuccessCriteria | null {\n if (identifier === AuditStandards.notApplicable) {\n return this.getSuccessCriteriaFromStandard(AuditStandards.notApplicable, identifier);\n }\n\n for (const standard of standards) {\n const successCriteria: ISuccessCriteria = this.getSuccessCriteriaFromStandard(standard, identifier);\n if (SharedCommonUtility.notNullish(successCriteria)) {\n return successCriteria;\n }\n }\n\n return null;\n }\n\n public getAllSuccessCriteriaFromStandard(standardIdentifier: AuditStandards): ISuccessCriteria[] {\n return this.standardToSuccessCriteriaIndex[standardIdentifier].getAll();\n }\n\n /**\n * Gets all WCAG and Not applicable success criterias in raw format.\n */\n public getAllWCAGWithNACriteriaFromStandard(): ISuccessCriteria[] {\n return [\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.wcag),\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.notApplicable),\n ].filter((criteria: ISuccessCriteria | null): boolean => criteria !== null);\n }\n\n /**\n * Gets all WCAG, non-WCAG and Not applicable success criterias in raw format.\n */\n public getAllSupportedCriteriaFromStandard(): ISuccessCriteria[] {\n const result: ISuccessCriteria[] = [\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.wcag),\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.wcagCr),\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.en301549),\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.section508),\n ...this.getAllSuccessCriteriaFromStandard(AuditStandards.notApplicable),\n ].filter((criteria: ISuccessCriteria | null): boolean => criteria !== null);\n return uniqBy(result, $successCriteria.num);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, skip } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { PackageNames } from '../../../shared/constants/packaging';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantPackageService {\n private readonly packageSubject: BehaviorSubject;\n private readonly packageChange$: Observable;\n\n constructor() {\n this.packageSubject = new BehaviorSubject(null);\n this.packageChange$ = this.packageSubject.pipe(filter(SharedCommonUtility.notNullish), distinctUntilChanged(), skip(1));\n }\n\n public get tenantPackageChange$(): Observable {\n return this.packageChange$;\n }\n\n public get tenantPackage(): PackageNames {\n return this.packageSubject.value;\n }\n\n public set tenantPackage(value: PackageNames) {\n this.packageSubject.next(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport {\n IUpsertCustomSeverityRequest,\n ISwapCustomSeveritiesRanksRequest,\n ICustomSeveritiesObj,\n ICustomSeverity,\n} from '../../../../shared/interfaces/tenant.interface';\nimport { $severity, CustomSeverityKeyType } from '../../../../shared/constants/accessibility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantSeveritiesApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /severities\n public getAll(): Observable {\n const url: string = this.restBuilder.create().customSeverities().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /severities\n public create(createSeveritiesData: IUpsertCustomSeverityRequest): Observable {\n const url: string = this.restBuilder.create().customSeverities().getApiUrl();\n\n return this.httpClient.post(url, createSeveritiesData);\n }\n\n // PUT /severities/:severityKey\n public update(severityKey: $severity, updateSeveritiesData: IUpsertCustomSeverityRequest): Observable {\n const url: string = this.restBuilder.create().customSeverities(severityKey).getApiUrl();\n\n return this.httpClient.put(url, updateSeveritiesData);\n }\n\n // PUT /severities/swap-ranks\n public swapRanks(updateSeveritiesData: ISwapCustomSeveritiesRanksRequest): Observable {\n const url: string = this.restBuilder.create().customSeverities().swapRanks().getApiUrl();\n\n return this.httpClient.put(url, updateSeveritiesData);\n }\n\n // POST /severities/:severityKey/delete-and-reassign\n public deleteAndReassignSeverity(toDelete: CustomSeverityKeyType, reassignTo: $severity): Observable {\n const url: string = this.restBuilder.create().customSeverities(toDelete).deleteAndReassign().getApiUrl();\n\n return this.httpClient.post(url, { reassignTo });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Icons } from '@levelaccess/design-system';\n\nimport { TenantSeveritiesApi } from './rest/tenant-severities.api';\nimport {\n IUpsertCustomSeverityRequest,\n ISwapCustomSeveritiesRanksRequest,\n ICustomSeveritiesMap,\n ICustomSeveritiesObj,\n ICustomSeverity,\n ICustomSeverityWithSeverityKey,\n} from '../../../shared/interfaces/tenant.interface';\nimport { $severity, CustomSeverityKeyType, systemSeverities } from '../../../shared/constants/accessibility';\nimport { $customSeverity } from '../../../shared/constants/tenant';\nimport { SeverityClass } from '../interfaces/custom-severities.interface';\n\nexport interface ISeveritiesClassAndIcon {\n class: SeverityClass;\n icon: Icons;\n}\n\nexport type ISeveritiesClassAndIconMap = Map<$severity, ISeveritiesClassAndIcon>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantSeveritiesService {\n private readonly systemSeverityClassAndIconByKeys: ISeveritiesClassAndIconMap = new Map([\n [$severity.critical, { class: SeverityClass.critical, icon: Icons.CircleMinus }],\n [$severity.high, { class: SeverityClass.high, icon: Icons.ChevronsUp }],\n [$severity.low, { class: SeverityClass.low, icon: Icons.ChevronsDown }],\n ]);\n private readonly customSeverityClassAndIconSortedByRank: ISeveritiesClassAndIcon[] = [\n { class: SeverityClass.moderate, icon: Icons.ChevronUp },\n { class: SeverityClass.minor, icon: Icons.ChevronDown },\n ];\n\n public constructor(private tenantSeveritiesApi: TenantSeveritiesApi) {}\n\n public getSeverityKeysSortedByRank(severitiesMap: ICustomSeveritiesMap): $severity[] {\n const severityArray: ICustomSeverityWithSeverityKey[] = [];\n\n severitiesMap.forEach((value: ICustomSeverity, key: $severity): void => {\n severityArray.push({ ...value, severityKey: key });\n });\n\n severityArray.sort(\n (a: ICustomSeverityWithSeverityKey, b: ICustomSeverityWithSeverityKey): number =>\n b[$customSeverity.rank] - a[$customSeverity.rank],\n );\n\n return severityArray.map((item: ICustomSeverityWithSeverityKey) => item.severityKey);\n }\n\n public getCustomSeverityKeysSortedByRank(severitiesMap: ICustomSeveritiesMap): $severity[] {\n return this.getSeverityKeysSortedByRank(severitiesMap).filter(TenantSeveritiesService.isCustomSeverity);\n }\n\n public getSeverityClassAndIconByKeys(severitiesMap: ICustomSeveritiesMap): ISeveritiesClassAndIconMap {\n const customSeverityKeysSortedByRank: $severity[] = this.getCustomSeverityKeysSortedByRank(severitiesMap);\n const severityClassAndIconByKeys: ISeveritiesClassAndIconMap = new Map(this.systemSeverityClassAndIconByKeys);\n\n for (const [idx, customSeverity] of customSeverityKeysSortedByRank.entries()) {\n severityClassAndIconByKeys.set(customSeverity, this.customSeverityClassAndIconSortedByRank[idx]);\n }\n\n return severityClassAndIconByKeys;\n }\n\n public getAll(): Observable {\n return this.tenantSeveritiesApi\n .getAll()\n .pipe(map((customSeverities: ICustomSeveritiesObj) => new Map(Object.entries(customSeverities)) as ICustomSeveritiesMap));\n }\n\n public create(createSeveritiesData: IUpsertCustomSeverityRequest): Observable {\n return this.tenantSeveritiesApi.create(createSeveritiesData);\n }\n\n public update(severityKey: $severity, updateSeveritiesData: IUpsertCustomSeverityRequest): Observable {\n return this.tenantSeveritiesApi.update(severityKey, updateSeveritiesData);\n }\n\n public swapRanks(updateSeveritiesData: ISwapCustomSeveritiesRanksRequest): Observable {\n return this.tenantSeveritiesApi.swapRanks(updateSeveritiesData);\n }\n\n public deleteAndReassignSeverity(toDelete: CustomSeverityKeyType, reassignTo: $severity): Observable {\n return this.tenantSeveritiesApi.deleteAndReassignSeverity(toDelete, reassignTo);\n }\n\n public static isCustomSeverity(severity: $severity): boolean {\n return !systemSeverities.includes(severity);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport {\n ICreateTenantRequest,\n ITenant,\n ITenantsResponse,\n IEditTenantRequest,\n ITenantSsoConfig,\n ITenantUser,\n IAssignAcademyRolesRequest,\n IBatchUserIdRequest,\n ITenantInfoWithPackageInfo,\n ITenantWithPackageId,\n ITenantDigitalPropertyLimitState,\n ITenantScimConfig,\n ITenantDigitalPropertyAutomatedFlowLimit,\n ITenantDigitalPropertyUserWaySiteState,\n} from '../../../../shared/interfaces/tenant.interface';\nimport { IWorkspaceWithDpCount } from '../../../../shared/interfaces/workspace.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { Api, ApiQueryOption } from '../../../../shared/constants/api';\nimport { IScannableDocumentPdfPagesTestStateResponse } from '../../../../shared/interfaces/scannable-document.interface';\nimport { AcademyUserRole } from '../../../../shared/constants/academy-user';\nimport { ITenantMetrics } from '../../../../shared/interfaces/tenant-metrics.interface';\nimport { AccessibilityAuditToolNames } from '../../../../shared/constants/audit-tool';\nimport {\n IGetDigitalPropertyMetricsSnapshotsQuery,\n IPaginatedDigitalPropertyMetricsList,\n} from '../../../../shared/interfaces/digital-property-metrics.interface';\nimport { $tenant } from '../../../../shared/constants/tenant';\nimport { IOrganizationReportResponse } from '../../../../shared/interfaces/async-report.interface';\nimport { FileExtension } from '../../../../shared/constants/file-extension';\nimport { DashboardDataFrequency } from '../../../../shared/interfaces/ws-dashboard.interface';\nimport { IUserWaySSOLink } from '../../../../shared/interfaces/userway-integration.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TenantApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /admin/tenants/:tenantId\n public getTenant(tenantId: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants/:tenantId\n public getTenantFromTenantedScope(tenantId: string): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants\n public getUserTenantsFromTenantedScope(): Observable {\n const url: string = this.restBuilder.create().tenant().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // PUT /admin/tenants/:tenantId\n public updateTenant(tenantId: string, updateRequest: IEditTenantRequest): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).getApiUrl();\n return this.httpClient.put(url, updateRequest);\n }\n\n // GET /admin/tenants/:tenantId/workspaces\n public getWorkspaces(tenantId: string, searchString?: string): Observable {\n const urlBuilder: RestBuilder = this.restBuilder.create().admin().tenant(tenantId).workspaces();\n if (!SharedCommonUtility.isNullish(searchString)) {\n urlBuilder.query(\n new HttpParams({\n fromObject: {\n [Api.clientSearchTerm]: searchString,\n },\n }),\n );\n }\n return this.httpClient.get(urlBuilder.getApiUrl());\n }\n\n // GET /admin/tenants\n public getTenants(\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n const url: string = this.restBuilder.create().admin().tenant().getApiUrl();\n const httpParams: HttpParams = this.buildGetTenantsHttpParams(skip, limit, term, sortBy, direction);\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /admin/tenants/my\n public getMyTenants(\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n const url: string = this.restBuilder.create().admin().tenant().my().getApiUrl();\n const httpParams: HttpParams = this.buildGetTenantsHttpParams(skip, limit, term, sortBy, direction);\n\n return this.httpClient.get(url, { params: httpParams });\n }\n\n private buildGetTenantsHttpParams(\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): HttpParams {\n const params: { [param: string]: any } = {};\n\n if (typeof limit === 'number') {\n params[ApiQueryOption.limit] = String(limit);\n }\n\n if (typeof skip === 'number') {\n params[ApiQueryOption.skip] = String(skip);\n }\n\n if (typeof sortBy === 'string') {\n params[ApiQueryOption.sortBy] = sortBy;\n }\n\n if (typeof direction === 'string') {\n params[ApiQueryOption.direction] = direction;\n }\n\n if (term?.length > 0) {\n params[ApiQueryOption.term] = window.encodeURIComponent(term.trim());\n }\n\n return new HttpParams({ fromObject: params });\n }\n\n // POST /admin/tenants\n public createTenant(createRequest: ICreateTenantRequest): Observable {\n const url: string = this.restBuilder.create().admin().tenant().getApiUrl();\n\n return this.httpClient.post(url, createRequest);\n }\n\n // PUT /admin/tenants/:tenantId/sso-config\n public setSsoConfig(tenantId: string, ssoConfig: ITenantSsoConfig): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).ssoConfig().getApiUrl();\n return this.httpClient.put(url, ssoConfig);\n }\n\n // DELETE /admin/tenants/:tenantId/sso-config?reason=Reason to delete\n public removeSsoConfig(tenantId: string, reason: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).ssoConfig().getApiUrl();\n return this.httpClient.delete(url, { params: { reason } });\n }\n\n // GET /admin/tenants/:tenantId/pdf-pages-test-state\n public getPdfPagesTestState(tenantId: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).pdfPagesTestState().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /admin/tenants/:tenantId/users\n public getTenantUsers(tenantId: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).users().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // PUT /admin/tenants/:tenantId/users/academy/activate\n public activateUserInAcademy(tenantId: string, userId: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).users().academy().activate().getApiUrl();\n return this.httpClient.put(url, { userId } as IBatchUserIdRequest);\n }\n\n // PUT /admin/tenants/:tenantId/users/academy/deactivate\n public deactivateUserInAcademy(tenantId: string, userId: string): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).users().academy().deactivate().getApiUrl();\n return this.httpClient.put(url, { userId } as IBatchUserIdRequest);\n }\n\n // PUT /admin/tenants/:tenantId/users/academy/roles\n public setUserRolesInAcademy(tenantId: string, userId: string, roles: AcademyUserRole[]): Observable {\n const url: string = this.restBuilder.create().admin().tenant(tenantId).users().academy().roles().getApiUrl();\n return this.httpClient.put(url, { userId, roles } as IAssignAcademyRolesRequest);\n }\n\n // GET /tenants/:tenantId/digital-property-limit-state\n public getDigitalPropertyLimitState(tenantId: string): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).digitalPropertyLimitState().getApiUrl();\n return this.httpClient.get(url);\n }\n\n public getDigitalPropertyAutomatedFlowLimit(): Observable {\n const url: string = this.restBuilder.create().tenant().current().digitalPropertyAutomatedFlowLimit().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants/:tenantId/userway_site_limit_state\n public getDigitalPropertyUserWaySiteLimitState(): Observable {\n const url: string = this.restBuilder.create().tenant().current().digitalPropertyUserWaySiteLimitState().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants/:tenantId/dashboard/metrics\n public getTenantMetrics(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n frequency: DashboardDataFrequency,\n ): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).dashboard().metrics().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: { [ApiQueryOption.toolName]: toolName, [ApiQueryOption.frequency]: frequency },\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // GET /tenants/:tenantId/dashboard/digital-property-metrics\n public getDigitalPropertyMetricsSnapshots(\n tenantId: string,\n params: IGetDigitalPropertyMetricsSnapshotsQuery,\n ): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).dashboard().digitalPropertyMetrics().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: { ...params },\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // PUT /tenants/current/cloudsmith-token\n public getOrCreateTenantEntitlementToken(): Observable> {\n const url: string = this.restBuilder.create().tenant().current().cloudsmithToken().getApiUrl();\n return this.httpClient.put>(url, {});\n }\n\n // POST /tenants/current/scanning-agent/generate-api-key\n public generateScanningAgentEncryptionKey(): Observable {\n const url: string = this.restBuilder.create().tenant().current().scanningAgent().generateEncryptionKey().getApiUrl();\n return this.httpClient.post(url, {});\n }\n\n // GET /tenants/current/cloudsmith-token\n public getTenantEntitlementToken(): Observable> {\n const url: string = this.restBuilder.create().tenant().current().cloudsmithToken().getApiUrl();\n return this.httpClient.get>(url);\n }\n\n // GET /tenants/:tenantId/dashboard/report\n public downloadOrganizationReport(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n fileExtension: FileExtension,\n ): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).dashboard().report().getApiUrl();\n const httpParams: HttpParams = new HttpParams({\n fromObject: {\n [ApiQueryOption.toolName]: toolName,\n [ApiQueryOption.format]: fileExtension,\n },\n });\n return this.httpClient.get(url, { params: httpParams });\n }\n\n // POST /tenants/:tenantId/dashboard/report\n public generateOrganizationReport(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n fileExtension: FileExtension,\n ): Observable {\n const url: string = this.restBuilder.create().tenant(tenantId).dashboard().report().getApiUrl();\n return this.httpClient.post(url, {\n [ApiQueryOption.toolName]: toolName,\n [ApiQueryOption.format]: fileExtension,\n });\n }\n\n // GET /tenants/current/scim-config\n public getScimConfig(): Observable {\n const url: string = this.restBuilder.create().tenant().current().scimConfig().getApiUrl();\n\n return this.httpClient.get(url);\n }\n\n // POST /tenants/current/scim-config\n public setScimConfig(config: ITenantScimConfig): Observable {\n const url: string = this.restBuilder.create().tenant().current().scimConfig().getApiUrl();\n\n return this.httpClient.put(url, config);\n }\n\n // GET /tenants/current/userway-sso-link\n public generateUserWaySSOLink(): Observable {\n const url: string = this.restBuilder.create().tenant().current().userWaySSOLink().getApiUrl();\n\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { ITenant, IUpdateTenantAcademyRequest } from '../../../../shared/interfaces/tenant.interface';\nimport {\n IAcademySsoLink,\n ISkilljarSignupField,\n IThoughtIndustriesTag,\n} from '../../../../shared/interfaces/academy-integration.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class AcademyApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /tenants/academy/sso-link\n public generateAcademySSOLink(): Observable {\n const url: string = this.restBuilder.create().tenant().academy().ssoLink().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants/academy/available\n public isAcademyAvailable(): Observable {\n const url: string = this.restBuilder.create().tenant().academy().available().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // PUT /tenants/academy\n public updateAcademy(tenantId: string): Observable {\n const url: string = this.restBuilder.create().tenant().academy().getApiUrl();\n return this.httpClient.put(url, { tenantId } as IUpdateTenantAcademyRequest);\n }\n\n // GET /tenants/academy/content-tags?tenantId=abcef134342\n public getTenantContentTags(tenantId: string): Observable {\n const url: string = this.restBuilder.create().tenant().academy().contentTags().getApiUrl();\n return this.httpClient.get(url, { params: { tenantId } });\n }\n\n // GET /tenants/academy/available-content-tags\n public getAvailableContentTags(): Observable {\n const url: string = this.restBuilder.create().tenant().academy().availableContentTags().getApiUrl();\n return this.httpClient.get(url);\n }\n\n // GET /tenants/academy/available-groups\n public getAvailableSignupFields(): Observable {\n const url: string = this.restBuilder.create().tenant().academy().availableSignupFields().getApiUrl();\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\nimport { ISalesforceAccount } from '../../../../shared/interfaces/salesforce.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class SalesforceApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET /admin/salesforce/accounts\n public getSalesforceAccounts(): Observable {\n const url: string = this.restBuilder.create().admin().salesforce().accounts().getApiUrl();\n\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n ICreateTenantRequest,\n IEditTenantRequest,\n ITenantUser,\n ITenant,\n ITenantDigitalPropertyLimitState,\n ITenantInfoWithPackageInfo,\n ITenantScimConfig,\n ITenantsResponse,\n ITenantSsoConfig,\n ITenantWithPackageId,\n ITenantDigitalPropertyAutomatedFlowLimit,\n ITenantDigitalPropertyUserWaySiteState,\n} from '../../../shared/interfaces/tenant.interface';\nimport { TenantApi } from './rest/tenant.api';\nimport { IWorkspaceWithDpCount } from '../../../shared/interfaces/workspace.interface';\nimport { IScannableDocumentPdfPagesTestStateResponse } from '../../../shared/interfaces/scannable-document.interface';\nimport { AcademyApi } from './rest/academy.api';\nimport {\n IAcademySsoLink,\n ISkilljarSignupField,\n IThoughtIndustriesTag,\n} from '../../../shared/interfaces/academy-integration.interface';\nimport { AcademyUserRole } from '../../../shared/constants/academy-user';\nimport { ISalesforceAccount } from '../../../shared/interfaces/salesforce.interface';\nimport { SalesforceApi } from './rest/salesforce.api';\nimport { ITenantMetrics } from '../../../shared/interfaces/tenant-metrics.interface';\nimport { AccessibilityAuditToolNames } from '../../../shared/constants/audit-tool';\nimport {\n IGetDigitalPropertyMetricsSnapshotsQuery,\n IPaginatedDigitalPropertyMetricsList,\n} from '../../../shared/interfaces/digital-property-metrics.interface';\nimport { $tenant } from '../../../shared/constants/tenant';\nimport { IOrganizationReportResponse } from '../../../shared/interfaces/async-report.interface';\nimport { FileExtension } from '../../../shared/constants/file-extension';\nimport { DashboardDataFrequency } from '../../../shared/interfaces/ws-dashboard.interface';\nimport { IUserWaySSOLink } from '../../../shared/interfaces/userway-integration.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TenantService {\n public constructor(\n private tenantApi: TenantApi,\n private academyApi: AcademyApi,\n private salesforceApi: SalesforceApi,\n ) {}\n\n public getTenant(tenantId: string): Observable {\n return this.tenantApi.getTenant(tenantId);\n }\n\n public getTenantFromTenantedScope(tenantId: string): Observable {\n return this.tenantApi.getTenantFromTenantedScope(tenantId);\n }\n\n public getUserTenantsFromTenantedScope(): Observable {\n return this.tenantApi.getUserTenantsFromTenantedScope();\n }\n\n public updateTenant(tenantId: string, updateRequest: IEditTenantRequest): Observable {\n return this.tenantApi.updateTenant(tenantId, updateRequest);\n }\n\n public getWorkspaces(tenantId: string, searchString?: string): Observable {\n return this.tenantApi.getWorkspaces(tenantId, searchString);\n }\n\n public getTenants(\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n return this.tenantApi.getTenants(skip, limit, term, sortBy, direction);\n }\n\n public getMyTenants(\n skip: number = 0,\n limit: number = 0,\n term: string = '',\n sortBy?: string,\n direction?: string,\n ): Observable {\n return this.tenantApi.getMyTenants(skip, limit, term, sortBy, direction);\n }\n\n public createTenant(createRequest: ICreateTenantRequest): Observable {\n return this.tenantApi.createTenant(createRequest);\n }\n\n public setSsoConfig(tenantId: string, ssoConfig: ITenantSsoConfig): Observable {\n return this.tenantApi.setSsoConfig(tenantId, ssoConfig);\n }\n\n public removeSsoConfig(tenantId: string, reason: string): Observable {\n return this.tenantApi.removeSsoConfig(tenantId, reason);\n }\n\n public getPdfPagesTestState(tenantId: string): Observable {\n return this.tenantApi.getPdfPagesTestState(tenantId);\n }\n\n public getTenantUsers(tenantId: string): Observable {\n return this.tenantApi.getTenantUsers(tenantId);\n }\n\n public activateUserInAcademy(tenantId: string, userId: string): Observable {\n return this.tenantApi.activateUserInAcademy(tenantId, userId);\n }\n\n public deactivateUserInAcademy(tenantId: string, userId: string): Observable {\n return this.tenantApi.deactivateUserInAcademy(tenantId, userId);\n }\n\n public setUserRolesInAcademy(tenantId: string, userId: string, roles: AcademyUserRole[]): Observable {\n return this.tenantApi.setUserRolesInAcademy(tenantId, userId, roles);\n }\n\n public isAcademyAvailable(): Observable {\n return this.academyApi.isAcademyAvailable();\n }\n\n public generateAcademySSOLink(): Observable {\n return this.academyApi.generateAcademySSOLink();\n }\n\n public updateAcademy(tenantId: string): Observable {\n return this.academyApi.updateAcademy(tenantId);\n }\n\n public getTenantContentTags(tenantId: string): Observable {\n return this.academyApi.getTenantContentTags(tenantId);\n }\n\n public getAvailableContentTags(): Observable {\n return this.academyApi.getAvailableContentTags();\n }\n\n public getAvailableSignupFields(): Observable {\n return this.academyApi.getAvailableSignupFields();\n }\n\n public getSalesforceAccounts(): Observable {\n return this.salesforceApi.getSalesforceAccounts();\n }\n\n public getDigitalPropertyLimitState(tenantId: string): Observable {\n return this.tenantApi.getDigitalPropertyLimitState(tenantId);\n }\n\n public getDigitalPropertyAutomatedFlowLimit(): Observable {\n return this.tenantApi.getDigitalPropertyAutomatedFlowLimit();\n }\n\n public getDigitalPropertyUserWaySiteLimitState(): Observable {\n return this.tenantApi.getDigitalPropertyUserWaySiteLimitState();\n }\n\n public getTenantMetrics(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n frequency: DashboardDataFrequency,\n ): Observable {\n return this.tenantApi.getTenantMetrics(tenantId, toolName, frequency);\n }\n\n public getDigitalPropertyMetricsSnapshots(\n tenantId: string,\n params: IGetDigitalPropertyMetricsSnapshotsQuery,\n ): Observable {\n return this.tenantApi.getDigitalPropertyMetricsSnapshots(tenantId, params);\n }\n\n /**\n * Returns the entitlement token for the current tenant. If the tenant does not have an entitlement token\n * then one will be created. Only works in tenant environments.\n */\n public getOrCreateTenantEntitlementToken(): Observable> {\n return this.tenantApi.getOrCreateTenantEntitlementToken();\n }\n\n public generateScanningAgentEncryptionKey(): Observable {\n return this.tenantApi.generateScanningAgentEncryptionKey();\n }\n\n /**\n * Returns the entitlement token for the current tenant. Only works in tenant environments.\n * Entitlement token is possibly undefined.\n */\n public getTenantEntitlementToken(): Observable> {\n return this.tenantApi.getTenantEntitlementToken();\n }\n\n public downloadOrganizationReport(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n fileExtension: FileExtension,\n ): Observable {\n return this.tenantApi.downloadOrganizationReport(tenantId, toolName, fileExtension);\n }\n\n public generateOrganizationReport(\n tenantId: string,\n toolName: AccessibilityAuditToolNames,\n fileExtension: FileExtension,\n ): Observable {\n return this.tenantApi.generateOrganizationReport(tenantId, toolName, fileExtension);\n }\n\n // GET /tenants/current/scim_config\n public getScimConfig(): Observable {\n return this.tenantApi.getScimConfig();\n }\n\n // POST /tenants/current/scim_config\n public setScimConfig(config: ITenantScimConfig): Observable {\n return this.tenantApi.setScimConfig(config);\n }\n\n // GET /tenants/current/userway-sso-link\n public generateUserWaySSOLink(): Observable {\n return this.tenantApi.generateUserWaySSOLink();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { RestService } from './rest.service';\nimport { AppConfigService } from './app-config.service';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\nexport enum TestAutomationTools {\n 'cucumberjs' = 'cucumberjs',\n 'cucumberjvm' = 'cucumberjvm',\n 'jest' = 'jest',\n 'mocha' = 'mocha',\n 'cypress' = 'cypress',\n 'webdriverio' = 'webdriverio',\n 'extension_chrome_labe' = 'labe-browser-extension',\n 'extension_chrome_accessibility_checker' = 'accessibility-checker-browser-extension',\n 'extension_firefox' = 'ff-browser-extension',\n 'figma' = 'figma',\n 'dca_windows' = 'dca_windows',\n 'dca_mac' = 'dca_mac',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TestAutomationService {\n constructor(\n private restService: RestService,\n private configService: AppConfigService,\n private httpClient: HttpClient,\n ) {}\n\n public download(toolId: TestAutomationTools): Observable {\n return this.getToolUrl(toolId).pipe(\n switchMap((toolUrl: string): Observable => {\n return this.restService.download(toolUrl);\n }),\n );\n }\n\n public getToolUrl(toolId: TestAutomationTools): Observable {\n const downloadToolsUrl: string = this.configService.getDownloadToolsUrl();\n const downloadToolsIndexPath: string = this.configService.getDownloadToolsIndexPath();\n\n if (toolId === TestAutomationTools.dca_windows) {\n const downloadToolsDcaPath: string = this.configService.getDownloadToolsDcaPathWindows();\n if (SharedCommonUtility.isNullish(downloadToolsDcaPath)) {\n throw new Error('Unknown tool path for tool: ' + toolId);\n }\n\n return of(`${downloadToolsUrl}${downloadToolsDcaPath}`);\n }\n\n if (toolId === TestAutomationTools.dca_mac) {\n const downloadToolsDcaPath: string = this.configService.getDownloadToolsDcaPathMac();\n if (SharedCommonUtility.isNullish(downloadToolsDcaPath)) {\n throw new Error('Unknown tool path for tool: ' + toolId);\n }\n\n return of(`${downloadToolsUrl}${downloadToolsDcaPath}`);\n }\n\n return this.httpClient.get>(`${downloadToolsUrl}/${downloadToolsIndexPath}`).pipe(\n map((response: Record): string => {\n const toolPath: string = response[toolId];\n\n if (SharedCommonUtility.isNullishOrEmpty(toolPath)) {\n throw new Error('Unknown tool path for tool: ' + toolId);\n }\n return `${downloadToolsUrl}/${toolPath}`;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { AclSecurityAdapter, AclService } from './acl.service';\nimport { UserService } from './user.service';\nimport { IUserServerResponse } from '../../../shared/interfaces/user.interface';\n\n@Injectable()\nexport class UserAclService {\n constructor(\n private aclService: AclService,\n private userService: UserService,\n ) {}\n\n public createCheckAccessForCurrentUser(): Observable {\n return this.userService.userDataChanged$.pipe(\n filter((profile: IUserServerResponse): boolean => profile !== null),\n map((user: IUserServerResponse): AclSecurityAdapter => new AclSecurityAdapter(user, this.aclService)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { DigitalPropertyService } from './digital-property.service';\nimport { UserService } from './user.service';\nimport { AngularUtility } from '../utility/angular.utility';\nimport { IDigitalPropertyListItem, IDigitalPropertyType } from '../../../shared/interfaces/digital-property.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { $digitalProperty, $digitalPropertyType } from '../../../shared/constants/digital-properties';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserDigitalPropertyService {\n private _isWebDigitalProperty$: Observable;\n private _isMobileDigitalProperty$: Observable;\n private _areScansAvailable$: Observable;\n private _dpType$: Observable;\n\n constructor(\n private digitalPropertyService: DigitalPropertyService,\n private userService: UserService,\n ) {\n this.setupDigitalPropertyTypes();\n }\n\n private digitalPropertiesAndTypes$: Observable<[IDigitalPropertyListItem | null, IDigitalPropertyType[]]> = combineLatest([\n this.userService.currentDigitalProperty$,\n this.digitalPropertyService.getDigitalPropertyTypes(),\n ]).pipe(AngularUtility.shareRef());\n\n private setupDigitalPropertyTypes(): void {\n this._isWebDigitalProperty$ = this.digitalPropertiesAndTypes$.pipe(\n map(([digitalProperty, digitalPropertyTypes]: [IDigitalPropertyListItem | null, IDigitalPropertyType[]]): boolean => {\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return false;\n }\n const digitalPropertyType: IDigitalPropertyType = digitalPropertyTypes.find(\n (type: IDigitalPropertyType) => type[$digitalPropertyType._id] === digitalProperty[$digitalProperty.typeId],\n );\n return this.digitalPropertyService.isWebsiteType(digitalPropertyType);\n }),\n AngularUtility.shareRef(),\n );\n\n this._isMobileDigitalProperty$ = this.digitalPropertiesAndTypes$.pipe(\n map(([digitalProperty, digitalPropertyTypes]: [IDigitalPropertyListItem | null, IDigitalPropertyType[]]): boolean => {\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return false;\n }\n const digitalPropertyType: IDigitalPropertyType = digitalPropertyTypes.find(\n (type: IDigitalPropertyType) => type[$digitalPropertyType._id] === digitalProperty[$digitalProperty.typeId],\n );\n return this.digitalPropertyService.isMobileType(digitalPropertyType);\n }),\n AngularUtility.shareRef(),\n );\n\n this._areScansAvailable$ = combineLatest([this._isWebDigitalProperty$, this._isMobileDigitalProperty$]).pipe(\n map(([isWeb, isMobile]: [boolean, boolean]): boolean => {\n return isWeb || isMobile;\n }),\n AngularUtility.shareRef(),\n );\n\n this._dpType$ = this.digitalPropertiesAndTypes$.pipe(\n filter(([digitalProperty]: [IDigitalPropertyListItem | null, IDigitalPropertyType[]]) => {\n return SharedCommonUtility.notNullish(digitalProperty);\n }),\n map(([digitalProperty, digitalPropertyTypes]: [IDigitalPropertyListItem, IDigitalPropertyType[]]): string => {\n const digitalPropertyType: IDigitalPropertyType = digitalPropertyTypes.find(\n (type: IDigitalPropertyType) => type[$digitalPropertyType._id] === digitalProperty[$digitalProperty.typeId],\n );\n return digitalPropertyType[$digitalPropertyType.name];\n }),\n AngularUtility.shareRef(),\n );\n }\n\n public get isWebDigitalProperty$(): Observable {\n return this._isWebDigitalProperty$;\n }\n\n public get isMobileDigitalProperty$(): Observable {\n return this._isMobileDigitalProperty$;\n }\n\n public get dpType$(): Observable {\n return this._dpType$;\n }\n\n // not a getter because i need to mock this with errors\n public getAreScansAvailable$(): Observable {\n return this._areScansAvailable$;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { catchError, filter, mergeMap, startWith, switchMap } from 'rxjs/operators';\nimport { BehaviorSubject, interval, Observable, of, Subscription } from 'rxjs';\n\nimport { IHttpQueryOptions } from '../../../shared/interfaces/http.query.interface';\nimport {\n IGetNewActivityLogsCountResponse,\n IGetWorkspaceActivityLogsResponseData,\n ISetWorkspaceActivityLogsAsViewedRequest,\n IWorkspaceActivityLogToBeMarked,\n} from '../../../shared/interfaces/workspace-activity-log.interface';\nimport { UserRestAPI } from './rest/user.api';\nimport { $workspaceActivityLog } from '../../../shared/constants/workspace-activity-log.constants';\nimport { PULLING_INTERVAL } from '../shared/constants';\nimport { UserService } from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserNotificationService implements OnDestroy {\n private readonly subscriptions: Subscription;\n private readonly newNotificationsCountSubject: BehaviorSubject;\n public readonly newNotificationsCount$: Observable;\n\n constructor(\n private userRest: UserRestAPI,\n private userService: UserService,\n ) {\n this.subscriptions = new Subscription();\n this.newNotificationsCountSubject = new BehaviorSubject(0);\n this.newNotificationsCount$ = this.newNotificationsCountSubject.asObservable();\n\n this.initializeService();\n }\n\n private initializeService(): void {\n this.subscriptions.add(\n interval(PULLING_INTERVAL.SLOWER)\n .pipe(\n startWith(0),\n switchMap(() => this.userService.isAuthenticated$),\n filter(() => this.userService.hasAWorkspaceSubject$.getValue()),\n mergeMap((isUserAuthenticated: boolean) => this.getUserNewNotificationsCount(isUserAuthenticated)),\n )\n .subscribe((response: IGetNewActivityLogsCountResponse) => {\n if (response !== null) {\n this.newNotificationsCountSubject.next(response[$workspaceActivityLog.newActivityLogsCount]);\n }\n }),\n );\n }\n\n private getUserNewNotificationsCount(isUserAuthenticated: boolean): Observable {\n const onGetCountError = (): Observable => {\n return of(null);\n };\n\n if (isUserAuthenticated) {\n return this.userRest.getUserNewNotificationsCount().pipe(catchError(onGetCountError));\n }\n return of(null);\n }\n\n public getUserWorkspacesRecentActivity(\n query: IHttpQueryOptions,\n skipLoader: boolean = false,\n ): Observable {\n return this.userRest.getUserWorkspacesActivityLogs(query, skipLoader);\n }\n\n public setUserWorkspacesRecentActivityAsViewed(activityLogs: IWorkspaceActivityLogToBeMarked[]): Observable {\n const setActivityLogsAsViewedRequest: ISetWorkspaceActivityLogsAsViewedRequest = {\n [$workspaceActivityLog.logsToBeMarked]: activityLogs,\n };\n\n return this.userRest.setUserWorkspacesActivityLogsAsViewed(setActivityLogsAsViewedRequest);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { delayWhen, distinctUntilChanged, filter, finalize, map, mergeMap, skip, take, tap } from 'rxjs/operators';\nimport { BehaviorSubject, from, Observable, of, Subscription } from 'rxjs';\nimport { groupBy, isEqual } from 'lodash';\nimport { ICurrentSelectedProperty, ICurrentSelectedWorkspace, UserService } from './user.service';\nimport { IUserServerResponse } from '../../../shared/interfaces/user.interface';\nimport {\n IDigitalPropertiesListResponse,\n IDigitalPropertyListItem,\n IDigitalPropertyWorkspace,\n IDpWorkspaceTenant,\n} from '../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { $user } from '../../../shared/constants/user';\nimport { BusMessageChannels, BusMessageService } from './bus-message.service';\nimport { IWorkspaceClient } from '../../../shared/interfaces/workspace.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { UserRestAPI } from './rest/user.api';\nimport { IWorkspacePropsType } from '../interfaces/workspace.interface';\nimport { $workspace } from '../../../shared/constants/workspace';\nimport { $tenant } from '../../../shared/constants/tenant';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../shared/utils/linked-property.utility';\nimport { Api } from '../../../shared/constants/api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserPropertyService {\n private currentlySwitchingProperties: BehaviorSubject>;\n private readonly hasSwitchingProperties: Observable;\n\n constructor(\n private userService: UserService,\n private userRestAPI: UserRestAPI,\n private activatedRoute: ActivatedRoute,\n private busMessageService: BusMessageService,\n private router: Router,\n ) {\n this.currentlySwitchingProperties = new BehaviorSubject>(new Set());\n this.hasSwitchingProperties = this.currentlySwitchingProperties.asObservable().pipe(\n filter((props: Set): boolean => props.size === 0),\n map(() => true),\n );\n }\n\n private getCurrentPropertyFromParams(): Observable {\n return this.userService.userDataChanged$.pipe(\n delayWhen((): Observable => this.hasSwitchingProperties),\n take(1),\n mergeMap(() => this.userService.currentDigitalProperty$),\n take(1),\n map(UserPropertyService.toCurrentSelectedProperty),\n );\n }\n\n private static toCurrentSelectedProperty(item: IDigitalPropertyListItem): ICurrentSelectedProperty | null {\n if (typeof item === 'undefined' || item === null) {\n return null;\n }\n\n return {\n digitalPropertyId: item[$digitalProperty._id],\n digitalPropertyName: item[$digitalProperty.name],\n digitalPropertyKey: item[$digitalProperty.propertyKey],\n workspaceId: item[$digitalProperty.workspace]._id,\n workspaceName: item[$digitalProperty.workspace].name,\n };\n }\n\n public static transformDigitalPropertiesIntoWorkspaces(\n digitalPropertiesResponse: IDigitalPropertiesListResponse,\n includeTenantName: boolean = false,\n ): IWorkspacePropsType[] {\n const result: IWorkspacePropsType[] = [];\n\n const byWorkspace: Record = groupBy(\n digitalPropertiesResponse.items,\n (dp: IDigitalPropertyListItem): string => dp[$digitalProperty.workspace]._id,\n );\n\n for (const properties of Object.values(byWorkspace)) {\n const workspace: IDigitalPropertyWorkspace = properties[0][$digitalProperty.workspace];\n const tenant: IDpWorkspaceTenant = workspace[$workspace.tenant];\n const tenantName: string = SharedCommonUtility.notNullish(tenant) && includeTenantName ? ` (${tenant[$tenant.name]})` : '';\n\n properties.sort((aValue: IDigitalPropertyListItem, bValue: IDigitalPropertyListItem): number =>\n aValue.name.localeCompare(bValue.name),\n );\n\n result.push({\n _id: workspace._id,\n workspaceName: `${workspace.name}${tenantName}`,\n digitalProperties: properties,\n hidden: true,\n });\n }\n\n result.sort((a: IWorkspacePropsType, b: IWorkspacePropsType): number => a.workspaceName.localeCompare(b.workspaceName));\n\n return result;\n }\n\n public currentSelectedProperty(): Observable {\n if (LinkedPropertyUtility.hasLinkedPropertyData(this.activatedRoute.snapshot.queryParams)) {\n return this.getCurrentPropertyFromParams();\n }\n\n return this.userService.currentDigitalProperty$.pipe(take(1), map(UserPropertyService.toCurrentSelectedProperty));\n }\n\n public currentSelectedPropertyItem(): Observable {\n return this.currentSelectedProperty().pipe(mergeMap(() => this.userService.currentDigitalProperty$.pipe(take(1))));\n }\n\n public switchUserToDigitalPropertyIfNeeded(workspaceId: string, digitalPropertyId: string): Observable {\n return this.userService.currentDigitalProperty$.pipe(\n take(1),\n mergeMap((prop: IDigitalPropertyListItem | null) => {\n const currentlySwitching: Set = this.currentlySwitchingProperties.getValue();\n if (currentlySwitching.has(digitalPropertyId)) {\n return of(false);\n }\n\n if (prop?.[$digitalProperty._id] === digitalPropertyId && prop?.[$digitalProperty.workspace]?._id === workspaceId) {\n return of(false);\n }\n\n this.currentlySwitchingProperties.next(currentlySwitching.add(digitalPropertyId));\n\n return this.userService.switchUserToDigitalProperty(workspaceId, digitalPropertyId).pipe(\n finalize((): void => {\n currentlySwitching.delete(digitalPropertyId);\n this.currentlySwitchingProperties.next(currentlySwitching);\n }),\n mergeMap(() => this.userService.currentDigitalProperty$),\n take(1),\n mergeMap((property: IDigitalPropertyListItem) => {\n if (SharedCommonUtility.notNullish(property)) {\n return from(\n this.router\n .navigate([], {\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(\n property[$digitalProperty._id],\n property[$digitalProperty.workspace]._id,\n ),\n queryParamsHandling: 'merge',\n })\n .then((): IDigitalPropertyListItem => property),\n );\n }\n\n // redirect to profile page with no query params (removing the invalid linkedpropertydata)\n return from(this.router.navigate([Api.settings, Api.profile], {}).then(() => null));\n }),\n tap((property: IDigitalPropertyListItem) => {\n if (SharedCommonUtility.isNullish(property)) {\n return;\n }\n }),\n map((property: IDigitalPropertyListItem) => SharedCommonUtility.notNullish(property)),\n );\n }),\n );\n }\n\n public currentSelectedWorkspace(): Observable {\n return this.currentSelectedProperty().pipe(\n map((prop: ICurrentSelectedProperty): ICurrentSelectedWorkspace | null => {\n if (prop === null) {\n return null;\n }\n\n const byWorkspace = (listItem: IDigitalPropertyListItem): boolean => {\n return listItem[$digitalProperty.workspace]._id === prop.workspaceId;\n };\n\n const userServerResponse: IUserServerResponse = this.userService.retrieveAuthenticatedUserProfile();\n\n return {\n workspaceId: prop.workspaceId,\n workspaceName: prop.workspaceName,\n workspaceSettings: userServerResponse.workspaces.find((w: IWorkspaceClient) => w._id === prop.workspaceId)?.settings,\n digitalProperties: userServerResponse[$user.digitalProperties].filter(byWorkspace),\n };\n }),\n );\n }\n\n public getAvailableDigitalProperties(typeIds?: string[]): Observable {\n return this.currentSelectedProperty().pipe(\n take(1),\n mergeMap((property: ICurrentSelectedProperty): Observable => {\n if (SharedCommonUtility.getTypeOf(property) !== 'object') {\n return of({ items: [], _total: 0 });\n }\n return this.userRestAPI.getAvailableDigitalProperties(typeIds);\n }),\n );\n }\n\n public redirectOnPropertyChange(redirectUrl: string[]): Subscription {\n return this.busMessageService\n .from(BusMessageChannels.userSwitchedToDigitalProperty)\n .pipe(skip(1), mergeMap(this.currentSelectedProperty.bind(this)))\n .subscribe(({ workspaceId, digitalPropertyId }: ICurrentSelectedProperty): any =>\n this.router.navigate(redirectUrl, {\n replaceUrl: true,\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(digitalPropertyId, workspaceId),\n }),\n );\n }\n\n public getLinkedPropertyChanges$(): Observable {\n return this.activatedRoute.queryParams.pipe(\n filter(LinkedPropertyUtility.hasLinkedPropertyData),\n map(LinkedPropertyUtility.fromLinkedPropertyQueryParam),\n distinctUntilChanged(isEqual),\n );\n }\n\n public get digitalPropertySwitched$(): Observable {\n return this.busMessageService.from(BusMessageChannels.userSwitchedToDigitalProperty).pipe(\n skip(1),\n mergeMap((): Observable => this.currentSelectedProperty()),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService } from './rest.service';\nimport { IUserRole } from '../../../shared/interfaces/user-role.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserRoleService {\n constructor(private restService: RestService) {}\n\n public getUserRoles(): Observable {\n return this.restService.getUserRoles();\n }\n}\n","import { IGlobalResponse } from '../interfaces/error.interface';\n\nexport namespace GlobalResponse {\n export const isIGlobalResponse = (obj: any): obj is IGlobalResponse => {\n return obj?.app?.code && obj?.app?.name && obj?.app?.description && obj?.status;\n };\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { BehaviorSubject, fromEvent, merge, Observable, of, Subscription, throwError } from 'rxjs';\nimport { catchError, filter, map, mapTo, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { StatusCodes } from 'http-status-codes';\nimport { Router } from '@angular/router';\n\nimport { IGlobalResponse, IUserClient, IUserDeactivateAccount, IUserProfileFormData } from '../interfaces/user.interface';\nimport { AuthService } from './auth.service';\nimport { BrowserLocalStorageService } from './browser-local-storage.service';\nimport {\n IBulkEmailUpdateResponse,\n IGetUsersResponseData,\n IMfaLoginRequest,\n IMfaRegistrationQrResponse,\n IMfaStatusResponse,\n IMfaTokenVerificationRequest,\n IUser,\n IUserEmailResponse,\n IUserPasswordSettings,\n IUserPublicResponse,\n IUserServerResponse,\n} from '../../../shared/interfaces/user.interface';\nimport { UserRestAPI } from './rest/user.api';\nimport { AdminRestAPI } from './rest/admin.api';\nimport { IHttpQueryOptions } from '../../../shared/interfaces/http.query.interface';\nimport { $workspace, workspaceStatus, WorkspaceTypes } from '../../../shared/constants/workspace';\nimport { $userPreference, userPreferenceScope, userPreferenceScopeParam } from '../../../shared/constants/user-preferences';\nimport { NotificationService } from './notification.service';\nimport { NotificationPosition } from '../models/notification.model';\nimport { $user } from '../../../shared/constants/user';\nimport { IWorkspaceClient, IWorkspaceSettings } from '../../../shared/interfaces/workspace.interface';\nimport {\n IDigitalPropertiesListResponse,\n IDigitalPropertyListItem,\n IWorkspaceIDItem,\n} from '../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { IUserSignupResponse, IUserSignUpRequest } from '../../../shared/interfaces/user-authentication.interface';\nimport { EmptyObject } from '../../../shared/interfaces/empty-object.interface';\nimport { IWorkspaceRolesResponse } from '../../../shared/interfaces/acl.interface';\nimport { IUserPreference, IUserPreferencesServerResponse } from '../../../shared/interfaces/user-preference.interface';\nimport { errorMessagesNames } from '../../../shared/constants/errors';\nimport { GlobalResponse } from '../../../shared/guards/global-response';\nimport { Api } from '../../../shared/constants/api';\nimport { IImageSrcResponse } from '../../../shared/interfaces/common.interface';\nimport { AppConfigService } from './app-config.service';\nimport { ErrorMessageService } from './error-message.service';\nimport { ITenantInfo } from '../../../shared/interfaces/tenant.interface';\nimport { TenantService } from './tenant.service';\nimport { AngularUtility } from '../utility/angular.utility';\nimport { CommonUtility } from '../utility/common.utility';\nimport { ISecurityGroup } from '../../../shared/interfaces/security-group.interface';\nimport { $securityGroup } from '../../../shared/constants/security-group';\nimport { IRecentUserWorkspace } from '../../../shared/interfaces/recent-resources.interface';\nimport { AccessibilityAuditToolNames } from '../../../shared/constants/audit-tool';\nimport { Origin } from '../../../shared/interfaces/scan.interface';\n\nexport const defaultAvatar: string =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAmVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjHWqVAAAAMnRSTlMANMz9L+0CJwHk2SSudmdMOAnq0pwe8cl/bfj1lnlFKxpUPQW/s6KJEbaNhsSrkHJfFf6uiA8AAAJ6SURBVHja7drZcqMwEAXQa7ODbQwYr/GexM6e3P//uHmYl5mqgGmnG9dMcX5At0oS3UhCp9PpdDo/kZVb100y3EDoLh77Hn+LBqMzWtW7i/i35aREa9IZv7FaoB3bV1Y4oQ3DJSvNYe74xjqfMJbds9b09W3twtCADcwOsDJiI87Jh4lkxYYmIQwcZ2xsDgMjNueMoS6MKdAPoW1DkRTanihyD2WlQxGnhK5PCi2ga0KhB+iKKeRB1dmhVAlNG4ptoGlPsZHld7j9ejCk2DM0nSh2B013tw7wTrH3W6+BNTSlFNtDU0mxAKoiCnkhbrsNHqFrI18CuvyIIt4Ryl4ocoIy16OI50JVWFCoCKFpTLExNI3+wYZEN0BKsRSadhTbQVVMoRi65vKeVNfXlCLTLyjbOxRw9lC3mTWO4Mw2sPAg+DM2sRb0oyYCQTto417jfMi+JjpjmHkUtKMmdlNeNN3B0JAXDWHJf+IFTz5MnWPWis8wFnis4QUwN65J4I3RgiRihShBK/qs0Me3ugBdgC7Afxcg81jBy9CGoaAUW3BXrLRyYa6Xs0begy1/sWSt5cKHnTAteFGRhrBRfsRsJP4ooS5ZzygwGyZQ5M4LihVzFxr8w3PMK8XPB/+Ho6eTnD+ST9LrMyQvERVELwmu4Q4cKnEGLqSC+uHlEQJI+OsllS2HvmDy+zTQT9CQm9NE7qKRw5RGpgc0EKxoZhXgoqygoSLTfa9jcKk/prGx4DjWxAC1tg6NOVvBCjAxQY0wp7k8rJsBtqBuDhZsweL6l8v2+yBiCyJUOjpsgXMU3I+a2KFKwFYEqOKyFS6qZL1WZOh0Op1O5w+/AMjcEKqVv0RIAAAAAElFTkSuQmCC';\n\nexport enum $currentUserData {\n tenantId = 'tenantId',\n workspaceId = 'workspaceId',\n digitalPropertyId = 'digitalPropertyId',\n}\n\nexport interface ICurrentSelectedProperty {\n workspaceId: string;\n workspaceName: string;\n digitalPropertyId: string;\n digitalPropertyName: string;\n digitalPropertyKey: string;\n}\n\nexport interface ICurrentSelectedWorkspace {\n workspaceId: string;\n workspaceName: string;\n workspaceDescription?: string;\n workspaceType?: WorkspaceTypes;\n workspaceStatus?: workspaceStatus;\n digitalProperties: IDigitalPropertyListItem[];\n workspaceSettings?: IWorkspaceSettings;\n}\n\nexport interface ICurrentUserData {\n [$currentUserData.tenantId]?: string;\n [$currentUserData.workspaceId]?: string;\n [$currentUserData.digitalPropertyId]?: string;\n}\n\n@Injectable()\nexport class UserService implements OnDestroy {\n private subscription: Subscription;\n private userData: BehaviorSubject;\n private _isAuthenticated: BehaviorSubject;\n private _isMfaRequired: BehaviorSubject;\n private lastPermissionsCheck: Date;\n\n public userDataChanged$: Observable;\n public currentDigitalProperty$: Observable;\n public isAuthenticated$: Observable;\n public isMfaRequired$: Observable;\n public hasAccessToTenant$: BehaviorSubject;\n public hasAWorkspaceSubject$: BehaviorSubject;\n public currentTenant$: Observable;\n\n constructor(\n private browserLocalStorageService: BrowserLocalStorageService,\n private userRestAPI: UserRestAPI,\n private adminRestAPI: AdminRestAPI,\n private authService: AuthService,\n private notificationService: NotificationService,\n private errorMessageService: ErrorMessageService,\n private router: Router,\n private config: AppConfigService,\n private tenantService: TenantService,\n private appConfigService: AppConfigService,\n ) {\n this.subscription = new Subscription();\n\n this.userData = new BehaviorSubject(null);\n this.userDataChanged$ = this.userData.asObservable();\n\n this._isAuthenticated = new BehaviorSubject(false);\n this.isAuthenticated$ = this._isAuthenticated.asObservable();\n this._isMfaRequired = new BehaviorSubject(null);\n this.isMfaRequired$ = this._isMfaRequired.asObservable();\n this.hasAccessToTenant$ = new BehaviorSubject(true);\n this.lastPermissionsCheck = new Date(0);\n this.hasAWorkspaceSubject$ = new BehaviorSubject(true);\n\n this.currentDigitalProperty$ = this.userDataChanged$.pipe(\n filter((user: IUserServerResponse) => user !== null),\n map((user: IUserServerResponse): IDigitalPropertyListItem | null => {\n return user[$user.digitalProperties].find(this.isUserProperty(user[$user.lastUsedDigitalProperty]).bind(this)) || null;\n }),\n );\n\n this.currentTenant$ = this.userDataChanged$.pipe(\n filter((user: IUserServerResponse): boolean => SharedCommonUtility.notNullishOrEmpty(user?.[$user.currentTenantId])),\n switchMap(\n (user: IUserServerResponse): Observable =>\n this.tenantService.getTenantFromTenantedScope(user[$user.currentTenantId]),\n ),\n AngularUtility.shareRef(),\n );\n }\n\n private isUserProperty(propertyId: string): (property: IDigitalPropertyListItem) => boolean {\n return (property: IDigitalPropertyListItem): boolean => {\n return property[$digitalProperty._id] === propertyId;\n };\n }\n\n private checkUserDigitalProperty(user: IUserServerResponse): void {\n const isActiveDigitalProperty = (workspace: IDigitalPropertyListItem): boolean => {\n return workspace._id === user[$user.lastUsedDigitalProperty];\n };\n\n const isPrivateWorkspace = (workspace: IWorkspaceClient): boolean => {\n return workspace.type === WorkspaceTypes.private;\n };\n\n const isPrivateDigitalProperty =\n (workspace: IWorkspaceClient) =>\n (dp: IDigitalPropertyListItem): boolean => {\n return dp[$digitalProperty.workspace]._id === workspace._id;\n };\n\n const activeWorkspaceIndex: number = user[$user.digitalProperties].findIndex(isActiveDigitalProperty);\n if (activeWorkspaceIndex >= 0) {\n return;\n }\n\n const privateWorkspace: IWorkspaceClient = user.workspaces.find(isPrivateWorkspace);\n if (privateWorkspace === undefined) {\n return;\n }\n\n const privateDigitalProperty: IDigitalPropertyListItem = user[$user.digitalProperties].find(\n isPrivateDigitalProperty(privateWorkspace),\n );\n\n if (privateDigitalProperty === undefined) {\n return;\n }\n\n // Note: TranslateService cannot be used here\n const appMessage: string =\n 'You have been removed from this digital asset. You are being switched to your private digital asset';\n this.notificationService.error(appMessage, NotificationPosition.Toast, true, 'workspace_error', true);\n\n const switchedWorkspaceSuccess = (): void => {\n const propertyName = privateDigitalProperty[$digitalProperty.name];\n const message: string = `Switching to digital asset ${propertyName} has been done successfully.`;\n this.notificationService.success(message, NotificationPosition.Toast);\n\n this.reloadUser();\n };\n\n const switchedWorkspaceFailed = (): void => {\n const message: string = 'There were errors while switching digital asset';\n this.notificationService.error(message, NotificationPosition.Toast);\n };\n\n this.subscription.add(\n this.switchUserToDigitalProperty(\n privateDigitalProperty[$digitalProperty.workspace]._id,\n privateDigitalProperty._id,\n ).subscribe({\n next: switchedWorkspaceSuccess,\n error: switchedWorkspaceFailed,\n }),\n );\n }\n\n private saveProfileLocally(user: IUserServerResponse): IUserServerResponse | undefined {\n const me: IUserServerResponse = this.userData.getValue();\n\n // Note: the user data may not only be for the logged in user, but also they are coming\n // when user with role superAdmin updates the other users profile\n\n if (SharedCommonUtility.getTypeOf(me) === 'object' && user._id !== me._id) {\n return undefined;\n }\n\n const updatedUserData: IUserServerResponse = { ...me, ...user } as IUserServerResponse;\n\n this.checkUserDigitalProperty(updatedUserData);\n this.userData.next(updatedUserData);\n\n return user;\n }\n\n private handleUnauthorizedWhenGettingProfile(response: HttpErrorResponse): void {\n this.processUnauthorization();\n\n if (this.config.isUsingExternalIdp()) {\n this.router\n .navigate(['/', Api.forbidden])\n .then(() =>\n this.notificationService.error(this.errorMessageService.getGlobalErrorResponse(response), NotificationPosition.Toast),\n );\n } else {\n window.location.reload();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public userWorkspace(workspaceId: string): Observable {\n return this.userDataChanged$.pipe(\n filter((user: IUserServerResponse): boolean => user !== null),\n map((user: IUserServerResponse): ICurrentSelectedWorkspace => {\n const byId = (val: IWorkspaceClient): boolean => val._id === workspaceId;\n\n const userWorkspace: IWorkspaceClient = user[$user.workspaces].find(byId);\n\n if (typeof userWorkspace === 'undefined') {\n throw new Error(`Workspace \"${workspaceId}\" not found for the current user`);\n }\n\n const byWorkspace = (listItem: IDigitalPropertyListItem): boolean => {\n return listItem[$digitalProperty.workspace]._id === workspaceId;\n };\n\n return {\n workspaceId: userWorkspace._id,\n workspaceName: userWorkspace[$workspace.name],\n workspaceDescription: userWorkspace[$workspace.description],\n workspaceStatus: userWorkspace[$workspace.status],\n workspaceType: userWorkspace[$workspace.type] as WorkspaceTypes,\n digitalProperties: user[$user.digitalProperties].filter(byWorkspace),\n };\n }),\n take(1),\n );\n }\n\n public getDefaultAvatarURL(): string {\n return defaultAvatar;\n }\n\n /**\n * Returns the user avatar URL, or the default avatar if the user does not have an avatar set.\n *\n * @param user\n */\n public getAvatar(user: Pick): string {\n if (SharedCommonUtility.isNullish(user?.[$user.avatar])) {\n return this.getDefaultAvatarURL();\n }\n\n return user?.[$user.avatar];\n }\n\n /**\n * Retrieves the user avatar information from the backend. Uses the default avatar if the\n * user has not set an avatar.\n *\n * @param userId\n */\n public getAvatarSrc(userId: string): Observable {\n return this.userRestAPI.getAvatarUrl(userId).pipe(\n map((res: IImageSrcResponse): IImageSrcResponse => {\n if (SharedCommonUtility.isNullish(res.src)) {\n return { ...res, src: this.getDefaultAvatarURL() };\n }\n\n return res;\n }),\n );\n }\n\n public processUnauthorization(): void {\n this._isAuthenticated.next(false);\n this._isMfaRequired.next(null);\n this.authService.clearLocalData();\n }\n\n public saveUserId(userId: string): void {\n this.browserLocalStorageService.setItem('userId', userId);\n }\n\n public getMeProfile(): Observable {\n const success = (response: IUserClient): IUserClient => {\n this.saveProfileLocally(response);\n return response;\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n console.error('[getMeProfile] error', response);\n\n if (response.status === StatusCodes.UNAUTHORIZED) {\n this.handleUnauthorizedWhenGettingProfile(response);\n }\n if (\n response.status === StatusCodes.FORBIDDEN &&\n GlobalResponse.isIGlobalResponse(response.error) &&\n response.error.app.name === errorMessagesNames.NoAccessToTenant\n ) {\n this.hasAccessToTenant$.next(false);\n }\n\n return throwError(response);\n };\n\n if (this.isAuthenticated()) {\n return this.userRestAPI.getAuthenticatedUser().pipe(map(success), catchError(error));\n }\n\n return of(null);\n }\n\n public getAuthenticatedUser(): Observable {\n return this.userRestAPI.getAuthenticatedUser();\n }\n\n public reloadUser(): void {\n const reloadUserSubscription: Subscription = new Subscription();\n reloadUserSubscription.add(\n this.getMeProfile().subscribe({\n complete: () => reloadUserSubscription.unsubscribe(),\n }),\n );\n }\n\n public getAuthenticatedUserProfile(): Observable {\n return this.userData.asObservable();\n }\n\n public getUserOrigin(): Observable {\n return this.userData.pipe(\n map((user: IUserServerResponse) => {\n return user.groups?.some((group: ISecurityGroup) => group.isStaffGroup) ? Origin.staff : Origin.client;\n }),\n );\n }\n\n public retrieveAuthenticatedUserProfile(): IUserServerResponse {\n return this.userData.getValue();\n }\n\n public getStoredUserId(): string {\n const userData: IUserServerResponse = this.userData.getValue();\n\n return userData ? userData._id : this.browserLocalStorageService.getItem('userId');\n }\n\n public updateUserDataByAdmin(profile: IUserProfileFormData, selectedUserId: string): Observable {\n return this.userRestAPI.updateSelectedUserProfile(profile, selectedUserId);\n }\n\n public updateUserDataByWorkspaceAdmin(profile: FormData, workspaceId: string, selectedUserId: string): Observable {\n return this.userRestAPI.updateSelectedUserProfileAsWorkspaceAdmin(profile, workspaceId, selectedUserId);\n }\n\n public updateUserAccountStatusByAdmin(accountStatus: string, selectedUserId: string): Observable {\n return this.userRestAPI.updateSelectedUserProfile({ accountStatus } as IUserProfileFormData, selectedUserId);\n }\n\n public saveProfile(profile: FormData): Observable {\n return this.userRestAPI.saveUser(profile).pipe(map(this.saveProfileLocally.bind(this)));\n }\n\n public changePassword(passwordSettings: IUserPasswordSettings): Observable {\n return this.userRestAPI.changePassword(passwordSettings);\n }\n\n public deactivateAccount(deactivateFeedback: IUserDeactivateAccount): Observable {\n return this.userRestAPI.deactivateAccount(deactivateFeedback);\n }\n\n public verifyPreviousPassword(password: string): Observable {\n return this.userRestAPI.verifyPreviousPassword(password);\n }\n\n public verifyPreviousPasswordVisitor(password: string, emailToken: string, skipLoader: boolean = false): Observable {\n return this.userRestAPI.verifyPreviousPasswordVisitor(password, emailToken, skipLoader);\n }\n\n public setAuthenticated(status: boolean): void {\n this._isAuthenticated.next(status);\n }\n\n public setMfaRequired(status: boolean | null): void {\n this._isMfaRequired.next(status);\n }\n\n public isAuthenticated(): boolean {\n return this._isAuthenticated.getValue();\n }\n\n public isMfaRequired(): boolean | null {\n return this._isMfaRequired.getValue();\n }\n\n public verifyEmail(token: string): Observable {\n return this.userRestAPI.verifyEmail(token);\n }\n\n public verifyResetPasswordToken(token: string): Observable<{ user: { id: string } }> {\n return this.userRestAPI.verifyResetPasswordToken(token);\n }\n\n public async getAuthStatus(): Promise> | Observable> {\n const success = (response: HttpResponse): Observable> => {\n const isUserAuthenticated: boolean = response.body.app.user.authenticated;\n this.setAuthenticated(isUserAuthenticated);\n\n if (isUserAuthenticated) {\n this.setMfaRequired(false);\n }\n\n return of(response);\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n console.error('[getAuthStatus] error', response);\n\n if (response.status === StatusCodes.FORBIDDEN) {\n throw response as Error;\n }\n\n this.setAuthenticated(false);\n\n return throwError(response);\n };\n\n if (!this.appConfigService.useCookiesForAuth()) {\n this.subscription.add(\n this.authService\n .getAccessTokenObservable()\n .pipe(\n withLatestFrom(this.isMfaRequired$),\n map(\n ([token, isMfaRequired]: [string, boolean | null]) =>\n SharedCommonUtility.notNullish(token) && SharedCommonUtility.notNullish(isMfaRequired),\n ),\n )\n .subscribe((isUserAuthenticated: boolean) => {\n this.setAuthenticated(isUserAuthenticated);\n }),\n );\n\n const accessToken: string | null = this.authService.getAccessTokenFromStorage();\n\n if (accessToken === null) {\n this.setAuthenticated(false);\n return Promise.resolve(null);\n }\n }\n\n return this.userRestAPI.authStatus().toPromise().then(success).catch(error);\n }\n\n public validateExternalAccessToken(): Observable {\n return this.userRestAPI.authStatus().pipe(\n map((response: HttpResponse): boolean => {\n return response?.body?.app?.user?.authenticated ?? false;\n }),\n catchError((response: HttpErrorResponse): Observable => {\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.ExternalAuthUserNotFound) {\n return of(false);\n }\n return throwError(response);\n }),\n );\n }\n\n public logIn(email: string, password: string): Observable {\n const success = (response: HttpResponse<{ userId: string; mfaRequired: boolean }>): void => {\n this.authService.saveAccessTokenToStorage(response.headers.get('x-access-token'));\n this.authService.saveRefreshTokenInStorage(response.headers.get('x-refresh-token'));\n\n this.saveUserId(response.body.userId);\n this.setMfaRequired(response.body.mfaRequired);\n this.setAuthenticated(!response.body.mfaRequired);\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n console.error('[UserService] logIn error', response);\n\n this.setAuthenticated(false);\n\n return throwError(response);\n };\n\n const data = {\n email: email,\n password: password,\n };\n\n return this.userRestAPI.login(data).pipe(map(success), catchError(error));\n }\n\n public postLogOut(): void {\n this.authService.clearLocalData();\n this.setAuthenticated(false);\n this.setMfaRequired(null);\n this.userData.next(null);\n }\n\n public logOut(): Observable {\n const success = (): void => {\n this.postLogOut();\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n this.postLogOut();\n\n return throwError(response);\n };\n\n return this.userRestAPI.logout().pipe(map(success), catchError(error));\n }\n\n public signup(data: IUserSignUpRequest): Observable {\n return this.userRestAPI.signup(data).pipe(this.signupResponseHandler.bind(this));\n }\n\n private signupResponseHandler(observable: Observable): Observable {\n const success = (response: IUserSignupResponse): void => {\n console.debug('[UserService] signUp success', response);\n\n this.authService.saveAccessTokenToStorage(response.accessToken);\n this.authService.saveRefreshTokenInStorage(response.refreshToken);\n\n this.saveUserId(response.userId);\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n console.error('[UserService] signUp error', response);\n\n this.setAuthenticated(false);\n return throwError(response);\n };\n\n return observable.pipe(tap(success), catchError(error));\n }\n\n public getMfaRegistrationQr(): Observable {\n return this.userRestAPI.getMfaRegistrationQr();\n }\n\n public verifyAndEnableMfa(request: IMfaTokenVerificationRequest): Observable {\n return this.userRestAPI.verifyAndEnableMfa(request);\n }\n\n public mfaLogin(request: IMfaLoginRequest): Observable {\n const success = (response: HttpResponse<{ userId: string }>): void => {\n this.authService.saveAccessTokenToStorage(response.headers.get('x-access-token'));\n this.authService.saveRefreshTokenInStorage(response.headers.get('x-refresh-token'));\n\n this.saveUserId(response.body.userId);\n this.setAuthenticated(true);\n this.setMfaRequired(false);\n };\n\n const error = (response: HttpErrorResponse): Observable => {\n console.error('[UserService] mfaLogin error', response);\n\n this.setAuthenticated(false);\n\n return throwError(response);\n };\n\n return this.userRestAPI.mfaLogin(request).pipe(map(success), catchError(error));\n }\n\n public disableMfa(): Observable {\n return this.userRestAPI.disableMfa();\n }\n\n public disableMfaForUser(userId: string): Observable {\n return this.userRestAPI.disableMfaForUser(userId);\n }\n\n public getMfaStatus(): Observable {\n return this.userRestAPI.getMfaStatus();\n }\n\n public getMfaStatusForUser(userId: string): Observable {\n return this.userRestAPI.getMfaStatusForUser(userId);\n }\n\n public resetPassword(email: string): Observable {\n return this.userRestAPI.resetPassword(email);\n }\n\n public resendActivationLink(email: string): Observable {\n return this.userRestAPI.resendActivationLink(email);\n }\n\n public resendVisitorActivationLink(email: string): Observable {\n return this.userRestAPI.resendVisitorActivationLink(email);\n }\n\n public changePasswordWithToken(password: string, verificationToken: string): Observable {\n return this.userRestAPI.createNewPassword(password, verificationToken);\n }\n\n public cleanAfterDeactivateAccount(): void {\n this.authService.clearLocalData();\n this.setAuthenticated(false);\n }\n\n public getUserById(userId: string): Observable {\n return this.userRestAPI.getUserById(userId);\n }\n\n public getUsers(queryOptions: IHttpQueryOptions): Observable {\n return this.userRestAPI.getUsers(queryOptions);\n }\n\n public getRecentWorkspaces(toolName: AccessibilityAuditToolNames): Observable {\n return this.userRestAPI.getRecentWorkspaces(toolName);\n }\n\n public changeEmailsDownloadTemplate(): Observable {\n return this.userRestAPI.changeEmailsDownloadTemplate();\n }\n\n public updateEmails(fileForm: FormData): Observable {\n return this.userRestAPI.updateEmails(fileForm);\n }\n\n public onBrowserOnlineStatus(): Observable {\n return merge(\n of(navigator.onLine),\n fromEvent(window, 'online').pipe(mapTo(true)),\n fromEvent(window, 'offline').pipe(mapTo(false)),\n );\n }\n\n public getApplicationRoles(): Observable {\n return this.adminRestAPI.getApplicationRoles();\n }\n\n public switchUserToWorkspace(workspaceId: string): Observable {\n const success = (userServerResponse: IUserServerResponse): IUserServerResponse => {\n this.saveProfileLocally(userServerResponse);\n return userServerResponse;\n };\n\n return this.userRestAPI.switchUserToWorkspace(workspaceId).pipe(map(success));\n }\n\n public switchUserToDigitalProperty(workspaceId: string, digitalPropertyId: string): Observable {\n const success = (userServerResponse: IUserServerResponse): IUserServerResponse => {\n this.saveProfileLocally(userServerResponse);\n return userServerResponse;\n };\n\n return this.userRestAPI.switchUserToDigitalProperty(workspaceId, digitalPropertyId).pipe(map(success));\n }\n\n public getUserPreferences(\n scope: userPreferenceScope,\n workspaceId?: string,\n projectId?: string,\n ): Observable {\n return this.userRestAPI.getUserPreferences(scope, workspaceId, projectId);\n }\n\n public getUserPreferencesForUser(\n scope: userPreferenceScope,\n userId: string,\n workspaceId?: string,\n projectId?: string,\n ): Observable {\n return this.userRestAPI.getUserPreferencesForUser(scope, userId, workspaceId, projectId);\n }\n\n public updateUserPreferences(\n scope: userPreferenceScope,\n preferences: { [key: string]: any },\n workspaceId?: string,\n projectId?: string,\n ): Observable {\n const preferencesPayload: { [key: string]: any } = Object.keys(preferences).map(\n (\n param: string,\n ): {\n [key: string]: any;\n } => ({\n scope,\n param,\n value: preferences[param],\n projectId,\n }),\n );\n\n return this.userRestAPI.updateUserPreferences(preferencesPayload, scope, workspaceId);\n }\n\n public updateUserPreferencesForUser(\n scope: userPreferenceScope,\n preferences: { [key: string]: any },\n userId: string,\n workspaceId?: string,\n projectId?: string,\n ): Observable {\n const preferencesPayload: { [key: string]: any } = Object.keys(preferences).map(\n (\n param: string,\n ): {\n [key: string]: any;\n } => ({\n scope,\n param,\n value: preferences[param],\n projectId,\n }),\n );\n\n return this.userRestAPI.updateUserPreferencesForUser(preferencesPayload, scope, userId, workspaceId);\n }\n\n public checkUserPermissionsChange(): void {\n // Note: we add a this 'debouncing' to avoid looping on getting the profile\n const now: Date = new Date();\n if (now.getTime() - this.lastPermissionsCheck.getTime() < 60 * 1000) {\n return;\n }\n\n this.lastPermissionsCheck = now;\n this.reloadUser();\n }\n\n public hasTenantStaffAccess(): Observable {\n return this.userDataChanged$.pipe(\n filter((profile: IUserServerResponse): boolean => SharedCommonUtility.notNullish(profile)),\n take(1),\n map((profile: IUserServerResponse): boolean =>\n profile[$user.groups].some((group: ISecurityGroup): boolean => group[$securityGroup.isStaffGroup] === true),\n ),\n );\n }\n\n public getUserDigitalPropertyIds(): Observable {\n return this.userRestAPI.getAvailableDigitalPropertyIds();\n }\n\n public getFirstAvailableDigitalPropertyForWorkspaces(): Observable> {\n return this.userRestAPI.getAvailableDigitalProperties().pipe(\n map((response: IDigitalPropertiesListResponse): Map => {\n const workspaceMap: Map = new Map();\n const digitalPropertiesMap: Map = new Map();\n\n response.items.map((digitalProperty: IDigitalPropertyListItem): void => {\n const workspaceId: string = digitalProperty[$digitalProperty.workspace][$workspace._id];\n if (!digitalPropertiesMap.has(workspaceId)) {\n digitalPropertiesMap.set(workspaceId, []);\n }\n digitalPropertiesMap.get(workspaceId).push(digitalProperty);\n });\n\n digitalPropertiesMap.forEach((digitalProperties: IDigitalPropertyListItem[], key: string): void => {\n const sortedDigitalProperties: IDigitalPropertyListItem[] = digitalProperties.sort(\n (a: IDigitalPropertyListItem, b: IDigitalPropertyListItem): number =>\n a[$digitalProperty.name].localeCompare(b[$digitalProperty.name]),\n );\n workspaceMap.set(key, sortedDigitalProperties[0]);\n });\n\n return workspaceMap;\n }),\n );\n }\n\n public checkAccessToProperty(digitalPropertyId: string, workspaceId: string): Observable {\n return this.userRestAPI.checkAccessToProperty(digitalPropertyId, workspaceId).pipe(map(() => true));\n }\n\n public setToNoWorkspaceState(): void {\n if (this.hasAWorkspaceSubject$.getValue()) {\n this.hasAWorkspaceSubject$.next(false);\n }\n this.router.navigate(['/', Api.forbidden]).then();\n }\n\n public getUserDataForLogging(): ICurrentUserData {\n const userData: IUserServerResponse = this.userData.getValue();\n const digitalProperty: IDigitalPropertyListItem = userData?.[$user.digitalProperties]?.find(\n (property: IDigitalPropertyListItem): boolean => property[$digitalProperty._id] === userData[$user.lastUsedDigitalProperty],\n );\n\n return {\n [$currentUserData.tenantId]: userData?.[$user.currentTenantId],\n [$currentUserData.workspaceId]: digitalProperty?.[$digitalProperty.workspace][$workspace._id],\n [$currentUserData.digitalPropertyId]: digitalProperty?.[$digitalProperty._id],\n };\n }\n\n public getEmailByToken(token: string): Observable {\n return this.userRestAPI.getEmailByToken(token);\n }\n\n public static findUserPreferenceForParam(\n response: IUserPreferencesServerResponse,\n param: userPreferenceScopeParam,\n scope: userPreferenceScope,\n ): IUserPreference | null {\n return (\n response.userPreferences.find((userPreference: IUserPreference) => {\n const matchingParam: boolean = userPreference[$userPreference.param] === param;\n const matchingScope: boolean = userPreference[$userPreference.scope] === scope;\n return matchingParam && matchingScope;\n }) ?? null\n );\n }\n}\n","export class WindowRef {\n private _window: Window = window;\n\n public setwindowObjectMock(obj: any): void {\n this._window = obj;\n }\n\n public get windowObject(): any {\n return this._window;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowService {\n public confirm(message: string): boolean {\n // eslint-disable-next-line no-alert\n return window.confirm(message);\n }\n\n /**\n * Uses the window object to create a MediaQueryList whose query is `(max-width: ${maxWidth}px)`. Then observes its\n * \"change\" event and maps the resulting observable by returning the \"matches\" property of the MediaQueryList.\n *\n * @param maxWidth Max width to be used in the media query added to the window object.\n */\n public observeBreakpoint(maxWidth: number): Observable {\n const mediaQuery: MediaQueryList = window.matchMedia(`(max-width: ${maxWidth}px)`);\n\n return fromEvent(mediaQuery, 'change').pipe(\n startWith(mediaQuery),\n map((mediaQueryList: MediaQueryList): boolean => mediaQueryList.matches),\n );\n }\n}\n","export enum $trainingVideo {\n _id = '_id',\n url = 'url',\n workspace = 'workspace',\n createdAt = 'createdAt',\n}\n\nexport const trainingVideoAllowedHostnames: string[] = ['player.vimeo.com'];\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, of, Subscription } from 'rxjs';\nimport { debounceTime, finalize, switchMap, take, tap } from 'rxjs/operators';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nimport { trainingVideoAllowedHostnames } from '../../../shared/constants/training-video';\nimport { $user } from '../../../shared/constants/user';\nimport { WorkspaceTypes } from '../../../shared/constants/workspace';\nimport { IGetAvailableWorkspacesQuery } from '../../../shared/interfaces/admin.interface';\nimport { IHttpQueryOptions } from '../../../shared/interfaces/http.query.interface';\nimport { IUser, IUserServerResponse } from '../../../shared/interfaces/user.interface';\nimport { IWorkspaceRoleClient } from '../../../shared/interfaces/workspace-role.interface';\nimport { IGetWorkspaceUsersFilterRequest } from '../../../shared/interfaces/workspace-user.interface';\nimport {\n ICreateWorkspaceClientRequest,\n IGetWorkspacesResponse,\n IValidateWorkspaceNameResponse,\n IWorkspace,\n IWorkspaceClient,\n IWorkspaceSummary,\n IWorkspaceUpdateRequest,\n ICreateWorkspacePlusDpRequest,\n ICreateBulkWorkspacesResponse,\n} from '../../../shared/interfaces/workspace.interface';\nimport { BusMessageChannels, BusMessageService } from './bus-message.service';\nimport { AdminRestAPI } from './rest/admin.api';\nimport { WorkspacesRestAPI } from './rest/workspaces.api';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { DEBOUNCE_TIME } from '../shared/constants';\nimport { IAsyncReportResponse } from '../../../shared/interfaces/async-report.interface';\nimport { IWorkspaceMetrics } from '../../../shared/interfaces/workspace-metrics.interface';\nimport { IValidateBulkUpload } from '../../../shared/interfaces/digital-property.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService implements OnDestroy {\n private subscription: Subscription;\n private validateUniqueNameSubject$: BehaviorSubject;\n private validateUniqueNameDebouncer$: Observable;\n\n constructor(\n private workspacesRestAPI: WorkspacesRestAPI,\n private adminRestAPI: AdminRestAPI,\n private busMessageService: BusMessageService,\n ) {\n this.subscription = new Subscription();\n this.validateUniqueNameSubject$ = new BehaviorSubject(null);\n this.validateUniqueNameDebouncer$ = this.validateUniqueNameSubject$.pipe(debounceTime(DEBOUNCE_TIME));\n }\n\n public downloadCreateBulkWorkspacesTemplate(): Observable {\n return this.workspacesRestAPI.downloadCreateBulkWorkspacesTemplate();\n }\n\n private publishEventWorkspacesChanged(workspace: IWorkspace): Observable {\n this.busMessageService.to(BusMessageChannels.workspaceUpdated).next();\n\n return of(workspace);\n }\n\n private publishEventWorkspaceCreated(workspace: IWorkspace): Observable {\n this.busMessageService.to(BusMessageChannels.workspaceCreated).next();\n\n return of(workspace);\n }\n\n public static isTrainingVideoDomainAllowed(hostname: string): boolean {\n return trainingVideoAllowedHostnames.includes(hostname);\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public getUsers(workspaceId: string, filters?: IGetWorkspaceUsersFilterRequest): Observable {\n return this.workspacesRestAPI.getUsers(workspaceId, filters);\n }\n\n public getAllWorkspaces(queryOptions: IHttpQueryOptions): Observable {\n return this.adminRestAPI.getAllWorkspaces(queryOptions);\n }\n\n public validateWorkspaceBulkUpload(uploadForm: FormData): Observable {\n return this.adminRestAPI.validateWorkspaceBulkUpload(uploadForm);\n }\n\n public workspaceBulkUpload(uploadForm: FormData): Observable {\n return this.adminRestAPI.workspaceBulkUpload(uploadForm);\n }\n\n public migrateWorkspaceToTenant(workspacesIds: string[], tenantId: string): Observable {\n return this.adminRestAPI.migrateWorkspaceToTenant(workspacesIds, tenantId);\n }\n\n public getUserAvailableWorkspaces(\n userId: string,\n queryOptions: IGetAvailableWorkspacesQuery,\n ): Observable {\n return this.adminRestAPI.getUserAvailableWorkspaces(userId, queryOptions);\n }\n\n public getAllUserWorkspaces(queryOptions: IHttpQueryOptions): Observable {\n return this.workspacesRestAPI.getAllUserWorkspaces(queryOptions);\n }\n\n public getWorkspace(id: string): Observable {\n return this.workspacesRestAPI.getWorkspace(id);\n }\n\n public removeWorkspace(id: string): Observable {\n return this.workspacesRestAPI.removeWorkspace(id);\n }\n\n public createWorkspacePlusDp(data: ICreateWorkspacePlusDpRequest): Observable {\n return this.workspacesRestAPI.createWorkspacePlusDp(data).pipe(tap(this.publishEventWorkspaceCreated.bind(this)));\n }\n\n public createWorkspace(data: ICreateWorkspaceClientRequest): Observable {\n return this.workspacesRestAPI.createWorkspace(data).pipe(finalize(this.publishEventWorkspaceCreated.bind(this)));\n }\n\n public updateWorkspace(workspaceId: string, data: IWorkspaceUpdateRequest): Observable {\n return this.workspacesRestAPI\n .updateWorkspace(workspaceId, data)\n .pipe(finalize(this.publishEventWorkspacesChanged.bind(this)));\n }\n\n public updateWorkspaceAsAdmin(workspaceId: string, data: IWorkspaceUpdateRequest): Observable {\n return this.workspacesRestAPI.updateWorkspaceAsAdmin(workspaceId, data);\n }\n\n public exportWorkspaces(queryOptions: IHttpQueryOptions): Observable {\n return this.workspacesRestAPI.exportWorkspaces(queryOptions);\n }\n\n public getUserWorkspaceRoles(\n workspaceId: string,\n userId: string,\n isAdminRequest: boolean = false,\n ): Observable {\n return this.workspacesRestAPI.getUserWorkspaceRoles(workspaceId, userId, isAdminRequest);\n }\n\n public isUserInWorkspace(myProfile: IUserServerResponse, workspace: IWorkspace): boolean {\n const findWorkspace = (_workspace: IWorkspace): boolean => {\n return _workspace._id === workspace._id;\n };\n\n return myProfile[$user.workspaces].findIndex(findWorkspace) !== -1;\n }\n\n public isUserPrivateWorkspace(myProfile: IUserServerResponse, workspace: IWorkspace): boolean {\n if (this.isUserInWorkspace(myProfile, workspace) === false) {\n return false;\n }\n\n return workspace.type === WorkspaceTypes.private;\n }\n\n public getActiveWorkspaces(): Observable {\n return this.workspacesRestAPI.getActiveWorkspaces();\n }\n\n /**\n * Return active workspaces for the user, including the workspace where the user has DP entity-level access.\n * Child digital properties will be populated for each workspace.\n */\n public getActiveWorkspacesV2(): Observable {\n return this.workspacesRestAPI.getActiveWorkspacesV2();\n }\n\n public getMyActiveWorkspacesWithNotifications(): Observable {\n return this.workspacesRestAPI.getMyActiveWorkspacesWithNotifications();\n }\n\n public getWorkspaceSummary(workspaceId: string): Observable {\n return this.workspacesRestAPI.getSummary(workspaceId);\n }\n\n public downloadPortfolioReport(wsId: string): Observable {\n return this.workspacesRestAPI.downloadPortfolioReport(wsId);\n }\n\n public generatePortfolioReport(wsId: string): Observable {\n return this.workspacesRestAPI.generatePortfolioReport(wsId);\n }\n\n public getWorkspaceMetrics(wsId: string, toolName: string): Observable {\n return this.workspacesRestAPI.getWorkspaceMetrics(wsId, toolName);\n }\n\n public validateNameUniqueness(\n tenantId: string,\n exceptionThunk: () => string = (): string => '',\n ): (c: AbstractControl) => Observable {\n return (control: AbstractControl): Observable => {\n if (SharedCommonUtility.isNullishOrEmpty(control.value)) {\n return of(null);\n }\n\n if (control.value === exceptionThunk()) {\n return of(null);\n }\n\n const result: Observable = this.validateUniqueNameDebouncer$.pipe(\n take(1),\n switchMap(\n (): Observable =>\n this.workspacesRestAPI.validateNameUniqueness(control.value, tenantId),\n ),\n switchMap((val: IValidateWorkspaceNameResponse): Observable => {\n if (val?.exists === false) {\n return of(null);\n }\n return of({ unique: true });\n }),\n );\n this.validateUniqueNameSubject$.next(null);\n return result;\n };\n }\n}\n","import { RestVersion } from '../interfaces/rest.interface';\nimport constants from '../../environments/constants.config.json';\nimport { Api } from '../../../shared/constants/api';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { errorMessagesNames } from '../../../shared/constants/errors';\nimport { FeatureFlagCollection } from '../../../shared/interfaces/feature-flag.interface';\n\nexport const IE_REVEAL_EYE_SELECTOR: string = 'input::-ms-reveal';\n\nexport enum EnvironmentType {\n Dev = 1,\n QA = 2,\n Stage = 3,\n Prod = 4,\n}\n\nexport const ApiVersion: RestVersion = {\n current: 'v1',\n v1: 'v1',\n};\n\nexport const DEFAULT_VALIDATION_BOUNCE_TIME: number = 300;\nexport const DEFAULT_A11Y_ALERT_MESSAGE_BOUNCE_TIME: number = DEFAULT_VALIDATION_BOUNCE_TIME + 100;\nexport const DEFAULT_SCROLL_HEIGHT: number = 64;\nexport const A11Y_MESSAGE_TIMEOUT_IN_MILLIS: number = 1000;\n\nexport enum ActivatedRouteData {\n title = 'title',\n description = 'description',\n sessionType = 'sessionType',\n uiConfig = 'uiConfig',\n featureFlag = 'featureFlag',\n redirectTo = 'redirectTo',\n}\n\nexport enum ScanAction {\n Cancel = 'Cancel',\n Remove = 'Remove',\n ReRun = 'ReRun',\n Resume = 'Resume',\n}\n\nexport enum redirectUrl {\n returnTo = 'returnTo',\n}\n\nexport const REDIRECT_TO_USERWAY_DASHBOARD_PARAM_VAL: string = 'external-userway-dashboard';\n\nexport enum viewportSize {\n small = 'small',\n medium = 'medium',\n large = 'large',\n xlarge = 'xlarge',\n xxlarge = 'xxlarge',\n}\n\nexport enum scansPagination {\n default = 10,\n}\n\nexport enum RouterLinkTarget {\n SELF = '_self',\n BLANK = '_blank',\n}\n\n// Note: these error message must be synchronised with same list on the backend side\nexport const RESPONSE_ERROR_MESSAGES: { [key: string]: string } = {\n CastError: 'error_action_cant_be_performed',\n [errorMessagesNames.DisplayNameExists]: 'error_display_name_already_exists',\n [errorMessagesNames.ErrorCantRemoveWorkspaceWithUsers]: 'error_while_removing_workspace_with_users',\n [errorMessagesNames.ErrorProcessingScanRequest]: 'error_while_processing_scan_request',\n IncorrectUsernameOrPassword: 'error_user_not_found', // It looks like this key is unreachable\n [errorMessagesNames.InvalidCurrentPassword]: 'error_invalid_current_password',\n [errorMessagesNames.ErrorScanTimeout]: 'error_scan_timeout',\n [errorMessagesNames.NoAccessRefreshTokenProvided]: 'error_no_authorization',\n TimeoutError: 'error_scan_timeout', // It looks like this key is unreachable\n TokenExpiredError: 'error_token_expired', // It looks like this key is unreachable\n [errorMessagesNames.UserDisabled]: 'error_user_disabled',\n UserNotFound: 'error_user_not_found', // It looks like this key is unreachable\n [errorMessagesNames.CannotDeleteDigitalPropertyWithData]: 'cannot_delete_digital_property_with_data',\n [errorMessagesNames.ErrorIncorrectOrExpiredMfaToken]: 'mfa_code_is_not_correct_or_expired',\n [errorMessagesNames.AcademyInitializationFailed]: 'academy_integration_error_message',\n [errorMessagesNames.AcademyIntegrationError]: 'academy_integration_error_message',\n [errorMessagesNames.AcademySeatLimitExceeded]: 'academy_seat_limit_exceeded_message',\n [errorMessagesNames.AcademyUpdateFailed]: 'academy_integration_error_message_when_updating',\n};\n\n// in ms\nexport enum PULLING_INTERVAL {\n FAST = constants.pollingInterval.fast,\n SLOW = constants.pollingInterval.slow,\n SLOWER = constants.pollingInterval.slower,\n}\n\nexport const DEBOUNCE_TIME: Readonly = 200;\n\nexport const ROUTES_TO_APPLY_UI_CONFIG: readonly string[] = SharedCommonUtility.freezeDeep([\n `/${Api.integrations}/${Api.connect_browser_extension}`,\n]);\n\nexport const enum $pageColumns {\n url = 'url',\n pageScore = 'pageScore',\n score = 'score',\n open = 'open',\n dismissed = 'dismissed',\n totalFailed = 'totalFailed',\n totalReview = 'totalReview',\n action = 'action',\n}\n\nexport const focusableElementSelectors: string[] = [\n 'a[href]',\n 'button',\n 'textarea',\n 'input[type=\"text\"]',\n 'input[type=\"radio\"]',\n 'input[type=\"checkbox\"]',\n 'select',\n];\n\nexport const GlobalFeatureFlagDefaults: { [key: string]: boolean } = {\n [FeatureFlagCollection.scimFunctionality]: false,\n [FeatureFlagCollection.mobileAppScans]: false,\n};\n","export enum EapColors {\n BlueInteraction = '#0852ba',\n BlueHover = '#06367a',\n BlueLink = '#0665d0',\n BlueInactive = '#83a8dd',\n BlueBackground = '#f3f6fc',\n BlueInfo = '#0098C7',\n BlueText = '#063E8D',\n BluePrimary = '#074EB0',\n BlueHoverBackground = '#f3f6fc',\n GreenSeverityLow = '#4b9e24',\n GreenCheckmark = '#20652a',\n GreyCopy = '#333',\n GreyStrokeInactive = '#8c8c8c',\n GreyPageBackground = '#f5f5f5',\n GreenStatusPassed = '#569e14',\n PurpleFocus = '#a30083',\n RedError = '#b10606',\n RedStatusFailed = '#ea3349',\n RedSeverityCritical = '#f4364c',\n OrangeSeverityHigh = '#db6e00',\n OrangeStatusReview = '#d36d00',\n White = '#fff',\n SeverityRank5 = '#f4364c',\n SeverityRank4 = '#f4364c',\n SeverityRank3 = '#db6e00',\n SeverityRank2 = '#0098c7',\n SeverityRank1 = '#074eb0',\n BarTextureSeverityRank4 = '#ffdfe4',\n BarTextureSeverityRank3 = '#fff2e4',\n BarTextureSeverityRank2 = '#e7f9ff',\n BarTextureSeverityRank1 = '#d1dcf2',\n}\n\nexport const SeverityRankColourMap: Map = new Map([\n [5, EapColors.SeverityRank5],\n [4, EapColors.SeverityRank4],\n [3, EapColors.SeverityRank3],\n [2, EapColors.SeverityRank2],\n [1, EapColors.SeverityRank1],\n]);\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'app-eap-icons',\n templateUrl: '../../assets/icons/eap-icons.html',\n})\nexport class EapIconsComponent {\n @HostBinding('style.display') public none: string = 'none';\n}\n\nexport enum Icons {\n ActivateUserIcon = 'activate-user-icon',\n AlertIcon = 'alert-icon',\n AssignUserIcon = 'assign-user-icon',\n AttachmentIcon = 'attachment-icon',\n CalendarIcon = 'calendar-icon',\n ChatIcon = 'chat-icon',\n CheckboxIcon = 'checkbox-icon',\n CheckboxPartialIcon = 'checkbox-partial-icon',\n CheckboxSelectedIcon = 'checkbox-selected-icon',\n CheckmarkIcon = 'checkmark-icon',\n CircleCheckmarkIcon = 'circle-checkmark-icon',\n CircleXIcon = 'circle-x-icon',\n ChevronBottomIcon = 'chevron-bottom-icon',\n ChevronDownIcon = 'chevron-down-icon',\n ChevronTopIcon = 'chevron-top-icon',\n ChevronUpIcon = 'chevron-up-icon',\n ClockIcon = 'clock-icon',\n CloseIcon = 'close-icon',\n CursorTextIcon = 'cursor-text-icon',\n DeactivateUserIcon = 'deactivate-user-icon',\n DeleteIcon = 'delete-icon',\n DocumentIcon = 'document-icon',\n DownloadIcon = 'download-icon',\n DropdownIcon = 'dropdown-icon',\n EditIcon = 'edit-icon',\n EmailIcon = 'email-icon',\n ExternalLinkIcon = 'external-link-icon',\n FavoriteIcon = 'favorite-icon',\n FilterIcon = 'filter-icon',\n FlagIcon = 'flag-icon',\n FolderIcon = 'folder-icon',\n HelpIcon = 'help-icon',\n HomeIcon = 'home-icon',\n HorizontalEllipsisIcon = 'horizontal-ellipsis-icon',\n ImageIcon = 'image-icon',\n InfoIcon = 'info-icon',\n LinkIcon = 'link-icon',\n LockIcon = 'lock-icon',\n MapIcon = 'map-icon',\n MediaIcon = 'media-icon',\n MinusIcon = 'minus-icon',\n NotVisibleIcon = 'not-visible-icon',\n NotificationIcon = 'notification-icon',\n PlusIcon = 'plus-icon',\n PointerIcon = 'pointer-icon',\n ProfileIcon = 'profile-icon',\n QuestionMarkTooltipIcon = 'question-mark-tooltip',\n RadioButtonIcon = 'radio-button-icon',\n RadioButtonSelectedIcon = 'radio-button-selected-icon',\n RequestIcon = 'request-icon',\n RevokeIcon = 'revoke-icon',\n SearchIcon = 'search-icon',\n SettingsIcon = 'settings-icon',\n SeverityCriticalIcon = 'severity-critical-icon',\n SeverityHighIcon = 'severity-high-icon',\n SeverityLowIcon = 'severity-low-icon',\n ShareIcon = 'share-icon',\n SortIcon = 'sort-icon',\n SyncIcon = 'sync-icon',\n TrendDownIcon = 'trend-down-icon',\n TrendUpIcon = 'trend-up-icon',\n UnlockIcon = 'unlock-icon',\n UploadIcon = 'upload-icon',\n VerticalEllipsisIcon = 'vertical-ellipsis-icon',\n VisibleIcon = 'visible-icon',\n WaitIcon = 'wait-icon',\n WarningCircleIcon = 'warning-circle-icon',\n WarningTriangleIcon = 'warning-triangle-icon',\n ZoomInIcon = 'zoom-in-icon',\n ZoomOutIcon = 'zoom-out-icon',\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","
\n
\n \n \n {{\n 'view_rule_history_item_title_' + historyItem[$ruleAuditHistory.type] + '_' + historyItem[$ruleAuditHistory.action]\n | translate\n }}\n \n \n {{ 'evaluation_rules_rule_status' | translate }}\n \n {{ (historyItem[$ruleAuditHistory.action] === 'on' ? 'label_on' : 'label_off') | translate }}\n \n \n
\n
\n
\n {{ getUserAndTimestamp() }}\n
\n
\n
\n\n\n\n \n \n \n \n \n \n \n \n\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { IRuleAuditHistoryLineItem } from '../../../../../shared/interfaces/rule-audit-history.interface';\nimport { $ruleAuditHistory } from '../../../../../shared/constants/rule-audit-history';\nimport { RuleAuditHistoryService } from '../../../services/rule-audit-history.service';\n\n@Component({\n selector: 'app-view-rule-history-item',\n templateUrl: './view-rule-history-item.component.html',\n styleUrls: ['./view-rule-history-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewRuleHistoryItemComponent {\n @Input()\n public expanded: boolean;\n @Input()\n public historyItem: IRuleAuditHistoryLineItem;\n public $ruleAuditHistory: typeof $ruleAuditHistory;\n\n constructor(private ruleAuditHistoryService: RuleAuditHistoryService) {\n this.expanded = true;\n this.$ruleAuditHistory = $ruleAuditHistory;\n }\n\n public getUserAndTimestamp(): string {\n return this.ruleAuditHistoryService.getStatusLine(\n new Date(this.historyItem[$ruleAuditHistory.createdAt]),\n this.historyItem[$ruleAuditHistory.user],\n );\n }\n}\n","\n \n \n \n {{ 'label_show_rule_audit_history' | translate: ruleTitle }}\n\n\n\n
\n
\n \n
\n
\n
\n\n\n
\n

\n {{ 'label_activity_log' | translate }}\n

\n \n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\n\nimport { $ruleAuditHistory, RuleAuditHistoryType } from '../../../../../shared/constants/rule-audit-history';\nimport { IRuleAuditHistoryLineItem } from '../../../../../shared/interfaces/rule-audit-history.interface';\nimport { RuleAuditHistoryService } from '../../../services/rule-audit-history.service';\nimport { AuditToolNames } from '../../../../../shared/constants/audit-tool';\n\n@Component({\n selector: 'app-view-rule-history',\n templateUrl: './view-singular-rule-history.component.html',\n styleUrls: ['./view-singular-rule-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewSingularRuleHistoryComponent {\n private type: RuleAuditHistoryType;\n @Input()\n public rule: string;\n @Input()\n public ruleTitle: string;\n @Input()\n public url: string;\n @Input()\n public selector: string;\n @Input()\n public toolName: AuditToolNames;\n @Input()\n public historyInput: IRuleAuditHistoryLineItem[];\n @Input()\n public scanId: string;\n public history: IRuleAuditHistoryLineItem[];\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private service: RuleAuditHistoryService,\n ) {\n this.history = [];\n this.type = RuleAuditHistoryType.rule;\n }\n\n public async loadHistory(): Promise {\n this.history = await (Array.isArray(this.historyInput)\n ? Promise.resolve(this.historyInput)\n : this.service\n .getHistory(this.toolName, this.rule, this.type, {\n [$ruleAuditHistory.url]: this.url,\n [$ruleAuditHistory.selectors]: this.selector,\n [$ruleAuditHistory.dataId]: this.scanId,\n })\n .toPromise());\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","\n \n \n \n \n \n \n\n\n \n {{ (data.enabled ? 'label_on' : 'label_off') | translate }}\n \n\n
\n 0\"\n [ruleTitle]=\"data.title\"\n [historyInput]=\"data.changeLog\"\n >\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Api } from '../../../../shared/constants/api';\nimport { IRuleAuditHistoryLineItem } from '../../../../shared/interfaces/rule-audit-history.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { RuleStatusChangeComponent } from '../rule-status-change/rule-status-change.component';\n\nexport interface IRuleStatusToggleData {\n enabled: boolean;\n canChange: boolean;\n changeLog: IRuleAuditHistoryLineItem[];\n ruleId: string;\n title: string;\n}\n\n@Component({\n selector: 'app-rule-status-toggle',\n templateUrl: './rule-status-toggle.component.html',\n styleUrls: ['./rule-status-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RuleStatusToggleComponent implements OnDestroy {\n private subscription: Subscription;\n @Input()\n public data: IRuleStatusToggleData;\n public displayTooltip: boolean;\n public Api: typeof Api;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private modalService: ModalService,\n ) {\n this.subscription = new Subscription();\n this.displayTooltip = false;\n this.Api = Api;\n }\n\n public showChangeRuleStatusDialog(): void {\n const modalComponentRef: ComponentRef = this.modalService.open(RuleStatusChangeComponent);\n\n modalComponentRef.instance.modalInputData = {\n data: this.data,\n };\n\n this.subscription.add(\n modalComponentRef.instance.onSave.subscribe((newLogEntry: IRuleAuditHistoryLineItem): void => {\n this.data.changeLog.unshift(newLogEntry);\n this.changeDetectorRef.detectChanges();\n }),\n );\n\n this.subscription.add(\n modalComponentRef.instance.onCancel.subscribe((): void => {\n this.data.enabled = !this.data.enabled;\n }),\n );\n }\n\n @HostListener('document:click', ['$event'])\n public onClickOutside(event: MouseEvent): void {\n if (this.displayTooltip === false) {\n return;\n }\n\n if (this.elementRef.nativeElement.contains(event.target as Node) === false) {\n this.displayTooltip = false;\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { TranslatePipe } from '../translate/translate.pipe';\n\nconst pipes: Type[] = [TranslatePipe];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [...pipes],\n exports: [...pipes],\n})\nexport class CommonPipesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DsModule } from '@levelaccess/design-system';\n\nimport { FilterPipe } from '../pipes/filter.pipe';\nimport { TranslateHtmlPipe } from '../translate/translate-html.pipe';\nimport { SanitizerPipe } from '../pipes/sanitizer.pipe';\nimport { DateTimePipe } from '../pipes/date-time.pipe';\nimport { HighlightDirective } from '../directives/highlight/highlight.directive';\nimport { ArrayReversePipe } from '../pipes/array-reverse.pipe';\nimport { ArrayToStringPipe } from '../pipes/array-to-string.pipe';\nimport { ViewportBoxComponent } from '../components/viewport-box/viewport-box.component';\nimport { FieldInvalidPipe } from '../pipes/field-invalid.pipe';\nimport { KeysPipe } from '../pipes/keys.pipe';\nimport { LinkifyHtmlPipe } from '../pipes/linkify-html.pipe';\nimport { LinkifyPipe } from '../pipes/linkify.pipe';\nimport { PrettifyDatePipe } from '../pipes/prettify-date.pipe';\nimport { EllipsisPipe } from '../pipes/ellipsis.pipe';\n\nimport { NotificationsComponent } from '../components/notifications/notifications.component';\nimport { TreeComponent } from '../components/tree/tree.component';\nimport { AlertComponent } from '../components/alert/alert.component';\nimport { FormFieldErrorComponent } from '../components/form-field-error/form-field-error.component';\nimport { FormErrorMessagesComponent } from '../components/form-error-messages/form-error-messages.component';\nimport { ErrorMessageComponent } from '../components/error-message/error-message.component';\nimport { CropImageComponent } from '../components/crop-image/crop-image.component';\nimport { TooltipComponent } from '../directives/tooltip/tooltip.component';\nimport { TypeaheadComponent } from '../components/typeahead/typeahead.component';\nimport { RuleSeverityComponent } from '../components/rule-severity/rule-severity.component';\n\nimport { LazyImageDirective } from '../directives/lazy-image/lazy-image.directive';\nimport { CollapseDirective } from '../directives/collapse/collapse.directive';\nimport { NativeElementInjectorDirective } from '../directives/form-native-element/form-native-element.directive';\nimport { NoDoubleActivateDirective } from '../directives/no-double-activate/no-double-activate.directive';\nimport { InputOnlyNumbersDirective } from '../directives/input-only-numbers/input-only-numbers.directive';\nimport { TooltipDirective } from '../directives/tooltip/tooltip.directive';\nimport { TabsDirective } from '../directives/tabs/tabs.directive';\nimport { FormElementStateDirective } from '../directives/form-element-state/form-element-state.directive';\nimport { CloseActionMenuDirective } from '../directives/close-action-menu/close-action-menu.directive';\nimport { DownloadLinkDirective } from '../directives/download-link/download-link.directive';\nimport { TranslatedLinksDirective } from '../directives/translated-links/translated-links.directive';\nimport { CopyToClipboardComponent } from '../components/copy-to-clipboard/copy-to-clipboard.component';\nimport { ScanActionsComponent } from '../components/scan-actions/scan-actions.component';\nimport { FileInputComponent } from '../components/file-input/file-input.component';\nimport { PaginationEntriesPerPageComponent } from '../components/pagination/entries-per-page/pagination-entries-per-page.component';\nimport { DatetimeLocalComponent } from '../components/form-field/datetime-local/datetime-local.component';\nimport { ModalContainerComponent } from '../components/modals/modal-container.component';\nimport { CustomTableComponent } from '../components/table/custom-table/custom-table.component';\nimport { CustomFileInputComponent } from '../components/file-input/custom-file-input/custom-file-input.component';\nimport { PaginationArrowsNavigationComponent } from '../components/pagination/arrows-navigation/pagination-arrows-navigation.component';\nimport { DigitalPropertyWorkspaceFilterComponent } from '../components/digital-property-workspace-filter/digital-property-workspace-filter.component';\nimport { FilteringInputComponent } from '../components/filtering/input/filtering-input.component';\nimport { TableEmptyStateComponent } from '../components/table/custom-table/empty-state/table-empty-state.component';\nimport { TabsComponent } from '../components/tabs/tabs.component';\nimport { ScanScoreCircleComponent } from '../components/scan-score-circle/scan-score-circle.component';\nimport { HasPermissionsDirective } from '../directives/has-permissions/has-permissions.directive';\nimport { CommonInputComponent } from '../components/common-input/common-input.component';\nimport { CommonInputInPlaceEditorComponent } from '../components/common-input-in-place-editor/common-input-in-place-editor.component';\nimport { CommonTextareaComponent } from '../components/common-textarea/common-textarea.component';\nimport { CommonCheckboxComponent } from '../components/common-checkbox/common-checkbox.component';\nimport { CommonSelectComponent } from '../components/common-select/common-select.component';\nimport { AccordionItemComponent } from '../components/common-accordion-item/accordion-item.component';\nimport { SortSelectorComponent } from '../components/sort-selector/sort-selector.component';\nimport { ViewportCustomValuesComponent } from '../components/viewport-custom-values/viewport-custom-values.component';\nimport { LabelValueComponent } from '../components/label-value/label-value.component';\nimport { ScanAuthenticationDetailsComponent } from '../components/scan-authentication-details/scan-authentication-details.component';\nimport { DomainRestrictionsComponent } from '../components/domain-restrictions/domain-restrictions.component';\nimport { ScanExtraHeadersComponent } from '../components/scan-extra-headers/scan-extra-headers.component';\nimport { MonitoringAlertIconComponent } from '../components/monitoring-alert-icon/monitoring-alert-icon.component';\nimport { MonitoringLabelComponent } from '../components/monitoring-label/monitoring-label.component';\nimport { RuleStatusToggleComponent } from '../components/rule-status-toggle/rule-status-toggle.component';\nimport { ScanTagSelectorComponent } from '../components/scan-tag-selector/scan-tag-selector.component';\nimport { FilterKeywordComponent } from '../components/filtering/keyword/filter-keyword.component';\nimport { FilterCheckboxComponent } from '../components/filtering/checkbox/filter-checkbox/filter-checkbox.component';\nimport { FilterHostDirective } from '../directives/filter-host/filter-host.directive';\nimport { ScanTagFilterComponent } from '../components/scan-tag-filter/scan-tag-filter.component';\nimport { AvatarInputComponent } from '../components/avatar/avatar-input/avatar-input.component';\nimport { EditUserComponent } from '../components/users/edit-user/edit-user.component';\nimport { StatusComponent } from '../components/status/status.component';\nimport { DownloadReportNewComponent } from '../components/download-report-new/download-report.component';\nimport { ExportReportButtonComponent } from '../components/export-report-button/export-report-button.component';\nimport { MultiselectTypeaheadComponent } from '../components/multiselect-typeahead/multiselect-typeahead.component';\nimport { NgbTableComponent } from '../components/table/ngb-table/ngb-table.component';\nimport { DclWrapperComponent } from '../components/table/ngb-table/utilities/dcl-wrapper.component';\nimport { NgbTableEmptyStateComponent } from '../components/table/ngb-table/empty-state/table-empty-state.component';\nimport { ViewportInlineComponent } from '../components/viewport-inline/viewport-inline.component';\nimport { ViewSingularRuleHistoryComponent } from '../components/view-rule-history/singular/view-singular-rule-history.component';\nimport { ViewRuleHistoryItemComponent } from '../components/view-rule-history/view-rule-history-item/view-rule-history-item.component';\nimport { RuleIssuesTableComponent } from '../components/rule-issues-table/rule-issues-table.component';\nimport { MonitoringTrendModalComponent } from '../components/dashboard/monitoring-trend/monitoring-trend-modal/monitoring-trend-modal.component';\nimport { ScanAnalyticsHealthGraphComponent } from '../components/scan-analytics-health-graph/scan-analytics-health-graph.component';\nimport { ScanHealthChartComponent } from '../components/scan-health-chart/scan-health-chart.component';\nimport { CommonDragAndDropFilesComponent } from '../components/common-drag-and-drop-files/common-drag-and-drop-files.component';\nimport { CommonCommentComponent } from '../components/common-comment/common-comment.component';\nimport { HorizontalStepperComponent } from '../components/stepper/horizontal-stepper/horizontal-stepper.component';\nimport { StepComponent } from '../components/stepper/step/step.component';\nimport { StepHeaderComponent } from '../components/stepper/step-header/step-header.component';\nimport { StepContentDirective } from '../components/stepper/step/step-content.directive';\nimport { StepNextDirective } from '../components/stepper/directives/step-next.directive';\nimport { StepPreviousDirective } from '../components/stepper/directives/step-previous.directive';\nimport { UpsertTaskModalComponent } from '../pages/public/projects/tasks/upsert-task-modal/upsert-task-modal.component';\nimport { CommonConfirmationComponent } from '../components/common-confirmation-modal/common-confirmation.component';\nimport { MarkdownEditorComponent } from '../components/markdown-editor/markdown-editor.component';\nimport { MarkdownViewComponent } from '../components/markdown-view/markdown-view.component';\nimport { AiChatMarkdownViewComponent } from '../components/ai-chat-markdown-view/ai-chat-markdown-view.component';\nimport { ViewAvatarComponent } from '../components/avatar/view/view-avatar.component';\nimport { IssuesViewDetailsComponent } from '../pages/public/scans/scan-results/issues-view/issues-view-details/issues-view-details.component';\nimport { SearchboxComponent } from '../components/searchbox/searchbox.component';\nimport { PageLoadingStateComponent } from '../components/page-loading-state/page-loading-state.component';\nimport { ViewFlawStatusHistoryComponent } from '../components/view-flaw-status-history/view-flaw-status-history.component';\nimport { ViewFlawStatusHistoryItemComponent } from '../components/view-flaw-status-history/view-flaw-status-history-item/view-flaw-status-history-item.component';\nimport { AttachmentThumbnailComponent } from '../components/attachment-thumbnail/attachment-thumbnail.component';\nimport { CheckboxConfirmationModalComponent } from '../components/modals/checkbox-confirmation-modal/checkbox-confirmation-modal.component';\nimport { PromptConfirmationModalComponent } from '../components/modals/prompt-confirmation-modal/prompt-confirmation-modal.component';\nimport { AlertModalComponent } from '../components/modals/alert-modal/alert-modal.component';\nimport { ShareIssueReportModalComponent } from '../components/share-issue-report-modal/share-issue-report-modal.component';\nimport { ShareIssueReportUrlComponent } from '../components/share-issue-report-url/share-issue-report-url.component';\nimport { FileDropDirective } from '../directives/file-dropbox/fileDropbox.directive';\nimport { CommonNameTagComponent } from '../components/common-name-tag/common-name-tag.component';\nimport { CommonFileDropboxComponent } from '../components/common-file-dropbox/common-file-dropbox.component';\nimport { AdvancedSearchComponent } from '../components/advanced-search/advanced-search.component';\nimport { CommonSwitchComponent } from '../components/common-switch/common-switch.component';\nimport { ResponsivePaginationComponent } from '../components/pagination/responsive-pagination/responsive-pagination.component';\nimport { SvgIconsComponent } from './svg-icons.component';\nimport { GlobalSpinnerComponent } from '../components/global-spinner/global-spinner.component';\nimport { CommonInfoNoteComponent } from '../components/common-info-note/common-info-note.component';\nimport { FormFieldCharCountComponent } from '../components/form-field-char-count/form-field-char-count.component';\nimport { WorkspaceUsersListComponent } from '../components/workspace/users-list/users-list.component';\nimport { TableColumnSelectorComponent } from '../components/table-column-selector/table-column-selector.component';\nimport { TableColumnSelectorPanelComponent } from '../components/table-column-selector/table-column-selector-panel/table-column-selector-panel.component';\nimport { RouteWrapperComponent } from '../components/route-wrapper/route-wrapper.component';\nimport { FormFieldLineCountComponent } from '../components/form-field-line-count/form-field-line-count.component';\nimport { ViewportSelectComponent } from '../components/viewport-select/viewport-select.component';\nimport { TypeaheadDirective } from '../directives/typeahead/typeahead.directive';\nimport { CommonAlertBoxComponent } from '../components/common-alert-box/common-alert-box.component';\nimport { CommonMultiSelectComponent } from '../components/common-multi-select/common-multi-select.component';\nimport { DateFieldComponent } from '../components/form-field/date-field/date-field.component';\nimport {\n AccordionButtonDirective,\n AccordionChevronComponent,\n AccordionComponent,\n AccordionPanelContentDirective,\n AccordionPanelDirective,\n AccordionPanelHeaderDirective,\n AccordionPanelToggleDirective,\n} from '../components/common-accordion/accordion.component';\nimport { ImageHighlighterComponent } from '../components/image-highlighter/image-highlighter.component';\nimport { UserMfaComponent } from '../components/user-mfa/user-mfa.component';\nimport { FileDragAndDropComponent } from '../components/form-field/file-upload/file-drag-and-drop/file-drag-and-drop.component';\nimport { InfoModalComponent } from '../components/modals/info-modal/info-modal.component';\nimport { SecureResourceIdDirective } from '../components/image/secure-resource-id.directive';\nimport { BytesToReadableUnitsPipe } from '../pipes/bytes-to-readable-units.pipe';\nimport { LanguageNamePipe } from '../pipes/language-name.pipe';\nimport { CommonCheckboxSelectComponent } from '../components/common-checkbox-select/common-checkbox-select.component';\nimport { CommonSpinnerComponent } from '../components/common-spinner/common-spinner.component';\nimport { CommonCheckboxTreeComponent } from '../components/common-checkbox-tree/common-checkbox-tree.component';\nimport { CheckboxTreeNodeComponent } from '../components/common-checkbox-tree/checkbox-tree-node/checkbox-tree-node.component';\nimport { FocusDirective } from '../directives/focus/focus.directive';\nimport { TestingToolFilterComponent } from '../components/testing-tool-filter/testing-tool-filter.component';\nimport { TurnOffMonitoringConfirmationComponent } from '../components/digital-property-monitoring/turn-off-monitoring-confirmation/turn-off-monitoring-confirmation.component';\nimport { MonitoringQuickSetupComponent } from '../components/digital-property-monitoring/quick-setup/monitoring-quick-setup.component';\nimport { MonitoringScopeStepComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-scope-step/monitoring-scope-step.component';\nimport { ExcludePagesComponent } from '../components/exclude-pages/exclude-pages.component';\nimport { MonitoringScheduleStepComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-schedule-step/monitoring-schedule-step.component';\nimport { MonitoringScanSettingsStepComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-scan-settings-step/monitoring-scan-settings-step.component';\nimport { EapIconsComponent } from './eap-icons.component';\nimport { IconComponent } from '../components/icon/icon.component';\nimport { MonitoringAlertsStepComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-step.component';\nimport { MonitoringAlertsEditorComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-alerts-step/monitoring-alerts-editor/monitoring-alerts-editor.component';\nimport { MonitoringReviewStepComponent } from '../components/digital-property-monitoring/advanced-setup/steps/monitoring-review-step/monitoring-review-step.component';\nimport { TenantSelectorComponent } from '../components/tenant-selector/tenant-selector.component';\nimport { AriaSortDirective } from '../directives/aria-sort/aria-sort.directive';\nimport { AriaLabelSortDirective } from '../directives/aria-label-sort/aria-label-sort.directive';\nimport { MonitoringAlertTableComponent } from '../components/monitoring-alert-table/monitoring-alert-table.component';\nimport { CommonLinkComponent } from '../components/common-link/common-link.component';\nimport { CtrlKeyDirective } from '../directives/ctrl-key/ctrl-key.directive';\nimport { FilterNumberComponent } from '../components/filtering/number/filter-number.component';\nimport { ResolvedFindingsProgressComponent } from '../components/resolved-findings-progress/resolved-findings-progress.component';\nimport { RuleIssuesSupplementaryTableComponent } from '../components/rule-issues-table/rule-issues-supplementary-table.component';\nimport { ProgressDoughnutComponent } from '../components/progress-doughnut/progress-doughnut.component';\nimport { EditAttachmentModalComponent } from '../components/attachment-thumbnail/edit-attachment/edit-attachment-modal.component';\nimport { FocusFirstFocusableElementDirective } from '../directives/focus-first-focusable-element/focus-first-focusable-element.directive';\nimport { NgbNavDirective } from '../directives/ngb-nav/ngb-nav.directive';\nimport { CommonTrendComponent } from '../components/common-trend/common-trend.component';\nimport { TrapFocusDirective } from '../directives/trap-focus/trap-focus.directive';\nimport { AccordionFilterComponent } from '../components/filtering/accordion-filter/accordion-filter.component';\nimport { DropdownCellComponent } from '../components/table/ngb-table/cells/dropdown-cell/dropdown-cell.component';\nimport { DocumentFilesCellComponent } from '../components/table/ngb-table/cells/document-files-cell/document-files-cell.component';\nimport { EmptyCellComponent } from '../components/table/ngb-table/cells/empty-cell/empty-cell.component';\nimport { AttachmentsCellComponent } from '../components/table/ngb-table/cells/attachments-cell/attachments-cell.component';\nimport { ButtonCellComponent } from '../components/table/ngb-table/cells/button-cell/button-cell.component';\nimport { CheckboxCellComponent } from '../components/table/ngb-table/cells/checkbox-cell/checkbox-cell.component';\nimport { DataPointCellComponent } from '../components/table/ngb-table/cells/data-point-cell/data-point-cell.component';\nimport { ComposedCellComponent } from '../components/table/ngb-table/cells/composed-cell/composed-cell.component';\nimport { ExternalLinkButtonCellComponent } from '../components/table/ngb-table/cells/external-link-button-cell/external-link-button-cell.component';\nimport { ExternalLinkCellComponent } from '../components/table/ngb-table/cells/external-link-cell/external-link-cell.component';\nimport { HtmlCellComponent } from '../components/table/ngb-table/cells/html-cell/html-cell.component';\nimport { HtmlHighlightCellComponent } from '../components/table/ngb-table/cells/html-highlight-cell/html-highlight-cell.component';\nimport { IssueStateLabelCellComponent } from '../components/table/ngb-table/cells/issue-state-label-cell/issue-state-label-cell.component';\nimport { IssuesViewDetailsCellComponent } from '../components/table/ngb-table/cells/issues-view-details-cell/issue-view-details-cell.component';\nimport { LinkCellComponent } from '../components/table/ngb-table/cells/link-cell/link-cell.component';\nimport { LinksOrderedListCellComponent } from '../components/table/ngb-table/cells/links-ordered-list-cell/links-ordered-list-cell.component';\nimport { OrderedListCellComponent } from '../components/table/ngb-table/cells/ordered-list-cell/ordered-list-cell.component';\nimport { PendingCellComponent } from '../components/table/ngb-table/cells/pending-cell/pending-cell.component';\nimport { RuleStatusToggleCellComponent } from '../components/table/ngb-table/cells/rule-status-toggle-cell/rule-status-toggle-cell.component';\nimport { ScoreCellComponent } from '../components/table/ngb-table/cells/score-cell/score-cell.component';\nimport { SecureImageCellComponent } from '../components/table/ngb-table/cells/secure-image-cell/secure-image-cell.component';\nimport { SelectCellComponent } from '../components/table/ngb-table/cells/select-cell/select-cell.component';\nimport { SeverityCellComponent } from '../components/table/ngb-table/cells/severity-cell/severity-cell.component';\nimport { TemplateCellComponent } from '../components/table/ngb-table/cells/template-cell/template-cell.component';\nimport { TextCellComponent } from '../components/table/ngb-table/cells/text-cell/text-cell.component';\nimport { TextWithIconCellComponent } from '../components/table/ngb-table/cells/text-with-icon-cell/text-with-icon-cell.component';\nimport { ThumbnailCellComponent } from '../components/table/ngb-table/cells/thumbnail-cell/thumbnail-cell.component';\nimport { TitleCellComponent } from '../components/table/ngb-table/cells/title-cell/title-cell.component';\nimport { TypeAheadCellComponent } from '../components/table/ngb-table/cells/type-ahead-cell/type-ahead-cell.component';\nimport { TooltipCellComponent } from '../components/table/ngb-table/cells/tooltip-cell/tooltip-cell.component';\nimport { UserAccountStatusCellComponent } from '../components/table/ngb-table/cells/user-account-status-cell/user-account-status-cell.component';\nimport { BaseCellComponent } from '../components/table/ngb-table/cells/base-cell/base-cell.component';\nimport { RuleFilterComponent } from '../components/rule-filter/rule-filter.component';\nimport { CommonPipesModule } from './common-pipes.module';\nimport { FeatureFlagDirective } from '../directives/feature-flag/feature-flag.directive';\nimport { OverdueUnresolvedFindingsBySeverityComponent } from '../components/overdue-unresolved-findings-by-severity/overdue-unresolved-findings-by-severity.component';\nimport { DeprecatedScanTagSelectorComponent } from '../components/deprecated-scan-tag-selector/deprecated-scan-tag-selector.component';\nimport { AccessibilityConformanceLevelSelectorComponent } from '../components/accessibility-conformance-level-selector/accessibility-conformance-level-selector.component';\nimport { CodeBlockComponent } from '../components/code-block/code-block.component';\nimport { SecureAlertComponent } from '../components/secure-alert/secure-alert.component';\nimport { CompactNumberPipe } from '../pipes/compact-number.pipe';\nimport { NewNavCardDirective } from '../directives/new-nav-card/new-nav-card.directive';\nimport { TranslateCutPipe } from '../pipes/translate-cut.pipe';\nimport { RiskScoreExplanationModalComponent } from '../components/dashboard/risk-score/risk-score-explanation-modal/risk-score-explanation-modal.component';\nimport { WebsitesAppsByRiskManagementStatusComponent } from '../components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status.component';\nimport { WebsitesAppsByRiskManagementStatusChartComponent } from '../components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-managment-chart.component';\nimport { WebsitesAppsByRiskManagementStatusTableModalComponent } from '../components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-chart/websites-apps-by-risk-management-table-modal/websites-apps-by-risk-management-table-modal.component';\nimport { WebsitesAppsByRiskManagementStatusDetailsComponent } from '../components/websites-apps-by-risk-management-status/websites-apps-by-risk-management-status-details/websites-apps-by-risk-management-status-details.component';\nimport { OrganizationPermissionsTableComponent } from '../components/users/edit-user/organization-permissions-table/organization-permissions-table.component';\nimport { WorkspacePermissionsTableComponent } from '../components/users/edit-user/workspace-permissions-table/workspace-permissions-table.component';\nimport { EditPermissionsBannerComponent } from '../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\nimport { DigitalPropertyPermissionsTableComponent } from '../components/users/edit-user/digital-property-permissions-table/digital-property-permissions-table.component';\nimport { ConnectionErrorModalComponent } from '../components/issue-tracking/edit-connection/connection-error-modal/connection-error-modal.component';\nimport { AddPageModalComponent } from '../pages/public/pages/upsert-page/add-page-modal/add-page-modal.component';\nimport { ToolTemplateComponent } from '../pages/public/integrations/test-automation/tool-template/tool-template';\nimport { UpsertTaskSlideoutComponent } from '../pages/public/projects/tasks/upsert-task-slideout/upsert-task-slideout.component';\nimport { AuditRuleTableComponent } from '../components/audit-rule/audit-rule-table/audit-rule-table.component';\nimport { AuditRuleViewComponent } from '../components/audit-rule/audit-rule-view/audit-rule-view.component';\nimport { UpsertAuditRuleFormComponent } from '../components/audit-rule/upsert-audit-rule-form/upsert-audit-rule-form.component';\nimport { UpsertAuditRuleComponent } from '../components/audit-rule/upsert-audit-rule/upsert-audit-rule.component';\nimport { AuditDeleteRuleModalContentComponent } from '../components/audit-rule/audit-delete-rule-modal-content/audit-delete-rule-modal-content.component';\nimport { CreateProjectSlideoutComponent } from '../pages/public/projects/create-project-slideout/create-project-slideout.component';\nimport { BannerComponent } from '../components/banner/banner.component';\nimport { DSButtonCellComponent } from '../components/table/ngb-table/cells/ds-button-cell/ds-button-cell.component';\nimport { RiskManagementStatusStepperComponent } from '../components/dashboard/risk-score/risk-management-status-stepper/risk-management-status-stepper.component';\nimport { DisconnectedTasksModalComponent } from '../components/issue-tracking/edit-connection/disconnected-tasks-modal/disconnected-tasks-modal.component';\nimport { FilterSelectComponent } from '../components/filtering/select/filter-select.component';\nimport { DsConfirmationModalComponent } from '../components/ds-confirmation-modal/ds-confirmation-modal.component';\nimport { AdminPortalPermissionsTableComponent } from '../components/users/edit-user/admin-portal-permissions-table/admin-portal-permissions-table.component';\nimport { IsNullishPipe } from '../pipes/is-nullish.pipe';\nimport { DashboardUserPreferencesSlideoutComponent } from '../pages/public/organization/program-dashboard/user-preferences-slideout/user-preferences-slideout.component';\nimport { HandlePopupsComponent } from '../pages/public/automated-scan/advanced/scan-scope/handle-popups/handle-popups.component';\nimport { ScoreChartComponent } from '../components/score-chart/score-chart.component';\nimport { BreadcrumbWrapperComponent } from '../components/breadcrumb-wrapper/breadcrumb-wrapper.component';\nimport { DSChipCellComponent } from '../components/table/ngb-table/cells/ds-chip-cell/ds-chip-cell.component';\nimport { DsSeverityCellComponent } from '../components/table/ngb-table/cells/ds-severity-cell/ds-severity-cell.component';\nimport { ScanPreScanFlowComponent } from '../components/scan-pre-scan-flow/scan-pre-scan-flow.component';\nimport { TranslateTemplatesDirective } from '../directives/translate-templates/translate-templates.directive';\nimport { WaitTimeComponent } from '../pages/public/automated-scan/advanced/scan-scope/wait-time/wait-time.component';\nimport { CustomRuleSeverityComponent } from '../components/custom-rule-severity/custom-rule-severity.component';\nimport { ToggleSwitchComponent } from '../components/toggle-switch/toggle-switch.component';\n\nconst tableComponents: Type[] = [\n NgbTableComponent,\n DclWrapperComponent,\n NgbTableEmptyStateComponent,\n BaseCellComponent,\n ButtonCellComponent,\n DSButtonCellComponent,\n DSChipCellComponent,\n DsSeverityCellComponent,\n HtmlCellComponent,\n TitleCellComponent,\n HtmlHighlightCellComponent,\n CheckboxCellComponent,\n IssueStateLabelCellComponent,\n DropdownCellComponent,\n LinkCellComponent,\n SeverityCellComponent,\n TextCellComponent,\n ExternalLinkCellComponent,\n ScoreCellComponent,\n DataPointCellComponent,\n ComposedCellComponent,\n IssuesViewDetailsCellComponent,\n ExternalLinkButtonCellComponent,\n PendingCellComponent,\n AttachmentsCellComponent,\n ThumbnailCellComponent,\n OrderedListCellComponent,\n LinksOrderedListCellComponent,\n UserAccountStatusCellComponent,\n TemplateCellComponent,\n SecureImageCellComponent,\n DocumentFilesCellComponent,\n TextWithIconCellComponent,\n SelectCellComponent,\n TypeAheadCellComponent,\n TooltipCellComponent,\n EmptyCellComponent,\n RuleStatusToggleCellComponent,\n];\n\nconst stepper: Type[] = [\n HorizontalStepperComponent,\n StepComponent,\n StepHeaderComponent,\n StepContentDirective,\n StepNextDirective,\n StepPreviousDirective,\n];\n\nconst pipes: Type[] = [\n TranslateHtmlPipe,\n SanitizerPipe,\n FilterPipe,\n DateTimePipe,\n ArrayReversePipe,\n ArrayToStringPipe,\n FieldInvalidPipe,\n KeysPipe,\n LinkifyHtmlPipe,\n LinkifyPipe,\n PrettifyDatePipe,\n EllipsisPipe,\n BytesToReadableUnitsPipe,\n CompactNumberPipe,\n TranslateCutPipe,\n LanguageNamePipe,\n IsNullishPipe,\n];\n\nconst formComponents: Type[] = [\n FileDragAndDropComponent,\n FormFieldErrorComponent,\n FileInputComponent,\n CustomFileInputComponent,\n CommonInputComponent,\n CommonInputInPlaceEditorComponent,\n CommonLinkComponent,\n CommonFileDropboxComponent,\n CommonTextareaComponent,\n CommonCheckboxSelectComponent,\n MultiselectTypeaheadComponent,\n CommonDragAndDropFilesComponent,\n MarkdownEditorComponent,\n SearchboxComponent,\n FormFieldCharCountComponent,\n];\n\nconst sharedComponents: Type[] = [\n ModalContainerComponent,\n LazyImageDirective,\n CollapseDirective,\n FileDropDirective,\n NativeElementInjectorDirective,\n NoDoubleActivateDirective,\n InputOnlyNumbersDirective,\n TooltipDirective,\n FocusFirstFocusableElementDirective,\n TabsDirective,\n FormElementStateDirective,\n CloseActionMenuDirective,\n DownloadLinkDirective,\n TranslatedLinksDirective,\n TranslateTemplatesDirective,\n CtrlKeyDirective,\n TreeComponent,\n AlertComponent,\n BannerComponent,\n FormErrorMessagesComponent,\n ErrorMessageComponent,\n NotificationsComponent,\n DownloadReportNewComponent,\n ExportReportButtonComponent,\n CropImageComponent,\n TooltipComponent,\n TypeaheadComponent,\n CopyToClipboardComponent,\n ScanActionsComponent,\n RuleSeverityComponent,\n CustomRuleSeverityComponent,\n RuleFilterComponent,\n ...pipes,\n HighlightDirective,\n HasPermissionsDirective,\n AriaSortDirective,\n AriaLabelSortDirective,\n ViewportBoxComponent,\n ViewportInlineComponent,\n PaginationEntriesPerPageComponent,\n PaginationArrowsNavigationComponent,\n FilteringInputComponent,\n DatetimeLocalComponent,\n DateFieldComponent,\n CustomTableComponent,\n TabsComponent,\n DigitalPropertyWorkspaceFilterComponent,\n TableEmptyStateComponent,\n ScanScoreCircleComponent,\n ScoreChartComponent,\n CommonSwitchComponent,\n CommonNameTagComponent,\n CommonCheckboxComponent,\n CommonSelectComponent,\n CommonInfoNoteComponent,\n AccordionComponent,\n AccordionChevronComponent,\n AccordionItemComponent,\n SortSelectorComponent,\n ViewportCustomValuesComponent,\n LabelValueComponent,\n ScanAuthenticationDetailsComponent,\n ScanPreScanFlowComponent,\n DomainRestrictionsComponent,\n ScanExtraHeadersComponent,\n MonitoringAlertIconComponent,\n MonitoringLabelComponent,\n RuleStatusToggleComponent,\n DeprecatedScanTagSelectorComponent,\n ScanTagSelectorComponent,\n FilterKeywordComponent,\n FilterCheckboxComponent,\n FilterNumberComponent,\n FilterSelectComponent,\n FilterHostDirective,\n ScanTagFilterComponent,\n StatusComponent,\n AvatarInputComponent,\n EditUserComponent,\n EditPermissionsBannerComponent,\n AdminPortalPermissionsTableComponent,\n OrganizationPermissionsTableComponent,\n WorkspacePermissionsTableComponent,\n DigitalPropertyPermissionsTableComponent,\n ViewSingularRuleHistoryComponent,\n ViewRuleHistoryItemComponent,\n ViewFlawStatusHistoryComponent,\n ViewFlawStatusHistoryItemComponent,\n RuleIssuesTableComponent,\n RuleIssuesSupplementaryTableComponent,\n ScanHealthChartComponent,\n ScanAnalyticsHealthGraphComponent,\n MonitoringTrendModalComponent,\n CommonCommentComponent,\n UpsertTaskModalComponent,\n UpsertTaskSlideoutComponent,\n CreateProjectSlideoutComponent,\n DashboardUserPreferencesSlideoutComponent,\n CommonConfirmationComponent,\n ...tableComponents,\n ...stepper,\n MarkdownViewComponent,\n AiChatMarkdownViewComponent,\n ViewAvatarComponent,\n IssuesViewDetailsComponent,\n PageLoadingStateComponent,\n AttachmentThumbnailComponent,\n EditAttachmentModalComponent,\n CheckboxConfirmationModalComponent,\n PromptConfirmationModalComponent,\n AlertModalComponent,\n ShareIssueReportModalComponent,\n ShareIssueReportUrlComponent,\n AdvancedSearchComponent,\n ResponsivePaginationComponent,\n SvgIconsComponent,\n SecureResourceIdDirective,\n GlobalSpinnerComponent,\n WorkspaceUsersListComponent,\n TableColumnSelectorComponent,\n TableColumnSelectorPanelComponent,\n BreadcrumbWrapperComponent,\n RouteWrapperComponent,\n FormFieldLineCountComponent,\n ViewportSelectComponent,\n MonitoringScopeStepComponent,\n MonitoringScheduleStepComponent,\n MonitoringScanSettingsStepComponent,\n MonitoringAlertsStepComponent,\n MonitoringAlertsEditorComponent,\n MonitoringReviewStepComponent,\n HandlePopupsComponent,\n WaitTimeComponent,\n RiskScoreExplanationModalComponent,\n RiskManagementStatusStepperComponent,\n WebsitesAppsByRiskManagementStatusComponent,\n WebsitesAppsByRiskManagementStatusChartComponent,\n WebsitesAppsByRiskManagementStatusTableModalComponent,\n WebsitesAppsByRiskManagementStatusDetailsComponent,\n TypeaheadDirective,\n FocusDirective,\n ImageHighlighterComponent,\n CommonAlertBoxComponent,\n CommonMultiSelectComponent,\n CommonTrendComponent,\n AccordionPanelHeaderDirective,\n AccordionPanelContentDirective,\n AccordionPanelDirective,\n AccordionPanelToggleDirective,\n AccordionButtonDirective,\n UserMfaComponent,\n InfoModalComponent,\n CommonSpinnerComponent,\n CommonCheckboxTreeComponent,\n CheckboxTreeNodeComponent,\n ...formComponents,\n TestingToolFilterComponent,\n TurnOffMonitoringConfirmationComponent,\n MonitoringQuickSetupComponent,\n ExcludePagesComponent,\n EapIconsComponent,\n IconComponent,\n TenantSelectorComponent,\n MonitoringAlertTableComponent,\n ResolvedFindingsProgressComponent,\n OverdueUnresolvedFindingsBySeverityComponent,\n ProgressDoughnutComponent,\n NgbNavDirective,\n TrapFocusDirective,\n AccordionFilterComponent,\n FeatureFlagDirective,\n AccessibilityConformanceLevelSelectorComponent,\n CodeBlockComponent,\n SecureAlertComponent,\n NewNavCardDirective,\n ConnectionErrorModalComponent,\n DisconnectedTasksModalComponent,\n AddPageModalComponent,\n ToolTemplateComponent,\n AuditRuleTableComponent,\n AuditRuleViewComponent,\n UpsertAuditRuleFormComponent,\n UpsertAuditRuleComponent,\n AuditDeleteRuleModalContentComponent,\n DsConfirmationModalComponent,\n ToggleSwitchComponent,\n];\n\n@NgModule({\n imports: [\n DsModule,\n RouterModule,\n CommonModule,\n FormsModule.withConfig({ callSetDisabledState: 'whenDisabledForLegacyCode' }),\n ReactiveFormsModule.withConfig({ callSetDisabledState: 'whenDisabledForLegacyCode' }),\n NgbModule,\n CommonPipesModule,\n ],\n declarations: [...sharedComponents],\n providers: [NgbActiveModal],\n exports: [\n ...sharedComponents,\n RouterModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgbModule,\n DsModule,\n CommonPipesModule,\n ],\n})\nexport class SharedModule {}\n","import { Component, HostBinding } from '@angular/core';\n\n// Note: template icons are from node_modules/open-iconic/sprite/sprite.svg\n\n@Component({\n selector: 'app-svg-icons',\n templateUrl: '../../assets/images/icons.html',\n})\nexport class SvgIconsComponent {\n @HostBinding('style.display') public none: string = 'none';\n}\n","
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","export const EN_US: Readonly = {\n ID: 'en-us',\n STRINGS: {},\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { TranslateService } from './translate.service';\n\n@Pipe({\n name: 'translateHtml',\n})\nexport class TranslateHtmlPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n public transform(value: string, args?: string | string[] | number | number[]): any {\n return this.translateService.instantHtml(value, args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { TranslateService } from './translate.service';\n\n@Pipe({\n name: 'translate',\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n public transform(value: string, args?: Array | string | number): any {\n return this.translateService.instant(value, args as string[]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { EN_US } from './lang-en';\nimport { config } from '../../environments/config.shared';\nimport { RestService } from '../services/rest.service';\nimport { UserService } from '../services/user.service';\nimport { IUserClient } from '../interfaces/user.interface';\nimport { StatusService } from '../services/status.service';\nimport { $user } from '../../../shared/constants/user';\nimport { CommonUtility } from '../utility/common.utility';\nimport { CookieService } from '../services/cookie.service';\nimport { ICountries } from '../../../shared/interfaces/countries.interface';\nimport { ITranslationClientConfig, ITranslationsClient } from '../../../shared/interfaces/translations.interface';\nimport { SharedTextUtility } from '../../../shared/utils/text.utility';\nimport { ILanguageItem } from '../interfaces/translate.interface';\nimport { IUserCountryResponse } from '../../../shared/interfaces/user.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\nexport const TRANSLATIONS_VALUE_PLACEHOLDER: string = '%';\n\ntype StringOrNumber = string | number;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateService {\n private currentLanguage: BehaviorSubject;\n private translations: { [key: string]: ITranslationsClient };\n private availableTranslations: Map; // Map of locale=>config\n\n public currentLanguage$: Observable;\n public localeCookie: string;\n\n constructor(\n private cookieService: CookieService,\n private domSanitizer: DomSanitizer,\n private restService: RestService,\n private userService: UserService,\n private statusService: StatusService,\n ) {\n this.availableTranslations = new Map();\n this.localeCookie = 'locale';\n this.currentLanguage = new BehaviorSubject(this.defaultLanguage);\n this.currentLanguage$ = this.currentLanguage.asObservable();\n this.translations = {\n [EN_US.ID]: EN_US.STRINGS,\n };\n }\n\n private translate(key: string, language: string = this.currentLang): string {\n if (key === '') {\n return key;\n }\n\n if (this.translations[language] && this.translations[language][key]) {\n return this.translations[language][key];\n }\n\n if (this.translations[this.defaultLanguage] && this.translations[this.defaultLanguage][key]) {\n console.warn(`Key not translated in ${language}: ${key}`);\n return this.translations[this.defaultLanguage][key];\n }\n\n // console.warn(`Key not translated at all: ${key}`);\n return key;\n }\n\n private replaceHtml(translation: string, words: string | string[] = ''): SafeHtml {\n const _translation: string = TranslateService.replace(translation, words);\n return this.domSanitizer.bypassSecurityTrustHtml(_translation);\n }\n\n private convertToStrings = (value: number | string): string => {\n return String(value);\n };\n\n private use(lang: string): void {\n this.currentLanguage.next(lang);\n }\n\n private async setTranslations(\n languageRegion: string,\n _config: ITranslationClientConfig,\n translations: { [key: string]: any },\n ): Promise {\n try {\n if (typeof translations === 'undefined' || (translations && typeof _config === 'undefined')) {\n console.error(\n '[TranslateService.initializeTranslations.resolveTranslations.setTranslations]',\n languageRegion,\n translations,\n );\n this.use(this.defaultLanguage);\n } else {\n this.setupTranslations(_config, translations);\n this.use(_config.locale);\n }\n } catch (err) {\n this.use(this.defaultLanguage);\n }\n this.statusService.setAreTranslationsReady(true);\n }\n\n private setupTranslations(_config: ITranslationClientConfig, translations: Pick): void {\n this.translations[_config.locale] = { _config };\n\n const setTranslationKey = (key: string): void => {\n if (typeof translations[key] === 'string') {\n this.translations[_config.locale][key] = translations[key];\n return;\n }\n this.translations[_config.locale][key] = translations[key].value;\n return;\n };\n Object.keys(translations).forEach(setTranslationKey);\n }\n\n private async getUserLanguageRegion(): Promise {\n const user: IUserClient = await this.userService\n .getMeProfile()\n .toPromise()\n .catch(() => null);\n let languageRegion: string;\n if (SharedCommonUtility.isNullish(user)) {\n languageRegion = this.cookieService.get(this.localeCookie)\n ? this.cookieService.get(this.localeCookie)\n : CommonUtility.getPreferredAvailableLanguageAndRegion();\n } else {\n languageRegion =\n typeof user[$user.userLanguage] === 'string' && user[$user.userLanguage].length > 0\n ? user[$user.userLanguage]\n : config.locale.default;\n }\n\n languageRegion = this.getSupportedLanguage(languageRegion);\n\n if (SharedCommonUtility.isNullish(languageRegion)) {\n languageRegion = this.defaultLanguage;\n }\n\n return languageRegion;\n }\n\n private async loadAvailableTranslations(): Promise {\n const translationsList: ITranslationClientConfig[] = await this.restService.getListAvailableTranslations().toPromise();\n const setAvailableTranslations = (conf: ITranslationClientConfig): void => {\n this.availableTranslations.set(conf.locale, conf);\n if (conf.isDefault) {\n this.availableTranslations.set('default', conf);\n }\n };\n translationsList.forEach(setAvailableTranslations);\n }\n\n public static replace(translation: string, words: string | string[] = ''): string {\n const values: string[] = Array.isArray(words) ? words : [words];\n return SharedTextUtility.replacePlaceholder(translation, values, TRANSLATIONS_VALUE_PLACEHOLDER);\n }\n\n public get currentLang(): string {\n return this.currentLanguage.getValue();\n }\n\n public get defaultLanguage(): string {\n if (this.availableTranslations.has('default')) {\n return this.availableTranslations.get('default').locale;\n }\n return EN_US.ID;\n }\n\n public isTranslationAvailableForKey(key: string): boolean {\n if (this.translations[this.currentLang] && this.translations[this.currentLang][key]) {\n return true;\n }\n\n return false;\n }\n\n public getSupportedLanguage(userLanguage: string): string | null {\n if (typeof userLanguage === 'string' && userLanguage.length > 0) {\n const lang: string = userLanguage.toLowerCase();\n if (this.availableTranslations.has(lang)) {\n return this.availableTranslations.get(lang).locale;\n }\n const [region] = lang.split('-');\n const startsWithLang = (langKey: string): boolean => langKey.startsWith(region);\n const firstRegion: string = Array.from(this.availableTranslations.keys()).find(startsWithLang);\n return typeof firstRegion === 'undefined' ? null : this.availableTranslations.get(firstRegion).locale;\n }\n return undefined;\n }\n\n public async initializeTranslations(): Promise {\n await this.loadAvailableTranslations();\n\n let languageRegion: string = await this.getUserLanguageRegion();\n const { _config, ...translations } = await this.translationsData(languageRegion).toPromise();\n\n try {\n await this.setTranslations(languageRegion, _config, translations);\n } catch (error) {\n console.error('[TranslateService.initializeTranslations.onUserProfileError]', error);\n languageRegion = this.getSupportedLanguage(CommonUtility.getPreferredAvailableLanguageAndRegion().toLowerCase());\n await this.setTranslations(languageRegion, _config, translations);\n }\n }\n\n public instant(key: string, words?: StringOrNumber | StringOrNumber[], language?: string): string {\n const translation: string = this.translate(key, language);\n let _words: string | string[] = '';\n\n if (Array.isArray(words)) {\n _words = (words as Array).map(this.convertToStrings.bind(this));\n } else if (typeof words === 'number') {\n _words = String(words);\n } else if (typeof words === 'string') {\n _words = words;\n }\n\n if (_words.length === 0) {\n return translation;\n }\n\n return TranslateService.replace(translation, _words);\n }\n\n public instantHtml(key: string, words?: string | string[] | number | number[]): SafeHtml {\n const translation: string = this.translate(key);\n let _words: string | string[] = '';\n\n if (Array.isArray(words)) {\n _words = (words as Array).map(this.convertToStrings.bind(this));\n } else if (typeof words === 'number') {\n _words = String(words);\n } else if (typeof words === 'string') {\n _words = words;\n }\n\n if (_words.length === 0) {\n return translation;\n }\n\n return this.replaceHtml(translation, _words);\n }\n\n public getTranslations(locale: string): Observable {\n return this.restService.getTranslations(locale);\n }\n\n public translationsData(locale: string): Observable {\n return this.restService.translationsData(locale);\n }\n\n public saveAll(locale: string, data: ITranslationsClient): Observable {\n return this.restService.saveAllTranslations(locale, data);\n }\n\n public getListAvailableTranslations(): Observable {\n return this.restService.getListAvailableTranslations();\n }\n\n public getCountriesListForClient(): Observable {\n return this.restService.getCountriesListForClient();\n }\n\n public async getCountriesList(): Promise {\n const action = (resolve: any, reject: any): void => {\n const processLanguages = (data: any): void => {\n const languagesData: ICountries = data.default;\n resolve(languagesData);\n };\n\n import('countries-list').then(processLanguages).catch(reject);\n };\n\n return new Promise(action);\n }\n\n public getAllLanguages(countriesList: ICountries): ILanguageItem[] {\n const languagesAll: { [key: string]: { name: string; native: string; rtl?: number } } = countriesList.languagesAll;\n\n const alpabetically: (languageA: any, languageB: any) => number = (languageA: any, languageB: any): number => {\n const nA: string = languagesAll[languageA].name;\n const nB: string = languagesAll[languageB].name;\n\n if (nA < nB) {\n return -1;\n } else if (nA > nB) {\n return 1;\n }\n return 0;\n };\n\n const createLanguageItem: any = (langCode: string): ILanguageItem => {\n const langData: ILanguageItem = {\n code: langCode,\n name: languagesAll[langCode].name,\n nativeName: languagesAll[langCode].native,\n };\n\n return langData;\n };\n\n const languages: ILanguageItem[] = Object.keys(languagesAll).sort(alpabetically).map(createLanguageItem);\n\n return languages;\n }\n\n public getLanguageCode(event: any, countriesList: ICountries): string {\n const languagesAll: { [key: string]: { name: string; native: string; rtl?: number } } = countriesList.languagesAll;\n const target: HTMLInputElement = event.target;\n const languageName: string = target.value.split(/\\s\\(.*\\)/)[0];\n\n const findLanguageCode: any = (_langCode: string): boolean => {\n return languagesAll[_langCode].name === languageName;\n };\n\n const langCode: string = Object.keys(languagesAll).find(findLanguageCode);\n\n return langCode;\n }\n\n public getLanguageDetails(langCode: string, countriesList: ICountries): string {\n const languagesAll: { [key: string]: { name: string; native: string; rtl?: number } } = countriesList.languagesAll;\n const language: string[] = langCode.split('-');\n\n if (language[0].length === 0) {\n console.warn(\n '[CommonUtility.getLanguageDetails] Passed langCode as an empty string. This means that the user does not have defined language (userLanguage).',\n );\n return '';\n }\n\n return `${languagesAll[language[0]].name} (${languagesAll[language[0]].native})`;\n }\n}\n","import { UntypedFormGroup, AbstractControl } from '@angular/forms';\nimport { Router, UrlSegment, PRIMARY_OUTLET, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\ninterface ISetValueOptions {\n onlySelf?: boolean;\n emitEvent?: boolean;\n}\n\nexport class AngularUtility {\n constructor() {}\n\n public static resetFormData(formValues: any, form: UntypedFormGroup, options: ISetValueOptions): void {\n form.setValue(formValues, options);\n form.markAsPristine();\n form.markAsUntouched();\n }\n\n public static getControlName(control: AbstractControl): string | null {\n const formGroup: { [key: string]: AbstractControl } | AbstractControl[] = control.parent.controls;\n\n const findControl = (name: string): boolean => {\n return control === formGroup[name];\n };\n\n return Object.keys(formGroup).find(findControl) || null;\n }\n\n public static getRouterPaths(router: Router): string[] {\n return router\n .parseUrl(router.routerState.snapshot.url)\n .root.children[PRIMARY_OUTLET].segments.map((urlSegment: UrlSegment): string => {\n return urlSegment.path;\n });\n }\n\n public static getFullRoutePath(snapshot: ActivatedRouteSnapshot): string {\n return snapshot.pathFromRoot.map((route: ActivatedRouteSnapshot) => route.url.toString()).join('/');\n }\n\n /**\n * use as an operator in RxJS pipes. Makes sure that if multiple subscribers are subscribed to the observable, the\n * original resource only gets called once. Useful when piping from observables returned from HTTP calls.\n * Example:\n * const userNames$ = linkedPropertyData$.pipe(switchMap((..) => myservice.callHttp(..)))\n * if you use userNames$|async in the template multiple times, or if you do userNames.subscribe three times,\n * myservice.callHttp() will be actually called 3 times, and will make 3 http requests. On the other hand this:\n * const userNames$ = linkedPropertyData$.pipe(switchMap((..) => myservice.callHttp(..), AngularUtility.shareRef()))\n * will only call myservice.callHttp() once, producing one httpCall, no matter how many subscribers it has.\n *\n * @warning it is not without caveats though. may produce unexpected behavior with inter-dependent observables. see\n * this github discussion for more info: https://github.com/ReactiveX/rxjs/discussions/6605\n */\n public static shareRef() {\n return (source: Observable): Observable => source.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n }\n}\n","function getRandomCharSecure(method: (buffer: ArrayBufferView) => ArrayBufferView): string {\n const legalCharacters: string = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';\n const characterRange: number = legalCharacters.length;\n const MAX_UNSIGNED_32_BIT_INT: number = 2 ** 32 - 1;\n const quotient: number = Math.floor(MAX_UNSIGNED_32_BIT_INT / characterRange);\n const modulo: number = MAX_UNSIGNED_32_BIT_INT % characterRange;\n const randomNumber: number = method(new Uint32Array(1))[0];\n if (randomNumber >= MAX_UNSIGNED_32_BIT_INT - modulo) {\n return getRandomCharSecure(method);\n }\n return legalCharacters[Math.floor(randomNumber / quotient)];\n}\n/*\n * Math.random() is not secure. See EAP-9923 or look up PRNGs vs CSPRNG\n * Node has CSPRNGs implemented in their crypto module, while the browser has the crypto module in window.crypto\n * So this is a helper method that uses one of these two implementations to create a random case-sensitive alphanumeric\n */\nexport function _getRandomSecureString(method: (buffer: ArrayBufferView) => ArrayBufferView, length: number = 16): string {\n return [...Array(length)].map(getRandomCharSecure.bind(this, method)).join('');\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Params } from '@angular/router';\nimport { createFocusTrap, FocusTrap, Options as FocusTrapOptions } from 'focus-trap';\n\nimport { IPaginationModel, IPaginationParams } from '../interfaces/pagination.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { $paginationParams } from '../constants/pagination-params';\nimport { $sortingOrder } from '../../../shared/constants/sort';\nimport { _getRandomSecureString } from '../../../shared/utils/random-secure-string.utility';\n\nexport class CommonUtility {\n private static focusTrap: FocusTrap;\n public static isHtmlDocument(el: any): boolean {\n return Boolean(el) && el.nodeType === Node.DOCUMENT_NODE;\n }\n\n public static createUniqueDOMId(preferredId?: string): string {\n if (typeof preferredId === 'string' && preferredId.trim().length > 0 && document.getElementById(preferredId) === null) {\n return preferredId;\n }\n let id: string;\n\n do {\n id = `uid_${SharedCommonUtility.getRandomInsecureString()}`;\n } while (document.getElementById(id));\n\n return id;\n }\n\n public static getKeyCode(event: KeyboardEvent): number {\n return event.type === 'keypress' ? event.charCode || event.keyCode || event.which : event.which || event.keyCode;\n }\n\n public static setFocusToElement(_id: string, element?: HTMLElement): void {\n const setFocus: any = (): void => {\n const htmlElement: HTMLElement = typeof _id === 'string' ? document.getElementById(_id) : element;\n\n if (CommonUtility.isHtmlElement(htmlElement) === false) {\n return;\n }\n\n htmlElement.focus();\n };\n\n window.setTimeout(setFocus);\n }\n\n public static getPageSize(): { height: number; width: number } {\n const body: HTMLElement = document.body;\n const root: HTMLElement = document.documentElement;\n\n const pageHeight: number = Math.max(\n body.scrollHeight,\n body.offsetHeight,\n body.clientHeight,\n root.scrollHeight,\n root.offsetHeight,\n root.clientHeight,\n );\n const pageWidth: number = Math.max(\n body.scrollWidth,\n body.offsetWidth,\n body.clientWidth,\n root.clientWidth,\n root.scrollWidth,\n root.offsetWidth,\n );\n\n return {\n height: pageHeight,\n width: pageWidth,\n };\n }\n\n public static getPageScroll(): { scrollX: number; scrollY: number } {\n let scrOfX: number = 0;\n let scrOfY: number = 0;\n\n if (typeof window.pageYOffset === 'number') {\n scrOfY = window.pageYOffset;\n scrOfX = window.pageXOffset;\n } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {\n scrOfY = document.body.scrollTop;\n scrOfX = document.body.scrollLeft;\n } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {\n scrOfY = document.documentElement.scrollTop;\n scrOfX = document.documentElement.scrollLeft;\n }\n\n return { scrollX: scrOfX, scrollY: scrOfY };\n }\n\n public static calculateColumnsPagination(totalItems: number, currentPage: number = 1, pageSize: number = 10): IPaginationModel {\n const totalPages: number = Math.ceil(totalItems / pageSize);\n let _currentPage: number = currentPage;\n\n if (_currentPage < 1) {\n _currentPage = 1;\n } else if (_currentPage > totalPages) {\n _currentPage = totalPages;\n }\n\n let startPage: number;\n let endPage: number;\n\n const columns: number = 6;\n const middle: number = Math.ceil(columns / 2);\n\n if (totalPages <= columns) {\n startPage = 1;\n endPage = totalPages;\n } else if (_currentPage <= middle + 1) {\n startPage = 1;\n endPage = columns;\n } else if (_currentPage + middle - 1 >= totalPages) {\n startPage = totalPages - (columns - 1);\n endPage = totalPages;\n } else {\n startPage = _currentPage - middle;\n endPage = _currentPage + middle - 1;\n }\n\n const startIndex: number = (_currentPage - 1) * pageSize;\n const endIndex: number = Math.min(startIndex + pageSize - 1, totalItems - 1);\n\n // Array of pages for ngFor\n const getNextPage: any = (i: number): number => {\n return startPage + i;\n };\n\n const pages: any = Array.from(Array(endPage + 1 - startPage).keys()).map(getNextPage);\n\n return {\n totalItems: totalItems,\n currentPage: _currentPage,\n pageSize: pageSize,\n totalPages: totalPages,\n startPage: startPage,\n endPage: endPage,\n startIndex: startIndex,\n endIndex: endIndex,\n pages: pages,\n };\n }\n\n public static isHostMethod(obj: any, method: string): boolean {\n const reMethod: RegExp = /^(function|object)$/;\n const reUnknown: RegExp = /^unknown$/;\n\n if (!obj) {\n return false;\n }\n\n const t: string = typeof obj[method];\n\n return reUnknown.test(t) || (reMethod.test(t) && obj) || false;\n }\n\n public static isHostObjectProperty(obj: Function | Document | Element | Record, property: string): boolean {\n const reMethod: RegExp = /^(function|object)$/;\n const t: string = typeof obj[property];\n\n return Boolean(reMethod.test(t) && obj[property]);\n }\n\n public static isRealObjectProperty(obj: any, prop: string): boolean {\n return Boolean(typeof obj[prop] === 'object' && obj[prop]);\n }\n\n // Based on: http://javascript.nwbox.com/CSSSupport/\n public static isCSSselectorSupported(selector: string): boolean {\n let isSupported: boolean = false;\n\n if (selector.length === 0) {\n return isSupported;\n }\n\n const root: Element = document.documentElement;\n const head: HTMLHeadElement = document.head;\n\n const styleEl: HTMLStyleElement = document.createElement('style');\n\n styleEl.type = 'text/css';\n\n (head || root).insertBefore(styleEl, (head || root).firstChild);\n\n const sheet: CSSGroupingRule = styleEl.sheet || (styleEl as any).styleSheet;\n\n // sheet could be null or undefined\n if (Boolean(sheet) === false) {\n return isSupported;\n }\n\n const css2: any = (cssSelector: string): boolean => {\n try {\n sheet.insertRule(cssSelector + '{ }', 0);\n sheet.deleteRule(sheet.cssRules.length - 1);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n const css3: any = (cssSelector: string): boolean => {\n sheet.cssText = cssSelector + ' { }';\n return sheet.cssText.length !== 0 && !/unknown/i.test(sheet.cssText) && sheet.cssText.indexOf(cssSelector) === 0;\n };\n\n if (\n CommonUtility.isHostObjectProperty(document, 'implementation') &&\n CommonUtility.isHostMethod(document.implementation, 'hasFeature')\n ) {\n isSupported = css2(selector);\n } else {\n isSupported = css3(selector);\n }\n\n return isSupported;\n }\n\n public static createFormData(angularForm: T, stringArrayAsArray: boolean = false): FormData {\n const formData: FormData = new FormData();\n\n for (const key of Object.keys(angularForm)) {\n CommonUtility.appendFormData(formData, angularForm, key as keyof T, stringArrayAsArray);\n }\n\n return formData;\n }\n\n public static appendFormData(form: FormData, object: T, keyInObject: keyof T, stringArrayAsArray: boolean): void {\n const value: any = object[keyInObject];\n let data: string;\n\n if (typeof value === 'string') {\n data = value;\n } else if (value instanceof Date) {\n data = value.toISOString();\n } else if (Array.isArray(value) && value.length > 0 && (value[0] instanceof File || value[0] instanceof Blob)) {\n const appendFile: (file: File, index: number) => void = (file: File, index: number): void => {\n form.append(`${String(keyInObject)}_${index}`, file, file.name);\n };\n value.forEach(appendFile);\n return;\n } else if (value instanceof File || value instanceof Blob) {\n form.append(String(keyInObject), value, (value as File).name);\n return;\n } else if (stringArrayAsArray && Array.isArray(value) && (typeof value[0] === 'string' || typeof value[0] === 'undefined')) {\n for (const valueElement of value) {\n form.append(String(keyInObject), valueElement);\n }\n return;\n } else {\n data = JSON.stringify(value);\n }\n\n form.append(String(keyInObject), data);\n return;\n }\n\n public static triggerClickEventOnElement(elementId: string): void {\n // Details: https://blog.mariusschulz.com/2016/05/31/programmatically-opening-a-file-dialog-with-javascript\n const eventProperties: MouseEventInit = {\n bubbles: false,\n cancelable: true,\n view: window,\n };\n\n const eventObject: MouseEvent = new MouseEvent('click', eventProperties);\n const inputTypeFile: HTMLElement = document.getElementById(elementId);\n\n inputTypeFile.dispatchEvent(eventObject);\n }\n\n public static scrollElementIntoView(\n element: string | HTMLElement,\n options: ScrollIntoViewOptions = { behavior: 'auto', block: 'start' },\n ): void {\n const el: HTMLElement = typeof element === 'string' ? document.getElementById(element) : element;\n\n if (CommonUtility.isHostMethod(el, 'scrollIntoView') === false) {\n return;\n }\n\n el.scrollIntoView(options);\n }\n\n public static scrollPageToTop(): void {\n const options: ScrollToOptions = {\n top: 0,\n left: 0,\n behavior: 'smooth',\n };\n\n window.scrollTo(options);\n }\n\n public static isFormActionElement(event: Event): boolean {\n const currentTarget: HTMLFormElement = event.currentTarget as HTMLFormElement;\n const eventTarget: HTMLElement = event.target || (event.srcElement as any);\n const targetName: string = eventTarget.nodeName.toLowerCase();\n\n let isFormActionElement: boolean = false;\n\n if (currentTarget.nodeName.toLowerCase() === eventTarget.nodeName.toLowerCase()) {\n isFormActionElement = true;\n return isFormActionElement;\n }\n\n if (currentTarget.nodeName.toLowerCase() !== 'form') {\n return isFormActionElement;\n }\n\n const formElements: HTMLFormControlsCollection = currentTarget.elements;\n const len: number = formElements.length;\n\n for (let i: number = 0; i < len; i += 1) {\n if (targetName === formElements[i].nodeName.toLowerCase()) {\n isFormActionElement = true;\n break;\n }\n }\n\n return isFormActionElement;\n }\n\n public static getRootElement(): HTMLElement {\n return document.documentElement || document.getElementsByTagName('html')[0];\n }\n\n public static requestIdleCallback(fn: Function): void {\n if (CommonUtility.isHostMethod(window, 'requestIdleCallback')) {\n (window as any).requestIdleCallback(fn);\n return;\n }\n\n window.setTimeout(fn, 50);\n }\n\n public static isEventSupported(event: string, htmlElement?: HTMLElement): boolean {\n const TAGNAMES: { [key: string]: string } = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img',\n };\n\n let element: HTMLElement = htmlElement || document.createElement(TAGNAMES[event] || 'div');\n const eventName: string = 'on' + event;\n\n // When using `setAttribute`, IE skips \"unload\", WebKit skips \"unload\" and \"resize\", whereas `in` \"catches\" those\n let isSupported: boolean = eventName in document;\n\n if (isSupported === false) {\n if (CommonUtility.isHostMethod(element, 'setAttribute') === false) {\n element = document.createElement('div');\n }\n\n if (CommonUtility.isHostMethod(element, 'setAttribute') && CommonUtility.isHostMethod(element, 'removeAttribute')) {\n element.setAttribute(eventName, '');\n isSupported = typeof element[eventName] === 'function';\n\n if (typeof element[eventName] !== 'undefined') {\n element[eventName] = undefined;\n }\n\n element.removeAttribute(eventName);\n }\n }\n\n return isSupported;\n }\n\n public static getDocumentWindow(): Window | undefined {\n if (CommonUtility.isRealObjectProperty(document, 'parentWindow')) {\n return (document as any).parentWindow;\n }\n if (CommonUtility.isRealObjectProperty(document, 'defaultView') && document.defaultView === window) {\n return document.defaultView;\n }\n if (CommonUtility.isRealObjectProperty(document, '__parent__')) {\n return (document as any).__parent__;\n }\n return undefined;\n }\n\n public static getPreferredAvailableLanguageAndRegion(): string {\n const defaultLanguage: string = 'en-us';\n\n if (typeof window.navigator.language === 'string' && window.navigator.language.length > 0) {\n return window.navigator.language;\n }\n\n if (Array.isArray(window.navigator.languages) && window.navigator.languages.length > 0) {\n return window.navigator.languages[0];\n }\n\n return defaultLanguage;\n }\n\n // EAP-12286: change parameter typing back to Element | Node once we resolve typing collision\n public static isHtmlElement(el: any): boolean {\n return (\n (typeof Element !== 'undefined' && el instanceof Element) ||\n (typeof HTMLElement !== 'undefined' && el instanceof HTMLElement) ||\n (typeof HTMLDocument !== 'undefined' && el instanceof HTMLDocument) ||\n (typeof el === 'object' &&\n el !== null &&\n el.nodeType === Node.ELEMENT_NODE &&\n typeof (el as any).style === 'object' &&\n typeof el.ownerDocument === 'object')\n );\n }\n\n public static getStyle(element: Element, styleProp: string, pseudoElt?: string): string | null {\n const isHtmlElement: boolean = CommonUtility.isHtmlElement(element);\n\n if (isHtmlElement === false) {\n return null;\n }\n\n if (CommonUtility.isHostMethod(window, 'getComputedStyle')) {\n return window.getComputedStyle(element, pseudoElt || null).getPropertyValue(styleProp);\n }\n\n if (CommonUtility.isRealObjectProperty(document, 'defaultView')) {\n return document.defaultView.getComputedStyle(element, pseudoElt || null).getPropertyValue(styleProp);\n }\n\n return null;\n }\n\n public static getScript(\n url: string,\n onLoaded: (this: GlobalEventHandlers, ev: Event) => any,\n onFailed?: OnErrorEventHandlerNonNull,\n id?: string,\n defer?: boolean,\n ): HTMLScriptElement {\n const script: HTMLScriptElement = document.createElement('script');\n const head: HTMLHeadElement = document.head;\n\n if (typeof url !== 'string') {\n throw new Error('[CommonUtility.getScript] missing url parameter');\n }\n\n script.src = url;\n script.type = 'text/javascript';\n script.async = true;\n\n if (typeof defer === 'boolean') {\n script.defer = defer;\n }\n\n if (id) {\n script.id = id;\n }\n\n if (onLoaded) {\n script.onload = onLoaded;\n }\n\n if (onFailed) {\n script.onerror = onFailed;\n }\n\n head.insertBefore(script, head.firstChild);\n\n return script;\n }\n\n public static isValidUrl = (str: string): boolean | undefined => {\n try {\n const url: URL = new URL(str);\n // Note: if statement here is to avoid tslint unused-variable issue\n if (url) {\n return true;\n }\n } catch (_) {\n return false;\n }\n return undefined;\n };\n\n /**\n * Tests if provided string is valid as a value to a Jira URL field.\n * (Jira uses a different implementation of the RFC 2396 url schema)\n */\n public static isValidJiraFieldUrl(str: string): boolean {\n const validator: RegExp = /^[A-Za-z][A-Za-z0-9]+:\\/\\/[^ \\^'\"<>\\[\\];\\{\\}|\\%\\\\]*[^ \\^'\"<>\\[\\];\\{\\}|\\%\\\\\\@]$/;\n return validator.test(str);\n }\n\n public static isInputTypeSupported(type: string): boolean {\n const input: HTMLInputElement = document.createElement('input');\n input.setAttribute('type', type);\n\n const invalidValue: string = 'not-a-date';\n input.setAttribute('value', invalidValue);\n\n return input.value !== invalidValue;\n }\n\n public static navigateToExternalUrl(url: string): void {\n window.location.href = url;\n }\n\n public static convertArrayBufferHTTPErrorToObject(response: HttpErrorResponse): HttpErrorResponse {\n return {\n ...response,\n error: JSON.parse(new TextDecoder('utf-8').decode(new Uint8Array(response.error))),\n };\n }\n\n public static extractHTTPErrorName(response: HttpErrorResponse): string {\n if (typeof response?.error?.app?.name === 'string') {\n return response.error.app.name;\n } else if (\n response?.error instanceof ArrayBuffer ||\n response?.error instanceof Uint8Array ||\n response?.error?.[Symbol.toStringTag] === 'Uint8Array'\n ) {\n // if we are downloading raw data, the data comes as an ArrayBuffer\n // which unfortunately includes the error as well\n return CommonUtility.extractHTTPErrorName(CommonUtility.convertArrayBufferHTTPErrorToObject(response));\n }\n return null;\n }\n\n public static isValidPaginationQueryParams(queryParams: Params): boolean {\n return (\n SharedCommonUtility.isPositiveInteger(queryParams[$paginationParams.pageNumber]) &&\n SharedCommonUtility.isPositiveInteger(queryParams[$paginationParams.pageSize])\n );\n }\n\n public static getPageNumberFromQueryParams(queryParams: Params, defaultPageNumber: number = 1): number {\n return SharedCommonUtility.isPositiveInteger(queryParams[$paginationParams.pageNumber])\n ? Number(queryParams[$paginationParams.pageNumber])\n : defaultPageNumber;\n }\n\n public static isValidSortingQueryParams(queryParams: Params, columns: string[]): boolean {\n return (\n columns.includes(queryParams[$paginationParams.sortBy]) &&\n Object.keys($sortingOrder).includes(queryParams[$paginationParams.direction])\n );\n }\n\n /**\n * Returns a securely generated string of alphanumerics, case-sensitive.\n * Do not use this method to generate keys. This method can theoretically be used in insecure contexts (HTTP)\n * so a MITM attack is possible if you use it to generate keys. We shouldn't be generating keys on the frontend anyways.\n * If you must generate keys on the frontend, use SubtleCrypto.generateKeys\n *\n * @param length\n */\n public static getRandomSecureString(length: number = 16): string {\n return _getRandomSecureString(window.crypto.getRandomValues.bind(window.crypto), length);\n }\n\n public static pickSortingParams(\n paginationParams: T,\n defaultSortingParams: Pick,\n ): Pick {\n const sortBy: string = paginationParams[$paginationParams.sortBy];\n const direction: $sortingOrder = paginationParams[$paginationParams.direction];\n\n if (\n SharedCommonUtility.isNullishOrEmpty(sortBy) ||\n SharedCommonUtility.isNullish(direction) ||\n direction === $sortingOrder.all\n ) {\n return defaultSortingParams;\n }\n\n return {\n [$paginationParams.sortBy]: sortBy,\n [$paginationParams.direction]: direction,\n };\n }\n\n /**\n * Tries to activate a focus trap on a provided element.\n * Sets global CommonUtility.focusTrap when provided a trappable element\n * Otherwise, sets global CommonUtility.focusTrap to undefined\n *\n * WARNING: when a focus trap element is deleted or hidden, an error is raised.\n * Either call CommonUtility.focusTrap?.deactivate()\n * or add a fallbackFocus option\n *\n * @param element on which to activate a focus trap\n * @param options for focus trap\n */\n public static activateFocusTrap(element: HTMLElement, options: FocusTrapOptions = { allowOutsideClick: true }): undefined {\n CommonUtility.deactivateFocusTrap();\n\n if (SharedCommonUtility.isNullish(element)) {\n return undefined;\n }\n\n try {\n const focusTrap: FocusTrap = createFocusTrap(element, options);\n focusTrap.activate();\n CommonUtility.focusTrap = focusTrap;\n } catch (err) {\n console.warn(err);\n }\n\n return undefined;\n }\n\n /**\n * Tries to deactivate the focus trap\n *\n * WARNING: when a focus trap element is deleted or hidden, an error is raised.\n * Either call CommonUtility.deactivateFocusTrap()\n * or add a fallbackFocus option to the activateFocusTrap function\n */\n public static deactivateFocusTrap(): void {\n CommonUtility.focusTrap?.deactivate();\n }\n\n public static isFocusTrapActive(): boolean {\n return CommonUtility.focusTrap?.active;\n }\n\n /**\n * Returns all focusable elements inside the provided container node\n *\n * @param container in which to look for focusable elements\n */\n public static getFocusableElements(container: Element): Element[] {\n if (SharedCommonUtility.isNullish(container)) {\n throw new Error('[CommonUtility.getFocusableElements] missing container parameter');\n }\n\n return Array.from(\n container.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'),\n ).filter((element: Element): boolean => element.getAttribute('tabindex') !== '-1');\n }\n}\n","import { CommonUtility } from './common.utility';\nimport { TranslateService } from '../translate/translate.service';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport timezones from '../../../shared/constants/timezones.json';\nimport { IDefinedTimezone } from '../../../shared/interfaces/timezone.interface';\n\nexport class DateUtility {\n constructor() {}\n\n public static timeAgo(since: string, language: string, translateService: TranslateService, useAbbreviation?: boolean): string {\n const current: number = new Date().getTime();\n const sinceTime: number = new Date(since).getTime();\n const msPerMinute: number = 60 * 1000;\n const msPerHour: number = msPerMinute * 60;\n const msPerDay: number = msPerHour * 24;\n const msPerWeek: number = msPerDay * 7;\n const msPerMonth: number = msPerDay * 30;\n const msPerYear: number = msPerDay * 365;\n\n const elapsed: number = current - sinceTime;\n\n const isIntlRelativeTimeFormatSupported: boolean =\n CommonUtility.isHostMethod(window, 'Intl') && CommonUtility.isHostMethod((window as any).Intl, 'RelativeTimeFormat');\n let rtf: any;\n\n if (isIntlRelativeTimeFormatSupported) {\n const normalizedLanguage: string = language === 'en-us-2' ? 'en-us' : language;\n rtf = new (window as any).Intl.RelativeTimeFormat(normalizedLanguage, {\n numeric: 'auto',\n });\n }\n\n let result: number;\n\n if (elapsed < msPerMinute) {\n result = Math.round(elapsed / 1000);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'seconds');\n }\n return translateService.instant(useAbbreviation ? 'n_seconds_abbreviation' : 'seconds_ago', [result]);\n } else if (elapsed < msPerHour) {\n result = Math.round(elapsed / msPerMinute);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'minutes');\n }\n return translateService.instant(useAbbreviation ? 'n_minutes_abbreviation' : 'minutes_ago', [result]);\n } else if (elapsed < msPerDay) {\n result = Math.round(elapsed / msPerHour);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'hours');\n }\n return translateService.instant(useAbbreviation ? 'n_hours_abbreviation' : 'hours_ago', [result]);\n } else if (elapsed < msPerWeek) {\n result = Math.round(elapsed / msPerDay);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'days');\n }\n return translateService.instant(useAbbreviation ? 'n_days_abbreviation' : 'days_ago', [result]);\n } else if (elapsed < msPerMonth) {\n result = Math.round(elapsed / msPerWeek);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'weeks');\n }\n return translateService.instant(useAbbreviation ? 'n_weeks_abbreviation' : 'weeks_ago', [result]);\n } else if (elapsed < msPerYear) {\n result = Math.round(elapsed / msPerMonth);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'months');\n }\n return translateService.instant(useAbbreviation ? 'n_months_abbreviation' : 'months_ago', [result]);\n }\n result = Math.round(elapsed / msPerYear);\n\n if (isIntlRelativeTimeFormatSupported && !useAbbreviation) {\n return rtf.format(-result, 'years');\n }\n return translateService.instant(useAbbreviation ? 'n_years_abbreviation' : 'years_ago', [result]);\n }\n\n /**\n * Returns the timezone value from utc timezone format.\n *\n * @param utcTimezone string or null (eg. 'America/New_York')\n * @returns timezone string or null (eg. 'Eastern Standard Time')\n */\n public static getTimezoneValueFromUtc(utcTimezone: string | null): string | null {\n if (SharedCommonUtility.isNullishOrEmpty(utcTimezone)) {\n return utcTimezone;\n }\n\n // Find the first non-DST (Daylight Saving Time) timezone that matches the UTC timezone\n const standardTimezone: IDefinedTimezone = timezones.find(\n (timezoneObj: IDefinedTimezone) => !timezoneObj.isdst && timezoneObj.utc.includes(utcTimezone),\n );\n\n return standardTimezone ? standardTimezone.value : utcTimezone;\n }\n\n public static getFormattedTime(duration: number): string {\n const seconds: number = Math.floor((duration / 1000) % 60);\n const minutes: number = Math.floor((duration / (60 * 1000)) % 60);\n const hours: number = Math.floor((duration / (60 * 60 * 1000)) % 60);\n let time: string = '';\n\n if (duration < 1) {\n return '< 1 ms';\n }\n\n if (hours > 0) {\n time += hours + 'h ';\n }\n\n if (minutes > 0) {\n time += minutes + 'm ';\n }\n\n if (seconds > 0) {\n time += seconds + 's ';\n }\n\n return time.trim();\n }\n\n public static determineUserTimeZone(): string | null {\n let userTimeZone: string | null = null;\n\n try {\n userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n console.warn('[DateUtility.determineUserTimeZone] Intl.DateTimeFormat not supported', e);\n }\n\n return userTimeZone;\n }\n\n // For Toronto, this produces a message like '2:16 p.m. EST'\n public static prettifyTime(date: Date, includeTimeZone: boolean = true): string {\n const timeZoneName: 'long' | 'short' = includeTimeZone ? 'short' : undefined;\n const timeStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat([], {\n hour: '2-digit',\n minute: '2-digit',\n timeZoneName,\n });\n\n return timeStyle.format(date);\n }\n\n // Returns something like 'October 19, 2021'\n public static prettifyDate(date: Date, formatOptions?: Intl.DateTimeFormatOptions): string {\n const defaultFormatOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n const dateStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat(\n [],\n SharedCommonUtility.notNullish(formatOptions) ? formatOptions : defaultFormatOptions,\n );\n return dateStyle.format(date);\n }\n\n // Returns something like 'Oct 19, 2021'\n public static toShortUSDate(date: Date): string {\n const dateStyle: Intl.DateTimeFormat = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n return dateStyle.format(date);\n }\n\n public static getFormattedISODate(\n dateISO: string,\n withTime: boolean = true,\n locales: Array = [],\n timeZoneName?: boolean,\n ): string {\n const localDate: Date = new Date(dateISO);\n\n if (withTime) {\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n timeZoneName: timeZoneName ? 'short' : undefined,\n };\n const dateTimeFormat: Intl.DateTimeFormat = new Intl.DateTimeFormat(locales, options);\n return dateTimeFormat.format(localDate);\n }\n\n const localMidnight: Date = new Date(localDate.getUTCFullYear(), localDate.getUTCMonth(), localDate.getUTCDate(), 0, 0, 0, 0);\n return new Intl.DateTimeFormat(locales).format(localMidnight);\n }\n\n public static formatCellDate(date: Date, timeConnector: string = ''): string {\n const localeDateString = date.toLocaleDateString(undefined, { month: 'long', day: 'numeric', year: 'numeric' });\n if (SharedCommonUtility.isNullishOrEmpty(timeConnector) === false) {\n const localeTimeString = date.toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: true });\n\n return `${localeDateString} ${timeConnector} ${localeTimeString}`;\n }\n\n return localeDateString;\n }\n}\n","export enum DeviceType {\n Mobile = 'Mobile',\n Tablet = 'Tablet',\n Desktop = 'Desktop',\n}\n\nexport enum OperatingSystem {\n WINDOWS = 'WINDOWS',\n MACOSX = 'MACOSX',\n WINDOWS_PHONE = 'WINDOWS_PHONE',\n WINDOWS_RT = 'WINDOWS_RT',\n IOS = 'IOS',\n ANDROID = 'ANDROID',\n LINUX = 'LINUX',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport const OPERATING_SYSTEMS: { [key in OperatingSystem]: string } = {\n WINDOWS: 'Windows',\n MACOSX: 'Mac OS X',\n WINDOWS_PHONE: 'Windows Phone',\n WINDOWS_RT: 'Windows RT',\n IOS: 'iOS',\n ANDROID: 'Android',\n LINUX: 'Linux',\n UNKNOWN: 'Unknown',\n};\n","import { DeviceType, OperatingSystem, OPERATING_SYSTEMS } from '../../../shared/constants/os-devices';\nimport { CommonUtility } from './common.utility';\nimport { viewportSize } from '../shared/constants';\n\nexport class DetectUtility {\n private static userAgent: string = navigator.userAgent;\n private static BROWSERS: any = {\n MSIE: 'MSIE',\n CHROME: 'Chrome',\n FIREFOX: 'Firefox',\n SAFARI: 'Safari',\n EDGE: 'Edge',\n PHANTOMJS: 'PhantomJS',\n OPERA: 'OPERA',\n UNKNOWN: 'Unknown',\n };\n\n public static getUserAgent(): string {\n return this.userAgent;\n }\n\n public static setUserAgent(ua: any): any {\n this.userAgent = ua;\n\n return ua;\n }\n\n public static hasUserAgent(str: string): any {\n return this.getUserAgent().indexOf(str) > -1;\n }\n\n public static isOpera(): any {\n return this.hasUserAgent('OPR/');\n }\n\n public static isIE(): any {\n return this.hasUserAgent('Trident');\n }\n\n public static getBrowserName(): any {\n if (this.isOpera()) {\n return this.BROWSERS.OPERA;\n }\n\n if (this.hasUserAgent(this.BROWSERS.PHANTOMJS)) {\n return this.BROWSERS.PHANTOMJS;\n }\n\n if (this.hasUserAgent(this.BROWSERS.EDGE)) {\n return this.BROWSERS.EDGE;\n }\n\n if (this.hasUserAgent(this.BROWSERS.CHROME)) {\n return this.BROWSERS.CHROME;\n }\n\n if (this.hasUserAgent(this.BROWSERS.FIREFOX)) {\n return this.BROWSERS.FIREFOX;\n }\n\n if (this.hasUserAgent(this.BROWSERS.SAFARI)) {\n return this.BROWSERS.SAFARI;\n }\n\n if (this.isIE()) {\n return this.BROWSERS.MSIE;\n }\n\n return this.BROWSERS.UNKNOWN;\n }\n\n public static getBrowserVersion(): any {\n const versionPattern: string = '([\\\\d,.]+)';\n let versionString: string;\n\n const getIEVersion = (): any => {\n const classicIeVersionMatches: any = this.userAgent.match(this.BROWSERS.MSIE + ' ' + versionPattern);\n const ieVersionMatches: any = this.userAgent.match('rv:' + versionPattern);\n\n if (classicIeVersionMatches) {\n return classicIeVersionMatches[1];\n }\n if (ieVersionMatches) {\n return ieVersionMatches[1];\n }\n\n return null;\n };\n\n const getOtherVersion = (browserName: string): any => {\n let browserNameStr: string = browserName;\n\n if (this.isOpera()) {\n browserNameStr = 'OPR';\n }\n\n if (browserName === this.BROWSERS.SAFARI) {\n browserNameStr = 'Version';\n }\n\n const matches: any = this.userAgent.match(browserNameStr + '/' + versionPattern);\n\n if (matches) {\n return matches[1];\n }\n\n return null;\n };\n\n if (this.isIE()) {\n versionString = getIEVersion();\n } else {\n versionString = getOtherVersion(this.getBrowserName());\n }\n\n return parseFloat(versionString);\n }\n\n public static getDeviceType(): DeviceType | undefined {\n const mobile: RegExp =\n /(android|ipad|ipod|windows phone|wpdesktop|windows ce|blackberry\\w*|meego|webos|palm|symbian|pda|\\w*?mobile\\w*?|\\w*?phone\\w*?)/i;\n const tablet: RegExp = /(tablet|ipad|playbook|silk)|(android(?!.*mobile))/i;\n let device: DeviceType;\n\n if (this.userAgent.match(tablet)) {\n // Note: Currently IE on PCs with touch devices returns 'Tablet PC' in user agent. The string on MS surface is actually same.\n // If we use this as reporting we will send all touch desktop PCs as tablets (in IE)\n device = DeviceType.Tablet;\n } else if (this.userAgent.match(mobile)) {\n device = DeviceType.Mobile;\n } else {\n device = DeviceType.Desktop;\n }\n\n return device;\n }\n\n // Note: extend this to handle window.resize\n public static getViewportSize(): viewportSize {\n return CommonUtility.getStyle(document.body, 'content', ':before').replace(/[\"']/g, '') as viewportSize;\n }\n\n public static isWindows(): boolean {\n return this.hasUserAgent(OPERATING_SYSTEMS[OperatingSystem.WINDOWS]);\n }\n}\n","import { Observable, Subscriber } from 'rxjs';\n\nexport class FileUtility {\n public static readFileAsText(file: File): Observable {\n return new Observable((subscriber: Subscriber) => {\n const reader = new FileReader();\n\n reader.onerror = (event: ProgressEvent): void => subscriber.error(event);\n reader.onabort = (event: ProgressEvent): void => subscriber.error(event);\n reader.onload = (event: ProgressEvent): void => subscriber.next(event.target.result.toString());\n reader.onloadend = (): void => subscriber.complete();\n\n return reader.readAsText(file);\n });\n }\n}\n","import { IIssueTrackingProject, IProject } from '../../../shared/interfaces/project.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { $project, ProjectStatus } from '../../../shared/constants/project';\n\nexport class ProjectUtility {\n public static getFormattedIntegrationName(project: IProject): string {\n const integrationProject: IIssueTrackingProject = project?.[$project.issueIntegrationProject];\n if (SharedCommonUtility.isNullish(integrationProject)) {\n return '';\n } else if (SharedCommonUtility.isNullishOrEmpty(integrationProject[$project.issueIntegrationProjectKey])) {\n return integrationProject[$project.issueIntegrationProjectName];\n }\n\n return `${integrationProject[$project.issueIntegrationProjectName]} (${\n integrationProject[$project.issueIntegrationProjectKey]\n })`;\n }\n\n /**\n * Creates a shallow copy of a filtered portion of a given projects array\n * @param projects projects array\n */\n public static getActiveProjects(projects: IProject[]): IProject[] {\n if (SharedCommonUtility.isNullishOrEmpty(projects)) {\n return [];\n }\n\n return projects.filter((project: IProject) => project[$project.status] === ProjectStatus.active);\n }\n}\n","export class ResourceData {\n public filename: string;\n public mimeType: string;\n public data: ArrayBuffer;\n public httpStatus: number;\n}\n","import { HttpResponse } from '@angular/common/http';\n\nimport { ResourceData } from '../interfaces/resource-data';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\ninterface ResourceDownloadOptions {\n defaultExtension?: string;\n insertDateInFileName?: boolean;\n customDate?: Date;\n}\n\nexport class ResourceUtility {\n private static insertDateInFileName(fileName: string, defaultExtension?: string, customDate?: Date): string {\n const date: Date = customDate ?? new Date();\n const dateAsString: string = `${date.getFullYear()}_${\n date.getMonth() + 1\n }_${date.getDate()}_${date.getHours()}_${date.getMinutes()}_${date.getSeconds()}`;\n\n const index: number = fileName.lastIndexOf('.');\n const fileBaseName: string = index >= 0 ? fileName.substring(0, index) : fileName;\n const fileExtension: string = index >= 0 ? fileName.substring(index) : defaultExtension || '';\n\n return `${fileBaseName}_${dateAsString}.${fileExtension}`;\n }\n\n private static maybeInsertDateInFileName(filename: string, options?: ResourceDownloadOptions): string {\n if (SharedCommonUtility.isNullish(options) || options.insertDateInFileName !== true) {\n return filename;\n }\n return ResourceUtility.insertDateInFileName(filename, options.defaultExtension, options.customDate);\n }\n\n public static fromResponse(response: HttpResponse): ResourceData {\n const resource = new ResourceData();\n\n if (response.headers) {\n resource.mimeType = response.headers.get('Content-Type');\n const contentDisposition = response.headers.get('Content-Disposition');\n\n if (!SharedCommonUtility.isNullish(contentDisposition)) {\n const matchArr: RegExpMatchArray = contentDisposition.match(/filename=\"(.+)\"/);\n if (matchArr.length >= 2) {\n // Set filename if it's supplied in Content-Disposition\n resource.filename = matchArr[1];\n }\n }\n }\n\n if (SharedCommonUtility.isNullishOrEmpty(resource.filename)) {\n resource.filename = new URL(response.url).pathname.split('/').pop();\n }\n\n resource.httpStatus = response.status;\n resource.data = response.body;\n\n return resource;\n }\n\n public static downloadFile(filename: string, blob: Blob): void {\n /*\n if (typeof window.navigator.msSaveOrOpenBlob === 'function') {\n window.navigator.msSaveOrOpenBlob(blob, filename);\n return;\n }\n */\n\n const windowURL: any = window.URL || (window as any).webkitURL;\n const save: HTMLAnchorElement = document.createElement('a');\n const file = windowURL.createObjectURL(blob);\n\n save.href = file;\n save.download = filename;\n save.style.cssText = 'display: none;';\n\n document.body.appendChild(save);\n\n const eventProperties: MouseEventInit = {\n bubbles: false,\n cancelable: true,\n view: window,\n };\n\n const customEvent = new MouseEvent('click', eventProperties);\n\n save.dispatchEvent(customEvent);\n windowURL.revokeObjectURL(file);\n document.body.removeChild(save);\n }\n\n public static downloadText(text: string, filename: string, options?: ResourceDownloadOptions): void {\n const blob: Blob = new Blob([text]);\n ResourceUtility.downloadFile(ResourceUtility.maybeInsertDateInFileName(filename, options), blob);\n }\n\n public static downloadResponse(response: HttpResponse): void {\n const resource: ResourceData = ResourceUtility.fromResponse(response);\n const blob: Blob = new Blob([resource.data], { type: resource.mimeType });\n ResourceUtility.downloadFile(resource.filename, blob);\n }\n\n public static triggerDownload(resource: ResourceData, defaultExtension?: string): void {\n const blob: Blob = new Blob([resource.data], { type: resource.mimeType });\n ResourceUtility.downloadFile(ResourceUtility.insertDateInFileName(resource.filename, defaultExtension), blob);\n }\n}\n","import { DashboardDataFrequency } from '../../../shared/interfaces/ws-dashboard.interface';\nimport { SharedDateUtility } from '../../../shared/utils/date.utility';\nimport { DateUtility } from './date.utility';\n\nexport class RiskChartUtility {\n public static formatDateForFrequency(date: Date, frequency: DashboardDataFrequency, verbose: boolean = false): string {\n const month: string = new Intl.DateTimeFormat('en', { month: 'short' }).format(date);\n const day: string = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);\n switch (frequency) {\n case DashboardDataFrequency.monthly:\n if (verbose === true) {\n return new Intl.DateTimeFormat('en', { month: 'long' }).format(date);\n }\n return `${month}`;\n case DashboardDataFrequency.quarterly:\n return `Q${SharedDateUtility.getQuarter(date)} ${date.getUTCFullYear()}`;\n default:\n if (verbose === true) {\n return DateUtility.prettifyDate(date, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n return `${month} ${day}`;\n }\n }\n\n public static getDescriptorKeyForFrequency(frequency: DashboardDataFrequency): string {\n switch (frequency) {\n case DashboardDataFrequency.quarterly:\n return 'quarter';\n case DashboardDataFrequency.monthly:\n return 'time_month';\n default:\n return 'label_date';\n }\n }\n\n // when in monthly and quarterly view, only show data for periods that are in the past\n public static shouldShowDataPoint(computedDate: Date, freq: DashboardDataFrequency): boolean {\n const now: Date = new Date();\n switch (freq) {\n case DashboardDataFrequency.monthly:\n return now.getUTCMonth() !== computedDate.getUTCMonth() || now.getUTCFullYear() !== computedDate.getFullYear();\n case DashboardDataFrequency.quarterly:\n return (\n SharedDateUtility.getQuarter(now) !== SharedDateUtility.getQuarter(computedDate) ||\n now.getUTCFullYear() !== computedDate.getUTCFullYear()\n );\n case DashboardDataFrequency.weekly:\n default:\n return true;\n }\n }\n}\n","import { IAccessibilityMarkLine, IAccessibilityMarkLinePoint } from '../interfaces/scan-chart.interface';\nimport { IAnalyticsResultItem } from '../../../shared/interfaces/analytics.interface';\nimport { TranslateService } from '../translate/translate.service';\n\nexport class ScanChartUtility {\n public static markLineFormatter(\n translate: TranslateService,\n chartData: IAnalyticsResultItem[],\n a: { data: IAccessibilityMarkLine },\n ): string | HTMLElement[] {\n const formatStrings: string[] = [];\n if (a.data.accessibilityPoint.updatedTool) {\n const currentVersion: string = chartData[a.data.xAxis].toolVersion;\n const previousVersion: string = chartData[(a.data.xAxis as number) - 1].toolVersion;\n const toolTooltip: string = translate.instant('label_tool_version_updated_tooltip', [previousVersion, currentVersion]);\n formatStrings.push(toolTooltip);\n }\n\n if (a.data.accessibilityPoint.updatedStandard) {\n const currentStandard: string = chartData[a.data.xAxis as number].includeStandard;\n const previousStandard: string = chartData[(a.data.xAxis as number) - 1].includeStandard;\n const toolTooltip: string = translate.instant('label_standard_updated_tooltip', [\n translate.instant(previousStandard),\n translate.instant(currentStandard),\n ]);\n formatStrings.push(toolTooltip);\n }\n\n if (a.data.accessibilityPoint.updatedTestingTool) {\n const currentTool: string = chartData[a.data.xAxis as number].toolName;\n const previousTool: string = chartData[(a.data.xAxis as number) - 1].toolName;\n const toolTooltip: string = translate.instant('label_testing_tool_updated_tooltip', [\n translate.instant(`scan_results_tool_option_${previousTool}`),\n translate.instant(`scan_results_tool_option_${currentTool}`),\n ]);\n formatStrings.push(toolTooltip);\n }\n\n return formatStrings.join('

').replace(/\\n/g, '
');\n }\n\n public static getMarkLinePoints(chartData: IAnalyticsResultItem[]): IAccessibilityMarkLinePoint[] {\n const markLinePoints: IAccessibilityMarkLinePoint[] = [];\n\n for (let i = 1; i < chartData.length; i++) {\n const point: IAccessibilityMarkLinePoint = {\n index: i,\n updatedTool: false,\n updatedStandard: false,\n updatedTestingTool: false,\n };\n let pushIndex: boolean = false;\n\n if (chartData[i].toolVersion !== chartData[i - 1].toolVersion) {\n point.updatedTool = true;\n pushIndex = true;\n }\n\n if (chartData[i].includeStandard !== chartData[i - 1].includeStandard) {\n point.updatedStandard = true;\n pushIndex = true;\n }\n\n if (chartData[i].toolName !== chartData[i - 1].toolName) {\n point.updatedTestingTool = true;\n pushIndex = true;\n }\n\n if (pushIndex) {\n markLinePoints.push(point);\n }\n }\n return markLinePoints;\n }\n}\n","import { ITaskCounts } from '../interfaces/task.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { ITaskWithTargetStates, ITaskWithTargetStatesAndFindings } from '../../../shared/interfaces/task.interface';\nimport { $task, TaskStatus } from '../../../shared/constants/task';\n\nexport class TaskUtility {\n public static getTotalTaskCounts(taskCounts: ITaskCounts): number {\n if (SharedCommonUtility.isNullish(taskCounts)) {\n return 0;\n }\n return taskCounts.doneCount + taskCounts.notStartedCount + taskCounts.inProgressCount;\n }\n\n /**\n * Return the total for non-started, done, and in-progress tasks, based on the task status\n * of each element in the given list. Return totals of 0 if input is null or undefined.\n *\n * @param taskWithTargetStatesAndFindings list of ITaskWithTargetStatesAndFindings\n * @returns ITaskCounts\n */\n public static reduceTargetStatesAndFindingsToTaskCounts(\n taskWithTargetStatesAndFindings: ITaskWithTargetStatesAndFindings[],\n ): ITaskCounts {\n const seed: ITaskCounts = { notStartedCount: 0, inProgressCount: 0, doneCount: 0 };\n if (SharedCommonUtility.isNullish(taskWithTargetStatesAndFindings)) {\n return seed;\n }\n\n const notStartedStates: Array = [TaskStatus.toDo, TaskStatus.backlog];\n const doneStates: Array = [TaskStatus.done];\n const inProgressStates: Array = Object.values(TaskStatus).filter(\n (status: TaskStatus): boolean => !(notStartedStates.includes(status) || doneStates.includes(status)),\n );\n\n const reducer = (red: ITaskCounts, task: ITaskWithTargetStates): ITaskCounts => ({\n notStartedCount: red.notStartedCount + (notStartedStates.includes(task[$task.status]) ? 1 : 0),\n inProgressCount: red.inProgressCount + (inProgressStates.includes(task[$task.status]) ? 1 : 0),\n doneCount: red.doneCount + (doneStates.includes(task[$task.status]) ? 1 : 0),\n });\n\n return taskWithTargetStatesAndFindings.reduce(reducer, seed);\n }\n}\n","import { Params } from '@angular/router';\nimport { HttpParams } from '@angular/common/http';\n\nexport function getQueryParams(url: string): Record {\n const [, queryString] = url.split('?');\n const httpParams: HttpParams = new HttpParams({ fromString: queryString });\n\n const paramsObject: Record = {};\n for (const key of httpParams.keys()) {\n const allValues: string[] = httpParams.getAll(key);\n paramsObject[key] = allValues.length > 1 ? allValues : allValues[0];\n }\n return paramsObject;\n}\n\n/**\n * merges extra params into passed url\n *\n * @param url original url\n * @param extraParams query params to be merged into original url\n * @returns a tuple [urlWithoutParams, params]\n */\nexport function mergeUrlParams(url: string, extraParams: Params): [string, Record, string] {\n let [urlWithoutParams] = url.split('?');\n\n let fragment: string = null;\n\n if (urlWithoutParams.indexOf('#') > 0) {\n [urlWithoutParams, fragment] = urlWithoutParams.split('#');\n }\n\n const paramsObject: Record = getQueryParams(url);\n const queryParams: Record = {\n ...paramsObject,\n ...extraParams,\n };\n\n return [urlWithoutParams, queryParams, fragment];\n}\n","import { SIZE_200_MB } from './uploads';\n\nexport const CHANGE_USER_EMAILS_MAX_NUMBER_OF_FILES: number = 1;\nexport const CHANGE_USER_EMAILS_MAX_FILE_SIZE: number = SIZE_200_MB;\n","import {\n CHANGE_USER_EMAILS_MAX_FILE_SIZE,\n CHANGE_USER_EMAILS_MAX_NUMBER_OF_FILES,\n} from '../../shared/constants/change-user-emails';\nimport {\n DESIGN_REVIEW_FINDINGS_MAX_NUMBER,\n DESIGN_REVIEW_NAME_EXCLUDED_CHARACTERS,\n DESIGN_REVIEW_NAME_MAX_LENGTH,\n DESIGN_REVIEW_NAME_MIN_LENGTH,\n DESIGN_REVIEW_SCREENS_MAX_FILE_SIZE,\n DESIGN_REVIEW_SCREENS_MAX_NUMBER_OF_FILES,\n} from '../../shared/constants/design-review';\nimport { PAGE_SCREENSHOT_MAX_FILE_SIZE, PAGE_SCREENSHOT_MAX_NUMBER_OF_FILES } from '../../shared/constants/page';\nimport { SCANNABLE_DOCUMENT_MAX_UPLOAD_QUANTITY, SIZE_20_MB } from '../../shared/constants/uploads';\n\nexport const config = Object.freeze({\n APP: {\n COPYRIGHT_YEAR: '2019',\n ID: 'ada',\n NAME: 'Level Access Platform',\n },\n appUrl: window.location.protocol + '//' + window.location.host,\n company: {\n emailSupport: 'support@levelaccess.com',\n name: 'Level Access',\n },\n externalAppConfig: {\n chromeExtensionUrl: {\n labe: 'https://chrome.google.com/webstore/detail/level-access-extension/kgbmnemfaellbfabmkmmilchbhiigpdi',\n accessibility_checker: 'https://chrome.google.com/webstore/detail/accessibility-checker/lpmhdadpnpgcjabgeehgogpobempedce',\n },\n figmaPluginUrl: 'https://www.figma.com/community/plugin/1268557036921715308/level-access-figma-plugin',\n },\n deployUrl: 'static/',\n features: {\n HTTP_CACHE: false,\n },\n files: {\n maxUploadSize: 250 * 1024 * 1024,\n screenshots: {\n path: 'files/screenshots',\n },\n taskMaxUploadSize: 100 * 1024 * 1024,\n },\n changeUserEmails: {\n maxUploadQuantity: CHANGE_USER_EMAILS_MAX_NUMBER_OF_FILES,\n maxFileUploadSize: CHANGE_USER_EMAILS_MAX_FILE_SIZE,\n maxUploadSize: CHANGE_USER_EMAILS_MAX_FILE_SIZE * CHANGE_USER_EMAILS_MAX_NUMBER_OF_FILES,\n },\n designReviewScreen: {\n maxUploadQuantity: DESIGN_REVIEW_SCREENS_MAX_NUMBER_OF_FILES,\n maxFileUploadSize: DESIGN_REVIEW_SCREENS_MAX_FILE_SIZE,\n maxUploadSize: DESIGN_REVIEW_SCREENS_MAX_FILE_SIZE * DESIGN_REVIEW_SCREENS_MAX_NUMBER_OF_FILES,\n minNameLength: DESIGN_REVIEW_NAME_MIN_LENGTH,\n maxNameLength: DESIGN_REVIEW_NAME_MAX_LENGTH,\n nameExcludeCharacters: DESIGN_REVIEW_NAME_EXCLUDED_CHARACTERS,\n maxFindingQuantity: DESIGN_REVIEW_FINDINGS_MAX_NUMBER,\n },\n pageScreenshot: {\n maxUploadQuantity: PAGE_SCREENSHOT_MAX_NUMBER_OF_FILES,\n maxFileUploadSize: PAGE_SCREENSHOT_MAX_FILE_SIZE,\n maxUploadSize: PAGE_SCREENSHOT_MAX_FILE_SIZE * PAGE_SCREENSHOT_MAX_NUMBER_OF_FILES,\n },\n scannableDocument: {\n maxUploadSize: SIZE_20_MB * SCANNABLE_DOCUMENT_MAX_UPLOAD_QUANTITY,\n maxUploadQuantity: SCANNABLE_DOCUMENT_MAX_UPLOAD_QUANTITY,\n maxFileUploadSize: SIZE_20_MB,\n },\n email: {\n privacy: 'privacy@essentialaccessibility.com',\n },\n locale: {\n default: 'en-us',\n },\n mainContainerId: 'mainContainer',\n path: {\n staticAssets: 'static/assets',\n },\n restApiUrl: '/api',\n token: {\n access: {\n header: 'x-access-token',\n id: 'accessToken',\n },\n refresh: {\n header: 'x-refresh-token',\n id: 'refreshToken',\n },\n },\n});\n","import { EnvironmentType } from '../app/shared/constants';\nimport { config } from './config.shared';\n\nconst production = {\n production: true,\n environmentType: EnvironmentType.Prod,\n};\n\nexport const environment = Object.freeze(Object.assign(production, config));\n","import { environment } from '../environments/environment';\nimport { UserService } from './services/user.service';\nimport { TranslateService } from './translate/translate.service';\nimport { BusMessageService } from './services/bus-message.service';\nimport { FeaturesService } from './services/features.service';\nimport { TrackingConsoleService } from './services/tracking/tracking-console.service';\nimport { LazyLoadingStylesService } from './services/lazy-loading-styles.service';\nimport { AppConfigService } from './services/app-config.service';\nimport { LinkedPropertyDataService } from './services/linked-property-data.service';\n\nexport function AppInitialization(\n userService: UserService,\n translateService: TranslateService,\n messageBusService: BusMessageService,\n featuresService: FeaturesService,\n appConfigService: AppConfigService,\n trackingConsoleService: TrackingConsoleService,\n lazyLoadingStylesService: LazyLoadingStylesService,\n linkedPropertyDataService: LinkedPropertyDataService,\n): Function {\n const init = async (): Promise => {\n if (environment.production) {\n trackingConsoleService.createConsoleWrapper();\n }\n\n const setApplication = async (): Promise<[void, void, void]> => {\n return Promise.all([\n translateService.initializeTranslations(),\n featuresService.fetchFeaturesConfig(),\n messageBusService.initChannels(),\n ]);\n };\n\n const lazyLoadStyles = async (): Promise => {\n return lazyLoadingStylesService.loadAppStyles();\n };\n\n const setupLinkedPropertyDataPreserver = async (): Promise => {\n linkedPropertyDataService.preserveLinkedPropertyParam();\n };\n\n return appConfigService\n .fetchConfig()\n .then(userService.getAuthStatus.bind(userService))\n .then(setupLinkedPropertyDataPreserver)\n .then(setApplication)\n .then(lazyLoadStyles);\n };\n\n return async (): Promise => {\n return Promise.resolve().then(init);\n };\n}\n","import { Component, OnInit } from '@angular/core';\n\nimport { RoutingService } from '../../../services/routing.service';\nimport { ModalService } from '../../../services/modal.service';\n\n@Component({\n selector: 'app-not-found',\n templateUrl: './not-found.component.html',\n})\nexport class NotFoundComponent implements OnInit {\n public pageTitle: string;\n\n constructor(\n private routingService: RoutingService,\n private modalService: ModalService,\n ) {}\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n this.modalService.closeModal();\n }\n}\n","
\n
\n
\n
\n \n \n \n

{{ pageTitle }}

\n

\n {{ 'go_back_to_application' | translate }}\n
\n
\n
\n
\n","\n \n {{ 'redirect_label' | translate }}\n \n\n
\n
\n {{ 'login_unique_redirect_prompt' | translate: countdownSeconds }}\n
\n\n \n
{{ 'login_non_unique_redirect_prompt' | translate }}
\n \n \n
\n
\n
\n","import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { IModal } from '../../../../components/modals/modal.interface';\nimport { ModalContainerComponent } from '../../../../components/modals/modal-container.component';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { $tenant } from '../../../../../../shared/constants/tenant';\n\nexport interface ITenantRedirectUrl {\n url: string;\n domain: string;\n}\n\n@Component({\n selector: 'app-tenant-redirect-modal',\n templateUrl: './tenant-redirect-modal.component.html',\n})\nexport class TenantRedirectModalComponent implements IModal, OnInit, OnDestroy {\n private subscription: Subscription;\n private intervalId: number;\n\n @Input()\n public redirectUrls: ITenantRedirectUrl[];\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n @Input()\n public countdownSeconds: number = 5;\n public uniqueRedirect: boolean;\n public form: UntypedFormGroup;\n public $tenant: typeof $tenant;\n public selectedUrl$: ReplaySubject;\n\n public constructor(private formBuilder: UntypedFormBuilder) {\n this.subscription = new Subscription();\n this.uniqueRedirect = true;\n this.$tenant = $tenant;\n this.selectedUrl$ = new ReplaySubject();\n }\n\n public ngOnInit(): void {\n if (this.redirectUrls.length === 1) {\n this.intervalId = window.setInterval(() => {\n this.countdownSeconds--;\n if (this.countdownSeconds <= 0) {\n this.container.closeModal();\n }\n }, 1000);\n this.selectedUrl$.next(this.redirectUrls[0].url);\n } else {\n this.uniqueRedirect = false;\n this.form = this.formBuilder.group({\n [$tenant.domain]: this.formBuilder.control(this.redirectUrls[0].url),\n });\n this.subscription.add(\n this.form.get($tenant.domain).valueChanges.pipe(startWith(this.redirectUrls[0].url)).subscribe(this.selectedUrl$),\n );\n }\n this.container.closeLabel = 'label_ok';\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n if (!SharedCommonUtility.isNullish(this.intervalId)) {\n window.clearInterval(this.intervalId);\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-login-card',\n template: `\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n `,\n styleUrl: './login-card.component.scss',\n})\nexport class LoginCardComponent {}\n","import { Component, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { UserService } from '../../../../services/user.service';\nimport { FormService } from '../../../../services/form.service';\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport { ErrorMessageService } from '../../../../services/error-message.service';\nimport { IMfaLoginRequest } from '../../../../../../shared/interfaces/user.interface';\nimport { InputFieldContext } from '../../../../components/common-input/common-input.component';\n\n@Component({\n selector: 'app-mfa-login',\n templateUrl: './mfa-login.component.html',\n styleUrls: ['../login.component.scss'],\n})\nexport class MfaLoginComponent implements OnDestroy {\n private subscriptions: Subscription;\n private formValidationRequest: Subject;\n private readonly tokenField: string;\n\n public form: UntypedFormGroup;\n public formValidationRequest$: Observable;\n\n constructor(\n private translateService: TranslateService,\n private userService: UserService,\n private formService: FormService,\n private errorMessageService: ErrorMessageService,\n ) {\n this.subscriptions = new Subscription();\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n\n this.tokenField = 'token';\n const fb: UntypedFormBuilder = new UntypedFormBuilder();\n this.form = fb.group({\n [this.tokenField]: fb.control('', [CustomValidators.required, CustomValidators.validateIsEmpty]),\n });\n }\n\n get formToken(): AbstractControl {\n return this.form.get(this.tokenField);\n }\n\n get formContext(): InputFieldContext {\n return {\n field: this.tokenField,\n noLabel: true,\n label: this.tokenField,\n autocomplete: 'off',\n customMessage: this.formToken.errors?.server?.message,\n placeholder: this.translateService.instant('mfa_enter_code_placeholder'),\n };\n }\n\n private onMfaAuthenticationError(error: HttpErrorResponse): void {\n const messageKey: string | null = this.errorMessageService.getAppErrorResponse(error);\n const message: string =\n messageKey === null ? this.errorMessageService.getGlobalErrorResponse(error) : this.translateService.instant(messageKey);\n\n this.formToken.setErrors({ server: { message } });\n }\n\n public onSubmit(): void {\n const request: IMfaLoginRequest = {\n token: this.form.value.token,\n };\n\n this.subscriptions.add(\n this.userService\n .mfaLogin(request)\n .pipe(take(1))\n .subscribe({\n error: this.onMfaAuthenticationError.bind(this),\n }),\n );\n }\n\n public isFieldValid(field: string): boolean {\n return this.formService.isFieldValid(field, this.form);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n {{ 'mfa' | translate }}\n\n
\n
\n

{{ 'mfa' | 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 {{ 'your_email_is_not_verified' | translate }}
\n {{ 'verify_email_to_login' | translate }}\n \n {{ 'resend_verification' | translate }}\n \n
\n
\n
\n
0\" class=\"row form-row\">\n
\n \n \n
\n
\n\n
\n
\n \n {{ 'log_in' | translate }}\n \n\n
\n
\n

{{ 'login' | 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 \n \n \n {{ isPasswordShown ? 'hide_password' : ('show_password' | 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","import { Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, withLatestFrom } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\nimport { IE_REVEAL_EYE_SELECTOR, REDIRECT_TO_USERWAY_DASHBOARD_PARAM_VAL, redirectUrl } from '../../../shared/constants';\nimport { IHttpErrorResponse } from '../../../interfaces/error.interface';\nimport { RoutingService } from '../../../services/routing.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { UserService } from '../../../services/user.service';\nimport { FormService } from '../../../services/form.service';\nimport { CustomValidators } from '../../../services/helpers/form-custom-validators';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { ErrorMessageService } from '../../../services/error-message.service';\nimport { A11yService } from '../../../services/a11y.service';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport { alertType } from '../../../constants/alert.constants';\nimport { Api } from '../../../../../shared/constants/api';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { errorMessagesNames } from '../../../../../shared/constants/errors';\nimport { ModalService } from '../../../services/modal.service';\nimport { TenantRedirectModalComponent } from './tenant-redirect-modal/tenant-redirect-modal.component';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { BannerType } from '../../../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\nimport { TenantService } from '../../../services/tenant.service';\nimport { IUserWaySSOLink } from '../../../../../shared/interfaces/userway-integration.interface';\nimport { NotificationService } from '../../../services/notification.service';\nimport { NotificationPosition } from '../../../models/notification.model';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n private formValidationRequest: Subject;\n\n public pageTitle: string;\n public isUserAuthenticated: boolean | null;\n public isMfaRequired: boolean | null;\n public passwordIsTooOldError: boolean = false;\n public userEmailUnverifiedError: boolean = false;\n public authErrorMessage: string;\n public form: UntypedFormGroup;\n public formValidationRequest$: Observable;\n public alertType: typeof alertType;\n public isPasswordShown: boolean;\n public usePasswordRevealButton: boolean;\n public BannerType: typeof BannerType = BannerType;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public Icons: typeof Icons = Icons;\n\n constructor(\n private router: Router,\n private appConfigService: AppConfigService,\n private routingService: RoutingService,\n private modalService: ModalService,\n private translateService: TranslateService,\n private userService: UserService,\n private formService: FormService,\n private formBuilder: UntypedFormBuilder,\n private activatedRoute: ActivatedRoute,\n private errorMessageService: ErrorMessageService,\n private a11yService: A11yService,\n private errorHandlerService: ErrorHandlerService,\n private tenantService: TenantService,\n private notificationService: NotificationService,\n private element: ElementRef,\n ) {\n this.pageTitle = routingService.getPageTitle();\n this.subscriptions = new Subscription();\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n this.isUserAuthenticated = this.userService.isAuthenticated();\n this.isMfaRequired = this.userService.isMfaRequired();\n this.authErrorMessage = '';\n this.alertType = alertType;\n this.isPasswordShown = false;\n this.usePasswordRevealButton = true;\n\n this.subscribeToRouteChanges();\n\n const formConfig = {\n email: new UntypedFormControl(null, {\n validators: [CustomValidators.validateEmail, Validators.required],\n updateOn: 'change',\n }),\n password: new UntypedFormControl(null, {\n validators: [CustomValidators.validateWhiteSpaces, Validators.required],\n updateOn: 'change',\n }),\n };\n\n this.form = this.formBuilder.group(formConfig);\n }\n\n private onPageTitleChange(pageTitle: string): void {\n this.pageTitle = pageTitle;\n }\n\n private subscribeToRouteChanges(): void {\n const changePageTitleSubscription = this.routingService.pageTitle$.subscribe(this.onPageTitleChange.bind(this));\n\n this.subscriptions.add(changePageTitleSubscription);\n }\n\n private async redirectToUserWayDashboard(): Promise {\n /**\n * TODO EAP-28501: Update TokenInterceptor to reject and handle rejection here\n * The call to generateUserWaySSOLink will result in a Forbidden response when the user does not have permission to userway_integration.create\n * The forbidden response does not appear to be accessible using either a piped catchError or subscribed error\n *\n * Using a promise here allows the call to be intercepted and rerouted as expected\n * The conversion to promise again does not reliably reject the error, but rather resolves to undefined\n * We must re-throw the error for handling within the catch\n */\n const userWaySsoLinkPromise: Promise = this.tenantService.generateUserWaySSOLink().toPromise();\n userWaySsoLinkPromise\n .then((res: IUserWaySSOLink): void => {\n if (SharedCommonUtility.isStringEmpty(res?.ssoLink)) {\n throw new Error('Forbidden');\n }\n\n window.open(res.ssoLink, '_self');\n })\n .catch((_: any): void => {\n this.notificationService.error(this.translateService.instant('userway_login_error'), NotificationPosition.Toast, true);\n this.redirectToApp();\n });\n }\n\n private async redirectToApp(): Promise {\n if (\n typeof this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo] === 'string' &&\n this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo] !== REDIRECT_TO_USERWAY_DASHBOARD_PARAM_VAL\n ) {\n return this.router\n .navigateByUrl(this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo])\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n return this.router\n .navigate([`/${Api.home}`], { replaceUrl: true })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n private async redirectToAppOrExternalLink(): Promise {\n if (this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo] === REDIRECT_TO_USERWAY_DASHBOARD_PARAM_VAL) {\n await this.redirectToUserWayDashboard();\n return;\n }\n\n await this.redirectToApp().catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n private shouldAutoRedirectToTenant(response: IHttpErrorResponse): boolean {\n return (\n response.error?.app?.name === errorMessagesNames.ErrorLoginToTenantlessForbidden && response.error?.app?.params?.length >= 1\n );\n }\n\n private generateRedirectUrlForDomain(domain: string, baseUrl: string): string {\n const query: string = SharedCommonUtility.notNullish(this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo])\n ? decodeURIComponent(this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo])\n : '';\n return `https://${domain}.${baseUrl}${query}`;\n }\n\n private async errorAuthentication(response: IHttpErrorResponse): Promise {\n this.form.enable();\n\n if (response.url === null) {\n this.authErrorMessage = this.translateService.instant('login_unable_to_authenticate');\n return;\n }\n\n if (this.shouldAutoRedirectToTenant(response)) {\n await this.appConfigService.fetchConfig();\n const redirectModalComponent: TenantRedirectModalComponent = this.modalService.open(TenantRedirectModalComponent).instance;\n redirectModalComponent.redirectUrls = (response.error.app.params[0] as string).split(',').map((domain: string) => {\n const trimmedDomain: string = domain.trim();\n return {\n url: this.generateRedirectUrlForDomain(trimmedDomain, this.appConfigService.getTenantBaseUrl()),\n domain: trimmedDomain,\n };\n });\n this.subscriptions.add(\n redirectModalComponent.container.onClose$\n .pipe(withLatestFrom(redirectModalComponent.selectedUrl$))\n .subscribe(([_, targetUrl]: [void, string]) => {\n CommonUtility.navigateToExternalUrl(targetUrl);\n }),\n );\n\n return;\n }\n\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.ErrorUserEmailUnverified) {\n this.userEmailUnverifiedError = true;\n this.a11yService.setMessage(this.translateService.instant('verify_email_to_login'));\n return;\n }\n\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.PasswordIsTooOld) {\n this.passwordIsTooOldError = true;\n this.a11yService.setMessage(this.translateService.instant('you_need_to_reset_your_password'));\n return;\n }\n\n const errorMessage: string = this.errorMessageService.getGlobalErrorResponse(response);\n\n if (typeof errorMessage === 'string' && response.status > 0) {\n this.authErrorMessage = errorMessage;\n } else {\n this.authErrorMessage = this.translateService.instant('login_unable_to_authenticate');\n }\n\n this.a11yService.setMessage(this.authErrorMessage);\n }\n\n private async onAuthenticationChange(authenticated: boolean): Promise {\n this.isUserAuthenticated = authenticated;\n\n if (authenticated) {\n await this.redirectToAppOrExternalLink();\n }\n }\n\n private async onMfaRequiredChange(isMfaRequired: boolean): Promise {\n this.isMfaRequired = isMfaRequired;\n }\n\n public setPasswordVisibility(visible: boolean): void {\n this.isPasswordShown = visible;\n }\n\n public onUserUnverifiedEmailBannerClose(): void {\n this.userEmailUnverifiedError = false;\n }\n\n public onSubmit(): void {\n this.formValidationRequest.next();\n this.authErrorMessage = '';\n\n if (this.form.valid === false) {\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n return;\n }\n\n this.form.disable();\n\n this.subscriptions.add(\n this.userService.logIn(this.form.value.email, this.form.value.password).subscribe({\n error: this.errorAuthentication.bind(this),\n }),\n );\n }\n\n public isFieldValid(field: string): boolean {\n return this.formService.isFieldValid(field, this.form);\n }\n\n public onResendActivationLink(): void {\n const onSuccess = (): void => {\n const extras: NavigationExtras = {\n state: {\n isResendDone: true,\n hasResendFailed: false,\n },\n };\n\n this.router\n .navigate([`/${Api.activation_link}`], extras)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n };\n\n const onError = (response: HttpErrorResponse): void => {\n const extras: NavigationExtras = {\n state: {\n isResendDone: false,\n hasResendFailed: true,\n errorMessage: response.error.message,\n },\n };\n\n this.router\n .navigate([`/${Api.activation_link}`], extras)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n };\n\n this.subscriptions.add(this.userService.resendVisitorActivationLink(this.form.value.email).subscribe(onSuccess, onError));\n }\n\n public async ngOnInit(): Promise {\n if (this.appConfigService.isUsingExternalIdp()) {\n await this.redirectToAppOrExternalLink();\n }\n\n await this.userService.getAuthStatus();\n\n this.isMfaRequired = this.userService.isMfaRequired();\n this.isUserAuthenticated = this.userService.isAuthenticated();\n\n this.usePasswordRevealButton = CommonUtility.isCSSselectorSupported(IE_REVEAL_EYE_SELECTOR) === false;\n\n const isAuthenticatedSubscription: Subscription = this.userService.isAuthenticated$.pipe(distinctUntilChanged()).subscribe({\n next: this.onAuthenticationChange.bind(this),\n });\n\n const isMfaRequiredSubscription: Subscription = this.userService.isMfaRequired$.pipe(distinctUntilChanged()).subscribe({\n next: this.onMfaRequiredChange.bind(this),\n });\n\n this.subscriptions.add(isAuthenticatedSubscription);\n this.subscriptions.add(isMfaRequiredSubscription);\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","export const SUCCESS: string = 'true';\n","
\n
\n
\n

{{ pageTitle }}

\n

\n \n {{ 'log_in' | translate }}\n \n
\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute, Params } from '@angular/router';\n\nimport { UserService } from '../../../services/user.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { RoutingService } from '../../../services/routing.service';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { SUCCESS } from './logout.constants';\n\n@Component({\n selector: 'app-logout',\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n})\nexport class LogoutComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n public logoutMessage: string;\n public Api: typeof Api;\n public pageTitle: string;\n public isUserAuthenticated: boolean;\n\n constructor(\n private userService: UserService,\n private translateService: TranslateService,\n private routingService: RoutingService,\n private appConfigService: AppConfigService,\n private activatedRoute: ActivatedRoute,\n ) {\n this.subscriptions = new Subscription();\n this.logoutMessage = '';\n this.Api = Api;\n this.pageTitle = '';\n }\n\n private onLogoutSuccess(): void {\n this.isUserAuthenticated = this.userService.isAuthenticated();\n this.logoutMessage = this.translateService.instant('log_out_success');\n }\n\n private onLogoutError(httpErrorResponse: HttpErrorResponse): void {\n console.error('[LogoutComponent.onErrorLogout]', httpErrorResponse);\n\n this.logoutMessage = this.translateService.instant('log_out_cannot_be_completed', [\n String(httpErrorResponse.status),\n httpErrorResponse.message,\n ]);\n }\n\n private fakeSuccessMessageForAuth0Redirect(): void {\n const params: Params = this.activatedRoute.snapshot.queryParams;\n const success: boolean = params[Api.success] === SUCCESS;\n if (this.appConfigService.isUsingExternalIdp() && success) {\n this.logoutMessage = this.translateService.instant('log_out_success');\n }\n }\n\n public ngOnInit(): void {\n this.isUserAuthenticated = this.userService.isAuthenticated();\n\n if (this.isUserAuthenticated) {\n this.logoutMessage = this.translateService.instant('log_out_in_progress');\n\n const onLogOutSubscription = this.userService.logOut().subscribe({\n next: this.onLogoutSuccess.bind(this),\n error: this.onLogoutError.bind(this),\n });\n\n this.subscriptions.add(onLogOutSubscription);\n }\n this.pageTitle = this.routingService.getPageTitle();\n this.fakeSuccessMessageForAuth0Redirect();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
\n
\n

{{ pageTitle }}

\n\n \n\n \n {{ 'admin_recently_changed_email' | translate }}
\n {{ 'check_your_inbox_verification_email' | translate }}\n \n {{ 'resend_verification' | translate }}\n \n \n\n \n

{{ 'enter_email_we_will_sent_link_to_reset_password' | translate }}

\n
\n {{ 'password_reset' | translate }}\n\n
\n
\n \n
\n
\n \n \n
\n
\n
\n \n\n
\n

\n {{ 'reset_done' | translate }}\n

\n

\n {{ 'go_back' | translate }}\n {{ 'login' | translate }}.\n

\n
\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nimport { UserService } from '../../../services/user.service';\nimport { alertType } from '../../../constants/alert.constants';\nimport { RoutingService } from '../../../services/routing.service';\nimport { ErrorMessageService } from '../../../services/error-message.service';\nimport { CommonUtility } from '../../../utility/common.utility';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { errorMessagesNames } from '../../../../../shared/constants/errors';\nimport { Api } from '../../../../../shared/constants/api';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\n\nimport { BannerType } from '../../../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\n\n@Component({\n selector: 'app-password-reset',\n templateUrl: './password-reset.component.html',\n})\nexport class PasswordResetComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n public email: string;\n public isResetDone: boolean;\n public hasResetFailed: boolean;\n public isEmailUnverifiedError: boolean;\n public errorHeader: string;\n public errorMessage: string;\n public alertType: typeof alertType;\n public pageTitle: string;\n public BannerType: typeof BannerType = BannerType;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public Icons: typeof Icons = Icons;\n\n constructor(\n private userService: UserService,\n private routingService: RoutingService,\n private router: Router,\n private errorMessageService: ErrorMessageService,\n private errorHandlerService: ErrorHandlerService,\n private translateService: TranslateService,\n ) {\n this.subscription = new Subscription();\n this.hasResetFailed = false;\n this.isResetDone = false;\n this.alertType = alertType;\n this.pageTitle = '';\n this.isEmailUnverifiedError = false;\n }\n\n public onUserUnverifiedEmailBannerClose(): void {\n this.hasResetFailed = false;\n this.isEmailUnverifiedError = false;\n }\n\n public onResendActivationLink(): void {\n const onSuccess = (): void => {\n const extras: NavigationExtras = {\n state: {\n isResendDone: true,\n hasResendFailed: false,\n },\n };\n\n this.router\n .navigate([`/${Api.activation_link}`], extras)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n };\n\n const onError = (response: HttpErrorResponse): void => {\n const extras: NavigationExtras = {\n state: {\n isResendDone: false,\n hasResendFailed: true,\n errorMessage: response.error.message,\n },\n };\n\n this.router\n .navigate([`/${Api.activation_link}`], extras)\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n };\n\n this.subscription.add(this.userService.resendVisitorActivationLink(this.email).subscribe(onSuccess, onError));\n }\n\n public resetPassword(): void {\n const onSuccess = (): void => {\n this.isResetDone = true;\n this.hasResetFailed = false;\n };\n\n const onError = (response: HttpErrorResponse): void => {\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.ErrorUserEmailUnverified) {\n this.isEmailUnverifiedError = true;\n this.errorHeader = '';\n this.errorMessage = `${this.translateService.instant('admin_recently_changed_email')}\\n${this.translateService.instant(\n 'check_your_inbox_verification_email',\n )}`;\n } else {\n this.isEmailUnverifiedError = false;\n this.errorHeader = this.translateService.instant('reset_failed_message');\n this.errorMessage = this.errorMessageService.getGlobalErrorResponse(response);\n }\n\n this.isResetDone = false;\n this.hasResetFailed = true;\n\n CommonUtility.setFocusToElement('email');\n };\n\n this.subscription.add(this.userService.resetPassword(this.email).subscribe(onSuccess, onError));\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
\n
\n
\n

{{ pageTitle }}

\n\n \n\n

{{ 'enter_email_we_will_send_link_to_verify' | translate }}

\n\n \n
\n {{ 'resend_activation_link' | translate }}\n\n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n

\n {{ 'or_go_back_to' | translate }} {{ 'login' | translate }}.\n

\n
\n
\n
\n \n\n \n
\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Navigation, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { UserService } from '../../../services/user.service';\nimport { alertType } from '../../../constants/alert.constants';\nimport { Api } from '../../../../../shared/constants/api';\nimport { RoutingService } from '../../../services/routing.service';\n\n@Component({\n selector: 'app-activation-link',\n templateUrl: './activation-link.component.html',\n})\nexport class ResendActivationLinkComponent implements OnInit, OnDestroy {\n private subscription: Subscription;\n public email: string;\n public isResendDone: boolean;\n public hasResendFailed: boolean;\n public errorMessage: string;\n public alertType: typeof alertType;\n public isAuthenticated: boolean;\n public Api: typeof Api;\n public pageTitle: string;\n\n constructor(\n private userService: UserService,\n private router: Router,\n private routingService: RoutingService,\n ) {\n this.subscription = new Subscription();\n\n // use these values as the defaults\n this.hasResendFailed = false;\n this.isResendDone = false;\n this.errorMessage = '';\n\n const routerCurrentNavigation: Navigation = this.router.getCurrentNavigation();\n\n // set these values only if routerCurrentNavigation extras state exists\n if (routerCurrentNavigation && routerCurrentNavigation.extras && routerCurrentNavigation.extras.state) {\n this.hasResendFailed = Boolean(routerCurrentNavigation.extras.state.hasResendFailed);\n this.isResendDone = Boolean(routerCurrentNavigation.extras.state.isResendDone);\n this.errorMessage = String(routerCurrentNavigation.extras.state.errorMessage);\n } else if (history.state) {\n // use history if routerCurrentNavigation is null (login -> non-login page causes constructor to be called twice)\n this.hasResendFailed = Boolean(history.state.hasResendFailed);\n this.isResendDone = Boolean(history.state.isResendDone);\n this.errorMessage = String(history.state.errorMessage);\n }\n\n this.isAuthenticated = this.userService.isAuthenticated();\n this.alertType = alertType;\n this.Api = Api;\n this.pageTitle = '';\n }\n\n public resendActivationLink(): void {\n const onSuccess = (): void => {\n this.isResendDone = true;\n this.hasResendFailed = false;\n };\n\n const onError = (response: HttpErrorResponse): void => {\n this.isResendDone = false;\n this.hasResendFailed = true;\n this.errorMessage = response.error.message;\n };\n\n if (this.isAuthenticated) {\n this.subscription.add(this.userService.resendActivationLink(this.email).subscribe(onSuccess, onError));\n } else {\n this.subscription.add(this.userService.resendVisitorActivationLink(this.email).subscribe(onSuccess, onError));\n }\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\nimport { RoutingService } from '../../../services/routing.service';\n\n@Component({\n selector: 'app-cookie-policy',\n templateUrl: './cookie-policy.component.html',\n})\nexport class CookiePolicyComponent implements OnInit {\n public pageTitle: string;\n\n constructor(private routingService: RoutingService) {\n this.pageTitle = '';\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n}\n","
\n
\n

{{ pageTitle }}

\n

{{ 'this_site_uses_cookies' | translate }}

\n

{{ 'browser_by_default' | translate }}

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

{{ pageTitle }}

\n\n

\n \n {{ 'email_verification_in_progress' | translate }}\n

\n\n

\n \n {{ 'email_verified_successfully' | translate: userEmail }}\n

\n\n \n

\n \n {{ 'email_verified_unsuccessfully' | translate }}\n

\n
\n
\n
\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { UserService } from '../../../services/user.service';\nimport { $user } from '../../../../../shared/constants/user';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { RoutingService } from '../../../services/routing.service';\nimport { Api } from '../../../../../shared/constants/api';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: './verify-email.component.html',\n styleUrls: ['./verify-email.component.scss'],\n})\nexport class VerifyEmailComponent implements OnDestroy, OnInit {\n private subscriptions: Subscription;\n\n public userEmail: string;\n public isEmailVerified: boolean;\n public pageTitle: string;\n\n constructor(\n private route: ActivatedRoute,\n private userService: UserService,\n private routingService: RoutingService,\n private router: Router,\n ) {\n this.subscriptions = new Subscription();\n this.userEmail = '';\n this.isEmailVerified = null;\n this.pageTitle = '';\n\n this.subscribeToRouteChanges();\n }\n\n private processRouteParams(params: Params): void {\n if (typeof params.token !== 'string') {\n return;\n }\n\n const onGetUserDataSuccess = (user: IUserServerResponse): void => {\n this.userEmail = user[$user.email];\n this.isEmailVerified = user[$user.emailVerified];\n };\n\n const onGetUserDataError = (): void => {\n this.isEmailVerified = false;\n this.router.navigate(['/', Api.not_found], { replaceUrl: true }).then();\n };\n\n this.subscriptions.add(\n this.userService.verifyEmail(params.token).subscribe({ next: onGetUserDataSuccess, error: onGetUserDataError }),\n );\n }\n\n private subscribeToRouteChanges(): void {\n this.subscriptions.add(this.route.params.subscribe(this.processRouteParams.bind(this)));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n}\n","

{{ 'table_of_contents' | translate }}

\n\n\n
  • \n {{ child.name }}\n\n
      0\">\n \n
    \n
  • \n
    \n\n\n
      \n \n
    \n
    \n\n
    \n

    Header 1

    \n\n

    \n Lorem ipsum dolor sit amet, aeterno deseruisse inciderint eam ne. No mei sumo nullam, mea et simul nobis. Eum essent oporteat\n cu, posse definitiones mel ei, unum fugit ius ex. Eos et idque causae.\n

    \n\n

    Header 1a

    \n\n

    \n Lorem ipsum dolor sit amet, civibus detracto suavitate ne qui, pro veri regione voluptatibus te. Sit autem vivendum ea,\n accusam detracto platonem sea at. Aperiri singulis cu eum, meliore adversarium te est. Eum id fastidii voluptua torquatos, te\n est affert mediocrem. Copiosae complectitur sea te.\n

    \n

    \n Ne nam tantas possim laoreet. Vidit dicat fastidii ex sed, eu option ponderum duo, in cum noster volutpat. Choro iriure\n aliquando in ius, in alia instructior quo. Eos erat dolor no. Eam iusto molestie id, omnes aliquip eruditi per ex.\n

    \n\n

    Header 1b

    \n\n

    \n Lorem ipsum dolor sit amet, quot option oportere ne qui, quaeque scripserit qui cu. Vidisse labores vix in. Usu ei harum\n offendit, ex debet legimus eloquentiam sit. Eum tale integre lobortis ei, iriure mentitum quo ea. Duo equidem theophrastus et.\n

    \n\n

    Header 1b1

    \n\n

    \n Lorem ipsum dolor sit amet, ad altera iriure disputationi duo. Cu autem justo dicant cum. An vis hinc habemus, detraxit\n deterruisset eu quo, nonumy repudiare voluptatibus qui ut. Omnis dolore mediocritatem ne per, vivendo mediocrem cu eum. Quo id\n ferri appareat.\n

    \n\n

    Header 1b2

    \n\n

    \n Lorem ipsum dolor sit amet, ad altera iriure disputationi duo. Cu autem justo dicant cum. An vis hinc habemus, detraxit\n deterruisset eu quo, nonumy repudiare voluptatibus qui ut. Omnis dolore mediocritatem ne per, vivendo mediocrem cu eum. Quo id\n ferri appareat.\n

    \n\n

    Header 2

    \n\n

    \n Lorem ipsum dolor sit amet, mel ex novum labitur utroque. Pri vitae epicuri volutpat ad, at duo atqui everti sensibus, ne sea\n euismod forensibus ullamcorper. Sit no summo prompta quaeque, facilisi rationibus signiferumque vis id. Ne soluta virtute per,\n sanctus fabellas vis ne, sit ad sale nonumy. Eam no primis deserunt. Et noluisse percipit eos, te nam alia possit abhorreant.\n

    \n

    \n Erat aliquip rationibus id cum, an sed tempor utroque adipisci. Everti insolens torquatos ius ad, ex laudem feugait\n suscipiantur pro. Nec erat dicam suavitate id, sonet partiendo ea nec. Nusquam facilisi pri in. Causae luptatum adversarium\n ius ad, mea te delenit erroribus explicari, viris noster possit ius te.\n

    \n\n

    Header 3

    \n\n

    \n Lorem ipsum dolor sit amet, affert detraxit te has, per commune molestiae maiestatis an. At his quodsi menandri, nam tollit\n vidisse deseruisse no. Omnium sanctus molestie an qui, ex primis timeam mei, ut elit euismod forensibus sit. Est mandamus\n interpretaris no, id autem simul aliquando his.\n

    \n

    \n Quo ei expetenda abhorreant. Quo ei populo ancillae, mei id suas reque vitae. Vix lorem delenit et. An qui eripuit delenit,\n vim iriure equidem repudiandae et. No sumo offendit constituto vel, odio molestie petentium te cum. Sea et prima partiendo.\n

    \n

    \n Putent meliore explicari eam eu, et cum tibique accusata repudiandae. Eu eos simul meliore mentitum, mel ne vidit platonem. No\n labore petentium torquatos duo, ad veniam aperiri mediocritatem eum, vix bonorum invidunt no. An has soluta labore. At nec\n decore nostro tractatos.\n

    \n\n

    Header 4

    \n\n

    Header 4a

    \n\n

    \n Lorem ipsum dolor sit amet, vix in posse minim. Te vel tale appareat, te quem vero sit, quo labitur docendi imperdiet eu. Nam\n nostrud disputando conclusionemque ut. Contentiones conclusionemque ei sed, labore voluptatum eam ei. In vis perpetua\n gloriatur, adhuc deleniti placerat ad mei. Aeterno alienum ea pri, prima salutatus ad sit.\n

    \n

    \n Eu ferri reque recusabo vix. Nobis legere ignota sed in. Per in quas sapientem, vix in nonumy utroque propriae. In odio nisl\n nam, fastidii voluptua disputando vim et. Te mel vivendo oportere expetenda. Ad sit paulo saperet, eam prompta dolorem\n convenire ne.\n

    \n

    \n Et his oblique epicurei intellegebat, quis molestiae id eos. Ludus utinam denique sed ex, et eum molestie eleifend. Stet\n theophrastus pro no, ad veniam audire omittantur mei. Ei populo impedit vis, suas adversarium sed ne, qui amet solet similique\n ea.\n

    \n\n

    Header 4a1

    \n\n

    \n Lorem ipsum dolor sit amet, eam ei unum accusam tractatos. Nam alii tale ad, duo oporteat pertinax ne. Nibh vivendum ius ei,\n inani graecis pri eu, vix facilis temporibus consequuntur ea. Hinc consetetur adipiscing pri ei, et vis omnis tamquam. Nam ut\n hinc graecis, copiosae mandamus eloquentiam ut has.\n

    \n

    \n Delectus intellegat an mel, ei mea mutat movet tibique, sea persius detracto in. Ut posse vivendo indoctum vim, est ad\n placerat referrentur. Rebum lucilius his ei, omnium appetere vulputate vis et. Ut eos debet elitr dolorem, an modo eligendi\n lucilius sea. Facilis salutandi pri et.\n

    \n

    \n Illum laudem discere vix eu, mei no purto eius laoreet. Scaevola luptatum adipisci per ei, scaevola singulis reprimique no\n nec. Putent perfecto phaedrum cu mei. Facilis omittam eos ad.\n

    \n

    \n In qui enim integre deleniti, eam id simul elitr. Mei ea mucius ridens definitionem, id verterem salutatus est, iusto tritani\n facilisis cu pro. Ut nobis consequat mel, has praesent laboramus temporibus eu. Admodum consetetur sed ex. Diceret percipit ad\n duo, facer iisque quaeque mei in, ut eam iuvaret fierent nominati.\n

    \n

    \n Erant soleat expetenda quo ei. Fabulas molestie definitionem ea eum, vix cu audiam habemus, nam quodsi feugiat id. Quot\n salutandi te eos, verear utamur sapientem no qui. Aperiri dignissim instructior no has, per ut autem sonet legendos.\n

    \n

    \n Id velit definitiones duo, mea omittam appetere ne. Vidit iuvaret at quo, dicant blandit verterem ex vim, autem consetetur quo\n an. Et vidisse dolorum maluisset usu, modus nusquam omittantur in est. Vel in tempor consequat, est te vide fugit. Nec in stet\n esse assueverit, eu pri primis fastidii, eam bonorum comprehensam eu.\n

    \n

    \n Accusam facilisis et cum. Dolore omnium persecuti sea te, eu mei recteque consequat. Ad has summo maluisset consectetuer. Ut\n quas possim saperet per. Audiam blandit appetere eum eu.\n

    \n

    \n Te corpora petentium mei. Eum ad putent regione discere. Pro ad tacimates convenire. Utamur maiorum salutandi sea ut, ne adhuc\n alterum docendi est, est id praesent facilisis. In vim quot deleniti neglegentur, duo ei quodsi apeirian. Vel eu aeque verear\n definiebas.\n

    \n\n

    Header 5

    \n\n

    \n Lorem ipsum dolor sit amet, nobis essent volumus eam ut, cu erat solum nominati quo. Mel justo apeirian ut, in porro\n adversarium his. Qui cetero iudicabit ne, quo no alterum inciderint. Quas verear virtute ei pri, expetendis concludaturque no\n eum, exerci commune convenire no ius.\n

    \n

    \n Populo aliquid facilis per ad, his forensibus sententiae te. Per option molestie reformidans ut, aeterno vocibus eu per. Ei\n nobis insolens mea. In cum dolore feugiat nusquam, te solum voluptua nominati vix. Quot latine eripuit his ne, iudico omittam\n at nam.\n

    \n

    \n Vix fabulas temporibus cu, aliquid facilis patrioque qui et, cum at clita quodsi. Ne mea altera regione. Sed ad verear\n ceteros, an usu bonorum epicurei vituperata. Ut munere meliore perpetua eos, his ne accusam praesent, ceteros commune\n partiendo in vel. Veritus vivendum ea sit, ea adhuc feugiat gubergren vix, lobortis platonem sapientem has in.\n

    \n
    \n","import { Component, AfterViewInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\n\nexport class TocElement {\n public name: string;\n public anchor: string;\n public children: Array;\n\n constructor(name: string) {\n this.name = name;\n this.anchor = this.createHeaderAnchorName(name);\n this.children = [];\n }\n\n private createHeaderAnchorName(headerText: string): string {\n return headerText.toLowerCase().replace(/\\W/g, '_');\n }\n}\n\n@Component({\n selector: 'app-help-center',\n templateUrl: './help-center.component.html',\n})\nexport class HelpCenterComponent implements AfterViewInit {\n public tableOfContents: TocElement;\n public baseUrl: string;\n\n constructor(\n private router: Router,\n private renderer: Renderer2,\n ) {\n this.tableOfContents = null;\n this.baseUrl = this.router.url;\n }\n\n private getTableOfContents(): TocElement {\n const tableOfContents = new TocElement('Table of Contents');\n const tocPath: Array = [tableOfContents];\n const headers: NodeListOf = document.getElementById('content').querySelectorAll('h1, h2, h3, h4, h5, h6');\n\n let insertionPoint: Array = tableOfContents.children;\n let currentDepth: number = 0;\n\n const parseContentHeader = (header: HTMLElement): void => {\n const depthOfHeader: number = parseInt(header.tagName[1], 10);\n const newTocElement = new TocElement(header.innerText);\n const headerRelativeLevel = currentDepth - depthOfHeader;\n\n if (headerRelativeLevel > 0) {\n // We have to go up\n tocPath.splice(-(headerRelativeLevel + 1));\n }\n\n if (headerRelativeLevel === 0) {\n // Last one is over\n tocPath.pop();\n }\n\n insertionPoint = tocPath[tocPath.length - 1].children;\n tocPath.push(newTocElement);\n\n currentDepth = depthOfHeader;\n\n this.renderer.setAttribute(header, 'id', newTocElement.anchor);\n insertionPoint.push(newTocElement);\n };\n\n Array.from(headers).forEach(parseContentHeader);\n\n return tableOfContents;\n }\n\n public ngAfterViewInit(): void {\n Promise.resolve(null).then(() => {\n this.tableOfContents = this.getTableOfContents();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\nimport { RoutingService } from '../../../../services/routing.service';\nimport { ModalService } from '../../../../services/modal.service';\n\n@Component({\n selector: 'app-forbidden-error',\n templateUrl: './forbidden-error.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ForbiddenErrorComponent implements OnInit {\n public pageTitle: string;\n\n constructor(\n private routingService: RoutingService,\n private modalService: ModalService,\n ) {}\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n this.modalService.closeModal();\n }\n}\n","
    \n
    \n
    \n
    \n \n \n \n

    {{ pageTitle }}

    \n

    \n {{ 'go_back_to_application' | translate }}\n
    \n
    \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { RoutingService } from '../../../services/routing.service';\n\n@Component({\n selector: 'app-attribution',\n templateUrl: './attribution.component.html',\n})\nexport class AttributionComponent implements OnInit {\n public pageTitle: string;\n\n constructor(private routingService: RoutingService) {\n this.pageTitle = '';\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n}\n","\n","\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n

    {{ 'incorrect_or_expired_short_link' | translate }}

    \n {{ 'check_web_address' | translate }}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { RoutingService } from '../../../services/routing.service';\nimport { ShortLinkService } from '../../../services/short-link.service';\nimport { IShortLink } from '../../../../../shared/interfaces/short-link.interface';\nimport { RestService } from '../../../services/rest.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { LoadErrorHandler } from '../../../services/load-error-handler';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport { errorMessagesNames } from '../../../../../shared/constants/errors';\nimport { shortLinkType } from '../../../../../shared/constants/short-link';\n\n@Component({\n selector: 'app-short-link',\n templateUrl: './short-link.component.html',\n styleUrls: ['./short-link.component.scss'],\n})\nexport class ShortLinkComponent implements OnInit, AfterViewInit, OnDestroy {\n private subscriptions: Subscription;\n\n public pageTitle: string;\n public shortLinkNotFound: boolean;\n\n constructor(\n private routingService: RoutingService,\n private activatedRoute: ActivatedRoute,\n private shortLinkService: ShortLinkService,\n private restService: RestService,\n private loadErrorHandler: LoadErrorHandler,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n ) {\n this.pageTitle = '';\n this.subscriptions = new Subscription();\n this.shortLinkNotFound = false;\n }\n\n private onGetShortLinkSuccess(shortLink: IShortLink): void {\n let redirectPath: string = this.shortLinkService.getRedirectPath(shortLink);\n\n if (typeof redirectPath === 'string') {\n // downloads a static file and redirects to the /\n if (shortLink.linkType === shortLinkType.auditFindingAttachment) {\n this.restService.download(redirectPath).toPromise().then();\n redirectPath = '/';\n }\n this.router.navigateByUrl(redirectPath).catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n } else {\n console.error(`[${ShortLinkComponent.name}.onGetShortLinkSuccess] unable to get redirect path for short link:`, shortLink);\n }\n }\n\n private onGetShortLinkError(error: HttpErrorResponse): void {\n this.shortLinkNotFound = true;\n if (error?.error?.app?.name !== errorMessagesNames.ShortLinkNotFound) {\n this.loadErrorHandler.handleError('error_getting_short_link', error, ShortLinkComponent.name);\n }\n }\n\n public ngOnInit(): void {\n this.pageTitle = this.routingService.getPageTitle();\n }\n\n public ngAfterViewInit(): void {\n const params: Params = this.activatedRoute.snapshot.params;\n this.subscriptions.add(\n this.restService.getShortLink(params[Api.shortLink]).subscribe({\n next: this.onGetShortLinkSuccess.bind(this),\n error: this.onGetShortLinkError.bind(this),\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nimport { AppConfigService } from '../../app-config.service';\nimport { Api } from '../../../../../shared/constants/api';\n\n@Injectable()\nexport class NonSsoTenantGuard {\n constructor(\n private router: Router,\n private appConfigService: AppConfigService,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const hasAccess: boolean = !this.appConfigService.isUsingExternalIdp();\n if (!hasAccess) {\n return of(this.router.createUrlTree([`/${Api.forbidden}`], { queryParams: { url: state.url, title: next.data.title } }));\n }\n return of(hasAccess);\n }\n\n public canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.canActivate(next, state);\n }\n}\n","import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { AuthGuard as ExternalAuthGuard, AuthService as ExternalAuthService } from '@auth0/auth0-angular';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { AppConfigService } from '../../app-config.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { UserService } from '../../user.service';\nimport { SUCCESS } from '../../../pages/public/logout/logout.constants';\n\n@Injectable()\nabstract class RedirectSsoTenantGuard {\n protected abstract redirect(next?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Observable;\n\n public constructor(\n protected router: Router,\n protected appConfigService: AppConfigService,\n protected externalAuthService: ExternalAuthService,\n protected userService: UserService,\n protected externalAuthGuard: ExternalAuthGuard,\n ) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n const ssoEnabled: boolean = this.appConfigService.isUsingExternalIdp();\n if (ssoEnabled) {\n return this.redirect(next, state);\n }\n return of(!ssoEnabled);\n }\n\n public canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.canActivate(next, state);\n }\n}\n\n@Injectable()\nexport class RedirectSsoTenantToDashboardGuard extends RedirectSsoTenantGuard {\n constructor(\n protected router: Router,\n protected appConfigService: AppConfigService,\n protected externalAuthService: ExternalAuthService,\n protected userService: UserService,\n protected externalAuthGuard: ExternalAuthGuard,\n ) {\n super(router, appConfigService, externalAuthService, userService, externalAuthGuard);\n }\n\n protected redirect(): Observable {\n return of(this.router.createUrlTree(['/', `${Api.dashboard}`]));\n }\n}\n\n@Injectable()\nexport class RedirectSsoTenantToAuth0LogoutGuard extends RedirectSsoTenantGuard {\n constructor(\n protected router: Router,\n protected appConfigService: AppConfigService,\n protected externalAuthService: ExternalAuthService,\n protected userService: UserService,\n protected externalAuthGuard: ExternalAuthGuard,\n ) {\n super(router, appConfigService, externalAuthService, userService, externalAuthGuard);\n }\n\n protected redirect(): Observable {\n if (this.userService.isAuthenticated()) {\n this.externalAuthService.logout({\n logoutParams: { returnTo: `${window.location.origin}/${Api.logout}?${Api.success}=${SUCCESS}` },\n });\n this.userService.postLogOut();\n return of(false);\n }\n return of(true);\n }\n}\n\n@Injectable()\nexport class RedirectSsoTenantToSignupGuard extends RedirectSsoTenantGuard {\n constructor(\n protected router: Router,\n protected appConfigService: AppConfigService,\n protected externalAuthService: ExternalAuthService,\n protected userService: UserService,\n protected externalAuthGuard: ExternalAuthGuard,\n ) {\n super(router, appConfigService, externalAuthService, userService, externalAuthGuard);\n }\n\n protected redirect(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.externalAuthGuard.canActivate(next, state).pipe(\n mergeMap((canActivate: boolean): Observable => {\n if (canActivate) {\n this.externalAuthService.getAccessTokenSilently({ cacheMode: 'on' });\n return of(true);\n }\n return of(false);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, NavigationExtras, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { catchError, map, skipWhile, timeout, withLatestFrom, filter } from 'rxjs/operators';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\n\nimport { UserService } from '../../user.service';\nimport { AppConfigService } from '../../app-config.service';\nimport { Api } from '../../../../../shared/constants/api';\nimport { FeatureFlagService } from '../../feature-flag/feature-flag.service';\nimport { FeatureFlagCollection } from '../../../../../shared/interfaces/feature-flag.interface';\nimport { AclSecurityAdapter } from '../../acl.service';\nimport { RequiredSecurities } from '../../../../../shared/constants/required-securities';\nimport { UserAclService } from '../../user-acl.service';\nimport { AngularUtility } from '../../../utility/angular.utility';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { $user } from '../../../../../shared/constants/user';\nimport { ISecurityGroup } from '../../../../../shared/interfaces/security-group.interface';\nimport { $securityGroup, SecurityGroupTemplateNames, SecurityGroupOrigin } from '../../../../../shared/constants/security-group';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\n\n/**\n * Allows the user to continue navigation to the home page.\n * If they are on new security and admin env then they will be redirected to an alternate home page (currently the profile page).\n * If they are on new security, old navigation and tenant env then they will be redirected to the dashboard page.\n * If they are on new navigation and tenant env then they will be redirected to the landing page that their permissions allow.\n * If they are on old security and an admin or have permissions to run scans then they will be redirected to the dashboard page.\n * Else they will be redirected to the profile page.\n * Should only be used on routes denoting a home page.\n */\n@Injectable()\nexport class HomePageRedirectGuard {\n constructor(\n private userService: UserService,\n private userAclService: UserAclService,\n private appConfigService: AppConfigService,\n private featureFlagService: FeatureFlagService,\n private router: Router,\n ) {}\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n if (!this.userService.isAuthenticated()) {\n const extras: NavigationExtras = {\n queryParams: {\n returnTo: `/${Api.home}`,\n },\n };\n return of(this.router.createUrlTree(['/', `${Api.login}`], extras));\n }\n\n const ffClientInitialized$: Observable = this.featureFlagService.isAuthorizedClientInitialized$.pipe(\n timeout(1000),\n skipWhile((initialized: boolean): boolean => initialized === false),\n AngularUtility.shareRef(),\n );\n\n const hasAccessToAdminOrganizations$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.Tenants_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.Tenants_Read, true)\n .check(),\n ),\n );\n\n const hasAccessToOverview$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.GR_Governance_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.GR_Governance_Read, false)\n .check(),\n ),\n );\n\n const hasAccessToPortfolio$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.Workspaces_Read_Digital_Properties_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.Workspaces_Read_Digital_Properties_Read, false)\n .check(),\n ),\n );\n\n const hasAccessToDashboard$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.GR_Dashboard_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.GR_Dashboard_Read, false)\n .check(),\n ),\n );\n\n const organizationPortfolioEnabled$: Observable = ffClientInitialized$.pipe(\n withLatestFrom(this.featureFlagService.variation$(FeatureFlagCollection.organizationPortfolio, false)),\n map(([_, value]: [boolean, VariationValue]): boolean => Boolean(value)),\n catchError(() => of(false)),\n );\n\n const isOrganizationAdmin$: Observable = this.userService.userDataChanged$.pipe(\n filter(SharedCommonUtility.notNullish),\n map((user: IUserServerResponse): boolean =>\n user[$user.groups]?.some(\n (group: ISecurityGroup): boolean =>\n group[$securityGroup.origin] === SecurityGroupOrigin.predefined &&\n group[$securityGroup.name] === SecurityGroupTemplateNames.organization_administrator,\n ),\n ),\n );\n\n return combineLatest([\n hasAccessToAdminOrganizations$,\n hasAccessToOverview$,\n hasAccessToPortfolio$,\n hasAccessToDashboard$,\n organizationPortfolioEnabled$,\n isOrganizationAdmin$,\n ]).pipe(\n map(\n ([\n hasAccessToAdminOrganizations,\n hasAccessToOverview,\n hasAccessToPortfolio,\n hasAccessToDashboard,\n organizationPortfolioEnabled,\n isOrganizationAdmin,\n ]: [boolean, boolean, boolean, boolean, boolean, boolean]): UrlTree => {\n const onTenantEnv: boolean = this.appConfigService.isTenantEnabled();\n\n const getRoute = (): string => {\n const defaultRoute: string = `/${Api.settings}/${Api.profile}`;\n if (!onTenantEnv) {\n return hasAccessToAdminOrganizations ? `/${Api.admin}/${Api.organizations}` : defaultRoute;\n }\n if (organizationPortfolioEnabled && isOrganizationAdmin) {\n return `/${Api.organization}/${Api.portfolio}`;\n }\n if (hasAccessToOverview) {\n return `/${Api.overview}`;\n }\n if (hasAccessToPortfolio) {\n return `/${Api.portfolio}`;\n }\n if (hasAccessToDashboard) {\n return `/${Api.dashboard}`;\n }\n return defaultRoute;\n };\n\n return this.router.parseUrl(getRoute());\n },\n ),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { DefaultBreadcrumbsResolver } from './default-breadcrumbs.resolver';\nimport { AbstractBreadcrumbsResolver } from './abstract-breadcrumbs.resolver';\nimport { IPostProcessBreadcrumb } from './breadcrumbs.config';\nimport { IBreadcrumb } from '../../components/breadcrumbs/breadcrumbs.shared';\nimport { TranslateService } from '../../translate/translate.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ProjectAndTasksBreadcrumbsResolver extends AbstractBreadcrumbsResolver {\n public constructor(\n private defaultResolver: DefaultBreadcrumbsResolver,\n private translateService: TranslateService,\n ) {\n super();\n }\n\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): IPostProcessBreadcrumb {\n const resolve$: Observable = this.defaultResolver.resolve(route, state) as Observable;\n\n return resolve$.pipe(\n switchMap((prev: IBreadcrumb[]) => {\n const lastBreadcrumb: IBreadcrumb = prev[prev.length - 1];\n const textTranslated: string = this.translateService.instant('projects_and_tasks');\n return of([\n ...prev.slice(0, prev.length - 1),\n {\n path: lastBreadcrumb.path,\n isLinkToPageAvailable: lastBreadcrumb.isLinkToPageAvailable,\n queryParams: lastBreadcrumb.queryParams,\n queryParamsHandling: lastBreadcrumb.queryParamsHandling,\n textTranslated,\n } as IBreadcrumb,\n ]);\n }),\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\n\nimport { UserService } from '../../../services/user.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { A11yService } from '../../../services/a11y.service';\nimport { FormService } from '../../../services/form.service';\nimport { NotificationService } from '../../../services/notification.service';\nimport { AbstractChangePasswordComponent } from '../abstract/change-password-abstract.component';\nimport { PASSWORD_ERRORS } from '../password-errors.constants';\n\n@Component({\n selector: 'app-change-password-from-signup',\n templateUrl: '../abstract/change-password-abstract.component.html',\n styleUrls: ['../abstract/change-password-abstract.component.scss'],\n})\nexport class ChangePasswordFromSignupComponent extends AbstractChangePasswordComponent {\n public currentPasswordRequired: boolean = false;\n public independentForm: boolean = false;\n public syncErrorsToCheck: PASSWORD_ERRORS[] = [\n PASSWORD_ERRORS.minlength,\n PASSWORD_ERRORS.noLowercase,\n PASSWORD_ERRORS.noUppercase,\n PASSWORD_ERRORS.noNumberOrSpecial,\n ];\n public asyncErrorsToCheck: PASSWORD_ERRORS[] = [];\n public submitButtonLabel: string = 'sign_up';\n\n @Input() public emailToken: string;\n @Input() public formChangePassword: UntypedFormGroup;\n @Input() public formValidationRequest: Subject;\n @Input() public formValidationRequest$: Observable;\n\n constructor(\n protected userService: UserService,\n protected formBuilder: UntypedFormBuilder,\n protected translateService: TranslateService,\n protected a11yService: A11yService,\n protected formService: FormService,\n protected notificationService: NotificationService,\n ) {\n super(userService, formBuilder, translateService, a11yService, formService, notificationService);\n\n this.formValidationRequest = new Subject();\n this.formValidationRequest$ = this.formValidationRequest.asObservable();\n }\n}\n","
    \n \n \n {{ signUpErrorMessage }}\n \n \n {{ 'account_with_email_already_exists' | translate }}\n {{ 'login_to_your_account' | translate }}\n \n \n
    \n\n
    \n
    \n {{ 'sign_up_form' | translate }}\n
    \n {{ 'form-field-marked-as-required' | translate }}\n
    \n\n
    \n
    \n 0\"\n [required]=\"true\"\n \n >\n \n \n
    \n
    \n 0\"\n [required]=\"true\"\n \n >\n \n \n
    \n
    \n\n
    \n \n \n \n
    \n\n
    \n 0\"\n [required]=\"true\"\n \n >\n \n \n
    \n\n \n
    \n \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { DsButtonVariants, DsInputStates } from '@levelaccess/design-system';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { catchError } from 'rxjs/operators';\n\nimport { IUserRole } from '../../../../../../shared/interfaces/user-role.interface';\nimport { UserService } from '../../../../services/user.service';\nimport { ErrorMessageService } from '../../../../services/error-message.service';\nimport { A11yService } from '../../../../services/a11y.service';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { FormService } from '../../../../services/form.service';\nimport { UserRoleService } from '../../../../services/user-role.service';\nimport { $user, minPasswordLength } from '../../../../../../shared/constants/user';\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport { IUserSignupResponse, IUserSignUpRequest } from '../../../../../../shared/interfaces/user-authentication.interface';\nimport { CommonUtility } from '../../../../utility/common.utility';\nimport { DateUtility } from '../../../../utility/date.utility';\nimport { ChangePasswordFromSignupComponent } from '../../../../components/change-password/from-signup/change-password-from-signup.component';\nimport { AppConfigService } from '../../../../services/app-config.service';\nimport { LoadErrorHandler } from '../../../../services/load-error-handler';\nimport { validationError } from '../../../../constants/form.constants';\nimport { AngularUtility } from '../../../../utility/angular.utility';\nimport { BannerType } from '../../../../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\nimport { Api } from '../../../../../../shared/constants/api';\nimport { errorMessagesNames } from '../../../../../../shared/constants/errors';\n\nexport enum SignupFormField {\n FIRST_NAME = 'first_name',\n LAST_NAME = 'last_name',\n EMAIL = 'email',\n ROLE = 'role',\n}\n\n@Component({\n selector: 'app-signup-form',\n templateUrl: './signup-form.component.html',\n})\nexport class SignupFormComponent implements OnInit, OnDestroy {\n public readonly Api: typeof Api = Api;\n public readonly FormField: typeof SignupFormField = SignupFormField;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly BannerType: typeof BannerType = BannerType;\n\n private subscription: Subscription = new Subscription();\n\n public emailInputState: DsInputStates = DsInputStates.inactive;\n public form: UntypedFormGroup;\n public showSignupErrorBanner: boolean;\n public signUpErrorMessage: string;\n public userRoles$: Observable;\n public firstNameError$: Observable;\n public lastNameError$: Observable;\n public roleError$: Observable;\n public externalAuthEnabled: boolean;\n\n @Input() public confirmEmailToken: string;\n @Input() public email: string;\n\n @Output() public onSuccess: EventEmitter = new EventEmitter();\n\n @ViewChild(ChangePasswordFromSignupComponent)\n public changePasswordInput: ChangePasswordFromSignupComponent;\n\n constructor(\n private userService: UserService,\n private formBuilder: UntypedFormBuilder,\n private errorMessageService: ErrorMessageService,\n private a11yService: A11yService,\n private translateService: TranslateService,\n private formService: FormService,\n private userRoleService: UserRoleService,\n private appConfigService: AppConfigService,\n private loadErrorHandler: LoadErrorHandler,\n ) {\n this.externalAuthEnabled = this.appConfigService.isUsingExternalIdp();\n\n this.form = this.buildFormGroup();\n this.buildErrorObservables();\n this.userRoles$ = this.getUserRoles$();\n }\n\n private buildFormGroup(): UntypedFormGroup {\n const form: UntypedFormGroup = this.formBuilder.group({\n [SignupFormField.FIRST_NAME]: this.formBuilder.control(null, [Validators.required]),\n [SignupFormField.LAST_NAME]: this.formBuilder.control(null, [Validators.required]),\n [SignupFormField.EMAIL]: this.formBuilder.control(null),\n [SignupFormField.ROLE]: this.formBuilder.control('', [Validators.required]),\n });\n\n if (this.externalAuthEnabled === false) {\n form.addControl(\n $user.newPassword,\n this.formBuilder.control(null, [\n Validators.minLength(minPasswordLength),\n CustomValidators.validateHasUppercase,\n CustomValidators.validateHasLowercase,\n CustomValidators.validateHasNumberOrSpecial,\n Validators.required,\n ]),\n );\n }\n\n return form;\n }\n\n private buildErrorObservables(): void {\n this.firstNameError$ = this.formService\n .buildFormControlErrorMessage$(this.form.get(SignupFormField.FIRST_NAME), SignupFormField.FIRST_NAME)\n .pipe(AngularUtility.shareRef());\n\n this.lastNameError$ = this.formService\n .buildFormControlErrorMessage$(this.form.get(SignupFormField.LAST_NAME), SignupFormField.LAST_NAME)\n .pipe(AngularUtility.shareRef());\n\n this.roleError$ = this.formService\n .buildFormControlErrorMessage$(this.form.get(SignupFormField.ROLE), '', {\n [validationError.required]: this.translateService.instant('sign_up_role_required_error'),\n })\n .pipe(AngularUtility.shareRef());\n }\n\n private getUserRoles$(): Observable {\n return this.userRoleService\n .getUserRoles()\n .pipe(\n catchError(\n this.loadErrorHandler.handleErrorObservable.bind(\n this.loadErrorHandler,\n 'error_loading_user_roles',\n SignupFormComponent.name,\n ),\n ),\n );\n }\n\n public ngOnInit(): void {\n this.form.get(SignupFormField.EMAIL).setValue(this.email);\n this.emailInputState = DsInputStates.nonEditable;\n }\n\n public onSubmit(): void {\n this.showSignupErrorBanner = false;\n\n Object.values(this.form.controls).forEach((control: AbstractControl) => control.updateValueAndValidity());\n this.changePasswordInput?.validatePassword();\n\n if (this.form.valid) {\n this.signUp();\n }\n }\n\n private signUp(): void {\n const request: IUserSignUpRequest = this.buildRequest();\n\n this.subscription.add(\n this.userService.signup(request).subscribe({\n next: (response: IUserSignupResponse) => this.onSuccess.next(response),\n error: (response: HttpErrorResponse) => this.onSignUpError(response),\n }),\n );\n }\n\n private buildRequest(): IUserSignUpRequest {\n const request: IUserSignUpRequest = {\n firstName: this.form.get(SignupFormField.FIRST_NAME).value.trim(),\n lastName: this.form.get(SignupFormField.LAST_NAME).value.trim(),\n roleId: this.form.get(SignupFormField.ROLE).value,\n userLanguage: CommonUtility.getPreferredAvailableLanguageAndRegion(),\n timezone: DateUtility.getTimezoneValueFromUtc(DateUtility.determineUserTimeZone()),\n timezoneOffset: new Date().getTimezoneOffset(),\n confirmEmailToken: this.confirmEmailToken,\n };\n\n if (this.externalAuthEnabled === false) {\n request.password = this.form.get($user.newPassword).value;\n }\n\n return request;\n }\n\n private onSignUpError(response: HttpErrorResponse): void {\n this.showSignupErrorBanner = true;\n\n const defaultErrorMessage: string =\n this.errorMessageService.getGlobalErrorResponse(response) || this.translateService.instant('login_unable_to_sign_up');\n\n if (CommonUtility.extractHTTPErrorName(response) === errorMessagesNames.ErrorMultipleAccountSetUpsNotAllowed) {\n this.signUpErrorMessage = null;\n this.a11yService.setMessage('account_with_email_already_exists_login_to_your_account');\n } else {\n this.signUpErrorMessage = defaultErrorMessage;\n this.a11yService.setMessage(defaultErrorMessage);\n }\n }\n\n public closeSignupErrorBanner(): void {\n this.showSignupErrorBanner = false;\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
    \n \n {{ 'sign_up_success' | translate }}\n \n
    \n\n
    \n {{ 'sign_up_platform_usage_description' | translate }}\n
    \n\n
    \n \n \n \n
    \n\n
    \n \n
    \n","import { Component, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { DsButtonVariants, DsCheckboxGroupComponent } from '@levelaccess/design-system';\nimport { Subscription } from 'rxjs';\n\nimport { UserService } from '../../../../services/user.service';\nimport { userPreferenceScope, userPreferenceScopeParam } from '../../../../../../shared/constants/user-preferences';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { NotificationService } from '../../../../services/notification.service';\nimport { NotificationPosition } from '../../../../models/notification.model';\nimport { BannerType } from '../../../../components/users/edit-user/edit-permissions-banner/edit-permissions-banner.component';\nimport { PLATFORM_ACTIONS, PlatformAction, PlatformActionItem } from '../../../../../../shared/constants/platform-action';\nimport { TenantPackageService } from '../../../../services/tenant-package.service';\nimport { PackageNames } from '../../../../../../shared/constants/packaging';\n\n@Component({\n selector: 'app-signup-platform-usage',\n templateUrl: './signup-platform-usage.component.html',\n})\nexport class SignupPlatformUsageComponent implements OnDestroy {\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly BannerType: typeof BannerType = BannerType;\n\n private subscription: Subscription = new Subscription();\n public showSignupSuccessBanner: boolean = true;\n\n @Input() public email: string;\n\n @Output() public onSuccess: EventEmitter = new EventEmitter();\n\n @ViewChild('platFormActionCheckboxGroup')\n public platFormActionCheckboxGroup: DsCheckboxGroupComponent;\n\n public platformActions: PlatformActionItem[] = [];\n\n constructor(\n private userService: UserService,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n private tenantPackageService: TenantPackageService,\n ) {\n // This can be used in the future to exclude actions based on tenant package\n const packageNameToExcludedActions: Partial, PlatformAction[]>> = {};\n\n this.platformActions = PLATFORM_ACTIONS.filter((action: PlatformActionItem) => {\n const excludedActions: PlatformAction[] | undefined = packageNameToExcludedActions[this.tenantPackageService.tenantPackage];\n if (excludedActions === undefined) {\n return true;\n }\n return !excludedActions.includes(action.value);\n });\n }\n\n public closeSignupSuccessBanner(): void {\n this.showSignupSuccessBanner = false;\n }\n\n public onSubmit(): void {\n this.subscription.add(\n this.userService\n .updateUserPreferences(userPreferenceScope.platformUsage, {\n [userPreferenceScopeParam.platformActions]: this.platFormActionCheckboxGroup.value,\n })\n .subscribe({\n next: () => this.onUserPreferenceUpdateSuccess(),\n error: (response: HttpErrorResponse) => this.onUserPreferenceUpdateFailed(response),\n }),\n );\n }\n\n private onUserPreferenceUpdateSuccess(): void {\n this.onSuccess.next();\n }\n\n private onUserPreferenceUpdateFailed(response: HttpErrorResponse): void {\n const errorMessage: string = this.translateService.instant('sign_up_platform_usage_save_error');\n this.notificationService.error(errorMessage, NotificationPosition.Toast);\n\n console.error(`[${SignupPlatformUsageComponent.name}.onUserPreferenceUpdateFailed]: ${errorMessage}`, response);\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","
    \n {{ description }}\n
    \n\n
    \n \n {{ 'sign_up_overview_learn_more' | translate }}\n \n
    \n\n
    \n
      \n
    • \n \n \n \n {{ workspace.name }}\n
        \n
      • \n {{ websiteAppName }}\n
      • \n
      \n
    • \n
    \n
    \n\n
    \n \n
    \n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DsButtonVariants, Icons, IconStyles } from '@levelaccess/design-system';\nimport _ from 'lodash';\n\nimport { UserService } from '../../../../services/user.service';\nimport { IDigitalPropertyListItem } from '../../../../../../shared/interfaces/digital-property.interface';\nimport { IUserServerResponse } from '../../../../../../shared/interfaces/user.interface';\nimport { $user } from '../../../../../../shared/constants/user';\nimport { ISecurityEntity, ISecurityGroup } from '../../../../../../shared/interfaces/security-group.interface';\nimport { $securityEntity, $securityGroup, SecurityEntityLevel } from '../../../../../../shared/constants/security-group';\nimport { $digitalProperty } from '../../../../../../shared/constants/digital-properties';\nimport { $workspace } from '../../../../../../shared/constants/workspace';\nimport { TranslateService } from '../../../../translate/translate.service';\n\ninterface IUserWorkspace {\n name: string;\n websiteAppNames: string[];\n}\n\n@Component({\n selector: 'app-signup-overview',\n templateUrl: './signup-overview.component.html',\n styleUrls: ['./signup-overview.component.scss'],\n})\nexport class SignupOverviewComponent implements OnInit, OnDestroy {\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n public readonly IconStyles: typeof IconStyles = IconStyles;\n\n private subscription: Subscription = new Subscription();\n\n public description: string;\n public userWorkspaces: IUserWorkspace[] = [];\n\n @Input() public tenantName: string;\n\n @Output() public onSuccess: EventEmitter = new EventEmitter();\n\n constructor(\n private userService: UserService,\n private translateService: TranslateService,\n ) {}\n\n public onSubmit(): void {\n this.onSuccess.next();\n }\n\n public ngOnInit(): void {\n this.subscription.add(\n this.userService.getAuthenticatedUser().subscribe((response: IUserServerResponse) => {\n this.userWorkspaces = this.getUserWorkspaces(response);\n this.description = this.getDescription(response, this.userWorkspaces);\n }),\n );\n }\n\n private getUserWorkspaces(response: IUserServerResponse): IUserWorkspace[] {\n return _.chain(response[$user.digitalProperties])\n .groupBy((item: IDigitalPropertyListItem) => item[$digitalProperty.workspace][$workspace.name])\n .entries()\n .map(([workspaceName, properties]: [string, IDigitalPropertyListItem[]]) => ({\n name: workspaceName,\n websiteAppNames: properties.map((item: IDigitalPropertyListItem) => item[$digitalProperty.name]),\n }))\n .value();\n }\n\n private getDescription(response: IUserServerResponse, userWorkspaces: IUserWorkspace[]): string {\n const workspaceCount: number = userWorkspaces.length;\n const propertyCount: number = userWorkspaces.flatMap((workspace: IUserWorkspace) => workspace.websiteAppNames).length;\n\n if (workspaceCount === 1) {\n return this.translateService.instant('sign_up_overview_entity_count_for_workspace', [\n propertyCount,\n userWorkspaces[0].name,\n ]);\n }\n\n const hasTenantLevelAccess: boolean = response[$user.groups]\n .flatMap((group: ISecurityGroup) => group[$securityGroup.entities])\n .some((entity: ISecurityEntity) => entity[$securityEntity.level] === SecurityEntityLevel.tenant);\n\n return this.translateService.instant(\n hasTenantLevelAccess ? 'sign_up_overview_all_entity_count' : 'sign_up_overview_entity_count',\n [workspaceCount, propertyCount, this.tenantName],\n );\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","\n
    \n \"{{\n\n \n
    \n

    {{ 'sign_up_welcome_header' | translate }}

    \n

    {{ 'sign_up_welcome_message' | translate }}

    \n
    \n
    \n

    {{ 'sign_up_notes' | translate }}

    \n
      \n
    • {{ 'sign_up_notes_display_name' | translate }}
    • \n
    • {{ 'sign_up_notes_activation_link' | translate }}
    • \n
    \n
    \n
    \n\n \n
    \n \n
    \n
    \n\n \n
    \n
    {{ 'sign_up_platform_structure_header' | translate }}
    \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n

    \n {{ title }}\n \n {{ 'sign_up_step_x_of_total' | translate: [currentSignupStep, totalSignupSteps] }}\n \n

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

    {{ 'sign_up_invalid_link_header' | translate }}

    \n
    \n
    \n

    {{ 'sign_up_invalid_link_message' | translate }}

    \n
    \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DsButtonVariants, Icons, IconScale, IconStyles } from '@levelaccess/design-system';\n\nimport { UserService } from '../../../services/user.service';\nimport { Api, ApiQueryOption } from '../../../../../shared/constants/api';\nimport { IUserEmailResponse } from '../../../../../shared/interfaces/user.interface';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { IUserSignupResponse } from '../../../../../shared/interfaces/user-authentication.interface';\nimport { PackageNames } from '../../../../../shared/constants/packaging';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { $tenant } from '../../../../../shared/constants/tenant';\nimport { TenantPackageService } from '../../../services/tenant-package.service';\n\nexport enum SignupState {\n TOKEN_VALIDATION = 'TOKEN_VALIDATION',\n TOKEN_INVALID = 'TOKEN_INVALID',\n SIGNUP = 'SIGNUP',\n PLATFORM_USAGE = 'PLATFORM_USAGE',\n OVERVIEW = 'OVERVIEW',\n}\n\n@Component({\n selector: 'app-signup',\n templateUrl: './signup.component.html',\n styleUrls: ['./signup.component.scss'],\n})\nexport class SignupComponent implements OnInit, OnDestroy {\n public readonly Icons: typeof Icons = Icons;\n public readonly IconStyles: typeof IconStyles = IconStyles;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly IconScale: typeof IconScale = IconScale;\n public readonly SignupState: typeof SignupState = SignupState;\n\n private subscriptions: Subscription = new Subscription();\n\n public currentSignupStep: number = 1;\n public totalSignupSteps: number = 3;\n\n public signupState: BehaviorSubject = new BehaviorSubject(SignupState.TOKEN_VALIDATION);\n public submit: Subject = new Subject();\n public email: string;\n public confirmEmailToken: string;\n public tenantName: string;\n public showStep: boolean;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private userService: UserService,\n private errorHandlerService: ErrorHandlerService,\n private appConfigService: AppConfigService,\n private translateService: TranslateService,\n private tenantPackageService: TenantPackageService,\n ) {\n this.showStep = this.appConfigService.isTenantEnabled() && this.tenantPackageService.tenantPackage !== PackageNames.Audit;\n }\n\n public get title(): string {\n switch (this.signupState.value) {\n case SignupState.TOKEN_VALIDATION:\n case SignupState.SIGNUP:\n default:\n return this.translateService.instant('sign_up');\n case SignupState.PLATFORM_USAGE:\n return this.translateService.instant('sign_up_platform_usage');\n case SignupState.OVERVIEW:\n return this.translateService.instant('sign_up_welcome_to_organization', this.tenantName);\n }\n }\n\n public onSignupSuccess(response: IUserSignupResponse): void {\n if (this.tenantPackageService.tenantPackage === PackageNames.Audit) {\n this.navigate([`/${Api.portfolio}`]);\n return;\n }\n\n if (this.appConfigService.isTenantEnabled() === false) {\n this.navigate([`/${Api.home}`]);\n return;\n }\n\n this.signupState.next(SignupState.PLATFORM_USAGE);\n this.currentSignupStep = 2;\n this.tenantName = response.tenantInfo?.[$tenant.name];\n }\n\n public onPlatformUsageSubmitSuccess(): void {\n this.signupState.next(SignupState.OVERVIEW);\n this.currentSignupStep = 3;\n }\n\n public onOverviewSuccess(): void {\n this.navigate([`/${Api.home}`]);\n }\n\n public ngOnInit(): void {\n if (this.userService.isAuthenticated()) {\n this.navigate([`/${Api.home}`]);\n return;\n }\n\n this.confirmEmailToken = this.activatedRoute.snapshot.queryParams[ApiQueryOption.confirmEmailToken];\n\n this.subscriptions.add(\n this.userService.getEmailByToken(this.confirmEmailToken).subscribe({\n next: (response: IUserEmailResponse) => {\n this.email = response.email;\n this.signupState.next(SignupState.SIGNUP);\n },\n error: () => {\n this.signupState.next(SignupState.TOKEN_INVALID);\n },\n }),\n );\n }\n\n private navigate(path: string[]): void {\n this.router.navigate(path).catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../helpers/rest.builder';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HealthcheckApi {\n private restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n // GET https://{organizationDomain}/api/v1/healthcheck/ping\n public ping(organizationDomain: string): Observable {\n const url: string = `https://${organizationDomain}${this.restBuilder.create().healthcheck().ping().getApiUrl()}`;\n\n return this.httpClient.get(url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, delay, map, switchMap } from 'rxjs/operators';\nimport { AbstractControl, AsyncValidatorFn, ValidationErrors } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { HealthcheckApi } from './rest/healthcheck.api';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { DEBOUNCE_TIME } from '../shared/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HealthcheckService {\n constructor(private healthcheckApi: HealthcheckApi) {}\n\n public ping(organizationDomain: string): Observable {\n return this.healthcheckApi.ping(organizationDomain);\n }\n\n // Checks whether the organization URL corresponds to an actual active tenant\n public get organizationURLAsyncValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable => {\n let val: string = control.value?.trim();\n\n if (SharedCommonUtility.isNullishOrEmpty(val)) {\n return of(null);\n }\n\n const [, orgDomain] = SharedCommonUtility.getProtocolHostPortAndPath(val);\n val = `https://${orgDomain}`;\n\n return of(val).pipe(\n delay(DEBOUNCE_TIME),\n switchMap((orgURL: string) =>\n this.ping(new URL(orgURL).hostname).pipe(\n map((): null => null),\n catchError((_: HttpErrorResponse): Observable<{ invalidOrgURL: boolean }> => of({ invalidOrgURL: true })),\n ),\n ),\n );\n };\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CustomValidators } from '../../../../services/helpers/form-custom-validators';\nimport { FormService } from '../../../../services/form.service';\nimport { TranslateService } from '../../../../translate/translate.service';\nimport { HealthcheckService } from '../../../../services/healthcheck.service';\nimport { ErrorMessageService } from '../../../../services/error-message.service';\nimport { redirectUrl } from '../../../../shared/constants';\nimport { Api } from '../../../../../../shared/constants/api';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\n\nenum FormField {\n 'organizationUrl' = 'organizationUrl',\n}\n\n@Component({\n selector: 'app-tenant-login-redirect',\n templateUrl: './tenant-login-redirect.component.html',\n styleUrl: './tenant-login-redirect.component.scss',\n})\nexport class TenantLoginRedirectComponent {\n protected readonly FormField: typeof FormField = FormField;\n\n public formFieldErrors: Partial>;\n public formFieldsLabel: Record;\n public form: UntypedFormGroup;\n\n private readonly returnTo: string | undefined;\n\n constructor(\n private formBuilder: FormBuilder,\n private formService: FormService,\n private translateService: TranslateService,\n private healthcheckService: HealthcheckService,\n private errorMessageService: ErrorMessageService,\n private element: ElementRef,\n private activatedRoute: ActivatedRoute,\n ) {\n this.formFieldErrors = {};\n this.formFieldsLabel = {\n [FormField.organizationUrl]: 'organization_url',\n };\n this.form = this.formBuilder.group({\n [FormField.organizationUrl]: this.formBuilder.control('', {\n validators: [CustomValidators.required, CustomValidators.domainValidator],\n asyncValidators: this.healthcheckService.organizationURLAsyncValidator,\n }),\n });\n this.returnTo = this.activatedRoute.snapshot.queryParams[redirectUrl.returnTo];\n }\n\n public checkValidity(): boolean {\n if (this.form.valid) {\n this.formFieldErrors = {};\n return true;\n }\n\n if (this.form.get(FormField.organizationUrl).hasError('invalidOrgURL')) {\n this.formFieldErrors[FormField.organizationUrl] = this.translateService.instant('non-existent-website-error');\n } else {\n this.formFieldErrors[FormField.organizationUrl] = this.formService.getErrorMessageForField(\n this.form.get(FormField.organizationUrl),\n FormField.organizationUrl,\n '',\n '',\n {\n required: this.translateService.instant('enter_a_url'),\n },\n );\n }\n this.errorMessageService.setFocusOnFirstError(this.element.nativeElement);\n\n return false;\n }\n\n public onSubmit(): void {\n if (!this.checkValidity()) {\n return;\n }\n\n const orgUrl: string = this.form.get(FormField.organizationUrl).value?.trim();\n const [, orgDomain] = SharedCommonUtility.getProtocolHostPortAndPath(orgUrl);\n\n let redirectionLoginUrl: string = `https://${orgDomain}/${Api.login}`;\n if (SharedCommonUtility.notNullishOrEmpty(this.returnTo)) {\n redirectionLoginUrl += `?${redirectUrl.returnTo}=${this.returnTo}`;\n }\n window.open(redirectionLoginUrl, '_self');\n }\n}\n","\n
    \n
    \n
    \n

    {{ 'login' | translate }}

    \n
    \n
    \n
    \n
    \n 0\"\n [required]=\"true\"\n >\n \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n","import { ActivatedRouteSnapshot, CanActivateFn, Router, UrlTree } from '@angular/router';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { inject } from '@angular/core';\nimport { catchError, filter, map } from 'rxjs/operators';\n\nimport { Api } from '../../../../../shared/constants/api';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { IDigitalPropertyListItem, IDigitalPropertyType } from '../../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty, $digitalPropertyType } from '../../../../../shared/constants/digital-properties';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { UserService } from '../../user.service';\nimport { IUserServerResponse } from '../../../../../shared/interfaces/user.interface';\nimport { $user } from '../../../../../shared/constants/user';\nimport { DigitalPropertyService } from '../../digital-property.service';\n\nexport const MobileDigitalPropertyGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable => {\n const router: Router = inject(Router);\n const forbiddenPage: UrlTree = router.parseUrl(Api.forbidden);\n\n // property data should be defined by LinkedPropertyDataService during NavigationStart event\n const propertyData: ILinkedPropertyData = LinkedPropertyUtility.fromLinkedPropertyQueryParam(route.queryParams);\n\n return combineLatest([getMobileDigitalPropertyTypes$(), getUserDigitalProperty$(propertyData[Api.digitalPropertyId])]).pipe(\n map(([mobileTypes, digitalProperty]: [IDigitalPropertyType[], IDigitalPropertyListItem]) => {\n if (SharedCommonUtility.isNullish(digitalProperty)) {\n return forbiddenPage;\n }\n\n return (\n mobileTypes.some(\n (type: IDigitalPropertyType) => type[$digitalPropertyType._id] === digitalProperty[$digitalProperty.typeId],\n ) || forbiddenPage\n );\n }),\n catchError(() => of(forbiddenPage)),\n );\n\n function getUserDigitalProperty$(propertyId: string): Observable {\n return inject(UserService).userDataChanged$.pipe(\n filter(SharedCommonUtility.notNullish),\n map((user: IUserServerResponse) =>\n user[$user.digitalProperties].find((property: IDigitalPropertyListItem) => property[$digitalProperty._id] === propertyId),\n ),\n );\n }\n\n function getMobileDigitalPropertyTypes$(): Observable {\n const service: DigitalPropertyService = inject(DigitalPropertyService);\n\n return service\n .getDigitalPropertyTypes()\n .pipe(map((types: IDigitalPropertyType[]) => types.filter((type: IDigitalPropertyType) => service.isMobileType(type))));\n }\n};\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { QuicklinkModule, QuicklinkStrategy } from 'ngx-quicklink';\n\nimport { config } from '../environments/config.shared';\nimport { NotFoundComponent } from './pages/public/not-found/not-found.component';\nimport { LoginComponent } from './pages/public/login/login.component';\nimport { LogoutComponent } from './pages/public/logout/logout.component';\nimport { PasswordResetComponent } from './pages/public/password-reset/password-reset.component';\nimport { ResendActivationLinkComponent } from './pages/public/activation-link/activation-link.component';\nimport { CookiePolicyComponent } from './pages/public/cookie-policy/cookie-policy.component';\nimport { VerifyEmailComponent } from './pages/public/verify-email/verify-email.component';\nimport { HelpCenterComponent } from './pages/public/help-center/help-center.component';\nimport { AuthGuard } from './services/auth/guards/auth.guard';\nimport { Api } from '../../shared/constants/api';\nimport { ForbiddenErrorComponent } from './pages/public/error/forbidden-error/forbidden-error.component';\nimport { AttributionComponent } from './pages/public/attribution/attribution.component';\nimport { DigitalPropertyGuard } from './services/auth/guards/digital-property.guard';\nimport { ShortLinkComponent } from './pages/public/short-link/short-link.component';\nimport { NonSsoTenantGuard } from './services/auth/guards/non-sso-tenant.guard';\nimport {\n RedirectSsoTenantToAuth0LogoutGuard,\n RedirectSsoTenantToSignupGuard,\n} from './services/auth/guards/redirect-sso-tenant.guard';\nimport { FunctionalArea, SecureAction } from '../../shared/constants/security';\nimport { SecurityGuard } from './services/auth/guards/security.guard';\nimport { SecurityEntityLevel } from '../../shared/constants/security-group';\nimport { RequiredSecurities } from '../../shared/constants/required-securities';\nimport { HomePageRedirectGuard } from './services/auth/guards/home-page-redirect.guard';\nimport { ProjectAndTasksBreadcrumbsResolver } from './resolvers/breadcrumbs/projects-and-tasks-breadcrumbs.resolver';\nimport { FeatureFlagCollection } from '../../shared/interfaces/feature-flag.interface';\nimport { FeatureFlagRedirectionGuard } from './services/feature-flag/feature-flag-redirection.guard';\nimport { ActivatedRouteData } from './shared/constants';\nimport { TenantGuard } from './services/auth/guards/tenant.guard';\nimport { SignupComponent } from './pages/public/signup/signup.component';\nimport { WebDigitalPropertyGuard } from './services/auth/guards/web-digital-property.guard';\nimport { TenantLoginRedirectComponent } from './pages/public/login/tenant-login-redirect/tenant-login-redirect.component';\nimport { TenantlessGuard } from './services/auth/guards/tenantless.guard.service';\nimport { MobileDigitalPropertyGuard } from './services/auth/guards/mobile-digital-property.guard';\nimport { FeatureFlagGuard } from './services/feature-flag/feature-flag.guard';\n\nconst appRoutes: Routes = [\n {\n path: `${Api.admin}`,\n loadChildren: (): any => import('./admin/admin.module').then((m: any) => m.AdminModule),\n canActivate: [AuthGuard],\n data: {\n title: ['administrator_panel'],\n breadcrumbs: {\n isLinkToPageAvailable: false,\n },\n },\n },\n {\n path: `${Api.signup}`,\n component: SignupComponent,\n canActivate: [RedirectSsoTenantToSignupGuard],\n data: {\n title: ['sign_up_to', ' ' + config.APP.NAME],\n },\n },\n {\n path: `${Api.login}`,\n component: LoginComponent,\n canActivate: [AuthGuard],\n data: {\n title: ['login'],\n },\n },\n {\n path: `${Api.loginOrganizationRedirection}`,\n component: TenantLoginRedirectComponent,\n canActivate: [TenantlessGuard],\n data: {\n title: ['login'],\n },\n },\n {\n path: `${Api.logout}`,\n component: LogoutComponent,\n canActivate: [RedirectSsoTenantToAuth0LogoutGuard],\n data: {\n title: ['logout'],\n },\n },\n {\n path: `${Api.portfolio}`,\n loadChildren: (): any => import('./pages/public/portfolio/portfolio.module').then((m: any) => m.PortfolioModule),\n canActivate: [AuthGuard, TenantGuard, DigitalPropertyGuard],\n data: {\n title: ['heading_menu_portfolio'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: RequiredSecurities.Workspaces_Read,\n },\n },\n {\n path: `${Api.overview}`,\n loadChildren: (): any =>\n import('./pages/public/workspace-dashboard/workspace-dashboard.module').then((m: any) => m.WorkspaceDashboardModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['dashboard'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n functionalActions: {\n [FunctionalArea.gr_governance]: [SecureAction.read],\n },\n },\n },\n },\n {\n path: `${Api.dashboard}`,\n loadChildren: (): any => import('./pages/public/dashboard/dashboard.module').then((m: any) => m.DashboardModule),\n canActivate: [AuthGuard, DigitalPropertyGuard],\n data: {\n title: ['overview'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.findings}`,\n loadChildren: (): any =>\n import('./pages/public/digital-asset-findings/digital-asset-findings.module').then(\n (m: any) => m.DigitalAssetFindingsModule,\n ),\n canActivate: [AuthGuard, DigitalPropertyGuard, FeatureFlagGuard],\n data: {\n title: ['findings'],\n featureFlag: FeatureFlagCollection.digitalAssetFindings,\n },\n },\n {\n path: `${Api.projects}`,\n loadChildren: (): any => import('./pages/public/projects/projects.module').then((m: any) => m.ProjectsModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['projects_label'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n resolver: ProjectAndTasksBreadcrumbsResolver,\n },\n requiredSecurity: RequiredSecurities.PM_Projects_Read,\n },\n },\n {\n path: `${Api.myTasks}`,\n loadChildren: (): any => import('./pages/public/my-tasks/my-tasks.module').then((m: any) => m.MyTasksModule),\n canActivate: [AuthGuard, DigitalPropertyGuard],\n data: {\n title: ['my_tasks_label'],\n breadcrumbs: {\n resolver: ProjectAndTasksBreadcrumbsResolver,\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.run_automated_scan}`,\n redirectTo: `${Api.websitesAndApps}/${Api.scans}/${Api.page_scans}/${Api.run_automated_scan}`,\n },\n {\n path: `${Api.run_scan}`,\n redirectTo: `${Api.websitesAndApps}/${Api.scans}/${Api.page_scans}/${Api.run_automated_scan}`,\n },\n {\n path: `${Api.manual_evaluations}`,\n loadChildren: (): any =>\n import('./pages/public/manual-evaluations/manual-evaluations.module').then((m: any) => m.ManualEvaluationsModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['label_manual_evaluations'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: RequiredSecurities.MT_Manual_Evaluation_Read,\n },\n },\n {\n path: `${Api.designEvaluations}`,\n loadChildren: (): any =>\n import('./admin/design-reviews/design-reviews-view/design-reviews-view.module').then((m: any) => m.DesignReviewsViewModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['design_evaluations'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n functionalActions: {\n [FunctionalArea.de_results]: [SecureAction.read],\n },\n },\n },\n },\n {\n path: `${Api.designReviews}`,\n loadChildren: (): any => import('./admin/design-reviews/design-reviews.module').then((m: any) => m.DesignReviewsModule),\n canActivate: [AuthGuard, SecurityGuard],\n data: {\n title: ['design_evaluations'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n functionalActions: {\n [FunctionalArea.de_administration]: [SecureAction.read],\n },\n },\n },\n },\n {\n path: `${Api.documents}`,\n loadChildren: (): any => import('./pages/public/documents/documents.module').then((m: any) => m.DocumentsModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['sidebar_documents'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n functionalActions: {\n [FunctionalArea.documents]: [SecureAction.read],\n },\n },\n },\n },\n {\n path: `${Api.scans}`,\n redirectTo: `${Api.websitesAndApps}/${Api.scans}/${Api.page_scans}`,\n },\n {\n path: `${Api.websitesAndApps}`,\n children: [\n {\n path: Api.scans,\n loadChildren: (): any =>\n import('./pages/public/scans-new-nav/scans-new-nav.module').then((m: any) => m.ScansNewNavModule),\n canActivate: [AuthGuard, WebDigitalPropertyGuard],\n data: {\n title: ['website_and_apps_scans_navigation_item_label'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n queryParamsHandling: 'none',\n },\n },\n },\n {\n path: Api.mobile_scans,\n loadChildren: (): any => import('./pages/public/mobile-scans/mobile-scans.module').then((m: any) => m.MobileScansModule),\n canActivate: [AuthGuard, MobileDigitalPropertyGuard],\n data: {\n breadcrumbs: {\n isLinkToPageAvailable: true,\n queryParamsHandling: 'none',\n },\n },\n },\n {\n path: Api.mobile_testing_emulator,\n loadChildren: (): any =>\n import('./pages/public/mobile-testing-emulator/mobile-testing-emulator.module').then(\n (m: any) => m.MobileTestingEmulatorModule,\n ),\n canActivate: [AuthGuard, MobileDigitalPropertyGuard, FeatureFlagGuard, SecurityGuard],\n data: {\n title: ['mobile_app_emulator_testing'],\n [ActivatedRouteData.featureFlag]: FeatureFlagCollection.mobileTestingEmulator,\n requiredSecurity: RequiredSecurities.AT_Mobile_Apps_Read,\n },\n },\n ],\n },\n {\n path: `${Api.settings}/${Api.match_components}`,\n redirectTo: `${Api.websitesAndApps}/${Api.scans}/${Api.components}`,\n },\n {\n path: `${Api.settings}`,\n loadChildren: (): any => import('./pages/public/settings/settings.module').then((m: any) => m.SettingsModule),\n data: {\n title: ['sidebar_settings'],\n breadcrumbs: {\n isLinkToPageAvailable: false,\n },\n },\n },\n {\n path: `${Api.integrations}`,\n loadChildren: (): any => import('./pages/public/integrations/integrations.module').then((m: any) => m.IntegrationsModule),\n data: {\n title: ['sidebar_integrations'],\n breadcrumbs: {\n isLinkToPageAvailable: false,\n },\n },\n },\n {\n path: `${Api.monitoring}`,\n loadChildren: (): any => import('./pages/public/monitoring/monitoring.module').then((m: any) => m.MonitoringModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard, WebDigitalPropertyGuard],\n data: {\n title: ['sidebar_menu_monitoring'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n queryParamsHandling: 'none',\n },\n requiredSecurity: RequiredSecurities.GR_Monitoring_Read,\n },\n },\n {\n path: `${Api.notifications}`,\n loadChildren: (): any => import('./pages/public/notifications/notifications.module').then((m: any) => m.NotificationsModule),\n canActivate: [AuthGuard, DigitalPropertyGuard, SecurityGuard],\n data: {\n title: ['notifications'],\n requiredSecurity: RequiredSecurities.Notifications_Read,\n },\n },\n {\n path: `${Api.scannableDocuments}`,\n runGuardsAndResolvers: 'pathParamsOrQueryParamsChange',\n loadChildren: (): any =>\n import('./pages/public/scannable-document/scannable-document.module').then((m: any) => m.ScannableDocumentModule),\n canActivate: [AuthGuard, SecurityGuard],\n data: {\n title: ['label_scannable_document'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n functionalActions: {\n [FunctionalArea.pdf_testing]: [SecureAction.read],\n },\n entityLevel: SecurityEntityLevel.digitalProperty,\n },\n },\n },\n {\n path: `${Api.organization}`,\n runGuardsAndResolvers: 'pathParamsOrQueryParamsChange',\n loadChildren: (): any => import('./pages/public/organization/organization.module').then((m: any) => m.OrganizationModule),\n canActivate: [AuthGuard, SecurityGuard],\n data: {\n title: ['organization'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: {\n entityLevel: SecurityEntityLevel.digitalProperty,\n functionalActions: {\n ...RequiredSecurities.GR_Organization_Dashboard_Read.functionalActions,\n ...RequiredSecurities.Organization_Portfolio_Read.functionalActions,\n ...RequiredSecurities.Common_Findings_Read.functionalActions,\n },\n },\n },\n },\n {\n path: `${Api.academy}`,\n runGuardsAndResolvers: 'pathParamsOrQueryParamsChange',\n loadChildren: (): any => import('./pages/public/academy/academy.module').then((m: any) => m.AcademyModule),\n canActivate: [AuthGuard, SecurityGuard],\n data: {\n title: ['academy'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n requiredSecurity: RequiredSecurities.Academy_Read,\n },\n },\n {\n path: `${Api.attribution}`,\n component: AttributionComponent,\n data: {\n title: ['attribution_label'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.cookie_policy}`,\n component: CookiePolicyComponent,\n data: {\n title: ['cookie_policy'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.guidelines}`,\n component: HelpCenterComponent,\n data: {\n title: ['sidebar_menu_guidelines'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.documentation}`,\n loadChildren: (): any => import('./pages/public/documentation/documentation.module').then((m: any) => m.DocumentationModule),\n canActivate: [AuthGuard],\n data: {\n title: ['sidebar_menu_documentation'],\n breadcrumbs: {\n isLinkToPageAvailable: true,\n },\n },\n },\n {\n path: `${Api.password_reset}`,\n component: PasswordResetComponent,\n data: {\n title: ['password_reset'],\n },\n canActivate: [NonSsoTenantGuard],\n },\n {\n path: `${Api.activation_link}`,\n component: ResendActivationLinkComponent,\n data: {\n title: ['resend_activation_link'],\n },\n },\n {\n path: `${Api.create_new_password}/:${Api.token}`,\n loadChildren: (): any =>\n import('./pages/public/create-new-password/create-new-password.module').then((m: any) => m.CreateNewPasswordModule),\n data: {\n title: ['create_new_password'],\n },\n },\n {\n path: `${Api.verify_email}/:${Api.token}`,\n component: VerifyEmailComponent,\n data: {\n title: ['email_verification'],\n },\n },\n {\n path: `${Api.select_language}`,\n loadChildren: (): any =>\n import('./pages/public/select-language/select-language.module').then((m: any) => m.SelectLanguageModule),\n data: {\n title: ['select_language'],\n },\n },\n {\n path: `${Api.pages}`,\n loadChildren: (): any => import('./pages/public/pages/pages.module').then((m: any) => m.PagesModule),\n canActivate: [AuthGuard, SecurityGuard],\n data: {\n requiredSecurity: RequiredSecurities.Pages_Read,\n },\n },\n {\n path: `${Api.custom_audit_rules}`,\n loadChildren: (): any =>\n import('./pages/public/custom-audit-rules/custom-audit-rules.module').then((m: any) => m.CustomAuditRulesModule),\n canActivate: [AuthGuard, SecurityGuard, FeatureFlagRedirectionGuard],\n data: {\n [ActivatedRouteData.featureFlag]: FeatureFlagCollection.customRulesAndSeverity,\n requiredSecurity: RequiredSecurities.Tenant_Rule_Library_Read,\n },\n },\n {\n path: `${Api.custom_severities}`,\n loadChildren: (): any =>\n import('./pages/public/custom-severities/custom-severities.module').then((m: any) => m.CustomSeveritiesModule),\n canActivate: [AuthGuard, SecurityGuard, FeatureFlagRedirectionGuard],\n data: {\n [ActivatedRouteData.featureFlag]: FeatureFlagCollection.customSeverities,\n requiredSecurity: RequiredSecurities.CustomSeverities_Read,\n },\n },\n {\n path: `${Api.ai}`,\n loadChildren: (): any =>\n import('./pages/public/artificial-intelligence/artificial-intelligence.module').then(\n (m: any) => m.ArtificialIntelligenceModule,\n ),\n canActivate: [AuthGuard, SecurityGuard, FeatureFlagRedirectionGuard],\n data: {\n [ActivatedRouteData.featureFlag]: FeatureFlagCollection.artificialIntelligenceOptin,\n requiredSecurity: RequiredSecurities.AI_Features_Read,\n },\n },\n {\n path: `${Api.short_link}/:${Api.shortLink}`,\n component: ShortLinkComponent,\n canActivate: [AuthGuard],\n data: {\n title: ['short_link_redirect'],\n },\n },\n {\n path: `${Api.home}`,\n canActivate: [HomePageRedirectGuard],\n children: [],\n },\n {\n path: `${Api.not_found}`,\n component: NotFoundComponent,\n data: {\n title: ['page_not_found_title'],\n },\n },\n {\n path: `${Api.forbidden}`,\n component: ForbiddenErrorComponent,\n data: {\n title: ['page_forbidden_title'],\n },\n },\n { path: '', pathMatch: 'full', redirectTo: `${Api.home}` },\n {\n path: '**',\n redirectTo: '/404',\n },\n];\n\n@NgModule({\n imports: [\n QuicklinkModule,\n RouterModule.forRoot(appRoutes, {\n enableTracing: false,\n preloadingStrategy: QuicklinkStrategy,\n paramsInheritanceStrategy: 'always',\n }),\n ],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { inject } from '@angular/core';\nimport { Router, CanActivateFn, UrlTree } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { Api } from '../../../../../shared/constants/api';\nimport { AppConfigService } from '../../app-config.service';\n\nexport const TenantGuard: CanActivateFn = (): Observable => {\n const router: Router = inject(Router);\n const appConfigService: AppConfigService = inject(AppConfigService);\n\n const hasAccess: boolean = appConfigService.isTenantEnabled();\n return of(hasAccess || router.parseUrl(Api.forbidden));\n};\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Event, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { RoutingService } from './routing.service';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleTagManagerService implements OnDestroy {\n private readonly gtmId: string;\n private subscriptions: Subscription;\n\n constructor(\n private routingService: RoutingService,\n private appConfigService: AppConfigService,\n private router: Router,\n ) {\n this.gtmId = this.appConfigService.getGoogleTagManagerId();\n this.subscriptions = new Subscription();\n }\n\n private isGtmConfigured(): boolean {\n return typeof this.gtmId === 'string' && this.gtmId.length > 0;\n }\n\n private pushOnDataLayer(obj: unknown): void {\n const dataLayer: any = this.getDataLayer();\n dataLayer.push(obj);\n }\n\n private getDataLayer(): any {\n (window as any).dataLayer = (window as any).dataLayer || [];\n\n return (window as any).dataLayer;\n }\n\n private loadGoogleTagManager(): void {\n this.pushOnDataLayer({\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js',\n });\n\n const gtmScript: HTMLScriptElement = document.createElement('script');\n\n gtmScript.id = 'GTMscript';\n gtmScript.async = true;\n gtmScript.src = `//www.googletagmanager.com/gtm.js?id=${this.gtmId}`;\n\n document.head.insertBefore(gtmScript, document.head.firstChild);\n\n const ifrm: HTMLIFrameElement = document.createElement('iframe');\n\n ifrm.src = `//www.googletagmanager.com/ns.html?id=${this.gtmId}`;\n ifrm.style.width = '0';\n ifrm.style.height = '0';\n ifrm.style.display = 'none';\n ifrm.style.visibility = 'hidden';\n\n const noscript: HTMLElement = document.createElement('noscript');\n\n noscript.id = 'GTMiframe';\n noscript.appendChild(ifrm);\n\n document.body.insertBefore(noscript, document.body.firstChild);\n }\n\n private processEvent(value: Event): void {\n if (value instanceof NavigationEnd) {\n this.subscriptions.add(\n this.routingService.pageTitle$.pipe(first()).subscribe((pageTitle: string) => {\n const gtmTag: { event: string; pageName: string } = {\n event: 'page',\n pageName: pageTitle || value.url,\n };\n this.pushOnDataLayer(gtmTag);\n }),\n );\n }\n }\n\n public initialiseGoogleTagManager(): void {\n if (this.isGtmConfigured() === false) {\n return;\n }\n\n this.loadGoogleTagManager();\n this.router.events.forEach(this.processEvent.bind(this));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AmplitudeService {\n private readonly amplitudeKey: string;\n\n constructor(private appConfigService: AppConfigService) {\n this.amplitudeKey = this.appConfigService.getAmplitudeKey();\n }\n\n private isAmplitudeConfigured(): boolean {\n return typeof this.amplitudeKey === 'string' && this.amplitudeKey.length > 0;\n }\n\n private loadAmplitudeSnippet(): void {\n const amplitudeScript: HTMLScriptElement = document.createElement('script');\n amplitudeScript.type = 'text/javascript';\n amplitudeScript.text = `(function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement(\"script\")\n;r.type=\"text/javascript\"\n;r.integrity=\"sha384-girahbTbYZ9tT03PWWj0mEVgyxtZoyDF9KVZdL+R53PP5wCY0PiVUKq0jeRlMx9M\"\n;r.crossOrigin=\"anonymous\";r.async=true\n;r.src=\"https://cdn.amplitude.com/libs/amplitude-7.2.1-min.gz.js\"\n;r.onload=function(){if(!e.amplitude.runQueuedFunctions){\nconsole.log(\"[Amplitude] Error: could not load SDK\")}}\n;var i=t.getElementsByTagName(\"script\")[0];i.parentNode.insertBefore(r,i)\n;function s(e,t){e.prototype[t]=function(){\nthis._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}\nvar o=function(){this._q=[];return this}\n;var a=[\"add\",\"append\",\"clearAll\",\"prepend\",\"set\",\"setOnce\",\"unset\"]\n;for(var c=0;c;\n private subscriptions: Subscription;\n\n constructor() {\n this.focused = new BehaviorSubject(true);\n window.document.body.classList.add(FocusedWindowClassNames.focused);\n this.subscriptions = new Subscription();\n }\n\n public whenFocused(action: Observable): Observable {\n return action.pipe(filter((): boolean => this.focused.value));\n }\n\n public init(): void {\n this.subscriptions.unsubscribe();\n\n const onFocus = (): void => {\n this.focused.next(true);\n window.document.body.classList.remove(FocusedWindowClassNames.blurred);\n window.document.body.classList.add(FocusedWindowClassNames.focused);\n };\n\n const onBlur = (): void => {\n this.focused.next(false);\n window.document.body.classList.remove(FocusedWindowClassNames.focused);\n window.document.body.classList.add(FocusedWindowClassNames.blurred);\n };\n\n this.subscriptions.add(\n fromEvent(window, 'focus').subscribe({\n next: onFocus,\n }),\n );\n\n this.subscriptions.add(\n fromEvent(window, 'blur').subscribe({\n next: onBlur,\n }),\n );\n }\n\n public destroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { ModalContainerComponent } from '../modals/modal-container.component';\nimport { IModal } from '../modals/modal.interface';\n\n@Component({\n selector: 'app-server-version-change',\n templateUrl: './server-version-change-modal.component.html',\n})\nexport class ServerVersionChangeModalComponent implements IModal {\n @ViewChild(ModalContainerComponent, { static: true })\n public container: ModalContainerComponent;\n\n public reload(): void {\n location.reload();\n }\n}\n","\n
    \n

    {{ 'label_application_updated' | translate }}

    \n\n
    \n \n
    \n
    \n
    \n","import { Injectable, NgZone } from '@angular/core';\n\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WalkMeService {\n private readonly scriptSrc: string;\n\n constructor(\n private ngZone: NgZone,\n private appConfigService: AppConfigService,\n ) {\n this.scriptSrc = this.appConfigService.getWalkMeScriptUrl();\n }\n\n private isWalkMeConfigured(): boolean {\n return typeof this.scriptSrc === 'string' && this.scriptSrc.length > 0;\n }\n\n private onLoadWalkMeError(error: any): void {\n console.error('[WalkMeService].onLoadWalkMeError', error);\n }\n\n private async loadWalkMeWidget(): Promise {\n const action = (resolve: Function, reject: Function): void => {\n const walkMeScript: HTMLScriptElement = document.createElement('script');\n\n walkMeScript.id = 'walkMeScript';\n walkMeScript.type = 'text/javascript';\n walkMeScript.async = true;\n walkMeScript.src = this.scriptSrc;\n\n const onWalkMeLoaded = (): void => {\n resolve();\n };\n\n const onWalkMeLoadError = (error: ErrorEvent): void => {\n reject(error);\n };\n\n walkMeScript.addEventListener('load', onWalkMeLoaded);\n walkMeScript.addEventListener('error', onWalkMeLoadError);\n\n document.head.insertBefore(walkMeScript, document.head.firstChild);\n\n window['_walkmeConfig'] = {\n smartLoad: true,\n };\n };\n\n return new Promise(action);\n }\n\n public setGlobalVariable(currentSessionData: Record): void {\n window['walkme_variable'] = currentSessionData;\n }\n\n public initialiseWalkMe(): void {\n if (this.isWalkMeConfigured() === false) {\n return;\n }\n\n this.ngZone.runOutsideAngular((): void => {\n this.loadWalkMeWidget().catch(this.onLoadWalkMeError.bind(this));\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { interval, Observable, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { AppConfigService } from './app-config.service';\n\nconst SCRIPT_ID: string = 'pendo-script';\n\nexport interface IVisitor {\n id: string;\n [key: string]: string;\n}\n\nexport interface IAccount {\n id: string;\n [key: string]: string;\n}\n\ninterface IPendo {\n initialize: (settings: { visitor: IVisitor; account: IAccount }) => void;\n}\n\ninterface IWindowWithPendo {\n pendo: IPendo;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PendoService {\n private pendoScriptIsLoaded$: Observable;\n private subscriptions: Subscription;\n constructor(private appConfigService: AppConfigService) {\n this.subscriptions = new Subscription();\n }\n\n private get apiKey(): string {\n return this.appConfigService.getPendoApiKey();\n }\n\n private isPendoConfigured(): boolean {\n return typeof this.apiKey === 'string' && this.apiKey.length > 0;\n }\n\n // public for testing purposes\n public getPendoScript(): HTMLScriptElement {\n const script: HTMLScriptElement = document.createElement('script');\n script.id = SCRIPT_ID;\n script.innerHTML = `(function (apiKey) {\n (function (p, e, n, d, o) {\n var v, w, x, y, z;\n o = p[d] = p[d] || {};\n o._q = o._q || [];\n v = [\"initialize\", \"identify\", \"updateOptions\", \"pageLoad\", \"track\"];\n for (w = 0, x = v.length; w < x; ++w)\n (function (m) {\n o[m] =\n o[m] ||\n function () {\n o._q[m === v[0] ? \"unshift\" : \"push\"]([m].concat([].slice.call(arguments, 0)));\n };\n })(v[w]);\n y = e.createElement(n);\n y.async = !0;\n y.src = \"https://cdn.pendo.io/agent/static/\" + apiKey + \"/pendo.js\";\n z = e.getElementsByTagName(n)[0];\n z.parentNode.insertBefore(y, z);\n })(window, document, \"script\", \"pendo\");\n})(\"${this.apiKey}\");`;\n script.async = true;\n return script;\n }\n\n // this doesn't mean the script is completely loaded\n // it just means, the script is injected into the DOM\n private get pendoScriptIsInjected(): boolean {\n return document.querySelector(`#${SCRIPT_ID}`) !== null;\n }\n\n private get pendo(): IPendo {\n return (window as unknown as IWindowWithPendo).pendo;\n }\n\n private initializePendo(): void {\n if (this.isPendoConfigured() === false || this.pendoScriptIsInjected) {\n return;\n }\n this.pendoScriptIsLoaded$ = interval(1000).pipe(\n filter(() => SharedCommonUtility.notNullish(this.pendo)),\n take(1),\n );\n document.head.appendChild(this.getPendoScript());\n }\n\n public registerUser(sessionData: Record): void {\n if (this.isPendoConfigured() === false || SharedCommonUtility.isNullish(sessionData)) {\n return;\n }\n if (SharedCommonUtility.isNullish(this.pendoScriptIsLoaded$)) {\n this.initializePendo();\n }\n this.subscriptions.add(\n this.pendoScriptIsLoaded$.subscribe((): void => {\n this.pendo.initialize({\n visitor: {\n id: String(sessionData.userId),\n ...sessionData,\n },\n account: {\n id: String(sessionData.TID),\n },\n });\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { RestService } from './rest.service';\nimport { IJobIndustriesServerResponse } from '../../../shared/interfaces/job-industry.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JobIndustryService {\n constructor(private restService: RestService) {}\n\n public getJobIndustries(limit: number = 50, skip: number = 0): Observable {\n return this.restService.getJobIndustries(limit, skip);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { RestService } from './rest.service';\nimport { IJobTitlesServerResponse } from '../../../shared/interfaces/job-title.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class JobTitleService {\n constructor(private restService: RestService) {}\n\n public getJobTitles(limit: number = 50, skip: number = 0): Observable {\n return this.restService.getJobTitles(limit, skip);\n }\n}\n","export enum $jobIndustry {\n _id = '_id',\n name = 'name',\n description = 'description',\n translationKey = 'translationKey',\n}\n","export enum $jobTitle {\n _id = '_id',\n createdAt = 'createdAt',\n title = 'title',\n description = 'description',\n translationKey = 'translationKey',\n updatedAt = 'updatedAt',\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, Observable, of, Subscription } from 'rxjs';\nimport { delayWhen, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport _ from 'lodash';\n\nimport { ITenantInfoWithPackageInfo } from '../../../shared/interfaces/tenant.interface';\nimport { IUserServerResponse } from '../../../shared/interfaces/user.interface';\nimport { IWorkspaceClient, IWorkspaceSummary } from '../../../shared/interfaces/workspace.interface';\nimport { IDigitalPropertyListItem } from '../../../shared/interfaces/digital-property.interface';\nimport { $user } from '../../../shared/constants/user';\nimport { $tenant } from '../../../shared/constants/tenant';\nimport { $workspace } from '../../../shared/constants/workspace';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { WalkMeService } from './walk-me.service';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { TenantService } from './tenant.service';\nimport { UserService } from './user.service';\nimport { ISecurityGroup } from '../../../shared/interfaces/security-group.interface';\nimport { $securityGroup } from '../../../shared/constants/security-group';\nimport { SharedTextUtility } from '../../../shared/utils/text.utility';\nimport { PendoService } from './pendo.service';\nimport { JobIndustryService } from './job-industry.service';\nimport { JobTitleService } from './job-title.service';\nimport { WorkspaceService } from './workspace.service';\nimport { IJobTitle, IJobTitlesServerResponse } from '../../../shared/interfaces/job-title.interface';\nimport { IJobIndustriesServerResponse, IJobIndustry } from '../../../shared/interfaces/job-industry.interface';\nimport { UserRoleService } from './user-role.service';\nimport { $jobIndustry } from '../../../shared/constants/job-industry';\nimport { $jobTitle } from '../../../shared/constants/job-title';\nimport { IUserRole } from '../../../shared/interfaces/user-role.interface';\nimport { $userRole } from '../../../shared/constants/user-role';\nimport { $userPreference, userPreferenceScope, userPreferenceScopeParam } from '../../../shared/constants/user-preferences';\nimport { IUserPreference, IUserPreferencesServerResponse } from '../../../shared/interfaces/user-preference.interface';\n\ntype PendoDataType = string | boolean | number | Date | Array;\n\ninterface UserData {\n user: IUserServerResponse;\n tenant?: ITenantInfoWithPackageInfo;\n workspace?: IWorkspaceSummary;\n userPlatformUsage: string[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CurrentSessionDataService {\n public static readonly SESSION_DATA_KEY: string = 'current_session_data';\n\n private userDataSubscription: Subscription = Subscription.EMPTY;\n private jobIndustries: IJobIndustry[] = [];\n private jobTitles: IJobTitle[] = [];\n private userRoles: IUserRole[] = [];\n\n constructor(\n private jobIndustryService: JobIndustryService,\n private jobTitleService: JobTitleService,\n private tenantService: TenantService,\n private userService: UserService,\n private walkMeService: WalkMeService,\n private workspaceService: WorkspaceService,\n private pendoService: PendoService,\n private userRoleService: UserRoleService,\n ) {}\n\n public initialiseCurrentSessionData(): void {\n if (this.isConfigured()) {\n return;\n }\n\n this.userDataSubscription.unsubscribe();\n\n this.userDataSubscription = this.userService.userDataChanged$\n .pipe(\n tap(() => this.resetCurrentSessionData()),\n filter(SharedCommonUtility.notNullish),\n delayWhen(() => this.prepareRequiredData$()),\n switchMap((user: IUserServerResponse) => this.loadUserData$(user)),\n )\n .subscribe({\n next: this.setCurrentSessionData.bind(this),\n error: (err: HttpErrorResponse) => console.error('[CurrentSessionDataService] Session data initialization failed: ', err),\n });\n }\n\n private isConfigured(): boolean {\n return SharedCommonUtility.getTypeOf(window[CurrentSessionDataService.SESSION_DATA_KEY]) === 'object';\n }\n\n private resetCurrentSessionData(): void {\n window[CurrentSessionDataService.SESSION_DATA_KEY] = null;\n }\n\n private prepareRequiredData$(): Observable {\n return forkJoin([\n this.jobIndustryService.getJobIndustries(),\n this.jobTitleService.getJobTitles(),\n this.userRoleService.getUserRoles(),\n ]).pipe(\n tap(\n ([jobIndustryResponse, jobTitleResponse, userRoles]: [\n IJobIndustriesServerResponse,\n IJobTitlesServerResponse,\n IUserRole[],\n ]) => {\n this.jobIndustries = jobIndustryResponse.jobIndustries;\n this.jobTitles = jobTitleResponse.jobTitles;\n this.userRoles = userRoles;\n },\n ),\n );\n }\n\n private loadUserData$(user: IUserServerResponse): Observable {\n const tenant$: Observable = SharedCommonUtility.notNullish(user[$user.currentTenantId])\n ? this.tenantService.getTenantFromTenantedScope(user[$user.currentTenantId])\n : of(null);\n\n const workspace$: Observable = SharedCommonUtility.notNullish(user[$user.lastUsedWorkspace])\n ? this.workspaceService.getWorkspaceSummary(user[$user.lastUsedWorkspace])\n : of(null);\n\n return forkJoin([tenant$, workspace$, this.getUserPlatformUsage$()]).pipe(\n map(([tenant, workspace, userPlatformUsage]: [ITenantInfoWithPackageInfo, IWorkspaceSummary, string[]]) => ({\n user: user,\n tenant: tenant,\n workspace: workspace,\n userPlatformUsage: userPlatformUsage,\n })),\n );\n }\n\n private getUserPlatformUsage$(): Observable {\n return this.userService\n .getUserPreferences(userPreferenceScope.platformUsage)\n .pipe(\n map(\n (response: IUserPreferencesServerResponse) =>\n response.userPreferences.find(\n (preference: IUserPreference) => preference[$userPreference.param] === userPreferenceScopeParam.platformActions,\n )?.[$userPreference.value] ?? [],\n ),\n );\n }\n\n private setCurrentSessionData(data: UserData): void {\n const currentSessionData: Record = {\n ...this.getUserProfileData(data),\n ...this.getUserTenantData(data),\n ...this.getUserSecurityGroupData(data),\n };\n\n window[CurrentSessionDataService.SESSION_DATA_KEY] = currentSessionData;\n\n this.walkMeService.setGlobalVariable(currentSessionData);\n this.pendoService.registerUser(currentSessionData);\n }\n\n private getUserProfileData(data: UserData): Record {\n const matchingJobIndustry: IJobIndustry = this.jobIndustries.find(\n (jobIndustry: IJobIndustry) => jobIndustry[$jobIndustry._id] === data.user[$user.jobIndustry],\n );\n const matchingJobTitle: IJobTitle = this.jobTitles.find(\n (jobTitle: IJobTitle) => jobTitle[$jobTitle._id] === data.user[$user.jobTitle],\n );\n const matchingUserRole: IUserRole = this.userRoles.find((role: IUserRole) => role[$userRole._id] === data.user[$user.roleId]);\n\n return {\n userId: data.user[$user._id],\n email: data.user[$user.email],\n displayName: data.user[$user.displayName],\n createdDate: data.user[$user.createdAt],\n lastLoginDate: data.user[$user.lastLogin],\n jobIndustry: data.user[$user.jobIndustry] as string,\n jobIndustryName: SharedCommonUtility.notNullish(matchingJobIndustry) ? matchingJobIndustry[$jobIndustry.name] : null,\n jobTitle: data.user[$user.jobTitle] as string,\n jobTitleName: SharedCommonUtility.notNullish(matchingJobTitle) ? matchingJobTitle[$jobTitle.title] : null,\n roleId: data.user[$user.roleId],\n roleName: SharedCommonUtility.notNullish(matchingUserRole) ? matchingUserRole[$userRole.name] : null,\n signupSurvey: data.userPlatformUsage.join(','),\n };\n }\n\n private getUserTenantData(data: UserData): Record {\n const tenant: ITenantInfoWithPackageInfo = data.tenant;\n\n const currentWorkspace: IWorkspaceClient | null = data.user[$user.workspaces]?.find(\n (ws: IWorkspaceClient) => ws[$workspace._id] === data.user[$user.lastUsedWorkspace],\n );\n const currentDigitalProperty: IDigitalPropertyListItem | null = data.user[$user.digitalProperties]?.find(\n (dp: IDigitalPropertyListItem) => dp[$digitalProperty._id] === data.user[$user.lastUsedDigitalProperty],\n );\n\n return {\n TID: SharedCommonUtility.notNullish(tenant) ? tenant[$tenant._id] : 'adminenv',\n tenantName: SharedCommonUtility.notNullish(tenant) ? tenant[$tenant.name] : null,\n currentWorkspace: data.user[$user.lastUsedWorkspace],\n workspaceName: currentWorkspace?.[$workspace.name],\n currentDigitalProperty: data.user[$user.lastUsedDigitalProperty],\n digitalPropertyName: currentDigitalProperty?.[$digitalProperty.name],\n workspacesCount: data.user[$user.workspaces]?.length,\n numDpsCurrentWorkspace: SharedCommonUtility.notNullish(data.workspace) ? data.workspace.totalDigitalProperties : null,\n SFID: tenant?.[$tenant.salesforceAccountId] || '(none)',\n packageId: tenant?.packageId ?? null,\n packageName: tenant?.packageName ?? null,\n };\n }\n\n private getUserSecurityGroupData(data: UserData): Record {\n const groups: ISecurityGroup[] = data.user[$user.groups] ?? [];\n\n const [staffGroups, userGroups]: [ISecurityGroup[], ISecurityGroup[]] = _.partition(\n groups,\n (group: ISecurityGroup) => group[$securityGroup.isStaffGroup],\n );\n\n const userGroupId: string = _.map(userGroups, $securityGroup._id).join(',');\n const userGroupName: string = userGroups\n .map((group: ISecurityGroup): string => SharedTextUtility.escapeCSVField(group[$securityGroup.name]))\n .join(',');\n\n const staffGroupId: string = _.map(staffGroups, $securityGroup._id).join(',');\n const staffGroupName: string = staffGroups\n .map((group: ISecurityGroup): string => SharedTextUtility.escapeCSVField(group[$securityGroup.name]))\n .join(',');\n\n return {\n userGroupId,\n userGroupName,\n staffGroupId,\n staffGroupName,\n };\n }\n}\n","import { Router, NavigationEnd, Event } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { filter, map, startWith } from 'rxjs/operators';\n\nimport { Api } from '../../../shared/constants/api';\nimport { AngularUtility } from '../utility/angular.utility';\n\nexport class RouteHelper {\n private static isRouteStartsWithPath$(router: Router, path: string): Observable {\n return router.events.pipe(\n filter((routerEvent: Event): routerEvent is NavigationEnd => routerEvent instanceof NavigationEnd),\n map((routerEvent: NavigationEnd) => routerEvent.url.startsWith(path)),\n startWith(router.routerState.snapshot.url.startsWith(path)),\n AngularUtility.shareRef(),\n );\n }\n\n public static isLoginPage$(router: Router): Observable {\n return this.isRouteStartsWithPath$(router, `/${Api.login}`);\n }\n\n public static isSignupPage$(router: Router): Observable {\n return this.isRouteStartsWithPath$(router, `/${Api.signup}`);\n }\n\n public static isTenantLoginRedirectPage$(router: Router): Observable {\n return this.isRouteStartsWithPath$(router, `/${Api.loginOrganizationRedirection}`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, pairwise, skipWhile } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ServerVersionService {\n private $version: BehaviorSubject;\n\n constructor() {\n this.$version = new BehaviorSubject(null);\n }\n\n public get versionChange(): Observable {\n const isNull = (v: string | null): boolean => v === null;\n const compare = ([prev, curr]: [string, string]): string | null => {\n if (prev !== curr) {\n return curr;\n }\n\n return null;\n };\n\n return this.$version.pipe(skipWhile(isNull), pairwise(), map(compare), skipWhile(isNull));\n }\n\n public get version(): string | null {\n return this.$version.value;\n }\n\n public set version(value: string) {\n this.$version.next(value);\n }\n}\n","import { Component, HostBinding } from '@angular/core';\n\nimport { config } from '../../environments/config.shared';\n\n@Component({\n selector: 'app-svg-images',\n templateUrl: '../../assets/images/svg.html',\n})\nexport class SvgImagesComponent {\n @HostBinding('style.display') public none: string = 'none';\n\n public config: any;\n\n constructor() {\n this.config = config;\n }\n}\n","
    \n \n \n \n \n \n \n \n \n \n \n >{{ 'page_screenshot' | translate }}\n \n \n \n \n \n \n \n
    \n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'app-svg-image-filters',\n templateUrl: '../../assets/images/image-filters.html',\n})\nexport class SvgImageFiltersComponent {\n // 'display: none' causes image filters to fail in firefox\n @HostBinding('style.display') public inLineBlock: string = 'inline-block';\n @HostBinding('style.height') public height: string = '0';\n @HostBinding('style.width') public width: string = '0';\n @HostBinding('class') public class: string = 'visually-hidden';\n @HostBinding('attr.aria-hidden') public ariaHidden: boolean = true;\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","\n \n
    \n \n \n \n \n \n
    \n
    \n\n \n
    \n \n \n \n \n \n
    \n
    \n\n \n \n \n\n \n \n {{ toast.actionConfig.label | translate }}\n \n \n\n","import { Component, ElementRef, HostBinding, NgZone, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { createFocusTrap, FocusTrap } from 'focus-trap';\n\nimport { NotificationService } from '../../services/notification.service';\nimport { NotificationPosition, NotificationType } from '../../models/notification.model';\nimport { INotification } from '../../interfaces/notification.interface';\nimport { SharedTextUtility } from '../../../../shared/utils/text.utility';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n\nconst TOAST_FOCUS_DELAY: number = 100;\n\n@Component({\n selector: 'app-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n @HostBinding('class.toast-container') toastContainer: string = 'true';\n\n public timeout: number;\n\n public toasts: INotification[];\n private focusTrap: FocusTrap | null;\n\n constructor(\n private element: ElementRef,\n private notificationService: NotificationService,\n private router: Router,\n private zone: NgZone,\n ) {\n this.subscriptions = new Subscription();\n this.focusTrap = null;\n this.timeout = 15000; // mseconds\n this.toasts = [];\n }\n\n private processNotificationOnRouteChanges = (event: Event): void => {\n if (event instanceof NavigationStart) {\n this.clearOnRouteChange();\n }\n };\n\n private processToast(toast: INotification): void {\n if (SharedCommonUtility.getTypeOf(toast) === 'object' && toast.position !== NotificationPosition.Toast) {\n return;\n }\n\n if (toast === null) {\n this.clearAll(toast);\n return;\n }\n\n if (typeof toast.message === 'string') {\n toast.message = SharedTextUtility.removeHTML(toast.message);\n }\n\n if (toast.shouldTrapFocus) {\n toast.autoHide = false;\n }\n\n this.toasts.push(toast);\n\n this.handleFocus();\n }\n\n private handleFocus(): void {\n this.clearFocusTrap();\n if (this.toasts.some((t: INotification) => t.shouldTrapFocus)) {\n this.setFocusTrap();\n } else {\n this.focusToast();\n }\n }\n\n private get modalPresent(): boolean {\n return SharedCommonUtility.notNullishOrEmpty(this.element?.nativeElement?.ownerDocument?.querySelector('[aria-modal=true]'));\n }\n\n private focusToast(): void {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n if (!this.modalPresent) {\n (this.element.nativeElement.querySelector('a, button') as HTMLButtonElement)?.focus();\n }\n }, TOAST_FOCUS_DELAY);\n });\n }\n\n private setFocusTrap(): void {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n if (!this.modalPresent) {\n const toastElement: HTMLElement = this.element.nativeElement.querySelector('[data-focus-trap=true]');\n const focusableElement: HTMLButtonElement = toastElement?.querySelector('a, button');\n focusableElement?.focus();\n this.activateFocusTrap(toastElement);\n }\n });\n });\n }\n\n private activateFocusTrap(element: HTMLElement): void {\n this.clearFocusTrap();\n try {\n const focusTrap: FocusTrap = createFocusTrap(element, { allowOutsideClick: true });\n focusTrap.activate();\n this.focusTrap = focusTrap;\n } catch (err) {\n console.warn(err);\n }\n }\n\n private clearFocusTrap(): void {\n this.focusTrap?.deactivate();\n this.focusTrap = null;\n }\n\n private clearAll(notification?: INotification): void {\n if (notification === null) {\n this.toasts = [];\n } else {\n this.remove(notification);\n }\n }\n\n private clearOnRouteChange(): void {\n const keepOnRouteChange = (toast: INotification): boolean => {\n return toast.keepAfterRouteChange;\n };\n\n this.toasts = this.toasts.filter(keepOnRouteChange);\n this.clearFocusTrap();\n }\n\n public remove(toastToRemove: INotification): void {\n const removeSelectedToast = (toast: INotification): boolean => {\n return toast !== toastToRemove;\n };\n\n this.toasts = this.toasts.filter(removeSelectedToast);\n this.handleFocus();\n }\n\n public cssClass(toast: INotification): string {\n const defaultClassName: string = '';\n\n if (SharedCommonUtility.getTypeOf(toast) !== 'object') {\n return defaultClassName;\n }\n\n switch (toast.type) {\n case NotificationType.Success:\n return 'alert-success';\n case NotificationType.Error:\n return 'alert-danger';\n case NotificationType.Info:\n return 'bg-white';\n case NotificationType.Warning:\n return 'alert-warning';\n default:\n return defaultClassName;\n }\n }\n\n public isTemplate(toast: INotification): boolean {\n return toast.message instanceof TemplateRef;\n }\n\n public ngOnInit(): void {\n const processToastSubscription: Subscription = this.notificationService\n .getNotification()\n .subscribe(this.processToast.bind(this));\n const processNotificationOnRouteChangesSubscription: Subscription = this.router.events.subscribe(\n this.processNotificationOnRouteChanges.bind(this),\n );\n\n this.subscriptions.add(processToastSubscription).add(processNotificationOnRouteChangesSubscription);\n }\n\n public ngOnDestroy(): void {\n this.clearAll(null);\n this.subscriptions.unsubscribe();\n this.clearFocusTrap();\n }\n}\n","@if (authorized$ | async) {\n
    \n}\n@if (initialized$ | async) {\n
    \n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FeatureFlagService } from '../../services/feature-flag/feature-flag.service';\n\n/**\n * Primarily used by e2es to know when feature flags are initialized/authorized\n */\n@Component({\n selector: 'app-feature-flag-initialized',\n templateUrl: './feature-flag-initialized.component.html',\n})\nexport class FeatureFlagInitializedComponent {\n public authorized$: Observable;\n public initialized$: Observable;\n constructor(private featureFlagService: FeatureFlagService) {\n this.authorized$ = this.featureFlagService.isAuthorizedClientInitialized$;\n this.initialized$ = this.featureFlagService.isClientInitialized$;\n }\n}\n","\n 0\" [selectedValue]=\"selectedWorkspaceId$ | async\" >\n \n
    \n \n
    \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { BehaviorSubject, combineLatest, EMPTY, from, Observable, Subscription } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { DsButtonVariants, Icons } from '@levelaccess/design-system';\n\nimport { Api, ApiQueryOption } from '../../../../../../shared/constants/api';\nimport { $workspace } from '../../../../../../shared/constants/workspace';\nimport { IWorkspaceClient } from '../../../../../../shared/interfaces/workspace.interface';\nimport { WorkspaceService } from '../../../../services/workspace.service';\nimport { UserService } from '../../../../services/user.service';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../../shared/utils/linked-property.utility';\nimport { LoadErrorHandler } from '../../../../services/load-error-handler';\nimport { NavService } from '../../../../services/navigation/nav.service';\nimport { INavMenuItem, IWorkspacePermission, NavigationItem } from '../../../../services/navigation/nav-structure';\nimport { BusMessageChannels, BusMessageService } from '../../../../services/bus-message.service';\nimport { SharedSortUtility } from '../../../../../../shared/utils/sort.utility';\nimport { $sortingOrder } from '../../../../../../shared/constants/sort';\nimport { ErrorHandlerService } from '../../../../services/error-handler.service';\nimport { IDigitalPropertyListItem } from '../../../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../../../shared/constants/digital-properties';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'top-navbar-workspaces-dropdown',\n templateUrl: './top-navbar-workspaces-dropdown.component.html',\n})\nexport class TopNavbarWorkspacesDropdownComponent implements OnInit, OnDestroy {\n public workspaces$: BehaviorSubject;\n public activeMenuItem$: BehaviorSubject;\n public workspacesMenuItem$: BehaviorSubject;\n public selectedWorkspaceId$: Observable;\n\n public readonly Api: typeof Api = Api;\n public readonly Icons: typeof Icons = Icons;\n public readonly $workspace: typeof $workspace = $workspace;\n public readonly ApiQueryOption: typeof ApiQueryOption = ApiQueryOption;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n\n private subscriptions: Subscription;\n private workspaceLocations: Map;\n\n constructor(\n private workspaceService: WorkspaceService,\n private userService: UserService,\n private activatedRoute: ActivatedRoute,\n private busMessageService: BusMessageService,\n private loadErrorHandler: LoadErrorHandler,\n private navService: NavService,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n ) {\n this.subscriptions = new Subscription();\n this.workspaceLocations = new Map();\n this.workspaces$ = new BehaviorSubject([]);\n this.activeMenuItem$ = new BehaviorSubject(null);\n this.workspacesMenuItem$ = new BehaviorSubject(null);\n }\n\n public ngOnInit(): void {\n this.getActiveWorkspaces();\n this.subscriptions.add(\n this.busMessageService.from(BusMessageChannels.workspaceUpdated).subscribe({\n next: this.getActiveWorkspaces.bind(this),\n }),\n );\n\n const urlSelectedWorkspace$: Observable = this.activatedRoute.queryParams.pipe(\n map(LinkedPropertyUtility.fromLinkedPropertyQueryParam),\n );\n\n this.selectedWorkspaceId$ = combineLatest([urlSelectedWorkspace$, this.navService.activeTopLevelMenuItem$()]).pipe(\n map(([linkedPropertyData, activeMenuItem]: [ILinkedPropertyData, INavMenuItem]): string | undefined => {\n if (activeMenuItem?.id !== NavigationItem.workspace) {\n return undefined;\n }\n\n return linkedPropertyData?.[Api.workspaceId];\n }),\n );\n\n this.subscriptions.add(\n combineLatest([\n this.navService.getTopLevelMenuItems$([NavigationItem.workspace]),\n this.navService.activeMenuItemForWorkspaceSwitcher$(),\n ])\n .pipe(\n map(([menuItems, activeMenuItem]: [INavMenuItem[], INavMenuItem]): void => {\n this.workspacesMenuItem$.next(menuItems?.[0]);\n this.activeMenuItem$.next(activeMenuItem);\n }),\n )\n .subscribe(),\n );\n\n this.subscriptions.add(\n combineLatest([\n this.workspaces$,\n this.activeMenuItem$.pipe(filter(SharedCommonUtility.notNullish)),\n this.workspacesMenuItem$.pipe(filter(SharedCommonUtility.notNullish)),\n this.userService.getFirstAvailableDigitalPropertyForWorkspaces(),\n ])\n .pipe(\n switchMap(\n ([workspaces, activeMenuItem, workspacesMenuItem, workspaceMap]: [\n IWorkspaceClient[],\n INavMenuItem,\n INavMenuItem,\n Map,\n ]): IWorkspacePermission[] => {\n return workspaces.map((workspace: IWorkspaceClient): IWorkspacePermission => {\n const workspaceId: string = workspace[$workspace._id];\n const digitalPropertyId: string = workspaceMap.get(workspaceId)?.[$digitalProperty._id];\n return {\n activeMenuItem,\n workspacesMenuItem,\n workspaceId,\n digitalPropertyId,\n };\n });\n },\n ),\n switchMap((workspacePermission: IWorkspacePermission): Observable => {\n return this.navService\n .hasAccessToMenuItemInWorkspace$(\n workspacePermission.activeMenuItem,\n workspacePermission.workspaceId,\n workspacePermission.digitalPropertyId,\n )\n .pipe(\n map((hasAccess: boolean): IWorkspacePermission => {\n return {\n ...workspacePermission,\n hasAccess,\n };\n }),\n );\n }),\n )\n .subscribe({\n next: (workspacePermission: IWorkspacePermission): void => {\n this.workspaceLocations.set(\n workspacePermission.workspaceId,\n workspacePermission.hasAccess && SharedCommonUtility.notNullish(workspacePermission.activeMenuItem)\n ? workspacePermission.activeMenuItem.routerLink\n : workspacePermission.workspacesMenuItem.routerLink,\n );\n },\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private getActiveWorkspaces(): void {\n const onGetWorkspacesError = (error: HttpErrorResponse): Observable => {\n this.loadErrorHandler.handleError('error_while_getting_workspaces', error, TopNavbarWorkspacesDropdownComponent.name);\n return EMPTY;\n };\n const onGetActiveWorkspacesSuccess = (activeWorkspaces: IWorkspaceClient[]): void => {\n activeWorkspaces.sort(\n SharedSortUtility.functionSortObjectsByStringProperty($sortingOrder.asc, $workspace.name, {\n numeric: true,\n sensitivity: 'base',\n }),\n );\n\n this.workspaces$.next(activeWorkspaces);\n };\n\n const onAuthenticationChange = (status: boolean): void => {\n if (status) {\n const getActiveWorkspacesSubscription: Subscription = this.workspaceService.getActiveWorkspacesV2().subscribe({\n next: onGetActiveWorkspacesSuccess.bind(this),\n error: onGetWorkspacesError.bind(this),\n });\n this.subscriptions.add(getActiveWorkspacesSubscription);\n }\n };\n\n const getAuthUserSubscription: Subscription = this.userService.isAuthenticated$.subscribe(onAuthenticationChange.bind(this));\n this.subscriptions.add(getAuthUserSubscription);\n }\n\n public onWorkspaceSelected(workspace: IWorkspaceClient): void {\n const workspaceId: string = workspace[$workspace._id];\n const propertyId: string = workspace[$workspace.digitalProperties]?.[0]?._id;\n\n this.subscriptions.add(\n this.userService\n .switchUserToDigitalProperty(workspaceId, propertyId)\n .pipe(\n switchMap(() => {\n const routePath: string = this.workspaceLocations.get(workspaceId);\n\n return from(\n this.router\n .navigate([routePath], {\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(propertyId, workspaceId),\n relativeTo: this.activatedRoute,\n queryParamsHandling: 'merge',\n })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService)),\n );\n }),\n )\n .subscribe(() => {\n this.busMessageService.to(BusMessageChannels.userSwitchedToWorkspace).next();\n this.busMessageService.to(BusMessageChannels.userSwitchedToDigitalProperty).next();\n }),\n );\n }\n}\n","\n \n \n {{ notificationNum.count }}\n \n\n","import { Observable } from 'rxjs';\nimport { Component } from '@angular/core';\nimport { Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { UserNotificationService } from '../../../../services/user-notification.service';\nimport { Api } from '../../../../../../shared/constants/api';\n\n@Component({\n selector: 'top-nav-notifications',\n templateUrl: './top-nav-notifications.component.html',\n styleUrls: ['./top-nav-notifications.component.scss'],\n})\nexport class TopNavNotificationsComponent {\n public notificationNumber$: Observable;\n\n public isHovering: boolean = false;\n public isFocusing: boolean = false;\n\n constructor(private userNotificationService: UserNotificationService) {\n this.notificationNumber$ = this.userNotificationService.newNotificationsCount$;\n }\n\n public get IconStyle(): IconStyles {\n if (this.isHovering || this.isFocusing) {\n return IconStyles.Solid;\n }\n return IconStyles.Light;\n }\n\n public get Icon(): Icons {\n return Icons.Bell;\n }\n\n public get notificationLink(): string {\n return `/${Api.notifications}`;\n }\n}\n","\n \n \n \n
    \n \n \n
    \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Icons, DsButtonVariants, DsTooltipPosition } from '@levelaccess/design-system';\n\nimport { NavService } from '../../../../services/navigation/nav.service';\nimport { INavMenuItem, NavigationItem } from '../../../../services/navigation/nav-structure';\n\n@Component({\n selector: 'top-navbar-profile-dropdown',\n templateUrl: './top-navbar-profile-dropdown.component.html',\n})\nexport class TopNavbarProfileDropdownComponent implements OnInit {\n public readonly Icons: typeof Icons = Icons;\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly DsTooltipPosition: typeof DsTooltipPosition = DsTooltipPosition;\n\n public menuItems$: Observable;\n public activeMenuItem$: Observable;\n\n constructor(private navService: NavService) {}\n\n ngOnInit(): void {\n this.menuItems$ = this.navService.getTopLevelMenuItems$([NavigationItem.profile, NavigationItem.logout]);\n this.activeMenuItem$ = this.navService.activeTopLevelMenuItem$();\n }\n}\n","\n 0\"\n class=\"top-navbar-launcher-dropdown\"\n [ds-tooltip]=\"'control_hub_dropdown_tooltip_text' | translate\"\n [tooltipPlacement]=\"DsTooltipPosition.bottom\"\n [selectedValue]=\"(currentActiveMenuItem$ | async)?.id\"\n \n >\n \n \n
    \n \n
    \n \n
    \n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Component, OnInit } from '@angular/core';\nimport { DsButtonVariants, Icons, DsTooltipPosition } from '@levelaccess/design-system';\n\nimport { NavService } from '../../../../services/navigation/nav.service';\nimport { INavMenuItem, NavigationItem } from '../../../../services/navigation/nav-structure';\n\n@Component({\n selector: 'top-navbar-launcher-dropdown',\n templateUrl: './top-navbar-launcher-dropdown.component.html',\n})\nexport class TopNavbarLauncherDropdownComponent implements OnInit {\n public Icons: typeof Icons;\n public DsButtonVariants: typeof DsButtonVariants;\n public DsTooltipPosition: typeof DsTooltipPosition;\n\n public menuItems$: Observable;\n public currentActiveMenuItem$: Observable;\n\n constructor(private navService: NavService) {\n this.Icons = Icons;\n this.DsButtonVariants = DsButtonVariants;\n this.DsTooltipPosition = DsTooltipPosition;\n }\n\n ngOnInit(): void {\n this.menuItems$ = this.navService\n .getTopLevelMenuItems$([\n NavigationItem.evaluations,\n NavigationItem.organization_settings,\n NavigationItem.tools_and_integrations,\n NavigationItem.administration,\n NavigationItem.internal_use_only,\n ])\n .pipe(map((items: INavMenuItem[]): INavMenuItem[] => items?.filter((item: INavMenuItem) => item?.isAvailable)));\n\n this.currentActiveMenuItem$ = this.navService.activeTopLevelMenuItem$();\n }\n}\n","\n \n\n
    \n \n
    \n\n
      \n
    • \n \n {{ childRoute.label | translate }}\n \n \n \n {{ childRoute.label | translate }}\n \n \n \n {{ childRoute.label | translate }}\n \n \n \n
    • \n
    \n\n\n\n \n\n","import { Component, Input, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport {\n DsButtonVariants,\n DsModalColorVariant,\n DsModalRef,\n DsModalService,\n DsModalVariant,\n Icons,\n} from '@levelaccess/design-system';\n\nimport { NavLink } from '../compound-second-level-navbar.component';\nimport { INavMenuItem, NavigationItem } from '../../../../services/navigation/nav-structure';\nimport { $workspace } from '../../../../../../shared/constants/workspace';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\n\n@Component({\n selector: 'app-mobile-second-navbar-menu-modal',\n templateUrl: './mobile-second-navbar-menu-modal.component.html',\n styleUrls: ['./mobile-second-navbar-menu-modal.component.scss'],\n})\nexport class MobileSecondNavbarMenuModalComponent implements OnDestroy {\n public readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public readonly Icons: typeof Icons = Icons;\n public readonly $workspace: typeof $workspace = $workspace;\n\n public childrenRoutes: NavLink[];\n\n private _subscription: Subscription;\n private _parentMenuItem: INavMenuItem;\n\n @ViewChild('topLevelModal') public topNavModal: TemplateRef;\n\n @Input() public set parentMenuItem(value: INavMenuItem) {\n this._parentMenuItem = value;\n this.handleParentMenuItemChanged();\n }\n\n constructor(\n public modal: NgbActiveModal,\n private modalService: DsModalService,\n ) {\n this._subscription = new Subscription();\n }\n\n private handleParentMenuItemChanged(): void {\n const children: INavMenuItem[] = this._parentMenuItem?.children ?? [];\n\n this.childrenRoutes = children\n .filter((child: INavMenuItem): boolean => child.isAvailable && !child.isHidden)\n .map(\n (child: INavMenuItem): NavLink => ({\n id: child.id,\n routerLink: child.routerLink,\n externalLink: child.externalLink,\n label: child.label,\n isActive: child.isActive,\n hasChildren:\n child.children?.length > 0 &&\n child.children.some(\n (childNav: INavMenuItem): boolean =>\n childNav.isAvailable && !childNav.isHidden && !childNav.displayedOutsideOfNavbar,\n ),\n }),\n );\n }\n\n public openChildNavbarMenuItemsModal(navLink: NavLink): void {\n const children: INavMenuItem[] = this._parentMenuItem?.children ?? [];\n const selectedNavItem: INavMenuItem = children.find((navMenuItem: INavMenuItem): boolean => navMenuItem.id === navLink.id);\n\n const modalRef: DsModalRef | null = this.modalService.open(MobileSecondNavbarMenuModalComponent, DsModalVariant.fullScreen);\n\n if (SharedCommonUtility.notNullish(modalRef)) {\n const childModal: MobileSecondNavbarMenuModalComponent = modalRef.componentInstance;\n childModal.parentMenuItem = selectedNavItem;\n }\n }\n\n public onModalClose(): void {\n this.modalService.closeAllModals();\n }\n\n public get parentMenuItemLabel(): string | undefined {\n return this._parentMenuItem?.label;\n }\n\n public get backNavLabel(): string | undefined {\n if (this.modalService.hasPreviousModal()) {\n return SharedCommonUtility.isNullish(this._parentMenuItem?.parent) ? 'menu' : this._parentMenuItem?.parent?.label;\n }\n\n return undefined;\n }\n\n public get modalColorVariant(): DsModalColorVariant {\n return this._parentMenuItem?.mobileModalColorVariant || DsModalColorVariant.Default;\n }\n\n public get showWebAppSelector(): boolean {\n return this._parentMenuItem?.id === NavigationItem.websites_and_apps;\n }\n\n public get showWorkspacesSelector(): boolean {\n return this._parentMenuItem?.id === NavigationItem.workspace;\n }\n\n public ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n}\n","\n
      \n \n \n \n {{ menuItem.label | translate }}\n \n \n \n {{ menuItem.label | translate }}\n \n  \n {{ notificationNumber$ | async }}\n  {{ 'unread' | translate }}\n \n \n \n \n \n
    \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Observable } from 'rxjs';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport {\n DsButtonColor,\n DsButtonVariants,\n DsModalColorVariant,\n DsModalRef,\n DsModalService,\n DsModalVariant,\n Icons,\n} from '@levelaccess/design-system';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\n\nimport { UserNotificationService } from '../../../../services/user-notification.service';\nimport { INavMenuItem, NavigationItem } from '../../../../services/navigation/nav-structure';\nimport { NavService } from '../../../../services/navigation/nav.service';\nimport { MobileSecondNavbarMenuModalComponent } from '../../compound-second-level-navbar/mobile-second-navbar-menu-modal/mobile-second-navbar-menu-modal.component';\nimport { SharedCommonUtility } from '../../../../../../shared/utils/common.utility';\nimport { FeatureFlagService } from '../../../../services/feature-flag/feature-flag.service';\nimport { FeatureFlagCollection } from '../../../../../../shared/interfaces/feature-flag.interface';\n\n@Component({\n selector: 'app-mobile-top-navbar-menu-modal',\n templateUrl: './mobile-top-navbar-menu-modal.component.html',\n styleUrls: ['./mobile-top-navbar-menu-modal.component.scss'],\n})\nexport class MobileTopNavbarMenuModalComponent implements OnInit {\n public DsModalColorVariant: typeof DsModalColorVariant;\n public DsButtonVariants: typeof DsButtonVariants;\n public Icons: typeof Icons;\n public DsButtonColor: typeof DsButtonColor;\n public NavigationItem: typeof NavigationItem;\n\n public topLevelMenuItems$: Observable;\n public notificationNumber$: Observable;\n\n @Input() public modal: NgbActiveModal;\n\n constructor(\n private dsModalService: DsModalService,\n private userNotificationService: UserNotificationService,\n private navService: NavService,\n private featureFlagService: FeatureFlagService,\n ) {\n this.DsModalColorVariant = DsModalColorVariant;\n this.Icons = Icons;\n this.DsButtonVariants = DsButtonVariants;\n this.DsButtonColor = DsButtonColor;\n this.NavigationItem = NavigationItem;\n }\n\n private getTopLevelNavItems(): void {\n /**\n * The getTopLevelMenuItems$ observable does not guarantee order. Any new top level navigation items\n * added to the menu modal must be added to this variable in the expected location so the navigation\n * items can be sorted properly.\n */\n const navItems: NavigationItem[] = [\n NavigationItem.organization_dashboard,\n NavigationItem.workspace,\n NavigationItem.evaluations,\n NavigationItem.organization_settings,\n NavigationItem.tools_and_integrations,\n NavigationItem.administration,\n NavigationItem.internal_use_only,\n NavigationItem.academy,\n NavigationItem.old_help,\n NavigationItem.help,\n NavigationItem.service_request,\n NavigationItem.notifications,\n NavigationItem.profile,\n NavigationItem.logout,\n ];\n\n const sortByNavigationOrder = (a: INavMenuItem, b: INavMenuItem): number => {\n if (a.id === b.id) {\n return 0;\n }\n return navItems.indexOf(a.id) < navItems.indexOf(b.id) ? -1 : 1;\n };\n\n this.topLevelMenuItems$ = this.navService.getTopLevelMenuItems$(navItems).pipe(\n withLatestFrom(this.featureFlagService.variation$(FeatureFlagCollection.navSupportPortalUx, false)),\n map(([items, navSupportPortalUxEnabled]: [INavMenuItem[], VariationValue]): INavMenuItem[] =>\n items\n ?.filter((item: INavMenuItem): boolean => item?.isAvailable)\n .filter(\n (item: INavMenuItem): boolean => item.id !== NavigationItem.service_request || Boolean(navSupportPortalUxEnabled),\n )\n .filter((item: INavMenuItem): boolean => {\n if (navSupportPortalUxEnabled) {\n return item.id !== NavigationItem.old_help;\n }\n return item.id !== NavigationItem.help;\n })\n .sort(sortByNavigationOrder),\n ),\n );\n }\n\n public hasAvailableChildren(menuItem: INavMenuItem): boolean {\n return menuItem.children?.some((childMenu: INavMenuItem): boolean => childMenu.isAvailable);\n }\n\n public openSecondLevelModal(menuItem: INavMenuItem): void {\n const modalRef: DsModalRef | null = this.dsModalService.open(MobileSecondNavbarMenuModalComponent, DsModalVariant.fullScreen);\n\n if (SharedCommonUtility.notNullish(modalRef)) {\n const navModal: MobileSecondNavbarMenuModalComponent = modalRef.componentInstance;\n navModal.parentMenuItem = menuItem;\n }\n }\n\n public onModalClose(): void {\n this.dsModalService.closeAllModals();\n }\n\n public ngOnInit(): void {\n this.notificationNumber$ = this.userNotificationService.newNotificationsCount$;\n this.getTopLevelNavItems();\n }\n}\n","\n
    \n \n
    \n\n\n\n \n\n\n\n \n \n \n\n\n\n
    \n \n \n @if (organizationNavigationItem$ | async; as organizationNavigationItem) {\n {{ 'organization' | translate }}\n \n }\n \n
    \n\n
    \n {{ navTitle$ | async }}\n
    \n\n
    \n {{ 'academy' | 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 \n \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n\n \n
    \n
    \n\n\n
    \n \n
    \n\n \n {{ 'menu' | translate }}\n \n
    \n","import { Component, ViewChild, OnInit, AfterViewInit, ChangeDetectorRef, Input, TemplateRef } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n Icons,\n DsLinkColor,\n DsTooltipPosition,\n DsButtonVariants,\n DsButtonColor,\n DsModalService,\n DsModalVariant,\n} from '@levelaccess/design-system';\n\nimport { RequiredSecurities } from '../../../../../shared/constants/required-securities';\nimport { Api } from '../../../../../shared/constants/api';\nimport { INavMenuItem, NavigationItem } from '../../../services/navigation/nav-structure';\nimport { NavService } from '../../../services/navigation/nav.service';\nimport { TranslateService } from '../../../translate/translate.service';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { TopNavbarWorkspacesDropdownComponent } from './top-navbar-workspaces-dropdown/top-navbar-workspaces-dropdown.component';\nimport { IWorkspaceClient } from '../../../../../shared/interfaces/workspace.interface';\nimport { $workspace } from '../../../../../shared/constants/workspace';\nimport { AclSecurityAdapter } from '../../../services/acl.service';\nimport { UserAclService } from '../../../services/user-acl.service';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { ExternalLinkService } from '../../../services/external-link.service';\nimport { FeatureFlagCollection } from '../../../../../shared/interfaces/feature-flag.interface';\nimport { FeatureFlagService } from '../../../services/feature-flag/feature-flag.service';\n\n@Component({\n selector: 'compound-top-navbar',\n templateUrl: './compound-top-navbar.component.html',\n styleUrls: ['./compound-top-navbar.component.scss'],\n})\nexport class CompoundTopNavbarComponent implements OnInit, AfterViewInit {\n private readonly maxNavTitleLength: number = 60;\n\n @ViewChild(TopNavbarWorkspacesDropdownComponent)\n private topNavbarWorkspacesDropdown: TopNavbarWorkspacesDropdownComponent;\n\n @ViewChild('mobileNavModal') public mobileNavModal: TemplateRef;\n\n @Input() public showMobileNavVersion: boolean;\n\n public Icons: typeof Icons;\n public DsLinkColor: typeof DsLinkColor;\n public DsButtonVariants: typeof DsButtonVariants;\n public DsTooltipPosition: typeof DsTooltipPosition;\n public DsButtonColor: typeof DsButtonColor;\n public readonly FeatureFlagCollection: typeof FeatureFlagCollection = FeatureFlagCollection;\n\n public hasAccessToNotifications$: Observable;\n public hasAccessToAdminOrganizations$: Observable;\n public hasAccessToNewDashboard$: Observable;\n public hasAccessToPortfolio$: Observable;\n public logoUrl$: Observable;\n\n public navTitle$: Observable;\n public academyNavigationItem$: Observable;\n public oldHelpNavigationItem$: Observable;\n public helpNavigationItem$: Observable;\n public serviceRequestNavigationItem$: Observable;\n public organizationNavigationItem$: Observable;\n public navSupportPortalUxEnabled$: Observable;\n\n constructor(\n protected externalLinkService: ExternalLinkService,\n private navService: NavService,\n private translateService: TranslateService,\n private userAclService: UserAclService,\n private changeDetectorRef: ChangeDetectorRef,\n private appConfigService: AppConfigService,\n private dsModalService: DsModalService,\n private featureFlagService: FeatureFlagService,\n ) {\n this.Icons = Icons;\n this.DsLinkColor = DsLinkColor;\n this.DsButtonVariants = DsButtonVariants;\n this.DsTooltipPosition = DsTooltipPosition;\n this.DsButtonColor = DsButtonColor;\n\n this.hasAccessToNotifications$ = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter.useFunctionalActions(RequiredSecurities.Notifications_Read.functionalActions).check(),\n ),\n );\n\n this.hasAccessToAdminOrganizations$ = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.Tenants_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.Tenants_Read, true)\n .check(),\n ),\n );\n\n this.hasAccessToNewDashboard$ = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.GR_Governance_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.GR_Governance_Read, false)\n .check(),\n ),\n );\n\n this.hasAccessToPortfolio$ = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useFunctionalActions(RequiredSecurities.Workspaces_Read_Digital_Properties_Read.functionalActions)\n .useOptions({ requireFunctionalActions: true })\n .useRequiredSecurity(RequiredSecurities.Workspaces_Read_Digital_Properties_Read, false)\n .check(),\n ),\n );\n\n this.logoUrl$ = combineLatest([\n this.hasAccessToAdminOrganizations$,\n this.hasAccessToNewDashboard$,\n this.hasAccessToPortfolio$,\n ]).pipe(\n map(\n ([hasAccessToAdminOrganizations, hasAccessToNewDashboard, hasAccessToPortfolio]: [boolean, boolean, boolean]): string => {\n if (!this.appConfigService.isTenantEnabled()) {\n if (hasAccessToAdminOrganizations) {\n return `/${Api.admin}/${Api.organizations}`;\n }\n return `/${Api.settings}/${Api.profile}`;\n }\n\n if (hasAccessToNewDashboard) {\n return `/${Api.overview}`;\n }\n\n if (hasAccessToPortfolio) {\n return `/${Api.portfolio}`;\n }\n\n return `/${Api.dashboard}`;\n },\n ),\n );\n }\n\n private initNavTitle(): void {\n const selectedWorkspace$: Observable = ((): Observable => {\n /**\n * Since the parent of the TopNavbarWorkspacesDropdownComponent is conditioned by a *ngIf,\n * running the changes detection is necessary whenever the showMobileNavVersion changes from true to false.\n */\n if (!this.topNavbarWorkspacesDropdown) {\n this.changeDetectorRef.detectChanges();\n }\n\n return combineLatest([\n this.topNavbarWorkspacesDropdown.workspaces$,\n this.topNavbarWorkspacesDropdown.selectedWorkspaceId$,\n ]).pipe(\n map(\n ([workspaces, selectedWorkspaceId]: [IWorkspaceClient[], string]): IWorkspaceClient =>\n workspaces.find((workspace: IWorkspaceClient): boolean => workspace[$workspace._id] === selectedWorkspaceId),\n ),\n );\n })();\n\n this.navTitle$ = combineLatest([selectedWorkspace$, this.navService.activeTopLevelMenuItem$()]).pipe(\n map(([selectedWorkspace, activeMenuItem]: [IWorkspaceClient, INavMenuItem]): string | undefined => {\n if (SharedCommonUtility.notNullishOrEmpty(activeMenuItem?.navTitle)) {\n return this.translateService.instant(activeMenuItem.navTitle);\n }\n\n if (activeMenuItem?.id === NavigationItem.workspace && SharedCommonUtility.notNullish(selectedWorkspace)) {\n return selectedWorkspace[$workspace.name];\n }\n\n return undefined;\n }),\n map((title: string | undefined): string | undefined => {\n if (SharedCommonUtility.isNullishOrEmpty(title)) {\n return undefined;\n }\n\n if (title.length > this.maxNavTitleLength) {\n return `${title.substring(0, this.maxNavTitleLength)}...`;\n }\n\n return title;\n }),\n );\n }\n\n public openMobileMenu(): void {\n this.dsModalService.open(this.mobileNavModal, DsModalVariant.fullScreen);\n }\n\n public ngOnInit(): void {\n this.academyNavigationItem$ = this.navService\n .getTopLevelMenuItems$([NavigationItem.academy])\n .pipe(map((menuItems: INavMenuItem[]): INavMenuItem => menuItems?.filter((item: INavMenuItem) => item?.isAvailable)?.[0]));\n this.oldHelpNavigationItem$ = this.navService\n .getTopLevelMenuItems$([NavigationItem.old_help])\n .pipe(map((menuItems: INavMenuItem[]): INavMenuItem => menuItems?.[0]));\n this.helpNavigationItem$ = this.navService\n .getTopLevelMenuItems$([NavigationItem.help])\n .pipe(map((menuItems: INavMenuItem[]): INavMenuItem => menuItems?.[0]));\n this.serviceRequestNavigationItem$ = this.navService\n .getTopLevelMenuItems$([NavigationItem.service_request])\n .pipe(map((menuItems: INavMenuItem[]): INavMenuItem => menuItems?.[0]));\n this.organizationNavigationItem$ = this.navService\n .getTopLevelMenuItems$([NavigationItem.organization_dashboard])\n .pipe(map((menuItems: INavMenuItem[]): INavMenuItem => menuItems?.[0]));\n\n this.navSupportPortalUxEnabled$ = this.featureFlagService\n .variation$(FeatureFlagCollection.navSupportPortalUx, false, true)\n .pipe(map(Boolean));\n }\n\n public ngAfterViewInit(): void {\n if (!this.showMobileNavVersion) {\n this.initNavTitle();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { UserService } from '../../../services/user.service';\n\n@Component({\n selector: 'compound-top-navbar-unauthenticated',\n templateUrl: './compound-top-navbar-unauthenticated.component.html',\n styleUrls: ['./compound-top-navbar.component.scss'],\n})\nexport class CompoundTopNavbarUnauthenticatedComponent {\n public isAuthenticated$: Observable;\n\n @Input() public showMobileNavVersion: boolean;\n\n constructor(private userService: UserService) {\n this.isAuthenticated$ = this.userService.isAuthenticated$;\n }\n}\n","\n
    \n
    \n \n \n \n
    \n\n
    \n\n
    \n
    \n\n","import { AfterViewInit, Component, ElementRef, Input, NgZone, ViewChild } from '@angular/core';\nimport { Location } from '@angular/common';\n\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { $navigationCustomState, NavigationCustomState } from '../../../interfaces/navigation-custom-state.interface';\n\n@Component({\n selector: 'compound-navbar-link',\n templateUrl: './compound-navbar-link.component.html',\n styleUrls: ['./compound-navbar-link.component.scss'],\n})\nexport class CompoundNavbarLinkComponent implements AfterViewInit {\n private _isActive: boolean;\n protected readonly captureFocusNavState: NavigationCustomState = { [$navigationCustomState.captureNavFocus]: true };\n\n @Input() navLink: string = '';\n\n @Input() set isActive(value: boolean) {\n this._isActive = value;\n this.setFocus();\n }\n\n public get isActive(): boolean {\n return this._isActive;\n }\n\n @Input() hasChildren: boolean;\n\n @ViewChild('anchor') anchorElement: ElementRef;\n\n constructor(\n private zone: NgZone,\n private location: Location,\n ) {}\n\n public get ariaCurrent(): string | null {\n if (this.isActive && !this.hasChildren) {\n return 'page';\n }\n\n return null;\n }\n\n private setFocus(): void {\n // the 'captureFocus' state variable is only set if the navigation was triggered by clicking a nav menu item\n // for accessibility reasons in such case the navigation item clicked should then be focused on reload\n // it should, however, not be focused if the navigation happened for any other, random reason (like sorting a table\n // and storing the sort order in the query params). That was the root cause of EAP-24977.\n const focusCaptureRequested: boolean = this.location.getState()?.[$navigationCustomState.captureNavFocus] === true;\n const shouldSetFocus: boolean =\n this.isActive && focusCaptureRequested && SharedCommonUtility.notNullish(this.anchorElement?.nativeElement);\n\n if (shouldSetFocus) {\n this.zone.runOutsideAngular(() =>\n setTimeout(() => {\n this.anchorElement.nativeElement.focus();\n }, 0),\n );\n }\n }\n\n public ngAfterViewInit(): void {\n this.setFocus();\n }\n}\n","
    \n \n \n \n
    \n","\n \n \n
    \n \n \n
    \n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, NavigationExtras, Router, Event } from '@angular/router';\nimport { DsInputStates } from '@levelaccess/design-system';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, map, startWith, switchMap, take, withLatestFrom } from 'rxjs/operators';\n\nimport { Api } from '../../../../../shared/constants/api';\nimport { $digitalProperty } from '../../../../../shared/constants/digital-properties';\nimport { FunctionalArea, SecureAction } from '../../../../../shared/constants/security';\nimport { $workspace } from '../../../../../shared/constants/workspace';\nimport {\n IDigitalPropertiesListResponse,\n IDigitalPropertyListItem,\n} from '../../../../../shared/interfaces/digital-property.interface';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../shared/utils/linked-property.utility';\nimport { AclSecurityAdapter } from '../../../services/acl.service';\nimport { BusMessageChannels, BusMessageService } from '../../../services/bus-message.service';\nimport { ErrorHandlerService } from '../../../services/error-handler.service';\nimport { INavMenuItem, NavigationItem } from '../../../services/navigation/nav-structure';\nimport { NavService } from '../../../services/navigation/nav.service';\nimport { UserAclService } from '../../../services/user-acl.service';\nimport { UserPropertyService } from '../../../services/user-property.service';\nimport { UserService } from '../../../services/user.service';\nimport { AngularUtility } from '../../../utility/angular.utility';\n\n@Component({\n selector: 'app-websites-apps-select',\n templateUrl: 'websites-apps-select.component.html',\n})\nexport class WebsitesAppsSelectComponent implements OnInit, OnDestroy {\n protected readonly DsInputStates: typeof DsInputStates = DsInputStates;\n\n private _subscriptions: Subscription;\n private _selectedDigitalPropertyId: string;\n private _selectedWorkspaceId: string;\n private reloadDigitalProperties$: BehaviorSubject = new BehaviorSubject(null);\n\n public selectedWebApp: string;\n public readonly portfolioValue: string = 'website_app_portfolio_option';\n public selectWebAppTooltip: string;\n public $digitalProperty: typeof $digitalProperty = $digitalProperty;\n public digitalProperties$: Observable;\n public userHasDashboardAccess: boolean;\n\n @ViewChild('webAppSelect', { static: false }) webAppSelect: ElementRef;\n\n @Input() public label: string;\n @Input() public state: DsInputStates;\n\n @Output() public webAppChanged: EventEmitter = new EventEmitter();\n\n constructor(\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n private activatedRoute: ActivatedRoute,\n private busMessageService: BusMessageService,\n private userPropertyService: UserPropertyService,\n private navService: NavService,\n private userAclService: UserAclService,\n private userService: UserService,\n ) {\n this._subscriptions = new Subscription();\n this.userHasDashboardAccess = false;\n }\n\n private getInitialRouteForUser(activeNavItem: INavMenuItem): string[] {\n if (\n !SharedCommonUtility.isStringEmpty(activeNavItem?.routerLink) &&\n activeNavItem.id !== NavigationItem.websites_and_apps_portfolio\n ) {\n return [activeNavItem.routerLink];\n }\n\n return this.userHasDashboardAccess ? [`/${Api.dashboard}`] : [`/${Api.manual_evaluations}`];\n }\n\n public selectWebAppChanged(value: string): void {\n if (value === this.portfolioValue) {\n this.selectedWebApp = this.portfolioValue;\n this.selectWebAppTooltip = null;\n\n this.router\n .navigate([`/${Api.portfolio}`])\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n this.webAppChanged.emit();\n } else {\n const handleRouteChange = (digitalProperty: IDigitalPropertyListItem, menuItem: INavMenuItem | null): void => {\n // Ellipsis begin at the 26th character\n this.selectWebAppTooltip =\n digitalProperty[$digitalProperty.name].length > 25 ? digitalProperty[$digitalProperty.name] : null;\n\n const route: string[] = this.getInitialRouteForUser(menuItem);\n const extras: NavigationExtras = {\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(\n digitalProperty[$digitalProperty._id],\n digitalProperty[$digitalProperty.workspace][$workspace._id],\n ),\n relativeTo: this.activatedRoute,\n queryParamsHandling: 'merge',\n skipLocationChange: false,\n };\n\n this.router\n .navigate(route, extras)\n .then(() => {\n this.busMessageService.to(BusMessageChannels.userSwitchedToDigitalProperty).next();\n })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n this.webAppChanged.emit();\n };\n\n this._subscriptions.add(\n this.switchDigitalProperty$(value)\n .pipe(withLatestFrom(this.navService.activeThirdLevelMenuItem$()))\n .subscribe(([property, navMenuItem]: [IDigitalPropertyListItem, INavMenuItem]) => {\n handleRouteChange(property, navMenuItem);\n }),\n );\n }\n }\n\n private switchDigitalProperty$(propertyId: string): Observable {\n return this.digitalProperties$.pipe(\n take(1),\n map((properties: IDigitalPropertyListItem[]) =>\n properties.find((property: IDigitalPropertyListItem) => property[$digitalProperty._id] === propertyId),\n ),\n filter(SharedCommonUtility.notNullish),\n switchMap((property: IDigitalPropertyListItem) =>\n this.userService\n .switchUserToDigitalProperty(property[$digitalProperty.workspace][$workspace._id], property[$digitalProperty._id])\n .pipe(map(() => property)),\n ),\n );\n }\n\n private updateSelectedWebApp(linkedPropertyData: ILinkedPropertyData): void {\n this._selectedWorkspaceId = linkedPropertyData[Api.workspaceId];\n this._selectedDigitalPropertyId = linkedPropertyData[Api.digitalPropertyId];\n\n const setSelectedWebApp = (navMenuItem: INavMenuItem): void => {\n const portfolioItem: INavMenuItem = navMenuItem?.children?.find(\n (child: INavMenuItem): boolean => child.id === NavigationItem.websites_and_apps_portfolio,\n );\n const isPortfolioViewActive: boolean = portfolioItem?.isActive;\n this.selectedWebApp = isPortfolioViewActive ? this.portfolioValue : this._selectedDigitalPropertyId;\n };\n\n this._subscriptions.add(this.navService.activeSecondLevelMenuItem$().pipe(take(1)).subscribe(setSelectedWebApp.bind(this)));\n }\n\n private loadAvailableDigitalProperties(): void {\n this.digitalProperties$ = this.reloadDigitalProperties$.pipe(\n startWith(),\n switchMap(() => this.userPropertyService.getAvailableDigitalProperties()),\n map((response: IDigitalPropertiesListResponse) =>\n response.items.filter(\n (dp: IDigitalPropertyListItem) => dp[$digitalProperty.workspace][$workspace._id] === this._selectedWorkspaceId,\n ),\n ),\n map((digitalProperties: IDigitalPropertyListItem[]): IDigitalPropertyListItem[] =>\n digitalProperties.sort((a: IDigitalPropertyListItem, b: IDigitalPropertyListItem) =>\n a[$digitalProperty.name].localeCompare(b[$digitalProperty.name]),\n ),\n ),\n AngularUtility.shareRef(),\n );\n }\n\n ngOnInit(): void {\n this._subscriptions.add(\n this.router.events\n .pipe(\n filter((event: Event) => event instanceof NavigationEnd),\n map(() => LinkedPropertyUtility.fromLinkedPropertyQueryParam(this.activatedRoute.snapshot.queryParams)),\n )\n .subscribe((linkedPropertyData: ILinkedPropertyData) => this.updateSelectedWebApp(linkedPropertyData)),\n );\n\n this._subscriptions.add(\n this.activatedRoute.queryParams\n .pipe(map(LinkedPropertyUtility.fromLinkedPropertyQueryParam))\n .subscribe((linkedPropertyData: ILinkedPropertyData) => this.updateSelectedWebApp(linkedPropertyData)),\n );\n\n this.loadAvailableDigitalProperties();\n\n this._subscriptions.add(\n this.busMessageService\n .from(BusMessageChannels.userSwitchedToWorkspace)\n .subscribe(() => this.reloadDigitalProperties$.next()),\n );\n\n this._subscriptions.add(\n this.busMessageService.from(BusMessageChannels.digitalPropertyChange).subscribe(() => this.reloadDigitalProperties$.next()),\n );\n\n this._subscriptions.add(\n this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter\n .useWorkspaceFromUser()\n .useDigitalPropertyFromUser()\n .useFunctionalActions({\n [FunctionalArea.gr_dashboard]: [SecureAction.read],\n })\n .check(),\n ),\n )\n .subscribe((permission: boolean) => {\n this.userHasDashboardAccess = permission;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n"," 0) || (showMobileNavVersion && mobileNavItemInTheActiveSubtree$ | async)\"\n [attr.aria-label]=\"'third_level_navbar_label' | translate\"\n>\n
    \n \n
    \n\n\n\n
    \n \n
    \n
    \n \n {{ item.label | translate }}\n \n 0\" [selectedValue]=\"(activeNavItem$ | async)?.id\">\n \n
    \n \n
    \n
    \n
    \n \n 0\"\n [selectedValue]=\"(activeNavItem$ | async)?.id\"\n [ds-tooltip]=\"'scan_settings_tooltip_label' | translate\"\n [tooltipPlacement]=\"DsTooltipPosition.bottom\"\n >\n \n
    \n \n
    \n \n
    \n\n
    \n \n {{ item.label | translate }}\n \n \n \n
    \n
    \n
    \n
    \n
    \n\n\n
    \n
    \n \n {{ mobileNavbarLabel$ | async }}\n \n
    \n
    \n
    \n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { DsButtonVariants, DsInputStates, DsTooltipPosition, Icons } from '@levelaccess/design-system';\n\nimport { NavLink } from '../compound-second-level-navbar/compound-second-level-navbar.component';\nimport { NavService } from '../../../services/navigation/nav.service';\nimport { INavMenuItem, NavigationItem } from '../../../services/navigation/nav-structure';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { $digitalProperty } from '../../../../../shared/constants/digital-properties';\nimport { IDigitalPropertyListItem } from '../../../../../shared/interfaces/digital-property.interface';\nimport { $workspace } from '../../../../../shared/constants/workspace';\nimport { UserService } from '../../../services/user.service';\n\n@Component({\n selector: 'compound-third-level-navbar',\n templateUrl: './compound-third-level-navbar.component.html',\n styleUrls: ['./compound-third-level-navbar.component.scss'],\n})\nexport class CompoundThirdLevelNavbarComponent implements OnInit, OnDestroy, AfterViewChecked {\n private readonly MOBILE_NAV_ITEMS_SHOWING_ACTIVE_WORKSPACE_NAME: NavigationItem[] = [\n NavigationItem.workspace_dashboard,\n NavigationItem.pdf,\n NavigationItem.projects_and_tasks,\n NavigationItem.files,\n ];\n private readonly MOBILE_NAV_ITEMS_SHOWING_ACTIVE_DP_NAME: NavigationItem[] = [NavigationItem.websites_and_apps];\n private _subscriptions: Subscription;\n private _menusWrapperResizeObserver: ResizeObserver;\n private _navbarMenuItemsWrapper: ElementRef;\n private activeWorkspaceName$: Observable;\n private activeDigitalPropertyName$: Observable;\n public Icons: typeof Icons = Icons;\n public DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n public DsInputStates: typeof DsInputStates = DsInputStates;\n public $digitalProperty: typeof $digitalProperty = $digitalProperty;\n public navbarItems: NavLink[] = [];\n public childrenRoutes$: Observable;\n public gearRoutes$: Observable;\n public digitalProperties$: Observable;\n public readonly DsTooltipPosition: typeof DsTooltipPosition = DsTooltipPosition;\n public mobileNavItemInTheActiveSubtree$: Observable;\n public mobileNavbarLabel$: Observable;\n\n @Input() public showMobileNavVersion: boolean;\n\n @ViewChildren('invisibleMenuItems', { read: ElementRef }) invisibleMenuItems: QueryList;\n @ViewChild('invisibleMoreMenu', { read: ElementRef }) invisibleMoreMenu: ElementRef;\n @ViewChild('invisibleSpaceBetweenItems', { read: ElementRef }) invisibleSpaceBetweenItems: ElementRef;\n @ViewChild('webAppSelect', { static: false }) webAppSelect: ElementRef;\n @ViewChild('webAppSelectPortfolioOption', { static: false }) webAppSelectPortfolioOption: ElementRef;\n\n @ViewChild('navbarMenuItemsWrapper') set navbarMenuItemsWrapper(value: ElementRef | undefined) {\n if (SharedCommonUtility.notNullish(value)) {\n this._navbarMenuItemsWrapper = value;\n this._menusWrapperResizeObserver.observe(this._navbarMenuItemsWrapper.nativeElement);\n }\n }\n\n constructor(\n private navService: NavService,\n private zone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n private userService: UserService,\n ) {\n this._subscriptions = new Subscription();\n this._menusWrapperResizeObserver = new ResizeObserver((): void => this.zone.run((): void => {}));\n }\n\n private _handleParentMenuItem(parentMenuItem?: INavMenuItem): NavLink[] {\n const thirdLevelMenuItems: INavMenuItem[] = parentMenuItem?.children ?? [];\n\n return thirdLevelMenuItems\n .filter((thirdLevelMenuItem: INavMenuItem): boolean => {\n return thirdLevelMenuItem.isAvailable && !thirdLevelMenuItem.displayedOutsideOfNavbar && !thirdLevelMenuItem.mobileOnly;\n })\n .map(\n (thirdLevelMenuItem: INavMenuItem): NavLink => ({\n routerLink: thirdLevelMenuItem.routerLink,\n externalLink: thirdLevelMenuItem.externalLink,\n label: thirdLevelMenuItem.label,\n isActive: thirdLevelMenuItem.isActive,\n hasChildren: thirdLevelMenuItem.children?.length > 0,\n isHiddenOnCurrentScreenSize: undefined,\n isHidden: thirdLevelMenuItem.isHidden,\n id: thirdLevelMenuItem.id,\n iconName: thirdLevelMenuItem.iconName,\n }),\n );\n }\n\n private _handleChildrenRoutesChanges(childrenRoutes: NavLink[]): void {\n this.navbarItems = childrenRoutes.filter((item: NavLink): boolean => item.id !== NavigationItem.websites_and_apps_settings);\n }\n\n /**\n * This method is to determine the navbar menu items that need to be put inside More dropdown menu.\n * Whenever childrenRoutes$ is updated, render them into navbar(which is outside visible area)\n * and calculate remaining space by iterating all rendered menu items.\n *\n * If there is not enough space, mark the navbar menu item to be put in the More dropdown menu via\n * the \"isHiddenOnCurrentScreenSize\" property.\n *\n *\n * @private\n */\n private _adjustVisibleItems(): void {\n if (SharedCommonUtility.isNullish(this._navbarMenuItemsWrapper) || SharedCommonUtility.isNullish(this.invisibleMoreMenu)) {\n return;\n }\n\n let runChangesDetection: boolean = false;\n const dropdownMenuButtonWidth: number = this.invisibleMoreMenu.nativeElement.offsetWidth;\n const spaceBetweenItems: number = this.invisibleSpaceBetweenItems.nativeElement.offsetWidth;\n const navbarComputedStyle: CSSStyleDeclaration = getComputedStyle(this._navbarMenuItemsWrapper.nativeElement);\n let remainingSpace: number =\n this._navbarMenuItemsWrapper.nativeElement.clientWidth -\n parseFloat(navbarComputedStyle.paddingLeft) -\n parseFloat(navbarComputedStyle.paddingRight);\n\n for (let i: number = 0; i < this.navbarItems.length; i++) {\n const isTheLastItem: boolean = i === this.navbarItems.length - 1;\n const item: NavLink = this.navbarItems[i];\n const itemWidth: number = this.invisibleMenuItems.get(i).nativeElement.offsetWidth;\n\n const isHiddenOnCurrentScreenSize: boolean = isTheLastItem\n ? remainingSpace < itemWidth\n : remainingSpace < itemWidth + dropdownMenuButtonWidth + spaceBetweenItems;\n\n remainingSpace = isHiddenOnCurrentScreenSize ? 0 : remainingSpace - itemWidth - spaceBetweenItems;\n\n if (item.isHiddenOnCurrentScreenSize !== isHiddenOnCurrentScreenSize) {\n runChangesDetection = true;\n item.isHiddenOnCurrentScreenSize = isHiddenOnCurrentScreenSize;\n }\n }\n\n if (runChangesDetection) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public get menuNavbarItems(): NavLink[] {\n return this.navbarItems.filter(\n (navbarItem: NavLink): boolean => navbarItem.isHiddenOnCurrentScreenSize && !navbarItem.isHidden,\n );\n }\n\n public get visibleNavbarItems(): NavLink[] {\n return this.navbarItems.filter(\n (navbarItem: NavLink): boolean => !navbarItem.isHiddenOnCurrentScreenSize && !navbarItem.isHidden,\n );\n }\n\n private _hideOffscreenElements(): void {\n this.invisibleMenuItems?.forEach((menuItem: ElementRef): void => {\n const navbarLink: HTMLLinkElement = menuItem.nativeElement.querySelector('div.compound-navbar-link > *');\n if (SharedCommonUtility.notNullish(navbarLink)) {\n navbarLink.tabIndex = -1;\n }\n });\n\n const dropdown: HTMLButtonElement = this.invisibleMoreMenu?.nativeElement.querySelector('button.ds-btn');\n if (SharedCommonUtility.notNullish(dropdown)) {\n dropdown.tabIndex = -1;\n }\n }\n\n public get activeNavItem$(): Observable {\n return combineLatest([this.childrenRoutes$, this.gearRoutes$]).pipe(\n map(([childrenRoutes, gearRoutes]: [NavLink[], NavLink[]]): NavLink | undefined => {\n const activatedGearRoute: NavLink | undefined = gearRoutes.find((navLink: NavLink): boolean => navLink.isActive);\n return activatedGearRoute || childrenRoutes.find((navLink: NavLink): boolean => navLink.isActive);\n }),\n );\n }\n\n ngOnInit(): void {\n this.childrenRoutes$ = this.navService.activeSecondLevelMenuItem$().pipe(map(this._handleParentMenuItem));\n this.gearRoutes$ = this.navService.activeSecondLevelMenuItem$().pipe(\n map(\n (menuItem: INavMenuItem): INavMenuItem =>\n (menuItem?.children || []).find(\n (childNavItem: INavMenuItem): boolean =>\n childNavItem.id === NavigationItem.websites_and_apps_settings && childNavItem.isAvailable,\n ),\n ),\n map(this._handleParentMenuItem),\n );\n this.mobileNavItemInTheActiveSubtree$ = this.navService\n .getNavItemInTheActiveSubtree$([\n ...this.MOBILE_NAV_ITEMS_SHOWING_ACTIVE_WORKSPACE_NAME,\n ...this.MOBILE_NAV_ITEMS_SHOWING_ACTIVE_DP_NAME,\n ])\n .pipe(map(SharedCommonUtility.notNullish));\n this.activeWorkspaceName$ = this.userService.currentDigitalProperty$.pipe(\n map((dp: IDigitalPropertyListItem) => dp[$digitalProperty.workspace][$workspace.name]),\n );\n this.activeDigitalPropertyName$ = this.userService.currentDigitalProperty$.pipe(\n map((dp: IDigitalPropertyListItem) => dp[$digitalProperty.name]),\n );\n this.mobileNavbarLabel$ = this.navService\n .getNavItemInTheActiveSubtree$(this.MOBILE_NAV_ITEMS_SHOWING_ACTIVE_DP_NAME)\n .pipe(\n switchMap(\n (navItem: INavMenuItem): Observable =>\n SharedCommonUtility.notNullish(navItem) ? this.activeDigitalPropertyName$ : this.activeWorkspaceName$,\n ),\n );\n this._subscriptions.add(this.childrenRoutes$.subscribe(this._handleChildrenRoutesChanges.bind(this)));\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n\n if (\n SharedCommonUtility.notNullish(this._menusWrapperResizeObserver) &&\n SharedCommonUtility.notNullish(this._navbarMenuItemsWrapper?.nativeElement)\n ) {\n this._menusWrapperResizeObserver.unobserve(this._navbarMenuItemsWrapper.nativeElement);\n }\n }\n\n ngAfterViewChecked(): void {\n this._hideOffscreenElements();\n this._adjustVisibleItems();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { RestBuilder } from '../../services/helpers/rest.builder';\nimport { ISendChatMessageResponse, ISendChatMessageRequest } from '../../../../shared/interfaces/ai-chat.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AiChatService {\n private readonly restBuilder: RestBuilder;\n\n constructor(private httpClient: HttpClient) {\n this.restBuilder = new RestBuilder();\n }\n\n private chat(id?: string): RestBuilder {\n return this.restBuilder.create().ai().chat(id);\n }\n\n public sendMessage(sendChatMessageRequest: ISendChatMessageRequest): Observable {\n return this.httpClient.post(this.chat().getApiUrl(), sendChatMessageRequest);\n }\n\n public setRating(id: string, rating: number): Observable {\n const url: string = this.chat(id).rating().getApiUrl();\n\n return this.httpClient.put(url, { rating });\n }\n\n public unsetRating(id: string): Observable {\n const url: string = this.chat(id).rating().getApiUrl();\n\n return this.httpClient.delete(url);\n }\n}\n","export interface ISendChatMessageRequest {\n message: string;\n sessionId?: string;\n}\n\nexport interface IGatewayRequest {\n userId: string;\n}\n\nexport interface ISendChatMessageGatewayRequest extends ISendChatMessageRequest, IGatewayRequest {}\n\nexport interface ISetChatMessageRatingRequest {\n rating: number;\n}\n\nexport interface ISetChatMessageRatingGatewayRequest extends ISetChatMessageRatingRequest, IGatewayRequest {}\n\nexport type IUnsetChatMessageRatingGatewayRequest = IGatewayRequest;\n\nexport enum IChatMessageStatus {\n pending = 'pending',\n processing = 'processing',\n done = 'done',\n error = 'error',\n}\n\nexport interface ISendChatMessageResponse {\n _id: string;\n message: string;\n userId: string;\n sessionId?: string;\n status: IChatMessageStatus;\n response?: string;\n createdAt: string;\n startedAt?: string;\n endedAt?: string;\n error?: string;\n rating?: number;\n}\n","\n
    0\">\n
    \n
    \n
    \n
    {{ userName }}
    \n
    {{ message.message }}
    \n
    \n
    \n \n
    \n
    \n
    \n
    {{ 'ai_response_not_available' | translate }}
    \n \n
    \n
    \n
    \n \n
    {{ 'level_access' | translate }}
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n

    {{ 'ai_chat_description' | translate }}

    \n
    \n
    \n
    \n \n \n
    \n \n
    \n \n
    \n
    \n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n DsButtonVariants,\n DsModalColorVariant,\n DsModalService,\n Icons,\n IconScale,\n IconStyles,\n DsCheckboxesFeedbackOption,\n} from '@levelaccess/design-system';\nimport { Subject, Subscription } from 'rxjs';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\n\nimport { CustomValidators } from '../../services/helpers/form-custom-validators';\nimport { AiChatService } from './ai-chat.service';\nimport { TextareaFieldContext } from '../common-textarea/common-textarea.component';\nimport { IChatMessageStatus, ISendChatMessageResponse } from '../../../../shared/interfaces/ai-chat.interface';\nimport { IHttpErrorResponse } from '../../interfaces/error.interface';\nimport { UserService } from '../../services/user.service';\nimport { $user } from '../../../../shared/constants/user';\nimport { TranslateService } from '../../translate/translate.service';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\nimport { Api } from '../../../../shared/constants/api';\nimport { IUserServerResponse } from '../../../../shared/interfaces/user.interface';\nimport { BrowserLocalStorageService } from '../../services/browser-local-storage.service';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { CommonUtility } from '../../utility/common.utility';\n\nexport enum ResponseRating {\n notHelpful = 1,\n helpFul = 5,\n}\n\nexport const AI_CHAT_SESSION_ID_KEY: string = 'AI_CHAT_SESSION_ID';\n\n@Component({\n selector: 'app-ai-chat',\n templateUrl: './ai-chat.component.html',\n styleUrls: ['./ai-chat.component.scss'],\n})\nexport class AiChatComponent implements OnInit, OnDestroy, AfterViewInit {\n private readonly _subscription: Subscription;\n protected sendMessageSubscription: Subscription = Subscription.EMPTY;\n\n protected readonly Icons: typeof Icons = Icons;\n protected readonly DsButtonVariants: typeof DsButtonVariants = DsButtonVariants;\n protected readonly DsModalColorVariant: typeof DsModalColorVariant = DsModalColorVariant;\n protected readonly IconScale: typeof IconScale = IconScale;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly IChatMessageStatus: typeof IChatMessageStatus = IChatMessageStatus;\n protected readonly FeatureFlagCollection: typeof FeatureFlagCollection = FeatureFlagCollection;\n\n protected form: FormGroup<{ message: FormControl }>;\n protected formValidationRequest$: Subject;\n public messages: ISendChatMessageResponse[] = [];\n protected readonly ratingTitle: string;\n protected readonly ratingOptions: DsCheckboxesFeedbackOption[];\n\n protected readonly textAreaContext: TextareaFieldContext;\n\n private sessionId: string;\n\n constructor(\n public modalService: DsModalService,\n private fb: FormBuilder,\n private aiChatService: AiChatService,\n private userService: UserService,\n private translateService: TranslateService,\n private browserLocalStorageService: BrowserLocalStorageService,\n ) {\n this._subscription = new Subscription();\n this.formValidationRequest$ = new Subject();\n this.textAreaContext = {\n label: 'ai_chat_input_label',\n rows: 3,\n field: 'message',\n placeholder: 'ai_chat_input_placeholder',\n required: false,\n };\n this.ratingTitle = this.translateService.instant('ai-chat-message-rating-title');\n this.ratingOptions = [\n {\n label: this.translateService.instant('helpful'),\n id: 'rating-helpful',\n value: ResponseRating.helpFul,\n icon: Icons.ThumbsUp,\n },\n {\n label: this.translateService.instant('not-helpful'),\n id: 'rating-not-helpful',\n value: ResponseRating.notHelpful,\n icon: Icons.ThumbsDown,\n },\n ];\n\n this.form = this.fb.group({\n message: this.fb.control('', [CustomValidators.validateIsEmpty]),\n });\n }\n\n public sendMessage(): void {\n this.formValidationRequest$.next();\n if (!this.form.valid) {\n return;\n }\n\n this.doSendMessage(this.form.value.message);\n }\n\n public get userName(): string {\n return this.userService.retrieveAuthenticatedUserProfile()[$user.displayName];\n }\n\n private doSendMessage(message: string, resetIndex?: number): void {\n const addMessage = (response: ISendChatMessageResponse): void => {\n if (resetIndex !== undefined) {\n this.messages[resetIndex] = response;\n } else {\n this.messages.unshift(response);\n }\n this.form.reset();\n\n setTimeout(() => {\n CommonUtility.scrollElementIntoView(`user-query-${response._id}`, {\n behavior: 'smooth',\n block: 'start',\n inline: 'center',\n });\n });\n };\n\n this.sendMessageSubscription = this.aiChatService.sendMessage({ message, sessionId: this.sessionId }).subscribe({\n next: addMessage,\n error: (response: IHttpErrorResponse): void => {\n addMessage({ status: IChatMessageStatus.error, message, error: response.error.app.message } as ISendChatMessageResponse);\n },\n });\n this._subscription.add(this.sendMessageSubscription);\n }\n\n public retry(message: string, index: number): void {\n this.doSendMessage(message, index);\n }\n\n public onRatingChange(message: ISendChatMessageResponse, rating: number): void {\n message.rating = rating;\n if (rating === undefined) {\n this._subscription.add(this.aiChatService.unsetRating(message._id).subscribe());\n } else {\n this._subscription.add(this.aiChatService.setRating(message._id, rating).subscribe());\n }\n }\n\n public ngAfterViewInit(): void {\n // Allow user browse the website while chatting\n document.querySelector('ngb-offcanvas-backdrop').className = '';\n document.querySelector('body').style.overflow = 'unset';\n }\n\n public ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n public ngOnInit(): void {\n this.initChatSessionId();\n }\n\n private initChatSessionId(): void {\n this.sessionId = this.browserLocalStorageService.getItem(AI_CHAT_SESSION_ID_KEY);\n\n if (SharedCommonUtility.isNullishOrEmpty(this.sessionId)) {\n const currentUserProfile: IUserServerResponse = this.userService.retrieveAuthenticatedUserProfile();\n this.sessionId = `${Api.chat}-${currentUserProfile[$user.currentTenantId]}-${new Date().toISOString()}`;\n this.browserLocalStorageService.setItem(AI_CHAT_SESSION_ID_KEY, this.sessionId);\n }\n }\n}\n","\n 0\"\n [class.compound-second-level-navbar]=\"!showMobileNavVersion\"\n [class.compound-second-level-navbar-mobile]=\"showMobileNavVersion\"\n [attr.aria-label]=\"'second_level_navbar_label' | translate\"\n >\n
    \n \n \n
    \n \n
    \n
    \n
    \n \n\n \n \n {{ childRoute.label | translate }}\n \n \n\n \n \n \n {{ parentMenuItem.label | translate }}\n \n \n \n
    \n","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DsButtonVariants, DsModalRef, DsModalService, DsModalVariant, Icons, IconStyles } from '@levelaccess/design-system';\n\nimport { NavService } from '../../../services/navigation/nav.service';\nimport { INavMenuItem, NavigationItem } from '../../../services/navigation/nav-structure';\nimport { MobileSecondNavbarMenuModalComponent } from './mobile-second-navbar-menu-modal/mobile-second-navbar-menu-modal.component';\nimport { SharedCommonUtility } from '../../../../../shared/utils/common.utility';\nimport { AiChatComponent } from '../../ai-chat/ai-chat.component';\nimport { RequiredSecurities } from '../../../../../shared/constants/required-securities';\nimport { FeatureFlagCollection } from '../../../../../shared/interfaces/feature-flag.interface';\n\nexport interface NavLink {\n id?: NavigationItem;\n routerLink?: string;\n externalLink?: string;\n label: string;\n isActive: boolean;\n hasChildren: boolean;\n isHidden?: boolean;\n isHiddenOnCurrentScreenSize?: boolean;\n iconName?: Icons;\n}\n\n@Component({\n selector: 'compound-second-level-navbar',\n templateUrl: './compound-second-level-navbar.component.html',\n styleUrls: ['./compound-second-level-navbar.component.scss'],\n})\nexport class CompoundSecondLevelNavbarComponent implements OnInit {\n public childrenRoutes$: Observable;\n public parentMenuItem$: Observable;\n public DsButtonVariants: typeof DsButtonVariants;\n public Icons: typeof Icons;\n protected readonly IconStyles: typeof IconStyles = IconStyles;\n protected readonly RequiredSecurities: typeof RequiredSecurities = RequiredSecurities;\n protected readonly FeatureFlagCollection: typeof FeatureFlagCollection = FeatureFlagCollection;\n\n @Input() public showMobileNavVersion: boolean;\n\n constructor(\n private navService: NavService,\n private dsModalService: DsModalService,\n ) {\n this.DsButtonVariants = DsButtonVariants;\n this.Icons = Icons;\n }\n\n private handleActiveTopLevelMenuItemChanges(activeMenuItem?: INavMenuItem): NavLink[] {\n const children: INavMenuItem[] = activeMenuItem?.children ?? [];\n\n return children\n .filter((child: INavMenuItem): boolean => child.isAvailable)\n .map(\n (child: INavMenuItem): NavLink => ({\n routerLink: child.routerLink,\n externalLink: child.externalLink,\n label: child.label,\n isActive: child.isActive,\n hasChildren: child.children?.length > 0,\n }),\n );\n }\n\n public openNavModal(menuItem: INavMenuItem): void {\n const modalRef: DsModalRef | null = this.dsModalService.open(MobileSecondNavbarMenuModalComponent, DsModalVariant.fullScreen);\n\n if (SharedCommonUtility.notNullish(modalRef)) {\n const navModal: MobileSecondNavbarMenuModalComponent = modalRef.componentInstance;\n navModal.parentMenuItem = menuItem;\n }\n }\n\n public openAiChatModal(): void {\n if (this.dsModalService.modalCount > 0) {\n return;\n }\n this.dsModalService.open(AiChatComponent, DsModalVariant.slideOut);\n }\n\n ngOnInit(): void {\n this.parentMenuItem$ = this.navService.activeSecondLevelMenuItem$().pipe(\n map((activeMenuItem: INavMenuItem): INavMenuItem => {\n return activeMenuItem?.id !== NavigationItem.websites_and_apps ? activeMenuItem?.parent : activeMenuItem;\n }),\n );\n this.childrenRoutes$ = this.navService.activeTopLevelMenuItem$().pipe(map(this.handleActiveTopLevelMenuItemChanges));\n }\n}\n","
    \n \n \n \n \n \n \n \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DsBreakpoints } from '@levelaccess/design-system';\n\nimport { WindowService } from '../../services/window.service';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'compound-navbar',\n templateUrl: './compound-navbar.component.html',\n styleUrls: ['./compound-navbar.component.scss'],\n})\nexport class CompoundNavbarComponent implements OnInit {\n public showMobileNavVersion$: Observable;\n public isAuthenticated$: Observable;\n\n constructor(\n private windowService: WindowService,\n private userService: UserService,\n ) {}\n\n public ngOnInit(): void {\n this.showMobileNavVersion$ = this.windowService.observeBreakpoint(DsBreakpoints.Medium);\n this.isAuthenticated$ = this.userService.isAuthenticated$;\n }\n}\n","\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, Subscription, combineLatest, BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport version from '../../../version.json';\nimport { config } from '../../../environments/config.shared';\nimport { CookieService } from '../../services/cookie.service';\nimport { UserService } from '../../services/user.service';\nimport { Api } from '../../../../shared/constants/api';\nimport { RouterLinkTarget } from '../../shared/constants';\nimport { RouteHelper } from '../../helpers/route.helper';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit, OnChanges {\n private subscriptions: Subscription;\n\n public appVersion: { publishDate: string; version: string } = version;\n public footerTitle: string;\n public cookieMessageClosed: boolean;\n public isUserAuthenticated$: BehaviorSubject;\n public useTextLight$: Observable;\n public Api: typeof Api;\n public linkRel: string;\n public showAttributionLink$: Observable;\n\n @Input()\n public linkTarget: RouterLinkTarget = RouterLinkTarget.SELF;\n\n constructor(\n private userService: UserService,\n private cookieService: CookieService,\n private router: Router,\n ) {\n this.subscriptions = new Subscription();\n this.cookieMessageClosed = true;\n this.footerTitle = '';\n this.Api = Api;\n this.linkRel = '';\n\n this.isUserAuthenticated$ = new BehaviorSubject(this.userService.isAuthenticated());\n this.useTextLight$ = combineLatest([\n this.isUserAuthenticated$,\n RouteHelper.isLoginPage$(this.router),\n RouteHelper.isSignupPage$(this.router),\n RouteHelper.isTenantLoginRedirectPage$(this.router),\n ]).pipe(\n map(\n ([isAuthenticated, isLoginPage, isSignupPage, isTenantLoginRedirectPage]: [\n boolean,\n boolean,\n boolean,\n boolean,\n ]): boolean => (!isAuthenticated && (isLoginPage || isSignupPage)) || (isAuthenticated && isTenantLoginRedirectPage),\n ),\n );\n\n this.showAttributionLink$ = combineLatest([\n this.isUserAuthenticated$,\n RouteHelper.isTenantLoginRedirectPage$(this.router),\n ]).pipe(\n map(\n ([isAuthenticated, isTenantLoginRedirectPage]: [boolean, boolean]): boolean =>\n isAuthenticated && !isTenantLoginRedirectPage,\n ),\n );\n }\n\n private onAuthenticationChange(status: boolean): void {\n this.isUserAuthenticated$.next(status);\n }\n\n public removeCookiesUsageMessage(): void {\n this.cookieService.set('cookiesMessage', 'closed');\n this.cookieMessageClosed = true;\n }\n\n public ngOnInit(): void {\n if (this.cookieService.get('cookiesMessage') === null) {\n this.cookieMessageClosed = false;\n }\n\n const onAuthenticationChangeSubscription = this.userService.isAuthenticated$.subscribe(\n this.onAuthenticationChange.bind(this),\n );\n\n this.footerTitle = `${config.APP.COPYRIGHT_YEAR} - ${new Date().getFullYear()} ${config.company.name}`;\n\n this.subscriptions.add(onAuthenticationChangeSubscription);\n }\n\n public ngOnChanges(): void {\n if (this.linkTarget === RouterLinkTarget.BLANK) {\n this.linkRel = 'noreferrer noopener';\n }\n }\n}\n","
    \n \n {{ 'skip_to_ai_chat' | translate }}\n \n {{ 'go_to_main_content' | translate }}\n
    \n\n
    \n
    \n \n
    \n
    \n\n\n","import { Component, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { Title } from '@angular/platform-browser';\nimport { VariationValue } from '@harnessio/ff-javascript-client-sdk';\nimport { LoaderService } from '../../services/loader.service';\nimport { RoutingService } from '../../services/routing.service';\nimport { config } from '../../../environments/config.shared';\nimport { FeatureFlagCollection } from '../../../../shared/interfaces/feature-flag.interface';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\nimport { FeatureFlagService } from '../../services/feature-flag/feature-flag.service';\nimport { RequiredSecurities } from '../../../../shared/constants/required-securities';\nimport { UserAclService } from '../../services/user-acl.service';\nimport { AclSecurityAdapter } from '../../services/acl.service';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './app-layout.component.html',\n styleUrls: ['./app-layout.component.scss'],\n})\nexport class AppLayoutComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n public isLoading: boolean;\n\n public isHomePage: boolean;\n\n public showSkipToAiChatLink$: Observable;\n\n @Input() public routerOutlet: TemplateRef;\n\n constructor(\n private loaderService: LoaderService,\n private routingService: RoutingService,\n private featureFlagService: FeatureFlagService,\n public title: Title,\n private userAclService: UserAclService,\n ) {\n this.subscriptions = new Subscription();\n this.isHomePage = false;\n\n this.isLoading = true;\n }\n\n private setAppTitle(pageTitle: string): void {\n if (this.isHomePage) {\n this.title.setTitle(config.APP.NAME);\n return;\n }\n\n this.title.setTitle(pageTitle + ' | ' + config.APP.NAME);\n }\n\n private setIsHomePage(pageTitle: string): void {\n this.isHomePage = pageTitle === config.APP.NAME;\n }\n\n private onPageTitleChange(pageTitle: string): void {\n this.setIsHomePage(pageTitle);\n this.setAppTitle(pageTitle);\n }\n\n private setShowSkipToAiChatLink(): void {\n const aiChatFF$: Observable = this.featureFlagService\n .variation$(FeatureFlagCollection.aiChat, false)\n .pipe(map((value: VariationValue): boolean => (SharedCommonUtility.notNullish(value) ? Boolean(value) : value)));\n\n const skipToAiChatFF$: Observable = this.featureFlagService\n .variation$(FeatureFlagCollection.skipToAIChat, false)\n .pipe(map((value: VariationValue): boolean => (SharedCommonUtility.notNullish(value) ? Boolean(value) : value)));\n\n const aiChatPermission$: Observable = this.userAclService\n .createCheckAccessForCurrentUser()\n .pipe(\n map((adapter: AclSecurityAdapter): boolean =>\n adapter.useFunctionalActions(RequiredSecurities.AI_CHAT_Create.functionalActions).check(),\n ),\n );\n\n this.showSkipToAiChatLink$ = combineLatest([aiChatFF$, skipToAiChatFF$, aiChatPermission$]).pipe(\n map((checks: boolean[]): boolean => checks.every((element: boolean) => element)),\n );\n }\n\n public ngOnInit(): void {\n const changePageTitleSubscription: Subscription = this.routingService.pageTitle$.subscribe(this.onPageTitleChange.bind(this));\n this.subscriptions.add(changePageTitleSubscription);\n\n this.listenToLoader();\n this.setShowSkipToAiChatLink();\n }\n\n private listenToLoader(): void {\n this.subscriptions.add(\n this.loaderService.loader.pipe(debounceTime(200)).subscribe((loading: boolean): void => {\n this.isLoading = loading;\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { LoaderService } from '../../services/loader.service';\n\n@Component({\n selector: 'app-login-layout',\n templateUrl: './login-layout.component.html',\n styleUrls: ['./login-layout.component.scss'],\n})\nexport class LoginLayoutComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n public isLoading: boolean;\n\n constructor(private loaderService: LoaderService) {\n this.subscriptions = new Subscription();\n this.isLoading = true;\n }\n\n private listenToLoader(): void {\n this.subscriptions.add(\n this.loaderService.loader.pipe(debounceTime(200)).subscribe((loading: boolean): void => {\n this.isLoading = loading;\n }),\n );\n }\n\n public ngOnInit(): void {\n this.listenToLoader();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-signup-layout',\n templateUrl: './signup-layout.component.html',\n styleUrls: ['./signup-layout.component.scss'],\n})\nexport class SignupLayoutComponent {}\n","
    \n \n
    \n\n","\n\n\n \n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n","import { Component, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { Observable, of, Subscription, combineLatest } from 'rxjs';\nimport { filter, map, skip, switchMap } from 'rxjs/operators';\nimport { Location, ViewportScroller } from '@angular/common';\nimport { ActivatedRoute, NavigationEnd, NavigationSkipped, Params, Router, Scroll } from '@angular/router';\n\nimport { BusMessageChannels, BusMessageService } from './services/bus-message.service';\nimport { StatusService } from './services/status.service';\nimport { ModalService } from './services/modal.service';\nimport { TranslateService } from './translate/translate.service';\nimport { CommonUtility } from './utility/common.utility';\nimport { UserService } from './services/user.service';\nimport { IUserServerResponse } from '../../shared/interfaces/user.interface';\nimport { NotificationService } from './services/notification.service';\nimport { GoogleTagManagerService } from './services/google-tag-manager.service';\nimport { Api } from '../../shared/constants/api';\nimport { AmplitudeService } from './services/amplitude.service';\nimport { UserPropertyService } from './services/user-property.service';\nimport { FocusedWindowService } from './services/focused-window.service';\nimport { SharedCommonUtility } from '../../shared/utils/common.utility';\nimport { ServerVersionService } from './services/server-version.service';\nimport { ServerVersionChangeModalComponent } from './components/server-version-change/server-version-change-modal.component';\nimport { CurrentSessionDataService } from './services/current-session-data.service';\nimport { BusyIndicatorService } from './services/busy-indicator/busy-indicator.service';\nimport { TenantPackageService } from './services/tenant-package.service';\nimport { $navigationCustomState, NavigationCustomState } from './interfaces/navigation-custom-state.interface';\nimport { LinkedPropertyUtility } from '../../shared/utils/linked-property.utility';\nimport { zIndexOverlay, zIndexTooltip } from '../sass/_variables';\nimport { verifyConfirmationEmailNotificationId } from '../../shared/constants/notifications';\nimport { RouteHelper } from './helpers/route.helper';\n\n@Component({\n selector: 'app-root',\n styleUrls: ['./app.component.scss'],\n templateUrl: './app.component.html',\n})\nexport class AppComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription;\n\n public useLoginLayout$: Observable;\n public useSignupLayout$: Observable;\n public zIndexGlobalTooltip: number = zIndexOverlay + zIndexTooltip;\n\n constructor(\n private statusService: StatusService,\n private modalService: ModalService,\n private viewContainerRef: ViewContainerRef,\n private translateService: TranslateService,\n private userService: UserService,\n private userPropertyService: UserPropertyService,\n private notificationService: NotificationService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private viewportScroller: ViewportScroller,\n private googleTagManagerService: GoogleTagManagerService,\n private currentSessionDataService: CurrentSessionDataService,\n private busMessageService: BusMessageService,\n private amplitudeService: AmplitudeService,\n private focusedWindowService: FocusedWindowService,\n private serverVersionService: ServerVersionService,\n private location: Location,\n private tenantPackageService: TenantPackageService,\n busyIndicatorService: BusyIndicatorService,\n ) {\n this.subscriptions = new Subscription();\n\n this.useLoginLayout$ = combineLatest([\n this.userService.isAuthenticated$,\n RouteHelper.isLoginPage$(this.router),\n RouteHelper.isTenantLoginRedirectPage$(this.router),\n ]).pipe(\n map(\n ([isAuthenticated, isLoginPage, isTenantLoginRedirectPage]: [boolean, boolean, boolean]): boolean =>\n (!isAuthenticated && isLoginPage) || (isAuthenticated && isTenantLoginRedirectPage),\n ),\n );\n\n this.useSignupLayout$ = combineLatest([this.userService.isAuthenticated$, RouteHelper.isSignupPage$(this.router)]).pipe(\n map(([isAuthenticated, isSignupPage]: [boolean, boolean]): boolean => !isAuthenticated && isSignupPage),\n );\n\n this.focusedWindowService.init();\n this.handleRouterScroller();\n this.subscriptions.add(busyIndicatorService.a11MessageOnIndicatorChange().subscribe());\n }\n\n private loadUserDataAfterAuthenticated(): void {\n this.subscriptions.add(\n combineLatest([this.userService.isAuthenticated$, this.userService.userDataChanged$])\n .pipe(\n switchMap(([isAuthenticated, userData]: [boolean, IUserServerResponse]): Observable => {\n if (isAuthenticated !== true) {\n return of(null);\n }\n\n if (SharedCommonUtility.notNullishOrEmpty(userData)) {\n return of(userData);\n }\n\n return this.userService.getMeProfile();\n }),\n )\n .subscribe(),\n );\n }\n\n private handleRouterScroller(): void {\n const onlyScrollEvent = (e: any): boolean => {\n return e instanceof Scroll && !(e.routerEvent instanceof NavigationSkipped);\n };\n\n const processScrollEvent = (e: Scroll): void => {\n const viewportScroller: ViewportScroller = this.viewportScroller;\n\n const handleScroll = (): void => {\n const cb = (): void => {\n if (e.position) {\n viewportScroller.scrollToPosition(e.position);\n return;\n }\n\n if (e.anchor) {\n if (e.routerEvent.url !== (e.routerEvent as NavigationEnd).urlAfterRedirects) {\n viewportScroller.scrollToAnchor(e.anchor);\n return;\n }\n return;\n }\n\n const navigationState: NavigationCustomState = this.location.getState();\n if (navigationState?.[$navigationCustomState.scrollToTop] !== false) {\n viewportScroller.scrollToPosition([0, 0]);\n }\n };\n\n window.setTimeout(cb, 200);\n };\n\n window.requestAnimationFrame(handleScroll);\n };\n\n this.subscriptions.add(\n this.router.events.pipe(filter(onlyScrollEvent)).subscribe({\n next: processScrollEvent,\n }),\n );\n }\n\n private hidePageLoader(): void {\n const pageLoaderElement: HTMLElement = document.querySelector('.page-loader');\n const pageLoaderStyles: HTMLElement = document.getElementById('loaderStyles');\n const loadingScript: HTMLElement = document.getElementById('loadingScript');\n\n if (pageLoaderElement && CommonUtility.isHostMethod(pageLoaderElement, 'remove')) {\n pageLoaderElement.remove();\n }\n\n if (pageLoaderStyles && CommonUtility.isHostMethod(pageLoaderStyles, 'remove')) {\n pageLoaderStyles.remove();\n }\n\n if (loadingScript && CommonUtility.isHostMethod(loadingScript, 'remove')) {\n loadingScript.remove();\n }\n }\n\n private applyTranslationsOnUIside(): void {\n const htmlRoot: Element = CommonUtility.getRootElement();\n const availableLanguage: string = this.translateService.currentLang;\n\n const langValue: string[] = availableLanguage.split('-');\n\n // Note: according to https://tools.ietf.org/html/rfc3066 there could also be a subtag so the final language identification\n // can have a format lang-region-subregion. This language section could be reviewed in the future.\n if (langValue.length === 2) {\n htmlRoot.setAttribute('lang', `${langValue[0]}-${langValue[1].toUpperCase()}`);\n } else if (langValue.length === 1) {\n htmlRoot.setAttribute('lang', langValue[0]);\n }\n\n // Note: here all components should be re-rendered\n }\n\n private initialSettings(): void {\n const htmlRoot: Element = CommonUtility.getRootElement();\n\n htmlRoot.setAttribute('data-useragent', window.navigator.userAgent);\n htmlRoot.setAttribute('data-platform', window.navigator.platform);\n }\n\n private setApplicationIsReadyStatus(): void {\n this.statusService.setApplicationReadyStatus(true);\n }\n\n private verifyConfirmationEmail(): void {\n const success = (userData: IUserServerResponse): void => {\n if (userData === null || typeof userData.emailVerified === 'undefined' || userData.emailVerified) {\n return;\n }\n\n const words: string[] = [userData.email, `/${Api.settings}/${Api.profile}`];\n const message: string = this.translateService.instant('activation_message', words);\n\n this.notificationService.inlineMessage(message, verifyConfirmationEmailNotificationId);\n };\n\n const error = (err: any): void => {\n console.error(err);\n\n const message: string = this.translateService.instant('activation_message_error', err.error.message);\n\n this.notificationService.inlineMessage(message, verifyConfirmationEmailNotificationId);\n };\n\n this.subscriptions.add(this.userService.userDataChanged$.subscribe(success, error));\n }\n\n public onQueryParameterChange(queryParams: Params): void {\n const { digitalPropertyId, workspaceId } = LinkedPropertyUtility.fromLinkedPropertyQueryParam(queryParams);\n\n if (typeof workspaceId !== 'string' || typeof digitalPropertyId !== 'string') {\n return;\n }\n\n const switchPropertySubscription: Subscription = this.userPropertyService\n .switchUserToDigitalPropertyIfNeeded(workspaceId, digitalPropertyId)\n .subscribe({\n next: (switched: boolean) => {\n if (switched) {\n this.busMessageService.to(BusMessageChannels.digitalPropertyChange).next();\n }\n },\n });\n this.subscriptions.add(switchPropertySubscription);\n }\n\n public subscribeToServerVersionChange(): void {\n this.subscriptions.add(\n this.serverVersionService.versionChange.subscribe({\n next: () => this.modalService.open(ServerVersionChangeModalComponent),\n }),\n );\n }\n\n public subscribeToTenantPackageChange(): void {\n this.subscriptions.add(\n this.tenantPackageService.tenantPackageChange$.subscribe({\n next: () => this.modalService.open(ServerVersionChangeModalComponent),\n }),\n );\n }\n\n public ngOnInit(): void {\n this.hidePageLoader();\n this.initialSettings();\n this.loadUserDataAfterAuthenticated();\n this.subscribeToServerVersionChange();\n this.subscribeToTenantPackageChange();\n\n this.modalService.setRootViewContainerRef(this.viewContainerRef);\n\n const routerEventsSubscription: Subscription = this.activatedRoute.queryParams.subscribe({\n next: this.onQueryParameterChange.bind(this),\n });\n this.subscriptions.add(routerEventsSubscription);\n\n this.subscriptions.add(\n this.translateService.currentLanguage$.pipe(skip(1)).subscribe({ next: this.applyTranslationsOnUIside.bind(this) }),\n );\n\n this.subscriptions.add(\n this.busMessageService\n .from(BusMessageChannels.notificationsReady)\n .pipe(skip(1))\n .subscribe({\n next: this.verifyConfirmationEmail.bind(this),\n }),\n );\n\n this.setApplicationIsReadyStatus();\n this.googleTagManagerService.initialiseGoogleTagManager();\n this.currentSessionDataService.initialiseCurrentSessionData();\n this.amplitudeService.initialiseAmplitude();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.focusedWindowService.destroy();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpResponse, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { switchMap, finalize, catchError, filter, take } from 'rxjs/operators';\nimport { BehaviorSubject, EMPTY, Observable, throwError } from 'rxjs';\nimport { StatusCodes } from 'http-status-codes';\n\nimport { AuthService } from '../auth.service';\nimport { config } from '../../../environments/config.shared';\nimport { UserService } from '../user.service';\nimport { ErrorHandlerService } from '../error-handler.service';\nimport { Api } from '../../../../shared/constants/api';\nimport { IGlobalError } from '../../../../shared/interfaces/error.interface';\nimport { errorMessagesNames } from '../../../../shared/constants/errors';\nimport { SharedCommonUtility } from '../../../../shared/utils/common.utility';\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n private isRefreshingToken: boolean;\n private tokenSubject: BehaviorSubject;\n\n constructor(\n private authService: AuthService,\n private userService: UserService,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n ) {\n this.isRefreshingToken = false;\n this.tokenSubject = new BehaviorSubject(null);\n }\n\n private static addAccessToken(request: HttpRequest, accessToken: string | undefined): HttpRequest {\n let newRequest: HttpRequest;\n\n if (typeof accessToken === 'string') {\n newRequest = request.clone({\n setHeaders: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n }\n\n return newRequest || request;\n }\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const accessToken: string | undefined = this.authService.getAccessTokenFromStorage();\n const requestWithToken = TokenInterceptor.addAccessToken(request, accessToken);\n\n const handleError = (errorResponse: any): Observable> => {\n if (errorResponse instanceof HttpErrorResponse) {\n const error: IGlobalError = errorResponse.error as IGlobalError;\n if (\n errorResponse.status === StatusCodes.FORBIDDEN &&\n SharedCommonUtility.notNullish(error?.app) &&\n error.app.name !== errorMessagesNames.NoAccessToDigitalProperty\n ) {\n if (this.isRefreshingToken === false) {\n this.isRefreshingToken = true;\n this.tokenSubject.next(null);\n\n const processNewToken = (refreshTokenResponse: HttpResponse): Observable | never> => {\n const newToken: string | null = refreshTokenResponse.headers.get(config.token.access.header);\n\n if (SharedCommonUtility.isNullish(newToken)) {\n return next.handle(request);\n }\n\n this.authService.saveAccessTokenToStorage(newToken);\n this.tokenSubject.next(newToken);\n return next.handle(TokenInterceptor.addAccessToken(request, newToken));\n };\n\n const errorGettingNewToken = (err: any, _caught: Observable>): Observable => {\n if (err.status === StatusCodes.FORBIDDEN) {\n this.router\n .navigate([`/${Api.forbidden}`])\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n return EMPTY;\n }\n\n this.userService.processUnauthorization();\n\n this.router\n .navigate([`/${Api.login}`])\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService));\n\n return throwError(err);\n };\n\n const stopRefreshingToken = (): void => {\n this.isRefreshingToken = false;\n };\n\n return this.authService\n .getNewAccessToken()\n .pipe(switchMap(processNewToken), catchError(errorGettingNewToken), finalize(stopRefreshingToken));\n }\n const validToken = (token: string): boolean => {\n return token !== null;\n };\n\n const createRequest = (token: string): Observable> => {\n return next.handle(TokenInterceptor.addAccessToken(request, token));\n };\n\n return this.tokenSubject.pipe(filter(validToken), take(1), switchMap(createRequest));\n } else if (errorResponse.status === StatusCodes.UNAUTHORIZED) {\n // Note: generally an unauthorized request happens when the user permissions in the UI are different than the one on server\n // as for instance the user does not belong to the workspace anymore, or his permissions on that workspace changed or his permissions\n // at application level changed. Then we need to reload the user profile to ensure we retrieved the updated data\n this.userService.checkUserPermissionsChange();\n }\n }\n\n return throwError(errorResponse);\n };\n\n return next.handle(requestWithToken).pipe(catchError(handleError));\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, ObservableInput, throwError } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\n\nimport { BusyIndicatorService } from './busy-indicator.service';\n\n@Injectable()\nexport class BusyIndicatorInterceptor implements HttpInterceptor {\n constructor(private busyIndicatorService: BusyIndicatorService) {}\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const handleBusyIndicator = (evt: HttpEvent): void => {\n if (evt instanceof HttpResponse) {\n this.busyIndicatorService.closeIndicator();\n } else {\n this.busyIndicatorService.openIndicator();\n }\n };\n\n const handleBusyIndicatorForError = (err: any, caught: Observable>): ObservableInput => {\n if (err instanceof HttpErrorResponse) {\n this.busyIndicatorService.closeIndicator();\n }\n\n return throwError(err);\n };\n\n return next\n .handle(request)\n .pipe(\n tap(handleBusyIndicator),\n catchError(handleBusyIndicatorForError),\n finalize(this.busyIndicatorService.closeIndicator.bind(this.busyIndicatorService)),\n );\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nexport class ExtraHeadersInterceptor implements HttpInterceptor {\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const params: { setHeaders: { [key: string]: string } } = {\n setHeaders: {\n 'X-Request-Date': new Date().toISOString(),\n },\n };\n\n const newRequest: HttpRequest = request.clone(params);\n\n return next.handle(newRequest);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\nimport { StatusService } from './status.service';\nimport { TranslateService } from '../translate/translate.service';\nimport { CommonUtility } from '../utility/common.utility';\nimport { IMenuItem } from '../interfaces/menu.interface';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeaturesService {\n private featuresConfig: any;\n\n constructor(\n private httpClient: HttpClient,\n private statusService: StatusService,\n private translateService: TranslateService,\n ) {\n this.featuresConfig = null;\n }\n\n private translateMenuItems(items: IMenuItem): IMenuItem {\n for (const item in items) {\n if (items.hasOwnProperty(item) && typeof items[item] === 'object') {\n this.translateMenuItems(items[item]);\n } else if (item === 'name') {\n items[item] = this.translateService.instant(items[item]);\n } else if (item === 'id') {\n items[item] = CommonUtility.createUniqueDOMId(items[item]);\n }\n }\n\n return items;\n }\n\n public async fetchFeaturesConfig(): Promise {\n const resolveFeatures = (resolve: any, reject: any): void => {\n const saveFeaturesConfig = (featuresConfig: any): void => {\n this.featuresConfig = featuresConfig;\n };\n\n const translateMenuItems = (): void => {\n this.setFeaturesConfig(this.translateMenuItems(this.featuresConfig));\n };\n\n const checkTranslations = (): void => {\n if (this.statusService.getAreTranslationsReady() === false || this.featuresConfig === null) {\n return;\n }\n\n areTranslationsReadySubscription.unsubscribe();\n translateMenuItems();\n resolve();\n };\n\n const areTranslationsReadySubscription: Subscription = this.statusService.$areTranslationsReady.pipe(skip(1)).subscribe({\n next: checkTranslations,\n });\n\n const httpParams: HttpParams = new HttpParams({\n fromString: `c=${SharedCommonUtility.getRandomInsecureString()}`,\n });\n\n this.httpClient\n .get('environments/features.config.json', { params: httpParams })\n .toPromise()\n .then(saveFeaturesConfig)\n .then(checkTranslations)\n .catch(reject);\n };\n\n return new Promise(resolveFeatures);\n }\n\n public getFeaturesConfig(): any {\n return this.featuresConfig;\n }\n\n public setFeaturesConfig(featuresConfig: any): void {\n this.featuresConfig = featuresConfig;\n }\n\n public removeFeaturesConfig(): void {\n this.featuresConfig = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { RestService } from './rest.service';\nimport { ISupportRequest } from '../../../shared/interfaces/support-request.interface';\n\n@Injectable()\nexport class SupportService {\n constructor(private restService: RestService) {}\n\n public sendSupportRequest(supportRequest: ISupportRequest): Observable {\n return this.restService.sendSupportRequest(supportRequest);\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrowserService {\n constructor(private ngZone: NgZone) {}\n\n private async waitForElementOutsideOfNgZone(selector: string, target: Node, timeout: number): Promise {\n const action = (resolve: Function, reject: Function): void => {\n const element: Element = document.querySelector(selector);\n let stopChecking: boolean = false;\n\n if (element) {\n resolve(element);\n return;\n }\n\n const stopCheckingForElement = (): void => {\n stopChecking = true;\n window.clearTimeout(timeoutId);\n };\n\n const timeoutId: number = window.setTimeout(stopCheckingForElement, timeout);\n\n const processMutations: MutationCallback = (mutations: MutationRecord[], _observer: MutationObserver): void => {\n if (stopChecking) {\n _observer.disconnect();\n resolve(null);\n return;\n }\n\n const HtmlElement: HTMLElement | null = document.querySelector(selector);\n\n if (HtmlElement === null) {\n return;\n }\n\n stopCheckingForElement();\n _observer.disconnect();\n resolve(HtmlElement);\n };\n\n const observer: MutationObserver = new MutationObserver(processMutations);\n\n const observerOptions: MutationObserverInit = {\n childList: true,\n subtree: true,\n };\n\n observer.observe(document.documentElement, observerOptions);\n };\n\n return new Promise(action);\n }\n\n private async waitForRenderedElementOutsideOfNgZone(selector: string, target: Node, timeout: number): Promise {\n const action = (resolve: Function, reject: Function): void => {\n const element: HTMLElement = document.querySelector(selector);\n let loopTimeoutId: number;\n let stopChecking: boolean = false;\n\n if (element && element.offsetWidth > 0) {\n resolve(element);\n return;\n }\n\n const stopCheckingForElement = (): void => {\n stopChecking = true;\n window.clearTimeout(timeoutId);\n };\n\n const timeoutId: number = window.setTimeout(stopCheckingForElement, timeout);\n\n const checkRenderderState = (): void => {\n if (stopChecking) {\n resolve(null);\n return;\n }\n\n const HtmlElement: HTMLElement | null = document.querySelector(selector);\n\n if (HtmlElement && HtmlElement.offsetWidth > 0) {\n stopCheckingForElement();\n resolve(HtmlElement);\n window.clearTimeout(loopTimeoutId);\n return;\n }\n\n loopTimeoutId = window.setTimeout(checkRenderderState, 100);\n };\n\n loopTimeoutId = window.setTimeout(checkRenderderState, 100);\n };\n\n return new Promise(action);\n }\n\n // Note: unwrapping MutationObserver from ngZone. See issue and workaround https://github.com/angular/angular/issues/31712#issuecomment-346521\n\n public async waitForElement(\n selector: string,\n target: Node = document.documentElement,\n timeout: number = 5000,\n ): Promise {\n return this.ngZone.runOutsideAngular(async (): Promise => {\n return this.waitForElementOutsideOfNgZone(selector, target, timeout);\n });\n }\n\n public async waitUntilRenderedElement(\n selector: string,\n target: Node = document.documentElement,\n timeout: number = 5000,\n ): Promise {\n return this.ngZone.runOutsideAngular(async (): Promise => {\n return this.waitForRenderedElementOutsideOfNgZone(selector, target, timeout);\n });\n }\n}\n","export enum $clientLog {\n data = 'data',\n date = 'date',\n referer = 'referer',\n type = 'type',\n tenantId = 'tenantId',\n workspaceId = 'workspaceId',\n digitalPropertyId = 'digitalPropertyId',\n userId = 'userId',\n userName = 'userName',\n stack = 'stack',\n url = 'url',\n}\n\nexport interface ITrackingConsoleRequest {\n [$clientLog.data]: string;\n [$clientLog.type]: string;\n [$clientLog.userId]: string;\n [$clientLog.url]: string;\n [$clientLog.tenantId]?: string;\n [$clientLog.workspaceId]?: string;\n [$clientLog.digitalPropertyId]?: string;\n [$clientLog.stack]?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { $clientLog, ITrackingConsoleRequest } from '../../../../shared/interfaces/tracking-console.interface';\nimport { RestService } from '../rest.service';\nimport { UserService, ICurrentUserData } from '../user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TrackingConsoleService {\n private nativeConsole: any;\n private originalConsoleReferences: any;\n\n constructor(\n private restService: RestService,\n private userService: UserService,\n private router: Router,\n ) {\n this.originalConsoleReferences = {};\n }\n\n private sendData(report: ITrackingConsoleRequest): boolean {\n return this.restService.sendTrackingConsole(report);\n }\n\n public createConsoleWrapper(): any {\n this.nativeConsole = window.console;\n\n const createWrapper = (consoleType: string): void => {\n this.originalConsoleReferences[consoleType] = window.console[consoleType];\n\n window.console[consoleType] = (...args: any[]): void => {\n const fnArgs: any[] = Array.prototype.slice.call(args, 0);\n let argsData: string;\n\n try {\n argsData = JSON.stringify(fnArgs);\n } catch (e) {\n argsData = JSON.stringify(`[error] while trying to use JSON stringify with console. Error: ${e}`);\n }\n\n const userData: ICurrentUserData = this.userService.getUserDataForLogging();\n\n const consoleData: ITrackingConsoleRequest = {\n [$clientLog.data]: argsData,\n [$clientLog.type]: consoleType,\n [$clientLog.userId]: this.userService.getStoredUserId(),\n [$clientLog.url]: this.router.url,\n ...userData,\n };\n\n for (const arg of args) {\n if (arg instanceof Error) {\n consoleData[$clientLog.stack] = arg.stack;\n break;\n }\n }\n\n const consoleTrackingSendBeacon: boolean = this.sendData(consoleData);\n\n if (consoleTrackingSendBeacon === false) {\n args.push('[TrackingConsoleService.handleConsoleLog.consoleTrackingSendBeacon] failed to send tracking beacon');\n }\n\n this.originalConsoleReferences[consoleType].apply(this.nativeConsole, args);\n };\n };\n\n // Wrap only console.error() calls\n createWrapper('error');\n }\n}\n","\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { BreadcrumbsService } from './breadcrumbs.service';\nimport { IBreadcrumb } from './breadcrumbs.shared';\n\n@Component({\n selector: 'app-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n})\nexport class BreadcrumbsComponent implements OnInit, OnDestroy {\n public crumbs: IBreadcrumb[];\n\n public subscriptions: Subscription[];\n\n constructor(public breadcrumbsService: BreadcrumbsService) {\n this.subscriptions = [];\n }\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.breadcrumbsService.crumbs$.subscribe((breadcrumbs: IBreadcrumb[]) => {\n this.crumbs = breadcrumbs;\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LazyLoadingStylesService {\n constructor() {}\n\n public async loadAppStyles(): Promise {\n const lazyLoadStyles = (resolve: Function): void => {\n const links: Element[] = Array.from(document.querySelectorAll('link[rel=\"stylesheet\"]'));\n\n const initaliseLoadCss = (link: HTMLLinkElement): void => {\n if (typeof link.dataset.href === 'string') {\n const loadCss = (): void => {\n link.href = link.dataset.href;\n };\n\n if (SharedCommonUtility.isNativeMethod(window.requestAnimationFrame)) {\n window.requestAnimationFrame(loadCss);\n } else {\n loadCss();\n }\n }\n };\n\n links.forEach(initaliseLoadCss);\n resolve();\n };\n\n return new Promise(lazyLoadStyles);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { LoaderService } from '../loader.service';\nimport { ApiHeaderOption } from '../../../../shared/constants/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestLoaderInterceptor implements HttpInterceptor {\n constructor(private loaderService: LoaderService) {}\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n if (request.headers.get(ApiHeaderOption.skipLoader)?.toLowerCase() === 'true') {\n return next.handle(request);\n }\n this.loaderService.setKeyLoading(true, request.url);\n return next.handle(request).pipe(\n finalize(() => {\n this.loaderService.setKeyLoading(false, request.url);\n }),\n );\n }\n}\n","export enum customHeaders {\n x_app_version = 'x-app-version',\n x_tenant_package = 'x-tenant-package',\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { customHeaders } from '../../../../shared/constants/custom-headers';\nimport { ServerVersionService } from '../server-version.service';\n\n@Injectable()\nexport class ServerVersionInterceptor implements HttpInterceptor {\n constructor(private versionService: ServerVersionService) {}\n\n private handleApplicationVersion(response: HttpResponse): void {\n if (response.headers?.has(customHeaders.x_app_version)) {\n const serverVersion: string = response.headers.get(customHeaders.x_app_version);\n if (this.versionService.version === null || this.versionService.version !== serverVersion) {\n this.versionService.version = serverVersion;\n }\n }\n }\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(tap((response: HttpResponse) => this.handleApplicationVersion(response)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthHttpInterceptor } from '@auth0/auth0-angular';\nimport { AppConfigService } from '../app-config.service';\nimport { TokenInterceptor } from './token.interceptor';\nimport { RestBuilder } from '../helpers/rest.builder';\n\n@Injectable({ providedIn: 'root' })\nexport class EapAuthTokenInterceptor implements HttpInterceptor {\n private restBuilder: RestBuilder;\n\n constructor(\n private externalAuthHttpInterceptor: AuthHttpInterceptor,\n private eapAuthInterceptor: TokenInterceptor,\n private config: AppConfigService,\n ) {\n this.restBuilder = new RestBuilder();\n }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n if (request.url === this.restBuilder.create().config().getApiUrl()) {\n return next.handle(request);\n }\n\n if (this.config.isUsingExternalIdp()) {\n return this.externalAuthHttpInterceptor.intercept(request, next);\n }\n return this.eapAuthInterceptor.intercept(request, next);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, ObservableInput, of, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { CommonUtility } from '../../utility/common.utility';\nimport { errorMessagesNames } from '../../../../shared/constants/errors';\nimport { UserService } from '../user.service';\n\n@Injectable()\nexport class NoWorkspaceInterceptor implements HttpInterceptor {\n constructor(private userService: UserService) {}\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const handleNoWorkspacesAvailableError = (err: any, caught: Observable>): ObservableInput => {\n if (\n this.userService.hasAWorkspaceSubject$.getValue() &&\n err instanceof HttpErrorResponse &&\n (CommonUtility.extractHTTPErrorName(err) === errorMessagesNames.ErrorUserHasNoAvailableWorkspaces ||\n CommonUtility.extractHTTPErrorName(err) === errorMessagesNames.NoAccessToTenant)\n ) {\n this.userService.setToNoWorkspaceState();\n return of();\n }\n return throwError(err);\n };\n\n return next.handle(request).pipe(catchError(handleNoWorkspacesAvailableError));\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { customHeaders } from '../../../../shared/constants/custom-headers';\nimport { TenantPackageService } from '../tenant-package.service';\nimport { PackageNames } from '../../../../shared/constants/packaging';\n\n@Injectable()\nexport class TenantPackageInterceptor implements HttpInterceptor {\n constructor(private tenantPackageService: TenantPackageService) {}\n\n private handleTenantPackage(response: HttpResponse): void {\n if (response.headers?.has(customHeaders.x_tenant_package)) {\n this.tenantPackageService.tenantPackage = response.headers.get(customHeaders.x_tenant_package) as PackageNames;\n }\n }\n\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(tap((response: HttpResponse) => this.handleTenantPackage(response)));\n }\n}\n","
    \n \n \n \n \n \n
    \n","import { ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { BehaviorSubject, combineLatest, EMPTY, from, Observable, Subscription } from 'rxjs';\nimport { catchError, filter, map, switchMap } from 'rxjs/operators';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { $workspace } from '../../../../../../../shared/constants/workspace';\nimport { IWorkspaceClient } from '../../../../../../../shared/interfaces/workspace.interface';\nimport { ILinkedPropertyData, LinkedPropertyUtility } from '../../../../../../../shared/utils/linked-property.utility';\nimport { INavMenuItem, IWorkspacePermission, NavigationItem } from '../../../../../services/navigation/nav-structure';\nimport { Api } from '../../../../../../../shared/constants/api';\nimport { LoadErrorHandler } from '../../../../../services/load-error-handler';\nimport { WorkspaceService } from '../../../../../services/workspace.service';\nimport { NavService } from '../../../../../services/navigation/nav.service';\nimport { ErrorHandlerService } from '../../../../../services/error-handler.service';\nimport { UserService } from '../../../../../services/user.service';\nimport { IDigitalPropertyListItem } from '../../../../../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../../../../../shared/constants/digital-properties';\nimport { SharedCommonUtility } from '../../../../../../../shared/utils/common.utility';\nimport { BusMessageChannels, BusMessageService } from '../../../../../services/bus-message.service';\n\n@Component({\n selector: 'app-workspaces-select',\n templateUrl: './workspaces-select.component.html',\n styleUrls: ['./workspaces-select.component.scss'],\n})\nexport class WorkspacesSelectComponent implements OnInit {\n protected readonly $workspace: typeof $workspace = $workspace;\n private _workspacesMenuItem: INavMenuItem;\n private _activeMenuItem: INavMenuItem;\n private _subscription: Subscription;\n private workspaceLocations: Map;\n private workspacesLoaded$: BehaviorSubject;\n\n public workspaces: IWorkspaceClient[];\n public selectedWorkspaceId: string | undefined;\n\n @Output() public workspaceChanged: EventEmitter = new EventEmitter();\n\n constructor(\n private loadErrorHandler: LoadErrorHandler,\n private workspaceService: WorkspaceService,\n private userService: UserService,\n private activatedRoute: ActivatedRoute,\n private changeDetectorRef: ChangeDetectorRef,\n private navService: NavService,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n private busMessageService: BusMessageService,\n ) {\n this._subscription = new Subscription();\n this.workspaceLocations = new Map();\n this.workspacesLoaded$ = new BehaviorSubject(false);\n }\n\n public getWorkSpaces(): void {\n const onGetWorkspacesError = (error: HttpErrorResponse): Observable => {\n this.loadErrorHandler.handleError('error_while_getting_workspaces', error, WorkspacesSelectComponent.name);\n return EMPTY;\n };\n\n const onAuthenticationChange = (status: boolean): void => {\n if (status) {\n this._subscription.add(\n this.workspaceService\n .getActiveWorkspacesV2()\n .pipe(catchError(onGetWorkspacesError.bind(this)))\n .subscribe((workspaces: IWorkspaceClient[]): void => {\n this.workspaces = workspaces;\n this.workspacesLoaded$.next(true);\n }),\n );\n }\n };\n\n this._subscription.add(this.userService.isAuthenticated$.subscribe(onAuthenticationChange.bind(this)));\n }\n\n public getSelectedWorkspaceId(): void {\n const urlSelectedWorkspace$: Observable = this.activatedRoute.queryParams.pipe(\n map(LinkedPropertyUtility.fromLinkedPropertyQueryParam),\n );\n\n this._subscription.add(\n urlSelectedWorkspace$\n .pipe(\n map((linkedPropertyData: ILinkedPropertyData): string | undefined => {\n return linkedPropertyData?.[Api.workspaceId] ?? undefined;\n }),\n )\n .subscribe((workspaceId: string | undefined): void => {\n this.selectedWorkspaceId = workspaceId;\n this.changeDetectorRef.detectChanges();\n }),\n );\n }\n\n public selectWorkspace(workspaceId: string): void {\n this.selectedWorkspaceId = workspaceId;\n\n const workspace: IWorkspaceClient = this.workspaces.find(\n (workspaceClient: IWorkspaceClient): boolean => workspaceClient[$workspace._id] === workspaceId,\n );\n\n const propertyId: string = workspace[$workspace.digitalProperties]?.[0]?._id;\n\n this._subscription.add(\n this.userService\n .switchUserToDigitalProperty(workspaceId, propertyId)\n .pipe(\n switchMap(() => {\n const routePath: string = this.workspaceLocations.get(workspaceId);\n\n return from(\n this.router\n .navigate([routePath], {\n queryParams: LinkedPropertyUtility.getLinkedPropertyQueryParam(propertyId, workspaceId),\n relativeTo: this.activatedRoute,\n queryParamsHandling: 'merge',\n })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService)),\n );\n }),\n )\n .subscribe(() => {\n this.busMessageService.to(BusMessageChannels.userSwitchedToWorkspace).next();\n this.busMessageService.to(BusMessageChannels.userSwitchedToDigitalProperty).next();\n }),\n );\n\n this.workspaceChanged.emit();\n }\n\n public ngOnInit(): void {\n this._subscription.add(\n combineLatest([\n this.workspacesLoaded$,\n this.navService.getTopLevelMenuItems$([NavigationItem.workspace]),\n this.navService.activeMenuItemForWorkspaceSwitcher$(),\n this.userService.getFirstAvailableDigitalPropertyForWorkspaces(),\n ])\n .pipe(\n filter(\n ([workspacesLoaded, menuItems, activeMenuItem, workspacesMap]: [\n boolean,\n INavMenuItem[],\n INavMenuItem,\n Map,\n ]): boolean => workspacesLoaded,\n ),\n switchMap(\n ([_, menuItems, activeMenuItem, workspaceMap]: [\n boolean,\n INavMenuItem[],\n INavMenuItem,\n Map,\n ]): IWorkspacePermission[] => {\n this._workspacesMenuItem = menuItems?.[0];\n this._activeMenuItem = activeMenuItem;\n\n return this.workspaces.map((workspace: IWorkspaceClient): IWorkspacePermission => {\n const workspaceId: string = workspace[$workspace._id];\n const digitalPropertyId: string = workspaceMap.get(workspaceId)?.[$digitalProperty._id];\n return {\n activeMenuItem: this._activeMenuItem,\n workspacesMenuItem: this._workspacesMenuItem,\n workspaceId,\n digitalPropertyId,\n };\n });\n },\n ),\n switchMap((workspacePermission: IWorkspacePermission): Observable => {\n return this.navService\n .hasAccessToMenuItemInWorkspace$(\n workspacePermission.activeMenuItem,\n workspacePermission.workspaceId,\n workspacePermission.digitalPropertyId,\n )\n .pipe(\n map((hasAccess: boolean): IWorkspacePermission => {\n return {\n ...workspacePermission,\n hasAccess,\n };\n }),\n );\n }),\n )\n .subscribe({\n next: (workspacePermission: IWorkspacePermission): void => {\n this.workspaceLocations.set(\n workspacePermission.workspaceId,\n workspacePermission.hasAccess && SharedCommonUtility.notNullish(workspacePermission.activeMenuItem)\n ? workspacePermission.activeMenuItem.routerLink\n : workspacePermission.workspacesMenuItem.routerLink,\n );\n },\n }),\n );\n\n this.getSelectedWorkspaceId();\n this.getWorkSpaces();\n }\n}\n","import { NgModule, Type } from '@angular/core';\n\nimport { CompoundNavbarComponent } from './compound-navbar.component';\nimport { CompoundTopNavbarComponent } from './compound-top-navbar/compound-top-navbar.component';\nimport { TopNavNotificationsComponent } from './compound-top-navbar/top-navbar-notifications/top-nav-notifications.component';\nimport { CompoundThirdLevelNavbarComponent } from './compound-third-level-navbar/compound-third-level-navbar.component';\nimport { SharedModule } from '../../shared/shared.module';\nimport { CompoundNavbarLinkComponent } from './compound-navbar-link/compound-navbar-link.component';\nimport { TopNavbarWorkspacesDropdownComponent } from './compound-top-navbar/top-navbar-workspaces-dropdown/top-navbar-workspaces-dropdown.component';\nimport { TopNavbarProfileDropdownComponent } from './compound-top-navbar/top-navbar-profile-dropdown/top-navbar-profile-dropdown.component';\nimport { CompoundSecondLevelNavbarComponent } from './compound-second-level-navbar/compound-second-level-navbar.component';\nimport { TopNavbarLauncherDropdownComponent } from './compound-top-navbar/top-navbar-launcher-dropdown/top-navbar-launcher-dropdown.component';\nimport { MobileTopNavbarMenuModalComponent } from './compound-top-navbar/mobile-top-navbar-menu-modal/mobile-top-navbar-menu-modal.component';\nimport { MobileSecondNavbarMenuModalComponent } from './compound-second-level-navbar/mobile-second-navbar-menu-modal/mobile-second-navbar-menu-modal.component';\nimport { WebsitesAppsSelectComponent } from './websites-apps-select/websites-apps-select.component';\nimport { WorkspacesSelectComponent } from './compound-second-level-navbar/mobile-second-navbar-menu-modal/workspaces-select/workspaces-select.component';\nimport { CompoundTopNavbarUnauthenticatedComponent } from './compound-top-navbar/compound-top-navbar-unauthenticated.component';\n\nconst compoundNavbarComponents: Type[] = [\n CompoundNavbarComponent,\n CompoundTopNavbarComponent,\n CompoundTopNavbarUnauthenticatedComponent,\n CompoundThirdLevelNavbarComponent,\n CompoundNavbarLinkComponent,\n TopNavNotificationsComponent,\n TopNavbarWorkspacesDropdownComponent,\n TopNavbarProfileDropdownComponent,\n TopNavbarLauncherDropdownComponent,\n CompoundSecondLevelNavbarComponent,\n MobileTopNavbarMenuModalComponent,\n MobileSecondNavbarMenuModalComponent,\n WebsitesAppsSelectComponent,\n WorkspacesSelectComponent,\n];\n\n@NgModule({\n declarations: [...compoundNavbarComponents],\n exports: [...compoundNavbarComponents],\n imports: [SharedModule],\n})\nexport class CompoundNavbarModule {}\n","import { Injectable } from '@angular/core';\nimport { Router, Event, NavigationStart, NavigationExtras, Params } from '@angular/router';\nimport { filter, map, mergeMap, take, switchMap, catchError } from 'rxjs/operators';\nimport { from, Observable, of, Subscription } from 'rxjs';\n\nimport { UserService } from './user.service';\nimport { ErrorHandlerService } from './error-handler.service';\nimport { IUserServerResponse } from '../../../shared/interfaces/user.interface';\nimport { IDigitalPropertyListItem } from '../../../shared/interfaces/digital-property.interface';\nimport { $digitalProperty } from '../../../shared/constants/digital-properties';\nimport { $user } from '../../../shared/constants/user';\nimport { SharedCommonUtility } from '../../../shared/utils/common.utility';\nimport { LinkedPropertyUtility } from '../../../shared/utils/linked-property.utility';\nimport { Api } from '../../../shared/constants/api';\nimport { getQueryParams, mergeUrlParams } from '../utility/url.utility';\n\n@Injectable({ providedIn: 'root' })\nexport class LinkedPropertyDataService {\n constructor(\n private userService: UserService,\n private router: Router,\n private errorHandlerService: ErrorHandlerService,\n ) {}\n\n public preserveLinkedPropertyParam(): Subscription {\n return this.router.events\n .pipe(\n /*\n * Important: it must NOT be NavigationEnd, or you won't prevent navigation, and the browser's 'back' button won't work.\n */\n filter((e: Event) => e instanceof NavigationStart),\n filter((e: NavigationStart) => LinkedPropertyUtility.hasLinkedPropertyData(getQueryParams(e.url)) === false),\n filter((e: NavigationStart) => {\n const [urlWithoutParams]: string[] = e.url.split('?');\n const isRoot: boolean = urlWithoutParams === '/';\n const isLogin: boolean = urlWithoutParams.includes(Api.login);\n const isShortLink: boolean = urlWithoutParams.includes(Api.short_link);\n const isIssueIntegrationCallback: boolean = urlWithoutParams.includes(`${Api.issue_tracking}/${Api.callback}`);\n return !(isRoot || isShortLink || isIssueIntegrationCallback || isLogin);\n }),\n switchMap((e: NavigationStart) =>\n this.getDigitalPropertyFromParams(getQueryParams(e.url)).pipe(\n take(1),\n map((property: IDigitalPropertyListItem) => [e, property]),\n ),\n ),\n filter(\n ([, property]: [NavigationStart, IDigitalPropertyListItem]) => SharedCommonUtility.getTypeOf(property) === 'object',\n ),\n switchMap(([e, property]: [NavigationStart, IDigitalPropertyListItem]) => {\n const [urlWithoutParams, queryParams, fragment] = mergeUrlParams(\n e.url,\n LinkedPropertyUtility.getLinkedPropertyQueryParam(\n property[$digitalProperty._id],\n property[$digitalProperty.workspace]._id,\n ),\n );\n const navigationExtras: NavigationExtras = this.router.getCurrentNavigation()?.extras || {};\n\n return from(\n this.router\n .navigate([urlWithoutParams], {\n ...navigationExtras,\n queryParams: queryParams,\n fragment: fragment,\n })\n .catch(this.errorHandlerService.handleRoutingError.bind(this.errorHandlerService)),\n );\n }),\n catchError((err: any) => {\n console.error('[LinkedPropertyDataService.preserveLinkedPropertyParam]', err);\n return of(false);\n }),\n )\n .subscribe();\n }\n\n private getDigitalPropertyFromParams(queryParams: Params): Observable {\n if (!LinkedPropertyUtility.hasLinkedPropertyParam(queryParams)) {\n return this.userService.currentDigitalProperty$;\n }\n\n return this.userService.userDataChanged$.pipe(\n filter((user: IUserServerResponse) => SharedCommonUtility.notNullish(user)),\n map((user: IUserServerResponse): IDigitalPropertyListItem => {\n const { digitalPropertyId, workspaceId } = LinkedPropertyUtility.fromLinkedPropertyQueryParam(queryParams);\n\n const byWorkspaceId = (item: IDigitalPropertyListItem): boolean =>\n workspaceId ? item[$digitalProperty.workspace]._id === workspaceId : true;\n const byDigitalPropertyId = (item: IDigitalPropertyListItem): boolean =>\n digitalPropertyId ? item[$digitalProperty._id] === digitalPropertyId : true;\n\n const userDigitalProperties: IDigitalPropertyListItem[] = user[$user.digitalProperties].filter(byWorkspaceId);\n return userDigitalProperties.find(byDigitalPropertyId) || userDigitalProperties[0];\n }),\n mergeMap((userDigitalProperty: IDigitalPropertyListItem) =>\n SharedCommonUtility.notNullish(userDigitalProperty) ? of(userDigitalProperty) : this.userService.currentDigitalProperty$,\n ),\n );\n }\n}\n","import { BrowserModule, Title } from '@angular/platform-browser';\nimport { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AuthHttpInterceptor, AuthModule } from '@auth0/auth0-angular';\n\nimport { SharedModule } from './shared/shared.module';\nimport { AppInitialization } from './app.init';\nimport { AppRoutingModule } from './app.routing';\n\nimport { AppComponent } from './app.component';\nimport { SvgImagesComponent } from './shared/svg-images.component';\nimport { SvgIconsComponent } from './shared/svg-icons.component';\nimport { TokenInterceptor } from './services/interceptors/token.interceptor';\nimport { BusyIndicatorInterceptor } from './services/busy-indicator/busy-indicator.interceptor';\nimport { ExtraHeadersInterceptor } from './services/interceptors/extra-headers.interceptor';\n\nimport { AuthGuard } from './services/auth/guards/auth.guard';\nimport { PendingChangesGuard } from './services/guards/pending-changes.guard';\n\nimport { WindowRef } from './services/window.ref';\nimport { FeaturesService } from './services/features.service';\nimport { BusMessageService } from './services/bus-message.service';\nimport { AuthService } from './services/auth.service';\nimport { A11yService } from './services/a11y.service';\nimport { RestService } from './services/rest.service';\nimport { BrowserLocalStorageService } from './services/browser-local-storage.service';\nimport { BrowserSessionStorageService } from './services/browser-session-storage.service';\nimport { TranslateService } from './translate/translate.service';\nimport { UserService } from './services/user.service';\nimport { BusyIndicatorService } from './services/busy-indicator/busy-indicator.service';\nimport { NotificationService } from './services/notification.service';\nimport { CookieService } from './services/cookie.service';\nimport { FormService } from './services/form.service';\nimport { ErrorMessageService } from './services/error-message.service';\nimport { ErrorHandlerService } from './services/error-handler.service';\nimport { StatusService } from './services/status.service';\nimport { ScanService } from './services/scan.service';\nimport { ScanOptionsService } from './services/scan-options.service';\nimport { ScanReportService } from './services/scan-report.service';\nimport { ScanMobileService } from './services/scan-mobile.service';\nimport { ReportService } from './services/report.service';\nimport { MessageBusService } from './services/message-bus.service';\nimport { SupportService } from './services/support.service';\nimport { BrowserService } from './services/browser.service';\nimport { AdminRestAPI } from './services/rest/admin.api';\nimport { UserRestAPI } from './services/rest/user.api';\nimport { WorkspacesRestAPI } from './services/rest/workspaces.api';\nimport { TrackingConsoleService } from './services/tracking/tracking-console.service';\nimport { ClipboardService } from './services/clipboard.service';\nimport { ManualAuditService } from './services/manual-audit.service';\n\nimport { HeaderComponent } from './components/header/header.component';\nimport { FooterComponent } from './components/footer/footer.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { OverlayImageComponent } from './components/overlay-image/overlay-image.component';\n\nimport { HelpCenterComponent } from './pages/public/help-center/help-center.component';\nimport { NotFoundComponent } from './pages/public/not-found/not-found.component';\nimport { LoginComponent } from './pages/public/login/login.component';\nimport { LogoutComponent } from './pages/public/logout/logout.component';\nimport { PasswordResetComponent } from './pages/public/password-reset/password-reset.component';\nimport { ResendActivationLinkComponent } from './pages/public/activation-link/activation-link.component';\nimport { CookiePolicyComponent } from './pages/public/cookie-policy/cookie-policy.component';\nimport { VerifyEmailComponent } from './pages/public/verify-email/verify-email.component';\nimport { ColorContrastRuleSuggestionsComponent } from './components/color-contrast-rule-suggestions/color-contrast-rule-suggestions.component';\nimport { ForbiddenErrorComponent } from './pages/public/error/forbidden-error/forbidden-error.component';\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\nimport { BreadcrumbsService } from './components/breadcrumbs/breadcrumbs.service';\nimport { BreadcrumbsConfig } from './resolvers/breadcrumbs/breadcrumbs.config';\nimport { AuditReportWrapperComponent } from './components/audit-report-wrapper/audit-report-wrapper.component';\nimport { LazyLoadingStylesService } from './services/lazy-loading-styles.service';\nimport { SvgImageFiltersComponent } from './shared/svg-image-filters.component';\nimport { AttributionComponent } from './pages/public/attribution/attribution.component';\nimport { CommentService } from './services/comment.service';\nimport { DashboardService } from './pages/public/dashboard/dashboard.service';\nimport { ManualAuditIssueService } from './services/manual-audit-issue.service';\nimport { LoaderService } from './services/loader.service';\nimport { RequestLoaderInterceptor } from './services/interceptors/request-loader.interceptor';\nimport { RuleStatusChangeComponent } from './components/rule-status-change/rule-status-change.component';\nimport { ServerVersionChangeModalComponent } from './components/server-version-change/server-version-change-modal.component';\nimport { ServerVersionInterceptor } from './services/interceptors/server-version.interceptor';\nimport { ShortLinkComponent } from './pages/public/short-link/short-link.component';\nimport { AppConfigService } from './services/app-config.service';\nimport { PageReportWrapperComponent } from './components/page-report-wrapper/page-report-wrapper.component';\nimport { TenantlessGuard } from './services/auth/guards/tenantless.guard.service';\nimport { EapAuthTokenInterceptor } from './services/interceptors/eap-auth-token.interceptor';\nimport { TenantRedirectModalComponent } from './pages/public/login/tenant-redirect-modal/tenant-redirect-modal.component';\nimport { NonSsoTenantGuard } from './services/auth/guards/non-sso-tenant.guard';\nimport {\n RedirectSsoTenantToAuth0LogoutGuard,\n RedirectSsoTenantToDashboardGuard,\n RedirectSsoTenantToSignupGuard,\n} from './services/auth/guards/redirect-sso-tenant.guard';\nimport { AuthorizeOnlyStaffUsersSsoTenantGuard } from './services/auth/guards/authorize-only-staff-users-sso-tenant-guard';\nimport { NoAccessToTenantErrorComponent } from './pages/public/error/no-access-to-tenant-error/no-access-to-tenant-error.component';\nimport { NoWorkspaceInterceptor } from './services/interceptors/no-workspace.interceptor';\nimport { DesignReviewRuleSelectorModalComponent } from './components/design-review/design-review-rule-selector-modal/design-review-rule-selector-modal.component';\nimport { DeleteFindingConfirmationModalComponent } from './components/design-review/delete-finding-confirmation-modal/delete-finding-confirmation-modal.component';\nimport { MfaLoginComponent } from './pages/public/login/mfa-login/mfa-login.component';\nimport { HomePageRedirectGuard } from './services/auth/guards/home-page-redirect.guard';\nimport { TenantPackageInterceptor } from './services/interceptors/tenant-package.interceptor';\nimport { AppLayoutComponent } from './layouts/app-layout/app-layout.component';\nimport { FeatureFlagService } from './services/feature-flag/feature-flag.service';\nimport { FeatureFlagGuard } from './services/feature-flag/feature-flag.guard';\nimport { LoginLayoutComponent } from './layouts/login-layout/login-layout.component';\nimport { DigitalPropertyLimitGuard } from './services/auth/guards/digital-property-limit.guard';\nimport { CompoundNavbarModule } from './components/compound-navbar/compound-navbar.module';\nimport { AccountSettingsModule } from './pages/public/settings/account/settings/account-settings.module';\nimport { UserAclService } from './services/user-acl.service';\nimport { SuccessCriteriaService } from './services/success-criteria.service';\nimport { AiChatComponent } from './components/ai-chat/ai-chat.component';\nimport { SignupComponent } from './pages/public/signup/signup.component';\nimport { SignupPlatformUsageComponent } from './pages/public/signup/plaform-usage/signup-platform-usage.component';\nimport { SignupFormComponent } from './pages/public/signup/signup-form/signup-form.component';\nimport { SignupLayoutComponent } from './layouts/signup-layout/signup-layout.component';\nimport { SignupOverviewComponent } from './pages/public/signup/overview/signup-overview.component';\nimport { TenantLoginRedirectComponent } from './pages/public/login/tenant-login-redirect/tenant-login-redirect.component';\nimport { LoginCardComponent } from './pages/public/login/login-card/login-card.component';\nimport { SsoTenantGuard } from './services/auth/guards/sso-tenant.guard';\nimport { LinkedPropertyDataService } from './services/linked-property-data.service';\nimport { FeatureFlagInitializedComponent } from './components/feature-flag-initialized/feature-flag-initialized.component';\nimport { IndexedDBService } from './services/indexedDB.service';\n\n@NgModule({\n declarations: [\n AppComponent,\n SvgImagesComponent,\n SvgImageFiltersComponent,\n HeaderComponent,\n FooterComponent,\n NotFoundComponent,\n SignupComponent,\n LoginCardComponent,\n LoginComponent,\n TenantLoginRedirectComponent,\n LogoutComponent,\n TenantRedirectModalComponent,\n ShortLinkComponent,\n PasswordResetComponent,\n ResendActivationLinkComponent,\n CookiePolicyComponent,\n ToastComponent,\n FeatureFlagInitializedComponent,\n VerifyEmailComponent,\n HelpCenterComponent,\n OverlayImageComponent,\n ColorContrastRuleSuggestionsComponent,\n ForbiddenErrorComponent,\n BreadcrumbsComponent,\n AuditReportWrapperComponent,\n AttributionComponent,\n RuleStatusChangeComponent,\n ServerVersionChangeModalComponent,\n PageReportWrapperComponent,\n NoAccessToTenantErrorComponent,\n DesignReviewRuleSelectorModalComponent,\n DeleteFindingConfirmationModalComponent,\n MfaLoginComponent,\n AppLayoutComponent,\n LoginLayoutComponent,\n AiChatComponent,\n SignupFormComponent,\n SignupPlatformUsageComponent,\n SignupLayoutComponent,\n SignupOverviewComponent,\n ],\n exports: [SvgImagesComponent, SvgIconsComponent, SvgImageFiltersComponent],\n imports: [\n SharedModule,\n AppRoutingModule,\n BrowserModule,\n HttpClientModule,\n BrowserAnimationsModule,\n CompoundNavbarModule,\n AccountSettingsModule,\n // dummy config to make injector happy\n // external auth config will be updated in AppConfigService\n AuthModule.forRoot({\n domain: 'dummy',\n clientId: 'dummy',\n }),\n ],\n providers: [\n WindowRef,\n Title,\n AuthService,\n AuthGuard,\n HomePageRedirectGuard,\n A11yService,\n RestService,\n HttpClientModule,\n BrowserLocalStorageService,\n BrowserSessionStorageService,\n IndexedDBService,\n UserService,\n LinkedPropertyDataService,\n UserAclService,\n BusyIndicatorService,\n NotificationService,\n CookieService,\n FormService,\n ErrorMessageService,\n ManualAuditService,\n CommentService,\n DashboardService,\n StatusService,\n ScanService,\n ScanOptionsService,\n ScanReportService,\n ScanMobileService,\n ReportService,\n MessageBusService,\n SupportService,\n BrowserService,\n ClipboardService,\n AdminRestAPI,\n UserRestAPI,\n WorkspacesRestAPI,\n PendingChangesGuard,\n BreadcrumbsComponent,\n BreadcrumbsService,\n BreadcrumbsConfig,\n ManualAuditIssueService,\n LoaderService,\n TenantlessGuard,\n NonSsoTenantGuard,\n SsoTenantGuard,\n RedirectSsoTenantToDashboardGuard,\n RedirectSsoTenantToAuth0LogoutGuard,\n RedirectSsoTenantToSignupGuard,\n AuthorizeOnlyStaffUsersSsoTenantGuard,\n AuthHttpInterceptor,\n TokenInterceptor,\n AppConfigService,\n FeatureFlagService,\n FeatureFlagGuard,\n DigitalPropertyLimitGuard,\n SuccessCriteriaService,\n {\n provide: ErrorHandler,\n useClass: ErrorHandlerService,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: EapAuthTokenInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: BusyIndicatorInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ExtraHeadersInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: RequestLoaderInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: NoWorkspaceInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ServerVersionInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: TenantPackageInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: AppInitialization,\n deps: [\n UserService,\n TranslateService,\n BusMessageService,\n FeaturesService,\n AppConfigService,\n TrackingConsoleService,\n LazyLoadingStylesService,\n LinkedPropertyDataService,\n ],\n multi: true,\n },\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent {\n constructor() {}\n}\n","
    \n \n
    \n","import { Component, OnInit } from '@angular/core';\n\nimport { config } from '../../../environments/config.shared';\nimport version from '../../../version.json';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n public footerTitle: string;\n public appVersion: { publishDate: string; version: string } = version;\n\n constructor() {}\n\n public ngOnInit(): void {\n this.footerTitle = `${config.APP.COPYRIGHT_YEAR} - ${new Date().getFullYear()} ${config.company.name}`;\n }\n}\n","
    \n \n
    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-general-error',\n templateUrl: './general-error.component.html',\n styleUrls: ['./general-error.component.scss'],\n})\nexport class GeneralErrorComponent {}\n","
    \n
    \n
    \n \n
    \n
    \n
    \n

    We will be back soon!

    \n

    \n We are currently undergoing maintenance and apologize for any inconvenience. Thank you for your patience.\n

    \n \"Page\n
    \n
    \n
    \n \n
    \n
    \n
    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-no-access-to-tenant',\n templateUrl: './no-access-to-tenant.component.html',\n styleUrls: ['./no-access-to-tenant.component.scss'],\n})\nexport class NoAccessToTenantComponent {}\n","
    \n
    \n
    \n \n
    \n
    \n
    \n \"Page\n

    Restricted access

    \n

    \n The page you are trying to access is restricted. Please check that the URL is correct and try again, or contact your\n administrator.\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n","import { InjectionToken } from '@angular/core';\n\nexport const FOUND_ERROR_TOKEN = new InjectionToken('FOUND_ERROR');\n","import {\n AfterViewInit,\n Component,\n ComponentFactory,\n ComponentFactoryResolver,\n Inject,\n Input,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { CommonUtility } from '../utility/common.utility';\nimport { GeneralErrorComponent } from './general-error/general-error.component';\nimport { errorMessagesNames } from '../../../shared/constants/errors';\nimport { NoAccessToTenantComponent } from './no-access-to-tenant/no-access-to-tenant.component';\nimport { FOUND_ERROR_TOKEN } from './constants';\n\n// TODO: EAP-17799 backfill the tests\n@Component({\n selector: 'app-maintenance',\n templateUrl: './maintenance.component.html',\n})\nexport class MaintenanceComponent implements OnInit, AfterViewInit {\n static errorPages: Record> = Object.freeze({\n [errorMessagesNames.NoAccessToTenant]: NoAccessToTenantComponent,\n [errorMessagesNames.UserInvalid]: NoAccessToTenantComponent,\n [errorMessagesNames.ExternalAuthUserNotFound]: NoAccessToTenantComponent,\n [errorMessagesNames.TenantNotFound]: NoAccessToTenantComponent,\n });\n\n @Input()\n public error: any;\n @ViewChild('errorComponent', { read: ViewContainerRef }) container: ViewContainerRef;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n @Inject(FOUND_ERROR_TOKEN) private caughtError: any,\n ) {}\n\n private createComponent(): void {\n this.container.clear();\n const errorPage: Type = MaintenanceComponent.errorPages[this.caughtError?.error?.app?.name] ?? GeneralErrorComponent;\n\n const factory: ComponentFactory = this.componentFactoryResolver.resolveComponentFactory(errorPage);\n this.container.createComponent(factory);\n }\n\n private static hidePageLoader(): void {\n const pageLoaderElement: HTMLElement = document.querySelector('.page-loader');\n const pageLoaderStyles: HTMLElement = document.getElementById('loaderStyles');\n const loadingScript: HTMLElement = document.getElementById('loadingScript');\n\n if (pageLoaderElement && CommonUtility.isHostMethod(pageLoaderElement, 'remove')) {\n pageLoaderElement.remove();\n }\n\n if (pageLoaderStyles && CommonUtility.isHostMethod(pageLoaderStyles, 'remove')) {\n pageLoaderStyles.remove();\n }\n\n if (loadingScript && CommonUtility.isHostMethod(loadingScript, 'remove')) {\n loadingScript.remove();\n }\n }\n\n public ngOnInit(): void {\n MaintenanceComponent.hidePageLoader();\n }\n\n public ngAfterViewInit(): void {\n this.createComponent();\n }\n}\n","\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouterModule } from '@angular/router';\n\nimport { MaintenanceComponent } from './maintenance.component';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { GeneralErrorComponent } from './general-error/general-error.component';\nimport { NoAccessToTenantComponent } from './no-access-to-tenant/no-access-to-tenant.component';\nimport { FOUND_ERROR_TOKEN } from './constants';\n\n@NgModule({\n declarations: [MaintenanceComponent, HeaderComponent, FooterComponent, GeneralErrorComponent, NoAccessToTenantComponent],\n exports: [MaintenanceComponent],\n imports: [CommonModule, BrowserModule, RouterModule.forRoot([{ path: '', component: MaintenanceComponent }], {})],\n providers: [{ provide: FOUND_ERROR_TOKEN, useFactory: (): any => MaintenanceModule.caughtError }],\n bootstrap: [MaintenanceComponent],\n})\nexport class MaintenanceModule {\n static caughtError: any;\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';\nimport { MaintenanceModule } from './app/maintenance/maintenance.module';\n\nif (environment.production) {\n enableProdMode();\n}\n\nfunction success(): void {\n console.debug(environment.APP.NAME + ' bootstrap success');\n}\n\nfunction error(err: any): void {\n console.error(environment.APP.NAME + ' bootstrap error', err);\n MaintenanceModule.caughtError = err;\n platformBrowserDynamic()\n .bootstrapModule(MaintenanceModule)\n .then(() => console.debug(environment.APP.NAME + ' is under maintenance'));\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule).then(success).catch(error);\n","export enum $successCriteria {\n handle = 'handle',\n level = 'level',\n num = 'num',\n title = 'title',\n versions = 'versions',\n url = 'url',\n}\n","export enum $severity {\n critical = 'critical',\n high = 'high',\n custom1 = 'custom1',\n custom2 = 'custom2',\n low = 'low',\n info = 'info',\n}\n\nexport enum conformanceLevel {\n a = 'A',\n aa = 'AA',\n aaa = 'AAA',\n}\n\nexport enum $accessibilityAudit {\n category = 'category',\n description = 'description',\n error = 'error',\n errorFalsePositive = 'errorFalsePositive',\n isMarkedAsFalsePositive = 'isMarkedAsFalsePositive',\n isSelectedForScanning = 'isSelectedForScanning',\n num = 'num',\n passed = 'passed',\n resources = 'resources',\n rule = 'rule',\n score = 'score',\n severity = 'severity',\n standards = 'standards',\n title = 'title',\n url = 'url',\n warning = 'warning',\n}\n\n// For custom severities, do not rely on this variable for weights.\nexport const wcagSeverityWeight: Record<$severity, number> = {\n [$severity.critical]: 10,\n [$severity.high]: 6,\n [$severity.custom2]: 5,\n [$severity.custom1]: 5,\n [$severity.low]: 2,\n [$severity.info]: 0,\n};\n\nexport const severityToComparable: Record<$severity, string> = Object.freeze({\n [$severity.critical]: '600',\n [$severity.high]: '500',\n [$severity.custom2]: '400',\n [$severity.custom1]: '300',\n [$severity.low]: '200',\n [$severity.info]: '100',\n});\n\nexport const systemSeverities: readonly $severity[] = [$severity.critical, $severity.high, $severity.low];\nexport const customSeverities: readonly $severity[] = [$severity.custom1, $severity.custom2];\nexport const allSeverities: readonly $severity[] = [...systemSeverities, ...customSeverities];\n\nexport type CustomSeverityKeyType = $severity.custom1 | $severity.custom2;\n","export enum $analyticsResultItem {\n scanDate = 'scanDate',\n scanHealth = 'scanHealth',\n scanStatus = 'scanStatus',\n scanId = 'scanId',\n toolVersion = 'toolVersion',\n toolName = 'toolName',\n numOfIssues = 'numOfIssues',\n numOfPages = 'numOfPages',\n severityCount = 'severityCount',\n includeStandard = 'includeStandard',\n successCriteriaWithFindings = 'successCriteriaWithFindings',\n totalSuccessCriteria = 'totalSuccessCriteria',\n componentsWithFindings = 'componentsWithFindings',\n ruleStatusCount = 'ruleStatusCount',\n}\n\nexport enum $analyticsByRuleResultItem {\n ruleSummary = 'ruleSummary',\n ruleId = 'ruleId',\n componentsAffected = 'componentsAffected',\n pagesAffected = 'pagesAffected',\n numFindings = 'numFindings',\n changeInFindings = 'changeInFindings',\n severity = 'severity',\n successCriteriaIdentifier = 'successCriteriaIdentifier',\n title = 'title',\n}\n\nexport enum $analyticsByRuleResult {\n toolName = 'toolName',\n latestScanId = 'latestScanId',\n items = 'items',\n}\n\nexport enum $pageAffectedByRuleAnalytics {\n url = 'url',\n title = 'title',\n numFindings = 'numFindings',\n changeInFindings = 'changeInFindings',\n documentId = 'documentId',\n}\n","export enum Api {\n academy = 'academy',\n account = 'account',\n accounts = 'accounts',\n activation_link = 'activation-link',\n active = 'active',\n active_scans = 'active-scans',\n activity = 'activity',\n activityLogs = 'activityLogs',\n add = 'add',\n add_scan_points = 'add-scan-points',\n admin = 'admin',\n advanced_scan = 'advanced-scan',\n aggregated_report = 'aggregated-report',\n ai = 'ai',\n all = 'all',\n all_ids = 'all_ids',\n amp_api_key = 'amp-api-key',\n monitoring_analytics = 'monitoring-analytics',\n api = 'api',\n archive = 'archive',\n assign_users = 'assign_users',\n attachmentId = 'attachmentId',\n attachments = 'attachments',\n attribution = 'attribution',\n archivable = 'archivable',\n auditType = 'auditType',\n audit_rules = 'audit-rules',\n audits = 'audits',\n auth = 'auth',\n authenticated = 'authenticated',\n automation = 'automation',\n available = 'available',\n avatar = 'avatar',\n bulk = 'bulk',\n cancel = 'cancel',\n category = 'category',\n callback = 'callback',\n categories = 'categories',\n changePassword = 'change-password',\n changeEmails = 'change-emails',\n chat = 'chat',\n clientSearchTerm = 'clientSearchTerm',\n clients = 'clients',\n command = 'command',\n commentId = 'commentId',\n comments = 'comments',\n commonFindings = 'common-findings',\n company = 'company',\n component_report = 'component-report',\n config = 'config',\n configureEntities = 'configureEntities',\n configureFields = 'configFields',\n configureJson = 'configJson',\n console = 'console',\n consumer_key = 'consumer-key',\n cookie_policy = 'cookie-policy',\n connect_browser_extension = 'connect-browser-extension',\n count = 'count',\n countries = 'countries',\n create = 'create',\n createDesignRule = 'create-design-rule',\n createWorkspace = 'create-workspace',\n createNewPassword = 'createNewPassword',\n createToken = 'createToken',\n createOAuth2AuthorizationUrl = 'createOAuth2AuthorizationUrl',\n create_new_password = 'create-new-password',\n conformance = 'conformance',\n current = 'current',\n custom_audit_rules = 'custom-audit-rules',\n custom_severities = 'custom-severities',\n dashboard = 'dashboard',\n data = 'data',\n dataId = 'dataId',\n deactivate = 'deactivate',\n default = 'default',\n deletable = 'deletable',\n designReviewProjects = 'design-review-projects',\n designReviewProjectId = 'designReviewProjectId',\n designReviewPages = 'design-review-pages',\n designReviewPageId = 'designReviewPageId',\n designReviewFindings = 'design-review-findings',\n designReviewFindingId = 'designReviewFindingId',\n designReviewFindingKey = 'designReviewFindingKey',\n designReviewFindingCategory = 'designReviewFindingCategory',\n designReviewFindingCommentId = 'designReviewFindingCommentId',\n designReviewFindingType = 'designReviewFindingType',\n designReviewRules = 'design-review-rules',\n designReviewRuleId = 'designReviewRuleId',\n details = 'details',\n digitalPropertyId = 'digitalPropertyId',\n digital_properties = 'digital-properties',\n digital_property = 'digital-property',\n digital_property_type = 'digital-property-type',\n digitalproperty = 'digitalproperty',\n digital_property_limit_state = 'digital-property-limit-state',\n digital_property_automated_flow_limit = 'digital-property-automated-flow-limit',\n digitalPropertyMetrics = 'digital-property-metrics',\n dismiss = 'dismiss',\n documentId = 'documentId',\n documentation = 'documentation',\n documents = 'documents',\n domain = 'domain',\n download = 'download',\n downloadToken = 'downloadToken',\n edit = 'edit',\n editDesignRule = 'edit-design-rule',\n entities = 'entities',\n email = 'email',\n errors = 'errors',\n failedTasks = 'failed-tasks',\n evaluation_rules = 'evaluation-rules',\n evaluations = 'evaluations',\n event = 'event',\n existingKeyValues = 'existing-key-values',\n exists = 'exists',\n export = 'export',\n exclude_monitoring = 'exclude_monitoring',\n exclude_history = 'exclude_history',\n ext = 'ext',\n externalId = 'externalId',\n file = 'file',\n fileId = 'fileId',\n files = 'files',\n findings = 'findings',\n findingId = 'findingId',\n finishAuthorization = 'finishAuthorization',\n flawId = 'flawId',\n flaws = 'flaws',\n forbidden = '403',\n generate_api_key = 'generate-api-key',\n generate_encryption_key = 'generate-encryption-key',\n apiKeyName = 'apiKeyName',\n generate_browser_extension_key = 'generate-browser-extension-key',\n groupId = 'groupId',\n groups = 'groups',\n guidelines = 'guidelines',\n hasHistoryUpdates = 'has-history-updates',\n home = 'home',\n id = 'id',\n insights = 'insights',\n instance = 'instance',\n instanceId = 'instanceId',\n integrations = 'integrations',\n internal_users = 'internal-users',\n isDuplicated = 'is-duplicated',\n issueKey = 'issueKey',\n issueType = 'issueType',\n issueTypes = 'issueTypes',\n issueTypeId = 'issueTypeId',\n issue_tracking = 'issue-tracking',\n issues = 'issues',\n issueIntegration = 'issueIntegration',\n issueIntegrationConnectionId = 'issueIntegrationConnectionId',\n issueIntegrationStatuses = 'issue-integration-statuses',\n issue_integration_connection = 'issue-integration-connection',\n issue_integration_connection_config = 'issue-integration-connection-config',\n issue_integration_status_mapping = 'issue-integration-status-mapping',\n issue_integration_projects = 'issue-integration-projects',\n issueIntegrationProjectId = 'issueIntegrationProjectId',\n jobIndustries = 'job-industries',\n jobTitles = 'job-titles',\n keyId = 'keyId',\n keys = 'keys',\n latest_scan = 'latest-scan',\n latest_scans = 'latest-scans',\n list = 'list',\n libraries = 'libraries',\n libraryId = 'libraryId',\n library = 'library',\n locale_id = 'locale',\n locales = 'locales',\n login = 'login',\n loginOrganizationRedirection = 'login-organization-redirection',\n logout = 'logout',\n logs = 'logs',\n manage_roles = 'manage-roles',\n manage_users = 'manage-users',\n manual = 'manual',\n manualAuditIssue = 'manualAuditIssue',\n manualAuditIssueId = 'manualAuditIssueId',\n manualEvaluationId = 'manualEvaluationId',\n manual_audit = 'manual-audit',\n testGuides = 'test-guides',\n testGuideId = 'testGuideId',\n manual_audit_issues_by_severity = 'manual-audit-issues-by-severity',\n manual_audit_top_criteria = 'manual-audit-top-criteria',\n manual_evaluations = 'manual-evaluations',\n manual_requests = 'manual-requests',\n manual_request_id = 'manual_request_id',\n manual_results = 'manual-results',\n manual_upload_file = 'manual-upload-file',\n markAsViewed = 'markAsViewed',\n mark_rule_as_false_positive = 'mark-rule-as-false-positive',\n master_library = 'master-library',\n master_libraries = 'master-libraries',\n matchComponent = 'matchComponent',\n matchComponentId = 'matchComponentId',\n match_components = 'match-components',\n me = 'me',\n mobile_apps = 'mobile-apps',\n mobile_app_sessions = 'mobile-app-sessions',\n mobileAppsId = 'mobileAppsId',\n mobile_app_report = 'mobile-app-report',\n mobile_scans = 'mobile-scans',\n mobile_testing_emulator = 'mobile-testing-emulator',\n monitoring = 'monitoring',\n monitoringSettings = 'monitoring-settings',\n move = 'move',\n my = 'my',\n myTasks = 'my-tasks',\n names = 'names',\n next_scheduled_scan = 'next-scheduled-scan',\n not_found = '404',\n operating_systems = 'operating-systems',\n options = 'options',\n organization = 'organization',\n organizations = 'organizations',\n overviewData = 'overview-data',\n metrics = 'metrics',\n packageId = 'packageId',\n packageInstanceId = 'packageInstanceId',\n packages = 'packages',\n packageAddons = 'packageAddons',\n pageId = 'pageId',\n pages = 'pages',\n monitoring_pages = 'monitoring-pages',\n openapi = 'openapi',\n page_summary = 'page-summary',\n password_reset = 'password-reset',\n performance = 'performance',\n portfolio = 'portfolio',\n populateMonitoring = 'populateMonitoring',\n populateRemediationProgress = 'populateRemediationProgress',\n possible_target_statuses = 'possible_target_statuses',\n preferences = 'preferences',\n previous = 'previous',\n previous_tokens_info = 'previous-tokens-info',\n profile = 'profile',\n projectId = 'projectId',\n projects = 'projects',\n pull = 'pull',\n push = 'push',\n public = 'public',\n quick_monitoring = 'quick-monitoring',\n quick_scan = 'quick-scan',\n rating = 'rating',\n reauthorize_connection = 'reauthorize-connection',\n refreshAccessToken = 'refreshAccessToken',\n regenerate_auth_url = 'regenerate-auth-url',\n registered = 'registered',\n remaining = 'remaining',\n remediatedDocumentId = 'remediatedDocumentId',\n remove = 'remove',\n removeRemediation = 'removeRemediation',\n revokeRemediationRequest = 'revokeRemediationRequest',\n report = 'report',\n reports = 'reports',\n requestRemediation = 'requestRemediation',\n configurableFields = 'configurable-fields',\n requiredFields = 'required-fields',\n rerun = 'rerun',\n resendActivationLink = 'resend-activation-link',\n resendVisitorActivationLink = 'resend-visitor-activation-link',\n resend_invite = 'resend-invite',\n resetPassword = 'resetPassword',\n resourceId = 'resourceId',\n resources = 'resources',\n restore = 'restore',\n results = 'results',\n resume = 'resume',\n resync = 'resync',\n validate = 'validate',\n role = 'role',\n roles = 'roles',\n rule = 'rule',\n ruleHistory = 'rule-history',\n ruleHistorySearch = 'rule-history-search',\n ruleId = 'ruleId',\n rule_ids = 'rule-ids',\n rules = 'rules',\n run_automated_scan = 'run-automated-scan',\n startDocumentScan = 'startDocumentScan',\n downloadReport = 'download-report',\n downloadTestReport = 'download-test-report',\n run_scan = 'run-scan',\n scan = 'scan',\n scanId = 'scanId',\n secure_resources = 'secure-download',\n setRemediation = 'set-remediation',\n scanOptionId = 'scanOptionId',\n scanSummary = 'scanSummary',\n scanTagId = 'scanTagId',\n scan_document = 'scan-document',\n scan_id = 'scanId',\n scan_results = 'scan-results',\n scan_session = 'scanSession',\n scan_tags = 'scan-tags',\n scans = 'scans',\n page_scans = 'page-scans',\n scans_count = 'scans-count',\n scannableDocumentId = 'scannableDocumentId',\n scannableDocumentRules = 'scannableDocumentRules',\n scannableDocumentRuleId = 'scannableDocumentRuleName',\n scannableDocuments = 'scannableDocuments',\n scannableDocument = 'scannableDocument',\n scim = 'scim',\n scim_api_key = 'scim-api-key',\n scim_config = 'scim-config',\n supplementalScan = 'supplementalScan',\n remediated = 'remediated',\n scheduled = 'scheduled',\n screens = 'screens',\n screenshot = 'screenshot',\n screenshots = 'screenshots',\n scope = 'scope',\n search = 'search',\n severity = 'severity',\n select_language = 'select-language',\n send_email = 'send-email',\n server_api_performance = 'server-api-performance',\n session = 'session',\n sessions = 'sessions',\n sessionId = 'sessionId',\n settings = 'settings',\n severities = 'severities',\n shortLink = 'shortLink',\n shortLinks = 'short-links',\n short_link = 'short-link',\n signup = 'signup',\n single_report = 'single-report',\n ssoLink = 'sso-link',\n ssoConfig = 'sso-config',\n staffGroups = 'staff-groups',\n scan_point_summary = 'scan-point-summary',\n scan_point_report = 'scan-point-report',\n standards = 'standards',\n status = 'status',\n statuses = 'statuses',\n synchronizedObjects = 'synchronized-objects',\n stream = 'stream',\n success = 'success',\n support = 'support',\n supported_locales = 'supported-locales',\n swagger = 'swagger',\n summary = 'summary',\n summaryKey = 'summaryKey',\n sync = 'sync',\n tags = 'tags',\n taskId = 'taskId',\n tasks = 'tasks',\n salesforce = 'salesforce',\n tenants = 'tenants',\n tenantName = 'tenantName',\n tenantsMembership = 'tenants-membership',\n tenantId = 'tenantId',\n term = 'term',\n test_automation = 'test-automation',\n testAutomationSdks = 'sdks',\n testAutomationJavaSdk = 'java',\n testAutomationJavaMobileSdk = 'java-mobile',\n testAutomationCSharpSdk = 'csharp',\n testAutomationJavascriptSdk = 'javascript',\n testAutomationPythonSdk = 'python',\n testAutomationRubySdk = 'ruby',\n toggle_rule = 'toggle-rule',\n token = 'token',\n tool = 'tool',\n tools = 'tools',\n toolName = 'toolName',\n total = 'total',\n tracking = 'tracking',\n training = `training`,\n translations = 'translations',\n type = 'type',\n types = 'types',\n ui_tools = 'ui-tools',\n unassigned_members = 'unassigned_members',\n unassigned_users = 'unassigned_users',\n unsubscribe = 'unsubscribe',\n updateEmails = 'update-emails',\n upload = 'upload',\n uploadRemediation = 'upload-remediation',\n uploadRemediationResult = 'upload-remediation-result',\n url = 'url',\n urls = 'urls',\n Users = 'Users',\n user = 'user',\n userChangeHistory = 'userChangeHistory',\n userGroups = 'user-groups',\n userId = 'userId',\n userIds = 'userIds',\n user_data = 'user-data',\n user_flows = 'user-flows',\n user_roles = 'user-roles',\n guided_user_flows = 'guided-user-flows',\n automated_user_flows = 'automated-user-flows',\n user_flow_recordings = 'user-flow-recordings',\n user_flow_templates = 'user-flow-templates',\n userFlowTemplateId = 'userFlowTemplateId',\n userFlowTemplateName = 'userFlowTemplateName',\n userFlowId = 'userFlowId',\n user_id = 'user_id',\n users = 'users',\n userway = 'userway',\n userway_site_limit_state = 'userway_site_limit_state',\n userway_sso_link = 'userway-sso-link',\n globalUsers = 'global-users',\n verifyEmail = 'verifyEmail',\n verifyPreviousPassword = 'verify-previous-password',\n verifyPreviousPasswordVisitor = 'verify-previous-password-visitor',\n verifyResetPasswordToken = 'verifyResetPasswordToken',\n verifyToken = 'verify-token',\n verify_email = 'verify-email',\n v0 = 'v0',\n videoId = `videoId`,\n videos = 'videos',\n view = 'view',\n viewDesignRule = 'view-design-rule',\n view_scan_analytics = 'view-scan-analytics',\n webhooks = 'webhooks',\n workspace = 'workspace',\n workspaceId = 'workspaceId',\n workspaceName = 'workspaceName',\n workspaceUser = 'workspaceUser',\n workspaceUserId = 'workspaceUserId',\n workspaces = 'workspaces',\n designReviews = 'design-reviews',\n designEvaluations = 'design-evaluations',\n xpath = 'xpath',\n notifications = 'notifications',\n migrate = 'migrate',\n assign = 'assign',\n withdraw_assignee = 'withdraw-assignee',\n setup_connection = 'setup-connection',\n azure = 'azure',\n jira = 'jira',\n asana = 'asana',\n healthCheck = 'healthcheck',\n ping = 'ping',\n important = 'important',\n assignable = 'assignable',\n mfa = 'mfa',\n labels = 'labels',\n componentId = 'componentId',\n overview = 'overview',\n pdfPagesTestState = 'pdf-pages-test-state',\n security = 'security',\n newSecurity = 'new-security',\n userManagement = 'user-management',\n accessibilityPolicies = 'accessibility-policies',\n designReviewHighlights = 'design-review-highlights',\n activate = 'activate',\n designReviewHighlightId = 'designReviewHighlightId',\n components = 'components',\n pdf = 'pdf',\n pdfDiscovered = 'pdf-discovered',\n copy = 'copy',\n scannableDocumentPageId = 'scannableDocumentPageId',\n scannableDocumentPage = 'scannableDocumentPage',\n contentTags = 'content-tags',\n availableContentTags = 'avaliable-content-tags',\n availableSignupFields = 'available-signup-fields',\n data_snapshots = 'data-snapshots',\n finishOAuth2 = 'finishOAuth2',\n validateTasks = 'validate-tasks',\n websitesAndApps = 'websites-apps',\n environments = 'environments',\n jobs = 'jobs',\n continuum = 'continuum',\n continuumProjectId = 'continuumProjectId',\n incomingWebhooks = 'incoming-webhooks',\n snapshots = 'snapshots',\n taskProjectId = 'taskProjectId',\n cloudsmithToken = 'cloudsmith-token',\n trackedProjects = 'tracked-projects',\n requests = 'requests',\n recentWorkspaces = 'recent-workspaces',\n conformanceScoreReport = 'conformance-score-report',\n metadata = 'metadata',\n auditedDocuments = 'audited-documents',\n successCriteria = 'successCriteria',\n severityKey = 'severityKey',\n swapRanks = 'swap-ranks',\n deleteAndReassign = 'delete-and-reassign',\n fail = 'fail',\n scanningAgent = 'scanning-agent',\n}\n\nexport enum ApiQueryOption {\n audit = 'audit',\n audits = 'audits',\n auditType = 'auditType',\n auditTool = 'auditTool',\n avatarToken = 'avatarToken',\n category = 'category',\n clientSearchTerm = 'clientSearchTerm',\n componentId = 'componentId',\n confirmEmailToken = 'confirmEmailToken',\n createdAt = 'createdAt',\n direction = 'direction',\n downloadReport = 'downloadReport',\n downloadToken = 'downloadToken',\n designReviewFindingId = 'designReviewFindingId',\n email = 'email',\n errorXPath = 'errorXPath',\n excludeForPredefinedRoles = 'excludeForPredefinedRoles',\n externalId = 'externalId',\n includeStaffUsers = 'includeStaffUsers',\n filter = 'filter',\n filterLegacyEA = 'filterLegacyEA',\n filterByUserId = 'filterByUserId',\n finding = 'finding',\n flawId = 'flawId',\n format = 'format',\n frequency = 'frequency',\n fromDate = 'fromDate',\n jobStatus = 'jobStatus',\n id = 'id',\n identifier = 'identifier',\n includeDisabled = 'includeDisabled',\n includeStaffGroups = 'includeStaffGroups',\n skipOrganizationAdmin = 'skipOrganizationAdmin',\n includeMe = 'includeMe',\n issueIds = 'issueIds',\n issueType = 'issueType',\n lastUsedWorkspace = 'lastUsedWorkspace',\n languageForScanning = 'languageForScanning',\n level = 'level',\n limit = 'limit',\n pageSize = 'pageSize',\n linkedPropertyData = 'linkedPropertyData',\n myContacts = 'myContacts',\n name = 'name',\n resultsCompression = 'resultsCompression',\n pageScore = 'pageScore',\n pathRoot = 'pathRoot',\n queryString = 'queryString',\n resourceId = 'resourceId',\n ruleId = 'ruleId',\n ruleDescription = 'ruleDescription',\n salesforceId = 'salesforceId',\n scanUrl = 'scanUrl',\n scanId = 'scanId',\n scanFromDate = 'scanFromDate',\n scanningType = 'scanningType',\n scanToDate = 'scanToDate',\n scanPointId = 'scanPointId',\n skip = 'skip',\n page = 'page',\n sortByName = 'title',\n sortCreatedAt = 'createdAt',\n sortCreatedBy = 'createdBy',\n sortByDigitalProperty = 'digitalProperty',\n sortBy = 'sortBy',\n sortDirection = 'sortDirection',\n sortOrder = 'sortOrder',\n source = 'source',\n status = 'status',\n severity = 'severity',\n standards = 'standards',\n successCriteria = 'successCriteria',\n switchToWorkspace = 'switchToWorkspace',\n tenantlessOnly = 'tenantlessOnly',\n tool = 'tool',\n toolName = 'toolName',\n toolVersion = 'toolVersion',\n term = 'term',\n totalFinding = 'totalFinding',\n trendDataLength = 'trendDataLength',\n url = 'url',\n urls = 'urls',\n userIds = 'userIds',\n workspace = 'workspace',\n workspaceId = 'workspaceId',\n withSummary = 'with-summary',\n integrationType = 'integrationType',\n lastId = 'lastId',\n fieldName = 'fieldName',\n query = 'query',\n documentIds = 'documentIds',\n origin = 'origin',\n entityLevel = 'entityLevel',\n pages = 'pages',\n pageIds = 'pageIds',\n tenantId = 'tenantId',\n toolId = 'toolId',\n tags = 'tags',\n important = 'important',\n hasScope = 'hasScope',\n oauth2AuthorizationResult = 'oauth2AuthorizationResult',\n authorizationResult = 'authorizationResult',\n archive = 'archive',\n digitalPropertyId = 'digitalPropertyId',\n riskScoreLevel = 'riskScoreLevel',\n scheduledAt = 'scheduledAt',\n showSuccessAlert = 'showSuccessAlert',\n allFields = 'allFields',\n recordingId = 'recordingId',\n regenerate = 'regenerate',\n manualRequestResult = 'manualRequestResult',\n standard = 'standard',\n useScanningAgent = 'useScanningAgent',\n typeIds = 'typeIds',\n issueTrackingCallback = 'issueTrackingCallback',\n issueTrackingConnectionId = 'issueTrackingConnectionId',\n}\n\nexport enum ApiHeaderOption {\n skipLoader = 'skipLoader',\n}\n\nexport const ApiQueryOptionValue: Readonly<{ [key: string]: any }> = Object.freeze({\n true: true,\n false: false,\n});\n","import { SIZE_1_MB } from './uploads';\nimport { $ruleSummary } from './scan-summaries';\n\nexport enum $auditFinding {\n _id = '_id',\n externalId = 'externalId',\n actualResult = 'actualResult',\n attachment = 'attachment',\n auditData = 'auditData',\n /**\n * Used for storing component info in audit results.\n */\n componentData = 'componentData',\n documentId = 'documentId',\n discoveredBy = 'discoveredBy',\n element = 'element',\n elementReference = 'elementReference',\n elementReferenceHash = 'elementReferenceHash',\n elementReferenceType = 'elementReferenceType',\n isElementReferenceEdited = 'isElementReferenceEdited',\n expectedResult = 'expectedResult',\n falsePositiveData = 'falsePositiveData',\n isDisabled = 'isDisabled',\n issue = 'issue',\n ruleId = 'ruleId',\n rule = 'rule',\n skipReason = 'skipReason',\n toolId = 'toolId',\n createdAt = 'createdAt',\n updatedAt = 'updatedAt',\n // Manual Audit specific\n accessibilityImpact = 'accessibilityImpact',\n ATCombination = 'ATCombination',\n comments = 'comments',\n disabilityAffected = 'disabilityAffected',\n functionalImpact = 'functionalImpact',\n instances = 'instances',\n issueId = 'issueId',\n issueFrequency = 'issueFrequency',\n QAComment = 'QAComment',\n QARecommendation = 'QARecommendation',\n QAScreencast = 'QAScreencast',\n QAStatus = 'QAStatus',\n userImpact = 'userImpact',\n recommendation = 'recommendation',\n schemaVersion = 'schemaVersion',\n screen = 'screen',\n screenshot = 'screenshot',\n severity = 'severity',\n stepsToReproduce = 'stepsToReproduce',\n summary = 'summary',\n componentId = 'componentId',\n viewport = 'viewport',\n\n // virtuals\n task = 'task',\n component = 'component',\n document = 'document',\n}\n\nexport enum $componentData {\n componentName = 'componentName',\n componentId = 'componentId',\n componentXpath = 'componentXpath',\n elementXpath = 'elementXpath',\n}\n\nexport enum $auditFindingViewport {\n width = 'width',\n height = 'height',\n}\n\nexport enum FindingIssue {\n error = 'error',\n skipped = 'skipped',\n passed = 'passed',\n}\n\nexport enum AuditFindingReferenceType {\n xpath = 'xpath',\n issueId = 'issueId',\n selector = 'selector',\n}\n\nexport enum AuditFindingIssueFrequency {\n individual = 'individual',\n global = 'global',\n}\n\nexport enum AuditFindingIssueEffort {\n low = 'low',\n high = 'high',\n}\n\nexport enum AuditFindingFunctionalImpact {\n low = 'low',\n high = 'high',\n}\n\nexport enum AuditFindingDisabilityAffected {\n cognitive = 'cognitive',\n physical = 'physical',\n visual = 'visual',\n auditory = 'auditory',\n neurological = 'neurological',\n speech = 'speech',\n}\n\nexport enum AuditFindingAccessibilityImpact {\n low = 'low',\n high = 'high',\n critical = 'critical',\n}\n\nexport enum AuditExcelFindingAccessibilityImpact {\n Low = 'Low',\n High = 'High',\n Critical = 'Critical',\n}\n\nexport enum AuditFindingTaskLinkStatus {\n linked = 'linked',\n unlinked = 'unlinked',\n}\n\nexport enum AuditFindingViewport {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\n\nexport const AuditFindingViewportBreakpoints: Readonly>> = {\n [AuditFindingViewport.medium]: 320,\n [AuditFindingViewport.large]: 1280,\n};\n\nexport enum AuditFindingQAStatus {\n toReview = 'toReview',\n open = 'open',\n fixed = 'fixed',\n partiallyFixed = 'partiallyFixed',\n notFixed = 'notFixed',\n notReproducible = 'notReproducible',\n cannotBeFixed = 'cannotBeFixed',\n dismissed = 'dismissed',\n validationRequested = 'validationRequested',\n\n /**\n * @deprecated\n */\n new = 'new',\n}\n\nexport const AuditFindingQAStatusReportLabel: Readonly> = Object.freeze({\n [AuditFindingQAStatus.toReview]: 'To review',\n [AuditFindingQAStatus.open]: 'Open',\n [AuditFindingQAStatus.fixed]: 'Fixed',\n [AuditFindingQAStatus.partiallyFixed]: 'Partially fixed',\n [AuditFindingQAStatus.notFixed]: 'Not fixed',\n [AuditFindingQAStatus.notReproducible]: 'Not reproducible',\n [AuditFindingQAStatus.cannotBeFixed]: 'Cannot be fixed',\n [AuditFindingQAStatus.dismissed]: 'Dismissed',\n [AuditFindingQAStatus.validationRequested]: 'Validation requested',\n\n /**\n * @deprecated\n */\n [AuditFindingQAStatus.new]: 'New',\n});\n\nexport const AuditFindingQAStatusDisplayLabel: Readonly> = Object.freeze({\n [AuditFindingQAStatus.toReview]: 'manual_audit_issue_qa_status_display_label_to_review',\n [AuditFindingQAStatus.open]: 'manual_audit_issue_qa_status_display_label_open',\n [AuditFindingQAStatus.fixed]: 'manual_audit_issue_qa_status_display_label_fixed',\n [AuditFindingQAStatus.partiallyFixed]: 'manual_audit_issue_qa_status_display_label_partially_fixed',\n [AuditFindingQAStatus.notFixed]: 'manual_audit_issue_qa_status_display_label_not_fixed',\n [AuditFindingQAStatus.notReproducible]: 'manual_audit_issue_qa_status_display_label_not_reproducible',\n [AuditFindingQAStatus.cannotBeFixed]: 'manual_audit_issue_qa_status_display_label_cannot_be_fixed',\n [AuditFindingQAStatus.dismissed]: 'dismissed',\n [AuditFindingQAStatus.validationRequested]: 'validation_requested',\n\n /**\n * @deprecated\n */\n [AuditFindingQAStatus.new]: 'manual_audit_issue_qa_status_display_label_new',\n});\n\n// Note: this is ordered in how product wants to see the list of statuses presented.\nexport const ActiveAuditFindingQAStatus: ReadonlyArray = Object.freeze([\n AuditFindingQAStatus.toReview,\n AuditFindingQAStatus.open,\n AuditFindingQAStatus.fixed,\n AuditFindingQAStatus.partiallyFixed,\n AuditFindingQAStatus.notFixed,\n AuditFindingQAStatus.notReproducible,\n AuditFindingQAStatus.cannotBeFixed,\n AuditFindingQAStatus.dismissed,\n AuditFindingQAStatus.validationRequested,\n]);\n\nexport const AuditFindingQAStatusResolved: ReadonlyArray = Object.freeze([\n AuditFindingQAStatus.fixed,\n AuditFindingQAStatus.notReproducible,\n AuditFindingQAStatus.dismissed,\n]);\n\nexport const AuditFindingQAStatusResolvedSet: Set = new Set(\n AuditFindingQAStatusResolved,\n);\n\nexport const AuditFindingQAStatusUnresolved: ReadonlyArray = Object.freeze([\n AuditFindingQAStatus.toReview,\n AuditFindingQAStatus.open,\n AuditFindingQAStatus.partiallyFixed,\n AuditFindingQAStatus.notFixed,\n AuditFindingQAStatus.cannotBeFixed,\n AuditFindingQAStatus.validationRequested,\n]);\n\nexport const AuditFindingQAStatusUnresolvedSet: Set = new Set(\n AuditFindingQAStatusUnresolved,\n);\n\nexport const AuditFindingQAStatusRemaining: ReadonlyArray = Object.freeze([\n AuditFindingQAStatus.open,\n AuditFindingQAStatus.partiallyFixed,\n AuditFindingQAStatus.notFixed,\n]);\n\nexport const AuditFindingQAStatusTotal: ReadonlyArray = Object.freeze([\n AuditFindingQAStatus.fixed,\n ...AuditFindingQAStatusRemaining,\n]);\n\nexport enum ManualAuditQuery {\n // used for selecting\n fields = 'fields',\n formatColumns = 'formatColumns',\n pageId = 'pageId',\n xpath = 'xpath',\n codeSnippet = 'codeSnippet',\n component = 'component',\n viewport = 'viewport',\n skipScanStandards = 'skipScanStandards',\n}\n\nexport const MAX_ATTACHMENTS: number = 20;\nexport const MAX_ATTACHMENTS_SIZE: number = 100 * SIZE_1_MB;\nexport const CHAR_LIMIT_ALT_TEXT: number = 350;\nexport const VIEWPORT_WIDTH_MAX_VALUE: number = 7680;\nexport const VIEWPORT_WIDTH_MIN_VALUE: number = 320;\nexport const VIEWPORT_HEIGHT_MAX_VALUE: number = 4320;\nexport const VIEWPORT_HEIGHT_MIN_VALUE: number = 256;\n\n/**\n * Maps how findings with each status should be counted in the scan and page summaries.\n */\nexport const FindingStatusToSummaryField: Readonly> = Object.freeze({\n [AuditFindingQAStatus.dismissed]: $ruleSummary.ignored,\n [AuditFindingQAStatus.fixed]: $ruleSummary.passed,\n [AuditFindingQAStatus.toReview]: $ruleSummary.errors,\n [AuditFindingQAStatus.open]: $ruleSummary.errors,\n [AuditFindingQAStatus.partiallyFixed]: $ruleSummary.errors,\n [AuditFindingQAStatus.notFixed]: $ruleSummary.errors,\n [AuditFindingQAStatus.notReproducible]: $ruleSummary.errors,\n [AuditFindingQAStatus.cannotBeFixed]: $ruleSummary.errors,\n [AuditFindingQAStatus.validationRequested]: $ruleSummary.errors,\n [AuditFindingQAStatus.new]: $ruleSummary.errors,\n});\n","export enum $auditIssuesView {\n ruleDescription = 'ruleDescription',\n successCriteriaConformanceLevel = 'successCriteriaConformanceLevel',\n successCriteriaIdentifier = 'successCriteriaIdentifier',\n severity = 'severity',\n severityNumber = 'severityNumber',\n failures = 'failures',\n passes = 'passes',\n ignores = 'ignores',\n triggered = 'triggered',\n link = 'link',\n queryParams = 'queryParams',\n scoreImpact = 'scoreImpact',\n findings = 'findings',\n testType = 'testType',\n}\n\nexport enum auditIssuesViewStatus {\n failed = 'failed',\n review = 'review',\n passed = 'passed',\n}\n","export enum $auditRule {\n _id = '_id',\n atCombination = 'atCombination',\n actualResult = 'actualResult',\n applicableElementsSelectors = 'applicableElementsSelectors',\n categories = 'categories',\n complexity = 'complexity',\n description = 'description',\n disabilitiesAffected = 'disabilitiesAffected',\n enabled = 'enabled',\n functionalImpact = 'functionalImpact',\n history = 'history',\n href = 'href',\n isAvailableForScanning = 'isAvailableForScanning',\n isDisabled = 'isDisabled',\n isSelectedForScanning = 'isSelectedForScanning',\n reasonForImportance = 'reasonForImportance',\n recommendation = 'recommendation',\n results = 'results',\n ruleId = 'ruleId',\n severity = 'severity',\n severityNumber = 'severityNumber',\n standards = 'standards',\n stepsToReproduce = 'stepsToReproduce',\n successCriterias = 'successCriterias',\n techniques = 'techniques',\n testType = 'testType',\n title = 'title',\n tool = 'tool',\n toolVersions = 'toolVersions',\n whatToDo = 'whatToDo',\n weight = 'weight',\n wcagCriteria = 'wcagCriteria',\n wcagConformanceLevel = 'wcagConformanceLevel',\n ruleLibrary = 'ruleLibrary',\n category = 'category',\n mediaType = 'mediaType',\n bestPracticeId = 'bestPracticeId',\n testId = 'testId',\n testName = 'testName',\n testManualSteps = 'testManualSteps',\n mapsTo = 'mapsTo',\n referencedRule = 'referencedRule',\n userImpact = 'userImpact',\n compliantCodeExample = 'compliantCodeExample',\n nonCompliantCodeExample = 'nonCompliantCodeExample',\n effort = 'effort',\n tenantId = 'tenantId',\n createdAt = 'createdAt',\n}\n\nexport enum $auditRuleStandard {\n wcag_20 = 'wcag_20',\n wcag_21 = 'wcag_21',\n wcag_22 = 'wcag_22',\n best_practice = 'best_practice',\n}\n\nexport enum $auditRuleSearch {\n levels = 'levels',\n severities = 'severities',\n standards = 'standards',\n tools = 'tools',\n ruleIdSubstring = 'ruleIdSubstring',\n ruleIdOrKeyword = 'ruleIdOrKeyword',\n ruleLibrary = 'ruleLibrary',\n category = 'category',\n}\n\nexport const ManualCustomRulePrefix: string = 'man-cust-';\n\nexport enum AuditRuleAction {\n Create = 'Create',\n Update = 'Update',\n}\n","import { AuditStandards } from './audit-standard';\n\nexport enum $auditStandardSuccessCriteria {\n _id = '_id',\n identifier = 'identifier',\n auditStandards = 'auditStandards',\n level = 'level',\n}\n\nexport enum SuccessCriteriaIdentifier {\n EABP1 = 'EABP1', // aslint\n DEQUEBP4 = 'DEQUEBP4', // axe\n WAVEBP1 = 'WAVEBP1', // wave\n NOT_APPLICABLE = 'Not applicable',\n}\n\nexport const SuccessCriteriaToStandardMapping: Record = {\n [SuccessCriteriaIdentifier.EABP1]: AuditStandards.essential,\n [SuccessCriteriaIdentifier.DEQUEBP4]: AuditStandards.axe,\n [SuccessCriteriaIdentifier.WAVEBP1]: AuditStandards.wave,\n [SuccessCriteriaIdentifier.NOT_APPLICABLE]: AuditStandards.notApplicable,\n};\n","export enum $auditStandard {\n _id = '_id',\n identifier = 'identifier',\n standard = 'standard',\n version = 'version',\n level = 'level',\n isDisabled = 'isDisabled',\n}\n\nexport enum $scanAuditStandard {\n id = 'id',\n description = 'description',\n url = 'url',\n}\n\nexport enum AuditStandards {\n wcag = 'WCAG',\n wcagCr = 'WCAG CR',\n axe = 'Axe',\n essential = 'eSSENTIAL',\n wave = 'Wave',\n en301549 = 'EN 301 549',\n section508 = 'Section 508',\n css = 'CSS3',\n html = 'HTML5',\n notApplicable = 'Not applicable',\n}\n\nexport enum AuditDbStandard {\n wcag = 'WCAG',\n wcagCr = 'WCAG CR',\n axe = 'DEQUEBP',\n essential = 'EABP',\n wave = 'WAVEBP',\n en301549 = 'EN 301 549',\n section508 = 'Section 508',\n notApplicable = 'NOT_APPLICABLE',\n}\n\nexport const AuditDbStandardValues: Readonly = Object.freeze([\n AuditDbStandard.wcag,\n AuditDbStandard.axe,\n AuditDbStandard.essential,\n AuditDbStandard.wave,\n AuditDbStandard.notApplicable,\n]);\n\nexport const mapAuditDbStandardToAuditStandard: Record = {\n [AuditDbStandard.wcag]: AuditStandards.wcag,\n [AuditDbStandard.wcagCr]: AuditStandards.wcagCr,\n [AuditDbStandard.axe]: AuditStandards.axe,\n [AuditDbStandard.essential]: AuditStandards.essential,\n [AuditDbStandard.wave]: AuditStandards.wave,\n [AuditDbStandard.en301549]: AuditStandards.en301549,\n [AuditDbStandard.section508]: AuditStandards.section508,\n [AuditDbStandard.notApplicable]: AuditStandards.notApplicable,\n};\n","import { AuditTypes } from './audit-types';\nimport { scanningJobType } from './scanning';\n\nexport enum $auditTool {\n _id = '_id',\n name = 'name',\n version = 'version',\n}\n\nexport enum AuditToolNames {\n aslint = 'aslint',\n axe = 'axe',\n ibm = 'ibm',\n manual = 'manual',\n screenshot = 'screenshot',\n wave = 'wave',\n access_engine = 'access-engine',\n}\n\nexport enum AccessibilityAuditToolNames {\n aslint = 'aslint',\n axe = 'axe',\n ibm = 'ibm',\n wave = 'wave',\n access_engine = 'access-engine',\n}\n/**\n * This regex matches the access engine shadow dom separator pattern used in UEls.\n * It only matches single pipes \"|\", it will not match double pipes \"||\".\n */\nexport const ACCESS_ENGINE_SHADOW_DOM_SEPARATOR_MATCHER: RegExp = new RegExp(/(? = Object.freeze(\n Object.values(AccessibilityAuditToolNames).filter((tool: AccessibilityAuditToolNames) => {\n return !deprecatedToolNames.includes(tool);\n }),\n);\n\nexport const defaultToolName: AccessibilityAuditToolNames = AccessibilityAuditToolNames.access_engine;\n\nexport enum AuditToolCommonNames {\n aslint = 'aslint',\n axe_core = 'axe-core',\n equal_access = 'equal-access',\n wave = 'WAVE',\n access_engine = 'access-engine',\n}\n\nexport const mapAuditToolCommonNamesToDisplayName: Record = Object.freeze({\n [AuditToolCommonNames.access_engine]: 'scan_results_tool_option_access-engine',\n [AuditToolCommonNames.aslint]: 'scan_results_tool_option_aslint',\n [AuditToolCommonNames.axe_core]: 'scan_results_tool_option_axe',\n [AuditToolCommonNames.equal_access]: 'scan_results_tool_option_ibm',\n [AuditToolCommonNames.wave]: 'scan_results_tool_option_wave',\n});\n\nexport const ToolCommonNameToAuditToolName: Readonly> = Object.freeze({\n [AuditToolCommonNames.access_engine]: AccessibilityAuditToolNames.access_engine,\n [AuditToolCommonNames.aslint]: AccessibilityAuditToolNames.aslint,\n [AuditToolCommonNames.axe_core]: AccessibilityAuditToolNames.axe,\n [AuditToolCommonNames.equal_access]: AccessibilityAuditToolNames.ibm,\n [AuditToolCommonNames.wave]: AccessibilityAuditToolNames.wave,\n});\n\nexport const AuditToolCommonNamesToAuditToolNames: Readonly> = Object.freeze({\n [AuditToolCommonNames.access_engine]: AuditToolNames.access_engine,\n [AuditToolCommonNames.aslint]: AuditToolNames.aslint,\n [AuditToolCommonNames.axe_core]: AuditToolNames.axe,\n [AuditToolCommonNames.equal_access]: AuditToolNames.ibm,\n [AuditToolCommonNames.wave]: AuditToolNames.wave,\n});\n\nexport const AuditToolCommonNamesToAccessibilityAuditToolNames: Readonly<\n Record\n> = Object.freeze({\n [AuditToolCommonNames.access_engine]: AccessibilityAuditToolNames.access_engine,\n [AuditToolCommonNames.aslint]: AccessibilityAuditToolNames.aslint,\n [AuditToolCommonNames.axe_core]: AccessibilityAuditToolNames.axe,\n [AuditToolCommonNames.equal_access]: AccessibilityAuditToolNames.ibm,\n [AuditToolCommonNames.wave]: AccessibilityAuditToolNames.wave,\n});\n\nexport const AuditToolCommonNamesToAuditTypes: Readonly> = {\n [AuditToolCommonNames.access_engine]: AuditTypes.accessibility_access,\n [AuditToolCommonNames.aslint]: AuditTypes.accessibility,\n [AuditToolCommonNames.axe_core]: AuditTypes.accessibility_axe,\n [AuditToolCommonNames.equal_access]: AuditTypes.accessibility_ibm,\n [AuditToolCommonNames.wave]: AuditTypes.accessibility_wave,\n};\n\nexport const AccessibilityAuditToolNamesToAuditTypes: Readonly> = Object.freeze({\n [AccessibilityAuditToolNames.access_engine]: AuditTypes.accessibility_access,\n [AccessibilityAuditToolNames.aslint]: AuditTypes.accessibility,\n [AccessibilityAuditToolNames.ibm]: AuditTypes.accessibility_ibm,\n [AccessibilityAuditToolNames.axe]: AuditTypes.accessibility_axe,\n [AccessibilityAuditToolNames.wave]: AuditTypes.accessibility_wave,\n});\n\nexport const scanningJobTypeToAuditToolCommonName: { [key in keyof typeof scanningJobType]: string } = Object.freeze({\n [scanningJobType.accessibility_access]: AuditToolCommonNames.access_engine,\n [scanningJobType.accessibility]: AuditToolCommonNames.aslint,\n [scanningJobType.accessibility_axe]: AuditToolCommonNames.axe_core,\n [scanningJobType.accessibility_ibm]: AuditToolCommonNames.equal_access,\n [scanningJobType.accessibility_wave]: AuditToolCommonNames.wave,\n [scanningJobType.screenshot]: 'Screenshot',\n});\n\nexport const scanningJobTypeToAuditToolName: Readonly> = Object.freeze({\n [scanningJobType.accessibility_access]: AuditToolNames.access_engine,\n [scanningJobType.accessibility]: AuditToolNames.aslint,\n [scanningJobType.accessibility_axe]: AuditToolNames.axe,\n [scanningJobType.accessibility_ibm]: AuditToolNames.ibm,\n [scanningJobType.accessibility_wave]: AuditToolNames.wave,\n [scanningJobType.screenshot]: AuditToolNames.screenshot,\n});\n\nexport const AuditToolNameToAuditType: Readonly>> = Object.freeze({\n [AuditToolNames.access_engine]: AuditTypes.accessibility_access,\n [AuditToolNames.aslint]: AuditTypes.accessibility,\n [AuditToolNames.ibm]: AuditTypes.accessibility_ibm,\n [AuditToolNames.axe]: AuditTypes.accessibility_axe,\n [AuditToolNames.wave]: AuditTypes.accessibility_wave,\n [AuditToolNames.screenshot]: AuditTypes.screenshots,\n});\n\nexport const AccessibilityAuditToolNameAuditToolName: Readonly> =\n Object.freeze({\n [AccessibilityAuditToolNames.access_engine]: AuditToolNames.access_engine,\n [AccessibilityAuditToolNames.aslint]: AuditToolNames.aslint,\n [AccessibilityAuditToolNames.ibm]: AuditToolNames.ibm,\n [AccessibilityAuditToolNames.axe]: AuditToolNames.axe,\n [AccessibilityAuditToolNames.wave]: AuditToolNames.wave,\n });\n\nexport const AuditTypeToAuditToolName: Readonly>> = Object.freeze({\n [AuditTypes.accessibility]: AuditToolNames.aslint,\n [AuditTypes.accessibility_access]: AuditToolNames.access_engine,\n [AuditTypes.accessibility_ibm]: AuditToolNames.ibm,\n [AuditTypes.accessibility_axe]: AuditToolNames.axe,\n [AuditTypes.accessibility_wave]: AuditToolNames.wave,\n [AuditTypes.screenshots]: AuditToolNames.screenshot,\n});\n\nexport const AuditTypeToAccessibilityAuditToolName: Readonly>> =\n Object.freeze({\n [AuditTypes.accessibility]: AccessibilityAuditToolNames.aslint,\n [AuditTypes.accessibility_access]: AccessibilityAuditToolNames.access_engine,\n [AuditTypes.accessibility_ibm]: AccessibilityAuditToolNames.ibm,\n [AuditTypes.accessibility_axe]: AccessibilityAuditToolNames.axe,\n [AuditTypes.accessibility_wave]: AccessibilityAuditToolNames.wave,\n });\n\nexport const AccessibilityAuditToolNameToAuditType: Readonly>> =\n Object.freeze({\n [AccessibilityAuditToolNames.access_engine]: AuditTypes.accessibility_access,\n [AccessibilityAuditToolNames.aslint]: AuditTypes.accessibility,\n [AccessibilityAuditToolNames.ibm]: AuditTypes.accessibility_ibm,\n [AccessibilityAuditToolNames.axe]: AuditTypes.accessibility_axe,\n [AccessibilityAuditToolNames.wave]: AuditTypes.accessibility_wave,\n });\n\nexport const AuditToolNameToToolCommonName: Readonly> = Object.freeze({\n [AccessibilityAuditToolNames.aslint]: AuditToolCommonNames.aslint,\n [AccessibilityAuditToolNames.axe]: AuditToolCommonNames.axe_core,\n [AccessibilityAuditToolNames.ibm]: AuditToolCommonNames.equal_access,\n [AccessibilityAuditToolNames.wave]: AuditToolCommonNames.wave,\n [AccessibilityAuditToolNames.access_engine]: AuditToolCommonNames.access_engine,\n});\n","import { scanningJobType } from './scanning';\n\nexport enum AuditTypes {\n accessibility = 'accessibility',\n accessibility_axe = 'accessibility_axe',\n accessibility_ibm = 'accessibility_ibm',\n accessibility_wave = 'accessibility_wave',\n accessibility_access = 'accessibility_access',\n accessibility_manual = 'accessibility_manual',\n screenshots = 'screenshots',\n}\ntype AutomatedAuditTypes = Exclude;\n\nexport const AuditTypeToScanningJobType: Readonly> = {\n [AuditTypes.accessibility]: scanningJobType.accessibility,\n [AuditTypes.accessibility_access]: scanningJobType.accessibility_access,\n [AuditTypes.accessibility_axe]: scanningJobType.accessibility_axe,\n [AuditTypes.accessibility_ibm]: scanningJobType.accessibility_ibm,\n [AuditTypes.accessibility_wave]: scanningJobType.accessibility_wave,\n [AuditTypes.screenshots]: scanningJobType.screenshot,\n};\n\nconst typesReducer: (\n prev: Record,\n [audit, job]: [AuditTypes, scanningJobType],\n) => Record = (\n prev: Record,\n [audit, job]: [AuditTypes, scanningJobType],\n) => {\n prev[job] = audit;\n return prev;\n};\n\nexport const ScanningJobTypeToAuditType: Readonly> = Object.entries(\n AuditTypeToScanningJobType,\n).reduce(typesReducer, {} as Record);\n\nexport const AuditTypeNames: { [key in keyof typeof AuditTypes]: string } = Object.freeze({\n [AuditTypes.accessibility]: 'Accessibility',\n [AuditTypes.accessibility_access]: 'Access Engine',\n [AuditTypes.accessibility_axe]: 'aXe Accessibility',\n [AuditTypes.accessibility_ibm]: 'IBM Accessibility',\n [AuditTypes.accessibility_wave]: 'Wave Accessibility',\n [AuditTypes.accessibility_manual]: 'Manual Accessibility',\n [AuditTypes.screenshots]: 'Screenshots',\n});\n\nexport const WcagAuditTypes: Readonly = Object.freeze([\n AuditTypes.accessibility_access,\n AuditTypes.accessibility_axe,\n AuditTypes.accessibility_ibm,\n AuditTypes.accessibility_wave,\n]);\n","export enum $auditedDocument {\n _id = '_id',\n reference = 'reference',\n referenceHash = 'referenceHash',\n scanId = 'scanId',\n size = 'size',\n type = 'type',\n title = 'title',\n version = 'version',\n screenshot = 'screenshot',\n pageId = 'pageId',\n scanPoint = 'scanPoint',\n createdAt = 'createdAt',\n}\n\nexport enum AuditDocumentQuery {\n url = 'url',\n pageId = 'pageId',\n}\n","export enum $automatedUserFlow {\n _id = '_id',\n name = 'name',\n lowercaseName = 'lowercaseName',\n digitalPropertyId = 'digitalPropertyId',\n actions = 'actions',\n lastScanStatus = 'lastScanStatus',\n lastScanDate = 'lastScanDate',\n lastScanScore = 'lastScanScore',\n createdAt = 'createdAt',\n updatedAt = 'updatedAt',\n flowType = 'flowType',\n}\n\nexport enum $userFlowAction {\n _id = '_id',\n type = 'type',\n value = 'value',\n password = 'password',\n scanPointId = 'scanPointId',\n scanPoint = 'scanPoint',\n cssSelector = 'cssSelector',\n}\n\nexport enum $userFlowActionError {\n userFlowAction = 'userFlowAction',\n error = 'error',\n}\n\nexport enum UserFlowActionType {\n OPEN = 'OPEN',\n CLICK = 'CLICK',\n TYPE = 'TYPE',\n WAIT_FOR_ELEMENT = 'WAIT_FOR_ELEMENT',\n SCAN_POINT = 'SCAN_POINT',\n PASSWORD = 'PASSWORD',\n DROPDOWN = 'DROPDOWN', // native and